Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # PINCTRL infrastructure and drivers
0004 #
0005 
0006 menuconfig PINCTRL
0007         bool "Pin controllers"
0008 
0009 if PINCTRL
0010 
0011 config GENERIC_PINCTRL_GROUPS
0012         bool
0013 
0014 config PINMUX
0015         bool "Support pin multiplexing controllers" if COMPILE_TEST
0016 
0017 config GENERIC_PINMUX_FUNCTIONS
0018         bool
0019         select PINMUX
0020 
0021 config PINCONF
0022         bool "Support pin configuration controllers" if COMPILE_TEST
0023 
0024 config GENERIC_PINCONF
0025         bool
0026         select PINCONF
0027 
0028 config DEBUG_PINCTRL
0029         bool "Debug PINCTRL calls"
0030         depends on DEBUG_KERNEL
0031         help
0032           Say Y here to add some extra checks and diagnostics to PINCTRL calls.
0033 
0034 config PINCTRL_AMD
0035         bool "AMD GPIO pin control"
0036         depends on HAS_IOMEM
0037         depends on ACPI || COMPILE_TEST
0038         select GPIOLIB
0039         select GPIOLIB_IRQCHIP
0040         select PINMUX
0041         select PINCONF
0042         select GENERIC_PINCONF
0043         help
0044           The driver for memory mapped GPIO functionality on AMD platforms
0045           (x86 or arm). Most of the pins are usually muxed to some other
0046           functionality by firmware, so only a small amount is available
0047           for GPIO use.
0048 
0049           Requires ACPI/FDT device enumeration code to set up a platform
0050           device.
0051 
0052 config PINCTRL_APPLE_GPIO
0053         tristate "Apple SoC GPIO pin controller driver"
0054         depends on ARCH_APPLE
0055         select PINMUX
0056         select GPIOLIB
0057         select GPIOLIB_IRQCHIP
0058         select GENERIC_PINCTRL_GROUPS
0059         select GENERIC_PINMUX_FUNCTIONS
0060         select OF_GPIO
0061         help
0062           This is the driver for the GPIO controller found on Apple ARM SoCs,
0063           including M1.
0064 
0065           This driver can also be built as a module. If so, the module
0066           will be called pinctrl-apple-gpio.
0067 
0068 config PINCTRL_ARTPEC6
0069         bool "Axis ARTPEC-6 pin controller driver"
0070         depends on MACH_ARTPEC6
0071         select PINMUX
0072         select GENERIC_PINCONF
0073         help
0074           This is the driver for the Axis ARTPEC-6 pin controller. This driver
0075           supports pin function multiplexing as well as pin bias and drive
0076           strength configuration. Device tree integration instructions can be
0077           found in Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
0078 
0079 config PINCTRL_AS3722
0080         tristate "Pinctrl and GPIO driver for ams AS3722 PMIC"
0081         depends on MFD_AS3722 && GPIOLIB
0082         select PINMUX
0083         select GENERIC_PINCONF
0084         help
0085           AS3722 device supports the configuration of GPIO pins for different
0086           functionality. This driver supports the pinmux, push-pull and
0087           open drain configuration for the GPIO pins of AS3722 devices. It also
0088           supports the GPIO functionality through gpiolib.
0089 
0090 config PINCTRL_AT91
0091         bool "AT91 pinctrl driver"
0092         depends on OF
0093         depends on ARCH_AT91
0094         select PINMUX
0095         select PINCONF
0096         select GPIOLIB
0097         select OF_GPIO
0098         select GPIOLIB_IRQCHIP
0099         help
0100           Say Y here to enable the at91 pinctrl driver
0101 
0102 config PINCTRL_AT91PIO4
0103         bool "AT91 PIO4 pinctrl driver"
0104         depends on OF
0105         depends on HAS_IOMEM
0106         depends on ARCH_AT91 || COMPILE_TEST
0107         select PINMUX
0108         select GENERIC_PINCONF
0109         select GPIOLIB
0110         select GPIOLIB_IRQCHIP
0111         select OF_GPIO
0112         help
0113           Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4
0114           controller available on sama5d2 SoC.
0115 
0116 config PINCTRL_AXP209
0117         tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support"
0118         depends on MFD_AXP20X
0119         depends on OF
0120         select PINMUX
0121         select GENERIC_PINCONF
0122         select GPIOLIB
0123         help
0124           AXP PMICs provides multiple GPIOs that can be muxed for different
0125           functions. This driver bundles a pinctrl driver to select the function
0126           muxing and a GPIO driver to handle the GPIO when the GPIO function is
0127           selected.
0128           Say Y to enable pinctrl and GPIO support for the AXP209 PMIC.
0129 
0130 config PINCTRL_BM1880
0131         bool "Bitmain BM1880 Pinctrl driver"
0132         depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
0133         default ARCH_BITMAIN
0134         select PINMUX
0135         help
0136           Pinctrl driver for Bitmain BM1880 SoC.
0137 
0138 config PINCTRL_DA850_PUPD
0139         tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down groups"
0140         depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)
0141         select PINCONF
0142         select GENERIC_PINCONF
0143         help
0144           Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
0145           pull-up and pull-down pin groups.
0146 
0147 config PINCTRL_DA9062
0148         tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
0149         depends on MFD_DA9062
0150         select GPIOLIB
0151         help
0152           The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for
0153           different functions. This driver bundles a pinctrl driver to select the
0154           function muxing and a GPIO driver to handle the GPIO when the GPIO
0155           function is selected.
0156 
0157           Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
0158 
0159 config PINCTRL_DIGICOLOR
0160         bool
0161         depends on OF && (ARCH_DIGICOLOR || COMPILE_TEST)
0162         select PINMUX
0163         select GENERIC_PINCONF
0164 
0165 config PINCTRL_EQUILIBRIUM
0166         tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
0167         depends on OF && HAS_IOMEM
0168         depends on X86 || COMPILE_TEST
0169         select PINMUX
0170         select PINCONF
0171         select GPIOLIB
0172         select GPIO_GENERIC
0173         select GPIOLIB_IRQCHIP
0174         select GENERIC_PINCONF
0175         select GENERIC_PINCTRL_GROUPS
0176         select GENERIC_PINMUX_FUNCTIONS
0177         help
0178           Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning
0179           Mountain network processor SoC that supports both the GPIO and pin
0180           control frameworks. It provides interfaces to setup pin muxing, assign
0181           desired pin functions, configure GPIO attributes for LGM SoC pins.
0182           Pin muxing and pin config settings are retrieved from device tree.
0183 
0184 config PINCTRL_GEMINI
0185         bool
0186         depends on ARCH_GEMINI
0187         default ARCH_GEMINI
0188         select PINMUX
0189         select GENERIC_PINCONF
0190         select MFD_SYSCON
0191 
0192 config PINCTRL_INGENIC
0193         bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
0194         default MACH_INGENIC
0195         depends on OF
0196         depends on MIPS || COMPILE_TEST
0197         select GENERIC_PINCONF
0198         select GENERIC_PINCTRL_GROUPS
0199         select GENERIC_PINMUX_FUNCTIONS
0200         select GPIOLIB
0201         select GPIOLIB_IRQCHIP
0202         select REGMAP_MMIO
0203 
0204 config PINCTRL_K210
0205         bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
0206         depends on RISCV && SOC_CANAAN && OF
0207         select GENERIC_PINMUX_FUNCTIONS
0208         select GENERIC_PINCONF
0209         select GPIOLIB
0210         select OF_GPIO
0211         select REGMAP_MMIO
0212         default SOC_CANAAN
0213         help
0214           Add support for the Canaan Kendryte K210 RISC-V SOC Field
0215           Programmable IO Array (FPIOA) controller.
0216 
0217 config PINCTRL_KEEMBAY
0218         tristate "Pinctrl driver for Intel Keem Bay SoC"
0219         depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
0220         depends on HAS_IOMEM
0221         select PINMUX
0222         select PINCONF
0223         select GENERIC_PINCONF
0224         select GENERIC_PINCTRL_GROUPS
0225         select GENERIC_PINMUX_FUNCTIONS
0226         select GPIOLIB
0227         select GPIOLIB_IRQCHIP
0228         select GPIO_GENERIC
0229         help
0230           This selects pin control driver for the Intel Keem Bay SoC.
0231           It provides pin config functions such as pull-up, pull-down,
0232           interrupt, drive strength, sec lock, Schmitt trigger, slew
0233           rate control and direction control. This module will be
0234           called as pinctrl-keembay.
0235 
0236 config PINCTRL_LANTIQ
0237         bool
0238         depends on LANTIQ
0239         select PINMUX
0240         select PINCONF
0241 
0242 config PINCTRL_FALCON
0243         bool
0244         depends on SOC_FALCON
0245         depends on PINCTRL_LANTIQ
0246 
0247 config PINCTRL_XWAY
0248         bool
0249         depends on SOC_TYPE_XWAY
0250         depends on PINCTRL_LANTIQ
0251 
0252 config PINCTRL_LPC18XX
0253         bool "NXP LPC18XX/43XX SCU pinctrl driver"
0254         depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
0255         default ARCH_LPC18XX
0256         select PINMUX
0257         select GENERIC_PINCONF
0258         help
0259           Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
0260 
0261 config PINCTRL_MAX77620
0262         tristate "MAX77620/MAX20024 Pincontrol support"
0263         depends on MFD_MAX77620 && OF
0264         select PINMUX
0265         select GENERIC_PINCONF
0266         help
0267           Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
0268           This PMIC has 8 GPIO pins that work as GPIO as well as special
0269           function in alternate mode. This driver also configure push-pull,
0270           open drain, FPS slots etc.
0271 
0272 config PINCTRL_MCP23S08_I2C
0273         tristate
0274         select REGMAP_I2C
0275 
0276 config PINCTRL_MCP23S08_SPI
0277         tristate
0278         select REGMAP_SPI
0279 
0280 config PINCTRL_MCP23S08
0281         tristate "Microchip MCP23xxx I/O expander"
0282         depends on SPI_MASTER || I2C
0283         select GPIOLIB
0284         select GPIOLIB_IRQCHIP
0285         select GENERIC_PINCONF
0286         select PINCTRL_MCP23S08_I2C if I2C
0287         select PINCTRL_MCP23S08_SPI if SPI_MASTER
0288         help
0289           SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
0290           MCP23008 / MCP23017 / MCP23018 I/O expanders.
0291           This provides a GPIO interface supporting inputs and outputs and a
0292           corresponding interrupt-controller.
0293 
0294 config PINCTRL_MICROCHIP_SGPIO
0295         bool "Pinctrl driver for Microsemi/Microchip Serial GPIO"
0296         depends on OF
0297         depends on HAS_IOMEM
0298         select GPIOLIB
0299         select GPIOLIB_IRQCHIP
0300         select GENERIC_PINCONF
0301         select GENERIC_PINCTRL_GROUPS
0302         select GENERIC_PINMUX_FUNCTIONS
0303         select OF_GPIO
0304         help
0305           Support for the serial GPIO interface used on Microsemi and
0306           Microchip SoCs. By using a serial interface, the SIO
0307           controller significantly extends the number of available
0308           GPIOs with a minimum number of additional pins on the
0309           device. The primary purpose of the SIO controller is to
0310           connect control signals from SFP modules and to act as an
0311           LED controller.
0312 
0313 config PINCTRL_OCELOT
0314         tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
0315         depends on OF
0316         depends on HAS_IOMEM
0317         select GPIOLIB
0318         select GPIOLIB_IRQCHIP
0319         select GENERIC_PINCONF
0320         select GENERIC_PINCTRL_GROUPS
0321         select GENERIC_PINMUX_FUNCTIONS
0322         select OF_GPIO
0323         select REGMAP_MMIO
0324 
0325 config PINCTRL_OXNAS
0326         bool
0327         depends on OF
0328         select PINMUX
0329         select PINCONF
0330         select GENERIC_PINCONF
0331         select GPIOLIB
0332         select OF_GPIO
0333         select GPIOLIB_IRQCHIP
0334         select MFD_SYSCON
0335 
0336 config PINCTRL_PALMAS
0337         tristate "Pinctrl driver for the PALMAS Series MFD devices"
0338         depends on OF && MFD_PALMAS
0339         select PINMUX
0340         select GENERIC_PINCONF
0341         help
0342           Palmas device supports the configuration of pins for different
0343           functionality. This driver supports the pinmux, push-pull and
0344           open drain configuration for the Palmas series devices like
0345           TPS65913, TPS80036 etc.
0346 
0347 config PINCTRL_PIC32
0348         bool "Microchip PIC32 pin controller driver"
0349         depends on OF
0350         depends on MACH_PIC32
0351         select PINMUX
0352         select GENERIC_PINCONF
0353         select GPIOLIB_IRQCHIP
0354         select OF_GPIO
0355         help
0356           This is the pin controller and gpio driver for Microchip PIC32
0357           microcontrollers. This option is selected automatically when specific
0358           machine and arch are selected to build.
0359 
0360 config PINCTRL_PIC32MZDA
0361         def_bool y if PIC32MZDA
0362         select PINCTRL_PIC32
0363 
0364 config PINCTRL_PISTACHIO
0365         bool "IMG Pistachio SoC pinctrl driver"
0366         depends on OF && (MIPS || COMPILE_TEST)
0367         depends on GPIOLIB
0368         select PINMUX
0369         select GENERIC_PINCONF
0370         select GPIOLIB_IRQCHIP
0371         select OF_GPIO
0372         help
0373           This support pinctrl and GPIO driver for IMG Pistachio SoC.
0374 
0375 config PINCTRL_RK805
0376         tristate "Pinctrl and GPIO driver for RK805 PMIC"
0377         depends on MFD_RK808
0378         select GPIOLIB
0379         select PINMUX
0380         select GENERIC_PINCONF
0381         help
0382           This selects the pinctrl driver for RK805.
0383 
0384 config PINCTRL_ROCKCHIP
0385         tristate "Rockchip gpio and pinctrl driver"
0386         depends on ARCH_ROCKCHIP || COMPILE_TEST
0387         depends on OF
0388         select GPIOLIB
0389         select PINMUX
0390         select GENERIC_PINCONF
0391         select GENERIC_IRQ_CHIP
0392         select MFD_SYSCON
0393         select OF_GPIO
0394         default ARCH_ROCKCHIP
0395         help
0396           This support pinctrl and GPIO driver for Rockchip SoCs.
0397 
0398 config PINCTRL_SINGLE
0399         tristate "One-register-per-pin type device tree based pinctrl driver"
0400         depends on OF
0401         depends on HAS_IOMEM
0402         select GENERIC_PINCTRL_GROUPS
0403         select GENERIC_PINMUX_FUNCTIONS
0404         select GENERIC_PINCONF
0405         help
0406           This selects the device tree based generic pinctrl driver.
0407 
0408 config PINCTRL_ST
0409         bool
0410         depends on OF
0411         select PINMUX
0412         select PINCONF
0413         select GPIOLIB_IRQCHIP
0414 
0415 config PINCTRL_STARFIVE
0416         tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC"
0417         depends on SOC_STARFIVE || COMPILE_TEST
0418         depends on OF
0419         default SOC_STARFIVE
0420         select GENERIC_PINCTRL_GROUPS
0421         select GENERIC_PINMUX_FUNCTIONS
0422         select GENERIC_PINCONF
0423         select GPIOLIB
0424         select GPIOLIB_IRQCHIP
0425         select OF_GPIO
0426         help
0427           Say yes here to support pin control on the StarFive JH7100 SoC.
0428           This also provides an interface to the GPIO pins not used by other
0429           peripherals supporting inputs, outputs, configuring pull-up/pull-down
0430           and interrupts on input changes.
0431 
0432 config PINCTRL_STMFX
0433         tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
0434         depends on I2C
0435         depends on OF_GPIO
0436         select GENERIC_PINCONF
0437         select GPIOLIB_IRQCHIP
0438         select MFD_STMFX
0439         help
0440           Driver for STMicroelectronics Multi-Function eXpander (STMFX)
0441           GPIO expander.
0442           This provides a GPIO interface supporting inputs and outputs,
0443           and configuring push-pull, open-drain, and can also be used as
0444           interrupt-controller.
0445 
0446 config PINCTRL_SX150X
0447         bool "Semtech SX150x I2C GPIO expander pinctrl driver"
0448         depends on I2C=y
0449         select PINMUX
0450         select PINCONF
0451         select GENERIC_PINCONF
0452         select GPIOLIB
0453         select GPIOLIB_IRQCHIP
0454         select REGMAP
0455         help
0456           Say Y here to provide support for Semtech SX150x-series I2C
0457           GPIO expanders as pinctrl module.
0458           Compatible models include:
0459           - 8 bits:  sx1508q, sx1502q
0460           - 16 bits: sx1509q, sx1506q
0461 
0462 config PINCTRL_TB10X
0463         bool
0464         depends on OF && ARC_PLAT_TB10X
0465         select GPIOLIB
0466 
0467 config PINCTRL_THUNDERBAY
0468         tristate "Generic pinctrl and GPIO driver for Intel Thunder Bay SoC"
0469         depends on ARCH_THUNDERBAY || (ARM64 && COMPILE_TEST)
0470         depends on HAS_IOMEM
0471         select PINMUX
0472         select PINCONF
0473         select GENERIC_PINCONF
0474         select GENERIC_PINCTRL_GROUPS
0475         select GENERIC_PINMUX_FUNCTIONS
0476         select GPIOLIB
0477         select GPIOLIB_IRQCHIP
0478         select GPIO_GENERIC
0479         help
0480           This selects pin control driver for the Intel Thunder Bay SoC.
0481           It provides pin config functions such as pull-up, pull-down,
0482           interrupt, drive strength, sec lock, Schmitt trigger, slew
0483           rate control and direction control. This module will be
0484           called as pinctrl-thunderbay.
0485 
0486 config PINCTRL_ZYNQ
0487         bool "Pinctrl driver for Xilinx Zynq"
0488         depends on ARCH_ZYNQ
0489         select PINMUX
0490         select GENERIC_PINCONF
0491         help
0492           This selects the pinctrl driver for Xilinx Zynq.
0493 
0494 config PINCTRL_ZYNQMP
0495         tristate "Pinctrl driver for Xilinx ZynqMP"
0496         depends on ZYNQMP_FIRMWARE
0497         select PINMUX
0498         select GENERIC_PINCONF
0499         default ZYNQMP_FIRMWARE
0500         help
0501           This selects the pinctrl driver for Xilinx ZynqMP platform.
0502           This driver will query the pin information from the firmware
0503           and allow configuring the pins.
0504           Configuration can include the mux function to select on those
0505           pin(s)/group(s), and various pin configuration parameters
0506           such as pull-up, slew rate, etc.
0507           This driver can also be built as a module. If so, the module
0508           will be called pinctrl-zynqmp.
0509 
0510 source "drivers/pinctrl/actions/Kconfig"
0511 source "drivers/pinctrl/aspeed/Kconfig"
0512 source "drivers/pinctrl/bcm/Kconfig"
0513 source "drivers/pinctrl/berlin/Kconfig"
0514 source "drivers/pinctrl/cirrus/Kconfig"
0515 source "drivers/pinctrl/freescale/Kconfig"
0516 source "drivers/pinctrl/intel/Kconfig"
0517 source "drivers/pinctrl/mediatek/Kconfig"
0518 source "drivers/pinctrl/meson/Kconfig"
0519 source "drivers/pinctrl/mvebu/Kconfig"
0520 source "drivers/pinctrl/nomadik/Kconfig"
0521 source "drivers/pinctrl/nuvoton/Kconfig"
0522 source "drivers/pinctrl/pxa/Kconfig"
0523 source "drivers/pinctrl/qcom/Kconfig"
0524 source "drivers/pinctrl/ralink/Kconfig"
0525 source "drivers/pinctrl/renesas/Kconfig"
0526 source "drivers/pinctrl/samsung/Kconfig"
0527 source "drivers/pinctrl/spear/Kconfig"
0528 source "drivers/pinctrl/sprd/Kconfig"
0529 source "drivers/pinctrl/stm32/Kconfig"
0530 source "drivers/pinctrl/sunplus/Kconfig"
0531 source "drivers/pinctrl/sunxi/Kconfig"
0532 source "drivers/pinctrl/tegra/Kconfig"
0533 source "drivers/pinctrl/ti/Kconfig"
0534 source "drivers/pinctrl/uniphier/Kconfig"
0535 source "drivers/pinctrl/visconti/Kconfig"
0536 source "drivers/pinctrl/vt8500/Kconfig"
0537 
0538 endif