Hi Andy, Thank you for the v2. On 8/30/19 5:08 PM, Andy Shevchenko wrote: > Allow all valid GPIOs to be used in the driver. > > Fixes: 17354bfe8527 ("leds: Add gpio-led trigger") > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > - set initial GPIO value to -ENOENT (Jacek) > drivers/leds/trigger/ledtrig-gpio.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/leds/trigger/ledtrig-gpio.c b/drivers/leds/trigger/ledtrig-gpio.c > index 33cc99a1a16a..dc64679b1a92 100644 > --- a/drivers/leds/trigger/ledtrig-gpio.c > +++ b/drivers/leds/trigger/ledtrig-gpio.c > @@ -131,10 +131,10 @@ static ssize_t gpio_trig_gpio_store(struct device *dev, > if (gpio_data->gpio == gpio) > return n; > > - if (!gpio) { > - if (gpio_data->gpio != 0) > + if (!gpio_is_valid(gpio)) { > + if (gpio_is_valid(gpio_data->gpio)) > free_irq(gpio_to_irq(gpio_data->gpio), led); > - gpio_data->gpio = 0; > + gpio_data->gpio = gpio; > return n; > } > > @@ -144,7 +144,7 @@ static ssize_t gpio_trig_gpio_store(struct device *dev, > if (ret) { > dev_err(dev, "request_irq failed with error %d\n", ret); > } else { > - if (gpio_data->gpio != 0) > + if (gpio_is_valid(gpio_data->gpio)) > free_irq(gpio_to_irq(gpio_data->gpio), led); > gpio_data->gpio = gpio; > /* After changing the GPIO, we need to update the LED. */ > @@ -172,6 +172,8 @@ static int gpio_trig_activate(struct led_classdev *led) > return -ENOMEM; > > gpio_data->led = led; > + gpio_data->gpio = -ENOENT; > + > led_set_trigger_data(led, gpio_data); > > return 0; > @@ -181,7 +183,7 @@ static void gpio_trig_deactivate(struct led_classdev *led) > { > struct gpio_trig_data *gpio_data = led_get_trigger_data(led); > > - if (gpio_data->gpio != 0) > + if (gpio_is_valid(gpio_data->gpio)) > free_irq(gpio_to_irq(gpio_data->gpio), led); > kfree(gpio_data); > } > Both 1/2 and 2/2 applied. -- Best regards, Jacek Anaszewski