10b11dbf7SMasahiro Yamada# 20b11dbf7SMasahiro Yamada# GPIO infrastructure and drivers 30b11dbf7SMasahiro Yamada# 40b11dbf7SMasahiro Yamada 50b11dbf7SMasahiro Yamadamenu "GPIO Support" 60b11dbf7SMasahiro Yamada 7da333ae7SMasahiro Yamadaconfig DM_GPIO 8da333ae7SMasahiro Yamada bool "Enable Driver Model for GPIO drivers" 9da333ae7SMasahiro Yamada depends on DM 10da333ae7SMasahiro Yamada help 11f94a1bedSSimon Glass Enable driver model for GPIO access. The standard GPIO 12f94a1bedSSimon Glass interface (gpio_get_value(), etc.) is then implemented by 13f94a1bedSSimon Glass the GPIO uclass. Drivers provide methods to query the 14f94a1bedSSimon Glass particular GPIOs that they provide. The uclass interface 15f94a1bedSSimon Glass is defined in include/asm-generic/gpio.h. 16606f7047SAlbert ARIBAUD \(3ADEV\) 1788d5ecf4SThomas Chouconfig ALTERA_PIO 1888d5ecf4SThomas Chou bool "Altera PIO driver" 1988d5ecf4SThomas Chou depends on DM_GPIO 2088d5ecf4SThomas Chou help 2188d5ecf4SThomas Chou Select this to enable PIO for Altera devices. Please find 2288d5ecf4SThomas Chou details on the "Embedded Peripherals IP User Guide" of Altera. 2388d5ecf4SThomas Chou 24e64bdb2fSÁlvaro Fernández Rojasconfig BCM6345_GPIO 25e64bdb2fSÁlvaro Fernández Rojas bool "BCM6345 GPIO driver" 26e64bdb2fSÁlvaro Fernández Rojas depends on DM_GPIO && ARCH_BMIPS 27e64bdb2fSÁlvaro Fernández Rojas help 28e64bdb2fSÁlvaro Fernández Rojas This driver supports the GPIO banks on BCM6345 SoCs. 29e64bdb2fSÁlvaro Fernández Rojas 30e30a70c2SMarek Vasutconfig DWAPB_GPIO 31e30a70c2SMarek Vasut bool "DWAPB GPIO driver" 32e30a70c2SMarek Vasut depends on DM && DM_GPIO 33e30a70c2SMarek Vasut default n 34e30a70c2SMarek Vasut help 35e30a70c2SMarek Vasut Support for the Designware APB GPIO driver. 36e30a70c2SMarek Vasut 375a07a5f9SWenyou Yangconfig AT91_GPIO 385a07a5f9SWenyou Yang bool "AT91 PIO GPIO driver" 395a07a5f9SWenyou Yang depends on DM_GPIO 405a07a5f9SWenyou Yang default n 415a07a5f9SWenyou Yang help 425a07a5f9SWenyou Yang Say yes here to select AT91 PIO GPIO driver. AT91 PIO 435a07a5f9SWenyou Yang controller manages up to 32 fully programmable input/output 445a07a5f9SWenyou Yang lines. Each I/O line may be dedicated as a general-purpose 455a07a5f9SWenyou Yang I/O or be assigned to a function of an embedded peripheral. 465a07a5f9SWenyou Yang The assignment to a function of an embedded peripheral is 475a07a5f9SWenyou Yang the responsibility of AT91 Pinctrl driver. This driver is 485a07a5f9SWenyou Yang responsible for the general-purpose I/O. 495a07a5f9SWenyou Yang 502c62c56aSWenyou Yangconfig ATMEL_PIO4 512c62c56aSWenyou Yang bool "ATMEL PIO4 driver" 52ee3311dbSWenyou Yang depends on DM_GPIO 532c62c56aSWenyou Yang default n 542c62c56aSWenyou Yang help 552c62c56aSWenyou Yang Say yes here to support the Atmel PIO4 driver. 562c62c56aSWenyou Yang The PIO4 is new version of Atmel PIO controller, which manages 572c62c56aSWenyou Yang up to 128 fully programmable input/output lines. Each I/O line 582c62c56aSWenyou Yang may be dedicated as a general purpose I/O or be assigned to 592c62c56aSWenyou Yang a function of an embedded peripheral. 602c62c56aSWenyou Yang 61*b84e1c88Sryan_chenconfig ASPEED_GPIO 62*b84e1c88Sryan_chen bool "Aspeed GPIO Driver" 63*b84e1c88Sryan_chen help 64*b84e1c88Sryan_chen This driver supports the Aspeed GPIO controller 65*b84e1c88Sryan_chen 665d653afcSAdam Fordconfig DA8XX_GPIO 675d653afcSAdam Ford bool "DA8xx GPIO Driver" 685d653afcSAdam Ford help 695d653afcSAdam Ford This driver supports the DA8xx GPIO controller 705d653afcSAdam Ford 7164b17977SSimon Glassconfig INTEL_BROADWELL_GPIO 7264b17977SSimon Glass bool "Intel Broadwell GPIO driver" 7364b17977SSimon Glass depends on DM 7464b17977SSimon Glass help 7564b17977SSimon Glass This driver supports Broadwell U devices which have an expanded 7664b17977SSimon Glass GPIO feature set. The difference is large enough to merit a separate 7764b17977SSimon Glass driver from the common Intel ICH6 driver. It supports a total of 7864b17977SSimon Glass 95 GPIOs which can be configured from the device tree. 7964b17977SSimon Glass 8072436892SBin Mengconfig INTEL_ICH6_GPIO 8172436892SBin Meng bool "Intel ICH6 compatible legacy GPIO driver" 8272436892SBin Meng depends on DM_GPIO 8372436892SBin Meng help 8472436892SBin Meng Say yes here to select Intel ICH6 compatible legacy GPIO driver. 8572436892SBin Meng 86d665eb61SPeng Fanconfig IMX_RGPIO2P 87d665eb61SPeng Fan bool "i.MX7ULP RGPIO2P driver" 88d665eb61SPeng Fan depends on DM 89d665eb61SPeng Fan default n 90d665eb61SPeng Fan help 91d665eb61SPeng Fan This driver supports i.MX7ULP Rapid GPIO2P controller. 92d665eb61SPeng Fan 933194c3cdSEugeniy Paltsevconfig HSDK_CREG_GPIO 943194c3cdSEugeniy Paltsev bool "HSDK CREG GPIO griver" 95d5fbcd57SAlexey Brodkin depends on DM_GPIO 963194c3cdSEugeniy Paltsev default n 973194c3cdSEugeniy Paltsev help 983194c3cdSEugeniy Paltsev This driver supports CREG GPIOs on Synopsys HSDK SOC. 993194c3cdSEugeniy Paltsev 100606f7047SAlbert ARIBAUD \(3ADEV\)config LPC32XX_GPIO 101606f7047SAlbert ARIBAUD \(3ADEV\) bool "LPC32XX GPIO driver" 102606f7047SAlbert ARIBAUD \(3ADEV\) depends on DM 103606f7047SAlbert ARIBAUD \(3ADEV\) default n 104606f7047SAlbert ARIBAUD \(3ADEV\) help 105606f7047SAlbert ARIBAUD \(3ADEV\) Support for the LPC32XX GPIO driver. 106d79c50afSSimon Glass 107be8313feSLars Povlsenconfig MSCC_SGPIO 108be8313feSLars Povlsen bool "Microsemi Serial GPIO driver" 109be8313feSLars Povlsen depends on DM_GPIO && SOC_VCOREIII 110be8313feSLars Povlsen help 111be8313feSLars Povlsen Support for the VCoreIII SoC serial GPIO device. By using a 112be8313feSLars Povlsen serial interface, the SIO controller significantly extends 113be8313feSLars Povlsen the number of available GPIOs with a minimum number of 114be8313feSLars Povlsen additional pins on the device. The primary purpose of the 115be8313feSLars Povlsen SIO controller is to connect control signals from SFP 116be8313feSLars Povlsen modules and to act as an LED controller. 117be8313feSLars Povlsen 11881a87e18SMateusz Kulikowskiconfig MSM_GPIO 11981a87e18SMateusz Kulikowski bool "Qualcomm GPIO driver" 12081a87e18SMateusz Kulikowski depends on DM_GPIO 12181a87e18SMateusz Kulikowski default n 12281a87e18SMateusz Kulikowski help 12381a87e18SMateusz Kulikowski Support GPIO controllers on Qualcomm Snapdragon family of SoCs. 12481a87e18SMateusz Kulikowski This controller have single bank (default name "soc"), every 12581a87e18SMateusz Kulikowski gpio has it's own set of registers. 12681a87e18SMateusz Kulikowski Only simple GPIO operations are supported (get/set, change of 12781a87e18SMateusz Kulikowski direction and checking pin function). 12881a87e18SMateusz Kulikowski Supported devices: 12981a87e18SMateusz Kulikowski - APQ8016 13081a87e18SMateusz Kulikowski - MSM8916 13181a87e18SMateusz Kulikowski 1328bbff6a7SAdam Fordconfig MXC_GPIO 1338fd05fccSHannes Schmelzer bool "Freescale/NXP MXC GPIO driver" 1348bbff6a7SAdam Ford help 1358bbff6a7SAdam Ford Support GPIO controllers on various i.MX platforms 1368bbff6a7SAdam Ford 13729cb2b3bSTom Riniconfig OMAP_GPIO 13829cb2b3bSTom Rini bool "TI OMAP GPIO driver" 13929cb2b3bSTom Rini depends on ARCH_OMAP2PLUS 14029cb2b3bSTom Rini default y 14129cb2b3bSTom Rini help 14229cb2b3bSTom Rini Support GPIO controllers on the TI OMAP3/4/5 and related (such as 14329cb2b3bSTom Rini AM335x/AM43xx/AM57xx/DRA7xx/etc) families of SoCs. 14429cb2b3bSTom Rini 1450091362cSSimon Glassconfig CMD_PCA953X 1460091362cSSimon Glass bool "Enable the pca953x command" 1470091362cSSimon Glass help 1480091362cSSimon Glass Deprecated: This should be converted to driver model. 1490091362cSSimon Glass 1500091362cSSimon Glass This command provides access to a pca953x GPIO device using the 1510091362cSSimon Glass legacy GPIO interface. Several subcommands are provided which mirror 1520091362cSSimon Glass the standard 'gpio' command. It should use that instead. 1530091362cSSimon Glass 154120800dfSMateusz Kulikowskiconfig PM8916_GPIO 155120800dfSMateusz Kulikowski bool "Qualcomm PM8916 PMIC GPIO/keypad driver" 156120800dfSMateusz Kulikowski depends on DM_GPIO && PMIC_PM8916 157120800dfSMateusz Kulikowski help 158120800dfSMateusz Kulikowski Support for GPIO pins and power/reset buttons found on 159120800dfSMateusz Kulikowski Qualcomm PM8916 PMIC. 160120800dfSMateusz Kulikowski Default name for GPIO bank is "pm8916". 161120800dfSMateusz Kulikowski Power and reset buttons are placed in "pm8916_key" bank and 162120800dfSMateusz Kulikowski have gpio numbers 0 and 1 respectively. 163120800dfSMateusz Kulikowski 1645746b0dfSVignesh Rconfig PCF8575_GPIO 1655746b0dfSVignesh R bool "PCF8575 I2C GPIO Expander driver" 1665746b0dfSVignesh R depends on DM_GPIO && DM_I2C 1675746b0dfSVignesh R help 1685746b0dfSVignesh R Support for PCF8575 I2C 16-bit GPIO expander. Most of these 1695746b0dfSVignesh R chips are from NXP and TI. 1705746b0dfSVignesh R 171f5f69594SMarek Vasutconfig RCAR_GPIO 172f5f69594SMarek Vasut bool "Renesas RCar GPIO driver" 173f5f69594SMarek Vasut depends on DM_GPIO && ARCH_RMOBILE 174f5f69594SMarek Vasut help 175f5f69594SMarek Vasut This driver supports the GPIO banks on Renesas RCar SoCs. 176f5f69594SMarek Vasut 1771f8f7730SSimon Glassconfig ROCKCHIP_GPIO 1781f8f7730SSimon Glass bool "Rockchip GPIO driver" 1791f8f7730SSimon Glass depends on DM_GPIO 1801f8f7730SSimon Glass help 1811f8f7730SSimon Glass Support GPIO access on Rockchip SoCs. The GPIOs are arranged into 1821f8f7730SSimon Glass a number of banks (different for each SoC type) each with 32 GPIOs. 1831f8f7730SSimon Glass The GPIOs for a device are defined in the device tree with one node 1841f8f7730SSimon Glass for each bank. 1851f8f7730SSimon Glass 186d79c50afSSimon Glassconfig SANDBOX_GPIO 187d79c50afSSimon Glass bool "Enable sandbox GPIO driver" 188d79c50afSSimon Glass depends on SANDBOX && DM && DM_GPIO 189d79c50afSSimon Glass help 190d79c50afSSimon Glass This driver supports some simulated GPIOs which can be adjusted 191d79c50afSSimon Glass using 'back door' functions like sandbox_gpio_set_value(). Then the 192d79c50afSSimon Glass GPIOs can be inspected through the normal get_get_value() 193d79c50afSSimon Glass interface. The purpose of this is to allow GPIOs to be used as 194d79c50afSSimon Glass normal in sandbox, perhaps with test code actually driving the 195d79c50afSSimon Glass behaviour of those GPIOs. 196d79c50afSSimon Glass 197d79c50afSSimon Glassconfig SANDBOX_GPIO_COUNT 198d79c50afSSimon Glass int "Number of sandbox GPIOs" 199d79c50afSSimon Glass depends on SANDBOX_GPIO 200d79c50afSSimon Glass default 128 201d79c50afSSimon Glass help 202d79c50afSSimon Glass The sandbox driver can support any number of GPIOs. Generally these 203d79c50afSSimon Glass are specified using the device tree. But you can also have a number 204d79c50afSSimon Glass of 'anonymous' GPIOs that do not belong to any device or bank. 205d79c50afSSimon Glass Select a suitable value depending on your needs. 206d348a943SBhuvanchandra DV 20771d5a142SVipul Kumarconfig XILINX_GPIO 20871d5a142SVipul Kumar bool "Xilinx GPIO driver" 2094a693669SMichal Simek depends on DM_GPIO 21071d5a142SVipul Kumar help 21171d5a142SVipul Kumar This config enable the Xilinx GPIO driver for Microblaze. 21271d5a142SVipul Kumar 21390d99e59SSimon Glassconfig CMD_TCA642X 21490d99e59SSimon Glass bool "tca642x - Command to access tca642x state" 21590d99e59SSimon Glass help 21690d99e59SSimon Glass DEPRECATED - This needs conversion to driver model 21790d99e59SSimon Glass 21890d99e59SSimon Glass This provides a way to looking at the pin state of this device. 21990d99e59SSimon Glass This mirrors the 'gpio' command and that should be used in preference 22090d99e59SSimon Glass to custom code. 22190d99e59SSimon Glass 222601800beSStephen Warrenconfig TEGRA_GPIO 223601800beSStephen Warren bool "Tegra20..210 GPIO driver" 224601800beSStephen Warren depends on DM_GPIO 225601800beSStephen Warren help 226601800beSStephen Warren Support for the GPIO controller contained in NVIDIA Tegra20 through 227601800beSStephen Warren Tegra210. 228601800beSStephen Warren 229074a1fddSStephen Warrenconfig TEGRA186_GPIO 230074a1fddSStephen Warren bool "Tegra186 GPIO driver" 231074a1fddSStephen Warren depends on DM_GPIO 232074a1fddSStephen Warren help 233074a1fddSStephen Warren Support for the GPIO controller contained in NVIDIA Tegra186. This 234074a1fddSStephen Warren covers both the "main" and "AON" controller instances, even though 235074a1fddSStephen Warren they have slightly different register layout. 236074a1fddSStephen Warren 237b9a66b63SMasahiro Yamadaconfig GPIO_UNIPHIER 238b9a66b63SMasahiro Yamada bool "UniPhier GPIO" 239b9a66b63SMasahiro Yamada depends on ARCH_UNIPHIER 240b9a66b63SMasahiro Yamada help 241b9a66b63SMasahiro Yamada Say yes here to support UniPhier GPIOs. 242b9a66b63SMasahiro Yamada 243d348a943SBhuvanchandra DVconfig VYBRID_GPIO 244d348a943SBhuvanchandra DV bool "Vybrid GPIO driver" 245d348a943SBhuvanchandra DV depends on DM 246d348a943SBhuvanchandra DV default n 247d348a943SBhuvanchandra DV help 248d348a943SBhuvanchandra DV Say yes here to support Vybrid vf610 GPIOs. 2490b11dbf7SMasahiro Yamada 250386d934eSPurna Chandra Mandalconfig PIC32_GPIO 251386d934eSPurna Chandra Mandal bool "Microchip PIC32 GPIO driver" 252386d934eSPurna Chandra Mandal depends on DM_GPIO && MACH_PIC32 253386d934eSPurna Chandra Mandal default y 254386d934eSPurna Chandra Mandal help 255386d934eSPurna Chandra Mandal Say yes here to support Microchip PIC32 GPIOs. 256386d934eSPurna Chandra Mandal 25777417102SVikas Manochaconfig STM32F7_GPIO 25877417102SVikas Manocha bool "ST STM32 GPIO driver" 2592514c2d0SPatrick Delaunay depends on DM_GPIO && (STM32 || ARCH_STM32MP) 26077417102SVikas Manocha default y 26177417102SVikas Manocha help 26277417102SVikas Manocha Device model driver support for STM32 GPIO controller. It should be 26377417102SVikas Manocha usable on many stm32 families like stm32f4 & stm32H7. 26477417102SVikas Manocha Tested on STM32F7. 26577417102SVikas Manocha 266704d9a64SStefan Roeseconfig MVEBU_GPIO 267704d9a64SStefan Roese bool "Marvell MVEBU GPIO driver" 268704d9a64SStefan Roese depends on DM_GPIO && ARCH_MVEBU 269704d9a64SStefan Roese default y 270704d9a64SStefan Roese help 271704d9a64SStefan Roese Say yes here to support Marvell MVEBU (Armada XP/38x) GPIOs. 272704d9a64SStefan Roese 2732978ae23SSiva Durga Prasad Paladuguconfig ZYNQ_GPIO 2742978ae23SSiva Durga Prasad Paladugu bool "Zynq GPIO driver" 275251ab06dSSiva Durga Prasad Paladugu depends on DM_GPIO && (ARCH_ZYNQ || ARCH_ZYNQMP) 2762978ae23SSiva Durga Prasad Paladugu default y 2772978ae23SSiva Durga Prasad Paladugu help 2782978ae23SSiva Durga Prasad Paladugu Supports GPIO access on Zynq SoC. 2792978ae23SSiva Durga Prasad Paladugu 2809300f711SPeng Fanconfig DM_74X164 2819300f711SPeng Fan bool "74x164 serial-in/parallel-out 8-bits shift register" 2829300f711SPeng Fan depends on DM_GPIO 2839300f711SPeng Fan help 2849300f711SPeng Fan Driver for 74x164 compatible serial-in/parallel-out 8-outputs 2859300f711SPeng Fan shift registers, such as 74lv165, 74hc595. 2869300f711SPeng Fan This driver can be used to provide access to more gpio outputs. 2879300f711SPeng Fan 28803773439SPeng Fanconfig DM_PCA953X 28903773439SPeng Fan bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports" 29003773439SPeng Fan depends on DM_GPIO 29103773439SPeng Fan help 29203773439SPeng Fan Say yes here to provide access to several register-oriented 29303773439SPeng Fan SMBus I/O expanders, made mostly by NXP or TI. Compatible 29403773439SPeng Fan models include: 29503773439SPeng Fan 29603773439SPeng Fan 4 bits: pca9536, pca9537 29703773439SPeng Fan 29803773439SPeng Fan 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554, 29903773439SPeng Fan pca9556, pca9557, pca9574, tca6408, xra1202 30003773439SPeng Fan 30103773439SPeng Fan 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575, 30203773439SPeng Fan tca6416 30303773439SPeng Fan 30403773439SPeng Fan 24 bits: tca6424 30503773439SPeng Fan 30603773439SPeng Fan 40 bits: pca9505, pca9698 30703773439SPeng Fan 30803773439SPeng Fan Now, max 24 bits chips and PCA953X compatible chips are 30903773439SPeng Fan supported 31007d31f8fSmario.six@gdsys.cc 31116103682SPeng Fanconfig SPL_DM_PCA953X 31216103682SPeng Fan bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports in SPL" 31316103682SPeng Fan depends on DM_GPIO 31416103682SPeng Fan help 31516103682SPeng Fan Say yes here to provide access to several register-oriented 31616103682SPeng Fan SMBus I/O expanders, made mostly by NXP or TI. Compatible 31716103682SPeng Fan models include: 31816103682SPeng Fan 31916103682SPeng Fan 4 bits: pca9536, pca9537 32016103682SPeng Fan 32116103682SPeng Fan 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554, 32216103682SPeng Fan pca9556, pca9557, pca9574, tca6408, xra1202 32316103682SPeng Fan 32416103682SPeng Fan 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575, 32516103682SPeng Fan tca6416 32616103682SPeng Fan 32716103682SPeng Fan 24 bits: tca6424 32816103682SPeng Fan 32916103682SPeng Fan 40 bits: pca9505, pca9698 33016103682SPeng Fan 33116103682SPeng Fan Now, max 24 bits chips and PCA953X compatible chips are 33216103682SPeng Fan supported 33316103682SPeng Fan 3343c216834SMario Sixconfig MPC8XXX_GPIO 3353c216834SMario Six bool "Freescale MPC8XXX GPIO driver" 33607d31f8fSmario.six@gdsys.cc depends on DM_GPIO 33707d31f8fSmario.six@gdsys.cc help 3383c216834SMario Six This driver supports the built-in GPIO controller of MPC8XXX CPUs. 33907d31f8fSmario.six@gdsys.cc Each GPIO bank is identified by its own entry in the device tree, 34007d31f8fSmario.six@gdsys.cc i.e. 34107d31f8fSmario.six@gdsys.cc 34207d31f8fSmario.six@gdsys.cc gpio-controller@fc00 { 34307d31f8fSmario.six@gdsys.cc #gpio-cells = <2>; 34407d31f8fSmario.six@gdsys.cc compatible = "fsl,pq3-gpio"; 34507d31f8fSmario.six@gdsys.cc reg = <0xfc00 0x100> 34607d31f8fSmario.six@gdsys.cc } 34707d31f8fSmario.six@gdsys.cc 34807d31f8fSmario.six@gdsys.cc By default, each bank is assumed to have 32 GPIOs, but the ngpios 34907d31f8fSmario.six@gdsys.cc setting is honored, so the number of GPIOs for each bank is 35007d31f8fSmario.six@gdsys.cc configurable to match the actual GPIO count of the SoC (e.g. the 35107d31f8fSmario.six@gdsys.cc 32/32/23 banks of the P1022 SoC). 35207d31f8fSmario.six@gdsys.cc 35351781783Smario.six@gdsys.cc Aside from the standard functions of input/output mode, and output 35451781783Smario.six@gdsys.cc value setting, the open-drain feature, which can configure individual 35551781783Smario.six@gdsys.cc GPIOs to work as open-drain outputs, is supported. 3564751e559SStefan Roese 3574751e559SStefan Roeseconfig MT7621_GPIO 3584751e559SStefan Roese bool "MediaTek MT7621 GPIO driver" 3594751e559SStefan Roese depends on DM_GPIO && ARCH_MT7620 3604751e559SStefan Roese default y 3614751e559SStefan Roese help 3624751e559SStefan Roese Say yes here to support MediaTek MT7621 compatible GPIOs. 3634751e559SStefan Roese 3640b11dbf7SMasahiro Yamadaendmenu 365