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 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 ASPEED_GPIO 72 bool "Aspeed GPIO Driver" 73 help 74 This driver supports the Aspeed GPIO controller 75 76config DA8XX_GPIO 77 bool "DA8xx GPIO Driver" 78 help 79 This driver supports the DA8xx GPIO controller 80 81config INTEL_BROADWELL_GPIO 82 bool "Intel Broadwell GPIO driver" 83 depends on DM 84 help 85 This driver supports Broadwell U devices which have an expanded 86 GPIO feature set. The difference is large enough to merit a separate 87 driver from the common Intel ICH6 driver. It supports a total of 88 95 GPIOs which can be configured from the device tree. 89 90config INTEL_ICH6_GPIO 91 bool "Intel ICH6 compatible legacy GPIO driver" 92 depends on DM_GPIO 93 help 94 Say yes here to select Intel ICH6 compatible legacy GPIO driver. 95 96config IMX_RGPIO2P 97 bool "i.MX7ULP RGPIO2P driver" 98 depends on DM 99 default n 100 help 101 This driver supports i.MX7ULP Rapid GPIO2P controller. 102 103config HSDK_CREG_GPIO 104 bool "HSDK CREG GPIO griver" 105 depends on DM_GPIO 106 default n 107 help 108 This driver supports CREG GPIOs on Synopsys HSDK SOC. 109 110config LPC32XX_GPIO 111 bool "LPC32XX GPIO driver" 112 depends on DM 113 default n 114 help 115 Support for the LPC32XX GPIO driver. 116 117config MSCC_SGPIO 118 bool "Microsemi Serial GPIO driver" 119 depends on DM_GPIO && SOC_VCOREIII 120 help 121 Support for the VCoreIII SoC serial GPIO device. By using a 122 serial interface, the SIO controller significantly extends 123 the number of available GPIOs with a minimum number of 124 additional pins on the device. The primary purpose of the 125 SIO controller is to connect control signals from SFP 126 modules and to act as an LED controller. 127 128config MSM_GPIO 129 bool "Qualcomm GPIO driver" 130 depends on DM_GPIO 131 default n 132 help 133 Support GPIO controllers on Qualcomm Snapdragon family of SoCs. 134 This controller have single bank (default name "soc"), every 135 gpio has it's own set of registers. 136 Only simple GPIO operations are supported (get/set, change of 137 direction and checking pin function). 138 Supported devices: 139 - APQ8016 140 - MSM8916 141 142config MXC_GPIO 143 bool "Freescale/NXP MXC GPIO driver" 144 help 145 Support GPIO controllers on various i.MX 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 ROCKCHIP_GPIO 188 bool "Rockchip GPIO driver" 189 depends on DM_GPIO 190 help 191 Support GPIO access on Rockchip SoCs. The GPIOs are arranged into 192 a number of banks (different for each SoC type) each with 32 GPIOs. 193 The GPIOs for a device are defined in the device tree with one node 194 for each bank. 195 196config SANDBOX_GPIO 197 bool "Enable sandbox GPIO driver" 198 depends on SANDBOX && DM && DM_GPIO 199 help 200 This driver supports some simulated GPIOs which can be adjusted 201 using 'back door' functions like sandbox_gpio_set_value(). Then the 202 GPIOs can be inspected through the normal get_get_value() 203 interface. The purpose of this is to allow GPIOs to be used as 204 normal in sandbox, perhaps with test code actually driving the 205 behaviour of those GPIOs. 206 207config SANDBOX_GPIO_COUNT 208 int "Number of sandbox GPIOs" 209 depends on SANDBOX_GPIO 210 default 128 211 help 212 The sandbox driver can support any number of GPIOs. Generally these 213 are specified using the device tree. But you can also have a number 214 of 'anonymous' GPIOs that do not belong to any device or bank. 215 Select a suitable value depending on your needs. 216 217config XILINX_GPIO 218 bool "Xilinx GPIO driver" 219 depends on DM_GPIO 220 help 221 This config enable the Xilinx GPIO driver for Microblaze. 222 223config CMD_TCA642X 224 bool "tca642x - Command to access tca642x state" 225 help 226 DEPRECATED - This needs conversion to driver model 227 228 This provides a way to looking at the pin state of this device. 229 This mirrors the 'gpio' command and that should be used in preference 230 to custom code. 231 232config TEGRA_GPIO 233 bool "Tegra20..210 GPIO driver" 234 depends on DM_GPIO 235 help 236 Support for the GPIO controller contained in NVIDIA Tegra20 through 237 Tegra210. 238 239config TEGRA186_GPIO 240 bool "Tegra186 GPIO driver" 241 depends on DM_GPIO 242 help 243 Support for the GPIO controller contained in NVIDIA Tegra186. This 244 covers both the "main" and "AON" controller instances, even though 245 they have slightly different register layout. 246 247config GPIO_UNIPHIER 248 bool "UniPhier GPIO" 249 depends on ARCH_UNIPHIER 250 help 251 Say yes here to support UniPhier GPIOs. 252 253config VYBRID_GPIO 254 bool "Vybrid GPIO driver" 255 depends on DM 256 default n 257 help 258 Say yes here to support Vybrid vf610 GPIOs. 259 260config PIC32_GPIO 261 bool "Microchip PIC32 GPIO driver" 262 depends on DM_GPIO && MACH_PIC32 263 default y 264 help 265 Say yes here to support Microchip PIC32 GPIOs. 266 267config STM32F7_GPIO 268 bool "ST STM32 GPIO driver" 269 depends on DM_GPIO && (STM32 || ARCH_STM32MP) 270 default y 271 help 272 Device model driver support for STM32 GPIO controller. It should be 273 usable on many stm32 families like stm32f4 & stm32H7. 274 Tested on STM32F7. 275 276config MVEBU_GPIO 277 bool "Marvell MVEBU GPIO driver" 278 depends on DM_GPIO && ARCH_MVEBU 279 default y 280 help 281 Say yes here to support Marvell MVEBU (Armada XP/38x) GPIOs. 282 283config ZYNQ_GPIO 284 bool "Zynq GPIO driver" 285 depends on DM_GPIO && (ARCH_ZYNQ || ARCH_ZYNQMP) 286 default y 287 help 288 Supports GPIO access on Zynq SoC. 289 290config DM_74X164 291 bool "74x164 serial-in/parallel-out 8-bits shift register" 292 depends on DM_GPIO 293 help 294 Driver for 74x164 compatible serial-in/parallel-out 8-outputs 295 shift registers, such as 74lv165, 74hc595. 296 This driver can be used to provide access to more gpio outputs. 297 298config DM_PCA953X 299 bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports" 300 depends on DM_GPIO 301 help 302 Say yes here to provide access to several register-oriented 303 SMBus I/O expanders, made mostly by NXP or TI. Compatible 304 models include: 305 306 4 bits: pca9536, pca9537 307 308 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554, 309 pca9556, pca9557, pca9574, tca6408, xra1202 310 311 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575, 312 tca6416 313 314 24 bits: tca6424 315 316 40 bits: pca9505, pca9698 317 318 Now, max 24 bits chips and PCA953X compatible chips are 319 supported 320 321config SPL_DM_PCA953X 322 bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports in SPL" 323 depends on DM_GPIO 324 help 325 Say yes here to provide access to several register-oriented 326 SMBus I/O expanders, made mostly by NXP or TI. Compatible 327 models include: 328 329 4 bits: pca9536, pca9537 330 331 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554, 332 pca9556, pca9557, pca9574, tca6408, xra1202 333 334 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575, 335 tca6416 336 337 24 bits: tca6424 338 339 40 bits: pca9505, pca9698 340 341 Now, max 24 bits chips and PCA953X compatible chips are 342 supported 343 344config MPC8XXX_GPIO 345 bool "Freescale MPC8XXX GPIO driver" 346 depends on DM_GPIO 347 help 348 This driver supports the built-in GPIO controller of MPC8XXX CPUs. 349 Each GPIO bank is identified by its own entry in the device tree, 350 i.e. 351 352 gpio-controller@fc00 { 353 #gpio-cells = <2>; 354 compatible = "fsl,pq3-gpio"; 355 reg = <0xfc00 0x100> 356 } 357 358 By default, each bank is assumed to have 32 GPIOs, but the ngpios 359 setting is honored, so the number of GPIOs for each bank is 360 configurable to match the actual GPIO count of the SoC (e.g. the 361 32/32/23 banks of the P1022 SoC). 362 363 Aside from the standard functions of input/output mode, and output 364 value setting, the open-drain feature, which can configure individual 365 GPIOs to work as open-drain outputs, is supported. 366 367config MT7621_GPIO 368 bool "MediaTek MT7621 GPIO driver" 369 depends on DM_GPIO && ARCH_MT7620 370 default y 371 help 372 Say yes here to support MediaTek MT7621 compatible GPIOs. 373 374endmenu 375