On Mon, Feb 3, 2025 at 1:18 PM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > Convert the driver probe stage to use managed resources. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > drivers/gpio/gpio-74x164.c | 20 ++++++++++++++++---- > 1 file changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpio/gpio-74x164.c b/drivers/gpio/gpio-74x164.c > index 0f720d539fa7..920d3b9c1087 100644 > --- a/drivers/gpio/gpio-74x164.c > +++ b/drivers/gpio/gpio-74x164.c > @@ -95,6 +95,19 @@ static int gen_74x164_direction_output(struct gpio_chip *gc, > return 0; > } > > +static void gen_74x164_deactivate(void *data) > +{ > + struct gen_74x164_chip *chip = data; > + > + gpiod_set_value_cansleep(chip->gpiod_oe, 0); > +} > + > +static int gen_74x164_activate(struct device *dev, struct gen_74x164_chip *chip) > +{ > + gpiod_set_value_cansleep(chip->gpiod_oe, 1); > + return devm_add_action_or_reset(dev, gen_74x164_deactivate, chip); > +} > + > static int gen_74x164_probe(struct spi_device *spi) > { > struct device *dev = &spi->dev; > @@ -128,8 +141,6 @@ static int gen_74x164_probe(struct spi_device *spi) > if (IS_ERR(chip->gpiod_oe)) > return PTR_ERR(chip->gpiod_oe); > > - spi_set_drvdata(spi, chip); > - > chip->gpio_chip.label = spi->modalias; > chip->gpio_chip.direction_output = gen_74x164_direction_output; > chip->gpio_chip.get = gen_74x164_get_value; > @@ -149,7 +160,9 @@ static int gen_74x164_probe(struct spi_device *spi) > if (ret) > return dev_err_probe(&spi->dev, ret, "Config write failed\n"); > > - gpiod_set_value_cansleep(chip->gpiod_oe, 1); > + ret = gen_74x164_activate(dev, chip); > + if (ret) > + return ret; > > return devm_gpiochip_add_data(&spi->dev, &chip->gpio_chip, chip); > } > @@ -181,7 +194,6 @@ static struct spi_driver gen_74x164_driver = { > .of_match_table = gen_74x164_dt_ids, > }, > .probe = gen_74x164_probe, > - .remove = gen_74x164_remove, Did you forget to remove gen_74x164_remove()? Bart > .id_table = gen_74x164_spi_ids, > }; > module_spi_driver(gen_74x164_driver); > -- > 2.43.0.rc1.1336.g36b5255a03ac >