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 24*e64bdb2fSÁlvaro Fernández Rojasconfig BCM6345_GPIO 25*e64bdb2fSÁlvaro Fernández Rojas bool "BCM6345 GPIO driver" 26*e64bdb2fSÁlvaro Fernández Rojas depends on DM_GPIO && ARCH_BMIPS 27*e64bdb2fSÁlvaro Fernández Rojas help 28*e64bdb2fSÁlvaro Fernández Rojas This driver supports the GPIO banks on BCM6345 SoCs. 29*e64bdb2fSÁ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 6164b17977SSimon Glassconfig INTEL_BROADWELL_GPIO 6264b17977SSimon Glass bool "Intel Broadwell GPIO driver" 6364b17977SSimon Glass depends on DM 6464b17977SSimon Glass help 6564b17977SSimon Glass This driver supports Broadwell U devices which have an expanded 6664b17977SSimon Glass GPIO feature set. The difference is large enough to merit a separate 6764b17977SSimon Glass driver from the common Intel ICH6 driver. It supports a total of 6864b17977SSimon Glass 95 GPIOs which can be configured from the device tree. 6964b17977SSimon Glass 70d665eb61SPeng Fanconfig IMX_RGPIO2P 71d665eb61SPeng Fan bool "i.MX7ULP RGPIO2P driver" 72d665eb61SPeng Fan depends on DM 73d665eb61SPeng Fan default n 74d665eb61SPeng Fan help 75d665eb61SPeng Fan This driver supports i.MX7ULP Rapid GPIO2P controller. 76d665eb61SPeng Fan 77606f7047SAlbert ARIBAUD \(3ADEV\)config LPC32XX_GPIO 78606f7047SAlbert ARIBAUD \(3ADEV\) bool "LPC32XX GPIO driver" 79606f7047SAlbert ARIBAUD \(3ADEV\) depends on DM 80606f7047SAlbert ARIBAUD \(3ADEV\) default n 81606f7047SAlbert ARIBAUD \(3ADEV\) help 82606f7047SAlbert ARIBAUD \(3ADEV\) Support for the LPC32XX GPIO driver. 83d79c50afSSimon Glass 8481a87e18SMateusz Kulikowskiconfig MSM_GPIO 8581a87e18SMateusz Kulikowski bool "Qualcomm GPIO driver" 8681a87e18SMateusz Kulikowski depends on DM_GPIO 8781a87e18SMateusz Kulikowski default n 8881a87e18SMateusz Kulikowski help 8981a87e18SMateusz Kulikowski Support GPIO controllers on Qualcomm Snapdragon family of SoCs. 9081a87e18SMateusz Kulikowski This controller have single bank (default name "soc"), every 9181a87e18SMateusz Kulikowski gpio has it's own set of registers. 9281a87e18SMateusz Kulikowski Only simple GPIO operations are supported (get/set, change of 9381a87e18SMateusz Kulikowski direction and checking pin function). 9481a87e18SMateusz Kulikowski Supported devices: 9581a87e18SMateusz Kulikowski - APQ8016 9681a87e18SMateusz Kulikowski - MSM8916 9781a87e18SMateusz Kulikowski 98120800dfSMateusz Kulikowskiconfig PM8916_GPIO 99120800dfSMateusz Kulikowski bool "Qualcomm PM8916 PMIC GPIO/keypad driver" 100120800dfSMateusz Kulikowski depends on DM_GPIO && PMIC_PM8916 101120800dfSMateusz Kulikowski help 102120800dfSMateusz Kulikowski Support for GPIO pins and power/reset buttons found on 103120800dfSMateusz Kulikowski Qualcomm PM8916 PMIC. 104120800dfSMateusz Kulikowski Default name for GPIO bank is "pm8916". 105120800dfSMateusz Kulikowski Power and reset buttons are placed in "pm8916_key" bank and 106120800dfSMateusz Kulikowski have gpio numbers 0 and 1 respectively. 107120800dfSMateusz Kulikowski 1085746b0dfSVignesh Rconfig PCF8575_GPIO 1095746b0dfSVignesh R bool "PCF8575 I2C GPIO Expander driver" 1105746b0dfSVignesh R depends on DM_GPIO && DM_I2C 1115746b0dfSVignesh R help 1125746b0dfSVignesh R Support for PCF8575 I2C 16-bit GPIO expander. Most of these 1135746b0dfSVignesh R chips are from NXP and TI. 1145746b0dfSVignesh R 1151f8f7730SSimon Glassconfig ROCKCHIP_GPIO 1161f8f7730SSimon Glass bool "Rockchip GPIO driver" 1171f8f7730SSimon Glass depends on DM_GPIO 1181f8f7730SSimon Glass help 1191f8f7730SSimon Glass Support GPIO access on Rockchip SoCs. The GPIOs are arranged into 1201f8f7730SSimon Glass a number of banks (different for each SoC type) each with 32 GPIOs. 1211f8f7730SSimon Glass The GPIOs for a device are defined in the device tree with one node 1221f8f7730SSimon Glass for each bank. 1231f8f7730SSimon Glass 124d79c50afSSimon Glassconfig SANDBOX_GPIO 125d79c50afSSimon Glass bool "Enable sandbox GPIO driver" 126d79c50afSSimon Glass depends on SANDBOX && DM && DM_GPIO 127d79c50afSSimon Glass help 128d79c50afSSimon Glass This driver supports some simulated GPIOs which can be adjusted 129d79c50afSSimon Glass using 'back door' functions like sandbox_gpio_set_value(). Then the 130d79c50afSSimon Glass GPIOs can be inspected through the normal get_get_value() 131d79c50afSSimon Glass interface. The purpose of this is to allow GPIOs to be used as 132d79c50afSSimon Glass normal in sandbox, perhaps with test code actually driving the 133d79c50afSSimon Glass behaviour of those GPIOs. 134d79c50afSSimon Glass 135d79c50afSSimon Glassconfig SANDBOX_GPIO_COUNT 136d79c50afSSimon Glass int "Number of sandbox GPIOs" 137d79c50afSSimon Glass depends on SANDBOX_GPIO 138d79c50afSSimon Glass default 128 139d79c50afSSimon Glass help 140d79c50afSSimon Glass The sandbox driver can support any number of GPIOs. Generally these 141d79c50afSSimon Glass are specified using the device tree. But you can also have a number 142d79c50afSSimon Glass of 'anonymous' GPIOs that do not belong to any device or bank. 143d79c50afSSimon Glass Select a suitable value depending on your needs. 144d348a943SBhuvanchandra DV 145601800beSStephen Warrenconfig TEGRA_GPIO 146601800beSStephen Warren bool "Tegra20..210 GPIO driver" 147601800beSStephen Warren depends on DM_GPIO 148601800beSStephen Warren help 149601800beSStephen Warren Support for the GPIO controller contained in NVIDIA Tegra20 through 150601800beSStephen Warren Tegra210. 151601800beSStephen Warren 152074a1fddSStephen Warrenconfig TEGRA186_GPIO 153074a1fddSStephen Warren bool "Tegra186 GPIO driver" 154074a1fddSStephen Warren depends on DM_GPIO 155074a1fddSStephen Warren help 156074a1fddSStephen Warren Support for the GPIO controller contained in NVIDIA Tegra186. This 157074a1fddSStephen Warren covers both the "main" and "AON" controller instances, even though 158074a1fddSStephen Warren they have slightly different register layout. 159074a1fddSStephen Warren 160b9a66b63SMasahiro Yamadaconfig GPIO_UNIPHIER 161b9a66b63SMasahiro Yamada bool "UniPhier GPIO" 162b9a66b63SMasahiro Yamada depends on ARCH_UNIPHIER 163b9a66b63SMasahiro Yamada help 164b9a66b63SMasahiro Yamada Say yes here to support UniPhier GPIOs. 165b9a66b63SMasahiro Yamada 166d348a943SBhuvanchandra DVconfig VYBRID_GPIO 167d348a943SBhuvanchandra DV bool "Vybrid GPIO driver" 168d348a943SBhuvanchandra DV depends on DM 169d348a943SBhuvanchandra DV default n 170d348a943SBhuvanchandra DV help 171d348a943SBhuvanchandra DV Say yes here to support Vybrid vf610 GPIOs. 1720b11dbf7SMasahiro Yamada 173386d934eSPurna Chandra Mandalconfig PIC32_GPIO 174386d934eSPurna Chandra Mandal bool "Microchip PIC32 GPIO driver" 175386d934eSPurna Chandra Mandal depends on DM_GPIO && MACH_PIC32 176386d934eSPurna Chandra Mandal default y 177386d934eSPurna Chandra Mandal help 178386d934eSPurna Chandra Mandal Say yes here to support Microchip PIC32 GPIOs. 179386d934eSPurna Chandra Mandal 18077417102SVikas Manochaconfig STM32F7_GPIO 18177417102SVikas Manocha bool "ST STM32 GPIO driver" 18277417102SVikas Manocha depends on DM_GPIO && STM32 18377417102SVikas Manocha default y 18477417102SVikas Manocha help 18577417102SVikas Manocha Device model driver support for STM32 GPIO controller. It should be 18677417102SVikas Manocha usable on many stm32 families like stm32f4 & stm32H7. 18777417102SVikas Manocha Tested on STM32F7. 18877417102SVikas Manocha 189704d9a64SStefan Roeseconfig MVEBU_GPIO 190704d9a64SStefan Roese bool "Marvell MVEBU GPIO driver" 191704d9a64SStefan Roese depends on DM_GPIO && ARCH_MVEBU 192704d9a64SStefan Roese default y 193704d9a64SStefan Roese help 194704d9a64SStefan Roese Say yes here to support Marvell MVEBU (Armada XP/38x) GPIOs. 195704d9a64SStefan Roese 1962978ae23SSiva Durga Prasad Paladuguconfig ZYNQ_GPIO 1972978ae23SSiva Durga Prasad Paladugu bool "Zynq GPIO driver" 198251ab06dSSiva Durga Prasad Paladugu depends on DM_GPIO && (ARCH_ZYNQ || ARCH_ZYNQMP) 1992978ae23SSiva Durga Prasad Paladugu default y 2002978ae23SSiva Durga Prasad Paladugu help 2012978ae23SSiva Durga Prasad Paladugu Supports GPIO access on Zynq SoC. 2022978ae23SSiva Durga Prasad Paladugu 2039300f711SPeng Fanconfig DM_74X164 2049300f711SPeng Fan bool "74x164 serial-in/parallel-out 8-bits shift register" 2059300f711SPeng Fan depends on DM_GPIO 2069300f711SPeng Fan help 2079300f711SPeng Fan Driver for 74x164 compatible serial-in/parallel-out 8-outputs 2089300f711SPeng Fan shift registers, such as 74lv165, 74hc595. 2099300f711SPeng Fan This driver can be used to provide access to more gpio outputs. 2109300f711SPeng Fan 21103773439SPeng Fanconfig DM_PCA953X 21203773439SPeng Fan bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports" 21303773439SPeng Fan depends on DM_GPIO 21403773439SPeng Fan help 21503773439SPeng Fan Say yes here to provide access to several register-oriented 21603773439SPeng Fan SMBus I/O expanders, made mostly by NXP or TI. Compatible 21703773439SPeng Fan models include: 21803773439SPeng Fan 21903773439SPeng Fan 4 bits: pca9536, pca9537 22003773439SPeng Fan 22103773439SPeng Fan 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554, 22203773439SPeng Fan pca9556, pca9557, pca9574, tca6408, xra1202 22303773439SPeng Fan 22403773439SPeng Fan 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575, 22503773439SPeng Fan tca6416 22603773439SPeng Fan 22703773439SPeng Fan 24 bits: tca6424 22803773439SPeng Fan 22903773439SPeng Fan 40 bits: pca9505, pca9698 23003773439SPeng Fan 23103773439SPeng Fan Now, max 24 bits chips and PCA953X compatible chips are 23203773439SPeng Fan supported 23307d31f8fSmario.six@gdsys.cc 23407d31f8fSmario.six@gdsys.ccconfig MPC85XX_GPIO 23507d31f8fSmario.six@gdsys.cc bool "Freescale MPC85XX GPIO driver" 23607d31f8fSmario.six@gdsys.cc depends on DM_GPIO 23707d31f8fSmario.six@gdsys.cc help 23807d31f8fSmario.six@gdsys.cc This driver supports the built-in GPIO controller of MPC85XX CPUs. 23907d31f8fSmario.six@gdsys.cc Each GPIO bank is identified by its own entry in the device tree, 24007d31f8fSmario.six@gdsys.cc i.e. 24107d31f8fSmario.six@gdsys.cc 24207d31f8fSmario.six@gdsys.cc gpio-controller@fc00 { 24307d31f8fSmario.six@gdsys.cc #gpio-cells = <2>; 24407d31f8fSmario.six@gdsys.cc compatible = "fsl,pq3-gpio"; 24507d31f8fSmario.six@gdsys.cc reg = <0xfc00 0x100> 24607d31f8fSmario.six@gdsys.cc } 24707d31f8fSmario.six@gdsys.cc 24807d31f8fSmario.six@gdsys.cc By default, each bank is assumed to have 32 GPIOs, but the ngpios 24907d31f8fSmario.six@gdsys.cc setting is honored, so the number of GPIOs for each bank is 25007d31f8fSmario.six@gdsys.cc configurable to match the actual GPIO count of the SoC (e.g. the 25107d31f8fSmario.six@gdsys.cc 32/32/23 banks of the P1022 SoC). 25207d31f8fSmario.six@gdsys.cc 25351781783Smario.six@gdsys.cc Aside from the standard functions of input/output mode, and output 25451781783Smario.six@gdsys.cc value setting, the open-drain feature, which can configure individual 25551781783Smario.six@gdsys.cc GPIOs to work as open-drain outputs, is supported. 25607d31f8fSmario.six@gdsys.cc 25707d31f8fSmario.six@gdsys.cc The driver has been tested on MPC85XX, but it is likely that other 25807d31f8fSmario.six@gdsys.cc PowerQUICC III devices will work as well. 2590b11dbf7SMasahiro Yamadaendmenu 260