Re: [U-Boot] [PATCH v2 10/28] pinctrl: add support for MediaTek MT7628

2019-09-18 Thread Daniel Schwierzeck


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

2019-09-17 Thread 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_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