Thread (74 messages) 74 messages, 7 authors, 2020-09-11

Re: [PATCH 04/23] gpiolib: generalize devprop_gpiochip_set_names() for device properties

From: Bartosz Golaszewski <hidden>
Date: 2020-09-07 11:05:23
Also in: linux-acpi, linux-gpio, lkml

On Fri, Sep 4, 2020 at 6:44 PM Andy Shevchenko
[off-list ref] wrote:
On Fri, Sep 04, 2020 at 05:45:28PM +0200, Bartosz Golaszewski wrote:
quoted
From: Bartosz Golaszewski <redacted>

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 <redacted>
---
 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help