1# 2# GPIO infrastructure and drivers 3# 4 5menuconfig GPIO 6 bool "GPIO support" 7 default y 8 help 9 Enable support for GPIOs (General-purpose Input/Output) in U-Boot. 10 GPIOs allow U-Boot to read the state of an input line (high or 11 low) and set the state of an output line. This can be used to 12 drive LEDs, control power to various system parts and read user 13 input. GPIOs can be useful to enable a 'sign-of-life' LED, 14 for example. Enable this option to build the drivers in 15 drivers/gpio as part of an U-Boot build. 16 17if GPIO 18 19config DM_GPIO 20 bool "Enable Driver Model for GPIO drivers" 21 depends on DM 22 help 23 Enable driver model for GPIO access. The standard GPIO 24 interface (gpio_get_value(), etc.) is then implemented by 25 the GPIO uclass. Drivers provide methods to query the 26 particular GPIOs that they provide. The uclass interface 27 is defined in include/asm-generic/gpio.h. 28 29config SPL_DM_GPIO 30 bool "Enable Driver Model for GPIO drivers in SPL" 31 depends on DM_GPIO && SPL_DM && SPL_GPIO 32 default y 33 help 34 Enable driver model for GPIO access in SPL. The standard GPIO 35 interface (gpio_get_value(), etc.) is then implemented by 36 the GPIO uclass. Drivers provide methods to query the 37 particular GPIOs that they provide. The uclass interface 38 is defined in include/asm-generic/gpio.h. 39 40config TPL_DM_GPIO 41 bool "Enable Driver Model for GPIO drivers in TPL" 42 depends on DM_GPIO && TPL_DM && TPL_GPIO 43 default y 44 help 45 Enable driver model for GPIO access in TPL. The standard GPIO 46 interface (gpio_get_value(), etc.) is then implemented by 47 the GPIO uclass. Drivers provide methods to query the 48 particular GPIOs that they provide. The uclass interface 49 is defined in include/asm-generic/gpio.h. 50 51config VPL_DM_GPIO 52 bool "Enable Driver Model for GPIO drivers in VPL" 53 depends on DM_GPIO && VPL_DM && VPL_GPIO 54 default y 55 help 56 Enable driver model for GPIO access in VPL. The standard GPIO 57 interface (gpio_get_value(), etc.) is then implemented by 58 the GPIO uclass. Drivers provide methods to query the 59 particular GPIOs that they provide. The uclass interface 60 is defined in include/asm-generic/gpio.h. 61 62config GPIO_HOG 63 bool "Enable GPIO hog support" 64 depends on DM_GPIO 65 help 66 Enable gpio hog support 67 The GPIO chip may contain GPIO hog definitions. GPIO hogging 68 is a mechanism providing automatic GPIO request and config- 69 uration as part of the gpio-controller's driver probe function. 70 71config SPL_GPIO_HOG 72 bool "Enable GPIO hog support in SPL" 73 depends on SPL_GPIO 74 help 75 Enable gpio hog support in SPL 76 The GPIO chip may contain GPIO hog definitions. GPIO hogging 77 is a mechanism providing automatic GPIO request and config- 78 uration as part of the gpio-controller's driver probe function. 79 80config DM_GPIO_LOOKUP_LABEL 81 bool "Enable searching for gpio labelnames" 82 depends on DM_GPIO 83 help 84 This option enables searching for gpio names in 85 the defined gpio labels, if the search for the 86 gpio bank name failed. This makes sense if you use 87 different gpios on different hardware versions 88 for the same functionality in board code. 89 90config SPL_DM_GPIO_LOOKUP_LABEL 91 bool "Enable searching for gpio labelnames" 92 depends on SPL_DM_GPIO 93 help 94 This option enables searching for gpio names in 95 the defined gpio labels, if the search for the 96 gpio bank name failed. This makes sense if you use 97 different gpios on different hardware versions 98 for the same functionality in board code. 99 100config ALTERA_PIO 101 bool "Altera PIO driver" 102 depends on DM_GPIO 103 help 104 Select this to enable PIO for Altera devices. Please find 105 details on the "Embedded Peripherals IP User Guide" of Altera. 106 107config BCM2835_GPIO 108 bool "BCM2835 GPIO driver" 109 depends on DM_GPIO 110 111config BCM6345_GPIO 112 bool "BCM6345 GPIO driver" 113 depends on DM_GPIO && (ARCH_BMIPS || BCM6856 || \ 114 BCM6858 || BCM63158 || BCM6855) 115 help 116 This driver supports the GPIO banks on BCM6345 SoCs. 117 118config CORTINA_GPIO 119 bool "Cortina-Access GPIO driver" 120 depends on DM_GPIO && CORTINA_PLATFORM 121 help 122 Enable support for the GPIO controller in Cortina CAxxxx SoCs. 123 This driver supports all CPU ISA variants supported by Cortina 124 Access CAxxxx SoCs. 125 126config DWAPB_GPIO 127 bool "DWAPB GPIO driver" 128 depends on DM && DM_GPIO 129 help 130 Support for the Designware APB GPIO driver. 131 132config AT91_GPIO 133 bool "AT91 PIO GPIO driver" 134 help 135 Say yes here to select AT91 PIO GPIO driver. AT91 PIO 136 controller manages up to 32 fully programmable input/output 137 lines. Each I/O line may be dedicated as a general-purpose 138 I/O or be assigned to a function of an embedded peripheral. 139 The assignment to a function of an embedded peripheral is 140 the responsibility of AT91 Pinctrl driver. This driver is 141 responsible for the general-purpose I/O. 142 143config ATMEL_PIO4 144 bool "ATMEL PIO4 driver" 145 depends on DM_GPIO 146 help 147 Say yes here to support the Atmel PIO4 driver. 148 The PIO4 is new version of Atmel PIO controller, which manages 149 up to 128 fully programmable input/output lines. Each I/O line 150 may be dedicated as a general purpose I/O or be assigned to 151 a function of an embedded peripheral. 152 153config ASPEED_GPIO 154 bool "Aspeed GPIO Driver" 155 help 156 Say yes here to support the Aspeed GPIO driver. The controller 157 is found in the AST2400, AST2500 and AST2600 BMC SoCs and 158 provides access to over 200 GPIOs on each chip. 159 160config DA8XX_GPIO 161 bool "DA8xx GPIO Driver" 162 help 163 This driver supports the DA8xx GPIO controller 164 165config FXL6408_GPIO 166 bool "FXL6408 I2C GPIO expander driver" 167 depends on DM_GPIO && DM_I2C 168 help 169 This driver supports the Fairchild FXL6408 device. FXL6408 is a 170 fully configurable 8-bit I2C-controlled GPIO expander. 171 172config HIKEY_GPIO 173 bool "HI6220 GPIO driver" 174 depends on DM_GPIO 175 176config INTEL_BROADWELL_GPIO 177 bool "Intel Broadwell GPIO driver" 178 depends on DM 179 help 180 This driver supports Broadwell U devices which have an expanded 181 GPIO feature set. The difference is large enough to merit a separate 182 driver from the common Intel ICH6 driver. It supports a total of 183 95 GPIOs which can be configured from the device tree. 184 185config INTEL_GPIO 186 bool "Intel generic GPIO driver" 187 depends on DM_GPIO 188 help 189 Say yes here to select Intel generic GPIO driver. This controller 190 supports recent chips (e.g. Apollo Lake). It permits basic GPIO 191 control including setting pins to input/output. It makes use of its 192 parent pinctrl driver to actually effect changes. 193 194config INTEL_ICH6_GPIO 195 bool "Intel ICH6 compatible legacy GPIO driver" 196 depends on DM_GPIO 197 help 198 Say yes here to select Intel ICH6 compatible legacy GPIO driver. 199 200config IMX_RGPIO2P 201 bool "i.MX7ULP RGPIO2P driver" 202 depends on DM 203 help 204 This driver supports i.MX7ULP Rapid GPIO2P controller. 205 206config IPROC_GPIO 207 bool "Broadcom iProc GPIO driver(without pinconf)" 208 help 209 The Broadcom iProc based SoCs- Cygnus, NS2, NS3, NSP and Stingray, 210 use the same GPIO Controller IP hence this driver could be used 211 for all. 212 213 The Broadcom iProc based SoCs have multiple GPIO controllers and only 214 the always-ON GPIO controller (CRMU/AON) is supported by this driver. 215 216config HSDK_CREG_GPIO 217 bool "HSDK CREG GPIO griver" 218 depends on DM_GPIO 219 help 220 This driver supports CREG GPIOs on Synopsys HSDK SOC. 221 222config KIRKWOOD_GPIO 223 bool "Kirkwood GPIO driver" 224 help 225 This drdiver supports GPIOs on Kirkwood platforms 226 227config LPC32XX_GPIO 228 bool "LPC32XX GPIO driver" 229 depends on DM 230 help 231 Support for the LPC32XX GPIO driver. 232 233config MAX7320_GPIO 234 bool "MAX7320 I2C GPIO Expander driver" 235 depends on DM_GPIO && DM_I2C 236 help 237 Support for MAX7320 I2C 8/16-bit GPIO expander. 238 original maxim device has 8 push/pull outputs, 239 some clones offers 16bit. 240 241config MCP230XX_GPIO 242 bool "MCP230XX GPIO driver" 243 depends on DM 244 help 245 Support for Microchip's MCP230XX I2C connected GPIO devices. 246 The following chips are supported: 247 - MCP23008 248 - MCP23017 249 - MCP23018 250 251config MSCC_SGPIO 252 bool "Microsemi Serial GPIO driver" 253 depends on DM_GPIO && SOC_VCOREIII 254 help 255 Support for the VCoreIII SoC serial GPIO device. By using a 256 serial interface, the SIO controller significantly extends 257 the number of available GPIOs with a minimum number of 258 additional pins on the device. The primary purpose of the 259 SIO controller is to connect control signals from SFP 260 modules and to act as an LED controller. 261 262config MSM_GPIO 263 bool "Qualcomm GPIO driver" 264 depends on DM_GPIO 265 help 266 Support GPIO controllers on Qualcomm Snapdragon family of SoCs. 267 This controller have single bank (default name "soc"), every 268 gpio has it's own set of registers. 269 Only simple GPIO operations are supported (get/set, change of 270 direction and checking pin function). 271 Supported devices: 272 - APQ8016 273 - MSM8916 274 275config MXC_GPIO 276 bool "Freescale/NXP MXC GPIO driver" 277 help 278 Support GPIO controllers on various i.MX platforms 279 280config MXS_GPIO 281 bool "Freescale/NXP MXS GPIO driver" 282 help 283 Support GPIO controllers on i.MX23 and i.MX28 platforms 284 285config NPCM_GPIO 286 bool "Nuvoton NPCM GPIO driver" 287 depends on DM_GPIO 288 help 289 Support GPIO controllers on Nuvovon NPCM SoCs. 290 NPCM7xx/NPCM8xx contain 8 GPIO banks, each bank contains 32 pins. 291 292config OMAP_GPIO 293 bool "TI OMAP GPIO driver" 294 depends on ARCH_OMAP2PLUS 295 default y 296 help 297 Support GPIO controllers on the TI OMAP3/4/5 and related (such as 298 AM335x/AM43xx/AM57xx/DRA7xx/etc) families of SoCs. 299 300config CMD_PCA953X 301 bool "Enable the pca953x command" 302 help 303 Deprecated: This should be converted to driver model. 304 305 This command provides access to a pca953x GPIO device using the 306 legacy GPIO interface. Several subcommands are provided which mirror 307 the standard 'gpio' command. It should use that instead. 308 309config QCOM_PMIC_GPIO 310 bool "Qualcomm generic PMIC GPIO/keypad driver" 311 depends on DM_GPIO && PMIC_QCOM 312 help 313 Support for GPIO pins and power/reset buttons found on 314 Qualcomm SoCs PMIC. 315 Default name for GPIO bank is "pm8916". 316 Power and reset buttons are placed in "pwkey_qcom" bank and 317 have gpio numbers 0 and 1 respectively. 318 319config PCF8575_GPIO 320 bool "PCF8575 I2C GPIO Expander driver" 321 depends on DM_GPIO && DM_I2C 322 help 323 Support for PCF8575 I2C 16-bit GPIO expander. Most of these 324 chips are from NXP and TI. 325 326config RCAR_GPIO 327 bool "Renesas RCar GPIO driver" 328 depends on DM_GPIO && ARCH_RMOBILE 329 help 330 This driver supports the GPIO banks on Renesas RCar SoCs. 331 332config RZA1_GPIO 333 bool "Renesas RZ/A1 GPIO driver" 334 depends on DM_GPIO && RZA1 335 help 336 This driver supports the GPIO banks on Renesas RZ/A1 R7S72100 SoCs. 337 338config ROCKCHIP_GPIO 339 bool "Rockchip GPIO driver" 340 depends on DM_GPIO 341 help 342 Support GPIO access on Rockchip SoCs. The GPIOs are arranged into 343 a number of banks (different for each SoC type) each with 32 GPIOs. 344 The GPIOs for a device are defined in the device tree with one node 345 for each bank. 346 347config SANDBOX_GPIO 348 bool "Enable sandbox GPIO driver" 349 depends on SANDBOX && DM && DM_GPIO 350 help 351 This driver supports some simulated GPIOs which can be adjusted 352 using 'back door' functions like sandbox_gpio_set_value(). Then the 353 GPIOs can be inspected through the normal get_get_value() 354 interface. The purpose of this is to allow GPIOs to be used as 355 normal in sandbox, perhaps with test code actually driving the 356 behaviour of those GPIOs. 357 358config SANDBOX_GPIO_COUNT 359 int "Number of sandbox GPIOs" 360 depends on SANDBOX_GPIO 361 default 128 362 help 363 The sandbox driver can support any number of GPIOs. Generally these 364 are specified using the device tree. But you can also have a number 365 of 'anonymous' GPIOs that do not belong to any device or bank. 366 Select a suitable value depending on your needs. 367 368config SUNXI_GPIO 369 bool "Allwinner GPIO driver" 370 depends on ARCH_SUNXI 371 select SPL_STRTO if SPL 372 help 373 Support the GPIO device in Allwinner SoCs. 374 375config XILINX_GPIO 376 bool "Xilinx GPIO driver" 377 depends on DM_GPIO 378 help 379 This config enable the Xilinx GPIO driver for Microblaze. 380 381config TCA642X 382 bool "TCA642x legacy GPIO driver" 383 384config CMD_TCA642X 385 bool "tca642x - Command to access tca642x state" 386 depends on TCA642X 387 default y 388 help 389 DEPRECATED - This needs conversion to driver model 390 391 This provides a way to looking at the pin state of this device. 392 This mirrors the 'gpio' command and that should be used in preference 393 to custom code. 394 395config TEGRA_GPIO 396 bool "Tegra20..210 GPIO driver" 397 depends on DM_GPIO 398 help 399 Support for the GPIO controller contained in NVIDIA Tegra20 through 400 Tegra210. 401 402config TEGRA186_GPIO 403 bool "Tegra186 GPIO driver" 404 depends on DM_GPIO 405 help 406 Support for the GPIO controller contained in NVIDIA Tegra186. This 407 covers both the "main" and "AON" controller instances, even though 408 they have slightly different register layout. 409 410config GPIO_UNIPHIER 411 bool "UniPhier GPIO" 412 depends on ARCH_UNIPHIER 413 help 414 Say yes here to support UniPhier GPIOs. 415 416config VYBRID_GPIO 417 bool "Vybrid GPIO driver" 418 depends on DM 419 help 420 Say yes here to support Vybrid vf610 GPIOs. 421 422config PIC32_GPIO 423 bool "Microchip PIC32 GPIO driver" 424 depends on DM_GPIO && MACH_PIC32 425 default y 426 help 427 Say yes here to support Microchip PIC32 GPIOs. 428 429config OCTEON_GPIO 430 bool "Octeon II/III/TX/TX2 GPIO driver" 431 depends on DM_GPIO && PCI && (ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2) 432 default y 433 help 434 Add support for the Marvell Octeon GPIO driver. This is used with 435 various Octeon parts such as Octeon II/III and OcteonTX/TX2. 436 Octeon II/III has 32 GPIOs (count defined via DT) and OcteonTX/TX2 437 has 64 GPIOs (count defined via internal register). 438 439config STM32_GPIO 440 bool "ST STM32 GPIO driver" 441 depends on DM_GPIO && (ARCH_STM32 || ARCH_STM32MP) 442 default y 443 help 444 Device model driver support for STM32 GPIO controller. It should be 445 usable on many stm32 families like stm32f4/f7/h7 and stm32mp1. 446 Tested on STM32F7. 447 448config SIFIVE_GPIO 449 bool "SiFive GPIO driver" 450 depends on DM_GPIO 451 help 452 Device model driver for GPIO controller present in SiFive FU540 SoC. This 453 driver enables GPIO interface on HiFive Unleashed A00 board. 454 455config MVEBU_GPIO 456 bool "Marvell MVEBU GPIO driver" 457 depends on DM_GPIO && (ARCH_MVEBU || ARCH_KIRKWOOD) 458 default y 459 help 460 Say yes here to support Marvell MVEBU (Armada XP/38x) GPIOs. 461 462config ZYNQ_GPIO 463 bool "Zynq GPIO driver" 464 depends on DM_GPIO 465 default y if ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL 466 help 467 Supports GPIO access on Zynq SoC. 468 469config DM_74X164 470 bool "74x164 serial-in/parallel-out 8-bits shift register" 471 depends on DM_GPIO 472 help 473 Driver for 74x164 compatible serial-in/parallel-out 8-outputs 474 shift registers, such as 74lv165, 74hc595. 475 This driver can be used to provide access to more gpio outputs. 476 477config DM_PCA953X 478 bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports" 479 depends on DM_GPIO && DM_I2C 480 help 481 Say yes here to provide access to several register-oriented 482 SMBus I/O expanders, made mostly by NXP or TI. Compatible 483 models include: 484 485 4 bits: pca9536, pca9537 486 487 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554, 488 pca9556, pca9557, pca9574, tca6408, xra1202 489 490 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575, 491 tca6416 492 493 24 bits: tca6424 494 495 40 bits: pca9505, pca9698 496 497 Now, max 24 bits chips and PCA953X compatible chips are 498 supported 499 500config SPL_DM_PCA953X 501 bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports in SPL" 502 depends on SPL_DM_GPIO 503 help 504 Say yes here to provide access to several register-oriented 505 SMBus I/O expanders, made mostly by NXP or TI. Compatible 506 models include: 507 508 4 bits: pca9536, pca9537 509 510 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554, 511 pca9556, pca9557, pca9574, tca6408, xra1202 512 513 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575, 514 tca6416 515 516 24 bits: tca6424 517 518 40 bits: pca9505, pca9698 519 520 Now, max 24 bits chips and PCA953X compatible chips are 521 supported 522 523config PCA953X 524 bool "NXP's PCA953X series I2C GPIO (legacy driver)" 525 depends on !DM_PCA953X 526 527config MPC8XXX_GPIO 528 bool "Freescale MPC8XXX GPIO driver" 529 depends on DM_GPIO 530 help 531 This driver supports the built-in GPIO controller of MPC8XXX CPUs. 532 Each GPIO bank is identified by its own entry in the device tree, 533 i.e. 534 535 gpio-controller@fc00 { 536 #gpio-cells = <2>; 537 compatible = "fsl,pq3-gpio"; 538 reg = <0xfc00 0x100> 539 } 540 541 By default, each bank is assumed to have 32 GPIOs, but the ngpios 542 setting is honored, so the number of GPIOs for each bank is 543 configurable to match the actual GPIO count of the SoC (e.g. the 544 32/32/23 banks of the P1022 SoC). 545 546 Aside from the standard functions of input/output mode, and output 547 value setting, the open-drain feature, which can configure individual 548 GPIOs to work as open-drain outputs, is supported. 549 550config QE_GPIO 551 bool "Freescale QUICC ENGINE GPIO driver" 552 depends on DM_GPIO 553 depends on QE 554 help 555 This driver supports the QUICC Engine GPIOs of MPC83XX CPUs. 556 Each GPIO bank is identified by its own entry in the device tree, 557 i.e. 558 559 qe_pio_a: gpio-controller@1400 { 560 compatible = "fsl,mpc8323-qe-pario-bank"; 561 reg = <0x1400 0x18>; 562 gpio-controller; 563 #gpio-cells = <2>; 564 }; 565 566 Each bank has 32 GPIOs. 567 568config MPC8XX_GPIO 569 bool "Freescale MPC8XX GPIO driver" 570 depends on DM_GPIO 571 help 572 This driver supports parallel IO ports from MPC8XX CPUs. 573 Each GPIO bank is identified by its own entry in the device tree. 574 575config MPC83XX_SPISEL_BOOT 576 bool "Freescale MPC83XX SPISEL_BOOT driver" 577 depends on DM_GPIO && ARCH_MPC830X 578 help 579 GPIO driver to set/clear dedicated SPISEL_BOOT output on MPC83XX. 580 581 This pin is typically used as spi chip select to a spi nor flash. 582 583config MT7620_GPIO 584 bool "MediaTek MT7620 GPIO driver" 585 depends on DM_GPIO && SOC_MT7620 586 default y 587 help 588 Device model driver for GPIO controller present in MediaTek MT7620 589 and earlier SoCs. 590 591config MT7621_GPIO 592 bool "MediaTek MT7621 GPIO driver" 593 depends on DM_GPIO && (SOC_MT7621 || SOC_MT7628) 594 default y 595 help 596 Say yes here to support MediaTek MT7621 compatible GPIOs. 597 598config NX_GPIO 599 bool "Nexell GPIO driver" 600 depends on DM_GPIO 601 help 602 Support GPIO access on Nexell SoCs. The GPIOs are arranged into 603 a number of banks (different for each SoC type) each with 32 GPIOs. 604 The GPIOs for a device are defined in the device tree with one node 605 for each bank. 606 607config NOMADIK_GPIO 608 bool "Nomadik GPIO driver" 609 depends on DM_GPIO 610 help 611 Support GPIO access on ST-Ericsson Ux500 SoCs. The GPIOs are arranged 612 into a number of banks each with 32 GPIOs. The GPIOs for a device are 613 defined in the device tree with one node for each bank. 614 615config ZYNQMP_GPIO_MODEPIN 616 bool "ZynqMP gpio modepin" 617 depends on DM_GPIO 618 help 619 This config enables the ZynqMP gpio modepin driver. ZynqMP modepin 620 driver will set and get the status of PS_MODE pins. These modepins 621 are accessed using xilinx firmware. In modepin register, [3:0] bits 622 set direction, [7:4] bits read IO, [11:8] bits set/clear IO. 623 624config SH_GPIO_PFC 625 bool "Pinmuxed GPIO support for SuperH" 626 depends on RCAR_GEN2 && !PINCTRL_PFC 627 default y 628 629config SL28CPLD_GPIO 630 bool "Kontron sl28cpld GPIO driver" 631 depends on DM_GPIO && SL28CPLD 632 help 633 Support GPIO access on Kontron sl28cpld board management controllers. 634 635config SLG7XL45106_I2C_GPO 636 bool "slg7xl45106 i2c gpo expander" 637 depends on DM_GPIO 638 help 639 Support for slg7xl45106 i2c gpo expander. It is an i2c based 640 8-bit gpo expander, all gpo lines are controlled by writing 641 value into data register. 642 643config TURRIS_OMNIA_MCU 644 bool "Turris Omnia MCU GPIO driver" 645 depends on DM_GPIO 646 default y if TARGET_TURRIS_OMNIA 647 help 648 Support for GPIOs on MCU connected to Turris Omnia via i2c. 649 650config FTGPIO010 651 bool "Faraday Technology FTGPIO010 driver" 652 depends on DM_GPIO 653 help 654 Support for GPIOs on Faraday Technology's FTGPIO010 controller. 655 656config ADP5585_GPIO 657 bool "ADP5585 GPIO driver" 658 depends on DM_GPIO && DM_I2C 659 help 660 Support ADP5585 GPIO expander. 661 662endif 663