dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] drm/msm: use compatible lists to find mdp node
@ 2021-11-09  9:47 Krishna Manikandan
  2021-11-09 13:23 ` Dmitry Baryshkov
  2021-11-09 22:12 ` Stephen Boyd
  0 siblings, 2 replies; 3+ messages in thread
From: Krishna Manikandan @ 2021-11-09  9:47 UTC (permalink / raw)
  To: linux-arm-msm, linux-kernel
  Cc: quic_kalyant, dri-devel, swboyd, Krishna Manikandan, freedreno

In the current implementation, substring comparison
using device node name is used to find mdp node
during driver probe. Use compatible string list instead
of node name to get mdp node from the parent mdss node.

Signed-off-by: Krishna Manikandan <quic_mkrishn@quicinc.com>

Changes in v2:
  - Use compatible lists instead of duplicate string
    check (Stephen Boyd)

Changes in v3:
  - Use match tables to find the mdp node (Stephen Boyd)
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  | 3 ++-
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 3 ++-
 drivers/gpu/drm/msm/msm_drv.c            | 7 ++++---
 drivers/gpu/drm/msm/msm_kms.h            | 3 +++
 4 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index ad247c0..c778b6d 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -1273,7 +1273,7 @@ static const struct dev_pm_ops dpu_pm_ops = {
 				pm_runtime_force_resume)
 };
 
