linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] drm/bridge: sn65dsi86: defer if there is no dsi host
@ 2021-12-07 21:38 Rob Clark
  2021-12-07 21:42 ` Doug Anderson
  0 siblings, 1 reply; 2+ messages in thread
From: Rob Clark @ 2021-12-07 21:38 UTC (permalink / raw)
  To: dri-devel
  Cc: linux-arm-msm, Maxime Ripard, Douglas Anderson, Stephen Boyd,
	Jernej Škrabec, Rob Clark, Andrzej Hajda, Neil Armstrong,
	Robert Foss, Laurent Pinchart, Jonas Karlman, David Airlie,
	Daniel Vetter, Sam Ravnborg, open list

From: Rob Clark <robdclark@chromium.org>

Otherwise we don't get another shot at it if the bridge probes before
the dsi host is registered.  It seems like this is what *most* (but not
all) of the other bridges do.

It looks like this was missed in the conversion to attach dsi host at
probe time.

Fixes: c3b75d4734cb ("drm/bridge: sn65dsi86: Register and attach our DSI device at probe")
Signed-off-by: Rob Clark <robdclark@chromium.org>
---
v2: Drop DRM_ERROR() in favor of drm_err_probe() and shift around the
    spot where we report the error

 drivers/gpu/drm/bridge/ti-sn65dsi86.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
index 02b490671f8f..8f1321ca819e 100644
--- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
@@ -714,10 +714,8 @@ static int ti_sn_attach_host(struct ti_sn65dsi86 *pdata)
 	};
 
 	host = of_find_mipi_dsi_host_by_node(pdata->host_node);
-	if (!host) {
-		DRM_ERROR("failed to find dsi host\n");
-		return -ENODEV;
-	}
+	if (!host)
+		return -EPROBE_DEFER;
 
 	dsi = devm_mipi_dsi_device_register_full(dev, host, &info);
 	if (IS_ERR(dsi)) {
@@ -1267,8 +1265,10 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev,
 	drm_bridge_add(&pdata->bridge);
 
 	ret = ti_sn_attach_host(pdata);
-	if (ret)
+	if (ret) {
+		dev_err_probe(pdata->dev, ret, "failed to attach dsi host");
 		goto err_remove_bridge;
+	}
 
 	return 0;
 
-- 
2.33.1


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

* Re: [PATCH v2] drm/bridge: sn65dsi86: defer if there is no dsi host
  2021-12-07 21:38 [PATCH v2] drm/bridge: sn65dsi86: defer if there is no dsi host Rob Clark
@ 2021-12-07 21:42 ` Doug Anderson
  0 siblings, 0 replies; 2+ messages in thread
From: Doug Anderson @ 2021-12-07 21:42 UTC (permalink / raw)
  To: Rob Clark
  Cc: dri-devel, linux-arm-msm, Maxime Ripard, Stephen Boyd,
	Jernej Škrabec, Rob Clark, Andrzej Hajda, Neil Armstrong,
	Robert Foss, Laurent Pinchart, Jonas Karlman, David Airlie,
	Daniel Vetter, Sam Ravnborg, open list

Hi,

On Tue, Dec 7, 2021 at 1:33 PM Rob Clark <robdclark@gmail.com> wrote:
>
> From: Rob Clark <robdclark@chromium.org>
>
> Otherwise we don't get another shot at it if the bridge probes before
> the dsi host is registered.  It seems like this is what *most* (but not
> all) of the other bridges do.
>
> It looks like this was missed in the conversion to attach dsi host at
> probe time.
>
> Fixes: c3b75d4734cb ("drm/bridge: sn65dsi86: Register and attach our DSI device at probe")
> Signed-off-by: Rob Clark <robdclark@chromium.org>
> ---
> v2: Drop DRM_ERROR() in favor of drm_err_probe() and shift around the
>     spot where we report the error
>
>  drivers/gpu/drm/bridge/ti-sn65dsi86.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> index 02b490671f8f..8f1321ca819e 100644
> --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> @@ -714,10 +714,8 @@ static int ti_sn_attach_host(struct ti_sn65dsi86 *pdata)
>         };
>
>         host = of_find_mipi_dsi_host_by_node(pdata->host_node);
> -       if (!host) {
> -               DRM_ERROR("failed to find dsi host\n");
> -               return -ENODEV;
> -       }
> +       if (!host)
> +               return -EPROBE_DEFER;
>
>         dsi = devm_mipi_dsi_device_register_full(dev, host, &info);
>         if (IS_ERR(dsi)) {
> @@ -1267,8 +1265,10 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev,
>         drm_bridge_add(&pdata->bridge);
>
>         ret = ti_sn_attach_host(pdata);
> -       if (ret)
> +       if (ret) {
> +               dev_err_probe(pdata->dev, ret, "failed to attach dsi host");

nit: Needs a "\n" at the end, doesn't it?


>                 goto err_remove_bridge;
> +       }

It's going to be a little funny now because if the
devm_mipi_dsi_attach() call fails you'll report "failed to attach dsi
host" twice (once using DRM_ERROR in ti_sn_attach_host() and once
here). Probably all the error messages could be removed from
ti_sn_attach_host() and you could rely on this new one because:
* devm_mipi_dsi_device_register_full() already appears plenty chatty.
* this is the same message that devm_mipi_dsi_attach() was printing out anyway.

In any case, it's not really a big deal, so with the "\n" added I'm
happy with my Reviewed-by.

I'm happy to apply this to to drm-misc-next tomorrow if there are no
objections. I can always add the "\n" myself unless you want to send a
v3 with it and/or want to remove more error messages. ;-)

-Doug

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

end of thread, other threads:[~2021-12-07 21:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-07 21:38 [PATCH v2] drm/bridge: sn65dsi86: defer if there is no dsi host Rob Clark
2021-12-07 21:42 ` Doug Anderson

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