2021-07-27 14:54:04

by Sergio Paracuellos

[permalink] [raw]
Subject: [PATCH v2 0/3] gpiolib: convert 'devprop_gpiochip_set_names' to support multiple gpiochip per device

There are some unfortunate cases where the DT representation
of the device and the Linux internal representation differs.
Such drivers for devices are forced to implement a custom function
to avoid the core code 'devprop_gpiochip_set_names' to be executed
since in any other case every gpiochip inside will got repeated
names through its internal gpiochip banks. To avoid this antipattern
this changes are introduced trying to adapt core 'devprop_gpiochip_set_names'
to get a correct behaviour for every single situation.

This series introduces a new 'offset' field in the gpiochip structure
that can be used for those unfortunate drivers that must define multiple
gpiochips per device.

Drivers affected by this situation are also updated. These are
'gpio-mt7621' and 'gpio-brcmstb'.

Motivation for this series available at [0].

Thanks in advance for your feedback.

Best regards,
Sergio Paracuellos

Changes in v2:
- Address Gregory Fong comments in v1 of the series [1].
- Collect Andy Shevchenko Reviewed-by for the series.
- Collect Gregory Fong Acked-by for PATCH 3/3.

[0]: https://lkml.org/lkml/2021/6/26/198
[1]: https://lkml.org/lkml/2021/7/8/47

Sergio Paracuellos (3):
gpiolib: convert 'devprop_gpiochip_set_names' to support multiple
gpiochip banks per device
gpio: mt7621: support gpio-line-names property
gpio: brcmstb: remove custom 'brcmstb_gpio_set_names'

drivers/gpio/gpio-brcmstb.c | 45 +------------------------------------
drivers/gpio/gpio-mt7621.c | 1 +
drivers/gpio/gpiolib.c | 33 ++++++++++++++++++++++-----
include/linux/gpio/driver.h | 4 ++++
4 files changed, 34 insertions(+), 49 deletions(-)

--
2.25.1



2021-07-27 14:54:18

by Sergio Paracuellos

[permalink] [raw]
Subject: [PATCH v2 2/3] gpio: mt7621: support gpio-line-names property

This driver uses multiple gpiochip banks per device.
To support 'gpio-line-names' along the banks 'offset'
for each bank must be set explicitly.

Reviewed-by: Andy Shevchenko <[email protected]>
Signed-off-by: Sergio Paracuellos <[email protected]>
---
drivers/gpio/gpio-mt7621.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/gpio/gpio-mt7621.c b/drivers/gpio/gpio-mt7621.c
index 82fb20dca53a..5854a9343491 100644
--- a/drivers/gpio/gpio-mt7621.c
+++ b/drivers/gpio/gpio-mt7621.c
@@ -241,6 +241,7 @@ mediatek_gpio_bank_probe(struct device *dev,
if (!rg->chip.label)
return -ENOMEM;

+ rg->chip.offset = bank * MTK_BANK_WIDTH;
rg->irq_chip.name = dev_name(dev);
rg->irq_chip.parent_device = dev;
rg->irq_chip.irq_unmask = mediatek_gpio_irq_unmask;
--
2.25.1