mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-23 11:33:32 +00:00
b814e0007e
This driver supports both pin muxing and GPIO support for the pin control logic found on Apple SoCs. Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
337 lines
11 KiB
Text
337 lines
11 KiB
Text
#
|
|
# PINCTRL infrastructure and drivers
|
|
#
|
|
|
|
menu "Pin controllers"
|
|
|
|
config PINCTRL
|
|
bool "Support pin controllers"
|
|
depends on DM
|
|
help
|
|
This enables the basic support for pinctrl framework. You may want
|
|
to enable some more options depending on what you want to do.
|
|
|
|
config PINCTRL_FULL
|
|
bool "Support full pin controllers"
|
|
depends on PINCTRL && OF_CONTROL
|
|
default y
|
|
help
|
|
This provides Linux-compatible device tree interface for the pinctrl
|
|
subsystem. This feature depends on device tree configuration because
|
|
it parses a device tree to look for the pinctrl device which the
|
|
peripheral device is associated with.
|
|
|
|
If this option is disabled (it is the only possible choice for non-DT
|
|
boards), the pinctrl core provides no systematic mechanism for
|
|
identifying peripheral devices, applying needed pinctrl settings.
|
|
It is totally up to the implementation of each low-level driver.
|
|
You can save memory footprint in return for some limitations.
|
|
|
|
config PINCTRL_GENERIC
|
|
bool "Support generic pin controllers"
|
|
depends on PINCTRL_FULL
|
|
default y
|
|
help
|
|
Say Y here if you want to use the pinctrl subsystem through the
|
|
generic DT interface. If enabled, some functions become available
|
|
to parse common properties such as "pins", "groups", "functions" and
|
|
some pin configuration parameters. It would be easier if you only
|
|
need the generic DT interface for pin muxing and pin configuration.
|
|
If you need to handle vendor-specific DT properties, you can disable
|
|
this option and implement your own set_state callback in the pinctrl
|
|
operations.
|
|
|
|
config PINMUX
|
|
bool "Support pin multiplexing controllers"
|
|
depends on PINCTRL_GENERIC
|
|
default y
|
|
help
|
|
This option enables pin multiplexing through the generic pinctrl
|
|
framework. Most SoCs have their own multiplexing arrangement where
|
|
a single pin can be used for several functions. An SoC pinctrl driver
|
|
allows the required function to be selected for each pin.
|
|
The driver is typically controlled by the device tree.
|
|
|
|
config PINCONF
|
|
bool "Support pin configuration controllers"
|
|
depends on PINCTRL_GENERIC
|
|
help
|
|
This option enables pin configuration through the generic pinctrl
|
|
framework.
|
|
|
|
config PINCONF_RECURSIVE
|
|
bool "Support recursive binding for pin configuration nodes"
|
|
depends on PINCTRL_FULL
|
|
default n if ARCH_STM32MP
|
|
default y
|
|
help
|
|
In the Linux pinctrl binding, the pin configuration nodes need not be
|
|
direct children of the pin controller device (may be grandchildren for
|
|
example). It is define is each individual pin controller device.
|
|
Say Y here if you want to keep this behavior with the pinconfig
|
|
u-class: all sub are recursively bounded.
|
|
If the option is disabled, this behavior is deactivated and only
|
|
the direct children of pin controller will be assumed as pin
|
|
configuration; you can save memory footprint when this feature is
|
|
no needed.
|
|
|
|
config SPL_PINCTRL
|
|
bool "Support pin controllers in SPL"
|
|
depends on SPL && SPL_DM
|
|
help
|
|
This option is an SPL-variant of the PINCTRL option.
|
|
See the help of PINCTRL for details.
|
|
|
|
config TPL_PINCTRL
|
|
bool "Support pin controllers in TPL"
|
|
depends on TPL && TPL_DM
|
|
help
|
|
This option is an TPL variant of the PINCTRL option.
|
|
See the help of PINCTRL for details.
|
|
|
|
config SPL_PINCTRL_FULL
|
|
bool "Support full pin controllers in SPL"
|
|
depends on SPL_PINCTRL && SPL_OF_CONTROL
|
|
default n if TARGET_STM32F746_DISCO
|
|
default y
|
|
help
|
|
This option is an SPL-variant of the PINCTRL_FULL option.
|
|
See the help of PINCTRL_FULL for details.
|
|
|
|
config TPL_PINCTRL_FULL
|
|
bool "Support full pin controllers in TPL"
|
|
depends on TPL_PINCTRL && TPL_OF_CONTROL
|
|
help
|
|
This option is an TPL-variant of the PINCTRL_FULL option.
|
|
See the help of PINCTRL_FULL for details.
|
|
|
|
config SPL_PINCTRL_GENERIC
|
|
bool "Support generic pin controllers in SPL"
|
|
depends on SPL_PINCTRL_FULL
|
|
default y
|
|
help
|
|
This option is an SPL-variant of the PINCTRL_GENERIC option.
|
|
See the help of PINCTRL_GENERIC for details.
|
|
|
|
config SPL_PINMUX
|
|
bool "Support pin multiplexing controllers in SPL"
|
|
depends on SPL_PINCTRL_GENERIC
|
|
default y
|
|
help
|
|
This option is an SPL-variant of the PINMUX option.
|
|
See the help of PINMUX for details.
|
|
The pinctrl subsystem can add a substantial overhead to the SPL
|
|
image since it typically requires quite a few tables either in the
|
|
driver or in the device tree. If this is acceptable and you need
|
|
to adjust pin multiplexing in SPL in order to boot into U-Boot,
|
|
enable this option. You will need to enable device tree in SPL
|
|
for this to work.
|
|
|
|
config SPL_PINCONF
|
|
bool "Support pin configuration controllers in SPL"
|
|
depends on SPL_PINCTRL_GENERIC
|
|
help
|
|
This option is an SPL-variant of the PINCONF option.
|
|
See the help of PINCONF for details.
|
|
|
|
config SPL_PINCONF_RECURSIVE
|
|
bool "Support recursive binding for pin configuration nodes in SPL"
|
|
depends on SPL_PINCTRL_FULL
|
|
default n if ARCH_STM32MP
|
|
default y
|
|
help
|
|
This option is an SPL-variant of the PINCONF_RECURSIVE option.
|
|
See the help of PINCONF_RECURSIVE for details.
|
|
|
|
if PINCTRL || SPL_PINCTRL
|
|
|
|
config PINCTRL_APPLE
|
|
bool "Apple pinctrl driver"
|
|
depends on DM && PINCTRL_GENERIC && ARCH_APPLE
|
|
default y
|
|
help
|
|
Support pin multiplexing on Apple SoCs.
|
|
|
|
The driver is controlled by a device tree node which contains
|
|
both the GPIO definitions and pin control functions for each
|
|
available multiplex function.
|
|
|
|
config PINCTRL_AR933X
|
|
bool "QCA/Athores ar933x pin control driver"
|
|
depends on DM && SOC_AR933X
|
|
help
|
|
Support pin multiplexing control on QCA/Athores ar933x SoCs.
|
|
The driver is controlled by a device tree node which contains
|
|
both the GPIO definitions and pin control functions for each
|
|
available multiplex function.
|
|
|
|
config PINCTRL_AT91
|
|
bool "AT91 pinctrl driver"
|
|
depends on DM
|
|
help
|
|
This option is to enable the AT91 pinctrl driver for AT91 PIO
|
|
controller.
|
|
|
|
AT91 PIO controller is a combined gpio-controller, pin-mux and
|
|
pin-config module. Each I/O pin may be dedicated as a general-purpose
|
|
I/O or be assigned to a function of an embedded peripheral. Each I/O
|
|
pin has a glitch filter providing rejection of glitches lower than
|
|
one-half of peripheral clock cycle and a debouncing filter providing
|
|
rejection of unwanted pulses from key or push button operations. You
|
|
can also control the multi-driver capability, pull-up and pull-down
|
|
feature on each I/O pin.
|
|
|
|
config PINCTRL_AT91PIO4
|
|
bool "AT91 PIO4 pinctrl driver"
|
|
depends on DM
|
|
help
|
|
This option is to enable the AT91 pinctrl driver for AT91 PIO4
|
|
controller which is available on SAMA5D2 SoC.
|
|
|
|
config PINCTRL_INTEL
|
|
bool "Standard Intel pin-control and pin-mux driver"
|
|
help
|
|
Recent Intel chips such as Apollo Lake (APL) use a common pin control
|
|
and GPIO scheme. The settings for this come from an SoC-specific
|
|
driver which must be separately enabled. The driver supports setting
|
|
pins on start-up and changing the GPIO attributes.
|
|
|
|
config PINCTRL_PIC32
|
|
bool "Microchip PIC32 pin-control and pin-mux driver"
|
|
depends on DM && MACH_PIC32
|
|
default y
|
|
help
|
|
Supports individual pin selection and configuration for each
|
|
remappable peripheral available on Microchip PIC32
|
|
SoCs. This driver is controlled by a device tree node which
|
|
contains both GPIO definition and pin control functions.
|
|
|
|
config PINCTRL_QCA953X
|
|
bool "QCA/Athores qca953x pin control driver"
|
|
depends on DM && SOC_QCA953X
|
|
help
|
|
Support pin multiplexing control on QCA/Athores qca953x SoCs.
|
|
|
|
The driver is controlled by a device tree node which contains both
|
|
the GPIO definitions and pin control functions for each available
|
|
multiplex function.
|
|
|
|
config PINCTRL_QE
|
|
bool "QE based pinctrl driver, like on mpc83xx"
|
|
depends on DM
|
|
help
|
|
This option is to enable the QE pinctrl driver for QE based io
|
|
controller.
|
|
|
|
config PINCTRL_ROCKCHIP_RV1108
|
|
bool "Rockchip rv1108 pin control driver"
|
|
depends on DM
|
|
help
|
|
Support pin multiplexing control on Rockchip rv1108 SoC.
|
|
|
|
The driver is controlled by a device tree node which contains
|
|
both the GPIO definitions and pin control functions for each
|
|
available multiplex function.
|
|
|
|
config PINCTRL_SANDBOX
|
|
bool "Sandbox pinctrl driver"
|
|
depends on SANDBOX
|
|
help
|
|
This enables pinctrl driver for sandbox.
|
|
|
|
Currently, this driver actually does nothing but print debug
|
|
messages when pinctrl operations are invoked.
|
|
|
|
config PINCTRL_SINGLE
|
|
bool "Single register pin-control and pin-multiplex driver"
|
|
depends on DM
|
|
help
|
|
This enables pinctrl driver for systems using a single register for
|
|
pin configuration and multiplexing. TI's AM335X SoCs are examples of
|
|
such systems.
|
|
|
|
Depending on the platform make sure to also enable OF_TRANSLATE and
|
|
eventually SPL_OF_TRANSLATE to get correct address translations.
|
|
|
|
config PINCTRL_STI
|
|
bool "STMicroelectronics STi pin-control and pin-mux driver"
|
|
depends on DM && ARCH_STI
|
|
default y
|
|
help
|
|
Support pin multiplexing control on STMicrolectronics STi SoCs.
|
|
|
|
The driver is controlled by a device tree node which contains both
|
|
the GPIO definitions and pin control functions for each available
|
|
multiplex function.
|
|
|
|
config PINCTRL_STM32
|
|
bool "ST STM32 pin control driver"
|
|
depends on DM
|
|
help
|
|
Supports pin multiplexing control on stm32 SoCs.
|
|
|
|
The driver is controlled by a device tree node which contains both
|
|
the GPIO definitions and pin control functions for each available
|
|
multiplex function.
|
|
|
|
config PINCTRL_STMFX
|
|
bool "STMicroelectronics STMFX I2C GPIO expander pinctrl driver"
|
|
depends on DM && PINCTRL_FULL
|
|
help
|
|
I2C driver for STMicroelectronics Multi-Function eXpander (STMFX)
|
|
GPIO expander.
|
|
Supports pin multiplexing control on stm32 SoCs.
|
|
|
|
The driver is controlled by a device tree node which contains both
|
|
the GPIO definitions and pin control functions for each available
|
|
multiplex function.
|
|
|
|
config SPL_PINCTRL_STMFX
|
|
bool "STMicroelectronics STMFX I2C GPIO expander pinctrl driver in SPL"
|
|
depends on SPL_PINCTRL_FULL
|
|
help
|
|
This option is an SPL-variant of the SPL_PINCTRL_STMFX option.
|
|
See the help of PINCTRL_STMFX for details.
|
|
|
|
config ASPEED_AST2500_PINCTRL
|
|
bool "Aspeed AST2500 pin control driver"
|
|
depends on DM && PINCTRL_GENERIC && ASPEED_AST2500
|
|
default y
|
|
help
|
|
Support pin multiplexing control on Aspeed ast2500 SoC. The driver
|
|
uses Generic Pinctrl framework and is compatible with the Linux
|
|
driver, i.e. it uses the same device tree configuration.
|
|
|
|
config ASPEED_AST2600_PINCTRL
|
|
bool "Aspeed AST2600 pin control driver"
|
|
depends on DM && PINCTRL_GENERIC && ASPEED_AST2600
|
|
default y
|
|
help
|
|
Support pin multiplexing control on Aspeed ast2600 SoC. The driver
|
|
uses Generic Pinctrl framework and is compatible with the Linux
|
|
driver, i.e. it uses the same device tree configuration.
|
|
|
|
config PINCTRL_K210
|
|
bool "Kendryte K210 Fully-Programmable Input/Output Array driver"
|
|
depends on DM && PINCTRL_GENERIC
|
|
help
|
|
Support pin multiplexing on the K210. The "FPIOA" can remap any
|
|
supported function to any multifunctional IO pin. It can also perform
|
|
basic GPIO functions, such as reading the current value of a pin.
|
|
endif
|
|
|
|
source "drivers/pinctrl/broadcom/Kconfig"
|
|
source "drivers/pinctrl/exynos/Kconfig"
|
|
source "drivers/pinctrl/intel/Kconfig"
|
|
source "drivers/pinctrl/mediatek/Kconfig"
|
|
source "drivers/pinctrl/meson/Kconfig"
|
|
source "drivers/pinctrl/mscc/Kconfig"
|
|
source "drivers/pinctrl/mtmips/Kconfig"
|
|
source "drivers/pinctrl/mvebu/Kconfig"
|
|
source "drivers/pinctrl/nexell/Kconfig"
|
|
source "drivers/pinctrl/nxp/Kconfig"
|
|
source "drivers/pinctrl/renesas/Kconfig"
|
|
source "drivers/pinctrl/rockchip/Kconfig"
|
|
source "drivers/pinctrl/uniphier/Kconfig"
|
|
|
|
endmenu
|