u-boot/drivers/gpio
Sergiu Moga 2ed96a87d2 pinctrl: at91-pio4: Bind GPIO driver to the pinctrl DT node
This has been done in order to align the DT of U-Boot with the DT
of Linux. In Linux, a phandle from a '-gpio' DT property is linked
to the pinctrl driver, a single driver that handles both pinctrl
settings and offers GPIO API to callers. On the other hand,
U-Boot redirects such phandle to a corresponding UCLASS_GPIO
driver, because U-Boot offers two different types of drivers
in this case: UCLASS_PINCTRL which handles pin functions and
UCLASS_GPIO which handles gpio requests as a gpio provider.
Due to this, we have two drivers in Uboot, but the Devicetree
has a single node. Thus, just one of the drivers can be probed
for the DT node during platform initialization, before relocation.

Our previous solution in U-Boot was to have a different devicetree:
the gpio node has a subnode for the pinctrl driver, which
is not compliant with Linux ABI. Furthermore, our documentation
for this type of nodes mentions no such gpio compatible.

After this patch, we can no longer add nodes with a gpio
compatible in the DT. Thus, in order to link the pinctrl driver to
the gpio one, a hook to the bind method of the former in U-Boot has
been added and the GPIO related compatibles have been removed to
avoid conflict when compatibles are enumerated and bound to drivers
during platform start before relocation. The bind method will attach
the GPIO driver to the pinctrl DT node so that every phandle coming
from '-gpio' DT properties will be redirected to a valid driver
attached to the pinctrl DT node.

Signed-off-by: Sergiu Moga <sergiu.moga@microchip.com>
2022-09-19 09:51:04 +03: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 pinctrl: at91-pio4: Bind GPIO driver to the pinctrl DT node 2022-09-19 09:51:04 +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 pinctrl: Add third argument label for pinctrl_gpio_request() function 2022-07-28 15:17:45 +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: Fix pin's status display for pin with GPIOF_UNUSED function 2022-09-15 09:55:30 -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 gpio: rgpio2p: Enhance reading of GPIO pin value 2022-05-23 11:37:58 +02: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 pmic: Convert pm8916 driver to a generic Qcom PMIC driver 2022-08-26 10:55:45 -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 pmic: Convert pm8916 driver to a generic Qcom PMIC driver 2022-08-26 10:55:45 -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 arm: dts: qcom: Sync pinctrl DT nodes with Linux bindings 2022-08-26 10:55:46 -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: mvebu_gpio: Set bank name to mvebu%d 2022-07-28 15:17:46 +02: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: support pcal6524 2022-07-26 11:29:00 +02: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
qcom_pmic_gpio.c gpio: qcom_pmic: Add support for GPIO LV/MV subtype 2022-08-26 10:55:46 -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 gpio: sandbox: Add GPIOD_IS_AF for gpio configured in alternate function 2022-09-15 09:55:30 -04: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
turris_omnia_mcu.c gpio: turris_omnia_mcu: Fix usage of CMD_EXT_CONTROL 2022-08-09 08:57:23 +02: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