u-boot/drivers/pinctrl/sunxi/Kconfig
Samuel Holland 29babfd92b sunxi: pinctrl: Implement pin muxing functions
Implement the operations to get pin and function names, and to set the
mux for a pin. The pin count and pin names are calculated as if each
bank has the maximum number of pins. Function names are simply the index
into a list of { function name, mux value } pairs.

We assume all pins associated with a function use the same mux value for
that function. This is generally true within a group of pins on a single
port, but generally false when some peripheral can be muxed to multiple
ports. For example, A64 UART3 uses mux 3 on port D, and mux 2 on port H.
But all of the port D pins use the same mux value, and so do all of the
port H pins. This applies even when the pins for some function are not
contiguous, and when the lower-numbered mux values are unused. A good
example of both of these cases is SPI0 on most SoCs.

This strategy saves a lot of space (which is especially important for
SPL), but where the mux value for a certain function differs across
ports, it forces us to choose a single port for that function at build
time. Since almost all boards use the default (i.e. reference design)
pin muxes[1], this is unlikely to be a problem.

[1]: See commit dda9fa734f ("sunxi: Simplify MMC pinmux selection")

Signed-off-by: Samuel Holland <samuel@sholland.org>
[Andre: add comment summarising the commit message]
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
2022-04-04 23:24:01 +01:00

126 lines
2.8 KiB
Text

# SPDX-License-Identifier: GPL-2.0
if ARCH_SUNXI
config PINCTRL_SUNXI
select PINCTRL_FULL
select PINCTRL_GENERIC
select PINMUX
bool
config PINCTRL_SUNIV_F1C100S
bool "Support for the Allwinner F1C100s PIO"
default MACH_SUNIV
select PINCTRL_SUNXI
config PINCTRL_SUN4I_A10
bool "Support for the Allwinner A10 PIO"
default MACH_SUN4I
select PINCTRL_SUNXI
config PINCTRL_SUN5I_A13
bool "Support for the Allwinner A10s/A13 PIO"
default MACH_SUN5I
select PINCTRL_SUNXI
config PINCTRL_SUN6I_A31
bool "Support for the Allwinner A31 PIO"
default MACH_SUN6I
select PINCTRL_SUNXI
config PINCTRL_SUN6I_A31_R
bool "Support for the Allwinner A31 R-PIO"
default MACH_SUN6I
select PINCTRL_SUNXI
config PINCTRL_SUN7I_A20
bool "Support for the Allwinner A20/R40 PIO"
default MACH_SUN7I || MACH_SUN8I_R40
select PINCTRL_SUNXI
config PINCTRL_SUN8I_A23
bool "Support for the Allwinner A23 PIO"
default MACH_SUN8I_A23
select PINCTRL_SUNXI
config PINCTRL_SUN8I_A23_R
bool "Support for the Allwinner A23/A33 R-PIO"
default MACH_SUN8I_A23 || MACH_SUN8I_A33
select PINCTRL_SUNXI
config PINCTRL_SUN8I_A33
bool "Support for the Allwinner A33 PIO"
default MACH_SUN8I_A33
select PINCTRL_SUNXI
config PINCTRL_SUN8I_A83T
bool "Support for the Allwinner A83T PIO"
default MACH_SUN8I_A83T
select PINCTRL_SUNXI
config PINCTRL_SUN8I_A83T_R
bool "Support for the Allwinner A83T R-PIO"
default MACH_SUN8I_A83T
select PINCTRL_SUNXI
config PINCTRL_SUN8I_H3
bool "Support for the Allwinner H3 PIO"
default MACH_SUN8I_H3
select PINCTRL_SUNXI
config PINCTRL_SUN8I_H3_R
bool "Support for the Allwinner H3/H5 R-PIO"
default MACH_SUN8I_H3 || MACH_SUN50I_H5
select PINCTRL_SUNXI
config PINCTRL_SUN8I_V3S
bool "Support for the Allwinner V3s PIO"
default MACH_SUN8I_V3S
select PINCTRL_SUNXI
config PINCTRL_SUN9I_A80
bool "Support for the Allwinner A80 PIO"
default MACH_SUN9I
select PINCTRL_SUNXI
config PINCTRL_SUN9I_A80_R
bool "Support for the Allwinner A80 R-PIO"
default MACH_SUN9I
select PINCTRL_SUNXI
config PINCTRL_SUN50I_A64
bool "Support for the Allwinner A64 PIO"
default MACH_SUN50I
select PINCTRL_SUNXI
config PINCTRL_SUN50I_A64_R
bool "Support for the Allwinner A64 R-PIO"
default MACH_SUN50I
select PINCTRL_SUNXI
config PINCTRL_SUN50I_H5
bool "Support for the Allwinner H5 PIO"
default MACH_SUN50I_H5
select PINCTRL_SUNXI
config PINCTRL_SUN50I_H6
bool "Support for the Allwinner H6 PIO"
default MACH_SUN50I_H6
select PINCTRL_SUNXI
config PINCTRL_SUN50I_H6_R
bool "Support for the Allwinner H6 R-PIO"
default MACH_SUN50I_H6
select PINCTRL_SUNXI
config PINCTRL_SUN50I_H616
bool "Support for the Allwinner H616 PIO"
default MACH_SUN50I_H616
select PINCTRL_SUNXI
config PINCTRL_SUN50I_H616_R
bool "Support for the Allwinner H616 R-PIO"
default MACH_SUN50I_H616
select PINCTRL_SUNXI
endif