From: Luca Ceresoli <luca.ceresoli@bootlin.com>
To: Andi Shyti <andi.shyti@linux.intel.com>
Cc: Andrzej Hajda <andrzej.hajda@intel.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Robert Foss <rfoss@kernel.org>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Jonas Karlman <jonas@kwiboo.se>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] drm/bridge: ti-sn65dsi83: use dev_err_probe when failing to get panel bridge
Date: Mon, 19 Aug 2024 13:38:40 +0200 [thread overview]
Message-ID: <20240819133840.26045152@booty> (raw)
In-Reply-To: <ZrtuksiarZNS8L79@ashyti-mobl2.lan>
Hello Andi,
thanks for your additional comments.
On Tue, 13 Aug 2024 16:32:50 +0200
Andi Shyti <andi.shyti@linux.intel.com> wrote:
> Hi Luca,
>
> On Tue, Aug 13, 2024 at 10:16:43AM +0200, Luca Ceresoli wrote:
> > On Thu, 8 Aug 2024 11:35:23 +0100
> > Andi Shyti <andi.shyti@linux.intel.com> wrote:
> > > On Thu, Aug 08, 2024 at 12:26:14PM +0200, Luca Ceresoli wrote:
> > > > When devm_drm_of_get_bridge() fails, the probe fails silently. Use
> > > > dev_err_probe() instead to log an error or report the deferral reason,
> > > > whichever is applicable.
> > > >
> > > > Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
> > > > ---
> > > > drivers/gpu/drm/bridge/ti-sn65dsi83.c | 2 +-
> > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c b/drivers/gpu/drm/bridge/ti-sn65dsi83.c
> > > > index 57a7ed13f996..60b9f14d769a 100644
> > > > --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c
> > > > +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c
> > > > @@ -606,7 +606,7 @@ static int sn65dsi83_parse_dt(struct sn65dsi83 *ctx, enum sn65dsi83_model model)
> > > >
> > > > panel_bridge = devm_drm_of_get_bridge(dev, dev->of_node, 2, 0);
> > > > if (IS_ERR(panel_bridge))
> > > > - return PTR_ERR(panel_bridge);
> > > > + return dev_err_probe(dev, PTR_ERR(panel_bridge), "Failed to get panel bridge\n");
> > >
> > > patch looks good, but the message is a bit misleading. You are
> > > not failing to get the panel bridge, but you are failing to find
> > > a panel bridge in a DT node. Right?
> >
> > As I can see from both the documentation and the code,
> > devm_drm_of_get_bridge() is really returning a pointer to a panel
> > bridge, potentially allocating and adding it in case it was not present
> > before. Navigating the device tree is only a part of what it does.
> >
> > Do you think I am missing something?
>
> No, maybe it's me being a bit pedantic. In the sense that we are
> not really failing to get the panel, but most probably the panel
> is not installed.
The panels I'm used to, which I believe to be the most common in
embedded systems just have no way of being detected, so the operating
system cannot detect a "panel not installed" condition.
However I went back to the code and realized your initial remark ("you
are failing to find a panel bridge in a DT node") is more correct than
I initially thought. Indeed there are two failure reasons for
devm_drm_of_get_bridge() to fail: DT lookup and panel bridge creation
failures. The latter however can be due to -ENOMEM (unlikely) or
(panel->connector_type == DRM_MODE_CONNECTOR_Unknown), which in turn
can be due to either a panel driver error or again a DT error in case
the driver gets the panel type from DT, as panel-simple.c does.
That said, the role of devm_drm_of_get_bridge() is to provide a panel
bridge object. If it fails, that means it is unable to provide such an
object for whatever reason. Reasons currently include DT issues (the
most likely), driver bug and -ENOMEM. There could be more reasons in
future versions of the implementation.
I'm afraid I'm unable to express all the above logic in a single commit
title line. However, should you have a better commit title or message
to suggest, I'm still open to improvements. I value good commit
messages.
> I'm not strong on this comment, though, so that
> feel free to add:
>
> Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Otherwise, I'm sending v2 with your review tag by the end of the week.
Luca
--
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2024-08-19 11:38 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-08 10:26 [PATCH] drm/bridge: ti-sn65dsi83: use dev_err_probe when failing to get panel bridge Luca Ceresoli
2024-08-08 10:35 ` Andi Shyti
2024-08-13 8:16 ` Luca Ceresoli
2024-08-13 14:32 ` Andi Shyti
2024-08-19 11:38 ` Luca Ceresoli [this message]
2024-08-19 15:49 ` Andi Shyti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240819133840.26045152@booty \
--to=luca.ceresoli@bootlin.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=andi.shyti@linux.intel.com \
--cc=andrzej.hajda@intel.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.org \
--cc=thomas.petazzoni@bootlin.com \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.