summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/msm
diff options
context:
space:
mode:
authorLoic Poulain <loic.poulain@linaro.org>2022-02-14 16:37:38 +0100
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>2022-02-23 05:56:43 +0300
commit05ae15e762718d4c76fa34b2a62072940db1283c (patch)
tree7dc39e78dd8b837a72e673ef80ec0b105a4cb6c6 /drivers/gpu/drm/msm
parentbc2112583a0b473f5c4ba87c00da84abd5d0b3fd (diff)
drm/msm/dsi: Allow to specify dsi config as pdata
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> Patchwork: https://patchwork.freedesktop.org/patch/474089/ Link: https://lore.kernel.org/r/1644853060-12222-1-git-send-email-loic.poulain@linaro.org Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Diffstat (limited to 'drivers/gpu/drm/msm')
-rw-r--r--drivers/gpu/drm/msm/dsi/dsi.c2
-rw-r--r--drivers/gpu/drm/msm/dsi/dsi_host.c4
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c
index 0fe02529b5e7..e61a8eec5319 100644
--- a/drivers/gpu/drm/msm/dsi/dsi.c
+++ b/drivers/gpu/drm/msm/dsi/dsi.c
@@ -175,7 +175,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 be474dcdc9bc..d51e70fab93d 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__);