Commit 833c086f authored by Ahmad Fatoum's avatar Ahmad Fatoum Committed by Bartosz Golaszewski
Browse files

gpio: TODO: add item about GPIO drivers reading struct gpio_chip::base

drivers/pinctrl/pinctrl-at91.c uses struct gpio_chip::base to find out
which bit to set in a register:

  dev_dbg(npct->dev, "enable pin %u as GPIO\n", offset);

  mask = 1 << (offset - chip->base);

This adds a non-obvious dependency on the global numberspace from the
GPIO driver itself, even if all consumers use the descriptor API.

More such instances may exist and will need to be fixed in the quest for
removal of the global numberspace, so add a reminder about it to the
TODO list.

Link: https://lore.kernel.org/all/1d00c056-3d61-4c22-bedd-3bae0bf1ddc4@pengutronix.de/


Suggested-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: default avatarAhmad Fatoum <a.fatoum@pengutronix.de>
Link: https://lore.kernel.org/r/20250507-gpio-chip-base-readback-v1-1-ade56e38480b@pengutronix.de


Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
parent 0a45c1a0
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -44,6 +44,13 @@ Work items:
  to a machine description such as device tree, ACPI or fwnode that
  implicitly does not use global GPIO numbers.

- Fix drivers to not read back struct gpio_chip::base. Some drivers do
  that and would be broken by attempts to poison it or make it dynamic.
  Example in AT91 pinctrl driver:
  https://lore.kernel.org/all/1d00c056-3d61-4c22-bedd-3bae0bf1ddc4@pengutronix.de/
  This particular driver is also DT-only, so with the above fixed, the
  base can be made dynamic (set to -1) if CONFIG_GPIO_SYSFS is disabled.

- When this work is complete (will require some of the items in the
  following ongoing work as well) we can delete the old global
  numberspace accessors from <linux/gpio.h> and eventually delete