Patchwork drm/msm: Only add available components

login
register
mail settings
Submitter Doug Anderson
Date Dec. 4, 2018, 6:04 p.m.
Message ID <20181204180441.218160-1-dianders@chromium.org>
Download mbox | patch
Permalink /patch/672251/
State New
Headers show

Comments

Doug Anderson - Dec. 4, 2018, 6:04 p.m.
When trying to get the display up on my sdm845 board I noticed that
the display wouldn't probe if I had the dsi1 node marked as "disabled"
even though my board doesn't use dsi1.  It looks like the msm code
adds all nodes to its list of components even if they are disabled.  I
believe this doesn't work because all registered components need to
come up before we finish probing.  Let's do like other DRM code and
only add available components.

Signed-off-by: Douglas Anderson <dianders@chromium.org>
---

 drivers/gpu/drm/msm/msm_drv.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
Rob Clark - Dec. 4, 2018, 8:19 p.m.
On Tue, Dec 4, 2018 at 1:04 PM Douglas Anderson <dianders@chromium.org> wrote:
>
> When trying to get the display up on my sdm845 board I noticed that
> the display wouldn't probe if I had the dsi1 node marked as "disabled"
> even though my board doesn't use dsi1.  It looks like the msm code
> adds all nodes to its list of components even if they are disabled.  I
> believe this doesn't work because all registered components need to
> come up before we finish probing.  Let's do like other DRM code and
> only add available components.
>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>


yeah, that seems like a reasonable thing to do

Reviewed-by: Rob Clark <robdclark@gmail.com>

> ---
>
>  drivers/gpu/drm/msm/msm_drv.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index b1577e960889..0b828822117b 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -1190,8 +1190,10 @@ static int add_components_mdp(struct device *mdp_dev,
>                 if (!intf)
>                         continue;
>
> -               drm_of_component_match_add(master_dev, matchptr, compare_of,
> -                                          intf);
> +               if (of_device_is_available(intf))
> +                       drm_of_component_match_add(master_dev, matchptr,
> +                                                  compare_of, intf);
> +
>                 of_node_put(intf);
>         }
>
> --
> 2.20.0.rc1.387.gf8505762e3-goog
>

Patch

diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index b1577e960889..0b828822117b 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -1190,8 +1190,10 @@  static int add_components_mdp(struct device *mdp_dev,
 		if (!intf)
 			continue;
 
-		drm_of_component_match_add(master_dev, matchptr, compare_of,
-					   intf);
+		if (of_device_is_available(intf))
+			drm_of_component_match_add(master_dev, matchptr,
+						   compare_of, intf);
+
 		of_node_put(intf);
 	}