[PATCH v4 0/8] pinctrl: sunxi: Add Allwinner A523 support

Andre Przywara
2025-03-07T00:00:31Z

Hi,

this is the fourth drop of the series introducing pinctrl support for the
Allwinner A523 family of SoCs (comprising A523, A527, T527, H728). [1]
This time only a small fix, spotted by Jernej, thanks for that. Also
adding the new tags. Changelog below.

==============
The first four patches extend the sunxi pinctrl core code to deal with
some specialities of the new SoC: it uses every of the 11 possible banks
except the first one, which required some register remapping. The first
patch here is some cleanup, which we should take regardless, I think,
since it fixes some hack we introduced with the D1 support.

The main feature is actually patch 5, which introduces a new way to
express the required pinmux values for each function/pin pair.
Traditionally, we dumped a rather large table of data into the (single
image!) kernel for that, but this approach now puts that value into
the DT, and builds the table at runtime. This patch was posted twice
before [2][3], the last time LinusW seemed to be fine with the idea,
just complained about the abuse of the generic pinmux property. I changed
that to allwinner,pinmux now.

The rest of the patches are the usual suspects: the two files for the
two pinctrl instances of the new SoC (now very small), and the DT
binding.

Based on v6.14-rc1. Please have a look, review and test!

Cheers,
Andre

[1] https://linux-sunxi.org/A523#Family_of_sun55iw3
[2] https://patchwork.ozlabs.org/project/linux-gpio/cover/20171113012523.2328-1-andre.przywara@arm.com/
[3] https://lore.kernel.org/linux-arm-kernel/20221110014255.20711-1-andre.przywara@arm.com/

Changelog v3 .. v4:
- fix mixed up POW_MOD_SEL registers
- add review tags (with thanks!)

Changelog v2 .. v3:
- rename POW_MOD_SEL symbol
- drop CCU binding header inclusion in DT binding example
- add review tags (with thanks!)

Changelog v1 .. v2:
- rebased on v6.14-rc1
- extend regulator array to cover PortK as well
- increase number of pins in A523 PortJ from 18 to 28
- extend comment for new pinctrl DT code
- move DT binding into separate yaml file
- Add Jernej's Reviewed-by (with thanks!)

Andre Przywara (8):
pinctrl: sunxi: refactor pinctrl variants into flags
pinctrl: sunxi: increase number of GPIO bank regulators
pinctrl: sunxi: move bank K register offset
pinctrl: sunxi: support moved power configuration registers
pinctrl: sunxi: allow reading mux values from DT
dt-bindings: pinctrl: add compatible for Allwinner A523/T527
pinctrl: sunxi: Add support for the Allwinner A523
pinctrl: sunxi: Add support for the secondary A523 GPIO ports

.../allwinner,sun55i-a523-pinctrl.yaml | 175 ++++++++
drivers/pinctrl/sunxi/Kconfig | 10 +
drivers/pinctrl/sunxi/Makefile | 3 +
drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c | 6 +-
drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c | 8 +-
drivers/pinctrl/sunxi/pinctrl-sun55i-a523-r.c | 54 +++
drivers/pinctrl/sunxi/pinctrl-sun55i-a523.c | 54 +++
drivers/pinctrl/sunxi/pinctrl-sun5i.c | 8 +-
drivers/pinctrl/sunxi/pinctrl-sun6i-a31.c | 8 +-
drivers/pinctrl/sunxi/pinctrl-sun8i-v3s.c | 7 +-
drivers/pinctrl/sunxi/pinctrl-sunxi-dt.c | 374 ++++++++++++++++++
drivers/pinctrl/sunxi/pinctrl-sunxi.c | 54 ++-
drivers/pinctrl/sunxi/pinctrl-sunxi.h | 47 ++-
13 files changed, 758 insertions(+), 50 deletions(-)
create mode 100644 Documentation/devicetree/bindings/pinctrl/allwinner,sun55i-a523-pinctrl.yaml
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun55i-a523-r.c
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun55i-a523.c
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sunxi-dt.c

--
2.46.3