On Fri, Sep 1, 2023 at 3:40 PM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > New code should solely use firmware nodes for the specifics and > not any callbacks. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > drivers/gpio/gpio-pca953x.c | 37 ++++++--------------------- > include/linux/platform_data/pca953x.h | 13 ---------- > 2 files changed, 8 insertions(+), 42 deletions(-) > > diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c > index bdd50a78e414..02695abd0eb1 100644 > --- a/drivers/gpio/gpio-pca953x.c > +++ b/drivers/gpio/gpio-pca953x.c > @@ -211,7 +211,6 @@ struct pca953x_chip { > > struct i2c_client *client; > struct gpio_chip gpio_chip; > - const char *const *names; > unsigned long driver_data; > struct regulator *regulator; > > @@ -712,7 +711,6 @@ static void pca953x_setup_gpio(struct pca953x_chip *chip, int gpios) > gc->label = dev_name(&chip->client->dev); > gc->parent = &chip->client->dev; > gc->owner = THIS_MODULE; > - gc->names = chip->names; > } > > #ifdef CONFIG_GPIO_PCA953X_IRQ > @@ -998,7 +996,7 @@ static int pca953x_irq_setup(struct pca953x_chip *chip, > } > #endif > > -static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) > +static int device_pca95xx_init(struct pca953x_chip *chip) > { > DECLARE_BITMAP(val, MAX_LINE); > u8 regaddr; > @@ -1016,24 +1014,21 @@ static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) > if (ret) > goto out; > > - /* set platform specific polarity inversion */ > - if (invert) > - bitmap_fill(val, MAX_LINE); > - else > - bitmap_zero(val, MAX_LINE); > + /* clear polarity inversion */ > + bitmap_zero(val, MAX_LINE); > > ret = pca953x_write_regs(chip, chip->regs->invert, val); > out: > return ret; > } > > -static int device_pca957x_init(struct pca953x_chip *chip, u32 invert) > +static int device_pca957x_init(struct pca953x_chip *chip) > { > DECLARE_BITMAP(val, MAX_LINE); > unsigned int i; > int ret; > > - ret = device_pca95xx_init(chip, invert); > + ret = device_pca95xx_init(chip); > if (ret) > goto out; > > @@ -1054,9 +1049,8 @@ static int pca953x_probe(struct i2c_client *client) > { > struct pca953x_platform_data *pdata; > struct pca953x_chip *chip; > - int irq_base = 0; > + int irq_base; > int ret; > - u32 invert = 0; > struct regulator *reg; > const struct regmap_config *regmap_config; > > @@ -1068,8 +1062,6 @@ static int pca953x_probe(struct i2c_client *client) > if (pdata) { > irq_base = pdata->irq_base; > chip->gpio_start = pdata->gpio_base; > - invert = pdata->invert; > - chip->names = pdata->names; > } else { > struct gpio_desc *reset_gpio; > > @@ -1158,10 +1150,10 @@ static int pca953x_probe(struct i2c_client *client) > */ > if (PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE) { > chip->regs = &pca957x_regs; > - ret = device_pca957x_init(chip, invert); > + ret = device_pca957x_init(chip); > } else { > chip->regs = &pca953x_regs; > - ret = device_pca95xx_init(chip, invert); > + ret = device_pca95xx_init(chip); > } > if (ret) > goto err_exit; > @@ -1174,13 +1166,6 @@ static int pca953x_probe(struct i2c_client *client) > if (ret) > goto err_exit; > > - if (pdata && pdata->setup) { > - ret = pdata->setup(client, chip->gpio_chip.base, > - chip->gpio_chip.ngpio, pdata->context); > - if (ret < 0) > - dev_warn(&client->dev, "setup failed, %d\n", ret); > - } > - > return 0; > > err_exit: > @@ -1190,14 +1175,8 @@ static int pca953x_probe(struct i2c_client *client) > > static void pca953x_remove(struct i2c_client *client) > { > - struct pca953x_platform_data *pdata = dev_get_platdata(&client->dev); > struct pca953x_chip *chip = i2c_get_clientdata(client); > > - if (pdata && pdata->teardown) { > - pdata->teardown(client, chip->gpio_chip.base, > - chip->gpio_chip.ngpio, pdata->context); > - } > - > regulator_disable(chip->regulator); > } > > diff --git a/include/linux/platform_data/pca953x.h b/include/linux/platform_data/pca953x.h > index 96c1a14ab365..3c3787c4d96c 100644 > --- a/include/linux/platform_data/pca953x.h > +++ b/include/linux/platform_data/pca953x.h > @@ -11,21 +11,8 @@ struct pca953x_platform_data { > /* number of the first GPIO */ > unsigned gpio_base; > > - /* initial polarity inversion setting */ > - u32 invert; > - > /* interrupt base */ > int irq_base; > - > - void *context; /* param to setup/teardown */ > - > - int (*setup)(struct i2c_client *client, > - unsigned gpio, unsigned ngpio, > - void *context); > - void (*teardown)(struct i2c_client *client, > - unsigned gpio, unsigned ngpio, > - void *context); > - const char *const *names; > }; > > #endif /* _LINUX_PCA953X_H */ > -- > 2.40.0.1.gaa8946217a0b > Ah, we're so close to getting rid of platform data entirely... Series looks good to me, I'll pick it up next week after the merge window closes. Bart