lkml.org 
[lkml]   [2022]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v5 2/2] leds: ktd2692: Make aux-gpios optional
From

Le 08/04/2022 à 19:59, Markuss Broks a écrit :
> Make the AUX pin optional, since it isn't a core part of functionality,
> and the device is designed to be operational with only one CTRL pin.
>
> Also pick up maintenance for the LED driver and the yaml bindings.
>
> Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
> ---
> MAINTAINERS | 6 ++++++
> drivers/leds/flash/leds-ktd2692.c | 4 ++--
> 2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 2db49ea7ae55..8ef5667a1d98 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -10479,6 +10479,12 @@ S: Maintained
> F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd253.yaml
> F: drivers/video/backlight/ktd253-backlight.c
>
> +KTD2692 FLASH LED DRIVER
> +M: Markuss Broks <markuss.broks@gmail.com>
> +S: Maintained
> +F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2692.yaml
> +F: drivers/leds/flash/leds-ktd2692.yaml
> +
> KTEST
> M: Steven Rostedt <rostedt@goodmis.org>
> M: John Hawley <warthog9@eaglescrag.net>
> diff --git a/drivers/leds/flash/leds-ktd2692.c b/drivers/leds/flash/leds-ktd2692.c
> index f341da1503a4..fc9c2e441caa 100644
> --- a/drivers/leds/flash/leds-ktd2692.c
> +++ b/drivers/leds/flash/leds-ktd2692.c
> @@ -284,8 +284,8 @@ static int ktd2692_parse_dt(struct ktd2692_context *led, struct device *dev,
> return ret;
> }
>
> - led->aux_gpio = devm_gpiod_get(dev, "aux", GPIOD_ASIS);
> - ret = PTR_ERR_OR_ZERO(led->aux_gpio);
> + led->aux_gpio = devm_gpiod_get_optional(dev, "aux", GPIOD_ASIS);
> + ret = PTR_ERR(led->aux_gpio);
> if (ret) {
> dev_err(dev, "cannot get aux-gpios %d\n", ret);
> return ret;

Hi,

Sorry if I was unclear. What I was meaning is below.

This v5 is just wrong. If 'led->aux_gpio' is a valid pointer, then
'PTR_ERR(led->aux_gpio)' will be non-0 and you will bail-out with a
pointless error value.

PTR_ERR(x) is a valid error value if IS_ERR(x) is true. Otherwise it is
just 'x' casted as a long. So if 'x' is valid, it can be anything.


What I had in mind was more something like:

@@ -284,10 +284,9 @@ static int ktd2692_parse_dt(struct ktd2692_context *led, struct device *dev,
return ret;
}

- led->aux_gpio = devm_gpiod_get(dev, "aux", GPIOD_ASIS);
- ret = PTR_ERR_OR_ZERO(led->aux_gpio);
- if (ret) {
- dev_err(dev, "cannot get aux-gpios %d\n", ret);
+ led->aux_gpio = devm_gpiod_get_optional(dev, "aux", GPIOD_ASIS);
+ if (IS_ERR(led->aux_gpio)) {
+ ret = PTR_ERR(led->aux_gpio);
+ dev_err(dev, "cannot get aux-gpios: %d\n", ret);
return ret;
}



I guess that using PTR_ERR_OR_ZERO() is an option (like in the original
code) but personally I find it less readable (but it is just a matter of
taste)

CJ

\
 
 \ /
  Last update: 2022-04-08 20:24    [W:0.048 / U:0.572 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site