On Fri, Sep 4, 2020 at 6:44 PM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > On Fri, Sep 04, 2020 at 05:45:28PM +0200, Bartosz Golaszewski wrote: > > From: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> > > > > devprop_gpiochip_set_names() is overly complicated with taking the > > fwnode argument (which requires using dev_fwnode() & of_fwnode_handle() > > in ACPI and OF GPIO code respectively). Let's just switch to using the > > generic device properties. > > > > This allows us to pull the code setting line names directly into > > gpiochip_add_data_with_key() instead of handling it separately for > > ACPI and OF. > > > > Signed-off-by: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> > > --- > > drivers/gpio/gpiolib-acpi.c | 3 --- > > drivers/gpio/gpiolib-devprop.c | 19 ++++++++++--------- > > drivers/gpio/gpiolib-of.c | 5 ----- > > drivers/gpio/gpiolib.c | 8 ++++---- > > include/linux/gpio/driver.h | 3 +-- > > 5 files changed, 15 insertions(+), 23 deletions(-) > > > > diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c > > index 54ca3c18b291..834a12f3219e 100644 > > --- a/drivers/gpio/gpiolib-acpi.c > > +++ b/drivers/gpio/gpiolib-acpi.c > > @@ -1221,9 +1221,6 @@ void acpi_gpiochip_add(struct gpio_chip *chip) > > return; > > } > > > > - if (!chip->names) > > - devprop_gpiochip_set_names(chip, dev_fwnode(chip->parent)); > > - > > acpi_gpiochip_request_regions(acpi_gpio); > > acpi_gpiochip_scan_gpios(acpi_gpio); > > acpi_walk_dep_device_list(handle); > > diff --git a/drivers/gpio/gpiolib-devprop.c b/drivers/gpio/gpiolib-devprop.c > > index 26741032fa9e..a28659b4f9c9 100644 > > --- a/drivers/gpio/gpiolib-devprop.c > > +++ b/drivers/gpio/gpiolib-devprop.c > > @@ -17,25 +17,24 @@ > > /** > > * devprop_gpiochip_set_names - Set GPIO line names using device properties > > * @chip: GPIO chip whose lines should be named, if possible > > - * @fwnode: Property Node containing the gpio-line-names property > > * > > * Looks for device property "gpio-line-names" and if it exists assigns > > * GPIO line names for the chip. The memory allocated for the assigned > > - * names belong to the underlying firmware node and should not be released > > + * names belong to the underlying software node and should not be released > > * by the caller. > > */ > > -void devprop_gpiochip_set_names(struct gpio_chip *chip, > > - const struct fwnode_handle *fwnode) > > +int devprop_gpiochip_set_names(struct gpio_chip *chip) > > { > > struct gpio_device *gdev = chip->gpiodev; > > + struct device *dev = chip->parent; > > const char **names; > > int ret, i; > > int count; > > > > - count = fwnode_property_read_string_array(fwnode, "gpio-line-names", > > + count = device_property_read_string_array(dev, "gpio-line-names", > > NULL, 0); > > if (count < 0) > > - return; > > + return 0; > > Can we introduce a followup to 33ee09cd59ce ("device property: Add helpers to > count items in an array") for strings? > Sure, I'll do this in v2. Bart