u-boot/drivers/gpio
Patrice Chotard 427f452cb9 gpio: stm32_gpio: Rework GPIO hole management
On some STM32 SoC's package, GPIO bank may have hole in their GPIO bank
Example:
  If GPIO bank have 16 GPIO pins [0-15].
  In particular SoC's package case, some GPIO bank can have less GPIO pins:
    - [0-10] => 11 pins;
    - [2-7] => 6 pins.

Commit dbf928dd26 ("gpio: stm32f7: Add gpio bank holes management")
proposed a first implementation by not counting GPIO "inside" hole. GPIO
are not displaying correctly using gpio or pinmux command when GPIO holes
are located at the beginning of GPIO bank.

To simplify, consider that all GPIO have 16 GPIO and use the gpio_ranges
struct to indicate if a GPIO is mapped or not. GPIO uclass offers several
GPIO functions ("input", "output", "unused", "unknown" and "func"), use
"unknown" GPIO function to indicate that a GPIO is not mapped.

stm32_offset_to_index() is no more needed and removed.

This must be reflected using the "gpio" command to indicate to user
that a particular GPIO is not mapped (marked as "unknown") as shown below:

Example for a 16 pins GPIO bank with the [2-7] mapping (only 6 pins
mapped):
GPIOI0          : unknown
GPIOI1          : unknown
GPIOI2          : analog
GPIOI3          : analog
GPIOI4          : alt function 0 push-pull pull-down
GPIOI5          : alt function 0 push-pull pull-down
GPIOI6          : alt function 0 push-pull pull-down
GPIOI7          : analog
GPIOI8          : unknown
GPIOI9          : unknown
GPIOI10         : unknown
GPIOI11         : unknown
GPIOI12         : unknown
GPIOI13         : unknown
GPIOI14         : unknown
GPIOI15         : unknown

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2022-05-10 13:54:48 +02:00
..
74x164_gpio.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
adi_gpio2.c common: Drop linux/bug.h from common header 2020-05-18 21:19:23 -04:00
altera_pio.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
at91_gpio.c dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
atmel_pio4.c gpio: atmel_pio4: add support for sama7g5 pio4 version with 5 banks 2021-04-19 10:38:49 +03:00
axp_gpio.c sunxi: Clean up inclusions of asm/arch/gpio.h 2021-10-11 10:46:44 +01:00
bcm2835_gpio.c dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
bcm6345_gpio.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
cortina_gpio.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
da8xx_gpio.c gpio: da8xx_gpio: Fix gpio name with address 2022-01-16 08:31:03 -05:00
da8xx_gpio.h dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
dwapb_gpio.c dm: Use access methods for dev/uclass private data 2021-01-05 12:24:40 -07:00
gpio-aspeed.c gpio: aspeed: Fix incorrect offset of read back register. 2022-04-19 14:51:11 -04:00
gpio-fxl6408.c GPIO: fxl6408: Add support for FXL6408 GPIO expander 2022-02-05 13:38:39 +01:00
gpio-rcar.c gpio: renesas: Handle R8A779A0 V3U INEN register 2021-06-24 20:22:17 +02:00
gpio-rza1.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
gpio-uclass.c gpio: Enable hogging support in SPL 2022-04-08 22:51:48 -04:00
gpio-uniphier.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
gpio_slg7xl45106.c gpio: slg7xl45106: Update gpio desc flags from DT 2022-04-05 15:13:13 +02:00
hi6220_gpio.c WS cleanup: remove excessive empty lines 2021-09-30 08:08:56 -04:00
hsdk-creg-gpio.c dm: treewide: Rename 'platdata' variables to just 'plat' 2020-12-13 16:51:08 -07:00
imx_rgpio2p.c dm: Rename U_BOOT_DEVICE() to U_BOOT_DRVINFO() 2021-01-05 12:26:35 -07:00
intel_broadwell_gpio.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
intel_gpio.c treewide: Use OF_REAL instead of !OF_PLATDATA 2021-09-25 09:46:15 -06:00
intel_ich6_gpio.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
iproc_gpio.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
Kconfig gpio: npcm: Add support for Nuvoton NPCM SoCs 2022-05-05 09:29:58 -04:00
kona_gpio.c dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
kw_gpio.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
lpc32xx_gpio.c dm: Use access methods for dev/uclass private data 2021-01-05 12:24:40 -07:00
Makefile gpio: npcm: Add support for Nuvoton NPCM SoCs 2022-05-05 09:29:58 -04:00
max7320_gpio.c drivers/gpio: add support for MAX7320 i2c i/o expander 2021-10-19 11:25:24 -04:00
mcp230xx_gpio.c gpio: mcp230xx: Introduce new driver 2021-08-22 10:53:14 +02:00
mpc8xxx_gpio.c gpio: mpc8xxx: Support controller register physical address beyond 32-bit 2021-03-05 10:25:43 +05:30
mpc83xx_gpio.c dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
mpc83xx_spisel_boot.c dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
mscc_sgpio.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
msm_gpio.c pinctrl: qcom: add pinctrl and gpio drivers for SDM845 SoC 2021-10-31 08:46:44 -04:00
mt7620_gpio.c gpio: add GPIO controller driver for MediaTek MT7620 SoC 2021-01-24 21:39:26 +01:00
mt7621_gpio.c dm: Use access methods for dev/uclass private data 2021-01-05 12:24:40 -07:00
mvebu_gpio.c gpio: Update for new sequence numbers 2020-12-18 20:32:21 -07:00
mvgpio.c dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
mvgpio.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mxc_gpio.c arm: Remove zmx25 board and ARCH_MX25 2021-10-01 21:08:18 -04:00
mxs_gpio.c treewide: Simply conditions with the new OF_REAL 2021-09-25 09:46:15 -06:00
nmk_gpio.c gpio: Add driver for Nomadik GPIO 2021-07-14 16:47:56 -04:00
npcm_gpio.c gpio: npcm: Add support for Nuvoton NPCM SoCs 2022-05-05 09:29:58 -04:00
nx_gpio.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
octeon_gpio.c pci: Add mask parameter to dm_pci_map_bar() 2022-05-03 18:33:29 -04:00
omap_gpio.c treewide: Use OF_REAL instead of !OF_PLATDATA 2021-09-25 09:46:15 -06:00
pca953x.c global: Convert simple_strtoul() with hex to hextoul() 2021-08-02 13:32:14 -04:00
pca953x_gpio.c gpio: pca953x_gpio: add PCA957X support 2022-04-08 22:51:48 -04:00
pca9698.c dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
pcf8575_gpio.c i2c: pcf8575: Add support for 8 bit I2C IO expanders (like pca8574) 2021-07-23 07:13:25 -04:00
pic32_gpio.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pm8916_gpio.c pinctrl: qcom: add pinctrl and gpio drivers for SDM845 SoC 2021-10-31 08:46:44 -04:00
rk_gpio.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
s5p_gpio.c SoC: exynos: add support for exynos 78x0 2021-10-31 11:25:39 -04:00
sandbox.c dm: gpio: Add of-platdata support 2021-09-25 09:46:15 -06:00
sandbox_test.c dm: gpio: Add of-platdata support 2021-09-25 09:46:15 -06:00
sh_pfc.c common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
sifive-gpio.c gpio: sifive: Fix -Wint-to-pointer-cast warning 2021-10-20 10:59:09 +08:00
sl28cpld-gpio.c gpio: add sl28cpld driver 2022-02-28 11:59:35 +05:30
stm32_gpio.c gpio: stm32_gpio: Rework GPIO hole management 2022-05-10 13:54:48 +02:00
stm32_gpio_priv.h gpio: stm32_gpio: Rework GPIO hole management 2022-05-10 13:54:48 +02:00
sunxi_gpio.c sunxi: pinctrl: Create the driver skeleton 2022-04-04 23:23:50 +01:00
tca642x.c global: Convert simple_strtoul() with decimal to dectoul() 2021-08-02 13:32:14 -04:00
tegra186_gpio.c dm: Use access methods for dev/uclass private data 2021-01-05 12:24:40 -07:00
tegra186_gpio_priv.h common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
tegra_gpio.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
vybrid_gpio.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
xilinx_gpio.c dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
zynq_gpio.c dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
zynqmp_gpio_modepin.c zynqmp: gpio: Add support for zynqmp gpio modepin driver 2022-01-05 10:22:02 +01:00