-static const struct of_device_id dpu_dt_match[] = {
+const struct of_device_id dpu_dt_match[] = {
 	{ .compatible = "qcom,sdm845-dpu", },
 	{ .compatible = "qcom,sc7180-dpu", },
 	{ .compatible = "qcom,sc7280-dpu", },
@@ -1282,6 +1282,7 @@ static const struct of_device_id dpu_dt_match[] = {
 	{}
 };
 MODULE_DEVICE_TABLE(of, dpu_dt_match);
+EXPORT_SYMBOL(dpu_dt_match);
 
 static struct platform_driver dpu_driver = {
 	.probe = dpu_dev_probe,
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
index 7b24224..8b97008 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
@@ -1031,13 +1031,14 @@ static const struct dev_pm_ops mdp5_pm_ops = {
 	SET_RUNTIME_PM_OPS(mdp5_runtime_suspend, mdp5_runtime_resume, NULL)
 };
 
-static const struct of_device_id mdp5_dt_match[] = {
+const struct of_device_id mdp5_dt_match[] = {
 	{ .compatible = "qcom,mdp5", },
 	/* to support downstream DT files */
 	{ .compatible = "qcom,mdss_mdp", },
 	{}
 };
 MODULE_DEVICE_TABLE(of, mdp5_dt_match);
+EXPORT_SYMBOL(mdp5_dt_match);
 
 static struct platform_driver mdp5_driver = {
 	.probe = mdp5_dev_probe,
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 7936e8d..445788f 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -1277,9 +1277,10 @@ static int add_components_mdp(struct device *mdp_dev,
 	return 0;
 }
 
-static int compare_name_mdp(struct device *dev, void *data)
+static int find_mdp_node(struct device *dev, void *data)
 {
-	return (strstr(dev_name(dev), "mdp") != NULL);
+	return of_match_node(dpu_dt_match, dev->of_node) ||
+		of_match_node(mdp5_dt_match, dev->of_node);
 }
 
 static int add_display_components(struct platform_device *pdev,
@@ -1304,7 +1305,7 @@ static int add_display_components(struct platform_device *pdev,
 			return ret;
 		}
 
-		mdp_dev = device_find_child(dev, NULL, compare_name_mdp);
+		mdp_dev = device_find_child(dev, NULL, find_mdp_node);
 		if (!mdp_dev) {
 			DRM_DEV_ERROR(dev, "failed to find MDSS MDP node\n");
 			of_platform_depopulate(dev);
diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
index 6a42b81..8b132c8 100644
--- a/drivers/gpu/drm/msm/msm_kms.h
+++ b/drivers/gpu/drm/msm/msm_kms.h
@@ -198,6 +198,9 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev);
 struct msm_kms *mdp5_kms_init(struct drm_device *dev);
 struct msm_kms *dpu_kms_init(struct drm_device *dev);
 
+extern const struct of_device_id dpu_dt_match[];
+extern const struct of_device_id mdp5_dt_match[];
+
 struct msm_mdss_funcs {
 	int (*enable)(struct msm_mdss *mdss);
 	int (*disable)(struct msm_mdss *mdss);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v3] drm/msm: use compatible lists to find mdp node
  2021-11-09  9:47 [PATCH v3] drm/msm: use compatible lists to find mdp node Krishna Manikandan
@ 2021-11-09 13:23 ` Dmitry Baryshkov
  2021-11-09 22:12 ` Stephen Boyd
  1 sibling, 0 replies; 3+ messages in thread
From: Dmitry Baryshkov @ 2021-11-09 13:23 UTC (permalink / raw)
  To: Krishna Manikandan
  Cc: quic_kalyant, linux-arm-msm, linux-kernel, dri-devel, swboyd, freedreno

On Tue, 9 Nov 2021 at 12:47, Krishna Manikandan
<quic_mkrishn@quicinc.com> wrote:
>
> In the current implementation, substring comparison
> using device node name is used to find mdp node
> during driver probe. Use compatible string list instead
> of node name to get mdp node from the parent mdss node.
>
> Signed-off-by: Krishna Manikandan <quic_mkrishn@quicinc.com>
>
> Changes in v2:
>   - Use compatible lists instead of duplicate string
>     check (Stephen Boyd)
>
> Changes in v3:
>   - Use match tables to find the mdp node (Stephen Boyd)
> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  | 3 ++-
>  drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 3 ++-
>  drivers/gpu/drm/msm/msm_drv.c            | 7 ++++---
>  drivers/gpu/drm/msm/msm_kms.h            | 3 +++
>  4 files changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> index ad247c0..c778b6d 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> @@ -1273,7 +1273,7 @@ static const struct dev_pm_ops dpu_pm_ops = {
>                                 pm_runtime_force_resume)
>  };
>
> -static const struct of_device_id dpu_dt_match[] = {
> +const struct of_device_id dpu_dt_match[] = {
>         { .compatible = "qcom,sdm845-dpu", },
>         { .compatible = "qcom,sc7180-dpu", },
>         { .compatible = "qcom,sc7280-dpu", },
> @@ -1282,6 +1282,7 @@ static const struct of_device_id dpu_dt_match[] = {
>         {}
>  };
>  MODULE_DEVICE_TABLE(of, dpu_dt_match);
> +EXPORT_SYMBOL(dpu_dt_match);

There is no need to export these symbols, as they will be used within
the module.

>
>  static struct platform_driver dpu_driver = {
>         .probe = dpu_dev_probe,
> diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
> index 7b24224..8b97008 100644
> --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
> +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
> @@ -1031,13 +1031,14 @@ static const struct dev_pm_ops mdp5_pm_ops = {
>         SET_RUNTIME_PM_OPS(mdp5_runtime_suspend, mdp5_runtime_resume, NULL)
>  };
>
> -static const struct of_device_id mdp5_dt_match[] = {
> +const struct of_device_id mdp5_dt_match[] = {
>         { .compatible = "qcom,mdp5", },
>         /* to support downstream DT files */
>         { .compatible = "qcom,mdss_mdp", },
>         {}
>  };
>  MODULE_DEVICE_TABLE(of, mdp5_dt_match);
> +EXPORT_SYMBOL(mdp5_dt_match);
>
>  static struct platform_driver mdp5_driver = {
>         .probe = mdp5_dev_probe,
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index 7936e8d..445788f 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -1277,9 +1277,10 @@ static int add_components_mdp(struct device *mdp_dev,
>         return 0;
>  }
>
> -static int compare_name_mdp(struct device *dev, void *data)
> +static int find_mdp_node(struct device *dev, void *data)
>  {
> -       return (strstr(dev_name(dev), "mdp") != NULL);
> +       return of_match_node(dpu_dt_match, dev->of_node) ||
> +               of_match_node(mdp5_dt_match, dev->of_node);
>  }
>
>  static int add_display_components(struct platform_device *pdev,
> @@ -1304,7 +1305,7 @@ static int add_display_components(struct platform_device *pdev,
>                         return ret;
>                 }
>
> -               mdp_dev = device_find_child(dev, NULL, compare_name_mdp);
> +               mdp_dev = device_find_child(dev, NULL, find_mdp_node);
>                 if (!mdp_dev) {
>                         DRM_DEV_ERROR(dev, "failed to find MDSS MDP node\n");
>                         of_platform_depopulate(dev);
> diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
> index 6a42b81..8b132c8 100644
> --- a/drivers/gpu/drm/msm/msm_kms.h
> +++ b/drivers/gpu/drm/msm/msm_kms.h
> @@ -198,6 +198,9 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev);
>  struct msm_kms *mdp5_kms_init(struct drm_device *dev);
>  struct msm_kms *dpu_kms_init(struct drm_device *dev);
>
> +extern const struct of_device_id dpu_dt_match[];
> +extern const struct of_device_id mdp5_dt_match[];
> +
>  struct msm_mdss_funcs {
>         int (*enable)(struct msm_mdss *mdss);
>         int (*disable)(struct msm_mdss *mdss);
> --
> 2.7.4
>


-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v3] drm/msm: use compatible lists to find mdp node
  2021-11-09  9:47 [PATCH v3] drm/msm: use compatible lists to find mdp node Krishna Manikandan
  2021-11-09 13:23 ` Dmitry Baryshkov
@ 2021-11-09 22:12 ` Stephen Boyd
  1 sibling, 0 replies; 3+ messages in thread
From: Stephen Boyd @ 2021-11-09 22:12 UTC (permalink / raw)
  To: Krishna Manikandan, linux-arm-msm, linux-kernel
  Cc: quic_kalyant, freedreno, dri-devel

Quoting Krishna Manikandan (2021-11-09 01:47:28)
> In the current implementation, substring comparison
> using device node name is used to find mdp node
> during driver probe. Use compatible string list instead
> of node name to get mdp node from the parent mdss node.
>
> Signed-off-by: Krishna Manikandan <quic_mkrishn@quicinc.com>
>
> Changes in v2:
>   - Use compatible lists instead of duplicate string
>     check (Stephen Boyd)
>
> Changes in v3:
>   - Use match tables to find the mdp node (Stephen Boyd)
> ---

With the export symbol dropped

Reviewed-by: Stephen Boyd <swboyd@chromium.org>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-11-09 22:12 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-09  9:47 [PATCH v3] drm/msm: use compatible lists to find mdp node Krishna Manikandan
2021-11-09 13:23 ` Dmitry Baryshkov
2021-11-09 22:12 ` Stephen Boyd

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).