Re: [U-Boot] [PATCH v2 10/28] pinctrl: add support for MediaTek MT7628
Am 18.09.19 um 04:15 schrieb Weijie Gao: > This patch adds pinctrl support for mt7628, with a file for common pinmux > functions and a file for mt7628 which has additional support for pinconf. > > Signed-off-by: Weijie Gao > --- > drivers/pinctrl/Kconfig | 1 + > drivers/pinctrl/Makefile | 1 + > drivers/pinctrl/mtmips/Kconfig| 13 + > drivers/pinctrl/mtmips/Makefile | 7 + > drivers/pinctrl/mtmips/pinctrl-mt7628.c | 585 ++ > .../pinctrl/mtmips/pinctrl-mtmips-common.c| 87 +++ > .../pinctrl/mtmips/pinctrl-mtmips-common.h| 53 ++ > 7 files changed, 747 insertions(+) > create mode 100644 drivers/pinctrl/mtmips/Kconfig > create mode 100644 drivers/pinctrl/mtmips/Makefile > create mode 100644 drivers/pinctrl/mtmips/pinctrl-mt7628.c > create mode 100644 drivers/pinctrl/mtmips/pinctrl-mtmips-common.c > create mode 100644 drivers/pinctrl/mtmips/pinctrl-mtmips-common.h > > diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig > index a0ac167d14..1634dffb35 100644 > --- a/drivers/pinctrl/Kconfig > +++ b/drivers/pinctrl/Kconfig > @@ -244,6 +244,7 @@ source "drivers/pinctrl/exynos/Kconfig" > source "drivers/pinctrl/mediatek/Kconfig" > source "drivers/pinctrl/meson/Kconfig" > source "drivers/pinctrl/mscc/Kconfig" > +source "drivers/pinctrl/mtmips/Kconfig" > source "drivers/pinctrl/mvebu/Kconfig" > source "drivers/pinctrl/nxp/Kconfig" > source "drivers/pinctrl/renesas/Kconfig" > diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile > index 4b080b74dc..ce0879a2b7 100644 > --- a/drivers/pinctrl/Makefile > +++ b/drivers/pinctrl/Makefile > @@ -9,6 +9,7 @@ obj-y += nxp/ > obj-$(CONFIG_$(SPL_)PINCTRL_ROCKCHIP)+= rockchip/ > obj-$(CONFIG_ARCH_ASPEED) += aspeed/ > obj-$(CONFIG_ARCH_ATH79) += ath79/ > +obj-$(CONFIG_ARCH_MTMIPS) += mtmips/ > obj-$(CONFIG_ARCH_RMOBILE) += renesas/ > obj-$(CONFIG_PINCTRL_SANDBOX)+= pinctrl-sandbox.o > > diff --git a/drivers/pinctrl/mtmips/Kconfig b/drivers/pinctrl/mtmips/Kconfig > new file mode 100644 > index 00..8482a38ebc > --- /dev/null > +++ b/drivers/pinctrl/mtmips/Kconfig > @@ -0,0 +1,13 @@ > + > +config PINCTRL_MTMIPS > + depends on ARCH_MTMIPS > + bool > + > +config PINCTRL_MT7628 > + bool "MediaTek MT7628 pin control driver" > + select PINCTRL_MTMIPS > + depends on SOC_MT7628 && PINCTRL_GENERIC > + help > + Support pin multiplexing control on MediaTek MT7628. > + The driver is controlled by a device tree node which contains > + the pin mux functions for each available pin groups. > diff --git a/drivers/pinctrl/mtmips/Makefile b/drivers/pinctrl/mtmips/Makefile > new file mode 100644 > index 00..3ba5c0c66d > --- /dev/null > +++ b/drivers/pinctrl/mtmips/Makefile > @@ -0,0 +1,7 @@ > +# SPDX-License-Identifier: GPL-2.0 > + > +# Core > +obj-$(CONFIG_PINCTRL_MTMIPS) += pinctrl-mtmips-common.o > + > +# SoC Drivers > +obj-$(CONFIG_PINCTRL_MT7628) += pinctrl-mt7628.o > diff --git a/drivers/pinctrl/mtmips/pinctrl-mt7628.c > b/drivers/pinctrl/mtmips/pinctrl-mt7628.c > new file mode 100644 > index 00..6883450a09 > --- /dev/null > +++ b/drivers/pinctrl/mtmips/pinctrl-mt7628.c > @@ -0,0 +1,585 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (C) 2019 MediaTek Inc. All Rights Reserved. > + * > + * Author: Weijie Gao > + */ > + > +#include > +#include > +#include > +#include > +#include > + > +#include "pinctrl-mtmips-common.h" > + > +DECLARE_GLOBAL_DATA_PTR; > + > +#define AGPIO_OFS0 > +#define GPIOMODE1_OFS0x24 > +#define GPIOMODE2_OFS0x28 > + > +#define EPHY4_1_PAD_SHIFT17 > +#define EPHY4_1_PAD_MASK 0x0f > +#define EPHY0_SHIFT 16 > +#define RF_OLT_MODE_SHIFT12 > +#define N9_EINT_SRC_SHIFT9 > +#define WLED_OD_SHIFT8 > +#define REF_CLKO_PAD_SHIFT 4 > +#define I2S_CLK_PAD_SHIFT3 > +#define I2S_WS_PAD_SHIFT 2 > +#define I2S_SDO_PAD_SHIFT1 > +#define I2S_SDI_PAD_SHIFT0 > + > +#define GM4_MASK 3 > + > +#define P4LED_K_SHIFT26 > +#define P3LED_K_SHIFT24 > +#define P2LED_K_SHIFT22 > +#define P1LED_K_SHIFT20 > +#define P0LED_K_SHIFT18 > +#define WLED_K_SHIFT 16 > +#define P4LED_A_SHIFT10 > +#define P3LED_A_SHIFT8 > +#define P2LED_A_SHIFT6 > +#define P1LED_A_SHIFT4 > +#define P0LED_A_SHIFT2 > +#define WLED_A_SHIFT 0 > + > +#define PWM1_SHIFT 30 > +#define PWM0_SHIFT 28 > +#define UART2_SHIFT
[U-Boot] [PATCH v2 10/28] pinctrl: add support for MediaTek MT7628
This patch adds pinctrl support for mt7628, with a file for common pinmux functions and a file for mt7628 which has additional support for pinconf. Signed-off-by: Weijie Gao --- drivers/pinctrl/Kconfig | 1 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/mtmips/Kconfig| 13 + drivers/pinctrl/mtmips/Makefile | 7 + drivers/pinctrl/mtmips/pinctrl-mt7628.c | 585 ++ .../pinctrl/mtmips/pinctrl-mtmips-common.c| 87 +++ .../pinctrl/mtmips/pinctrl-mtmips-common.h| 53 ++ 7 files changed, 747 insertions(+) create mode 100644 drivers/pinctrl/mtmips/Kconfig create mode 100644 drivers/pinctrl/mtmips/Makefile create mode 100644 drivers/pinctrl/mtmips/pinctrl-mt7628.c create mode 100644 drivers/pinctrl/mtmips/pinctrl-mtmips-common.c create mode 100644 drivers/pinctrl/mtmips/pinctrl-mtmips-common.h diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig index a0ac167d14..1634dffb35 100644 --- a/drivers/pinctrl/Kconfig +++ b/drivers/pinctrl/Kconfig @@ -244,6 +244,7 @@ source "drivers/pinctrl/exynos/Kconfig" source "drivers/pinctrl/mediatek/Kconfig" source "drivers/pinctrl/meson/Kconfig" source "drivers/pinctrl/mscc/Kconfig" +source "drivers/pinctrl/mtmips/Kconfig" source "drivers/pinctrl/mvebu/Kconfig" source "drivers/pinctrl/nxp/Kconfig" source "drivers/pinctrl/renesas/Kconfig" diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile index 4b080b74dc..ce0879a2b7 100644 --- a/drivers/pinctrl/Makefile +++ b/drivers/pinctrl/Makefile @@ -9,6 +9,7 @@ obj-y += nxp/ obj-$(CONFIG_$(SPL_)PINCTRL_ROCKCHIP) += rockchip/ obj-$(CONFIG_ARCH_ASPEED) += aspeed/ obj-$(CONFIG_ARCH_ATH79) += ath79/ +obj-$(CONFIG_ARCH_MTMIPS) += mtmips/ obj-$(CONFIG_ARCH_RMOBILE) += renesas/ obj-$(CONFIG_PINCTRL_SANDBOX) += pinctrl-sandbox.o diff --git a/drivers/pinctrl/mtmips/Kconfig b/drivers/pinctrl/mtmips/Kconfig new file mode 100644 index 00..8482a38ebc --- /dev/null +++ b/drivers/pinctrl/mtmips/Kconfig @@ -0,0 +1,13 @@ + +config PINCTRL_MTMIPS + depends on ARCH_MTMIPS + bool + +config PINCTRL_MT7628 + bool "MediaTek MT7628 pin control driver" + select PINCTRL_MTMIPS + depends on SOC_MT7628 && PINCTRL_GENERIC + help + Support pin multiplexing control on MediaTek MT7628. + The driver is controlled by a device tree node which contains + the pin mux functions for each available pin groups. diff --git a/drivers/pinctrl/mtmips/Makefile b/drivers/pinctrl/mtmips/Makefile new file mode 100644 index 00..3ba5c0c66d --- /dev/null +++ b/drivers/pinctrl/mtmips/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0 + +# Core +obj-$(CONFIG_PINCTRL_MTMIPS) += pinctrl-mtmips-common.o + +# SoC Drivers +obj-$(CONFIG_PINCTRL_MT7628) += pinctrl-mt7628.o diff --git a/drivers/pinctrl/mtmips/pinctrl-mt7628.c b/drivers/pinctrl/mtmips/pinctrl-mt7628.c new file mode 100644 index 00..6883450a09 --- /dev/null +++ b/drivers/pinctrl/mtmips/pinctrl-mt7628.c @@ -0,0 +1,585 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2019 MediaTek Inc. All Rights Reserved. + * + * Author: Weijie Gao + */ + +#include +#include +#include +#include +#include + +#include "pinctrl-mtmips-common.h" + +DECLARE_GLOBAL_DATA_PTR; + +#define AGPIO_OFS 0 +#define GPIOMODE1_OFS 0x24 +#define GPIOMODE2_OFS 0x28 + +#define EPHY4_1_PAD_SHIFT 17 +#define EPHY4_1_PAD_MASK 0x0f +#define EPHY0_SHIFT16 +#define RF_OLT_MODE_SHIFT 12 +#define N9_EINT_SRC_SHIFT 9 +#define WLED_OD_SHIFT 8 +#define REF_CLKO_PAD_SHIFT 4 +#define I2S_CLK_PAD_SHIFT 3 +#define I2S_WS_PAD_SHIFT 2 +#define I2S_SDO_PAD_SHIFT 1 +#define I2S_SDI_PAD_SHIFT 0 + +#define GM4_MASK 3 + +#define P4LED_K_SHIFT 26 +#define P3LED_K_SHIFT 24 +#define P2LED_K_SHIFT 22 +#define P1LED_K_SHIFT 20 +#define P0LED_K_SHIFT 18 +#define WLED_K_SHIFT 16 +#define P4LED_A_SHIFT 10 +#define P3LED_A_SHIFT 8 +#define P2LED_A_SHIFT 6 +#define P1LED_A_SHIFT 4 +#define P0LED_A_SHIFT 2 +#define WLED_A_SHIFT 0 + +#define PWM1_SHIFT 30 +#define PWM0_SHIFT 28 +#define UART2_SHIFT26 +#define UART1_SHIFT24 +#define I2C_SHIFT 20 +#define REFCLK_SHIFT 18 +#define PERST_SHIFT16 +#define ESD_SHIFT 15 +#define WDT_SHIFT 14 +#define SPI_SHIFT 12 +#define SDMODE_SHIFT