All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: dri-devel@lists.freedesktop.org
Cc: Daniel Vetter <daniel.vetter@intel.com>,
	Maxime Ripard <maxime.ripard@free-electrons.com>,
	Mark Brown <broonie@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] drm/panel: lvds: Handle the optional regulator case properly
Date: Fri, 12 Jan 2018 00:09:39 +0200	[thread overview]
Message-ID: <5140293.enj6JbCqAe@avalon> (raw)
In-Reply-To: <1579517.s7hJ1SlSuH@avalon>

Hi Maxime,

On Friday, 12 January 2018 00:06:06 EET Laurent Pinchart wrote:
> On Thursday, 11 January 2018 15:12:56 EET Maxime Ripard wrote:
> > On Thu, Jan 11, 2018 at 03:05:01PM +0200, Laurent Pinchart wrote:
> >> On Wednesday, 10 January 2018 17:59:41 EET Maxime Ripard wrote:
> >>> The devm_regulator_get_optional function, unlike it was assumed in the
> >>> commit a1c55bccf600 ("drm/panel: lvds: Add support for the power-supply
> >>> property"), is actually returning an error pointer with -ENODEV instead
> >>> of NULL when there's no regulator to find.
> >>> 
> >>> Make sure we handle that case properly.
> >>> 
> >>> Fixes: a1c55bccf600 ("drm/panel: lvds: Add support for the power-supply
> >>> property") Signed-off-by: Maxime Ripard
> >>> <maxime.ripard@free-electrons.com>
> >>> ---
> >>> 
> >>>  drivers/gpu/drm/panel/panel-lvds.c | 9 +++++++--
> >>>  1 file changed, 7 insertions(+), 2 deletions(-)
> >>> 
> >>> diff --git a/drivers/gpu/drm/panel/panel-lvds.c
> >>> b/drivers/gpu/drm/panel/panel-lvds.c index 57e38a9e7ab4..9f46e7095c0e
> >>> 100644
> >>> --- a/drivers/gpu/drm/panel/panel-lvds.c
> >>> +++ b/drivers/gpu/drm/panel/panel-lvds.c
> >>> @@ -215,8 +215,13 @@ static int panel_lvds_probe(struct platform_device
> >>> *pdev)
> >>> 	lvds->supply = devm_regulator_get_optional(lvds->dev, "power");
> >>>  	if (IS_ERR(lvds->supply)) {
> >>>  		ret = PTR_ERR(lvds->supply);
> >>> -		dev_err(lvds->dev, "failed to request regulator: %d\n", ret);
> >>> -		return ret;
> >>> +
> >>> +		if (ret != -ENODEV) {
> >>> +			dev_err(lvds->dev, "failed to request regulator: %d\n", ret);
> >>> +			return ret;
> >> 
> >> I wouldn't print an error message if ret == -EPROBE_DEFER.
> >> 
> >>> +		} else {
> >>> +			lvds->supply = NULL;
> >>> +		}
> >>>  	}
> >> 
> >> How about
> >> 
> >> 	lvds->supply = devm_regulator_get_optional(lvds->dev, "power");
> >> 	if (IS_ERR(lvds->supply)) {
> >> 		ret = PTR_ERR(lvds->supply);
> >> 		if (ret != -ENODEV) {
> >> 			if (ret == -EPROBE_DEFER)
> > 
> > I guess that would be != -EPROBE_DEFER
> 
> Of course, my bad.
> 
> >> 				dev_err(lvds->dev, "failed to request regulator: %d\n", ret);
> >> 			return ret;
> >> 		}
> >> 		
> >> 		lvds->supply = NULL;
> >> 	}
> > 
> > Otherwise, it works for me.

With the above change,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> >> My preference, however, would be for devm_regulator_get_optional() to
> >> return NULL when no regulator is present. The current implementation
> >> returns -ENODEV in multiple cases, making it impossible to properly
> >> discriminate between having no regulator and not being able to get the
> >> regulator due to an error.
> > 
> > It would feel more intuitive to me too, but it would also require to
> > fix most of the call sites that would have a similar pattern.
> 
> Of course. I don't mean we need to delay this patch, but I still think it
> would be a good API improvement that could be developed separately (and of
> course I wouldn't complain if you volunteered ;-)).

-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: dri-devel@lists.freedesktop.org
Cc: Daniel Vetter <daniel.vetter@intel.com>,
	Maxime Ripard <maxime.ripard@free-electrons.com>,
	Mark Brown <broonie@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] drm/panel: lvds: Handle the optional regulator case properly
Date: Fri, 12 Jan 2018 00:09:39 +0200	[thread overview]
Message-ID: <5140293.enj6JbCqAe@avalon> (raw)
In-Reply-To: <1579517.s7hJ1SlSuH@avalon>

Hi Maxime,

On Friday, 12 January 2018 00:06:06 EET Laurent Pinchart wrote:
> On Thursday, 11 January 2018 15:12:56 EET Maxime Ripard wrote:
> > On Thu, Jan 11, 2018 at 03:05:01PM +0200, Laurent Pinchart wrote:
> >> On Wednesday, 10 January 2018 17:59:41 EET Maxime Ripard wrote:
> >>> The devm_regulator_get_optional function, unlike it was assumed in the
> >>> commit a1c55bccf600 ("drm/panel: lvds: Add support for the power-supply
> >>> property"), is actually returning an error pointer with -ENODEV instead
> >>> of NULL when there's no regulator to find.
> >>> 
> >>> Make sure we handle that case properly.
> >>> 
> >>> Fixes: a1c55bccf600 ("drm/panel: lvds: Add support for the power-supply
> >>> property") Signed-off-by: Maxime Ripard
> >>> <maxime.ripard@free-electrons.com>
> >>> ---
> >>> 
> >>>  drivers/gpu/drm/panel/panel-lvds.c | 9 +++++++--
> >>>  1 file changed, 7 insertions(+), 2 deletions(-)
> >>> 
> >>> diff --git a/drivers/gpu/drm/panel/panel-lvds.c
> >>> b/drivers/gpu/drm/panel/panel-lvds.c index 57e38a9e7ab4..9f46e7095c0e
> >>> 100644
> >>> --- a/drivers/gpu/drm/panel/panel-lvds.c
> >>> +++ b/drivers/gpu/drm/panel/panel-lvds.c
> >>> @@ -215,8 +215,13 @@ static int panel_lvds_probe(struct platform_device
> >>> *pdev)
> >>> 	lvds->supply = devm_regulator_get_optional(lvds->dev, "power");
> >>>  	if (IS_ERR(lvds->supply)) {
> >>>  		ret = PTR_ERR(lvds->supply);
> >>> -		dev_err(lvds->dev, "failed to request regulator: %d\n", ret);
> >>> -		return ret;
> >>> +
> >>> +		if (ret != -ENODEV) {
> >>> +			dev_err(lvds->dev, "failed to request regulator: %d\n", ret);
> >>> +			return ret;
> >> 
> >> I wouldn't print an error message if ret == -EPROBE_DEFER.
> >> 
> >>> +		} else {
> >>> +			lvds->supply = NULL;
> >>> +		}
> >>>  	}
> >> 
> >> How about
> >> 
> >> 	lvds->supply = devm_regulator_get_optional(lvds->dev, "power");
> >> 	if (IS_ERR(lvds->supply)) {
> >> 		ret = PTR_ERR(lvds->supply);
> >> 		if (ret != -ENODEV) {
> >> 			if (ret == -EPROBE_DEFER)
> > 
> > I guess that would be != -EPROBE_DEFER
> 
> Of course, my bad.
> 
> >> 				dev_err(lvds->dev, "failed to request regulator: %d\n", ret);
> >> 			return ret;
> >> 		}
> >> 		
> >> 		lvds->supply = NULL;
> >> 	}
> > 
> > Otherwise, it works for me.

With the above change,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> >> My preference, however, would be for devm_regulator_get_optional() to
> >> return NULL when no regulator is present. The current implementation
> >> returns -ENODEV in multiple cases, making it impossible to properly
> >> discriminate between having no regulator and not being able to get the
> >> regulator due to an error.
> > 
> > It would feel more intuitive to me too, but it would also require to
> > fix most of the call sites that would have a similar pattern.
> 
> Of course. I don't mean we need to delay this patch, but I still think it
> would be a good API improvement that could be developed separately (and of
> course I wouldn't complain if you volunteered ;-)).

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2018-01-11 22:09 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-10 15:59 [PATCH] drm/panel: lvds: Handle the optional regulator case properly Maxime Ripard
2018-01-10 15:59 ` Maxime Ripard
2018-01-11 13:05 ` Laurent Pinchart
2018-01-11 13:12   ` Maxime Ripard
2018-01-11 22:06     ` Laurent Pinchart
2018-01-11 22:06       ` Laurent Pinchart
2018-01-11 22:09       ` Laurent Pinchart [this message]
2018-01-11 22:09         ` Laurent Pinchart
2018-01-15  9:18         ` Maxime Ripard
2018-01-11 14:31   ` Jani Nikula
2018-01-11 21:30     ` Laurent Pinchart
2018-01-11 21:30       ` Laurent Pinchart

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=5140293.enj6JbCqAe@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=broonie@kernel.org \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maxime.ripard@free-electrons.com \
    /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.