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 <[email protected]>
Reviewed-by: Dmitry Baryshkov <[email protected]>
---
 v2: no change

 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__);
-- 
2.7.4

Reply via email to