diff mbox series

[1/3] drm/msm/dsi: Allow to specify dsi config as pdata

Message ID 1644346272-3403-1-git-send-email-loic.poulain@linaro.org (mailing list archive)
State Superseded
Headers show
Series [1/3] drm/msm/dsi: Allow to specify dsi config as pdata | expand

Commit Message

Loic Poulain Feb. 8, 2022, 6:51 p.m. UTC
Config autodetect based on DSI controller version is quite limited
since several qcom SoCs can integrate a DSI controller with the same
version, but with different config (io_offset, supplies, etc).

This change allows to specify dsi config via device data pointer.
config autodetect is still used in case data pointer is NULL.

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
---
 drivers/gpu/drm/msm/dsi/dsi.c      | 2 +-
 drivers/gpu/drm/msm/dsi/dsi_host.c | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

Comments

Dmitry Baryshkov Feb. 8, 2022, 6:59 p.m. UTC | #1
On 08/02/2022 21:51, Loic Poulain wrote:
> Config autodetect based on DSI controller version is quite limited
> since several qcom SoCs can integrate a DSI controller with the same
> version, but with different config (io_offset, supplies, etc).
> 
> This change allows to specify dsi config via device data pointer.
> config autodetect is still used in case data pointer is NULL.
> 
> Signed-off-by: Loic Poulain <loic.poulain@linaro.org>

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>

> ---
>   drivers/gpu/drm/msm/dsi/dsi.c      | 2 +-
>   drivers/gpu/drm/msm/dsi/dsi_host.c | 4 ++++
>   2 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c
> index 0525488..06a9008 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi.c
> @@ -170,7 +170,7 @@ static int dsi_dev_remove(struct platform_device *pdev)
>   }
>   
>   static const struct of_device_id dt_match[] = {
> -	{ .compatible = "qcom,mdss-dsi-ctrl" },
> +	{ .compatible = "qcom,mdss-dsi-ctrl", .data = NULL /* autodetect cfg */ },
>   	{}
>   };
>   
> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
> index 6b3ced4..c540acc 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
> @@ -212,6 +212,10 @@ static const struct msm_dsi_cfg_handler *dsi_get_config(
>   	int ret;
>   	u32 major = 0, minor = 0;
>   
> +	cfg_hnd = device_get_match_data(dev);
> +	if (cfg_hnd)
> +		return cfg_hnd;
> +
>   	ahb_clk = msm_clk_get(msm_host->pdev, "iface");
>   	if (IS_ERR(ahb_clk)) {
>   		pr_err("%s: cannot get interface clock\n", __func__);
diff mbox series

Patch

diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c
index 0525488..06a9008 100644
--- a/drivers/gpu/drm/msm/dsi/dsi.c
+++ b/drivers/gpu/drm/msm/dsi/dsi.c
@@ -170,7 +170,7 @@  static int dsi_dev_remove(struct platform_device *pdev)
 }
 
 static const struct of_device_id dt_match[] = {
-	{ .compatible = "qcom,mdss-dsi-ctrl" },
+	{ .compatible = "qcom,mdss-dsi-ctrl", .data = NULL /* autodetect cfg */ },
 	{}
 };
 
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
index 6b3ced4..c540acc 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -212,6 +212,10 @@  static const struct msm_dsi_cfg_handler *dsi_get_config(
 	int ret;
 	u32 major = 0, minor = 0;
 
+	cfg_hnd = device_get_match_data(dev);
+	if (cfg_hnd)
+		return cfg_hnd;
+
 	ahb_clk = msm_clk_get(msm_host->pdev, "iface");
 	if (IS_ERR(ahb_clk)) {
 		pr_err("%s: cannot get interface clock\n", __func__);