2021-08-13 01:09:43 +00:00
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
|
|
|
|
if ARCH_SUNXI
|
|
|
|
|
|
|
|
config PINCTRL_SUNXI
|
|
|
|
select PINCTRL_FULL
|
|
|
|
select PINCTRL_GENERIC
|
2021-08-29 02:10:47 +00:00
|
|
|
select PINCONF
|
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 dda9fa734f81 ("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>
2021-08-17 04:56:47 +00:00
|
|
|
select PINMUX
|
2021-08-13 01:09:43 +00:00
|
|
|
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
|