
I'd like to propose antoher pinctrl design, which is closer to Linux's one.
1/7 adds the uclass support.
2/7 - 5/7 show how low-level drivers can be implemeted on my SoCs as example.
You can implement them in your own way, but they are often done with architecture-specific operation + SoC-specific pin data.
2/7 is the callbacks commonly used for my SoC family. 3/7-5/7 are SoC-specific data sets.
6/7 shows some examples for device tree implementations.
Masahiro Yamada (7): pinctrl: add pinctrl framework pinctrl: UniPhier: add UniPhier pinctrl core support pinctrl: UniPhier: add UniPhier PH1-LD4 pinctrl driver pinctrl: UniPhier: add UniPhier PH1-Pro4 pinctrl driver pinctrl: UniPhier: add UniPhier PH1-sLD8 pinctrl driver ARM: dts: UniPhier: add nodes for pinctrl devices and pin configs ARM: select pinctrl drivers from Kconfig
arch/arm/dts/uniphier-ph1-ld4.dtsi | 30 ++ arch/arm/dts/uniphier-ph1-pro4.dtsi | 34 +++ arch/arm/dts/uniphier-ph1-sld8.dtsi | 30 ++ arch/arm/dts/uniphier-pinctrl.dtsi | 80 +++++ arch/arm/mach-uniphier/Kconfig | 3 + drivers/Kconfig | 2 + drivers/Makefile | 1 + drivers/core/device.c | 5 + drivers/pinctrl/Kconfig | 4 + drivers/pinctrl/Makefile | 3 + drivers/pinctrl/pinctrl-uclass.c | 353 +++++++++++++++++++++++ drivers/pinctrl/uniphier/Kconfig | 19 ++ drivers/pinctrl/uniphier/Makefile | 5 + drivers/pinctrl/uniphier/pinctrl-ph1-ld4.c | 69 +++++ drivers/pinctrl/uniphier/pinctrl-ph1-pro4.c | 69 +++++ drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c | 65 +++++ drivers/pinctrl/uniphier/pinctrl-uniphier-core.c | 127 ++++++++ drivers/pinctrl/uniphier/pinctrl-uniphier.h | 51 ++++ include/dm/device.h | 3 + include/dm/pinctrl.h | 28 ++ include/dm/uclass-id.h | 1 + 21 files changed, 982 insertions(+) create mode 100644 arch/arm/dts/uniphier-pinctrl.dtsi create mode 100644 drivers/pinctrl/Kconfig create mode 100644 drivers/pinctrl/Makefile create mode 100644 drivers/pinctrl/pinctrl-uclass.c create mode 100644 drivers/pinctrl/uniphier/Kconfig create mode 100644 drivers/pinctrl/uniphier/Makefile create mode 100644 drivers/pinctrl/uniphier/pinctrl-ph1-ld4.c create mode 100644 drivers/pinctrl/uniphier/pinctrl-ph1-pro4.c create mode 100644 drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c create mode 100644 drivers/pinctrl/uniphier/pinctrl-uniphier-core.c create mode 100644 drivers/pinctrl/uniphier/pinctrl-uniphier.h create mode 100644 include/dm/pinctrl.h