This series resolves some longstanding TODOs by implementing a pinctrl driver for sunxi platforms and converting DM drivers to use it.
I am sending this as RFC because I have only tested this on a limited amount of hardware, and there are quite a few magic numbers involved, so it is likely I missed something. Also, I'm not sure the how best to split up the patches by subsystem, or if that is necessary. This series depends on the sunxi-gpio series I just sent. Samuel Holland (23): sunxi: pinctrl: Create the driver skeleton sunxi: pinctrl: Implement pin muxing functions sunxi: pinctrl: Implement get_pin_muxing function sunxi: pinctrl: Implement pin configuration pinctrl: sunxi: Add UART pinmuxes sunxi: Skip non-DM UART pin setup when PINCTRL=y pinctrl: sunxi: Add sun4i EMAC pinmuxes net: sunxi_emac: Remove non-DM pin setup pinctrl: sunxi: Add sunxi GMAC pinmuxes sunxi: Remove non-DM GMAC pin setup pinctrl: sunxi: Add sun8i EMAC pinmuxes net: sun8i_emac: Remove non-DM pin setup pinctrl: sunxi: Add I2C pinmuxes sunxi: Remove options and setup code for I2C2-I2C4 sunxi: Remove non-DM I2C clock/pin setup from U-Boot i2c: sun6i_p2wi: Only do non-DM pin setup for non-DM I2C i2c: sun8i_rsb: Only do non-DM pin setup for non-DM I2C pinctrl: sunxi: Add MMC pinmuxes sunxi: Remove non-DM MMC pin setup pinctrl: sunxi: a64: Add the PWM pinmux pwm: sunxi: Remove non-DM pin setup pinctrl: sunxi: Add SPI0 pinmuxes spi: sun4i_spi: Remove non-DM pin setup MAINTAINERS | 1 + arch/arm/Kconfig | 1 + arch/arm/include/asm/arch-sunxi/gpio.h | 18 +- arch/arm/include/asm/arch-sunxi/i2c.h | 11 +- arch/arm/mach-sunxi/Kconfig | 22 -- arch/arm/mach-sunxi/board.c | 2 + board/sunxi/board.c | 67 ------ board/sunxi/gmac.c | 55 ----- drivers/gpio/sunxi_gpio.c | 130 +----------- drivers/i2c/sun6i_p2wi.c | 6 +- drivers/i2c/sun8i_rsb.c | 40 ++-- drivers/net/sun8i_emac.c | 90 -------- drivers/net/sunxi_emac.c | 5 - drivers/pinctrl/Kconfig | 1 + drivers/pinctrl/Makefile | 2 +- drivers/pinctrl/sunxi/Kconfig | 122 +++++++++++ drivers/pinctrl/sunxi/Makefile | 26 +++ drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c | 53 +++++ drivers/pinctrl/sunxi/pinctrl-sun50i-a64-r.c | 38 ++++ drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c | 51 +++++ drivers/pinctrl/sunxi/pinctrl-sun50i-h5.c | 50 +++++ drivers/pinctrl/sunxi/pinctrl-sun50i-h6-r.c | 38 ++++ drivers/pinctrl/sunxi/pinctrl-sun50i-h6.c | 49 +++++ drivers/pinctrl/sunxi/pinctrl-sun50i-h616-r.c | 38 ++++ drivers/pinctrl/sunxi/pinctrl-sun50i-h616.c | 47 +++++ drivers/pinctrl/sunxi/pinctrl-sun5i-a13.c | 53 +++++ drivers/pinctrl/sunxi/pinctrl-sun6i-a31-r.c | 38 ++++ drivers/pinctrl/sunxi/pinctrl-sun6i-a31.c | 53 +++++ drivers/pinctrl/sunxi/pinctrl-sun7i-a20.c | 57 +++++ drivers/pinctrl/sunxi/pinctrl-sun8i-a23-r.c | 38 ++++ drivers/pinctrl/sunxi/pinctrl-sun8i-a23.c | 47 +++++ drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c | 49 +++++ drivers/pinctrl/sunxi/pinctrl-sun8i-a83t-r.c | 38 ++++ drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c | 50 +++++ drivers/pinctrl/sunxi/pinctrl-sun8i-h3-r.c | 38 ++++ drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c | 50 +++++ drivers/pinctrl/sunxi/pinctrl-sun8i-v3s.c | 54 +++++ drivers/pinctrl/sunxi/pinctrl-sun9i-a80-r.c | 39 ++++ drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c | 48 +++++ drivers/pinctrl/sunxi/pinctrl-sunxi.c | 196 ++++++++++++++++++ drivers/pinctrl/sunxi/pinctrl-sunxi.h | 21 ++ drivers/pwm/sunxi_pwm.c | 11 - drivers/spi/spi-sunxi.c | 83 -------- 43 files changed, 1414 insertions(+), 512 deletions(-) create mode 100644 drivers/pinctrl/sunxi/Kconfig create mode 100644 drivers/pinctrl/sunxi/Makefile create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-a64-r.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-h5.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-h6-r.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-h6.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-h616-r.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-h616.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun5i-a13.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun6i-a31-r.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun6i-a31.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun7i-a20.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun8i-a23-r.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun8i-a23.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun8i-a83t-r.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun8i-h3-r.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun8i-v3s.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun9i-a80-r.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sunxi.c create mode 100644 drivers/pinctrl/sunxi/pinctrl-sunxi.h -- 2.32.0