From: Yangtao Li <tiny.windzz@gmail.com>
To: myungjoo.ham@samsung.com, kyungmin.park@samsung.com,
cw00.choi@samsung.com, krzk@kernel.org, shawnguo@kernel.org,
s.hauer@pengutronix.de, kernel@pengutronix.de,
festevam@gmail.com, linux-imx@nxp.com, digetx@gmail.com,
thierry.reding@gmail.com, jonathanh@nvidia.com, yuq825@gmail.com,
airlied@linux.ie, daniel@ffwll.ch, robdclark@gmail.com,
sean@poorly.run, robh@kernel.org, tomeu.vizoso@collabora.com,
steven.price@arm.com, alyssa.rosenzweig@collabora.com,
stanimir.varbanov@linaro.org, agross@kernel.org,
bjorn.andersson@linaro.org, mchehab@kernel.org,
lukasz.luba@arm.com, adrian.hunter@intel.com,
ulf.hansson@linaro.org, vireshk@kernel.org, nm@ti.com,
sboyd@kernel.org, broonie@kernel.org, gregkh@linuxfoundation.org,
jirislaby@kernel.org, rjw@rjwysocki.net, jcrouse@codeaurora.org,
hoegsberg@google.com, eric@anholt.net, tzimmermann@suse.de,
marijn.suijten@somainline.org, gustavoars@kernel.org,
emil.velikov@collabora.com, jonathan@marek.ca,
akhilpo@codeaurora.org, smasetty@codeaurora.org,
airlied@redhat.com, masneyb@onstation.org,
kalyan_t@codeaurora.org, tanmay@codeaurora.org,
tiny.windzz@gmail.com, ddavenport@chromium.org,
jsanka@codeaurora.org, rnayak@codeaurora.org,
tongtiangen@huawei.com, miaoqinglang@huawei.com,
khsieh@codeaurora.org, abhinavk@codeaurora.org,
chandanu@codeaurora.org, groeck@chromium.org,
varar@codeaurora.org, mka@chromium.org, harigovi@codeaurora.org,
rikard.falkeborn@gmail.com, natechancellor@gmail.com,
georgi.djakov@linaro.org, akashast@codeaurora.org,
parashar@codeaurora.org, dianders@chromium.org
Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-samsung-soc@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-tegra@vger.kernel.org, dri-devel@lists.freedesktop.org,
lima@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
freedreno@lists.freedesktop.org, linux-media@vger.kernel.org,
linux-mmc@vger.kernel.org, linux-spi@vger.kernel.org,
linux-serial@vger.kernel.org
Subject: [PATCH 16/31] drm/msm: convert to use devm_pm_opp_* API and remove dp_ctrl_put
Date: Fri, 1 Jan 2021 16:54:52 +0000 [thread overview]
Message-ID: <20210101165507.19486-17-tiny.windzz@gmail.com> (raw)
In-Reply-To: <20210101165507.19486-1-tiny.windzz@gmail.com>
1. Use devm_pm_opp_* to simplif code and avoid mem leak.
2. Remove opp_table from dpu_kms, dp_ctrl_private and msm_dsi_host,
since it does not need a global scope.
3. Remove dp_ctrl_put.
Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
---
drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 2 +-
drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 2 +-
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 23 ++++++++------------
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 2 --
drivers/gpu/drm/msm/dp/dp_ctrl.c | 29 ++++++-------------------
drivers/gpu/drm/msm/dp/dp_ctrl.h | 1 -
drivers/gpu/drm/msm/dp/dp_display.c | 5 +----
drivers/gpu/drm/msm/dsi/dsi_host.c | 15 +++++--------
9 files changed, 26 insertions(+), 55 deletions(-)
diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
index a5af223eaf50..47e51c632209 100644
--- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
@@ -1560,7 +1560,7 @@ static void check_speed_bin(struct device *dev)
nvmem_cell_put(cell);
}
- dev_pm_opp_set_supported_hw(dev, &val, 1);
+ devm_pm_opp_set_supported_hw(dev, &val, 1);
}
struct msm_gpu *a5xx_gpu_init(struct drm_device *dev)
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
index e6703ae98760..bd159e6fac5a 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
@@ -1321,7 +1321,7 @@ static int a6xx_gmu_pwrlevels_probe(struct a6xx_gmu *gmu)
* The GMU handles its own frequency switching so build a list of
* available frequencies to send during initialization
*/
- ret = dev_pm_opp_of_add_table(gmu->dev);
+ ret = devm_pm_opp_of_add_table(gmu->dev);
if (ret) {
DRM_DEV_ERROR(gmu->dev, "Unable to set the OPP table for the GMU\n");
return ret;
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index 6cf9975e951e..e6c446c436e3 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -845,7 +845,7 @@ static void adreno_get_pwrlevels(struct device *dev,
if (!of_find_property(dev->of_node, "operating-points-v2", NULL))
ret = adreno_get_legacy_pwrlevels(dev);
else {
- ret = dev_pm_opp_of_add_table(dev);
+ ret = devm_pm_opp_of_add_table(dev);
if (ret)
DRM_DEV_ERROR(dev, "Unable to set the OPP table\n");
}
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 6f19dfcb4965..cb7e4fddf268 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -1082,19 +1082,20 @@ static int dpu_bind(struct device *dev, struct device *master, void *data)
struct msm_drm_private *priv = ddev->dev_private;
struct dpu_kms *dpu_kms;
struct dss_module_power *mp;
+ struct opp_table *opp_table;
int ret = 0;
dpu_kms = devm_kzalloc(&pdev->dev, sizeof(*dpu_kms), GFP_KERNEL);
if (!dpu_kms)
return -ENOMEM;
- dpu_kms->opp_table = dev_pm_opp_set_clkname(dev, "core");
- if (IS_ERR(dpu_kms->opp_table))
- return PTR_ERR(dpu_kms->opp_table);
+ opp_table = devm_pm_opp_set_clkname(dev, "core");
+ if (IS_ERR(opp_table))
+ return PTR_ERR(opp_table);
/* OPP table is optional */
- ret = dev_pm_opp_of_add_table(dev);
+ ret = devm_pm_opp_of_add_table(dev);
if (ret) {
- dev_pm_opp_put_clkname(dpu_kms->opp_table);
+ devm_pm_opp_put_clkname(dev, opp_table);
if (ret != -ENODEV) {
dev_err(dev, "invalid OPP table in device tree\n");
return ret;
@@ -1105,7 +1106,7 @@ static int dpu_bind(struct device *dev, struct device *master, void *data)
ret = msm_dss_parse_clock(pdev, mp);
if (ret) {
DPU_ERROR("failed to parse clocks, ret=%d\n", ret);
- goto err;
+ return ret;
}
platform_set_drvdata(pdev, dpu_kms);
@@ -1113,7 +1114,7 @@ static int dpu_bind(struct device *dev, struct device *master, void *data)
ret = msm_kms_init(&dpu_kms->base, &kms_funcs);
if (ret) {
DPU_ERROR("failed to init kms, ret=%d\n", ret);
- goto err;
+ return ret;
}
dpu_kms->dev = ddev;
dpu_kms->pdev = pdev;
@@ -1122,10 +1123,7 @@ static int dpu_bind(struct device *dev, struct device *master, void *data)
dpu_kms->rpm_enabled = true;
priv->kms = &dpu_kms->base;
- return ret;
-err:
- dev_pm_opp_of_remove_table(dev);
- dev_pm_opp_put_clkname(dpu_kms->opp_table);
+
return ret;
}
@@ -1141,9 +1139,6 @@ static void dpu_unbind(struct device *dev, struct device *master, void *data)
if (dpu_kms->rpm_enabled)
pm_runtime_disable(&pdev->dev);
-
- dev_pm_opp_of_remove_table(dev);
- dev_pm_opp_put_clkname(dpu_kms->opp_table);
}
static const struct component_ops dpu_ops = {
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
index d6717d6672f7..1483995a94d9 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
@@ -130,8 +130,6 @@ struct dpu_kms {
struct platform_device *pdev;
bool rpm_enabled;
- struct opp_table *opp_table;
-
struct dss_module_power mp;
/* reference count bandwidth requests, so we know when we can
diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_ctrl.c
index e3462f5d96d7..fdb696ec9d9a 100644
--- a/drivers/gpu/drm/msm/dp/dp_ctrl.c
+++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c
@@ -77,8 +77,6 @@ struct dp_ctrl_private {
struct dp_parser *parser;
struct dp_catalog *catalog;
- struct opp_table *opp_table;
-
struct completion idle_comp;
struct completion video_comp;
};
@@ -1873,6 +1871,7 @@ struct dp_ctrl *dp_ctrl_get(struct device *dev, struct dp_link *link,
struct dp_parser *parser)
{
struct dp_ctrl_private *ctrl;
+ struct opp_table *opp_table;
int ret;
if (!dev || !panel || !aux ||
@@ -1887,19 +1886,18 @@ struct dp_ctrl *dp_ctrl_get(struct device *dev, struct dp_link *link,
return ERR_PTR(-ENOMEM);
}
- ctrl->opp_table = dev_pm_opp_set_clkname(dev, "ctrl_link");
- if (IS_ERR(ctrl->opp_table)) {
+ opp_table = devm_pm_opp_set_clkname(dev, "ctrl_link");
+ if (IS_ERR(opp_table)) {
dev_err(dev, "invalid DP OPP table in device tree\n");
- /* caller do PTR_ERR(ctrl->opp_table) */
- return (struct dp_ctrl *)ctrl->opp_table;
+ /* caller do PTR_ERR(opp_table) */
+ return (struct dp_ctrl *)opp_table;
}
/* OPP table is optional */
- ret = dev_pm_opp_of_add_table(dev);
+ ret = devm_pm_opp_of_add_table(dev);
if (ret) {
dev_err(dev, "failed to add DP OPP table\n");
- dev_pm_opp_put_clkname(ctrl->opp_table);
- ctrl->opp_table = NULL;
+ devm_pm_opp_put_clkname(dev, opp_table);
}
init_completion(&ctrl->idle_comp);
@@ -1916,16 +1914,3 @@ struct dp_ctrl *dp_ctrl_get(struct device *dev, struct dp_link *link,
return &ctrl->dp_ctrl;
}
-
-void dp_ctrl_put(struct dp_ctrl *dp_ctrl)
-{
- struct dp_ctrl_private *ctrl;
-
- ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl);
-
- if (ctrl->opp_table) {
- dev_pm_opp_of_remove_table(ctrl->dev);
- dev_pm_opp_put_clkname(ctrl->opp_table);
- ctrl->opp_table = NULL;
- }
-}
diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.h b/drivers/gpu/drm/msm/dp/dp_ctrl.h
index f60ba93c8678..dcd6bde2b23d 100644
--- a/drivers/gpu/drm/msm/dp/dp_ctrl.h
+++ b/drivers/gpu/drm/msm/dp/dp_ctrl.h
@@ -31,6 +31,5 @@ struct dp_ctrl *dp_ctrl_get(struct device *dev, struct dp_link *link,
struct dp_panel *panel, struct drm_dp_aux *aux,
struct dp_power *power, struct dp_catalog *catalog,
struct dp_parser *parser);
-void dp_ctrl_put(struct dp_ctrl *dp_ctrl);
#endif /* _DP_CTRL_H_ */
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
index 6e971d552911..44c1572e7005 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -706,7 +706,6 @@ static int dp_irq_hpd_handle(struct dp_display_private *dp, u32 data)
static void dp_display_deinit_sub_modules(struct dp_display_private *dp)
{
dp_debug_put(dp->debug);
- dp_ctrl_put(dp->ctrl);
dp_panel_put(dp->panel);
dp_aux_put(dp->aux);
dp_audio_put(dp->audio);
@@ -800,13 +799,11 @@ static int dp_init_sub_modules(struct dp_display_private *dp)
rc = PTR_ERR(dp->audio);
pr_err("failed to initialize audio, rc = %d\n", rc);
dp->audio = NULL;
- goto error_audio;
+ goto error_ctrl;
}
return rc;
-error_audio:
- dp_ctrl_put(dp->ctrl);
error_ctrl:
dp_panel_put(dp->panel);
error_link:
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
index a282307f2799..30c89dd448b9 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -113,8 +113,6 @@ struct msm_dsi_host {
struct clk *pixel_clk_src;
struct clk *byte_intf_clk;
- struct opp_table *opp_table;
-
u32 byte_clk_rate;
u32 pixel_clk_rate;
u32 esc_clk_rate;
@@ -1822,6 +1820,7 @@ int msm_dsi_host_init(struct msm_dsi *msm_dsi)
{
struct msm_dsi_host *msm_host = NULL;
struct platform_device *pdev = msm_dsi->pdev;
+ struct opp_table *opp_table;
int ret;
msm_host = devm_kzalloc(&pdev->dev, sizeof(*msm_host), GFP_KERNEL);
@@ -1886,13 +1885,13 @@ int msm_dsi_host_init(struct msm_dsi *msm_dsi)
goto fail;
}
- msm_host->opp_table = dev_pm_opp_set_clkname(&pdev->dev, "byte");
- if (IS_ERR(msm_host->opp_table))
- return PTR_ERR(msm_host->opp_table);
+ opp_table = devm_pm_opp_set_clkname(&pdev->dev, "byte");
+ if (IS_ERR(opp_table))
+ return PTR_ERR(opp_table);
/* OPP table is optional */
- ret = dev_pm_opp_of_add_table(&pdev->dev);
+ ret = devm_pm_opp_of_add_table(&pdev->dev);
if (ret) {
- dev_pm_opp_put_clkname(msm_host->opp_table);
+ devm_pm_opp_put_clkname(&pdev->dev, opp_table);
if (ret != -ENODEV) {
dev_err(&pdev->dev, "invalid OPP table in device tree\n");
return ret;
@@ -1934,8 +1933,6 @@ void msm_dsi_host_destroy(struct mipi_dsi_host *host)
mutex_destroy(&msm_host->cmd_mutex);
mutex_destroy(&msm_host->dev_mutex);
- dev_pm_opp_of_remove_table(&msm_host->pdev->dev);
- dev_pm_opp_put_clkname(msm_host->opp_table);
pm_runtime_disable(&msm_host->pdev->dev);
}
--
2.25.1
next prev parent reply other threads:[~2021-01-01 16:59 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-01 16:54 [PATCH 00/31] Introduce devm_pm_opp_* API Yangtao Li
2021-01-01 16:54 ` [PATCH 01/31] opp: Add devres wrapper for dev_pm_opp_set_clkname and dev_pm_opp_put_clkname Yangtao Li
2021-01-04 7:30 ` Viresh Kumar
2021-01-01 16:54 ` [PATCH 02/31] opp: Add devres wrapper for dev_pm_opp_set_regulators and dev_pm_opp_put_regulators Yangtao Li
2021-01-20 15:52 ` Dmitry Osipenko
2021-01-01 16:54 ` [PATCH 03/31] opp: Add devres wrapper for dev_pm_opp_set_supported_hw Yangtao Li
2021-01-20 15:53 ` Dmitry Osipenko
2021-01-01 16:54 ` [PATCH 04/31] opp: Add devres wrapper for dev_pm_opp_of_add_table Yangtao Li
2021-01-20 15:54 ` Dmitry Osipenko
2021-01-01 16:54 ` [PATCH 05/31] opp: Add devres wrapper for dev_pm_opp_register_notifier Yangtao Li
2021-01-04 7:15 ` Viresh Kumar
2021-01-01 16:54 ` [PATCH 06/31] serial: qcom_geni_serial: fix potential mem leak in qcom_geni_serial_probe() Yangtao Li
2021-01-04 7:02 ` Viresh Kumar
2021-01-01 16:54 ` [PATCH 07/31] serial: qcom_geni_serial: convert to use devm_pm_opp_* API Yangtao Li
2021-01-04 7:19 ` Viresh Kumar
2021-01-04 7:27 ` Viresh Kumar
2021-01-01 16:54 ` [PATCH 08/31] spi: spi-qcom-qspi: fix potential mem leak in spi_geni_probe() Yangtao Li
2021-01-04 13:58 ` Mark Brown
2021-01-01 16:54 ` [PATCH 09/31] " Yangtao Li
2021-01-04 14:02 ` Mark Brown
2021-01-01 16:54 ` [PATCH 10/31] qcom-geni-se: remove opp_table Yangtao Li
2021-01-01 16:54 ` [PATCH 11/31] mmc: sdhci-msm: fix potential mem leak in sdhci_msm_probe() Yangtao Li
2021-01-01 16:54 ` [PATCH 12/31] mmc: sdhci-msm: convert to use devm_pm_opp_* API Yangtao Li
2021-01-01 16:54 ` [PATCH 13/31] spi: spi-qcom-qspi: fix potential mem leak in qcom_qspi_probe() Yangtao Li
2021-01-04 14:02 ` Mark Brown
2021-01-01 16:54 ` [PATCH 14/31] spi: spi-qcom-qspi: convert to use devm_pm_opp_* API Yangtao Li
2021-01-04 14:05 ` Mark Brown
2021-01-01 16:54 ` [PATCH 15/31] drm/msm: fix potential mem leak Yangtao Li
2021-01-01 16:54 ` Yangtao Li [this message]
2021-01-01 16:54 ` [PATCH 17/31] drm/lima: convert to use devm_pm_opp_* API Yangtao Li
2021-01-01 16:54 ` [PATCH 18/31] drm/lima: remove unneeded devm_devfreq_remove_device() Yangtao Li
2021-01-04 7:32 ` Viresh Kumar
2021-01-01 16:54 ` [PATCH 19/31] drm/panfrost: convert to use devm_pm_opp_* API Yangtao Li
2021-01-05 16:33 ` Steven Price
2021-01-01 16:54 ` [PATCH 20/31] media: venus: fix error check in core_get_v4() Yangtao Li
2021-01-01 16:54 ` [PATCH 21/31] media: venus: convert to use devm_pm_opp_* API Yangtao Li
2021-01-01 16:54 ` [PATCH 22/31] memory: samsung: exynos5422-dmc: fix return error in exynos5_init_freq_table Yangtao Li
2021-01-04 18:03 ` Krzysztof Kozlowski
2021-01-01 16:54 ` [PATCH 23/31] memory: samsung: exynos5422-dmc: convert to use devm_pm_opp_* API Yangtao Li
2021-01-04 18:04 ` Krzysztof Kozlowski
2021-01-01 16:55 ` [PATCH 24/31] memory: tegra20: " Yangtao Li
2021-01-04 18:05 ` Krzysztof Kozlowski
2021-01-20 16:00 ` Dmitry Osipenko
2021-01-03 12:52 ` [PATCH 00/31] Introduce " Dmitry Osipenko
2021-01-03 14:30 ` Frank Lee
2021-01-03 14:54 ` Dmitry Osipenko
2021-01-04 7:29 ` Viresh Kumar
2021-01-04 7:33 ` Viresh Kumar
2021-01-20 16:01 ` Dmitry Osipenko
2021-03-02 13:40 ` Dmitry Osipenko
2021-03-03 4:01 ` Viresh Kumar
2021-03-03 8:31 ` Dmitry Osipenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210101165507.19486-17-tiny.windzz@gmail.com \
--to=tiny.windzz@gmail.com \
--cc=abhinavk@codeaurora.org \
--cc=adrian.hunter@intel.com \
--cc=agross@kernel.org \
--cc=airlied@linux.ie \
--cc=airlied@redhat.com \
--cc=akashast@codeaurora.org \
--cc=akhilpo@codeaurora.org \
--cc=alyssa.rosenzweig@collabora.com \
--cc=bjorn.andersson@linaro.org \
--cc=broonie@kernel.org \
--cc=chandanu@codeaurora.org \
--cc=cw00.choi@samsung.com \
--cc=daniel@ffwll.ch \
--cc=ddavenport@chromium.org \
--cc=dianders@chromium.org \
--cc=digetx@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=emil.velikov@collabora.com \
--cc=eric@anholt.net \
--cc=festevam@gmail.com \
--cc=freedreno@lists.freedesktop.org \
--cc=georgi.djakov@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=groeck@chromium.org \
--cc=gustavoars@kernel.org \
--cc=harigovi@codeaurora.org \
--cc=hoegsberg@google.com \
--cc=jcrouse@codeaurora.org \
--cc=jirislaby@kernel.org \
--cc=jonathan@marek.ca \
--cc=jonathanh@nvidia.com \
--cc=jsanka@codeaurora.org \
--cc=kalyan_t@codeaurora.org \
--cc=kernel@pengutronix.de \
--cc=khsieh@codeaurora.org \
--cc=krzk@kernel.org \
--cc=kyungmin.park@samsung.com \
--cc=lima@lists.freedesktop.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=lukasz.luba@arm.com \
--cc=marijn.suijten@somainline.org \
--cc=masneyb@onstation.org \
--cc=mchehab@kernel.org \
--cc=miaoqinglang@huawei.com \
--cc=mka@chromium.org \
--cc=myungjoo.ham@samsung.com \
--cc=natechancellor@gmail.com \
--cc=nm@ti.com \
--cc=parashar@codeaurora.org \
--cc=rikard.falkeborn@gmail.com \
--cc=rjw@rjwysocki.net \
--cc=rnayak@codeaurora.org \
--cc=robdclark@gmail.com \
--cc=robh@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=sboyd@kernel.org \
--cc=sean@poorly.run \
--cc=shawnguo@kernel.org \
--cc=smasetty@codeaurora.org \
--cc=stanimir.varbanov@linaro.org \
--cc=steven.price@arm.com \
--cc=tanmay@codeaurora.org \
--cc=thierry.reding@gmail.com \
--cc=tomeu.vizoso@collabora.com \
--cc=tongtiangen@huawei.com \
--cc=tzimmermann@suse.de \
--cc=ulf.hansson@linaro.org \
--cc=varar@codeaurora.org \
--cc=vireshk@kernel.org \
--cc=yuq825@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).