1# 2# GPIO infrastructure and drivers 3# 4 5menu "GPIO Support" 6 7config DM_GPIO 8 bool "Enable Driver Model for GPIO drivers" 9 depends on DM 10 help 11 Enable driver model for GPIO access. The standard GPIO 12 interface (gpio_get_value(), etc.) is then implemented by 13 the GPIO uclass. Drivers provide methods to query the 14 particular GPIOs that they provide. The uclass interface 15 is defined in include/asm-generic/gpio.h. 16 17config GPIO_HOG 18 bool "Enable GPIO hog support" 19 depends on DM_GPIO 20 default n 21 help 22 Enable gpio hog support 23 The GPIO chip may contain GPIO hog definitions. GPIO hogging 24 is a mechanism providing automatic GPIO request and config- 25 uration as part of the gpio-controller's driver probe function. 26 27config ALTERA_PIO 28 bool "Altera PIO driver" 29 depends on DM_GPIO 30 help 31 Select this to enable PIO for Altera devices. Please find 32 details on the "Embedded Peripherals IP User Guide" of Altera. 33 34config BCM6345_GPIO 35 bool "BCM6345 GPIO driver" 36 depends on DM_GPIO && (ARCH_BMIPS || ARCH_BCM6858 || ARCH_BCM63158) 37 help 38 This driver supports the GPIO banks on BCM6345 SoCs. 39 40config DWAPB_GPIO 41 bool "DWAPB GPIO driver" 42 depends on DM && DM_GPIO 43 default n 44 help 45 Support for the Designware APB GPIO driver. 46 47config AT91_GPIO 48 bool "AT91 PIO GPIO driver" 49 depends on DM_GPIO 50 default n 51 help 52 Say yes here to select AT91 PIO GPIO driver. AT91 PIO 53 controller manages up to 32 fully programmable input/output 54 lines. Each I/O line may be dedicated as a general-purpose 55 I/O or be assigned to a function of an embedded peripheral. 56 The assignment to a function of an embedded peripheral is 57 the responsibility of AT91 Pinctrl driver. This driver is 58 responsible for the general-purpose I/O. 59 60config ATMEL_PIO4 61 bool "ATMEL PIO4 driver" 62 depends on DM_GPIO 63 default n 64 help 65 Say yes here to support the Atmel PIO4 driver. 66 The PIO4 is new version of Atmel PIO controller, which manages 67 up to 128 fully programmable input/output lines. Each I/O line 68 may be dedicated as a general purpose I/O or be assigned to 69 a function of an embedded peripheral. 70 71config DA8XX_GPIO 72 bool "DA8xx GPIO Driver" 73 help 74 This driver supports the DA8xx GPIO controller 75 76config INTEL_BROADWELL_GPIO 77 bool "Intel Broadwell GPIO driver" 78 depends on DM 79 help 80 This driver supports Broadwell U devices which have an expanded 81 GPIO feature set. The difference is large enough to merit a separate 82 driver from the common Intel ICH6 driver. It supports a total of 83 95 GPIOs which can be configured from the device tree. 84 85config INTEL_ICH6_GPIO 86 bool "Intel ICH6 compatible legacy GPIO driver" 87 depends on DM_GPIO 88 help 89 Say yes here to select Intel ICH6 compatible legacy GPIO driver. 90 91config IMX_RGPIO2P 92 bool "i.MX7ULP RGPIO2P driver" 93 depends on DM 94 default n 95 help 96 This driver supports i.MX7ULP Rapid GPIO2P controller. 97 98config HSDK_CREG_GPIO 99 bool "HSDK CREG GPIO griver" 100 depends on DM_GPIO 101 default n 102 help 103 This driver supports CREG GPIOs on Synopsys HSDK SOC. 104 105config LPC32XX_GPIO 106 bool "LPC32XX GPIO driver" 107 depends on DM 108 default n 109 help 110 Support for the LPC32XX GPIO driver. 111 112config MSCC_SGPIO 113 bool "Microsemi Serial GPIO driver" 114 depends on DM_GPIO && SOC_VCOREIII 115 help 116 Support for the VCoreIII SoC serial GPIO device. By using a 117 serial interface, the SIO controller significantly extends 118 the number of available GPIOs with a minimum number of 119 additional pins on the device. The primary purpose of the 120 SIO controller is to connect control signals from SFP 121 modules and to act as an LED controller. 122 123config MSM_GPIO 124 bool "Qualcomm GPIO driver" 125 depends on DM_GPIO 126 default n 127 help 128 Support GPIO controllers on Qualcomm Snapdragon family of SoCs. 129 This controller have single bank (default name "soc"), every 130 gpio has it's own set of registers. 131 Only simple GPIO operations are supported (get/set, change of 132 direction and checking pin function). 133 Supported devices: 134 - APQ8016 135 - MSM8916 136 137config MXC_GPIO 138 bool "Freescale/NXP MXC GPIO driver" 139 help 140 Support GPIO controllers on various i.MX platforms 141 142config MXS_GPIO 143 bool "Freescale/NXP MXS GPIO driver" 144 help 145 Support GPIO controllers on i.MX23 and i.MX28 platforms 146 147config OMAP_GPIO 148 bool "TI OMAP GPIO driver" 149 depends on ARCH_OMAP2PLUS 150 default y 151 help 152 Support GPIO controllers on the TI OMAP3/4/5 and related (such as 153 AM335x/AM43xx/AM57xx/DRA7xx/etc) families of SoCs. 154 155config CMD_PCA953X 156 bool "Enable the pca953x command" 157 help 158 Deprecated: This should be converted to driver model. 159 160 This command provides access to a pca953x GPIO device using the 161 legacy GPIO interface. Several subcommands are provided which mirror 162 the standard 'gpio' command. It should use that instead. 163 164config PM8916_GPIO 165 bool "Qualcomm PM8916 PMIC GPIO/keypad driver" 166 depends on DM_GPIO && PMIC_PM8916 167 help 168 Support for GPIO pins and power/reset buttons found on 169 Qualcomm PM8916 PMIC. 170 Default name for GPIO bank is "pm8916". 171 Power and reset buttons are placed in "pm8916_key" bank and 172 have gpio numbers 0 and 1 respectively. 173 174config PCF8575_GPIO 175 bool "PCF8575 I2C GPIO Expander driver" 176 depends on DM_GPIO && DM_I2C 177 help 178 Support for PCF8575 I2C 16-bit GPIO expander. Most of these 179 chips are from NXP and TI. 180 181config RCAR_GPIO 182 bool "Renesas RCar GPIO driver" 183 depends on DM_GPIO && ARCH_RMOBILE 184 help 185 This driver supports the GPIO banks on Renesas RCar SoCs. 186 187config RZA1_GPIO 188 bool "Renesas RZ/A1 GPIO driver" 189 depends on DM_GPIO && RZA1 190 help 191 This driver supports the GPIO banks on Renesas RZ/A1 R7S72100 SoCs. 192 193config ROCKCHIP_GPIO 194 bool "Rockchip GPIO driver" 195 depends on DM_GPIO 196 help 197 Support GPIO access on Rockchip SoCs. The GPIOs are arranged into 198 a number of banks (different for each SoC type) each with 32 GPIOs. 199 The GPIOs for a device are defined in the device tree with one node 200 for each bank. 201 202config SANDBOX_GPIO 203 bool "Enable sandbox GPIO driver" 204 depends on SANDBOX && DM && DM_GPIO 205 help 206 This driver supports some simulated GPIOs which can be adjusted 207 using 'back door' functions like sandbox_gpio_set_value(). Then the 208 GPIOs can be inspected through the normal get_get_value() 209 interface. The purpose of this is to allow GPIOs to be used as 210 normal in sandbox, perhaps with test code actually driving the 211 behaviour of those GPIOs. 212 213config SANDBOX_GPIO_COUNT 214 int "Number of sandbox GPIOs" 215 depends on SANDBOX_GPIO 216 default 128 217 help 218 The sandbox driver can support any number of GPIOs. Generally these 219 are specified using the device tree. But you can also have a number 220 of 'anonymous' GPIOs that do not belong to any device or bank. 221 Select a suitable value depending on your needs. 222 223config SUNXI_GPIO 224 bool "Allwinner GPIO driver" 225 depends on ARCH_SUNXI 226 help 227 Support the GPIO device in Allwinner SoCs. 228 229config XILINX_GPIO 230 bool "Xilinx GPIO driver" 231 depends on DM_GPIO 232 help 233 This config enable the Xilinx GPIO driver for Microblaze. 234 235config CMD_TCA642X 236 bool "tca642x - Command to access tca642x state" 237 help 238 DEPRECATED - This needs conversion to driver model 239 240 This provides a way to looking at the pin state of this device. 241 This mirrors the 'gpio' command and that should be used in preference 242 to custom code. 243 244config TEGRA_GPIO 245 bool "Tegra20..210 GPIO driver" 246 depends on DM_GPIO 247 help 248 Support for the GPIO controller contained in NVIDIA Tegra20 through 249 Tegra210. 250 251config TEGRA186_GPIO 252 bool "Tegra186 GPIO driver" 253 depends on DM_GPIO 254 help 255 Support for the GPIO controller contained in NVIDIA Tegra186. This 256 covers both the "main" and "AON" controller instances, even though 257 they have slightly different register layout. 258 259config GPIO_UNIPHIER 260 bool "UniPhier GPIO" 261 depends on ARCH_UNIPHIER 262 help 263 Say yes here to support UniPhier GPIOs. 264 265config VYBRID_GPIO 266 bool "Vybrid GPIO driver" 267 depends on DM 268 default n 269 help 270 Say yes here to support Vybrid vf610 GPIOs. 271 272config PIC32_GPIO 273 bool "Microchip PIC32 GPIO driver" 274 depends on DM_GPIO && MACH_PIC32 275 default y 276 help 277 Say yes here to support Microchip PIC32 GPIOs. 278 279config STM32_GPIO 280 bool "ST STM32 GPIO driver" 281 depends on DM_GPIO && (STM32 || ARCH_STM32MP) 282 default y 283 help 284 Device model driver support for STM32 GPIO controller. It should be 285 usable on many stm32 families like stm32f4/f7/h7 and stm32mp1. 286 Tested on STM32F7. 287 288config SIFIVE_GPIO 289 bool "SiFive GPIO driver" 290 depends on DM_GPIO 291 help 292 Device model driver for GPIO controller present in SiFive FU540 SoC. This 293 driver enables GPIO interface on HiFive Unleashed A00 board. 294 295config MVEBU_GPIO 296 bool "Marvell MVEBU GPIO driver" 297 depends on DM_GPIO && ARCH_MVEBU 298 default y 299 help 300 Say yes here to support Marvell MVEBU (Armada XP/38x) GPIOs. 301 302config ZYNQ_GPIO 303 bool "Zynq GPIO driver" 304 depends on DM_GPIO && (ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL) 305 default y 306 help 307 Supports GPIO access on Zynq SoC. 308 309config DM_74X164 310 bool "74x164 serial-in/parallel-out 8-bits shift register" 311 depends on DM_GPIO 312 help 313 Driver for 74x164 compatible serial-in/parallel-out 8-outputs 314 shift registers, such as 74lv165, 74hc595. 315 This driver can be used to provide access to more gpio outputs. 316 317config DM_PCA953X 318 bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports" 319 depends on DM_GPIO 320 help 321 Say yes here to provide access to several register-oriented 322 SMBus I/O expanders, made mostly by NXP or TI. Compatible 323 models include: 324 325 4 bits: pca9536, pca9537 326 327 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554, 328 pca9556, pca9557, pca9574, tca6408, xra1202 329 330 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575, 331 tca6416 332 333 24 bits: tca6424 334 335 40 bits: pca9505, pca9698 336 337 Now, max 24 bits chips and PCA953X compatible chips are 338 supported 339 340config SPL_DM_PCA953X 341 bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports in SPL" 342 depends on DM_GPIO 343 help 344 Say yes here to provide access to several register-oriented 345 SMBus I/O expanders, made mostly by NXP or TI. Compatible 346 models include: 347 348 4 bits: pca9536, pca9537 349 350 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554, 351 pca9556, pca9557, pca9574, tca6408, xra1202 352 353 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575, 354 tca6416 355 356 24 bits: tca6424 357 358 40 bits: pca9505, pca9698 359 360 Now, max 24 bits chips and PCA953X compatible chips are 361 supported 362 363config MPC8XXX_GPIO 364 bool "Freescale MPC8XXX GPIO driver" 365 depends on DM_GPIO 366 help 367 This driver supports the built-in GPIO controller of MPC8XXX CPUs. 368 Each GPIO bank is identified by its own entry in the device tree, 369 i.e. 370 371 gpio-controller@fc00 { 372 #gpio-cells = <2>; 373 compatible = "fsl,pq3-gpio"; 374 reg = <0xfc00 0x100> 375 } 376 377 By default, each bank is assumed to have 32 GPIOs, but the ngpios 378 setting is honored, so the number of GPIOs for each bank is 379 configurable to match the actual GPIO count of the SoC (e.g. the 380 32/32/23 banks of the P1022 SoC). 381 382 Aside from the standard functions of input/output mode, and output 383 value setting, the open-drain feature, which can configure individual 384 GPIOs to work as open-drain outputs, is supported. 385 386config MT7621_GPIO 387 bool "MediaTek MT7621 GPIO driver" 388 depends on DM_GPIO && SOC_MT7628 389 default y 390 help 391 Say yes here to support MediaTek MT7621 compatible GPIOs. 392 393endmenu 394