From c4a834840596c8b9e388d430154959390f9f96e4 Mon Sep 17 00:00:00 2001 From: Bartosz Golaszewski Date: Tue, 1 Jul 2025 13:49:36 +0200 Subject: [PATCH] gpio: mmio: get chip label and GPIO base from device properties Ahead of removing struct bgpio_pdata support from the gpio-mmio generic module, let's add support for getting the relevant values from generic device properties. "label" is a semi-standardized property in some GPIO drivers so let's go with it. There's no standard "base" property, so let's use the name "gpio-mmio,base" to tie it to this driver specifically. The number of GPIOs will be retrieved using gpiochip_get_ngpios() so there's no need to look it up in the software node. Reviewed-by: Linus Walleij Link: https://lore.kernel.org/r/20250701-gpio-mmio-pdata-v2-2-ebf34d273497@linaro.org Signed-off-by: Bartosz Golaszewski --- drivers/gpio/gpio-mmio.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/gpio/gpio-mmio.c b/drivers/gpio/gpio-mmio.c index 5bb5112042149..7d062f9a2c6a8 100644 --- a/drivers/gpio/gpio-mmio.c +++ b/drivers/gpio/gpio-mmio.c @@ -715,6 +715,9 @@ MODULE_DEVICE_TABLE(of, bgpio_of_match); static struct bgpio_pdata *bgpio_parse_fw(struct device *dev, unsigned long *flags) { struct bgpio_pdata *pdata; + const char *label; + unsigned int base; + int ret; if (!dev_fwnode(dev)) return NULL; @@ -731,6 +734,18 @@ static struct bgpio_pdata *bgpio_parse_fw(struct device *dev, unsigned long *fla if (device_property_read_bool(dev, "no-output")) *flags |= BGPIOF_NO_OUTPUT; + ret = device_property_read_string(dev, "label", &label); + if (!ret) + pdata->label = label; + + /* + * This property *must not* be used in device-tree sources, it's only + * meant to be passed to the driver from board files and MFD core. + */ + ret = device_property_read_u32(dev, "gpio-mmio,base", &base); + if (!ret && base <= INT_MAX) + pdata->base = base; + return pdata; } -- 2.47.2