pinctrl: mscc: Add gpio and pinctrl driver for MSCC MIPS SoCs (VcoreIII based)
PATCH v2 1/1 pinctrl: mscc: Add gpio and pinctrl driver for MSCC MIPS SoCs (VcoreIII based)
This driver supports the pin and gpio controller found in the Ocelot and Luton SoCs.
The driver was inspired from the pinctrl driver in Linux, but was simplified and was modified to allow supporting an other SoCs (Luton).
For Ocelot and Luton the controller is the same, only the pins to program differ.
Signed-off-by Gregory CLEMENT <[email protected]>
---
Changelog:
v1 -> v2:
- use clrbits and setbits from MIPS
- use const and static when needed
- fix style
- use dev_remap_addr
drivers/pinctrl/Kconfig | 1 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/mscc/Kconfig | 22 +++ drivers/pinctrl/mscc/Makefile | 5 + drivers/pinctrl/mscc/mscc-common.c | 236 ++++++++++++++++++++++++++ drivers/pinctrl/mscc/mscc-common.h | 51 ++++++ drivers/pinctrl/mscc/pinctrl-luton.c | 172 +++++++++++++++++++ drivers/pinctrl/mscc/pinctrl-ocelot.c | 188 ++++++++++++++++++++ 8 files changed, 676 insertions(+) create mode 100644 drivers/pinctrl/mscc/Kconfig create mode 100644 drivers/pinctrl/mscc/Makefile create mode 100644 drivers/pinctrl/mscc/mscc-common.c create mode 100644 drivers/pinctrl/mscc/mscc-common.h create mode 100644 drivers/pinctrl/mscc/pinctrl-luton.c create mode 100644 drivers/pinctrl/mscc/pinctrl-ocelot.c
drivers/pinctrl/Kconfig +1 -0
@@ -305,6 +305,7 @@ source "drivers/pinctrl/nxp/Kconfig" source "drivers/pinctrl/renesas/Kconfig" source "drivers/pinctrl/uniphier/Kconfig" source "drivers/pinctrl/exynos/Kconfig" +source "drivers/pinctrl/mscc/Kconfig" source "drivers/pinctrl/mvebu/Kconfig" source "drivers/pinctrl/broadcom/Kconfig"
drivers/pinctrl/Makefile +1 -0
@@ -16,6 +16,7 @@ obj-$(CONFIG_PINCTRL_UNIPHIER) += uniphier/ obj-$(CONFIG_PINCTRL_PIC32) += pinctrl_pic32.o obj-$(CONFIG_PINCTRL_EXYNOS) += exynos/ obj-$(CONFIG_PINCTRL_MESON) += meson/ +obj-y += mscc/ obj-$(CONFIG_ARCH_MVEBU) += mvebu/ obj-$(CONFIG_PINCTRL_SINGLE) += pinctrl-single.o obj-$(CONFIG_PINCTRL_STI) += pinctrl-sti.o
drivers/pinctrl/mscc/Kconfig new file +22 -0
@@ -0,0 +1,22 @@ +# SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +config PINCTRL_MSCC + bool + +config PINCTRL_MSCC_OCELOT + depends on SOC_OCELOT && PINCTRL_FULL && OF_CONTROL + select PINCTRL_MSCC + default y + bool "Microsemi ocelot family pin control driver" + help + Support pin multiplexing and pin configuration control on + Microsemi ocelot SoCs. + +config PINCTRL_MSCC_LUTON + depends on SOC_LUTON && PINCTRL_FULL && OF_CONTROL + select PINCTRL_MSCC + default y + bool "Microsemi luton family pin control driver" + help + Support pin multiplexing and pin configuration control on + Microsemi luton SoCs.
drivers/pinctrl/mscc/Makefile new file +5 -0
@@ -0,0 +1,5 @@ +# SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +obj-$(CONFIG_PINCTRL_MSCC) += mscc-common.o +obj-$(CONFIG_PINCTRL_MSCC_OCELOT) += pinctrl-ocelot.o +obj-$(CONFIG_PINCTRL_MSCC_LUTON) += pinctrl-luton.o
drivers/pinctrl/mscc/mscc-common.c new file +236 -0
236 lines not on this page · raw message
drivers/pinctrl/mscc/mscc-common.h new file +51 -0
51 lines not on this page · raw message
drivers/pinctrl/mscc/pinctrl-luton.c new file +172 -0
172 lines not on this page · raw message
drivers/pinctrl/mscc/pinctrl-ocelot.c new file +188 -0
188 lines not on this page · raw message
Signature · 1 line
2.19.1