* [PATCH v5 11/20] arm: sun8i: orangepi-2: Enable dwmac-sun8i
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
The dwmac-sun8i hardware is present on the Orange PI 2.
It uses the internal PHY.
This patch create the needed emac node.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
arch/arm/boot/dts/sun8i-h3-orangepi-2.dts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts
index 5b6d145..cedd326 100644
--- a/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts
@@ -54,6 +54,7 @@
aliases {
serial0 = &uart0;
/* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */
+ ethernet0 = &emac;
ethernet1 = &rtl8189;
};
@@ -108,6 +109,13 @@
status = "okay";
};
+&emac {
+ phy-handle = <&int_mii_phy>;
+ phy-mode = "mii";
+ allwinner,leds-active-low;
+ status = "okay";
+};
+
&ir {
pinctrl-names = "default";
pinctrl-0 = <&ir_pins_a>;
--
2.10.2
^ permalink raw reply related
* [PATCH v5 10/20] arm: sun8i: orangepi-one: Enable dwmac-sun8i
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
The dwmac-sun8i hardware is present on the Orange PI One.
It uses the internal PHY.
This patch create the needed emac node.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
arch/arm/boot/dts/sun8i-h3-orangepi-one.dts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-one.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-one.dts
index 5fea430..6880268 100644
--- a/arch/arm/boot/dts/sun8i-h3-orangepi-one.dts
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-one.dts
@@ -52,6 +52,7 @@
compatible = "xunlong,orangepi-one", "allwinner,sun8i-h3";
aliases {
+ ethernet0 = &emac;
serial0 = &uart0;
};
@@ -97,6 +98,13 @@
status = "okay";
};
+&emac {
+ phy-handle = <&int_mii_phy>;
+ phy-mode = "mii";
+ allwinner,leds-active-low;
+ status = "okay";
+};
+
&mmc0 {
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
--
2.10.2
^ permalink raw reply related
* [PATCH v5 09/20] arm: sun8i: orangepi-zero: Enable dwmac-sun8i
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
The dwmac-sun8i hardware is present on the Orange PI Zero.
It uses the internal PHY.
This patch create the needed emac node.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
index 9e8b082..dd3525a 100644
--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
+++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
@@ -57,6 +57,7 @@
aliases {
serial0 = &uart0;
/* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */
+ ethernet0 = &emac;
ethernet1 = &xr819;
};
@@ -103,6 +104,13 @@
status = "okay";
};
+&emac {
+ phy-handle = <&int_mii_phy>;
+ phy-mode = "mii";
+ allwinner,leds-active-low;
+ status = "okay";
+};
+
&mmc0 {
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins_a>;
--
2.10.2
^ permalink raw reply related
* [PATCH v5 08/20] arm: sun8i: orangepi-pc: Enable dwmac-sun8i
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
The dwmac-sun8i hardware is present on the Orange PI PC.
It uses the internal PHY.
This patch create the needed emac node.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts
index f148111..52e6575 100644
--- a/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts
@@ -52,6 +52,7 @@
compatible = "xunlong,orangepi-pc", "allwinner,sun8i-h3";
aliases {
+ ethernet0 = &emac;
serial0 = &uart0;
};
@@ -109,6 +110,13 @@
status = "okay";
};
+&emac {
+ phy-handle = <&int_mii_phy>;
+ phy-mode = "mii";
+ allwinner,leds-active-low;
+ status = "okay";
+};
+
&ir {
pinctrl-names = "default";
pinctrl-0 = <&ir_pins_a>;
--
2.10.2
^ permalink raw reply related
* [PATCH v5 07/20] arm: sun8i: sunxi-h3-h5: add dwmac-sun8i ethernet driver
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
The dwmac-sun8i is an ethernet MAC hardware that support 10/100/1000
speed.
This patch enable the dwmac-sun8i on Allwinner H3/H5 SoC Device-tree.
SoC H3/H5 have an internal PHY, so optionals syscon and ephy are set.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
arch/arm/boot/dts/sunxi-h3-h5.dtsi | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
index d9691fc..45a9a30 100644
--- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
@@ -285,6 +285,14 @@
interrupt-controller;
#interrupt-cells = <3>;
+ emac_rgmii_pins: emac0 {
+ pins = "PD0", "PD1", "PD2", "PD3", "PD4",
+ "PD5", "PD7", "PD8", "PD9", "PD10",
+ "PD12", "PD13", "PD15", "PD16", "PD17";
+ function = "emac";
+ drive-strength = <40>;
+ };
+
i2c0_pins: i2c0 {
pins = "PA11", "PA12";
function = "i2c0";
@@ -381,6 +389,32 @@
clocks = <&osc24M>;
};
+ emac: ethernet at 1c30000 {
+ compatible = "allwinner,sun8i-h3-emac";
+ syscon = <&syscon>;
+ reg = <0x01c30000 0x104>;
+ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq";
+ resets = <&ccu RST_BUS_EMAC>;
+ reset-names = "stmmaceth";
+ clocks = <&ccu CLK_BUS_EMAC>;
+ clock-names = "stmmaceth";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+
+ mdio: mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ int_mii_phy: ethernet-phy at 1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ clocks = <&ccu CLK_BUS_EPHY>;
+ resets = <&ccu RST_BUS_EPHY>;
+ };
+ };
+ };
+
spi0: spi at 01c68000 {
compatible = "allwinner,sun8i-h3-spi";
reg = <0x01c68000 0x1000>;
--
2.10.2
^ permalink raw reply related
* [PATCH v5 06/20] arm: sun8i: sunxi-h3-h5: Add dt node for the syscon control module
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
This patch add the dt node for the syscon register present on the
Allwinner H3/H5
Only two register are present in this syscon and the only one useful is
the one dedicated to EMAC clock..
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
arch/arm/boot/dts/sunxi-h3-h5.dtsi | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
index 1aeeacb..d9691fc 100644
--- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
@@ -83,6 +83,12 @@
#size-cells = <1>;
ranges;
+ syscon: syscon at 1c00000 {
+ compatible = "allwinner,sun8i-h3-system-controller",
+ "syscon";
+ reg = <0x01c00000 0x1000>;
+ };
+
dma: dma-controller at 01c02000 {
compatible = "allwinner,sun8i-h3-dma";
reg = <0x01c02000 0x1000>;
--
2.10.2
^ permalink raw reply related
* [PATCH v5 05/20] net: stmmac: Add dwmac-sun8i
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
The dwmac-sun8i is a heavy hacked version of stmmac hardware by
allwinner.
In fact the only common part is the descriptor management and the first
register function.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 +
drivers/net/ethernet/stmicro/stmmac/Makefile | 1 +
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 973 +++++++++++++++++++++
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 29 +
.../net/ethernet/stmicro/stmmac/stmmac_platform.c | 9 +-
include/linux/stmmac.h | 1 +
6 files changed, 1022 insertions(+), 2 deletions(-)
create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig
index cfbe363..85c0e41 100644
--- a/drivers/net/ethernet/stmicro/stmmac/Kconfig
+++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig
@@ -145,6 +145,17 @@ config DWMAC_SUNXI
This selects Allwinner SoC glue layer support for the
stmmac device driver. This driver is used for A20/A31
GMAC ethernet controller.
+
+config DWMAC_SUN8I
+ tristate "Allwinner sun8i GMAC support"
+ default ARCH_SUNXI
+ depends on OF && (ARCH_SUNXI || COMPILE_TEST)
+ ---help---
+ Support for Allwinner H3 A83T A64 EMAC ethernet controllers.
+
+ This selects Allwinner SoC glue layer support for the
+ stmmac device driver. This driver is used for H3/A83T/A64
+ EMAC ethernet controller.
endif
config STMMAC_PCI
diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile
index 700c603..fd4937a 100644
--- a/drivers/net/ethernet/stmicro/stmmac/Makefile
+++ b/drivers/net/ethernet/stmicro/stmmac/Makefile
@@ -16,6 +16,7 @@ obj-$(CONFIG_DWMAC_SOCFPGA) += dwmac-altr-socfpga.o
obj-$(CONFIG_DWMAC_STI) += dwmac-sti.o
obj-$(CONFIG_DWMAC_STM32) += dwmac-stm32.o
obj-$(CONFIG_DWMAC_SUNXI) += dwmac-sunxi.o
+obj-$(CONFIG_DWMAC_SUN8I) += dwmac-sun8i.o
obj-$(CONFIG_DWMAC_DWC_QOS_ETH) += dwmac-dwc-qos-eth.o
obj-$(CONFIG_DWMAC_GENERIC) += dwmac-generic.o
stmmac-platform-objs:= stmmac_platform.o
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
new file mode 100644
index 0000000..66eb980
--- /dev/null
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
@@ -0,0 +1,973 @@
+/*
+ * dwmac-sun8i.c - Allwinner sun8i DWMAC specific glue layer
+ *
+ * Copyright (C) 2017 Corentin Labbe <clabbe.montjoie@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/clk.h>
+#include <linux/io.h>
+#include <linux/iopoll.h>
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/of_mdio.h>
+#include <linux/of_net.h>
+#include <linux/phy.h>
+#include <linux/platform_device.h>
+#include <linux/regulator/consumer.h>
+#include <linux/regmap.h>
+#include <linux/stmmac.h>
+
+#include "stmmac.h"
+#include "stmmac_platform.h"
+
+/* General notes on dwmac-sun8i:
+ * Locking: no locking is necessary in this file because all necessary locking
+ * is done in the "stmmac files"
+ */
+
+/* struct emac_variant - Descrive dwmac-sun8i hardware variant
+ * @default_syscon_value: The default value of the EMAC register in syscon
+ * This value is used for disabling properly EMAC
+ * and used as a good starting value in case of the
+ * boot process(uboot) leave some stuff.
+ * @internal_phy: Does the MAC embed an internal PHY
+ * @support_mii: Does the MAC handle MII
+ * @support_rmii: Does the MAC handle RMII
+ * @support_rgmii: Does the MAC handle RGMII
+ */
+struct emac_variant {
+ u32 default_syscon_value;
+ int internal_phy;
+ bool support_mii;
+ bool support_rmii;
+ bool support_rgmii;
+};
+
+/* struct sunxi_priv_data - hold all sunxi private data
+ * @tx_clk: reference to MAC TX clock
+ * @ephy_clk: reference to the optional EPHY clock for the internal PHY
+ * @regulator: reference to the optional regulator
+ * @rst_ephy: reference to the optional EPHY reset for the internal PHY
+ * @variant: reference to the current board variant
+ * @regmap: regmap for using the syscon
+ * @use_internal_phy: Does the current PHY choice imply using the internal PHY
+ */
+struct sunxi_priv_data {
+ struct clk *tx_clk;
+ struct clk *ephy_clk;
+ struct regulator *regulator;
+ struct reset_control *rst_ephy;
+ const struct emac_variant *variant;
+ struct regmap *regmap;
+ bool use_internal_phy;
+};
+
+static const struct emac_variant emac_variant_h3 = {
+ .default_syscon_value = 0x58000,
+ .internal_phy = PHY_INTERFACE_MODE_MII,
+ .support_mii = true,
+ .support_rmii = true,
+ .support_rgmii = true
+};
+
+static const struct emac_variant emac_variant_a83t = {
+ .default_syscon_value = 0,
+ .internal_phy = 0,
+ .support_mii = true,
+ .support_rgmii = true
+};
+
+static const struct emac_variant emac_variant_a64 = {
+ .default_syscon_value = 0,
+ .internal_phy = 0,
+ .support_mii = true,
+ .support_rmii = true,
+ .support_rgmii = true
+};
+
+#define EMAC_BASIC_CTL0 0x00
+#define EMAC_BASIC_CTL1 0x04
+#define EMAC_INT_STA 0x08
+#define EMAC_INT_EN 0x0C
+#define EMAC_TX_CTL0 0x10
+#define EMAC_TX_CTL1 0x14
+#define EMAC_TX_FLOW_CTL 0x1C
+#define EMAC_TX_DESC_LIST 0x20
+#define EMAC_RX_CTL0 0x24
+#define EMAC_RX_CTL1 0x28
+#define EMAC_RX_DESC_LIST 0x34
+#define EMAC_RX_FRM_FLT 0x38
+#define EMAC_MDIO_CMD 0x48
+#define EMAC_MDIO_DATA 0x4C
+#define EMAC_MACADDR_HI(reg) (0x50 + (reg) * 8)
+#define EMAC_MACADDR_LO(reg) (0x54 + (reg) * 8)
+#define EMAC_TX_DMA_STA 0xB0
+#define EMAC_TX_CUR_DESC 0xB4
+#define EMAC_TX_CUR_BUF 0xB8
+#define EMAC_RX_DMA_STA 0xC0
+#define EMAC_RX_CUR_DESC 0xC4
+#define EMAC_RX_CUR_BUF 0xC8
+
+/* Use in EMAC_BASIC_CTL1 */
+#define EMAC_BURSTLEN_SHIFT 24
+
+/* Used in EMAC_RX_FRM_FLT */
+#define EMAC_FRM_FLT_RXALL BIT(0)
+#define EMAC_FRM_FLT_CTL BIT(13)
+#define EMAC_FRM_FLT_MULTICAST BIT(16)
+
+/* Used in RX_CTL1*/
+#define EMAC_RX_MD BIT(1)
+#define EMAC_RX_TH_MASK GENMASK(4, 5)
+#define EMAC_RX_TH_32 0
+#define EMAC_RX_TH_64 (0x1 << 4)
+#define EMAC_RX_TH_96 (0x2 << 4)
+#define EMAC_RX_TH_128 (0x3 << 4)
+#define EMAC_RX_DMA_EN BIT(30)
+#define EMAC_RX_DMA_START BIT(31)
+
+/* Used in TX_CTL1*/
+#define EMAC_TX_MD BIT(1)
+#define EMAC_TX_NEXT_FRM BIT(2)
+#define EMAC_TX_TH_MASK GENMASK(8, 10)
+#define EMAC_TX_TH_64 0
+#define EMAC_TX_TH_128 (0x1 << 8)
+#define EMAC_TX_TH_192 (0x2 << 8)
+#define EMAC_TX_TH_256 (0x3 << 8)
+#define EMAC_TX_DMA_EN BIT(30)
+#define EMAC_TX_DMA_START BIT(31)
+
+/* Used in RX_CTL0 */
+#define EMAC_RX_RECEIVER_EN BIT(31)
+#define EMAC_RX_DO_CRC BIT(27)
+#define EMAC_RX_FLOW_CTL_EN BIT(16)
+
+/* Used in TX_CTL0 */
+#define EMAC_TX_TRANSMITTER_EN BIT(31)
+
+/* Used in EMAC_TX_FLOW_CTL */
+#define EMAC_TX_FLOW_CTL_EN BIT(0)
+
+/* Used in EMAC_INT_STA */
+#define EMAC_TX_INT BIT(0)
+#define EMAC_TX_DMA_STOP_INT BIT(1)
+#define EMAC_TX_BUF_UA_INT BIT(2)
+#define EMAC_TX_TIMEOUT_INT BIT(3)
+#define EMAC_TX_UNDERFLOW_INT BIT(4)
+#define EMAC_TX_EARLY_INT BIT(5)
+#define EMAC_RX_INT BIT(8)
+#define EMAC_RX_BUF_UA_INT BIT(9)
+#define EMAC_RX_DMA_STOP_INT BIT(10)
+#define EMAC_RX_TIMEOUT_INT BIT(11)
+#define EMAC_RX_OVERFLOW_INT BIT(12)
+#define EMAC_RX_EARLY_INT BIT(13)
+#define EMAC_RGMII_STA_INT BIT(16)
+
+#define MAC_ADDR_TYPE_DST BIT(31)
+
+/* H3 specific bits for EPHY */
+#define H3_EPHY_ADDR_SHIFT 20
+#define H3_EPHY_LED_POL BIT(17) /* 1: active low, 0: active high */
+#define H3_EPHY_SHUTDOWN BIT(16) /* 1: shutdown, 0: power up */
+#define H3_EPHY_SELECT BIT(15) /* 1: internal PHY, 0: external PHY */
+
+/* H3/A64 specific bits */
+#define SYSCON_RMII_EN BIT(13) /* 1: enable RMII (overrides EPIT) */
+
+/* Generic system control EMAC_CLK bits */
+#define SYSCON_ETXDC_MASK GENMASK(2, 0)
+#define SYSCON_ETXDC_SHIFT 10
+#define SYSCON_ERXDC_MASK GENMASK(4, 0)
+#define SYSCON_ERXDC_SHIFT 5
+/* EMAC PHY Interface Type */
+#define SYSCON_EPIT BIT(2) /* 1: RGMII, 0: MII */
+#define SYSCON_ETCS_MASK GENMASK(1, 0)
+#define SYSCON_ETCS_MII 0x0
+#define SYSCON_ETCS_EXT_GMII 0x1
+#define SYSCON_ETCS_INT_GMII 0x2
+#define SYSCON_EMAC_REG 0x30
+
+/* sun8i_dwmac_dma_reset() - reset the EMAC
+ * Called from stmmac via stmmac_dma_ops->reset
+ */
+static int sun8i_dwmac_dma_reset(void __iomem *ioaddr)
+{
+ writel(0, ioaddr + EMAC_RX_CTL1);
+ writel(0, ioaddr + EMAC_TX_CTL1);
+ writel(0, ioaddr + EMAC_RX_FRM_FLT);
+ writel(0, ioaddr + EMAC_RX_DESC_LIST);
+ writel(0, ioaddr + EMAC_TX_DESC_LIST);
+ writel(0, ioaddr + EMAC_INT_EN);
+ writel(0x1FFFFFF, ioaddr + EMAC_INT_STA);
+ return 0;
+}
+
+/* sun8i_dwmac_dma_init() - initialize the EMAC
+ * Called from stmmac via stmmac_dma_ops->init
+ */
+static void sun8i_dwmac_dma_init(void __iomem *ioaddr,
+ struct stmmac_dma_cfg *dma_cfg,
+ u32 dma_tx, u32 dma_rx, int atds)
+{
+ /* Write TX and RX descriptors address */
+ writel(dma_rx, ioaddr + EMAC_RX_DESC_LIST);
+ writel(dma_tx, ioaddr + EMAC_TX_DESC_LIST);
+
+ writel(EMAC_RX_INT | EMAC_TX_INT, ioaddr + EMAC_INT_EN);
+ writel(0x1FFFFFF, ioaddr + EMAC_INT_STA);
+}
+
+/* sun8i_dwmac_dump_regs() - Dump EMAC address space
+ * Called from stmmac_dma_ops->dump_regs
+ * Used for ethtool
+ */
+static void sun8i_dwmac_dump_regs(void __iomem *ioaddr, u32 *reg_space)
+{
+ int i;
+
+ for (i = 0; i < 0xC8; i += 4) {
+ if (i == 0x32 || i == 0x3C)
+ continue;
+ reg_space[i / 4] = readl(ioaddr + i);
+ }
+}
+
+/* sun8i_dwmac_dump_mac_regs() - Dump EMAC address space
+ * Called from stmmac_ops->dump_regs
+ * Used for ethtool
+ */
+static void sun8i_dwmac_dump_mac_regs(struct mac_device_info *hw,
+ u32 *reg_space)
+{
+ int i;
+ void __iomem *ioaddr = hw->pcsr;
+
+ for (i = 0; i < 0xC8; i += 4) {
+ if (i == 0x32 || i == 0x3C)
+ continue;
+ reg_space[i / 4] = readl(ioaddr + i);
+ }
+}
+
+static void sun8i_dwmac_enable_dma_irq(void __iomem *ioaddr, u32 chan)
+{
+ writel(EMAC_RX_INT | EMAC_TX_INT, ioaddr + EMAC_INT_EN);
+}
+
+static void sun8i_dwmac_disable_dma_irq(void __iomem *ioaddr, u32 chan)
+{
+ writel(0, ioaddr + EMAC_INT_EN);
+}
+
+static void sun8i_dwmac_dma_start_tx(void __iomem *ioaddr, u32 chan)
+{
+ u32 v;
+
+ v = readl(ioaddr + EMAC_TX_CTL1);
+ v |= EMAC_TX_DMA_START;
+ v |= EMAC_TX_DMA_EN;
+ writel(v, ioaddr + EMAC_TX_CTL1);
+}
+
+static void sun8i_dwmac_enable_dma_transmission(void __iomem *ioaddr)
+{
+ u32 v;
+
+ v = readl(ioaddr + EMAC_TX_CTL1);
+ v |= EMAC_TX_DMA_START;
+ v |= EMAC_TX_DMA_EN;
+ writel(v, ioaddr + EMAC_TX_CTL1);
+}
+
+static void sun8i_dwmac_dma_stop_tx(void __iomem *ioaddr, u32 chan)
+{
+ u32 v;
+
+ v = readl(ioaddr + EMAC_TX_CTL1);
+ v &= ~EMAC_TX_DMA_EN;
+ writel(v, ioaddr + EMAC_TX_CTL1);
+}
+
+static void sun8i_dwmac_dma_start_rx(void __iomem *ioaddr, u32 chan)
+{
+ u32 v;
+
+ v = readl(ioaddr + EMAC_RX_CTL1);
+ v |= EMAC_RX_DMA_START;
+ v |= EMAC_RX_DMA_EN;
+ writel(v, ioaddr + EMAC_RX_CTL1);
+}
+
+static void sun8i_dwmac_dma_stop_rx(void __iomem *ioaddr, u32 chan)
+{
+ u32 v;
+
+ v = readl(ioaddr + EMAC_RX_CTL1);
+ v &= ~EMAC_RX_DMA_EN;
+ writel(v, ioaddr + EMAC_RX_CTL1);
+}
+
+static int sun8i_dwmac_dma_interrupt(void __iomem *ioaddr,
+ struct stmmac_extra_stats *x, u32 chan)
+{
+ u32 v;
+ int ret = 0;
+
+ v = readl(ioaddr + EMAC_INT_STA);
+
+ if (v & EMAC_TX_INT) {
+ ret |= handle_tx;
+ x->tx_normal_irq_n++;
+ }
+
+ if (v & EMAC_TX_DMA_STOP_INT)
+ x->tx_process_stopped_irq++;
+
+ if (v & EMAC_TX_BUF_UA_INT)
+ x->tx_process_stopped_irq++;
+
+ if (v & EMAC_TX_TIMEOUT_INT)
+ ret |= tx_hard_error;
+
+ if (v & EMAC_TX_UNDERFLOW_INT) {
+ ret |= tx_hard_error;
+ x->tx_undeflow_irq++;
+ }
+
+ if (v & EMAC_TX_EARLY_INT)
+ x->tx_early_irq++;
+
+ if (v & EMAC_RX_INT) {
+ ret |= handle_rx;
+ x->rx_normal_irq_n++;
+ }
+
+ if (v & EMAC_RX_BUF_UA_INT)
+ x->rx_buf_unav_irq++;
+
+ if (v & EMAC_RX_DMA_STOP_INT)
+ x->rx_process_stopped_irq++;
+
+ if (v & EMAC_RX_TIMEOUT_INT)
+ ret |= tx_hard_error;
+
+ if (v & EMAC_RX_OVERFLOW_INT) {
+ ret |= tx_hard_error;
+ x->rx_overflow_irq++;
+ }
+
+ if (v & EMAC_RX_EARLY_INT)
+ x->rx_early_irq++;
+
+ if (v & EMAC_RGMII_STA_INT)
+ x->irq_rgmii_n++;
+
+ writel(v, ioaddr + EMAC_INT_STA);
+
+ return ret;
+}
+
+static void sun8i_dwmac_dma_operation_mode(void __iomem *ioaddr, int txmode,
+ int rxmode, int rxfifosz)
+{
+ u32 v;
+
+ v = readl(ioaddr + EMAC_TX_CTL1);
+ if (txmode == SF_DMA_MODE) {
+ v |= EMAC_TX_MD;
+ /* Undocumented bit (called TX_NEXT_FRM in BSP), the original
+ * comment is
+ * "Operating on second frame increase the performance
+ * especially when transmit store-and-forward is used."
+ */
+ v |= EMAC_TX_NEXT_FRM;
+ } else {
+ v &= ~EMAC_TX_MD;
+ v &= ~EMAC_TX_TH_MASK;
+ if (txmode < 64)
+ v |= EMAC_TX_TH_64;
+ else if (txmode < 128)
+ v |= EMAC_TX_TH_128;
+ else if (txmode < 192)
+ v |= EMAC_TX_TH_192;
+ else if (txmode < 256)
+ v |= EMAC_TX_TH_256;
+ }
+ writel(v, ioaddr + EMAC_TX_CTL1);
+
+ v = readl(ioaddr + EMAC_RX_CTL1);
+ if (rxmode == SF_DMA_MODE) {
+ v |= EMAC_RX_MD;
+ } else {
+ v &= ~EMAC_RX_MD;
+ v &= ~EMAC_RX_TH_MASK;
+ if (rxmode < 32)
+ v |= EMAC_RX_TH_32;
+ else if (rxmode < 64)
+ v |= EMAC_RX_TH_64;
+ else if (rxmode < 96)
+ v |= EMAC_RX_TH_96;
+ else if (rxmode < 128)
+ v |= EMAC_RX_TH_128;
+ }
+ writel(v, ioaddr + EMAC_RX_CTL1);
+}
+
+static const struct stmmac_dma_ops sun8i_dwmac_dma_ops = {
+ .reset = sun8i_dwmac_dma_reset,
+ .init = sun8i_dwmac_dma_init,
+ .dump_regs = sun8i_dwmac_dump_regs,
+ .dma_mode = sun8i_dwmac_dma_operation_mode,
+ .enable_dma_transmission = sun8i_dwmac_enable_dma_transmission,
+ .enable_dma_irq = sun8i_dwmac_enable_dma_irq,
+ .disable_dma_irq = sun8i_dwmac_disable_dma_irq,
+ .start_tx = sun8i_dwmac_dma_start_tx,
+ .stop_tx = sun8i_dwmac_dma_stop_tx,
+ .start_rx = sun8i_dwmac_dma_start_rx,
+ .stop_rx = sun8i_dwmac_dma_stop_rx,
+ .dma_interrupt = sun8i_dwmac_dma_interrupt,
+};
+
+static int sun8i_dwmac_init(struct platform_device *pdev, void *priv)
+{
+ struct sunxi_priv_data *gmac = priv;
+ int ret;
+
+ if (gmac->regulator) {
+ ret = regulator_enable(gmac->regulator);
+ if (ret) {
+ dev_err(&pdev->dev, "Fail to enable regulator\n");
+ return ret;
+ }
+ }
+
+ ret = clk_prepare_enable(gmac->tx_clk);
+ if (ret) {
+ if (gmac->regulator)
+ regulator_disable(gmac->regulator);
+ dev_err(&pdev->dev, "Could not enable AHB clock\n");
+ return ret;
+ }
+
+ return 0;
+}
+
+static void sun8i_dwmac_core_init(struct mac_device_info *hw, int mtu)
+{
+ void __iomem *ioaddr = hw->pcsr;
+ u32 v;
+
+ v = (8 << EMAC_BURSTLEN_SHIFT); /* burst len */
+ writel(v, ioaddr + EMAC_BASIC_CTL1);
+}
+
+static void sun8i_dwmac_set_mac(void __iomem *ioaddr, bool enable)
+{
+ u32 t, r;
+
+ t = readl(ioaddr + EMAC_TX_CTL0);
+ r = readl(ioaddr + EMAC_RX_CTL0);
+ if (enable) {
+ t |= EMAC_TX_TRANSMITTER_EN;
+ r |= EMAC_RX_RECEIVER_EN;
+ } else {
+ t &= ~EMAC_TX_TRANSMITTER_EN;
+ r &= ~EMAC_RX_RECEIVER_EN;
+ }
+ writel(t, ioaddr + EMAC_TX_CTL0);
+ writel(r, ioaddr + EMAC_RX_CTL0);
+}
+
+/* Set MAC address@slot reg_n
+ * All slot > 0 need to be enabled with MAC_ADDR_TYPE_DST
+ * If addr is NULL, clear the slot
+ */
+static void sun8i_dwmac_set_umac_addr(struct mac_device_info *hw,
+ unsigned char *addr,
+ unsigned int reg_n)
+{
+ void __iomem *ioaddr = hw->pcsr;
+ u32 v;
+
+ if (!addr) {
+ writel(0, ioaddr + EMAC_MACADDR_HI(reg_n));
+ return;
+ }
+
+ stmmac_set_mac_addr(ioaddr, addr, EMAC_MACADDR_HI(reg_n),
+ EMAC_MACADDR_LO(reg_n));
+ if (reg_n > 0) {
+ v = readl(ioaddr + EMAC_MACADDR_HI(reg_n));
+ v |= MAC_ADDR_TYPE_DST;
+ writel(v, ioaddr + EMAC_MACADDR_HI(reg_n));
+ }
+}
+
+static void sun8i_dwmac_get_umac_addr(struct mac_device_info *hw,
+ unsigned char *addr,
+ unsigned int reg_n)
+{
+ void __iomem *ioaddr = hw->pcsr;
+
+ stmmac_get_mac_addr(ioaddr, addr, EMAC_MACADDR_HI(reg_n),
+ EMAC_MACADDR_LO(reg_n));
+}
+
+/* caution this function must return non 0 to work */
+static int sun8i_dwmac_rx_ipc_enable(struct mac_device_info *hw)
+{
+ void __iomem *ioaddr = hw->pcsr;
+ u32 v;
+
+ v = readl(ioaddr + EMAC_RX_CTL0);
+ v |= EMAC_RX_DO_CRC;
+ writel(v, ioaddr + EMAC_RX_CTL0);
+
+ return 1;
+}
+
+static void sun8i_dwmac_set_filter(struct mac_device_info *hw,
+ struct net_device *dev)
+{
+ void __iomem *ioaddr = hw->pcsr;
+ u32 v;
+ int i = 1;
+ struct netdev_hw_addr *ha;
+ int macaddrs = netdev_uc_count(dev) + netdev_mc_count(dev) + 1;
+
+ v = EMAC_FRM_FLT_CTL;
+
+ if (dev->flags & IFF_PROMISC) {
+ v = EMAC_FRM_FLT_RXALL;
+ } else if (dev->flags & IFF_ALLMULTI) {
+ v |= EMAC_FRM_FLT_MULTICAST;
+ } else if (macaddrs <= hw->unicast_filter_entries) {
+ if (!netdev_mc_empty(dev)) {
+ netdev_for_each_mc_addr(ha, dev) {
+ sun8i_dwmac_set_umac_addr(hw, ha->addr, i);
+ i++;
+ }
+ }
+ if (!netdev_uc_empty(dev)) {
+ netdev_for_each_uc_addr(ha, dev) {
+ sun8i_dwmac_set_umac_addr(hw, ha->addr, i);
+ i++;
+ }
+ }
+ } else {
+ netdev_info(dev, "Too many address, switching to promiscuous\n");
+ v = EMAC_FRM_FLT_RXALL;
+ }
+
+ /* Disable unused address filter slots */
+ while (i < hw->unicast_filter_entries)
+ sun8i_dwmac_set_umac_addr(hw, NULL, i++);
+
+ writel(v, ioaddr + EMAC_RX_FRM_FLT);
+}
+
+static void sun8i_dwmac_flow_ctrl(struct mac_device_info *hw,
+ unsigned int duplex, unsigned int fc,
+ unsigned int pause_time, u32 tx_cnt)
+{
+ void __iomem *ioaddr = hw->pcsr;
+ u32 v;
+
+ v = readl(ioaddr + EMAC_RX_CTL0);
+ if (fc == FLOW_AUTO)
+ v |= EMAC_RX_FLOW_CTL_EN;
+ else
+ v &= ~EMAC_RX_FLOW_CTL_EN;
+ writel(v, ioaddr + EMAC_RX_CTL0);
+
+ v = readl(ioaddr + EMAC_TX_FLOW_CTL);
+ if (fc == FLOW_AUTO)
+ v |= EMAC_TX_FLOW_CTL_EN;
+ else
+ v &= ~EMAC_TX_FLOW_CTL_EN;
+ writel(v, ioaddr + EMAC_TX_FLOW_CTL);
+}
+
+static int sun8i_dwmac_reset(struct stmmac_priv *priv)
+{
+ u32 v;
+ int err;
+
+ v = readl(priv->ioaddr + EMAC_BASIC_CTL1);
+ writel(v | 0x01, priv->ioaddr + EMAC_BASIC_CTL1);
+
+ err = readl_poll_timeout(priv->ioaddr + EMAC_BASIC_CTL1, v,
+ !(v & 0x01), 100, 10000);
+
+ if (err) {
+ dev_err(priv->device, "EMAC reset timeout\n");
+ return -EFAULT;
+ }
+ return 0;
+}
+
+static int sun8i_dwmac_set_syscon(struct stmmac_priv *priv)
+{
+ struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
+ struct device_node *node = priv->device->of_node;
+ int ret;
+ u32 reg, val;
+
+ regmap_read(gmac->regmap, SYSCON_EMAC_REG, &val);
+ reg = gmac->variant->default_syscon_value;
+ if (reg != val)
+ dev_warn(priv->device,
+ "Current syscon value is not the default %x (expect %x)\n",
+ val, reg);
+
+ if (gmac->variant->internal_phy) {
+ if (!gmac->use_internal_phy) {
+ /* switch to external PHY interface */
+ reg &= ~H3_EPHY_SELECT;
+ } else {
+ reg |= H3_EPHY_SELECT;
+ reg &= ~H3_EPHY_SHUTDOWN;
+ dev_dbg(priv->device, "Select internal_phy %x\n", reg);
+
+ if (of_property_read_bool(priv->plat->phy_node,
+ "allwinner,leds-active-low"))
+ reg |= H3_EPHY_LED_POL;
+ else
+ reg &= ~H3_EPHY_LED_POL;
+
+ ret = of_mdio_parse_addr(priv->device,
+ priv->plat->phy_node);
+ if (ret < 0) {
+ dev_err(priv->device, "Could not parse MDIO addr\n");
+ return ret;
+ }
+ /* of_mdio_parse_addr returns a valid (0 ~ 31) PHY
+ * address. No need to mask it again.
+ */
+ reg |= ret << H3_EPHY_ADDR_SHIFT;
+ }
+ }
+
+ if (!of_property_read_u32(node, "allwinner,tx-delay-ps", &val)) {
+ if (val % 100) {
+ dev_err(priv->device, "tx-delay must be a multiple of 100\n");
+ return -EINVAL;
+ }
+ val /= 100;
+ dev_dbg(priv->device, "set tx-delay to %x\n", val);
+ if (val <= SYSCON_ETXDC_MASK) {
+ reg &= ~(SYSCON_ETXDC_MASK << SYSCON_ETXDC_SHIFT);
+ reg |= (val << SYSCON_ETXDC_SHIFT);
+ } else {
+ dev_err(priv->device, "Invalid TX clock delay: %d\n",
+ val);
+ return -EINVAL;
+ }
+ }
+
+ if (!of_property_read_u32(node, "allwinner,rx-delay-ps", &val)) {
+ if (val % 100) {
+ dev_err(priv->device, "rx-delay must be a multiple of 100\n");
+ return -EINVAL;
+ }
+ val /= 100;
+ dev_dbg(priv->device, "set rx-delay to %x\n", val);
+ if (val <= SYSCON_ERXDC_MASK) {
+ reg &= ~(SYSCON_ERXDC_MASK << SYSCON_ERXDC_SHIFT);
+ reg |= (val << SYSCON_ERXDC_SHIFT);
+ } else {
+ dev_err(priv->device, "Invalid RX clock delay: %d\n",
+ val);
+ return -EINVAL;
+ }
+ }
+
+ /* Clear interface mode bits */
+ reg &= ~(SYSCON_ETCS_MASK | SYSCON_EPIT);
+ if (gmac->variant->support_rmii)
+ reg &= ~SYSCON_RMII_EN;
+
+ switch (priv->plat->interface) {
+ case PHY_INTERFACE_MODE_MII:
+ /* default */
+ break;
+ case PHY_INTERFACE_MODE_RGMII:
+ reg |= SYSCON_EPIT | SYSCON_ETCS_INT_GMII;
+ break;
+ case PHY_INTERFACE_MODE_RMII:
+ reg |= SYSCON_RMII_EN | SYSCON_ETCS_EXT_GMII;
+ break;
+ default:
+ dev_err(priv->device, "Unsupported interface mode: %s",
+ phy_modes(priv->plat->interface));
+ return -EINVAL;
+ }
+
+ regmap_write(gmac->regmap, SYSCON_EMAC_REG, reg);
+
+ return 0;
+}
+
+static void sun8i_dwmac_unset_syscon(struct sunxi_priv_data *gmac)
+{
+ u32 reg = gmac->variant->default_syscon_value;
+
+ regmap_write(gmac->regmap, SYSCON_EMAC_REG, reg);
+}
+
+static int sun8i_dwmac_power_internal_phy(struct stmmac_priv *priv)
+{
+ struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
+ int ret;
+
+ if (!gmac->use_internal_phy)
+ return 0;
+
+ ret = clk_prepare_enable(gmac->ephy_clk);
+ if (ret) {
+ dev_err(priv->device, "Cannot enable ephy\n");
+ return ret;
+ }
+
+ ret = reset_control_deassert(gmac->rst_ephy);
+ if (ret) {
+ dev_err(priv->device, "Cannot deassert ephy\n");
+ clk_disable_unprepare(gmac->ephy_clk);
+ return ret;
+ }
+
+ return 0;
+}
+
+static int sun8i_dwmac_unpower_internal_phy(struct sunxi_priv_data *gmac)
+{
+ if (!gmac->use_internal_phy)
+ return 0;
+
+ clk_disable_unprepare(gmac->ephy_clk);
+ reset_control_assert(gmac->rst_ephy);
+ return 0;
+}
+
+static int sun8i_power_phy(struct stmmac_priv *priv)
+{
+ struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
+ int ret;
+
+ ret = sun8i_dwmac_power_internal_phy(priv);
+ if (ret)
+ return ret;
+
+ ret = sun8i_dwmac_set_syscon(priv);
+ if (ret)
+ goto error_phy;
+
+ ret = sun8i_dwmac_reset(priv);
+ if (ret)
+ goto error_phy;
+ return 0;
+
+error_phy:
+ sun8i_dwmac_unset_syscon(gmac);
+ sun8i_dwmac_unpower_internal_phy(gmac);
+ return ret;
+}
+
+static void sun8i_unpower_phy(struct sunxi_priv_data *gmac)
+{
+ sun8i_dwmac_unset_syscon(gmac);
+ sun8i_dwmac_unpower_internal_phy(gmac);
+}
+
+static void sun8i_dwmac_exit(struct platform_device *pdev, void *priv)
+{
+ struct sunxi_priv_data *gmac = priv;
+
+ sun8i_unpower_phy(gmac);
+
+ clk_disable_unprepare(gmac->tx_clk);
+
+ if (gmac->regulator)
+ regulator_disable(gmac->regulator);
+}
+
+static const struct stmmac_ops sun8i_dwmac_ops = {
+ .core_init = sun8i_dwmac_core_init,
+ .set_mac = sun8i_dwmac_set_mac,
+ .dump_regs = sun8i_dwmac_dump_mac_regs,
+ .rx_ipc = sun8i_dwmac_rx_ipc_enable,
+ .set_filter = sun8i_dwmac_set_filter,
+ .flow_ctrl = sun8i_dwmac_flow_ctrl,
+ .set_umac_addr = sun8i_dwmac_set_umac_addr,
+ .get_umac_addr = sun8i_dwmac_get_umac_addr,
+};
+
+static struct mac_device_info *sun8i_dwmac_setup(void *ppriv)
+{
+ struct mac_device_info *mac;
+ struct stmmac_priv *priv = ppriv;
+ int ret;
+
+ mac = devm_kzalloc(priv->device, sizeof(*mac), GFP_KERNEL);
+ if (!mac)
+ return NULL;
+
+ ret = sun8i_power_phy(priv);
+ if (ret)
+ return NULL;
+
+ mac->pcsr = priv->ioaddr;
+ mac->mac = &sun8i_dwmac_ops;
+ mac->dma = &sun8i_dwmac_dma_ops;
+
+ mac->link.port = 0;
+ mac->link.duplex = BIT(0);
+ mac->link.speed = 1;
+ mac->mii.addr = EMAC_MDIO_CMD;
+ mac->mii.data = EMAC_MDIO_DATA;
+ mac->mii.reg_shift = 4;
+ mac->mii.reg_mask = GENMASK(8, 4);
+ mac->mii.addr_shift = 12;
+ mac->mii.addr_mask = GENMASK(16, 12);
+ mac->mii.clk_csr_shift = 20;
+ mac->mii.clk_csr_mask = GENMASK(22, 20);
+ mac->unicast_filter_entries = 8;
+
+ /* Synopsys Id is not available */
+ priv->synopsys_id = 0;
+
+ return mac;
+}
+
+static int sun8i_dwmac_probe(struct platform_device *pdev)
+{
+ struct plat_stmmacenet_data *plat_dat;
+ struct stmmac_resources stmmac_res;
+ struct sunxi_priv_data *gmac;
+ struct device *dev = &pdev->dev;
+ int ret;
+
+ ret = stmmac_get_platform_resources(pdev, &stmmac_res);
+ if (ret)
+ return ret;
+
+ plat_dat = stmmac_probe_config_dt(pdev, &stmmac_res.mac);
+ if (IS_ERR(plat_dat))
+ return PTR_ERR(plat_dat);
+
+ gmac = devm_kzalloc(dev, sizeof(*gmac), GFP_KERNEL);
+ if (!gmac)
+ return -ENOMEM;
+
+ gmac->variant = of_device_get_match_data(&pdev->dev);
+ if (!gmac->variant) {
+ dev_err(&pdev->dev, "Missing dwmac-sun8i variant\n");
+ return -EINVAL;
+ }
+
+ gmac->tx_clk = devm_clk_get(dev, "stmmaceth");
+ if (IS_ERR(gmac->tx_clk)) {
+ dev_err(dev, "Could not get TX clock\n");
+ return PTR_ERR(gmac->tx_clk);
+ }
+
+ /* Optional regulator for PHY */
+ gmac->regulator = devm_regulator_get_optional(dev, "phy");
+ if (IS_ERR(gmac->regulator)) {
+ if (PTR_ERR(gmac->regulator) == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+ dev_info(dev, "No regulator found\n");
+ gmac->regulator = NULL;
+ }
+
+ gmac->regmap = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
+ "syscon");
+ if (IS_ERR(gmac->regmap)) {
+ ret = PTR_ERR(gmac->regmap);
+ dev_err(&pdev->dev, "Unable to map syscon: %d\n", ret);
+ return ret;
+ }
+
+ plat_dat->interface = of_get_phy_mode(dev->of_node);
+ if (plat_dat->interface == gmac->variant->internal_phy) {
+ dev_info(&pdev->dev, "Will use internal PHY\n");
+ gmac->use_internal_phy = true;
+ gmac->ephy_clk = of_clk_get(plat_dat->phy_node, 0);
+ if (IS_ERR(gmac->ephy_clk)) {
+ ret = PTR_ERR(gmac->ephy_clk);
+ dev_err(&pdev->dev, "Cannot get EPHY clock: %d\n", ret);
+ return -EINVAL;
+ }
+
+ gmac->rst_ephy = of_reset_control_get(plat_dat->phy_node, NULL);
+ if (IS_ERR(gmac->rst_ephy)) {
+ ret = PTR_ERR(gmac->rst_ephy);
+ if (ret == -EPROBE_DEFER)
+ return ret;
+ dev_err(&pdev->dev, "No EPHY reset control found %d\n",
+ ret);
+ return -EINVAL;
+ }
+ } else {
+ dev_info(&pdev->dev, "Will use external PHY\n");
+ gmac->use_internal_phy = false;
+ }
+
+ /* platform data specifying hardware features and callbacks.
+ * hardware features were copied from Allwinner drivers.
+ */
+ plat_dat->rx_coe = STMMAC_RX_COE_TYPE2;
+ plat_dat->tx_coe = 1;
+ plat_dat->has_sun8i = true;
+ plat_dat->bsp_priv = gmac;
+ plat_dat->init = sun8i_dwmac_init;
+ plat_dat->exit = sun8i_dwmac_exit;
+ plat_dat->setup = sun8i_dwmac_setup;
+
+ ret = sun8i_dwmac_init(pdev, plat_dat->bsp_priv);
+ if (ret)
+ return ret;
+
+ ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
+ if (ret)
+ sun8i_dwmac_exit(pdev, plat_dat->bsp_priv);
+
+ return ret;
+}
+
+static const struct of_device_id sun8i_dwmac_match[] = {
+ { .compatible = "allwinner,sun8i-h3-emac",
+ .data = &emac_variant_h3 },
+ { .compatible = "allwinner,sun8i-a83t-emac",
+ .data = &emac_variant_a83t },
+ { .compatible = "allwinner,sun50i-a64-emac",
+ .data = &emac_variant_a64 },
+ { }
+};
+MODULE_DEVICE_TABLE(of, sun8i_dwmac_match);
+
+static struct platform_driver sun8i_dwmac_driver = {
+ .probe = sun8i_dwmac_probe,
+ .remove = stmmac_pltfr_remove,
+ .driver = {
+ .name = "dwmac-sun8i",
+ .pm = &stmmac_pltfr_pm_ops,
+ .of_match_table = sun8i_dwmac_match,
+ },
+};
+module_platform_driver(sun8i_dwmac_driver);
+
+MODULE_AUTHOR("Corentin Labbe <clabbe.montjoie@gmail.com>");
+MODULE_DESCRIPTION("Allwinner sun8i DWMAC specific glue layer");
+MODULE_LICENSE("GPL");
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index b82ab64..39777a7 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -235,6 +235,17 @@ static void stmmac_clk_csr_set(struct stmmac_priv *priv)
else if ((clk_rate >= CSR_F_250M) && (clk_rate < CSR_F_300M))
priv->clk_csr = STMMAC_CSR_250_300M;
}
+
+ if (priv->plat->has_sun8i) {
+ if (clk_rate > 160000000)
+ priv->clk_csr = 0x03;
+ else if (clk_rate > 80000000)
+ priv->clk_csr = 0x02;
+ else if (clk_rate > 40000000)
+ priv->clk_csr = 0x01;
+ else
+ priv->clk_csr = 0;
+ }
}
static void print_pkt(unsigned char *buf, int len)
@@ -784,6 +795,14 @@ static void stmmac_adjust_link(struct net_device *dev)
if (phydev->link) {
u32 ctrl = readl(priv->ioaddr + MAC_CTRL_REG);
+ /* dwmac-sun8i handle loopback in MAC_CTRL_REG */
+ if (priv->plat->has_sun8i) {
+ if (dev->features & NETIF_F_LOOPBACK)
+ ctrl |= BIT(1);
+ else
+ ctrl &= ~BIT(1);
+ }
+
/* Now we make sure that we can be in full duplex mode.
* If not, we operate in half-duplex mode. */
if (phydev->duplex != priv->oldduplex) {
@@ -800,6 +819,8 @@ static void stmmac_adjust_link(struct net_device *dev)
if (phydev->speed != priv->speed) {
new_state = 1;
+ if (priv->plat->has_sun8i)
+ ctrl &= ~GENMASK(3, 2);
switch (phydev->speed) {
case 1000:
if (priv->plat->has_gmac ||
@@ -811,6 +832,8 @@ static void stmmac_adjust_link(struct net_device *dev)
priv->plat->has_gmac4) {
ctrl |= priv->hw->link.port;
ctrl |= priv->hw->link.speed;
+ } else if (priv->plat->has_sun8i) {
+ ctrl |= 3 << 2;
} else {
ctrl &= ~priv->hw->link.port;
}
@@ -820,6 +843,8 @@ static void stmmac_adjust_link(struct net_device *dev)
priv->plat->has_gmac4) {
ctrl |= priv->hw->link.port;
ctrl &= ~(priv->hw->link.speed);
+ } else if (priv->plat->has_sun8i) {
+ ctrl |= 2 << 2;
} else {
ctrl &= ~priv->hw->link.port;
}
@@ -3969,6 +3994,10 @@ static int stmmac_hw_init(struct stmmac_priv *priv)
priv->hw = mac;
+ /* dwmac-sun8i only work in chain mode */
+ if (priv->plat->has_sun8i)
+ chain_mode = 1;
+
/* To use the chained or ring mode */
if (priv->synopsys_id >= DWMAC_CORE_4_00) {
priv->hw->mode = &dwmac4_ring_mode_ops;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
index 7fc3a1e..3840529 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
@@ -309,6 +309,12 @@ static int stmmac_dt_phy(struct plat_stmmacenet_data *plat,
struct device_node *np, struct device *dev)
{
bool mdio = true;
+ static const struct of_device_id need_mdio_ids[] = {
+ { .compatible = "snps,dwc-qos-ethernet-4.10" },
+ { .compatible = "allwinner,sun8i-a83t-emac" },
+ { .compatible = "allwinner,sun8i-h3-emac" },
+ { .compatible = "allwinner,sun50i-a64-emac" },
+ };
/* If phy-handle property is passed from DT, use it as the PHY */
plat->phy_node = of_parse_phandle(np, "phy-handle", 0);
@@ -325,8 +331,7 @@ static int stmmac_dt_phy(struct plat_stmmacenet_data *plat,
mdio = false;
}
- /* exception for dwmac-dwc-qos-eth glue logic */
- if (of_device_is_compatible(np, "snps,dwc-qos-ethernet-4.10")) {
+ if (of_match_node(need_mdio_ids, np)) {
plat->mdio_node = of_get_child_by_name(np, "mdio");
} else {
/**
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
index 8bb550b..108739f 100644
--- a/include/linux/stmmac.h
+++ b/include/linux/stmmac.h
@@ -186,6 +186,7 @@ struct plat_stmmacenet_data {
struct reset_control *stmmac_rst;
struct stmmac_axi *axi;
int has_gmac4;
+ bool has_sun8i;
bool tso_en;
int mac_port_sel_speed;
bool en_tx_lpi_clockgating;
--
2.10.2
^ permalink raw reply related
* [PATCH v5 04/20] dt-bindings: syscon: Add DT bindings documentation for Allwinner syscon
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
This patch adds documentation for Device-Tree bindings for the
syscon present in allwinner devices.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
.../devicetree/bindings/misc/allwinner,syscon.txt | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 Documentation/devicetree/bindings/misc/allwinner,syscon.txt
diff --git a/Documentation/devicetree/bindings/misc/allwinner,syscon.txt b/Documentation/devicetree/bindings/misc/allwinner,syscon.txt
new file mode 100644
index 0000000..cb57691
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/allwinner,syscon.txt
@@ -0,0 +1,19 @@
+* Allwinner sun8i system controller
+
+This file describes the bindings for the system controller present in
+Allwinner SoC H3, A83T and A64.
+The principal function of this syscon is to control EMAC PHY choice and
+config.
+
+Required properties for the system controller:
+- reg: address and length of the register for the device.
+- compatible: should be "syscon" and one of the following string:
+ "allwinner,sun8i-h3-system-controller"
+ "allwinner,sun50i-a64-system-controller"
+ "allwinner,sun8i-a83t-system-controller"
+
+Example:
+syscon: syscon at 1c00000 {
+ compatible = "allwinner,sun8i-h3-system-controller", "syscon";
+ reg = <0x01c00000 0x1000>;
+};
--
2.10.2
^ permalink raw reply related
* [PATCH v5 03/20] dt-bindings: net: Add DT bindings documentation for Allwinner dwmac-sun8i
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
This patch adds documentation for Device-Tree bindings for the
Allwinner dwmac-sun8i driver.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Acked-by: Rob Herring <robh@kernel.org>
---
.../devicetree/bindings/net/dwmac-sun8i.txt | 77 ++++++++++++++++++++++
1 file changed, 77 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/dwmac-sun8i.txt
diff --git a/Documentation/devicetree/bindings/net/dwmac-sun8i.txt b/Documentation/devicetree/bindings/net/dwmac-sun8i.txt
new file mode 100644
index 0000000..05cd067
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/dwmac-sun8i.txt
@@ -0,0 +1,77 @@
+* Allwinner sun8i GMAC ethernet controller
+
+This device is a platform glue layer for stmmac.
+Please see stmmac.txt for the other unchanged properties.
+
+Required properties:
+- compatible: should be one of the following string:
+ "allwinner,sun8i-a83t-emac"
+ "allwinner,sun8i-h3-emac"
+ "allwinner,sun50i-a64-emac"
+- reg: address and length of the register for the device.
+- interrupts: interrupt for the device
+- interrupt-names: should be "macirq"
+- clocks: A phandle to the reference clock for this device
+- clock-names: should be "stmmaceth"
+- resets: A phandle to the reset control for this device
+- reset-names: should be "stmmaceth"
+- phy-mode: See ethernet.txt
+- phy-handle: See ethernet.txt
+- #address-cells: shall be 1
+- #size-cells: shall be 0
+- syscon: A phandle to the syscon of the SoC with one of the following
+ compatible string:
+ - allwinner,sun8i-h3-system-controller
+ - allwinner,sun50i-a64-system-controller
+ - allwinner,sun8i-a83t-system-controller
+
+Optional properties:
+- allwinner,tx-delay-ps: TX clock delay chain value in ps. Range value is 0-700. Default is 0)
+- allwinner,rx-delay-ps: RX clock delay chain value in ps. Range value is 0-3100. Default is 0)
+Both delay properties need to be a multiple of 100.
+
+Optional properties for "allwinner,sun8i-h3-emac":
+- allwinner,leds-active-low: EPHY LEDs are active low
+
+Required child node of emac:
+- mdio bus node: should be named mdio
+
+Required properties of the mdio node:
+- #address-cells: shall be 1
+- #size-cells: shall be 0
+
+The device node referenced by "phy" or "phy-handle" should be a child node
+of the mdio node. See phy.txt for the generic PHY bindings.
+
+Required properties of the phy node with "allwinner,sun8i-h3-emac":
+- clocks: a phandle to the reference clock for the EPHY
+- resets: a phandle to the reset control for the EPHY
+
+Example:
+
+emac: ethernet at 1c0b000 {
+ compatible = "allwinner,sun8i-h3-emac";
+ syscon = <&syscon>;
+ reg = <0x01c0b000 0x104>;
+ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq";
+ resets = <&ccu RST_BUS_EMAC>;
+ reset-names = "stmmaceth";
+ clocks = <&ccu CLK_BUS_EMAC>;
+ clock-names = "stmmaceth";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ phy = <&int_mii_phy>;
+ phy-mode = "mii";
+ allwinner,leds-active-low;
+ mdio: mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ int_mii_phy: ethernet-phy at 1 {
+ reg = <1>;
+ clocks = <&ccu CLK_BUS_EPHY>;
+ resets = <&ccu RST_BUS_EPHY>;
+ };
+ };
+};
--
2.10.2
^ permalink raw reply related
* [PATCH v5 02/20] net: stmmac: add optional setup function
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
Instead of adding more ifthen logic for adding a new mac_device_info
setup function, it is easier to add a function pointer to the function
needed.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 +++-
include/linux/stmmac.h | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index cd8c601..b82ab64 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3947,7 +3947,9 @@ static int stmmac_hw_init(struct stmmac_priv *priv)
struct mac_device_info *mac;
/* Identify the MAC HW device */
- if (priv->plat->has_gmac) {
+ if (priv->plat->setup) {
+ mac = priv->plat->setup(priv);
+ } else if (priv->plat->has_gmac) {
priv->dev->priv_flags |= IFF_UNICAST_FLT;
mac = dwmac1000_setup(priv->ioaddr,
priv->plat->multicast_filter_bins,
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
index 3921cb9..8bb550b 100644
--- a/include/linux/stmmac.h
+++ b/include/linux/stmmac.h
@@ -177,6 +177,7 @@ struct plat_stmmacenet_data {
void (*fix_mac_speed)(void *priv, unsigned int speed);
int (*init)(struct platform_device *pdev, void *priv);
void (*exit)(struct platform_device *pdev, void *priv);
+ struct mac_device_info *(*setup)(void *priv);
void *bsp_priv;
struct clk *stmmac_clk;
struct clk *pclk;
--
2.10.2
^ permalink raw reply related
* [PATCH v5 01/20] net: stmmac: export stmmac_set_mac_addr/stmmac_get_mac_addr
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501124520.3769-1-clabbe.montjoie@gmail.com>
Thoses symbol will be needed for the dwmac-sun8i ethernet driver.
For letting it to be build as module, they need to be exported.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c b/drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c
index 38f9430..67af0bd 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c
@@ -248,6 +248,7 @@ void stmmac_set_mac_addr(void __iomem *ioaddr, u8 addr[6],
data = (addr[3] << 24) | (addr[2] << 16) | (addr[1] << 8) | addr[0];
writel(data, ioaddr + low);
}
+EXPORT_SYMBOL_GPL(stmmac_set_mac_addr);
/* Enable disable MAC RX/TX */
void stmmac_set_mac(void __iomem *ioaddr, bool enable)
@@ -279,4 +280,4 @@ void stmmac_get_mac_addr(void __iomem *ioaddr, unsigned char *addr,
addr[4] = hi_addr & 0xff;
addr[5] = (hi_addr >> 8) & 0xff;
}
-
+EXPORT_SYMBOL_GPL(stmmac_get_mac_addr);
--
2.10.2
^ permalink raw reply related
* [PATCH v5 00/20] net-next: stmmac: add dwmac-sun8i ethernet driver
From: Corentin Labbe @ 2017-05-01 12:45 UTC (permalink / raw)
To: linux-arm-kernel
Hello
This patch series add the driver for dwmac-sun8i which handle the Ethernet MAC
present on Allwinner H3/H5/A83T/A64 SoCs.
This driver is the continuation of the sun8i-emac driver.
During the development, it appeared that in fact the hardware was a modified
version of some dwmac.
So the driver is now written as a glue driver for stmmac.
It supports 10/100/1000 Mbit/s speed with half/full duplex.
It can use an internal PHY (MII 10/100) or an external PHY
via RGMII/RMII.
This patch series enable the driver only for the H3/A64/H5 SoC since A83T
doesn't have the necessary clocks present in mainline.
The driver have been tested on the following boards:
- H3 Orange PI PC, BananaPI-M2+
- A64 Pine64, BananaPi-M64
- A83T BananaPI-M3
The first two patchs are some mandatory changes for letting dwmac-sun8i be used.
The following three patchs add the driver and its documentation.
The remaining are DT patch enabling it.
Regards
Corentin Labbe
Changes since v4:
- Re-ordered by alphabetical order some DT nodes
- Fixed arm64 patch prefix
- Simplified power/unpower_phy functions by testing the use of internal_phy
- Added a patch for adding dwmac-sun8i to arm64 defconfig
- Fix a typo in sun50i-a64-system-controller (wrongly used sun8i)
- Reworked uc/mc filter address setting
Changes since v3:
- Renamed tx-delay/rx-delay to tx-delay-ps/rx-delay-ps
- fix syscon compatible example
- Changed parameter type for setup() function
- Dropped some DT patchs for boards which I could not test further
Changes since v2:
- corrected order of syscon compatible
- added compatible = "ethernet-phy-ieee802.3-c22 to PHY
- added set_mac function
Changes since v1:
- added TX/RX delay units
- splitted syscon documentation in its own patch
- regulator is now disabled after clk_prepare_enable(gmac->tx_clk) error
- Fixed a memory leak on mac_device_info
- Use now generic pin config for all DT stuff
- CONFIG_DWMAC_SUN8I is now set to y in defconfigs
Corentin Labbe (20):
net: stmmac: export stmmac_set_mac_addr/stmmac_get_mac_addr
net: stmmac: add optional setup function
dt-bindings: net: Add DT bindings documentation for Allwinner
dwmac-sun8i
dt-bindings: syscon: Add DT bindings documentation for Allwinner
syscon
net: stmmac: Add dwmac-sun8i
arm: sun8i: sunxi-h3-h5: Add dt node for the syscon control module
arm: sun8i: sunxi-h3-h5: add dwmac-sun8i ethernet driver
arm: sun8i: orangepi-pc: Enable dwmac-sun8i
arm: sun8i: orangepi-zero: Enable dwmac-sun8i
arm: sun8i: orangepi-one: Enable dwmac-sun8i
arm: sun8i: orangepi-2: Enable dwmac-sun8i
arm: sun8i: orangepi-pc-plus: Set EMAC activity LEDs to active high
arm64: allwinner: sun50i-a64: Add dt node for the syscon control
module
arm64: allwinner: sun50i-a64: add dwmac-sun8i Ethernet driver
arm64: allwinner: pine64: Enable dwmac-sun8i
arm64: allwinner: pine64-plus: Enable dwmac-sun8i
arm64: allwinner: bananapi-m64: Enable dwmac-sun8i
arm: sunxi: Enable dwmac-sun8i driver on sunxi_defconfig
arm: multi_v7: Enable dwmac-sun8i driver on multi_v7_defconfig
arm64: defconfig: Enable dwmac-sun8i driver on defconfig
.../devicetree/bindings/misc/allwinner,syscon.txt | 19 +
.../devicetree/bindings/net/dwmac-sun8i.txt | 77 ++
arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 8 +
arch/arm/boot/dts/sun8i-h3-orangepi-2.dts | 8 +
arch/arm/boot/dts/sun8i-h3-orangepi-one.dts | 8 +
arch/arm/boot/dts/sun8i-h3-orangepi-pc-plus.dts | 5 +
arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts | 8 +
arch/arm/boot/dts/sunxi-h3-h5.dtsi | 40 +
arch/arm/configs/multi_v7_defconfig | 1 +
arch/arm/configs/sunxi_defconfig | 1 +
.../boot/dts/allwinner/sun50i-a64-bananapi-m64.dts | 15 +
.../boot/dts/allwinner/sun50i-a64-pine64-plus.dts | 17 +-
.../arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 16 +
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 41 +
arch/arm64/configs/defconfig | 1 +
drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 +
drivers/net/ethernet/stmicro/stmmac/Makefile | 1 +
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 973 +++++++++++++++++++++
drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c | 3 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 33 +-
.../net/ethernet/stmicro/stmmac/stmmac_platform.c | 9 +-
include/linux/stmmac.h | 2 +
22 files changed, 1292 insertions(+), 5 deletions(-)
create mode 100644 Documentation/devicetree/bindings/misc/allwinner,syscon.txt
create mode 100644 Documentation/devicetree/bindings/net/dwmac-sun8i.txt
create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
--
2.10.2
^ permalink raw reply
* [PATCH v6 2/6] power: supply: add battery driver for AXP20X and AXP22X PMICs
From: Sebastian Reichel @ 2017-05-01 11:30 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170418073421.31351-3-quentin.schulz@free-electrons.com>
Hi,
On Tue, Apr 18, 2017 at 09:34:17AM +0200, Quentin Schulz wrote:
> The X-Powers AXP20X and AXP22X PMICs can have a battery as power supply.
>
> This patch adds the battery power supply driver to get various data from
> the PMIC, such as the battery status (charging, discharging, full,
> dead), current max limit, current current, battery capacity (in
> percentage), voltage max and min limits, current voltage and battery
> capacity (in Ah).
>
> This battery driver uses the AXP20X/AXP22X ADC driver as PMIC data
> provider.
>
> Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
> Acked-by: Jonathan Cameron <jic23@kernel.org>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Chen-Yu Tsai <wens@csie.org>
> Acked-by: Sebastian Reichel <sre@kernel.org>
Thanks, queued.
-- Sebastian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170501/9eedd794/attachment.sig>
^ permalink raw reply
* [PATCH v6 1/6] dt-bindings: power: supply: add AXP20X/AXP22X battery DT binding
From: Sebastian Reichel @ 2017-05-01 11:29 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170418073421.31351-2-quentin.schulz@free-electrons.com>
Hi,
On Tue, Apr 18, 2017 at 09:34:16AM +0200, Quentin Schulz wrote:
> The X-Powers AXP20X and AXP22X PMICs can have a battery as power supply.
>
> This patch adds the DT binding documentation for the battery power
> supply which gets various data from the PMIC, such as the battery status
> (charging, discharging, full, dead), current max limit, current current,
> battery capacity (in percentage), voltage max and min limits, current
> voltage and battery capacity (in Ah).
>
> Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
> Acked-by: Chen-Yu Tsai <wens@csie.org>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Thanks, queued.
-- Sebastian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170501/76770926/attachment.sig>
^ permalink raw reply
* [PATCH v2 0/5] arm64: dts: renesas: Break out common board support
From: Simon Horman @ 2017-05-01 9:11 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1493384324-29344-1-git-send-email-geert+renesas@glider.be>
On Fri, Apr 28, 2017 at 02:58:39PM +0200, Geert Uytterhoeven wrote:
> Hi Simon, Magnus,
>
> The Renesas Salvator-X and ULCB development board can be equipped with
> either an R-Car H3 or M3-W SiP, which are pin-compatible. All boards
> use separate DTBs, but currently there's no sharing of board-specific
> devices in DTS.
>
> This series reduces duplication by extracting common board support into
> their own .dtsi files. As the level of support varies across boards and
> SoCs, this requires the addition of a few external clocks and
> placeholder devices on R-Car M3-W, so the common board support DTS can
> refer to them.
>
> - Patches 1 and 2 add the external audio and PCIe bus clocks on R-Car
> M3-W, which are present in r8a7795.dtsi, and used in
> r8a7795-salvator-x.dts,
> - Patch 3 adds placeholders for devices that are not yet supported
> and/or tested on R-Car M3-W, but used on R-Car H3,
> - Patch 4 extracts common Salvator-X board support,
> - Patch 5 extracts common ULCB board support.
>
> For R-Car H3 based boards, there are no functional changes.
> For R-Car M3-W based boards, some new devices are now described in DT.
>
> Compared to v1, the most important change is a rebase to remove the
> dependency on "[PATCH 0/8] arm64: dts: renesas: Break out R-Car H3 and
> M3-W SiP" (http://www.spinics.net/lists/devicetree/msg173820.html).
> Please refer to the individual patches for more changelog information.
>
> Dependencies:
> - renesas-devel-20170428-v4.11-rc8.
>
> DTB changes have been inspected using scripts/dtc/dtx_diff.
> This has been tested on Salvator-X (both H3 and M3-W), H3ULCB, and
> M3ULCB.
>
> Thanks for applying!
Thanks, done.
^ permalink raw reply
* [PATCH v3] pinctrl: mediatek: reuse pinctrl driver for mt7623
From: John Crispin @ 2017-05-01 8:10 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1493625274-3909-1-git-send-email-sean.wang@mediatek.com>
On 01/05/17 09:54, sean.wang at mediatek.com wrote:
> From: Sean Wang <sean.wang@mediatek.com>
>
> mt7623 pinctrl hardware can be compatible with mt2701 driver,
> so the patch lets the pinctrl on mt7623 SoC reuse the driver
> and deletes those redundant ones.
>
> Cc: John Crispin <john@phrozen.org>
> Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Acked-by: John Crispin <john@phrozen.org>
Thanks !
> ---
> drivers/pinctrl/mediatek/Kconfig | 9 +-
> drivers/pinctrl/mediatek/Makefile | 1 -
> drivers/pinctrl/mediatek/pinctrl-mt2701.c | 1 +
> drivers/pinctrl/mediatek/pinctrl-mt7623.c | 379 -----
> drivers/pinctrl/mediatek/pinctrl-mtk-mt7623.h | 1936 -------------------------
> 5 files changed, 2 insertions(+), 2324 deletions(-)
> delete mode 100644 drivers/pinctrl/mediatek/pinctrl-mt7623.c
> delete mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-mt7623.h
>
> diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig
> index 80fe3b4..fac9866 100644
> --- a/drivers/pinctrl/mediatek/Kconfig
> +++ b/drivers/pinctrl/mediatek/Kconfig
> @@ -11,18 +11,11 @@ config PINCTRL_MTK
> # For ARMv7 SoCs
> config PINCTRL_MT2701
> bool "Mediatek MT2701 pin control"
> - depends on MACH_MT2701 || COMPILE_TEST
> + depends on MACH_MT7623 || MACH_MT2701 || COMPILE_TEST
> depends on OF
> default MACH_MT2701
> select PINCTRL_MTK
>
> -config PINCTRL_MT7623
> - bool "Mediatek MT7623 pin control"
> - depends on MACH_MT7623 || COMPILE_TEST
> - depends on OF
> - default MACH_MT7623
> - select PINCTRL_MTK_COMMON
> -
> config PINCTRL_MT8135
> bool "Mediatek MT8135 pin control"
> depends on MACH_MT8135 || COMPILE_TEST
> diff --git a/drivers/pinctrl/mediatek/Makefile b/drivers/pinctrl/mediatek/Makefile
> index 3e3390a..e59c613 100644
> --- a/drivers/pinctrl/mediatek/Makefile
> +++ b/drivers/pinctrl/mediatek/Makefile
> @@ -3,7 +3,6 @@ obj-y += pinctrl-mtk-common.o
>
> # SoC Drivers
> obj-$(CONFIG_PINCTRL_MT2701) += pinctrl-mt2701.o
> -obj-$(CONFIG_PINCTRL_MT7623) += pinctrl-mt7623.o
> obj-$(CONFIG_PINCTRL_MT8135) += pinctrl-mt8135.o
> obj-$(CONFIG_PINCTRL_MT8127) += pinctrl-mt8127.o
> obj-$(CONFIG_PINCTRL_MT8173) += pinctrl-mt8173.o
> diff --git a/drivers/pinctrl/mediatek/pinctrl-mt2701.c b/drivers/pinctrl/mediatek/pinctrl-mt2701.c
> index 8d802fa..f86f3b3 100644
> --- a/drivers/pinctrl/mediatek/pinctrl-mt2701.c
> +++ b/drivers/pinctrl/mediatek/pinctrl-mt2701.c
> @@ -565,6 +565,7 @@ static int mt2701_pinctrl_probe(struct platform_device *pdev)
>
> static const struct of_device_id mt2701_pctrl_match[] = {
> { .compatible = "mediatek,mt2701-pinctrl", },
> + { .compatible = "mediatek,mt7623-pinctrl", },
> {}
> };
> MODULE_DEVICE_TABLE(of, mt2701_pctrl_match);
> diff --git a/drivers/pinctrl/mediatek/pinctrl-mt7623.c b/drivers/pinctrl/mediatek/pinctrl-mt7623.c
> deleted file mode 100644
> index fa28dd6..0000000
> --- a/drivers/pinctrl/mediatek/pinctrl-mt7623.c
> +++ /dev/null
> @@ -1,379 +0,0 @@
> -/*
> - * Copyright (c) 2016 John Crispin <john@phrozen.org>
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> - * GNU General Public License for more details.
> - */
> -
> -#include <dt-bindings/pinctrl/mt65xx.h>
> -#include <linux/module.h>
> -#include <linux/of.h>
> -#include <linux/of_device.h>
> -#include <linux/platform_device.h>
> -#include <linux/pinctrl/pinctrl.h>
> -#include <linux/regmap.h>
> -
> -#include "pinctrl-mtk-common.h"
> -#include "pinctrl-mtk-mt7623.h"
> -
> -static const struct mtk_drv_group_desc mt7623_drv_grp[] = {
> - /* 0E4E8SR 4/8/12/16 */
> - MTK_DRV_GRP(4, 16, 1, 2, 4),
> - /* 0E2E4SR 2/4/6/8 */
> - MTK_DRV_GRP(2, 8, 1, 2, 2),
> - /* E8E4E2 2/4/6/8/10/12/14/16 */
> - MTK_DRV_GRP(2, 16, 0, 2, 2)
> -};
> -
> -#define DRV_SEL0 0xf50
> -#define DRV_SEL1 0xf60
> -#define DRV_SEL2 0xf70
> -#define DRV_SEL3 0xf80
> -#define DRV_SEL4 0xf90
> -#define DRV_SEL5 0xfa0
> -#define DRV_SEL6 0xfb0
> -#define DRV_SEL7 0xfe0
> -#define DRV_SEL8 0xfd0
> -#define DRV_SEL9 0xff0
> -#define DRV_SEL10 0xf00
> -
> -#define MSDC0_CTRL0 0xcc0
> -#define MSDC0_CTRL1 0xcd0
> -#define MSDC0_CTRL2 0xce0
> -#define MSDC0_CTRL3 0xcf0
> -#define MSDC0_CTRL4 0xd00
> -#define MSDC0_CTRL5 0xd10
> -#define MSDC0_CTRL6 0xd20
> -#define MSDC1_CTRL0 0xd30
> -#define MSDC1_CTRL1 0xd40
> -#define MSDC1_CTRL2 0xd50
> -#define MSDC1_CTRL3 0xd60
> -#define MSDC1_CTRL4 0xd70
> -#define MSDC1_CTRL5 0xd80
> -#define MSDC1_CTRL6 0xd90
> -
> -#define IES_EN0 0xb20
> -#define IES_EN1 0xb30
> -#define IES_EN2 0xb40
> -
> -#define SMT_EN0 0xb50
> -#define SMT_EN1 0xb60
> -#define SMT_EN2 0xb70
> -
> -static const struct mtk_pin_drv_grp mt7623_pin_drv[] = {
> - MTK_PIN_DRV_GRP(0, DRV_SEL0, 0, 1),
> - MTK_PIN_DRV_GRP(1, DRV_SEL0, 0, 1),
> - MTK_PIN_DRV_GRP(2, DRV_SEL0, 0, 1),
> - MTK_PIN_DRV_GRP(3, DRV_SEL0, 0, 1),
> - MTK_PIN_DRV_GRP(4, DRV_SEL0, 0, 1),
> - MTK_PIN_DRV_GRP(5, DRV_SEL0, 0, 1),
> - MTK_PIN_DRV_GRP(6, DRV_SEL0, 0, 1),
> - MTK_PIN_DRV_GRP(7, DRV_SEL0, 4, 1),
> - MTK_PIN_DRV_GRP(8, DRV_SEL0, 4, 1),
> - MTK_PIN_DRV_GRP(9, DRV_SEL0, 4, 1),
> - MTK_PIN_DRV_GRP(10, DRV_SEL0, 8, 1),
> - MTK_PIN_DRV_GRP(11, DRV_SEL0, 8, 1),
> - MTK_PIN_DRV_GRP(12, DRV_SEL0, 8, 1),
> - MTK_PIN_DRV_GRP(13, DRV_SEL0, 8, 1),
> - MTK_PIN_DRV_GRP(14, DRV_SEL0, 12, 0),
> - MTK_PIN_DRV_GRP(15, DRV_SEL0, 12, 0),
> - MTK_PIN_DRV_GRP(18, DRV_SEL1, 4, 0),
> - MTK_PIN_DRV_GRP(19, DRV_SEL1, 4, 0),
> - MTK_PIN_DRV_GRP(20, DRV_SEL1, 4, 0),
> - MTK_PIN_DRV_GRP(21, DRV_SEL1, 4, 0),
> - MTK_PIN_DRV_GRP(22, DRV_SEL1, 8, 0),
> - MTK_PIN_DRV_GRP(23, DRV_SEL1, 8, 0),
> - MTK_PIN_DRV_GRP(24, DRV_SEL1, 8, 0),
> - MTK_PIN_DRV_GRP(25, DRV_SEL1, 8, 0),
> - MTK_PIN_DRV_GRP(26, DRV_SEL1, 8, 0),
> - MTK_PIN_DRV_GRP(27, DRV_SEL1, 12, 0),
> - MTK_PIN_DRV_GRP(28, DRV_SEL1, 12, 0),
> - MTK_PIN_DRV_GRP(29, DRV_SEL1, 12, 0),
> - MTK_PIN_DRV_GRP(33, DRV_SEL2, 0, 0),
> - MTK_PIN_DRV_GRP(34, DRV_SEL2, 0, 0),
> - MTK_PIN_DRV_GRP(35, DRV_SEL2, 0, 0),
> - MTK_PIN_DRV_GRP(36, DRV_SEL2, 0, 0),
> - MTK_PIN_DRV_GRP(37, DRV_SEL2, 0, 0),
> - MTK_PIN_DRV_GRP(39, DRV_SEL2, 8, 1),
> - MTK_PIN_DRV_GRP(40, DRV_SEL2, 8, 1),
> - MTK_PIN_DRV_GRP(41, DRV_SEL2, 8, 1),
> - MTK_PIN_DRV_GRP(42, DRV_SEL2, 8, 1),
> - MTK_PIN_DRV_GRP(43, DRV_SEL2, 12, 0),
> - MTK_PIN_DRV_GRP(44, DRV_SEL2, 12, 0),
> - MTK_PIN_DRV_GRP(45, DRV_SEL2, 12, 0),
> - MTK_PIN_DRV_GRP(47, DRV_SEL3, 0, 0),
> - MTK_PIN_DRV_GRP(48, DRV_SEL3, 0, 0),
> - MTK_PIN_DRV_GRP(49, DRV_SEL3, 4, 0),
> - MTK_PIN_DRV_GRP(53, DRV_SEL3, 12, 0),
> - MTK_PIN_DRV_GRP(54, DRV_SEL3, 12, 0),
> - MTK_PIN_DRV_GRP(55, DRV_SEL3, 12, 0),
> - MTK_PIN_DRV_GRP(56, DRV_SEL3, 12, 0),
> - MTK_PIN_DRV_GRP(60, DRV_SEL4, 8, 1),
> - MTK_PIN_DRV_GRP(61, DRV_SEL4, 8, 1),
> - MTK_PIN_DRV_GRP(62, DRV_SEL4, 8, 1),
> - MTK_PIN_DRV_GRP(63, DRV_SEL4, 12, 1),
> - MTK_PIN_DRV_GRP(64, DRV_SEL4, 12, 1),
> - MTK_PIN_DRV_GRP(65, DRV_SEL4, 12, 1),
> - MTK_PIN_DRV_GRP(66, DRV_SEL5, 0, 1),
> - MTK_PIN_DRV_GRP(67, DRV_SEL5, 0, 1),
> - MTK_PIN_DRV_GRP(68, DRV_SEL5, 0, 1),
> - MTK_PIN_DRV_GRP(69, DRV_SEL5, 0, 1),
> - MTK_PIN_DRV_GRP(70, DRV_SEL5, 0, 1),
> - MTK_PIN_DRV_GRP(71, DRV_SEL5, 0, 1),
> - MTK_PIN_DRV_GRP(72, DRV_SEL3, 4, 0),
> - MTK_PIN_DRV_GRP(73, DRV_SEL3, 4, 0),
> - MTK_PIN_DRV_GRP(74, DRV_SEL3, 4, 0),
> - MTK_PIN_DRV_GRP(83, DRV_SEL5, 0, 1),
> - MTK_PIN_DRV_GRP(84, DRV_SEL5, 0, 1),
> - MTK_PIN_DRV_GRP(105, MSDC1_CTRL1, 0, 1),
> - MTK_PIN_DRV_GRP(106, MSDC1_CTRL0, 0, 1),
> - MTK_PIN_DRV_GRP(107, MSDC1_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(108, MSDC1_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(109, MSDC1_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(110, MSDC1_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(111, MSDC0_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(112, MSDC0_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(113, MSDC0_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(114, MSDC0_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(115, MSDC0_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(116, MSDC0_CTRL1, 0, 1),
> - MTK_PIN_DRV_GRP(117, MSDC0_CTRL0, 0, 1),
> - MTK_PIN_DRV_GRP(118, MSDC0_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(119, MSDC0_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(120, MSDC0_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(121, MSDC0_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(126, DRV_SEL3, 4, 0),
> - MTK_PIN_DRV_GRP(199, DRV_SEL0, 4, 1),
> - MTK_PIN_DRV_GRP(200, DRV_SEL8, 0, 0),
> - MTK_PIN_DRV_GRP(201, DRV_SEL8, 0, 0),
> - MTK_PIN_DRV_GRP(203, DRV_SEL8, 4, 0),
> - MTK_PIN_DRV_GRP(204, DRV_SEL8, 4, 0),
> - MTK_PIN_DRV_GRP(205, DRV_SEL8, 4, 0),
> - MTK_PIN_DRV_GRP(206, DRV_SEL8, 4, 0),
> - MTK_PIN_DRV_GRP(207, DRV_SEL8, 4, 0),
> - MTK_PIN_DRV_GRP(208, DRV_SEL8, 8, 0),
> - MTK_PIN_DRV_GRP(209, DRV_SEL8, 8, 0),
> - MTK_PIN_DRV_GRP(236, DRV_SEL9, 4, 0),
> - MTK_PIN_DRV_GRP(237, DRV_SEL9, 4, 0),
> - MTK_PIN_DRV_GRP(238, DRV_SEL9, 4, 0),
> - MTK_PIN_DRV_GRP(239, DRV_SEL9, 4, 0),
> - MTK_PIN_DRV_GRP(240, DRV_SEL9, 4, 0),
> - MTK_PIN_DRV_GRP(241, DRV_SEL9, 4, 0),
> - MTK_PIN_DRV_GRP(242, DRV_SEL9, 8, 0),
> - MTK_PIN_DRV_GRP(243, DRV_SEL9, 8, 0),
> - MTK_PIN_DRV_GRP(257, MSDC0_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(261, MSDC1_CTRL2, 0, 1),
> - MTK_PIN_DRV_GRP(262, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(263, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(264, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(265, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(266, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(267, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(268, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(269, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(270, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(271, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(272, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(274, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(275, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(276, DRV_SEL10, 8, 0),
> - MTK_PIN_DRV_GRP(278, DRV_SEL2, 8, 1),
> -};
> -
> -static const struct mtk_pin_spec_pupd_set_samereg mt7623_spec_pupd[] = {
> - MTK_PIN_PUPD_SPEC_SR(105, MSDC1_CTRL1, 8, 9, 10),
> - MTK_PIN_PUPD_SPEC_SR(106, MSDC1_CTRL0, 8, 9, 10),
> - MTK_PIN_PUPD_SPEC_SR(107, MSDC1_CTRL3, 0, 1, 2),
> - MTK_PIN_PUPD_SPEC_SR(108, MSDC1_CTRL3, 4, 5, 6),
> - MTK_PIN_PUPD_SPEC_SR(109, MSDC1_CTRL3, 8, 9, 10),
> - MTK_PIN_PUPD_SPEC_SR(110, MSDC1_CTRL3, 12, 13, 14),
> - MTK_PIN_PUPD_SPEC_SR(111, MSDC0_CTRL4, 12, 13, 14),
> - MTK_PIN_PUPD_SPEC_SR(112, MSDC0_CTRL4, 8, 9, 10),
> - MTK_PIN_PUPD_SPEC_SR(113, MSDC0_CTRL4, 4, 5, 6),
> - MTK_PIN_PUPD_SPEC_SR(114, MSDC0_CTRL4, 0, 1, 2),
> - MTK_PIN_PUPD_SPEC_SR(115, MSDC0_CTRL5, 0, 1, 2),
> - MTK_PIN_PUPD_SPEC_SR(116, MSDC0_CTRL1, 8, 9, 10),
> - MTK_PIN_PUPD_SPEC_SR(117, MSDC0_CTRL0, 8, 9, 10),
> - MTK_PIN_PUPD_SPEC_SR(118, MSDC0_CTRL3, 12, 13, 14),
> - MTK_PIN_PUPD_SPEC_SR(119, MSDC0_CTRL3, 8, 9, 10),
> - MTK_PIN_PUPD_SPEC_SR(120, MSDC0_CTRL3, 4, 5, 6),
> - MTK_PIN_PUPD_SPEC_SR(121, MSDC0_CTRL3, 0, 1, 2),
> -};
> -
> -static int mt7623_spec_pull_set(struct regmap *regmap, unsigned int pin,
> - unsigned char align, bool isup, unsigned int r1r0)
> -{
> - return mtk_pctrl_spec_pull_set_samereg(regmap, mt7623_spec_pupd,
> - ARRAY_SIZE(mt7623_spec_pupd), pin, align, isup, r1r0);
> -}
> -
> -static const struct mtk_pin_ies_smt_set mt7623_ies_set[] = {
> - MTK_PIN_IES_SMT_SPEC(0, 6, IES_EN0, 0),
> - MTK_PIN_IES_SMT_SPEC(7, 9, IES_EN0, 1),
> - MTK_PIN_IES_SMT_SPEC(10, 13, IES_EN0, 2),
> - MTK_PIN_IES_SMT_SPEC(14, 15, IES_EN0, 3),
> - MTK_PIN_IES_SMT_SPEC(18, 21, IES_EN0, 5),
> - MTK_PIN_IES_SMT_SPEC(22, 26, IES_EN0, 6),
> - MTK_PIN_IES_SMT_SPEC(27, 29, IES_EN0, 7),
> - MTK_PIN_IES_SMT_SPEC(33, 37, IES_EN0, 8),
> - MTK_PIN_IES_SMT_SPEC(39, 42, IES_EN0, 9),
> - MTK_PIN_IES_SMT_SPEC(43, 45, IES_EN0, 10),
> - MTK_PIN_IES_SMT_SPEC(47, 48, IES_EN0, 11),
> - MTK_PIN_IES_SMT_SPEC(49, 49, IES_EN0, 12),
> - MTK_PIN_IES_SMT_SPEC(53, 56, IES_EN0, 14),
> - MTK_PIN_IES_SMT_SPEC(60, 62, IES_EN1, 0),
> - MTK_PIN_IES_SMT_SPEC(63, 65, IES_EN1, 1),
> - MTK_PIN_IES_SMT_SPEC(66, 71, IES_EN1, 2),
> - MTK_PIN_IES_SMT_SPEC(72, 74, IES_EN0, 12),
> - MTK_PIN_IES_SMT_SPEC(75, 76, IES_EN1, 3),
> - MTK_PIN_IES_SMT_SPEC(83, 84, IES_EN1, 2),
> - MTK_PIN_IES_SMT_SPEC(105, 121, MSDC1_CTRL1, 4),
> - MTK_PIN_IES_SMT_SPEC(122, 125, IES_EN1, 7),
> - MTK_PIN_IES_SMT_SPEC(126, 126, IES_EN0, 12),
> - MTK_PIN_IES_SMT_SPEC(199, 201, IES_EN0, 1),
> - MTK_PIN_IES_SMT_SPEC(203, 207, IES_EN2, 2),
> - MTK_PIN_IES_SMT_SPEC(208, 209, IES_EN2, 3),
> - MTK_PIN_IES_SMT_SPEC(236, 241, IES_EN2, 6),
> - MTK_PIN_IES_SMT_SPEC(242, 243, IES_EN2, 7),
> - MTK_PIN_IES_SMT_SPEC(261, 261, MSDC1_CTRL2, 4),
> - MTK_PIN_IES_SMT_SPEC(262, 272, IES_EN2, 12),
> - MTK_PIN_IES_SMT_SPEC(274, 276, IES_EN2, 12),
> - MTK_PIN_IES_SMT_SPEC(278, 278, IES_EN2, 13),
> -};
> -
> -static const struct mtk_pin_ies_smt_set mt7623_smt_set[] = {
> - MTK_PIN_IES_SMT_SPEC(0, 6, SMT_EN0, 0),
> - MTK_PIN_IES_SMT_SPEC(7, 9, SMT_EN0, 1),
> - MTK_PIN_IES_SMT_SPEC(10, 13, SMT_EN0, 2),
> - MTK_PIN_IES_SMT_SPEC(14, 15, SMT_EN0, 3),
> - MTK_PIN_IES_SMT_SPEC(18, 21, SMT_EN0, 5),
> - MTK_PIN_IES_SMT_SPEC(22, 26, SMT_EN0, 6),
> - MTK_PIN_IES_SMT_SPEC(27, 29, SMT_EN0, 7),
> - MTK_PIN_IES_SMT_SPEC(33, 37, SMT_EN0, 8),
> - MTK_PIN_IES_SMT_SPEC(39, 42, SMT_EN0, 9),
> - MTK_PIN_IES_SMT_SPEC(43, 45, SMT_EN0, 10),
> - MTK_PIN_IES_SMT_SPEC(47, 48, SMT_EN0, 11),
> - MTK_PIN_IES_SMT_SPEC(49, 49, SMT_EN0, 12),
> - MTK_PIN_IES_SMT_SPEC(53, 56, SMT_EN0, 14),
> - MTK_PIN_IES_SMT_SPEC(60, 62, SMT_EN1, 0),
> - MTK_PIN_IES_SMT_SPEC(63, 65, SMT_EN1, 1),
> - MTK_PIN_IES_SMT_SPEC(66, 71, SMT_EN1, 2),
> - MTK_PIN_IES_SMT_SPEC(72, 74, SMT_EN0, 12),
> - MTK_PIN_IES_SMT_SPEC(75, 76, SMT_EN1, 3),
> - MTK_PIN_IES_SMT_SPEC(83, 84, SMT_EN1, 2),
> - MTK_PIN_IES_SMT_SPEC(105, 106, MSDC1_CTRL1, 11),
> - MTK_PIN_IES_SMT_SPEC(107, 107, MSDC1_CTRL3, 3),
> - MTK_PIN_IES_SMT_SPEC(108, 108, MSDC1_CTRL3, 7),
> - MTK_PIN_IES_SMT_SPEC(109, 109, MSDC1_CTRL3, 11),
> - MTK_PIN_IES_SMT_SPEC(110, 111, MSDC1_CTRL3, 15),
> - MTK_PIN_IES_SMT_SPEC(112, 112, MSDC0_CTRL4, 11),
> - MTK_PIN_IES_SMT_SPEC(113, 113, MSDC0_CTRL4, 7),
> - MTK_PIN_IES_SMT_SPEC(114, 115, MSDC0_CTRL4, 3),
> - MTK_PIN_IES_SMT_SPEC(116, 117, MSDC0_CTRL1, 11),
> - MTK_PIN_IES_SMT_SPEC(118, 118, MSDC0_CTRL3, 15),
> - MTK_PIN_IES_SMT_SPEC(119, 119, MSDC0_CTRL3, 11),
> - MTK_PIN_IES_SMT_SPEC(120, 120, MSDC0_CTRL3, 7),
> - MTK_PIN_IES_SMT_SPEC(121, 121, MSDC0_CTRL3, 3),
> - MTK_PIN_IES_SMT_SPEC(122, 125, SMT_EN1, 7),
> - MTK_PIN_IES_SMT_SPEC(126, 126, SMT_EN0, 12),
> - MTK_PIN_IES_SMT_SPEC(199, 201, SMT_EN0, 1),
> - MTK_PIN_IES_SMT_SPEC(203, 207, SMT_EN2, 2),
> - MTK_PIN_IES_SMT_SPEC(208, 209, SMT_EN2, 3),
> - MTK_PIN_IES_SMT_SPEC(236, 241, SMT_EN2, 6),
> - MTK_PIN_IES_SMT_SPEC(242, 243, SMT_EN2, 7),
> - MTK_PIN_IES_SMT_SPEC(261, 261, MSDC1_CTRL6, 3),
> - MTK_PIN_IES_SMT_SPEC(262, 272, SMT_EN2, 12),
> - MTK_PIN_IES_SMT_SPEC(274, 276, SMT_EN2, 12),
> - MTK_PIN_IES_SMT_SPEC(278, 278, SMT_EN2, 13),
> -};
> -
> -static int mt7623_ies_smt_set(struct regmap *regmap, unsigned int pin,
> - unsigned char align, int value, enum pin_config_param arg)
> -{
> - if (arg == PIN_CONFIG_INPUT_ENABLE)
> - return mtk_pconf_spec_set_ies_smt_range(regmap, mt7623_ies_set,
> - ARRAY_SIZE(mt7623_ies_set), pin, align, value);
> - else if (arg == PIN_CONFIG_INPUT_SCHMITT_ENABLE)
> - return mtk_pconf_spec_set_ies_smt_range(regmap, mt7623_smt_set,
> - ARRAY_SIZE(mt7623_smt_set), pin, align, value);
> - return -EINVAL;
> -}
> -
> -static const struct mtk_pinctrl_devdata mt7623_pinctrl_data = {
> - .pins = mtk_pins_mt7623,
> - .npins = ARRAY_SIZE(mtk_pins_mt7623),
> - .grp_desc = mt7623_drv_grp,
> - .n_grp_cls = ARRAY_SIZE(mt7623_drv_grp),
> - .pin_drv_grp = mt7623_pin_drv,
> - .n_pin_drv_grps = ARRAY_SIZE(mt7623_pin_drv),
> - .spec_pull_set = mt7623_spec_pull_set,
> - .spec_ies_smt_set = mt7623_ies_smt_set,
> - .dir_offset = 0x0000,
> - .pullen_offset = 0x0150,
> - .pullsel_offset = 0x0280,
> - .dout_offset = 0x0500,
> - .din_offset = 0x0630,
> - .pinmux_offset = 0x0760,
> - .type1_start = 280,
> - .type1_end = 280,
> - .port_shf = 4,
> - .port_mask = 0x1f,
> - .port_align = 4,
> - .eint_offsets = {
> - .name = "mt7623_eint",
> - .stat = 0x000,
> - .ack = 0x040,
> - .mask = 0x080,
> - .mask_set = 0x0c0,
> - .mask_clr = 0x100,
> - .sens = 0x140,
> - .sens_set = 0x180,
> - .sens_clr = 0x1c0,
> - .soft = 0x200,
> - .soft_set = 0x240,
> - .soft_clr = 0x280,
> - .pol = 0x300,
> - .pol_set = 0x340,
> - .pol_clr = 0x380,
> - .dom_en = 0x400,
> - .dbnc_ctrl = 0x500,
> - .dbnc_set = 0x600,
> - .dbnc_clr = 0x700,
> - .port_mask = 6,
> - .ports = 6,
> - },
> - .ap_num = 169,
> - .db_cnt = 16,
> -};
> -
> -static int mt7623_pinctrl_probe(struct platform_device *pdev)
> -{
> - return mtk_pctrl_init(pdev, &mt7623_pinctrl_data, NULL);
> -}
> -
> -static const struct of_device_id mt7623_pctrl_match[] = {
> - { .compatible = "mediatek,mt7623-pinctrl", },
> - {}
> -};
> -MODULE_DEVICE_TABLE(of, mt7623_pctrl_match);
> -
> -static struct platform_driver mtk_pinctrl_driver = {
> - .probe = mt7623_pinctrl_probe,
> - .driver = {
> - .name = "mediatek-mt7623-pinctrl",
> - .of_match_table = mt7623_pctrl_match,
> - },
> -};
> -
> -static int __init mtk_pinctrl_init(void)
> -{
> - return platform_driver_register(&mtk_pinctrl_driver);
> -}
> -
> -arch_initcall(mtk_pinctrl_init);
> diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt7623.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt7623.h
> deleted file mode 100644
> index e06cfc4..0000000
> --- a/drivers/pinctrl/mediatek/pinctrl-mtk-mt7623.h
> +++ /dev/null
> @@ -1,1936 +0,0 @@
> -/*
> - * Copyright (c) 2016 John Crispin <john@phrozen.org>
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> - * GNU General Public License for more details.
> - */
> -
> -#ifndef __PINCTRL_MTK_MT7623_H
> -#define __PINCTRL_MTK_MT7623_H
> -
> -#include <linux/pinctrl/pinctrl.h>
> -#include "pinctrl-mtk-common.h"
> -
> -static const struct mtk_desc_pin mtk_pins_mt7623[] = {
> - MTK_PIN(
> - PINCTRL_PIN(0, "PWRAP_SPI0_MI"),
> - "J20", "mt7623",
> - MTK_EINT_FUNCTION(0, 148),
> - MTK_FUNCTION(0, "GPIO0"),
> - MTK_FUNCTION(1, "PWRAP_SPIDO"),
> - MTK_FUNCTION(2, "PWRAP_SPIDI")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(1, "PWRAP_SPI0_MO"),
> - "D10", "mt7623",
> - MTK_EINT_FUNCTION(0, 149),
> - MTK_FUNCTION(0, "GPIO1"),
> - MTK_FUNCTION(1, "PWRAP_SPIDI"),
> - MTK_FUNCTION(2, "PWRAP_SPIDO")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(2, "PWRAP_INT"),
> - "E11", "mt7623",
> - MTK_EINT_FUNCTION(0, 150),
> - MTK_FUNCTION(0, "GPIO2"),
> - MTK_FUNCTION(1, "PWRAP_INT")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(3, "PWRAP_SPI0_CK"),
> - "H12", "mt7623",
> - MTK_EINT_FUNCTION(0, 151),
> - MTK_FUNCTION(0, "GPIO3"),
> - MTK_FUNCTION(1, "PWRAP_SPICK_I")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(4, "PWRAP_SPI0_CSN"),
> - "E12", "mt7623",
> - MTK_EINT_FUNCTION(0, 152),
> - MTK_FUNCTION(0, "GPIO4"),
> - MTK_FUNCTION(1, "PWRAP_SPICS_B_I")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(5, "PWRAP_SPI0_CK2"),
> - "H11", "mt7623",
> - MTK_EINT_FUNCTION(0, 155),
> - MTK_FUNCTION(0, "GPIO5"),
> - MTK_FUNCTION(1, "PWRAP_SPICK2_I")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(6, "PWRAP_SPI0_CSN2"),
> - "G11", "mt7623",
> - MTK_EINT_FUNCTION(0, 156),
> - MTK_FUNCTION(0, "GPIO6"),
> - MTK_FUNCTION(1, "PWRAP_SPICS2_B_I")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(7, "SPI1_CSN"),
> - "G19", "mt7623",
> - MTK_EINT_FUNCTION(0, 153),
> - MTK_FUNCTION(0, "GPIO7"),
> - MTK_FUNCTION(1, "SPI1_CS")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(8, "SPI1_MI"),
> - "F19", "mt7623",
> - MTK_EINT_FUNCTION(0, 154),
> - MTK_FUNCTION(0, "GPIO8"),
> - MTK_FUNCTION(1, "SPI1_MI"),
> - MTK_FUNCTION(2, "SPI1_MO")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(9, "SPI1_MO"),
> - "G20", "mt7623",
> - MTK_EINT_FUNCTION(0, 157),
> - MTK_FUNCTION(0, "GPIO9"),
> - MTK_FUNCTION(1, "SPI1_MO"),
> - MTK_FUNCTION(2, "SPI1_MI")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(10, "RTC32K_CK"),
> - "A13", "mt7623",
> - MTK_EINT_FUNCTION(0, 158),
> - MTK_FUNCTION(0, "GPIO10"),
> - MTK_FUNCTION(1, "RTC32K_CK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(11, "WATCHDOG"),
> - "D14", "mt7623",
> - MTK_EINT_FUNCTION(0, 159),
> - MTK_FUNCTION(0, "GPIO11"),
> - MTK_FUNCTION(1, "WATCHDOG")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(12, "SRCLKENA"),
> - "C13", "mt7623",
> - MTK_EINT_FUNCTION(0, 169),
> - MTK_FUNCTION(0, "GPIO12"),
> - MTK_FUNCTION(1, "SRCLKENA")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(13, "SRCLKENAI"),
> - "B13", "mt7623",
> - MTK_EINT_FUNCTION(0, 161),
> - MTK_FUNCTION(0, "GPIO13"),
> - MTK_FUNCTION(1, "SRCLKENAI")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(14, "GPIO14"),
> - "E18", "mt7623",
> - MTK_EINT_FUNCTION(0, 162),
> - MTK_FUNCTION(0, "GPIO14"),
> - MTK_FUNCTION(1, "URXD2"),
> - MTK_FUNCTION(2, "UTXD2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(15, "GPIO15"),
> - "E17", "mt7623",
> - MTK_EINT_FUNCTION(0, 163),
> - MTK_FUNCTION(0, "GPIO15"),
> - MTK_FUNCTION(1, "UTXD2"),
> - MTK_FUNCTION(2, "URXD2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(16, "GPIO16"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO16")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(17, "GPIO17"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO17")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(18, "PCM_CLK"),
> - "C19", "mt7623",
> - MTK_EINT_FUNCTION(0, 166),
> - MTK_FUNCTION(0, "GPIO18"),
> - MTK_FUNCTION(1, "PCM_CLK0"),
> - MTK_FUNCTION(6, "AP_PCM_CLKO")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(19, "PCM_SYNC"),
> - "D19", "mt7623",
> - MTK_EINT_FUNCTION(0, 167),
> - MTK_FUNCTION(0, "GPIO19"),
> - MTK_FUNCTION(1, "PCM_SYNC"),
> - MTK_FUNCTION(6, "AP_PCM_SYNC")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(20, "PCM_RX"),
> - "D18", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO20"),
> - MTK_FUNCTION(1, "PCM_RX"),
> - MTK_FUNCTION(4, "PCM_TX"),
> - MTK_FUNCTION(6, "AP_PCM_RX")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(21, "PCM_TX"),
> - "C18", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO21"),
> - MTK_FUNCTION(1, "PCM_TX"),
> - MTK_FUNCTION(4, "PCM_RX"),
> - MTK_FUNCTION(6, "AP_PCM_TX")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(22, "EINT0"),
> - "H15", "mt7623",
> - MTK_EINT_FUNCTION(0, 0),
> - MTK_FUNCTION(0, "GPIO22"),
> - MTK_FUNCTION(1, "UCTS0"),
> - MTK_FUNCTION(2, "PCIE0_PERST_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(23, "EINT1"),
> - "J16", "mt7623",
> - MTK_EINT_FUNCTION(0, 1),
> - MTK_FUNCTION(0, "GPIO23"),
> - MTK_FUNCTION(1, "URTS0"),
> - MTK_FUNCTION(2, "PCIE1_PERST_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(24, "EINT2"),
> - "H16", "mt7623",
> - MTK_EINT_FUNCTION(0, 2),
> - MTK_FUNCTION(0, "GPIO24"),
> - MTK_FUNCTION(1, "UCTS1"),
> - MTK_FUNCTION(2, "PCIE2_PERST_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(25, "EINT3"),
> - "K15", "mt7623",
> - MTK_EINT_FUNCTION(0, 3),
> - MTK_FUNCTION(0, "GPIO25"),
> - MTK_FUNCTION(1, "URTS1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(26, "EINT4"),
> - "G15", "mt7623",
> - MTK_EINT_FUNCTION(0, 4),
> - MTK_FUNCTION(0, "GPIO26"),
> - MTK_FUNCTION(1, "UCTS3"),
> - MTK_FUNCTION(6, "PCIE2_WAKE_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(27, "EINT5"),
> - "F15", "mt7623",
> - MTK_EINT_FUNCTION(0, 5),
> - MTK_FUNCTION(0, "GPIO27"),
> - MTK_FUNCTION(1, "URTS3"),
> - MTK_FUNCTION(6, "PCIE1_WAKE_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(28, "EINT6"),
> - "J15", "mt7623",
> - MTK_EINT_FUNCTION(0, 6),
> - MTK_FUNCTION(0, "GPIO28"),
> - MTK_FUNCTION(1, "DRV_VBUS"),
> - MTK_FUNCTION(6, "PCIE0_WAKE_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(29, "EINT7"),
> - "E15", "mt7623",
> - MTK_EINT_FUNCTION(0, 7),
> - MTK_FUNCTION(0, "GPIO29"),
> - MTK_FUNCTION(1, "IDDIG"),
> - MTK_FUNCTION(2, "MSDC1_WP"),
> - MTK_FUNCTION(6, "PCIE2_PERST_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(30, "GPIO30"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO30")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(31, "GPIO31"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO31")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(32, "GPIO32"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO32")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(33, "I2S1_DATA"),
> - "Y18", "mt7623",
> - MTK_EINT_FUNCTION(0, 15),
> - MTK_FUNCTION(0, "GPIO33"),
> - MTK_FUNCTION(1, "I2S1_DATA"),
> - MTK_FUNCTION(3, "PCM_TX"),
> - MTK_FUNCTION(6, "AP_PCM_TX")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(34, "I2S1_DATA_IN"),
> - "Y17", "mt7623",
> - MTK_EINT_FUNCTION(0, 16),
> - MTK_FUNCTION(0, "GPIO34"),
> - MTK_FUNCTION(1, "I2S1_DATA_IN"),
> - MTK_FUNCTION(3, "PCM_RX"),
> - MTK_FUNCTION(6, "AP_PCM_RX")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(35, "I2S1_BCK"),
> - "V17", "mt7623",
> - MTK_EINT_FUNCTION(0, 17),
> - MTK_FUNCTION(0, "GPIO35"),
> - MTK_FUNCTION(1, "I2S1_BCK"),
> - MTK_FUNCTION(3, "PCM_CLK0"),
> - MTK_FUNCTION(6, "AP_PCM_CLKO")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(36, "I2S1_LRCK"),
> - "W17", "mt7623",
> - MTK_EINT_FUNCTION(0, 18),
> - MTK_FUNCTION(0, "GPIO36"),
> - MTK_FUNCTION(1, "I2S1_LRCK"),
> - MTK_FUNCTION(3, "PCM_SYNC"),
> - MTK_FUNCTION(6, "AP_PCM_SYNC")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(37, "I2S1_MCLK"),
> - "AA18", "mt7623",
> - MTK_EINT_FUNCTION(0, 19),
> - MTK_FUNCTION(0, "GPIO37"),
> - MTK_FUNCTION(1, "I2S1_MCLK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(38, "GPIO38"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO38")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(39, "JTMS"),
> - "G21", "mt7623",
> - MTK_EINT_FUNCTION(0, 21),
> - MTK_FUNCTION(0, "GPIO39"),
> - MTK_FUNCTION(1, "JTMS")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(40, "GPIO40"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO40")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(41, "JTDI"),
> - "H22", "mt7623",
> - MTK_EINT_FUNCTION(0, 23),
> - MTK_FUNCTION(0, "GPIO41"),
> - MTK_FUNCTION(1, "JTDI")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(42, "JTDO"),
> - "H21", "mt7623",
> - MTK_EINT_FUNCTION(0, 24),
> - MTK_FUNCTION(0, "GPIO42"),
> - MTK_FUNCTION(1, "JTDO")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(43, "NCLE"),
> - "C7", "mt7623",
> - MTK_EINT_FUNCTION(0, 25),
> - MTK_FUNCTION(0, "GPIO43"),
> - MTK_FUNCTION(1, "NCLE"),
> - MTK_FUNCTION(2, "EXT_XCS2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(44, "NCEB1"),
> - "C6", "mt7623",
> - MTK_EINT_FUNCTION(0, 26),
> - MTK_FUNCTION(0, "GPIO44"),
> - MTK_FUNCTION(1, "NCEB1"),
> - MTK_FUNCTION(2, "IDDIG")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(45, "NCEB0"),
> - "D7", "mt7623",
> - MTK_EINT_FUNCTION(0, 27),
> - MTK_FUNCTION(0, "GPIO45"),
> - MTK_FUNCTION(1, "NCEB0"),
> - MTK_FUNCTION(2, "DRV_VBUS")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(46, "IR"),
> - "D15", "mt7623",
> - MTK_EINT_FUNCTION(0, 28),
> - MTK_FUNCTION(0, "GPIO46"),
> - MTK_FUNCTION(1, "IR")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(47, "NREB"),
> - "A6", "mt7623",
> - MTK_EINT_FUNCTION(0, 29),
> - MTK_FUNCTION(0, "GPIO47"),
> - MTK_FUNCTION(1, "NREB")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(48, "NRNB"),
> - "B6", "mt7623",
> - MTK_EINT_FUNCTION(0, 30),
> - MTK_FUNCTION(0, "GPIO48"),
> - MTK_FUNCTION(1, "NRNB")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(49, "I2S0_DATA"),
> - "AB18", "mt7623",
> - MTK_EINT_FUNCTION(0, 31),
> - MTK_FUNCTION(0, "GPIO49"),
> - MTK_FUNCTION(1, "I2S0_DATA"),
> - MTK_FUNCTION(3, "PCM_TX"),
> - MTK_FUNCTION(6, "AP_I2S_DO")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(50, "GPIO50"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO50")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(51, "GPIO51"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO51")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(52, "GPIO52"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO52")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(53, "SPI0_CSN"),
> - "E7", "mt7623",
> - MTK_EINT_FUNCTION(0, 35),
> - MTK_FUNCTION(0, "GPIO53"),
> - MTK_FUNCTION(1, "SPI0_CS"),
> - MTK_FUNCTION(5, "PWM1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(54, "SPI0_CK"),
> - "F7", "mt7623",
> - MTK_EINT_FUNCTION(0, 36),
> - MTK_FUNCTION(0, "GPIO54"),
> - MTK_FUNCTION(1, "SPI0_CK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(55, "SPI0_MI"),
> - "E6", "mt7623",
> - MTK_EINT_FUNCTION(0, 37),
> - MTK_FUNCTION(0, "GPIO55"),
> - MTK_FUNCTION(1, "SPI0_MI"),
> - MTK_FUNCTION(2, "SPI0_MO"),
> - MTK_FUNCTION(3, "MSDC1_WP"),
> - MTK_FUNCTION(5, "PWM2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(56, "SPI0_MO"),
> - "G7", "mt7623",
> - MTK_EINT_FUNCTION(0, 38),
> - MTK_FUNCTION(0, "GPIO56"),
> - MTK_FUNCTION(1, "SPI0_MO"),
> - MTK_FUNCTION(2, "SPI0_MI")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(57, "GPIO57"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO57")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(58, "GPIO58"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO58")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(59, "GPIO59"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO59")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(60, "WB_RSTB"),
> - "Y21", "mt7623",
> - MTK_EINT_FUNCTION(0, 41),
> - MTK_FUNCTION(0, "GPIO60"),
> - MTK_FUNCTION(1, "WB_RSTB")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(61, "GPIO61"),
> - "AA21", "mt7623",
> - MTK_EINT_FUNCTION(0, 42),
> - MTK_FUNCTION(0, "GPIO61"),
> - MTK_FUNCTION(1, "TEST_FD")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(62, "GPIO62"),
> - "AB22", "mt7623",
> - MTK_EINT_FUNCTION(0, 43),
> - MTK_FUNCTION(0, "GPIO62"),
> - MTK_FUNCTION(1, "TEST_FC")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(63, "WB_SCLK"),
> - "AC23", "mt7623",
> - MTK_EINT_FUNCTION(0, 44),
> - MTK_FUNCTION(0, "GPIO63"),
> - MTK_FUNCTION(1, "WB_SCLK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(64, "WB_SDATA"),
> - "AB21", "mt7623",
> - MTK_EINT_FUNCTION(0, 45),
> - MTK_FUNCTION(0, "GPIO64"),
> - MTK_FUNCTION(1, "WB_SDATA")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(65, "WB_SEN"),
> - "AB24", "mt7623",
> - MTK_EINT_FUNCTION(0, 46),
> - MTK_FUNCTION(0, "GPIO65"),
> - MTK_FUNCTION(1, "WB_SEN")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(66, "WB_CRTL0"),
> - "AB20", "mt7623",
> - MTK_EINT_FUNCTION(0, 47),
> - MTK_FUNCTION(0, "GPIO66"),
> - MTK_FUNCTION(1, "WB_CRTL0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(67, "WB_CRTL1"),
> - "AC20", "mt7623",
> - MTK_EINT_FUNCTION(0, 48),
> - MTK_FUNCTION(0, "GPIO67"),
> - MTK_FUNCTION(1, "WB_CRTL1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(68, "WB_CRTL2"),
> - "AB19", "mt7623",
> - MTK_EINT_FUNCTION(0, 49),
> - MTK_FUNCTION(0, "GPIO68"),
> - MTK_FUNCTION(1, "WB_CRTL2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(69, "WB_CRTL3"),
> - "AC19", "mt7623",
> - MTK_EINT_FUNCTION(0, 50),
> - MTK_FUNCTION(0, "GPIO69"),
> - MTK_FUNCTION(1, "WB_CRTL3")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(70, "WB_CRTL4"),
> - "AD19", "mt7623",
> - MTK_EINT_FUNCTION(0, 51),
> - MTK_FUNCTION(0, "GPIO70"),
> - MTK_FUNCTION(1, "WB_CRTL4")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(71, "WB_CRTL5"),
> - "AE19", "mt7623",
> - MTK_EINT_FUNCTION(0, 52),
> - MTK_FUNCTION(0, "GPIO71"),
> - MTK_FUNCTION(1, "WB_CRTL5")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(72, "I2S0_DATA_IN"),
> - "AA20", "mt7623",
> - MTK_EINT_FUNCTION(0, 53),
> - MTK_FUNCTION(0, "GPIO72"),
> - MTK_FUNCTION(1, "I2S0_DATA_IN"),
> - MTK_FUNCTION(3, "PCM_RX"),
> - MTK_FUNCTION(4, "PWM0"),
> - MTK_FUNCTION(5, "DISP_PWM"),
> - MTK_FUNCTION(6, "AP_I2S_DI")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(73, "I2S0_LRCK"),
> - "Y20", "mt7623",
> - MTK_EINT_FUNCTION(0, 54),
> - MTK_FUNCTION(0, "GPIO73"),
> - MTK_FUNCTION(1, "I2S0_LRCK"),
> - MTK_FUNCTION(3, "PCM_SYNC"),
> - MTK_FUNCTION(6, "AP_I2S_LRCK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(74, "I2S0_BCK"),
> - "Y19", "mt7623",
> - MTK_EINT_FUNCTION(0, 55),
> - MTK_FUNCTION(0, "GPIO74"),
> - MTK_FUNCTION(1, "I2S0_BCK"),
> - MTK_FUNCTION(3, "PCM_CLK0"),
> - MTK_FUNCTION(6, "AP_I2S_BCK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(75, "SDA0"),
> - "K19", "mt7623",
> - MTK_EINT_FUNCTION(0, 56),
> - MTK_FUNCTION(0, "GPIO75"),
> - MTK_FUNCTION(1, "SDA0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(76, "SCL0"),
> - "K20", "mt7623",
> - MTK_EINT_FUNCTION(0, 57),
> - MTK_FUNCTION(0, "GPIO76"),
> - MTK_FUNCTION(1, "SCL0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(77, "GPIO77"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO77")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(78, "GPIO78"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO78")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(79, "GPIO79"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO79")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(80, "GPIO80"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO80")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(81, "GPIO81"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO81")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(82, "GPIO82"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO82")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(83, "LCM_RST"),
> - "V16", "mt7623",
> - MTK_EINT_FUNCTION(0, 64),
> - MTK_FUNCTION(0, "GPIO83"),
> - MTK_FUNCTION(1, "LCM_RST")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(84, "DSI_TE"),
> - "V14", "mt7623",
> - MTK_EINT_FUNCTION(0, 65),
> - MTK_FUNCTION(0, "GPIO84"),
> - MTK_FUNCTION(1, "DSI_TE")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(85, "GPIO85"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO85")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(86, "GPIO86"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO86")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(87, "GPIO87"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO87")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(88, "GPIO88"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO88")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(89, "GPIO89"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO89")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(90, "GPIO90"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO90")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(91, "GPIO91"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO91")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(92, "GPIO92"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO92")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(93, "GPIO93"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO93")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(94, "GPIO94"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO94")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(95, "MIPI_TCN"),
> - "AB14", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO95"),
> - MTK_FUNCTION(1, "TCN")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(96, "MIPI_TCP"),
> - "AC14", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO96"),
> - MTK_FUNCTION(1, "TCP")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(97, "MIPI_TDN1"),
> - "AE15", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO97"),
> - MTK_FUNCTION(1, "TDN1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(98, "MIPI_TDP1"),
> - "AD15", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO98"),
> - MTK_FUNCTION(1, "TDP1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(99, "MIPI_TDN0"),
> - "AB15", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO99"),
> - MTK_FUNCTION(1, "TDN0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(100, "MIPI_TDP0"),
> - "AC15", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO100"),
> - MTK_FUNCTION(1, "TDP0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(101, "GPIO101"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO101")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(102, "GPIO102"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO102")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(103, "GPIO103"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO103")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(104, "GPIO104"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO104")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(105, "MSDC1_CMD"),
> - "AD2", "mt7623",
> - MTK_EINT_FUNCTION(0, 78),
> - MTK_FUNCTION(0, "GPIO105"),
> - MTK_FUNCTION(1, "MSDC1_CMD"),
> - MTK_FUNCTION(3, "SDA1"),
> - MTK_FUNCTION(6, "I2SOUT_BCK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(106, "MSDC1_CLK"),
> - "AD3", "mt7623",
> - MTK_EINT_FUNCTION(0, 79),
> - MTK_FUNCTION(0, "GPIO106"),
> - MTK_FUNCTION(1, "MSDC1_CLK"),
> - MTK_FUNCTION(3, "SCL1"),
> - MTK_FUNCTION(6, "I2SOUT_LRCK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(107, "MSDC1_DAT0"),
> - "AE2", "mt7623",
> - MTK_EINT_FUNCTION(0, 80),
> - MTK_FUNCTION(0, "GPIO107"),
> - MTK_FUNCTION(1, "MSDC1_DAT0"),
> - MTK_FUNCTION(5, "UTXD0"),
> - MTK_FUNCTION(6, "I2SOUT_DATA_OUT")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(108, "MSDC1_DAT1"),
> - "AC1", "mt7623",
> - MTK_EINT_FUNCTION(0, 81),
> - MTK_FUNCTION(0, "GPIO108"),
> - MTK_FUNCTION(1, "MSDC1_DAT1"),
> - MTK_FUNCTION(3, "PWM0"),
> - MTK_FUNCTION(5, "URXD0"),
> - MTK_FUNCTION(6, "PWM1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(109, "MSDC1_DAT2"),
> - "AC3", "mt7623",
> - MTK_EINT_FUNCTION(0, 82),
> - MTK_FUNCTION(0, "GPIO109"),
> - MTK_FUNCTION(1, "MSDC1_DAT2"),
> - MTK_FUNCTION(3, "SDA2"),
> - MTK_FUNCTION(5, "UTXD1"),
> - MTK_FUNCTION(6, "PWM2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(110, "MSDC1_DAT3"),
> - "AC4", "mt7623",
> - MTK_EINT_FUNCTION(0, 83),
> - MTK_FUNCTION(0, "GPIO110"),
> - MTK_FUNCTION(1, "MSDC1_DAT3"),
> - MTK_FUNCTION(3, "SCL2"),
> - MTK_FUNCTION(5, "URXD1"),
> - MTK_FUNCTION(6, "PWM3")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(111, "MSDC0_DAT7"),
> - "A2", "mt7623",
> - MTK_EINT_FUNCTION(0, 84),
> - MTK_FUNCTION(0, "GPIO111"),
> - MTK_FUNCTION(1, "MSDC0_DAT7"),
> - MTK_FUNCTION(4, "NLD7")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(112, "MSDC0_DAT6"),
> - "B3", "mt7623",
> - MTK_EINT_FUNCTION(0, 85),
> - MTK_FUNCTION(0, "GPIO112"),
> - MTK_FUNCTION(1, "MSDC0_DAT6"),
> - MTK_FUNCTION(4, "NLD6")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(113, "MSDC0_DAT5"),
> - "C4", "mt7623",
> - MTK_EINT_FUNCTION(0, 86),
> - MTK_FUNCTION(0, "GPIO113"),
> - MTK_FUNCTION(1, "MSDC0_DAT5"),
> - MTK_FUNCTION(4, "NLD5")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(114, "MSDC0_DAT4"),
> - "A4", "mt7623",
> - MTK_EINT_FUNCTION(0, 87),
> - MTK_FUNCTION(0, "GPIO114"),
> - MTK_FUNCTION(1, "MSDC0_DAT4"),
> - MTK_FUNCTION(4, "NLD4")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(115, "MSDC0_RSTB"),
> - "C5", "mt7623",
> - MTK_EINT_FUNCTION(0, 88),
> - MTK_FUNCTION(0, "GPIO115"),
> - MTK_FUNCTION(1, "MSDC0_RSTB"),
> - MTK_FUNCTION(4, "NLD8")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(116, "MSDC0_CMD"),
> - "D5", "mt7623",
> - MTK_EINT_FUNCTION(0, 89),
> - MTK_FUNCTION(0, "GPIO116"),
> - MTK_FUNCTION(1, "MSDC0_CMD"),
> - MTK_FUNCTION(4, "NALE")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(117, "MSDC0_CLK"),
> - "B1", "mt7623",
> - MTK_EINT_FUNCTION(0, 90),
> - MTK_FUNCTION(0, "GPIO117"),
> - MTK_FUNCTION(1, "MSDC0_CLK"),
> - MTK_FUNCTION(4, "NWEB")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(118, "MSDC0_DAT3"),
> - "D6", "mt7623",
> - MTK_EINT_FUNCTION(0, 91),
> - MTK_FUNCTION(0, "GPIO118"),
> - MTK_FUNCTION(1, "MSDC0_DAT3"),
> - MTK_FUNCTION(4, "NLD3")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(119, "MSDC0_DAT2"),
> - "B2", "mt7623",
> - MTK_EINT_FUNCTION(0, 92),
> - MTK_FUNCTION(0, "GPIO119"),
> - MTK_FUNCTION(1, "MSDC0_DAT2"),
> - MTK_FUNCTION(4, "NLD2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(120, "MSDC0_DAT1"),
> - "A3", "mt7623",
> - MTK_EINT_FUNCTION(0, 93),
> - MTK_FUNCTION(0, "GPIO120"),
> - MTK_FUNCTION(1, "MSDC0_DAT1"),
> - MTK_FUNCTION(4, "NLD1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(121, "MSDC0_DAT0"),
> - "B4", "mt7623",
> - MTK_EINT_FUNCTION(0, 94),
> - MTK_FUNCTION(0, "GPIO121"),
> - MTK_FUNCTION(1, "MSDC0_DAT0"),
> - MTK_FUNCTION(4, "NLD0"),
> - MTK_FUNCTION(5, "WATCHDOG")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(122, "GPIO122"),
> - "H17", "mt7623",
> - MTK_EINT_FUNCTION(0, 95),
> - MTK_FUNCTION(0, "GPIO122"),
> - MTK_FUNCTION(1, "TEST"),
> - MTK_FUNCTION(4, "SDA2"),
> - MTK_FUNCTION(5, "URXD0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(123, "GPIO123"),
> - "F17", "mt7623",
> - MTK_EINT_FUNCTION(0, 96),
> - MTK_FUNCTION(0, "GPIO123"),
> - MTK_FUNCTION(1, "TEST"),
> - MTK_FUNCTION(4, "SCL2"),
> - MTK_FUNCTION(5, "UTXD0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(124, "GPIO124"),
> - "H18", "mt7623",
> - MTK_EINT_FUNCTION(0, 97),
> - MTK_FUNCTION(0, "GPIO124"),
> - MTK_FUNCTION(1, "TEST"),
> - MTK_FUNCTION(4, "SDA1"),
> - MTK_FUNCTION(5, "PWM3")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(125, "GPIO125"),
> - "G17", "mt7623",
> - MTK_EINT_FUNCTION(0, 98),
> - MTK_FUNCTION(0, "GPIO125"),
> - MTK_FUNCTION(1, "TEST"),
> - MTK_FUNCTION(4, "SCL1"),
> - MTK_FUNCTION(5, "PWM4")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(126, "I2S0_MCLK"),
> - "AA19", "mt7623",
> - MTK_EINT_FUNCTION(0, 99),
> - MTK_FUNCTION(0, "GPIO126"),
> - MTK_FUNCTION(1, "I2S0_MCLK"),
> - MTK_FUNCTION(6, "AP_I2S_MCLK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(127, "GPIO127"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO127")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(128, "GPIO128"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO128")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(129, "GPIO129"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO129")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(130, "GPIO130"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO130")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(131, "GPIO131"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO131")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(132, "GPIO132"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO132")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(133, "GPIO133"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO133")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(134, "GPIO134"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO134")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(135, "GPIO135"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO135")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(136, "GPIO136"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO136")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(137, "GPIO137"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO137")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(138, "GPIO138"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO138")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(139, "GPIO139"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO139")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(140, "GPIO140"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO140")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(141, "GPIO141"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO141")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(142, "GPIO142"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO142")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(143, "GPIO143"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO143")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(144, "GPIO144"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO144")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(145, "GPIO145"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO145")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(146, "GPIO146"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO146")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(147, "GPIO147"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO147")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(148, "GPIO148"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO148")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(149, "GPIO149"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO149")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(150, "GPIO150"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO150")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(151, "GPIO151"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO151")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(152, "GPIO152"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO152")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(153, "GPIO153"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO153")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(154, "GPIO154"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO154")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(155, "GPIO155"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO155")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(156, "GPIO156"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO156")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(157, "GPIO157"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO157")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(158, "GPIO158"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO158")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(159, "GPIO159"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO159")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(160, "GPIO160"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO160")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(161, "GPIO161"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO161")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(162, "GPIO162"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO162")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(163, "GPIO163"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO163")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(164, "GPIO164"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO164")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(165, "GPIO165"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO165")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(166, "GPIO166"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO166")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(167, "GPIO167"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO167")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(168, "GPIO168"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO168")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(169, "GPIO169"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO169")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(170, "GPIO170"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO170")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(171, "GPIO171"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO171")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(172, "GPIO172"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO172")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(173, "GPIO173"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO173")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(174, "GPIO174"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO174")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(175, "GPIO175"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO175")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(176, "GPIO176"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO176")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(177, "GPIO177"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO177")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(178, "GPIO178"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO178")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(179, "GPIO179"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO179")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(180, "GPIO180"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO180")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(181, "GPIO181"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO181")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(182, "GPIO182"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO182")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(183, "GPIO183"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO183")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(184, "GPIO184"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO184")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(185, "GPIO185"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO185")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(186, "GPIO186"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO186")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(187, "GPIO187"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO187")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(188, "GPIO188"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO188")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(189, "GPIO189"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO189")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(190, "GPIO190"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO190")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(191, "GPIO191"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO191")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(192, "GPIO192"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO192")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(193, "GPIO193"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO193")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(194, "GPIO194"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO194")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(195, "GPIO195"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO195")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(196, "GPIO196"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO196")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(197, "GPIO197"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO197")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(198, "GPIO198"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO198")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(199, "SPI1_CK"),
> - "E19", "mt7623",
> - MTK_EINT_FUNCTION(0, 111),
> - MTK_FUNCTION(0, "GPIO199"),
> - MTK_FUNCTION(1, "SPI1_CK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(200, "URXD2"),
> - "K18", "mt7623",
> - MTK_EINT_FUNCTION(0, 112),
> - MTK_FUNCTION(0, "GPIO200"),
> - MTK_FUNCTION(6, "URXD2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(201, "UTXD2"),
> - "L18", "mt7623",
> - MTK_EINT_FUNCTION(0, 113),
> - MTK_FUNCTION(0, "GPIO201"),
> - MTK_FUNCTION(6, "UTXD2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(202, "GPIO202"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO202")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(203, "PWM0"),
> - "AA16", "mt7623",
> - MTK_EINT_FUNCTION(0, 115),
> - MTK_FUNCTION(0, "GPIO203"),
> - MTK_FUNCTION(1, "PWM0"),
> - MTK_FUNCTION(2, "DISP_PWM")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(204, "PWM1"),
> - "Y16", "mt7623",
> - MTK_EINT_FUNCTION(0, 116),
> - MTK_FUNCTION(0, "GPIO204"),
> - MTK_FUNCTION(1, "PWM1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(205, "PWM2"),
> - "AA15", "mt7623",
> - MTK_EINT_FUNCTION(0, 117),
> - MTK_FUNCTION(0, "GPIO205"),
> - MTK_FUNCTION(1, "PWM2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(206, "PWM3"),
> - "AA17", "mt7623",
> - MTK_EINT_FUNCTION(0, 118),
> - MTK_FUNCTION(0, "GPIO206"),
> - MTK_FUNCTION(1, "PWM3")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(207, "PWM4"),
> - "Y15", "mt7623",
> - MTK_EINT_FUNCTION(0, 119),
> - MTK_FUNCTION(0, "GPIO207"),
> - MTK_FUNCTION(1, "PWM4")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(208, "AUD_EXT_CK1"),
> - "W14", "mt7623",
> - MTK_EINT_FUNCTION(0, 120),
> - MTK_FUNCTION(0, "GPIO208"),
> - MTK_FUNCTION(1, "AUD_EXT_CK1"),
> - MTK_FUNCTION(2, "PWM0"),
> - MTK_FUNCTION(3, "PCIE0_PERST_N"),
> - MTK_FUNCTION(5, "DISP_PWM")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(209, "AUD_EXT_CK2"),
> - "V15", "mt7623",
> - MTK_EINT_FUNCTION(0, 121),
> - MTK_FUNCTION(0, "GPIO209"),
> - MTK_FUNCTION(1, "AUD_EXT_CK2"),
> - MTK_FUNCTION(2, "MSDC1_WP"),
> - MTK_FUNCTION(3, "PCIE1_PERST_N"),
> - MTK_FUNCTION(5, "PWM1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(210, "GPIO210"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO210")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(211, "GPIO211"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO211")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(212, "GPIO212"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO212")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(213, "GPIO213"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO213")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(214, "GPIO214"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO214")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(215, "GPIO215"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO215")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(216, "GPIO216"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO216")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(217, "GPIO217"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO217")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(218, "GPIO218"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO218")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(219, "GPIO219"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO219")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(220, "GPIO220"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO220")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(221, "GPIO221"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO221")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(222, "GPIO222"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO222")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(223, "GPIO223"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO223")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(224, "GPIO224"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO224")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(225, "GPIO225"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO225")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(226, "GPIO226"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO226")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(227, "GPIO227"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO227")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(228, "GPIO228"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO228")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(229, "GPIO229"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO229")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(230, "GPIO230"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO230")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(231, "GPIO231"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO231")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(232, "GPIO232"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO232")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(233, "GPIO233"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO233")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(234, "GPIO234"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO234")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(235, "GPIO235"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO235")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(236, "EXT_SDIO3"),
> - "A8", "mt7623",
> - MTK_EINT_FUNCTION(0, 122),
> - MTK_FUNCTION(0, "GPIO236"),
> - MTK_FUNCTION(1, "EXT_SDIO3"),
> - MTK_FUNCTION(2, "IDDIG")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(237, "EXT_SDIO2"),
> - "D8", "mt7623",
> - MTK_EINT_FUNCTION(0, 123),
> - MTK_FUNCTION(0, "GPIO237"),
> - MTK_FUNCTION(1, "EXT_SDIO2"),
> - MTK_FUNCTION(2, "DRV_VBUS")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(238, "EXT_SDIO1"),
> - "D9", "mt7623",
> - MTK_EINT_FUNCTION(0, 124),
> - MTK_FUNCTION(0, "GPIO238"),
> - MTK_FUNCTION(1, "EXT_SDIO1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(239, "EXT_SDIO0"),
> - "B8", "mt7623",
> - MTK_EINT_FUNCTION(0, 125),
> - MTK_FUNCTION(0, "GPIO239"),
> - MTK_FUNCTION(1, "EXT_SDIO0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(240, "EXT_XCS"),
> - "C9", "mt7623",
> - MTK_EINT_FUNCTION(0, 126),
> - MTK_FUNCTION(0, "GPIO240"),
> - MTK_FUNCTION(1, "EXT_XCS")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(241, "EXT_SCK"),
> - "C8", "mt7623",
> - MTK_EINT_FUNCTION(0, 127),
> - MTK_FUNCTION(0, "GPIO241"),
> - MTK_FUNCTION(1, "EXT_SCK")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(242, "URTS2"),
> - "G18", "mt7623",
> - MTK_EINT_FUNCTION(0, 128),
> - MTK_FUNCTION(0, "GPIO242"),
> - MTK_FUNCTION(1, "URTS2"),
> - MTK_FUNCTION(2, "UTXD3"),
> - MTK_FUNCTION(3, "URXD3"),
> - MTK_FUNCTION(4, "SCL1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(243, "UCTS2"),
> - "H19", "mt7623",
> - MTK_EINT_FUNCTION(0, 129),
> - MTK_FUNCTION(0, "GPIO243"),
> - MTK_FUNCTION(1, "UCTS2"),
> - MTK_FUNCTION(2, "URXD3"),
> - MTK_FUNCTION(3, "UTXD3"),
> - MTK_FUNCTION(4, "SDA1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(244, "GPIO244"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO244")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(245, "GPIO245"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO245")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(246, "GPIO246"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO246")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(247, "GPIO247"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO247")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(248, "GPIO248"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO248")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(249, "GPIO249"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO249")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(250, "GPIO250"),
> - "A15", "mt7623",
> - MTK_EINT_FUNCTION(0, 135),
> - MTK_FUNCTION(0, "GPIO250"),
> - MTK_FUNCTION(1, "TEST_MD7"),
> - MTK_FUNCTION(6, "PCIE0_CLKREQ_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(251, "GPIO251"),
> - "B15", "mt7623",
> - MTK_EINT_FUNCTION(0, 136),
> - MTK_FUNCTION(0, "GPIO251"),
> - MTK_FUNCTION(1, "TEST_MD6"),
> - MTK_FUNCTION(6, "PCIE0_WAKE_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(252, "GPIO252"),
> - "C16", "mt7623",
> - MTK_EINT_FUNCTION(0, 137),
> - MTK_FUNCTION(0, "GPIO252"),
> - MTK_FUNCTION(1, "TEST_MD5"),
> - MTK_FUNCTION(6, "PCIE1_CLKREQ_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(253, "GPIO253"),
> - "D17", "mt7623",
> - MTK_EINT_FUNCTION(0, 138),
> - MTK_FUNCTION(0, "GPIO253"),
> - MTK_FUNCTION(1, "TEST_MD4"),
> - MTK_FUNCTION(6, "PCIE1_WAKE_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(254, "GPIO254"),
> - "D16", "mt7623",
> - MTK_EINT_FUNCTION(0, 139),
> - MTK_FUNCTION(0, "GPIO254"),
> - MTK_FUNCTION(1, "TEST_MD3"),
> - MTK_FUNCTION(6, "PCIE2_CLKREQ_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(255, "GPIO255"),
> - "C17", "mt7623",
> - MTK_EINT_FUNCTION(0, 140),
> - MTK_FUNCTION(0, "GPIO255"),
> - MTK_FUNCTION(1, "TEST_MD2"),
> - MTK_FUNCTION(6, "PCIE2_WAKE_N")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(256, "GPIO256"),
> - "B17", "mt7623",
> - MTK_EINT_FUNCTION(0, 141),
> - MTK_FUNCTION(0, "GPIO256"),
> - MTK_FUNCTION(1, "TEST_MD1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(257, "GPIO257"),
> - "C15", "mt7623",
> - MTK_EINT_FUNCTION(0, 142),
> - MTK_FUNCTION(0, "GPIO257"),
> - MTK_FUNCTION(1, "TEST_MD0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(258, "GPIO258"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO258")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(259, "GPIO259"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO259")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(260, "GPIO260"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO260")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(261, "MSDC1_INS"),
> - "AD1", "mt7623",
> - MTK_EINT_FUNCTION(0, 146),
> - MTK_FUNCTION(0, "GPIO261"),
> - MTK_FUNCTION(1, "MSDC1_INS")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(262, "G2_TXEN"),
> - "A23", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO262"),
> - MTK_FUNCTION(1, "G2_TXEN")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(263, "G2_TXD3"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO263"),
> - MTK_FUNCTION(1, "G2_TXD3")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(264, "G2_TXD2"),
> - "C24", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO264"),
> - MTK_FUNCTION(1, "G2_TXD2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(265, "G2_TXD1"),
> - "B25", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO265"),
> - MTK_FUNCTION(1, "G2_TXD1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(266, "G2_TXD0"),
> - "A24", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO266"),
> - MTK_FUNCTION(1, "G2_TXD0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(267, "G2_TXCLK"),
> - "C23", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO267"),
> - MTK_FUNCTION(1, "G2_TXC")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(268, "G2_RXCLK"),
> - "B23", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO268"),
> - MTK_FUNCTION(1, "G2_RXC")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(269, "G2_RXD0"),
> - "D21", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO269"),
> - MTK_FUNCTION(1, "G2_RXD0")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(270, "G2_RXD1"),
> - "B22", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO270"),
> - MTK_FUNCTION(1, "G2_RXD1")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(271, "G2_RXD2"),
> - "A22", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO271"),
> - MTK_FUNCTION(1, "G2_RXD2")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(272, "G2_RXD3"),
> - "C22", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO272"),
> - MTK_FUNCTION(1, "G2_RXD3")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(273, "GPIO273"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO273")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(274, "G2_RXDV"),
> - "C21", "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO274"),
> - MTK_FUNCTION(1, "G2_RXDV")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(275, "G2_MDC"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO275"),
> - MTK_FUNCTION(1, "MDC")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(276, "G2_MDIO"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO276"),
> - MTK_FUNCTION(1, "MDIO")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(277, "GPIO277"),
> - NULL, "mt7623",
> - MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
> - MTK_FUNCTION(0, "GPIO277")
> - ),
> - MTK_PIN(
> - PINCTRL_PIN(278, "JTAG_RESET"),
> - "H20", "mt7623",
> - MTK_EINT_FUNCTION(0, 147),
> - MTK_FUNCTION(0, "GPIO278"),
> - MTK_FUNCTION(1, "JTAG_RESET")
> - ),
> -};
> -
> -#endif /* __PINCTRL_MTK_MT7623_H */
^ permalink raw reply
* [PATCH v3] pinctrl: mediatek: reuse pinctrl driver for mt7623
From: sean.wang at mediatek.com @ 2017-05-01 7:54 UTC (permalink / raw)
To: linux-arm-kernel
From: Sean Wang <sean.wang@mediatek.com>
mt7623 pinctrl hardware can be compatible with mt2701 driver,
so the patch lets the pinctrl on mt7623 SoC reuse the driver
and deletes those redundant ones.
Cc: John Crispin <john@phrozen.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
---
drivers/pinctrl/mediatek/Kconfig | 9 +-
drivers/pinctrl/mediatek/Makefile | 1 -
drivers/pinctrl/mediatek/pinctrl-mt2701.c | 1 +
drivers/pinctrl/mediatek/pinctrl-mt7623.c | 379 -----
drivers/pinctrl/mediatek/pinctrl-mtk-mt7623.h | 1936 -------------------------
5 files changed, 2 insertions(+), 2324 deletions(-)
delete mode 100644 drivers/pinctrl/mediatek/pinctrl-mt7623.c
delete mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-mt7623.h
diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig
index 80fe3b4..fac9866 100644
--- a/drivers/pinctrl/mediatek/Kconfig
+++ b/drivers/pinctrl/mediatek/Kconfig
@@ -11,18 +11,11 @@ config PINCTRL_MTK
# For ARMv7 SoCs
config PINCTRL_MT2701
bool "Mediatek MT2701 pin control"
- depends on MACH_MT2701 || COMPILE_TEST
+ depends on MACH_MT7623 || MACH_MT2701 || COMPILE_TEST
depends on OF
default MACH_MT2701
select PINCTRL_MTK
-config PINCTRL_MT7623
- bool "Mediatek MT7623 pin control"
- depends on MACH_MT7623 || COMPILE_TEST
- depends on OF
- default MACH_MT7623
- select PINCTRL_MTK_COMMON
-
config PINCTRL_MT8135
bool "Mediatek MT8135 pin control"
depends on MACH_MT8135 || COMPILE_TEST
diff --git a/drivers/pinctrl/mediatek/Makefile b/drivers/pinctrl/mediatek/Makefile
index 3e3390a..e59c613 100644
--- a/drivers/pinctrl/mediatek/Makefile
+++ b/drivers/pinctrl/mediatek/Makefile
@@ -3,7 +3,6 @@ obj-y += pinctrl-mtk-common.o
# SoC Drivers
obj-$(CONFIG_PINCTRL_MT2701) += pinctrl-mt2701.o
-obj-$(CONFIG_PINCTRL_MT7623) += pinctrl-mt7623.o
obj-$(CONFIG_PINCTRL_MT8135) += pinctrl-mt8135.o
obj-$(CONFIG_PINCTRL_MT8127) += pinctrl-mt8127.o
obj-$(CONFIG_PINCTRL_MT8173) += pinctrl-mt8173.o
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt2701.c b/drivers/pinctrl/mediatek/pinctrl-mt2701.c
index 8d802fa..f86f3b3 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mt2701.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mt2701.c
@@ -565,6 +565,7 @@ static int mt2701_pinctrl_probe(struct platform_device *pdev)
static const struct of_device_id mt2701_pctrl_match[] = {
{ .compatible = "mediatek,mt2701-pinctrl", },
+ { .compatible = "mediatek,mt7623-pinctrl", },
{}
};
MODULE_DEVICE_TABLE(of, mt2701_pctrl_match);
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt7623.c b/drivers/pinctrl/mediatek/pinctrl-mt7623.c
deleted file mode 100644
index fa28dd6..0000000
--- a/drivers/pinctrl/mediatek/pinctrl-mt7623.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * Copyright (c) 2016 John Crispin <john@phrozen.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include <dt-bindings/pinctrl/mt65xx.h>
-#include <linux/module.h>
-#include <linux/of.h>
-#include <linux/of_device.h>
-#include <linux/platform_device.h>
-#include <linux/pinctrl/pinctrl.h>
-#include <linux/regmap.h>
-
-#include "pinctrl-mtk-common.h"
-#include "pinctrl-mtk-mt7623.h"
-
-static const struct mtk_drv_group_desc mt7623_drv_grp[] = {
- /* 0E4E8SR 4/8/12/16 */
- MTK_DRV_GRP(4, 16, 1, 2, 4),
- /* 0E2E4SR 2/4/6/8 */
- MTK_DRV_GRP(2, 8, 1, 2, 2),
- /* E8E4E2 2/4/6/8/10/12/14/16 */
- MTK_DRV_GRP(2, 16, 0, 2, 2)
-};
-
-#define DRV_SEL0 0xf50
-#define DRV_SEL1 0xf60
-#define DRV_SEL2 0xf70
-#define DRV_SEL3 0xf80
-#define DRV_SEL4 0xf90
-#define DRV_SEL5 0xfa0
-#define DRV_SEL6 0xfb0
-#define DRV_SEL7 0xfe0
-#define DRV_SEL8 0xfd0
-#define DRV_SEL9 0xff0
-#define DRV_SEL10 0xf00
-
-#define MSDC0_CTRL0 0xcc0
-#define MSDC0_CTRL1 0xcd0
-#define MSDC0_CTRL2 0xce0
-#define MSDC0_CTRL3 0xcf0
-#define MSDC0_CTRL4 0xd00
-#define MSDC0_CTRL5 0xd10
-#define MSDC0_CTRL6 0xd20
-#define MSDC1_CTRL0 0xd30
-#define MSDC1_CTRL1 0xd40
-#define MSDC1_CTRL2 0xd50
-#define MSDC1_CTRL3 0xd60
-#define MSDC1_CTRL4 0xd70
-#define MSDC1_CTRL5 0xd80
-#define MSDC1_CTRL6 0xd90
-
-#define IES_EN0 0xb20
-#define IES_EN1 0xb30
-#define IES_EN2 0xb40
-
-#define SMT_EN0 0xb50
-#define SMT_EN1 0xb60
-#define SMT_EN2 0xb70
-
-static const struct mtk_pin_drv_grp mt7623_pin_drv[] = {
- MTK_PIN_DRV_GRP(0, DRV_SEL0, 0, 1),
- MTK_PIN_DRV_GRP(1, DRV_SEL0, 0, 1),
- MTK_PIN_DRV_GRP(2, DRV_SEL0, 0, 1),
- MTK_PIN_DRV_GRP(3, DRV_SEL0, 0, 1),
- MTK_PIN_DRV_GRP(4, DRV_SEL0, 0, 1),
- MTK_PIN_DRV_GRP(5, DRV_SEL0, 0, 1),
- MTK_PIN_DRV_GRP(6, DRV_SEL0, 0, 1),
- MTK_PIN_DRV_GRP(7, DRV_SEL0, 4, 1),
- MTK_PIN_DRV_GRP(8, DRV_SEL0, 4, 1),
- MTK_PIN_DRV_GRP(9, DRV_SEL0, 4, 1),
- MTK_PIN_DRV_GRP(10, DRV_SEL0, 8, 1),
- MTK_PIN_DRV_GRP(11, DRV_SEL0, 8, 1),
- MTK_PIN_DRV_GRP(12, DRV_SEL0, 8, 1),
- MTK_PIN_DRV_GRP(13, DRV_SEL0, 8, 1),
- MTK_PIN_DRV_GRP(14, DRV_SEL0, 12, 0),
- MTK_PIN_DRV_GRP(15, DRV_SEL0, 12, 0),
- MTK_PIN_DRV_GRP(18, DRV_SEL1, 4, 0),
- MTK_PIN_DRV_GRP(19, DRV_SEL1, 4, 0),
- MTK_PIN_DRV_GRP(20, DRV_SEL1, 4, 0),
- MTK_PIN_DRV_GRP(21, DRV_SEL1, 4, 0),
- MTK_PIN_DRV_GRP(22, DRV_SEL1, 8, 0),
- MTK_PIN_DRV_GRP(23, DRV_SEL1, 8, 0),
- MTK_PIN_DRV_GRP(24, DRV_SEL1, 8, 0),
- MTK_PIN_DRV_GRP(25, DRV_SEL1, 8, 0),
- MTK_PIN_DRV_GRP(26, DRV_SEL1, 8, 0),
- MTK_PIN_DRV_GRP(27, DRV_SEL1, 12, 0),
- MTK_PIN_DRV_GRP(28, DRV_SEL1, 12, 0),
- MTK_PIN_DRV_GRP(29, DRV_SEL1, 12, 0),
- MTK_PIN_DRV_GRP(33, DRV_SEL2, 0, 0),
- MTK_PIN_DRV_GRP(34, DRV_SEL2, 0, 0),
- MTK_PIN_DRV_GRP(35, DRV_SEL2, 0, 0),
- MTK_PIN_DRV_GRP(36, DRV_SEL2, 0, 0),
- MTK_PIN_DRV_GRP(37, DRV_SEL2, 0, 0),
- MTK_PIN_DRV_GRP(39, DRV_SEL2, 8, 1),
- MTK_PIN_DRV_GRP(40, DRV_SEL2, 8, 1),
- MTK_PIN_DRV_GRP(41, DRV_SEL2, 8, 1),
- MTK_PIN_DRV_GRP(42, DRV_SEL2, 8, 1),
- MTK_PIN_DRV_GRP(43, DRV_SEL2, 12, 0),
- MTK_PIN_DRV_GRP(44, DRV_SEL2, 12, 0),
- MTK_PIN_DRV_GRP(45, DRV_SEL2, 12, 0),
- MTK_PIN_DRV_GRP(47, DRV_SEL3, 0, 0),
- MTK_PIN_DRV_GRP(48, DRV_SEL3, 0, 0),
- MTK_PIN_DRV_GRP(49, DRV_SEL3, 4, 0),
- MTK_PIN_DRV_GRP(53, DRV_SEL3, 12, 0),
- MTK_PIN_DRV_GRP(54, DRV_SEL3, 12, 0),
- MTK_PIN_DRV_GRP(55, DRV_SEL3, 12, 0),
- MTK_PIN_DRV_GRP(56, DRV_SEL3, 12, 0),
- MTK_PIN_DRV_GRP(60, DRV_SEL4, 8, 1),
- MTK_PIN_DRV_GRP(61, DRV_SEL4, 8, 1),
- MTK_PIN_DRV_GRP(62, DRV_SEL4, 8, 1),
- MTK_PIN_DRV_GRP(63, DRV_SEL4, 12, 1),
- MTK_PIN_DRV_GRP(64, DRV_SEL4, 12, 1),
- MTK_PIN_DRV_GRP(65, DRV_SEL4, 12, 1),
- MTK_PIN_DRV_GRP(66, DRV_SEL5, 0, 1),
- MTK_PIN_DRV_GRP(67, DRV_SEL5, 0, 1),
- MTK_PIN_DRV_GRP(68, DRV_SEL5, 0, 1),
- MTK_PIN_DRV_GRP(69, DRV_SEL5, 0, 1),
- MTK_PIN_DRV_GRP(70, DRV_SEL5, 0, 1),
- MTK_PIN_DRV_GRP(71, DRV_SEL5, 0, 1),
- MTK_PIN_DRV_GRP(72, DRV_SEL3, 4, 0),
- MTK_PIN_DRV_GRP(73, DRV_SEL3, 4, 0),
- MTK_PIN_DRV_GRP(74, DRV_SEL3, 4, 0),
- MTK_PIN_DRV_GRP(83, DRV_SEL5, 0, 1),
- MTK_PIN_DRV_GRP(84, DRV_SEL5, 0, 1),
- MTK_PIN_DRV_GRP(105, MSDC1_CTRL1, 0, 1),
- MTK_PIN_DRV_GRP(106, MSDC1_CTRL0, 0, 1),
- MTK_PIN_DRV_GRP(107, MSDC1_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(108, MSDC1_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(109, MSDC1_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(110, MSDC1_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(111, MSDC0_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(112, MSDC0_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(113, MSDC0_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(114, MSDC0_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(115, MSDC0_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(116, MSDC0_CTRL1, 0, 1),
- MTK_PIN_DRV_GRP(117, MSDC0_CTRL0, 0, 1),
- MTK_PIN_DRV_GRP(118, MSDC0_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(119, MSDC0_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(120, MSDC0_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(121, MSDC0_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(126, DRV_SEL3, 4, 0),
- MTK_PIN_DRV_GRP(199, DRV_SEL0, 4, 1),
- MTK_PIN_DRV_GRP(200, DRV_SEL8, 0, 0),
- MTK_PIN_DRV_GRP(201, DRV_SEL8, 0, 0),
- MTK_PIN_DRV_GRP(203, DRV_SEL8, 4, 0),
- MTK_PIN_DRV_GRP(204, DRV_SEL8, 4, 0),
- MTK_PIN_DRV_GRP(205, DRV_SEL8, 4, 0),
- MTK_PIN_DRV_GRP(206, DRV_SEL8, 4, 0),
- MTK_PIN_DRV_GRP(207, DRV_SEL8, 4, 0),
- MTK_PIN_DRV_GRP(208, DRV_SEL8, 8, 0),
- MTK_PIN_DRV_GRP(209, DRV_SEL8, 8, 0),
- MTK_PIN_DRV_GRP(236, DRV_SEL9, 4, 0),
- MTK_PIN_DRV_GRP(237, DRV_SEL9, 4, 0),
- MTK_PIN_DRV_GRP(238, DRV_SEL9, 4, 0),
- MTK_PIN_DRV_GRP(239, DRV_SEL9, 4, 0),
- MTK_PIN_DRV_GRP(240, DRV_SEL9, 4, 0),
- MTK_PIN_DRV_GRP(241, DRV_SEL9, 4, 0),
- MTK_PIN_DRV_GRP(242, DRV_SEL9, 8, 0),
- MTK_PIN_DRV_GRP(243, DRV_SEL9, 8, 0),
- MTK_PIN_DRV_GRP(257, MSDC0_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(261, MSDC1_CTRL2, 0, 1),
- MTK_PIN_DRV_GRP(262, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(263, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(264, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(265, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(266, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(267, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(268, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(269, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(270, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(271, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(272, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(274, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(275, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(276, DRV_SEL10, 8, 0),
- MTK_PIN_DRV_GRP(278, DRV_SEL2, 8, 1),
-};
-
-static const struct mtk_pin_spec_pupd_set_samereg mt7623_spec_pupd[] = {
- MTK_PIN_PUPD_SPEC_SR(105, MSDC1_CTRL1, 8, 9, 10),
- MTK_PIN_PUPD_SPEC_SR(106, MSDC1_CTRL0, 8, 9, 10),
- MTK_PIN_PUPD_SPEC_SR(107, MSDC1_CTRL3, 0, 1, 2),
- MTK_PIN_PUPD_SPEC_SR(108, MSDC1_CTRL3, 4, 5, 6),
- MTK_PIN_PUPD_SPEC_SR(109, MSDC1_CTRL3, 8, 9, 10),
- MTK_PIN_PUPD_SPEC_SR(110, MSDC1_CTRL3, 12, 13, 14),
- MTK_PIN_PUPD_SPEC_SR(111, MSDC0_CTRL4, 12, 13, 14),
- MTK_PIN_PUPD_SPEC_SR(112, MSDC0_CTRL4, 8, 9, 10),
- MTK_PIN_PUPD_SPEC_SR(113, MSDC0_CTRL4, 4, 5, 6),
- MTK_PIN_PUPD_SPEC_SR(114, MSDC0_CTRL4, 0, 1, 2),
- MTK_PIN_PUPD_SPEC_SR(115, MSDC0_CTRL5, 0, 1, 2),
- MTK_PIN_PUPD_SPEC_SR(116, MSDC0_CTRL1, 8, 9, 10),
- MTK_PIN_PUPD_SPEC_SR(117, MSDC0_CTRL0, 8, 9, 10),
- MTK_PIN_PUPD_SPEC_SR(118, MSDC0_CTRL3, 12, 13, 14),
- MTK_PIN_PUPD_SPEC_SR(119, MSDC0_CTRL3, 8, 9, 10),
- MTK_PIN_PUPD_SPEC_SR(120, MSDC0_CTRL3, 4, 5, 6),
- MTK_PIN_PUPD_SPEC_SR(121, MSDC0_CTRL3, 0, 1, 2),
-};
-
-static int mt7623_spec_pull_set(struct regmap *regmap, unsigned int pin,
- unsigned char align, bool isup, unsigned int r1r0)
-{
- return mtk_pctrl_spec_pull_set_samereg(regmap, mt7623_spec_pupd,
- ARRAY_SIZE(mt7623_spec_pupd), pin, align, isup, r1r0);
-}
-
-static const struct mtk_pin_ies_smt_set mt7623_ies_set[] = {
- MTK_PIN_IES_SMT_SPEC(0, 6, IES_EN0, 0),
- MTK_PIN_IES_SMT_SPEC(7, 9, IES_EN0, 1),
- MTK_PIN_IES_SMT_SPEC(10, 13, IES_EN0, 2),
- MTK_PIN_IES_SMT_SPEC(14, 15, IES_EN0, 3),
- MTK_PIN_IES_SMT_SPEC(18, 21, IES_EN0, 5),
- MTK_PIN_IES_SMT_SPEC(22, 26, IES_EN0, 6),
- MTK_PIN_IES_SMT_SPEC(27, 29, IES_EN0, 7),
- MTK_PIN_IES_SMT_SPEC(33, 37, IES_EN0, 8),
- MTK_PIN_IES_SMT_SPEC(39, 42, IES_EN0, 9),
- MTK_PIN_IES_SMT_SPEC(43, 45, IES_EN0, 10),
- MTK_PIN_IES_SMT_SPEC(47, 48, IES_EN0, 11),
- MTK_PIN_IES_SMT_SPEC(49, 49, IES_EN0, 12),
- MTK_PIN_IES_SMT_SPEC(53, 56, IES_EN0, 14),
- MTK_PIN_IES_SMT_SPEC(60, 62, IES_EN1, 0),
- MTK_PIN_IES_SMT_SPEC(63, 65, IES_EN1, 1),
- MTK_PIN_IES_SMT_SPEC(66, 71, IES_EN1, 2),
- MTK_PIN_IES_SMT_SPEC(72, 74, IES_EN0, 12),
- MTK_PIN_IES_SMT_SPEC(75, 76, IES_EN1, 3),
- MTK_PIN_IES_SMT_SPEC(83, 84, IES_EN1, 2),
- MTK_PIN_IES_SMT_SPEC(105, 121, MSDC1_CTRL1, 4),
- MTK_PIN_IES_SMT_SPEC(122, 125, IES_EN1, 7),
- MTK_PIN_IES_SMT_SPEC(126, 126, IES_EN0, 12),
- MTK_PIN_IES_SMT_SPEC(199, 201, IES_EN0, 1),
- MTK_PIN_IES_SMT_SPEC(203, 207, IES_EN2, 2),
- MTK_PIN_IES_SMT_SPEC(208, 209, IES_EN2, 3),
- MTK_PIN_IES_SMT_SPEC(236, 241, IES_EN2, 6),
- MTK_PIN_IES_SMT_SPEC(242, 243, IES_EN2, 7),
- MTK_PIN_IES_SMT_SPEC(261, 261, MSDC1_CTRL2, 4),
- MTK_PIN_IES_SMT_SPEC(262, 272, IES_EN2, 12),
- MTK_PIN_IES_SMT_SPEC(274, 276, IES_EN2, 12),
- MTK_PIN_IES_SMT_SPEC(278, 278, IES_EN2, 13),
-};
-
-static const struct mtk_pin_ies_smt_set mt7623_smt_set[] = {
- MTK_PIN_IES_SMT_SPEC(0, 6, SMT_EN0, 0),
- MTK_PIN_IES_SMT_SPEC(7, 9, SMT_EN0, 1),
- MTK_PIN_IES_SMT_SPEC(10, 13, SMT_EN0, 2),
- MTK_PIN_IES_SMT_SPEC(14, 15, SMT_EN0, 3),
- MTK_PIN_IES_SMT_SPEC(18, 21, SMT_EN0, 5),
- MTK_PIN_IES_SMT_SPEC(22, 26, SMT_EN0, 6),
- MTK_PIN_IES_SMT_SPEC(27, 29, SMT_EN0, 7),
- MTK_PIN_IES_SMT_SPEC(33, 37, SMT_EN0, 8),
- MTK_PIN_IES_SMT_SPEC(39, 42, SMT_EN0, 9),
- MTK_PIN_IES_SMT_SPEC(43, 45, SMT_EN0, 10),
- MTK_PIN_IES_SMT_SPEC(47, 48, SMT_EN0, 11),
- MTK_PIN_IES_SMT_SPEC(49, 49, SMT_EN0, 12),
- MTK_PIN_IES_SMT_SPEC(53, 56, SMT_EN0, 14),
- MTK_PIN_IES_SMT_SPEC(60, 62, SMT_EN1, 0),
- MTK_PIN_IES_SMT_SPEC(63, 65, SMT_EN1, 1),
- MTK_PIN_IES_SMT_SPEC(66, 71, SMT_EN1, 2),
- MTK_PIN_IES_SMT_SPEC(72, 74, SMT_EN0, 12),
- MTK_PIN_IES_SMT_SPEC(75, 76, SMT_EN1, 3),
- MTK_PIN_IES_SMT_SPEC(83, 84, SMT_EN1, 2),
- MTK_PIN_IES_SMT_SPEC(105, 106, MSDC1_CTRL1, 11),
- MTK_PIN_IES_SMT_SPEC(107, 107, MSDC1_CTRL3, 3),
- MTK_PIN_IES_SMT_SPEC(108, 108, MSDC1_CTRL3, 7),
- MTK_PIN_IES_SMT_SPEC(109, 109, MSDC1_CTRL3, 11),
- MTK_PIN_IES_SMT_SPEC(110, 111, MSDC1_CTRL3, 15),
- MTK_PIN_IES_SMT_SPEC(112, 112, MSDC0_CTRL4, 11),
- MTK_PIN_IES_SMT_SPEC(113, 113, MSDC0_CTRL4, 7),
- MTK_PIN_IES_SMT_SPEC(114, 115, MSDC0_CTRL4, 3),
- MTK_PIN_IES_SMT_SPEC(116, 117, MSDC0_CTRL1, 11),
- MTK_PIN_IES_SMT_SPEC(118, 118, MSDC0_CTRL3, 15),
- MTK_PIN_IES_SMT_SPEC(119, 119, MSDC0_CTRL3, 11),
- MTK_PIN_IES_SMT_SPEC(120, 120, MSDC0_CTRL3, 7),
- MTK_PIN_IES_SMT_SPEC(121, 121, MSDC0_CTRL3, 3),
- MTK_PIN_IES_SMT_SPEC(122, 125, SMT_EN1, 7),
- MTK_PIN_IES_SMT_SPEC(126, 126, SMT_EN0, 12),
- MTK_PIN_IES_SMT_SPEC(199, 201, SMT_EN0, 1),
- MTK_PIN_IES_SMT_SPEC(203, 207, SMT_EN2, 2),
- MTK_PIN_IES_SMT_SPEC(208, 209, SMT_EN2, 3),
- MTK_PIN_IES_SMT_SPEC(236, 241, SMT_EN2, 6),
- MTK_PIN_IES_SMT_SPEC(242, 243, SMT_EN2, 7),
- MTK_PIN_IES_SMT_SPEC(261, 261, MSDC1_CTRL6, 3),
- MTK_PIN_IES_SMT_SPEC(262, 272, SMT_EN2, 12),
- MTK_PIN_IES_SMT_SPEC(274, 276, SMT_EN2, 12),
- MTK_PIN_IES_SMT_SPEC(278, 278, SMT_EN2, 13),
-};
-
-static int mt7623_ies_smt_set(struct regmap *regmap, unsigned int pin,
- unsigned char align, int value, enum pin_config_param arg)
-{
- if (arg == PIN_CONFIG_INPUT_ENABLE)
- return mtk_pconf_spec_set_ies_smt_range(regmap, mt7623_ies_set,
- ARRAY_SIZE(mt7623_ies_set), pin, align, value);
- else if (arg == PIN_CONFIG_INPUT_SCHMITT_ENABLE)
- return mtk_pconf_spec_set_ies_smt_range(regmap, mt7623_smt_set,
- ARRAY_SIZE(mt7623_smt_set), pin, align, value);
- return -EINVAL;
-}
-
-static const struct mtk_pinctrl_devdata mt7623_pinctrl_data = {
- .pins = mtk_pins_mt7623,
- .npins = ARRAY_SIZE(mtk_pins_mt7623),
- .grp_desc = mt7623_drv_grp,
- .n_grp_cls = ARRAY_SIZE(mt7623_drv_grp),
- .pin_drv_grp = mt7623_pin_drv,
- .n_pin_drv_grps = ARRAY_SIZE(mt7623_pin_drv),
- .spec_pull_set = mt7623_spec_pull_set,
- .spec_ies_smt_set = mt7623_ies_smt_set,
- .dir_offset = 0x0000,
- .pullen_offset = 0x0150,
- .pullsel_offset = 0x0280,
- .dout_offset = 0x0500,
- .din_offset = 0x0630,
- .pinmux_offset = 0x0760,
- .type1_start = 280,
- .type1_end = 280,
- .port_shf = 4,
- .port_mask = 0x1f,
- .port_align = 4,
- .eint_offsets = {
- .name = "mt7623_eint",
- .stat = 0x000,
- .ack = 0x040,
- .mask = 0x080,
- .mask_set = 0x0c0,
- .mask_clr = 0x100,
- .sens = 0x140,
- .sens_set = 0x180,
- .sens_clr = 0x1c0,
- .soft = 0x200,
- .soft_set = 0x240,
- .soft_clr = 0x280,
- .pol = 0x300,
- .pol_set = 0x340,
- .pol_clr = 0x380,
- .dom_en = 0x400,
- .dbnc_ctrl = 0x500,
- .dbnc_set = 0x600,
- .dbnc_clr = 0x700,
- .port_mask = 6,
- .ports = 6,
- },
- .ap_num = 169,
- .db_cnt = 16,
-};
-
-static int mt7623_pinctrl_probe(struct platform_device *pdev)
-{
- return mtk_pctrl_init(pdev, &mt7623_pinctrl_data, NULL);
-}
-
-static const struct of_device_id mt7623_pctrl_match[] = {
- { .compatible = "mediatek,mt7623-pinctrl", },
- {}
-};
-MODULE_DEVICE_TABLE(of, mt7623_pctrl_match);
-
-static struct platform_driver mtk_pinctrl_driver = {
- .probe = mt7623_pinctrl_probe,
- .driver = {
- .name = "mediatek-mt7623-pinctrl",
- .of_match_table = mt7623_pctrl_match,
- },
-};
-
-static int __init mtk_pinctrl_init(void)
-{
- return platform_driver_register(&mtk_pinctrl_driver);
-}
-
-arch_initcall(mtk_pinctrl_init);
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt7623.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt7623.h
deleted file mode 100644
index e06cfc4..0000000
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-mt7623.h
+++ /dev/null
@@ -1,1936 +0,0 @@
-/*
- * Copyright (c) 2016 John Crispin <john@phrozen.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#ifndef __PINCTRL_MTK_MT7623_H
-#define __PINCTRL_MTK_MT7623_H
-
-#include <linux/pinctrl/pinctrl.h>
-#include "pinctrl-mtk-common.h"
-
-static const struct mtk_desc_pin mtk_pins_mt7623[] = {
- MTK_PIN(
- PINCTRL_PIN(0, "PWRAP_SPI0_MI"),
- "J20", "mt7623",
- MTK_EINT_FUNCTION(0, 148),
- MTK_FUNCTION(0, "GPIO0"),
- MTK_FUNCTION(1, "PWRAP_SPIDO"),
- MTK_FUNCTION(2, "PWRAP_SPIDI")
- ),
- MTK_PIN(
- PINCTRL_PIN(1, "PWRAP_SPI0_MO"),
- "D10", "mt7623",
- MTK_EINT_FUNCTION(0, 149),
- MTK_FUNCTION(0, "GPIO1"),
- MTK_FUNCTION(1, "PWRAP_SPIDI"),
- MTK_FUNCTION(2, "PWRAP_SPIDO")
- ),
- MTK_PIN(
- PINCTRL_PIN(2, "PWRAP_INT"),
- "E11", "mt7623",
- MTK_EINT_FUNCTION(0, 150),
- MTK_FUNCTION(0, "GPIO2"),
- MTK_FUNCTION(1, "PWRAP_INT")
- ),
- MTK_PIN(
- PINCTRL_PIN(3, "PWRAP_SPI0_CK"),
- "H12", "mt7623",
- MTK_EINT_FUNCTION(0, 151),
- MTK_FUNCTION(0, "GPIO3"),
- MTK_FUNCTION(1, "PWRAP_SPICK_I")
- ),
- MTK_PIN(
- PINCTRL_PIN(4, "PWRAP_SPI0_CSN"),
- "E12", "mt7623",
- MTK_EINT_FUNCTION(0, 152),
- MTK_FUNCTION(0, "GPIO4"),
- MTK_FUNCTION(1, "PWRAP_SPICS_B_I")
- ),
- MTK_PIN(
- PINCTRL_PIN(5, "PWRAP_SPI0_CK2"),
- "H11", "mt7623",
- MTK_EINT_FUNCTION(0, 155),
- MTK_FUNCTION(0, "GPIO5"),
- MTK_FUNCTION(1, "PWRAP_SPICK2_I")
- ),
- MTK_PIN(
- PINCTRL_PIN(6, "PWRAP_SPI0_CSN2"),
- "G11", "mt7623",
- MTK_EINT_FUNCTION(0, 156),
- MTK_FUNCTION(0, "GPIO6"),
- MTK_FUNCTION(1, "PWRAP_SPICS2_B_I")
- ),
- MTK_PIN(
- PINCTRL_PIN(7, "SPI1_CSN"),
- "G19", "mt7623",
- MTK_EINT_FUNCTION(0, 153),
- MTK_FUNCTION(0, "GPIO7"),
- MTK_FUNCTION(1, "SPI1_CS")
- ),
- MTK_PIN(
- PINCTRL_PIN(8, "SPI1_MI"),
- "F19", "mt7623",
- MTK_EINT_FUNCTION(0, 154),
- MTK_FUNCTION(0, "GPIO8"),
- MTK_FUNCTION(1, "SPI1_MI"),
- MTK_FUNCTION(2, "SPI1_MO")
- ),
- MTK_PIN(
- PINCTRL_PIN(9, "SPI1_MO"),
- "G20", "mt7623",
- MTK_EINT_FUNCTION(0, 157),
- MTK_FUNCTION(0, "GPIO9"),
- MTK_FUNCTION(1, "SPI1_MO"),
- MTK_FUNCTION(2, "SPI1_MI")
- ),
- MTK_PIN(
- PINCTRL_PIN(10, "RTC32K_CK"),
- "A13", "mt7623",
- MTK_EINT_FUNCTION(0, 158),
- MTK_FUNCTION(0, "GPIO10"),
- MTK_FUNCTION(1, "RTC32K_CK")
- ),
- MTK_PIN(
- PINCTRL_PIN(11, "WATCHDOG"),
- "D14", "mt7623",
- MTK_EINT_FUNCTION(0, 159),
- MTK_FUNCTION(0, "GPIO11"),
- MTK_FUNCTION(1, "WATCHDOG")
- ),
- MTK_PIN(
- PINCTRL_PIN(12, "SRCLKENA"),
- "C13", "mt7623",
- MTK_EINT_FUNCTION(0, 169),
- MTK_FUNCTION(0, "GPIO12"),
- MTK_FUNCTION(1, "SRCLKENA")
- ),
- MTK_PIN(
- PINCTRL_PIN(13, "SRCLKENAI"),
- "B13", "mt7623",
- MTK_EINT_FUNCTION(0, 161),
- MTK_FUNCTION(0, "GPIO13"),
- MTK_FUNCTION(1, "SRCLKENAI")
- ),
- MTK_PIN(
- PINCTRL_PIN(14, "GPIO14"),
- "E18", "mt7623",
- MTK_EINT_FUNCTION(0, 162),
- MTK_FUNCTION(0, "GPIO14"),
- MTK_FUNCTION(1, "URXD2"),
- MTK_FUNCTION(2, "UTXD2")
- ),
- MTK_PIN(
- PINCTRL_PIN(15, "GPIO15"),
- "E17", "mt7623",
- MTK_EINT_FUNCTION(0, 163),
- MTK_FUNCTION(0, "GPIO15"),
- MTK_FUNCTION(1, "UTXD2"),
- MTK_FUNCTION(2, "URXD2")
- ),
- MTK_PIN(
- PINCTRL_PIN(16, "GPIO16"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO16")
- ),
- MTK_PIN(
- PINCTRL_PIN(17, "GPIO17"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO17")
- ),
- MTK_PIN(
- PINCTRL_PIN(18, "PCM_CLK"),
- "C19", "mt7623",
- MTK_EINT_FUNCTION(0, 166),
- MTK_FUNCTION(0, "GPIO18"),
- MTK_FUNCTION(1, "PCM_CLK0"),
- MTK_FUNCTION(6, "AP_PCM_CLKO")
- ),
- MTK_PIN(
- PINCTRL_PIN(19, "PCM_SYNC"),
- "D19", "mt7623",
- MTK_EINT_FUNCTION(0, 167),
- MTK_FUNCTION(0, "GPIO19"),
- MTK_FUNCTION(1, "PCM_SYNC"),
- MTK_FUNCTION(6, "AP_PCM_SYNC")
- ),
- MTK_PIN(
- PINCTRL_PIN(20, "PCM_RX"),
- "D18", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO20"),
- MTK_FUNCTION(1, "PCM_RX"),
- MTK_FUNCTION(4, "PCM_TX"),
- MTK_FUNCTION(6, "AP_PCM_RX")
- ),
- MTK_PIN(
- PINCTRL_PIN(21, "PCM_TX"),
- "C18", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO21"),
- MTK_FUNCTION(1, "PCM_TX"),
- MTK_FUNCTION(4, "PCM_RX"),
- MTK_FUNCTION(6, "AP_PCM_TX")
- ),
- MTK_PIN(
- PINCTRL_PIN(22, "EINT0"),
- "H15", "mt7623",
- MTK_EINT_FUNCTION(0, 0),
- MTK_FUNCTION(0, "GPIO22"),
- MTK_FUNCTION(1, "UCTS0"),
- MTK_FUNCTION(2, "PCIE0_PERST_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(23, "EINT1"),
- "J16", "mt7623",
- MTK_EINT_FUNCTION(0, 1),
- MTK_FUNCTION(0, "GPIO23"),
- MTK_FUNCTION(1, "URTS0"),
- MTK_FUNCTION(2, "PCIE1_PERST_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(24, "EINT2"),
- "H16", "mt7623",
- MTK_EINT_FUNCTION(0, 2),
- MTK_FUNCTION(0, "GPIO24"),
- MTK_FUNCTION(1, "UCTS1"),
- MTK_FUNCTION(2, "PCIE2_PERST_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(25, "EINT3"),
- "K15", "mt7623",
- MTK_EINT_FUNCTION(0, 3),
- MTK_FUNCTION(0, "GPIO25"),
- MTK_FUNCTION(1, "URTS1")
- ),
- MTK_PIN(
- PINCTRL_PIN(26, "EINT4"),
- "G15", "mt7623",
- MTK_EINT_FUNCTION(0, 4),
- MTK_FUNCTION(0, "GPIO26"),
- MTK_FUNCTION(1, "UCTS3"),
- MTK_FUNCTION(6, "PCIE2_WAKE_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(27, "EINT5"),
- "F15", "mt7623",
- MTK_EINT_FUNCTION(0, 5),
- MTK_FUNCTION(0, "GPIO27"),
- MTK_FUNCTION(1, "URTS3"),
- MTK_FUNCTION(6, "PCIE1_WAKE_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(28, "EINT6"),
- "J15", "mt7623",
- MTK_EINT_FUNCTION(0, 6),
- MTK_FUNCTION(0, "GPIO28"),
- MTK_FUNCTION(1, "DRV_VBUS"),
- MTK_FUNCTION(6, "PCIE0_WAKE_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(29, "EINT7"),
- "E15", "mt7623",
- MTK_EINT_FUNCTION(0, 7),
- MTK_FUNCTION(0, "GPIO29"),
- MTK_FUNCTION(1, "IDDIG"),
- MTK_FUNCTION(2, "MSDC1_WP"),
- MTK_FUNCTION(6, "PCIE2_PERST_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(30, "GPIO30"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO30")
- ),
- MTK_PIN(
- PINCTRL_PIN(31, "GPIO31"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO31")
- ),
- MTK_PIN(
- PINCTRL_PIN(32, "GPIO32"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO32")
- ),
- MTK_PIN(
- PINCTRL_PIN(33, "I2S1_DATA"),
- "Y18", "mt7623",
- MTK_EINT_FUNCTION(0, 15),
- MTK_FUNCTION(0, "GPIO33"),
- MTK_FUNCTION(1, "I2S1_DATA"),
- MTK_FUNCTION(3, "PCM_TX"),
- MTK_FUNCTION(6, "AP_PCM_TX")
- ),
- MTK_PIN(
- PINCTRL_PIN(34, "I2S1_DATA_IN"),
- "Y17", "mt7623",
- MTK_EINT_FUNCTION(0, 16),
- MTK_FUNCTION(0, "GPIO34"),
- MTK_FUNCTION(1, "I2S1_DATA_IN"),
- MTK_FUNCTION(3, "PCM_RX"),
- MTK_FUNCTION(6, "AP_PCM_RX")
- ),
- MTK_PIN(
- PINCTRL_PIN(35, "I2S1_BCK"),
- "V17", "mt7623",
- MTK_EINT_FUNCTION(0, 17),
- MTK_FUNCTION(0, "GPIO35"),
- MTK_FUNCTION(1, "I2S1_BCK"),
- MTK_FUNCTION(3, "PCM_CLK0"),
- MTK_FUNCTION(6, "AP_PCM_CLKO")
- ),
- MTK_PIN(
- PINCTRL_PIN(36, "I2S1_LRCK"),
- "W17", "mt7623",
- MTK_EINT_FUNCTION(0, 18),
- MTK_FUNCTION(0, "GPIO36"),
- MTK_FUNCTION(1, "I2S1_LRCK"),
- MTK_FUNCTION(3, "PCM_SYNC"),
- MTK_FUNCTION(6, "AP_PCM_SYNC")
- ),
- MTK_PIN(
- PINCTRL_PIN(37, "I2S1_MCLK"),
- "AA18", "mt7623",
- MTK_EINT_FUNCTION(0, 19),
- MTK_FUNCTION(0, "GPIO37"),
- MTK_FUNCTION(1, "I2S1_MCLK")
- ),
- MTK_PIN(
- PINCTRL_PIN(38, "GPIO38"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO38")
- ),
- MTK_PIN(
- PINCTRL_PIN(39, "JTMS"),
- "G21", "mt7623",
- MTK_EINT_FUNCTION(0, 21),
- MTK_FUNCTION(0, "GPIO39"),
- MTK_FUNCTION(1, "JTMS")
- ),
- MTK_PIN(
- PINCTRL_PIN(40, "GPIO40"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO40")
- ),
- MTK_PIN(
- PINCTRL_PIN(41, "JTDI"),
- "H22", "mt7623",
- MTK_EINT_FUNCTION(0, 23),
- MTK_FUNCTION(0, "GPIO41"),
- MTK_FUNCTION(1, "JTDI")
- ),
- MTK_PIN(
- PINCTRL_PIN(42, "JTDO"),
- "H21", "mt7623",
- MTK_EINT_FUNCTION(0, 24),
- MTK_FUNCTION(0, "GPIO42"),
- MTK_FUNCTION(1, "JTDO")
- ),
- MTK_PIN(
- PINCTRL_PIN(43, "NCLE"),
- "C7", "mt7623",
- MTK_EINT_FUNCTION(0, 25),
- MTK_FUNCTION(0, "GPIO43"),
- MTK_FUNCTION(1, "NCLE"),
- MTK_FUNCTION(2, "EXT_XCS2")
- ),
- MTK_PIN(
- PINCTRL_PIN(44, "NCEB1"),
- "C6", "mt7623",
- MTK_EINT_FUNCTION(0, 26),
- MTK_FUNCTION(0, "GPIO44"),
- MTK_FUNCTION(1, "NCEB1"),
- MTK_FUNCTION(2, "IDDIG")
- ),
- MTK_PIN(
- PINCTRL_PIN(45, "NCEB0"),
- "D7", "mt7623",
- MTK_EINT_FUNCTION(0, 27),
- MTK_FUNCTION(0, "GPIO45"),
- MTK_FUNCTION(1, "NCEB0"),
- MTK_FUNCTION(2, "DRV_VBUS")
- ),
- MTK_PIN(
- PINCTRL_PIN(46, "IR"),
- "D15", "mt7623",
- MTK_EINT_FUNCTION(0, 28),
- MTK_FUNCTION(0, "GPIO46"),
- MTK_FUNCTION(1, "IR")
- ),
- MTK_PIN(
- PINCTRL_PIN(47, "NREB"),
- "A6", "mt7623",
- MTK_EINT_FUNCTION(0, 29),
- MTK_FUNCTION(0, "GPIO47"),
- MTK_FUNCTION(1, "NREB")
- ),
- MTK_PIN(
- PINCTRL_PIN(48, "NRNB"),
- "B6", "mt7623",
- MTK_EINT_FUNCTION(0, 30),
- MTK_FUNCTION(0, "GPIO48"),
- MTK_FUNCTION(1, "NRNB")
- ),
- MTK_PIN(
- PINCTRL_PIN(49, "I2S0_DATA"),
- "AB18", "mt7623",
- MTK_EINT_FUNCTION(0, 31),
- MTK_FUNCTION(0, "GPIO49"),
- MTK_FUNCTION(1, "I2S0_DATA"),
- MTK_FUNCTION(3, "PCM_TX"),
- MTK_FUNCTION(6, "AP_I2S_DO")
- ),
- MTK_PIN(
- PINCTRL_PIN(50, "GPIO50"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO50")
- ),
- MTK_PIN(
- PINCTRL_PIN(51, "GPIO51"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO51")
- ),
- MTK_PIN(
- PINCTRL_PIN(52, "GPIO52"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO52")
- ),
- MTK_PIN(
- PINCTRL_PIN(53, "SPI0_CSN"),
- "E7", "mt7623",
- MTK_EINT_FUNCTION(0, 35),
- MTK_FUNCTION(0, "GPIO53"),
- MTK_FUNCTION(1, "SPI0_CS"),
- MTK_FUNCTION(5, "PWM1")
- ),
- MTK_PIN(
- PINCTRL_PIN(54, "SPI0_CK"),
- "F7", "mt7623",
- MTK_EINT_FUNCTION(0, 36),
- MTK_FUNCTION(0, "GPIO54"),
- MTK_FUNCTION(1, "SPI0_CK")
- ),
- MTK_PIN(
- PINCTRL_PIN(55, "SPI0_MI"),
- "E6", "mt7623",
- MTK_EINT_FUNCTION(0, 37),
- MTK_FUNCTION(0, "GPIO55"),
- MTK_FUNCTION(1, "SPI0_MI"),
- MTK_FUNCTION(2, "SPI0_MO"),
- MTK_FUNCTION(3, "MSDC1_WP"),
- MTK_FUNCTION(5, "PWM2")
- ),
- MTK_PIN(
- PINCTRL_PIN(56, "SPI0_MO"),
- "G7", "mt7623",
- MTK_EINT_FUNCTION(0, 38),
- MTK_FUNCTION(0, "GPIO56"),
- MTK_FUNCTION(1, "SPI0_MO"),
- MTK_FUNCTION(2, "SPI0_MI")
- ),
- MTK_PIN(
- PINCTRL_PIN(57, "GPIO57"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO57")
- ),
- MTK_PIN(
- PINCTRL_PIN(58, "GPIO58"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO58")
- ),
- MTK_PIN(
- PINCTRL_PIN(59, "GPIO59"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO59")
- ),
- MTK_PIN(
- PINCTRL_PIN(60, "WB_RSTB"),
- "Y21", "mt7623",
- MTK_EINT_FUNCTION(0, 41),
- MTK_FUNCTION(0, "GPIO60"),
- MTK_FUNCTION(1, "WB_RSTB")
- ),
- MTK_PIN(
- PINCTRL_PIN(61, "GPIO61"),
- "AA21", "mt7623",
- MTK_EINT_FUNCTION(0, 42),
- MTK_FUNCTION(0, "GPIO61"),
- MTK_FUNCTION(1, "TEST_FD")
- ),
- MTK_PIN(
- PINCTRL_PIN(62, "GPIO62"),
- "AB22", "mt7623",
- MTK_EINT_FUNCTION(0, 43),
- MTK_FUNCTION(0, "GPIO62"),
- MTK_FUNCTION(1, "TEST_FC")
- ),
- MTK_PIN(
- PINCTRL_PIN(63, "WB_SCLK"),
- "AC23", "mt7623",
- MTK_EINT_FUNCTION(0, 44),
- MTK_FUNCTION(0, "GPIO63"),
- MTK_FUNCTION(1, "WB_SCLK")
- ),
- MTK_PIN(
- PINCTRL_PIN(64, "WB_SDATA"),
- "AB21", "mt7623",
- MTK_EINT_FUNCTION(0, 45),
- MTK_FUNCTION(0, "GPIO64"),
- MTK_FUNCTION(1, "WB_SDATA")
- ),
- MTK_PIN(
- PINCTRL_PIN(65, "WB_SEN"),
- "AB24", "mt7623",
- MTK_EINT_FUNCTION(0, 46),
- MTK_FUNCTION(0, "GPIO65"),
- MTK_FUNCTION(1, "WB_SEN")
- ),
- MTK_PIN(
- PINCTRL_PIN(66, "WB_CRTL0"),
- "AB20", "mt7623",
- MTK_EINT_FUNCTION(0, 47),
- MTK_FUNCTION(0, "GPIO66"),
- MTK_FUNCTION(1, "WB_CRTL0")
- ),
- MTK_PIN(
- PINCTRL_PIN(67, "WB_CRTL1"),
- "AC20", "mt7623",
- MTK_EINT_FUNCTION(0, 48),
- MTK_FUNCTION(0, "GPIO67"),
- MTK_FUNCTION(1, "WB_CRTL1")
- ),
- MTK_PIN(
- PINCTRL_PIN(68, "WB_CRTL2"),
- "AB19", "mt7623",
- MTK_EINT_FUNCTION(0, 49),
- MTK_FUNCTION(0, "GPIO68"),
- MTK_FUNCTION(1, "WB_CRTL2")
- ),
- MTK_PIN(
- PINCTRL_PIN(69, "WB_CRTL3"),
- "AC19", "mt7623",
- MTK_EINT_FUNCTION(0, 50),
- MTK_FUNCTION(0, "GPIO69"),
- MTK_FUNCTION(1, "WB_CRTL3")
- ),
- MTK_PIN(
- PINCTRL_PIN(70, "WB_CRTL4"),
- "AD19", "mt7623",
- MTK_EINT_FUNCTION(0, 51),
- MTK_FUNCTION(0, "GPIO70"),
- MTK_FUNCTION(1, "WB_CRTL4")
- ),
- MTK_PIN(
- PINCTRL_PIN(71, "WB_CRTL5"),
- "AE19", "mt7623",
- MTK_EINT_FUNCTION(0, 52),
- MTK_FUNCTION(0, "GPIO71"),
- MTK_FUNCTION(1, "WB_CRTL5")
- ),
- MTK_PIN(
- PINCTRL_PIN(72, "I2S0_DATA_IN"),
- "AA20", "mt7623",
- MTK_EINT_FUNCTION(0, 53),
- MTK_FUNCTION(0, "GPIO72"),
- MTK_FUNCTION(1, "I2S0_DATA_IN"),
- MTK_FUNCTION(3, "PCM_RX"),
- MTK_FUNCTION(4, "PWM0"),
- MTK_FUNCTION(5, "DISP_PWM"),
- MTK_FUNCTION(6, "AP_I2S_DI")
- ),
- MTK_PIN(
- PINCTRL_PIN(73, "I2S0_LRCK"),
- "Y20", "mt7623",
- MTK_EINT_FUNCTION(0, 54),
- MTK_FUNCTION(0, "GPIO73"),
- MTK_FUNCTION(1, "I2S0_LRCK"),
- MTK_FUNCTION(3, "PCM_SYNC"),
- MTK_FUNCTION(6, "AP_I2S_LRCK")
- ),
- MTK_PIN(
- PINCTRL_PIN(74, "I2S0_BCK"),
- "Y19", "mt7623",
- MTK_EINT_FUNCTION(0, 55),
- MTK_FUNCTION(0, "GPIO74"),
- MTK_FUNCTION(1, "I2S0_BCK"),
- MTK_FUNCTION(3, "PCM_CLK0"),
- MTK_FUNCTION(6, "AP_I2S_BCK")
- ),
- MTK_PIN(
- PINCTRL_PIN(75, "SDA0"),
- "K19", "mt7623",
- MTK_EINT_FUNCTION(0, 56),
- MTK_FUNCTION(0, "GPIO75"),
- MTK_FUNCTION(1, "SDA0")
- ),
- MTK_PIN(
- PINCTRL_PIN(76, "SCL0"),
- "K20", "mt7623",
- MTK_EINT_FUNCTION(0, 57),
- MTK_FUNCTION(0, "GPIO76"),
- MTK_FUNCTION(1, "SCL0")
- ),
- MTK_PIN(
- PINCTRL_PIN(77, "GPIO77"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO77")
- ),
- MTK_PIN(
- PINCTRL_PIN(78, "GPIO78"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO78")
- ),
- MTK_PIN(
- PINCTRL_PIN(79, "GPIO79"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO79")
- ),
- MTK_PIN(
- PINCTRL_PIN(80, "GPIO80"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO80")
- ),
- MTK_PIN(
- PINCTRL_PIN(81, "GPIO81"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO81")
- ),
- MTK_PIN(
- PINCTRL_PIN(82, "GPIO82"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO82")
- ),
- MTK_PIN(
- PINCTRL_PIN(83, "LCM_RST"),
- "V16", "mt7623",
- MTK_EINT_FUNCTION(0, 64),
- MTK_FUNCTION(0, "GPIO83"),
- MTK_FUNCTION(1, "LCM_RST")
- ),
- MTK_PIN(
- PINCTRL_PIN(84, "DSI_TE"),
- "V14", "mt7623",
- MTK_EINT_FUNCTION(0, 65),
- MTK_FUNCTION(0, "GPIO84"),
- MTK_FUNCTION(1, "DSI_TE")
- ),
- MTK_PIN(
- PINCTRL_PIN(85, "GPIO85"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO85")
- ),
- MTK_PIN(
- PINCTRL_PIN(86, "GPIO86"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO86")
- ),
- MTK_PIN(
- PINCTRL_PIN(87, "GPIO87"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO87")
- ),
- MTK_PIN(
- PINCTRL_PIN(88, "GPIO88"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO88")
- ),
- MTK_PIN(
- PINCTRL_PIN(89, "GPIO89"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO89")
- ),
- MTK_PIN(
- PINCTRL_PIN(90, "GPIO90"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO90")
- ),
- MTK_PIN(
- PINCTRL_PIN(91, "GPIO91"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO91")
- ),
- MTK_PIN(
- PINCTRL_PIN(92, "GPIO92"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO92")
- ),
- MTK_PIN(
- PINCTRL_PIN(93, "GPIO93"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO93")
- ),
- MTK_PIN(
- PINCTRL_PIN(94, "GPIO94"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO94")
- ),
- MTK_PIN(
- PINCTRL_PIN(95, "MIPI_TCN"),
- "AB14", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO95"),
- MTK_FUNCTION(1, "TCN")
- ),
- MTK_PIN(
- PINCTRL_PIN(96, "MIPI_TCP"),
- "AC14", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO96"),
- MTK_FUNCTION(1, "TCP")
- ),
- MTK_PIN(
- PINCTRL_PIN(97, "MIPI_TDN1"),
- "AE15", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO97"),
- MTK_FUNCTION(1, "TDN1")
- ),
- MTK_PIN(
- PINCTRL_PIN(98, "MIPI_TDP1"),
- "AD15", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO98"),
- MTK_FUNCTION(1, "TDP1")
- ),
- MTK_PIN(
- PINCTRL_PIN(99, "MIPI_TDN0"),
- "AB15", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO99"),
- MTK_FUNCTION(1, "TDN0")
- ),
- MTK_PIN(
- PINCTRL_PIN(100, "MIPI_TDP0"),
- "AC15", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO100"),
- MTK_FUNCTION(1, "TDP0")
- ),
- MTK_PIN(
- PINCTRL_PIN(101, "GPIO101"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO101")
- ),
- MTK_PIN(
- PINCTRL_PIN(102, "GPIO102"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO102")
- ),
- MTK_PIN(
- PINCTRL_PIN(103, "GPIO103"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO103")
- ),
- MTK_PIN(
- PINCTRL_PIN(104, "GPIO104"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO104")
- ),
- MTK_PIN(
- PINCTRL_PIN(105, "MSDC1_CMD"),
- "AD2", "mt7623",
- MTK_EINT_FUNCTION(0, 78),
- MTK_FUNCTION(0, "GPIO105"),
- MTK_FUNCTION(1, "MSDC1_CMD"),
- MTK_FUNCTION(3, "SDA1"),
- MTK_FUNCTION(6, "I2SOUT_BCK")
- ),
- MTK_PIN(
- PINCTRL_PIN(106, "MSDC1_CLK"),
- "AD3", "mt7623",
- MTK_EINT_FUNCTION(0, 79),
- MTK_FUNCTION(0, "GPIO106"),
- MTK_FUNCTION(1, "MSDC1_CLK"),
- MTK_FUNCTION(3, "SCL1"),
- MTK_FUNCTION(6, "I2SOUT_LRCK")
- ),
- MTK_PIN(
- PINCTRL_PIN(107, "MSDC1_DAT0"),
- "AE2", "mt7623",
- MTK_EINT_FUNCTION(0, 80),
- MTK_FUNCTION(0, "GPIO107"),
- MTK_FUNCTION(1, "MSDC1_DAT0"),
- MTK_FUNCTION(5, "UTXD0"),
- MTK_FUNCTION(6, "I2SOUT_DATA_OUT")
- ),
- MTK_PIN(
- PINCTRL_PIN(108, "MSDC1_DAT1"),
- "AC1", "mt7623",
- MTK_EINT_FUNCTION(0, 81),
- MTK_FUNCTION(0, "GPIO108"),
- MTK_FUNCTION(1, "MSDC1_DAT1"),
- MTK_FUNCTION(3, "PWM0"),
- MTK_FUNCTION(5, "URXD0"),
- MTK_FUNCTION(6, "PWM1")
- ),
- MTK_PIN(
- PINCTRL_PIN(109, "MSDC1_DAT2"),
- "AC3", "mt7623",
- MTK_EINT_FUNCTION(0, 82),
- MTK_FUNCTION(0, "GPIO109"),
- MTK_FUNCTION(1, "MSDC1_DAT2"),
- MTK_FUNCTION(3, "SDA2"),
- MTK_FUNCTION(5, "UTXD1"),
- MTK_FUNCTION(6, "PWM2")
- ),
- MTK_PIN(
- PINCTRL_PIN(110, "MSDC1_DAT3"),
- "AC4", "mt7623",
- MTK_EINT_FUNCTION(0, 83),
- MTK_FUNCTION(0, "GPIO110"),
- MTK_FUNCTION(1, "MSDC1_DAT3"),
- MTK_FUNCTION(3, "SCL2"),
- MTK_FUNCTION(5, "URXD1"),
- MTK_FUNCTION(6, "PWM3")
- ),
- MTK_PIN(
- PINCTRL_PIN(111, "MSDC0_DAT7"),
- "A2", "mt7623",
- MTK_EINT_FUNCTION(0, 84),
- MTK_FUNCTION(0, "GPIO111"),
- MTK_FUNCTION(1, "MSDC0_DAT7"),
- MTK_FUNCTION(4, "NLD7")
- ),
- MTK_PIN(
- PINCTRL_PIN(112, "MSDC0_DAT6"),
- "B3", "mt7623",
- MTK_EINT_FUNCTION(0, 85),
- MTK_FUNCTION(0, "GPIO112"),
- MTK_FUNCTION(1, "MSDC0_DAT6"),
- MTK_FUNCTION(4, "NLD6")
- ),
- MTK_PIN(
- PINCTRL_PIN(113, "MSDC0_DAT5"),
- "C4", "mt7623",
- MTK_EINT_FUNCTION(0, 86),
- MTK_FUNCTION(0, "GPIO113"),
- MTK_FUNCTION(1, "MSDC0_DAT5"),
- MTK_FUNCTION(4, "NLD5")
- ),
- MTK_PIN(
- PINCTRL_PIN(114, "MSDC0_DAT4"),
- "A4", "mt7623",
- MTK_EINT_FUNCTION(0, 87),
- MTK_FUNCTION(0, "GPIO114"),
- MTK_FUNCTION(1, "MSDC0_DAT4"),
- MTK_FUNCTION(4, "NLD4")
- ),
- MTK_PIN(
- PINCTRL_PIN(115, "MSDC0_RSTB"),
- "C5", "mt7623",
- MTK_EINT_FUNCTION(0, 88),
- MTK_FUNCTION(0, "GPIO115"),
- MTK_FUNCTION(1, "MSDC0_RSTB"),
- MTK_FUNCTION(4, "NLD8")
- ),
- MTK_PIN(
- PINCTRL_PIN(116, "MSDC0_CMD"),
- "D5", "mt7623",
- MTK_EINT_FUNCTION(0, 89),
- MTK_FUNCTION(0, "GPIO116"),
- MTK_FUNCTION(1, "MSDC0_CMD"),
- MTK_FUNCTION(4, "NALE")
- ),
- MTK_PIN(
- PINCTRL_PIN(117, "MSDC0_CLK"),
- "B1", "mt7623",
- MTK_EINT_FUNCTION(0, 90),
- MTK_FUNCTION(0, "GPIO117"),
- MTK_FUNCTION(1, "MSDC0_CLK"),
- MTK_FUNCTION(4, "NWEB")
- ),
- MTK_PIN(
- PINCTRL_PIN(118, "MSDC0_DAT3"),
- "D6", "mt7623",
- MTK_EINT_FUNCTION(0, 91),
- MTK_FUNCTION(0, "GPIO118"),
- MTK_FUNCTION(1, "MSDC0_DAT3"),
- MTK_FUNCTION(4, "NLD3")
- ),
- MTK_PIN(
- PINCTRL_PIN(119, "MSDC0_DAT2"),
- "B2", "mt7623",
- MTK_EINT_FUNCTION(0, 92),
- MTK_FUNCTION(0, "GPIO119"),
- MTK_FUNCTION(1, "MSDC0_DAT2"),
- MTK_FUNCTION(4, "NLD2")
- ),
- MTK_PIN(
- PINCTRL_PIN(120, "MSDC0_DAT1"),
- "A3", "mt7623",
- MTK_EINT_FUNCTION(0, 93),
- MTK_FUNCTION(0, "GPIO120"),
- MTK_FUNCTION(1, "MSDC0_DAT1"),
- MTK_FUNCTION(4, "NLD1")
- ),
- MTK_PIN(
- PINCTRL_PIN(121, "MSDC0_DAT0"),
- "B4", "mt7623",
- MTK_EINT_FUNCTION(0, 94),
- MTK_FUNCTION(0, "GPIO121"),
- MTK_FUNCTION(1, "MSDC0_DAT0"),
- MTK_FUNCTION(4, "NLD0"),
- MTK_FUNCTION(5, "WATCHDOG")
- ),
- MTK_PIN(
- PINCTRL_PIN(122, "GPIO122"),
- "H17", "mt7623",
- MTK_EINT_FUNCTION(0, 95),
- MTK_FUNCTION(0, "GPIO122"),
- MTK_FUNCTION(1, "TEST"),
- MTK_FUNCTION(4, "SDA2"),
- MTK_FUNCTION(5, "URXD0")
- ),
- MTK_PIN(
- PINCTRL_PIN(123, "GPIO123"),
- "F17", "mt7623",
- MTK_EINT_FUNCTION(0, 96),
- MTK_FUNCTION(0, "GPIO123"),
- MTK_FUNCTION(1, "TEST"),
- MTK_FUNCTION(4, "SCL2"),
- MTK_FUNCTION(5, "UTXD0")
- ),
- MTK_PIN(
- PINCTRL_PIN(124, "GPIO124"),
- "H18", "mt7623",
- MTK_EINT_FUNCTION(0, 97),
- MTK_FUNCTION(0, "GPIO124"),
- MTK_FUNCTION(1, "TEST"),
- MTK_FUNCTION(4, "SDA1"),
- MTK_FUNCTION(5, "PWM3")
- ),
- MTK_PIN(
- PINCTRL_PIN(125, "GPIO125"),
- "G17", "mt7623",
- MTK_EINT_FUNCTION(0, 98),
- MTK_FUNCTION(0, "GPIO125"),
- MTK_FUNCTION(1, "TEST"),
- MTK_FUNCTION(4, "SCL1"),
- MTK_FUNCTION(5, "PWM4")
- ),
- MTK_PIN(
- PINCTRL_PIN(126, "I2S0_MCLK"),
- "AA19", "mt7623",
- MTK_EINT_FUNCTION(0, 99),
- MTK_FUNCTION(0, "GPIO126"),
- MTK_FUNCTION(1, "I2S0_MCLK"),
- MTK_FUNCTION(6, "AP_I2S_MCLK")
- ),
- MTK_PIN(
- PINCTRL_PIN(127, "GPIO127"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO127")
- ),
- MTK_PIN(
- PINCTRL_PIN(128, "GPIO128"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO128")
- ),
- MTK_PIN(
- PINCTRL_PIN(129, "GPIO129"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO129")
- ),
- MTK_PIN(
- PINCTRL_PIN(130, "GPIO130"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO130")
- ),
- MTK_PIN(
- PINCTRL_PIN(131, "GPIO131"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO131")
- ),
- MTK_PIN(
- PINCTRL_PIN(132, "GPIO132"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO132")
- ),
- MTK_PIN(
- PINCTRL_PIN(133, "GPIO133"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO133")
- ),
- MTK_PIN(
- PINCTRL_PIN(134, "GPIO134"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO134")
- ),
- MTK_PIN(
- PINCTRL_PIN(135, "GPIO135"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO135")
- ),
- MTK_PIN(
- PINCTRL_PIN(136, "GPIO136"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO136")
- ),
- MTK_PIN(
- PINCTRL_PIN(137, "GPIO137"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO137")
- ),
- MTK_PIN(
- PINCTRL_PIN(138, "GPIO138"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO138")
- ),
- MTK_PIN(
- PINCTRL_PIN(139, "GPIO139"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO139")
- ),
- MTK_PIN(
- PINCTRL_PIN(140, "GPIO140"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO140")
- ),
- MTK_PIN(
- PINCTRL_PIN(141, "GPIO141"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO141")
- ),
- MTK_PIN(
- PINCTRL_PIN(142, "GPIO142"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO142")
- ),
- MTK_PIN(
- PINCTRL_PIN(143, "GPIO143"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO143")
- ),
- MTK_PIN(
- PINCTRL_PIN(144, "GPIO144"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO144")
- ),
- MTK_PIN(
- PINCTRL_PIN(145, "GPIO145"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO145")
- ),
- MTK_PIN(
- PINCTRL_PIN(146, "GPIO146"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO146")
- ),
- MTK_PIN(
- PINCTRL_PIN(147, "GPIO147"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO147")
- ),
- MTK_PIN(
- PINCTRL_PIN(148, "GPIO148"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO148")
- ),
- MTK_PIN(
- PINCTRL_PIN(149, "GPIO149"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO149")
- ),
- MTK_PIN(
- PINCTRL_PIN(150, "GPIO150"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO150")
- ),
- MTK_PIN(
- PINCTRL_PIN(151, "GPIO151"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO151")
- ),
- MTK_PIN(
- PINCTRL_PIN(152, "GPIO152"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO152")
- ),
- MTK_PIN(
- PINCTRL_PIN(153, "GPIO153"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO153")
- ),
- MTK_PIN(
- PINCTRL_PIN(154, "GPIO154"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO154")
- ),
- MTK_PIN(
- PINCTRL_PIN(155, "GPIO155"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO155")
- ),
- MTK_PIN(
- PINCTRL_PIN(156, "GPIO156"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO156")
- ),
- MTK_PIN(
- PINCTRL_PIN(157, "GPIO157"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO157")
- ),
- MTK_PIN(
- PINCTRL_PIN(158, "GPIO158"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO158")
- ),
- MTK_PIN(
- PINCTRL_PIN(159, "GPIO159"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO159")
- ),
- MTK_PIN(
- PINCTRL_PIN(160, "GPIO160"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO160")
- ),
- MTK_PIN(
- PINCTRL_PIN(161, "GPIO161"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO161")
- ),
- MTK_PIN(
- PINCTRL_PIN(162, "GPIO162"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO162")
- ),
- MTK_PIN(
- PINCTRL_PIN(163, "GPIO163"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO163")
- ),
- MTK_PIN(
- PINCTRL_PIN(164, "GPIO164"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO164")
- ),
- MTK_PIN(
- PINCTRL_PIN(165, "GPIO165"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO165")
- ),
- MTK_PIN(
- PINCTRL_PIN(166, "GPIO166"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO166")
- ),
- MTK_PIN(
- PINCTRL_PIN(167, "GPIO167"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO167")
- ),
- MTK_PIN(
- PINCTRL_PIN(168, "GPIO168"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO168")
- ),
- MTK_PIN(
- PINCTRL_PIN(169, "GPIO169"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO169")
- ),
- MTK_PIN(
- PINCTRL_PIN(170, "GPIO170"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO170")
- ),
- MTK_PIN(
- PINCTRL_PIN(171, "GPIO171"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO171")
- ),
- MTK_PIN(
- PINCTRL_PIN(172, "GPIO172"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO172")
- ),
- MTK_PIN(
- PINCTRL_PIN(173, "GPIO173"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO173")
- ),
- MTK_PIN(
- PINCTRL_PIN(174, "GPIO174"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO174")
- ),
- MTK_PIN(
- PINCTRL_PIN(175, "GPIO175"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO175")
- ),
- MTK_PIN(
- PINCTRL_PIN(176, "GPIO176"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO176")
- ),
- MTK_PIN(
- PINCTRL_PIN(177, "GPIO177"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO177")
- ),
- MTK_PIN(
- PINCTRL_PIN(178, "GPIO178"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO178")
- ),
- MTK_PIN(
- PINCTRL_PIN(179, "GPIO179"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO179")
- ),
- MTK_PIN(
- PINCTRL_PIN(180, "GPIO180"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO180")
- ),
- MTK_PIN(
- PINCTRL_PIN(181, "GPIO181"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO181")
- ),
- MTK_PIN(
- PINCTRL_PIN(182, "GPIO182"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO182")
- ),
- MTK_PIN(
- PINCTRL_PIN(183, "GPIO183"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO183")
- ),
- MTK_PIN(
- PINCTRL_PIN(184, "GPIO184"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO184")
- ),
- MTK_PIN(
- PINCTRL_PIN(185, "GPIO185"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO185")
- ),
- MTK_PIN(
- PINCTRL_PIN(186, "GPIO186"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO186")
- ),
- MTK_PIN(
- PINCTRL_PIN(187, "GPIO187"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO187")
- ),
- MTK_PIN(
- PINCTRL_PIN(188, "GPIO188"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO188")
- ),
- MTK_PIN(
- PINCTRL_PIN(189, "GPIO189"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO189")
- ),
- MTK_PIN(
- PINCTRL_PIN(190, "GPIO190"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO190")
- ),
- MTK_PIN(
- PINCTRL_PIN(191, "GPIO191"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO191")
- ),
- MTK_PIN(
- PINCTRL_PIN(192, "GPIO192"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO192")
- ),
- MTK_PIN(
- PINCTRL_PIN(193, "GPIO193"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO193")
- ),
- MTK_PIN(
- PINCTRL_PIN(194, "GPIO194"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO194")
- ),
- MTK_PIN(
- PINCTRL_PIN(195, "GPIO195"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO195")
- ),
- MTK_PIN(
- PINCTRL_PIN(196, "GPIO196"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO196")
- ),
- MTK_PIN(
- PINCTRL_PIN(197, "GPIO197"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO197")
- ),
- MTK_PIN(
- PINCTRL_PIN(198, "GPIO198"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO198")
- ),
- MTK_PIN(
- PINCTRL_PIN(199, "SPI1_CK"),
- "E19", "mt7623",
- MTK_EINT_FUNCTION(0, 111),
- MTK_FUNCTION(0, "GPIO199"),
- MTK_FUNCTION(1, "SPI1_CK")
- ),
- MTK_PIN(
- PINCTRL_PIN(200, "URXD2"),
- "K18", "mt7623",
- MTK_EINT_FUNCTION(0, 112),
- MTK_FUNCTION(0, "GPIO200"),
- MTK_FUNCTION(6, "URXD2")
- ),
- MTK_PIN(
- PINCTRL_PIN(201, "UTXD2"),
- "L18", "mt7623",
- MTK_EINT_FUNCTION(0, 113),
- MTK_FUNCTION(0, "GPIO201"),
- MTK_FUNCTION(6, "UTXD2")
- ),
- MTK_PIN(
- PINCTRL_PIN(202, "GPIO202"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO202")
- ),
- MTK_PIN(
- PINCTRL_PIN(203, "PWM0"),
- "AA16", "mt7623",
- MTK_EINT_FUNCTION(0, 115),
- MTK_FUNCTION(0, "GPIO203"),
- MTK_FUNCTION(1, "PWM0"),
- MTK_FUNCTION(2, "DISP_PWM")
- ),
- MTK_PIN(
- PINCTRL_PIN(204, "PWM1"),
- "Y16", "mt7623",
- MTK_EINT_FUNCTION(0, 116),
- MTK_FUNCTION(0, "GPIO204"),
- MTK_FUNCTION(1, "PWM1")
- ),
- MTK_PIN(
- PINCTRL_PIN(205, "PWM2"),
- "AA15", "mt7623",
- MTK_EINT_FUNCTION(0, 117),
- MTK_FUNCTION(0, "GPIO205"),
- MTK_FUNCTION(1, "PWM2")
- ),
- MTK_PIN(
- PINCTRL_PIN(206, "PWM3"),
- "AA17", "mt7623",
- MTK_EINT_FUNCTION(0, 118),
- MTK_FUNCTION(0, "GPIO206"),
- MTK_FUNCTION(1, "PWM3")
- ),
- MTK_PIN(
- PINCTRL_PIN(207, "PWM4"),
- "Y15", "mt7623",
- MTK_EINT_FUNCTION(0, 119),
- MTK_FUNCTION(0, "GPIO207"),
- MTK_FUNCTION(1, "PWM4")
- ),
- MTK_PIN(
- PINCTRL_PIN(208, "AUD_EXT_CK1"),
- "W14", "mt7623",
- MTK_EINT_FUNCTION(0, 120),
- MTK_FUNCTION(0, "GPIO208"),
- MTK_FUNCTION(1, "AUD_EXT_CK1"),
- MTK_FUNCTION(2, "PWM0"),
- MTK_FUNCTION(3, "PCIE0_PERST_N"),
- MTK_FUNCTION(5, "DISP_PWM")
- ),
- MTK_PIN(
- PINCTRL_PIN(209, "AUD_EXT_CK2"),
- "V15", "mt7623",
- MTK_EINT_FUNCTION(0, 121),
- MTK_FUNCTION(0, "GPIO209"),
- MTK_FUNCTION(1, "AUD_EXT_CK2"),
- MTK_FUNCTION(2, "MSDC1_WP"),
- MTK_FUNCTION(3, "PCIE1_PERST_N"),
- MTK_FUNCTION(5, "PWM1")
- ),
- MTK_PIN(
- PINCTRL_PIN(210, "GPIO210"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO210")
- ),
- MTK_PIN(
- PINCTRL_PIN(211, "GPIO211"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO211")
- ),
- MTK_PIN(
- PINCTRL_PIN(212, "GPIO212"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO212")
- ),
- MTK_PIN(
- PINCTRL_PIN(213, "GPIO213"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO213")
- ),
- MTK_PIN(
- PINCTRL_PIN(214, "GPIO214"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO214")
- ),
- MTK_PIN(
- PINCTRL_PIN(215, "GPIO215"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO215")
- ),
- MTK_PIN(
- PINCTRL_PIN(216, "GPIO216"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO216")
- ),
- MTK_PIN(
- PINCTRL_PIN(217, "GPIO217"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO217")
- ),
- MTK_PIN(
- PINCTRL_PIN(218, "GPIO218"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO218")
- ),
- MTK_PIN(
- PINCTRL_PIN(219, "GPIO219"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO219")
- ),
- MTK_PIN(
- PINCTRL_PIN(220, "GPIO220"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO220")
- ),
- MTK_PIN(
- PINCTRL_PIN(221, "GPIO221"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO221")
- ),
- MTK_PIN(
- PINCTRL_PIN(222, "GPIO222"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO222")
- ),
- MTK_PIN(
- PINCTRL_PIN(223, "GPIO223"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO223")
- ),
- MTK_PIN(
- PINCTRL_PIN(224, "GPIO224"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO224")
- ),
- MTK_PIN(
- PINCTRL_PIN(225, "GPIO225"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO225")
- ),
- MTK_PIN(
- PINCTRL_PIN(226, "GPIO226"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO226")
- ),
- MTK_PIN(
- PINCTRL_PIN(227, "GPIO227"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO227")
- ),
- MTK_PIN(
- PINCTRL_PIN(228, "GPIO228"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO228")
- ),
- MTK_PIN(
- PINCTRL_PIN(229, "GPIO229"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO229")
- ),
- MTK_PIN(
- PINCTRL_PIN(230, "GPIO230"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO230")
- ),
- MTK_PIN(
- PINCTRL_PIN(231, "GPIO231"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO231")
- ),
- MTK_PIN(
- PINCTRL_PIN(232, "GPIO232"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO232")
- ),
- MTK_PIN(
- PINCTRL_PIN(233, "GPIO233"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO233")
- ),
- MTK_PIN(
- PINCTRL_PIN(234, "GPIO234"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO234")
- ),
- MTK_PIN(
- PINCTRL_PIN(235, "GPIO235"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO235")
- ),
- MTK_PIN(
- PINCTRL_PIN(236, "EXT_SDIO3"),
- "A8", "mt7623",
- MTK_EINT_FUNCTION(0, 122),
- MTK_FUNCTION(0, "GPIO236"),
- MTK_FUNCTION(1, "EXT_SDIO3"),
- MTK_FUNCTION(2, "IDDIG")
- ),
- MTK_PIN(
- PINCTRL_PIN(237, "EXT_SDIO2"),
- "D8", "mt7623",
- MTK_EINT_FUNCTION(0, 123),
- MTK_FUNCTION(0, "GPIO237"),
- MTK_FUNCTION(1, "EXT_SDIO2"),
- MTK_FUNCTION(2, "DRV_VBUS")
- ),
- MTK_PIN(
- PINCTRL_PIN(238, "EXT_SDIO1"),
- "D9", "mt7623",
- MTK_EINT_FUNCTION(0, 124),
- MTK_FUNCTION(0, "GPIO238"),
- MTK_FUNCTION(1, "EXT_SDIO1")
- ),
- MTK_PIN(
- PINCTRL_PIN(239, "EXT_SDIO0"),
- "B8", "mt7623",
- MTK_EINT_FUNCTION(0, 125),
- MTK_FUNCTION(0, "GPIO239"),
- MTK_FUNCTION(1, "EXT_SDIO0")
- ),
- MTK_PIN(
- PINCTRL_PIN(240, "EXT_XCS"),
- "C9", "mt7623",
- MTK_EINT_FUNCTION(0, 126),
- MTK_FUNCTION(0, "GPIO240"),
- MTK_FUNCTION(1, "EXT_XCS")
- ),
- MTK_PIN(
- PINCTRL_PIN(241, "EXT_SCK"),
- "C8", "mt7623",
- MTK_EINT_FUNCTION(0, 127),
- MTK_FUNCTION(0, "GPIO241"),
- MTK_FUNCTION(1, "EXT_SCK")
- ),
- MTK_PIN(
- PINCTRL_PIN(242, "URTS2"),
- "G18", "mt7623",
- MTK_EINT_FUNCTION(0, 128),
- MTK_FUNCTION(0, "GPIO242"),
- MTK_FUNCTION(1, "URTS2"),
- MTK_FUNCTION(2, "UTXD3"),
- MTK_FUNCTION(3, "URXD3"),
- MTK_FUNCTION(4, "SCL1")
- ),
- MTK_PIN(
- PINCTRL_PIN(243, "UCTS2"),
- "H19", "mt7623",
- MTK_EINT_FUNCTION(0, 129),
- MTK_FUNCTION(0, "GPIO243"),
- MTK_FUNCTION(1, "UCTS2"),
- MTK_FUNCTION(2, "URXD3"),
- MTK_FUNCTION(3, "UTXD3"),
- MTK_FUNCTION(4, "SDA1")
- ),
- MTK_PIN(
- PINCTRL_PIN(244, "GPIO244"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO244")
- ),
- MTK_PIN(
- PINCTRL_PIN(245, "GPIO245"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO245")
- ),
- MTK_PIN(
- PINCTRL_PIN(246, "GPIO246"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO246")
- ),
- MTK_PIN(
- PINCTRL_PIN(247, "GPIO247"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO247")
- ),
- MTK_PIN(
- PINCTRL_PIN(248, "GPIO248"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO248")
- ),
- MTK_PIN(
- PINCTRL_PIN(249, "GPIO249"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO249")
- ),
- MTK_PIN(
- PINCTRL_PIN(250, "GPIO250"),
- "A15", "mt7623",
- MTK_EINT_FUNCTION(0, 135),
- MTK_FUNCTION(0, "GPIO250"),
- MTK_FUNCTION(1, "TEST_MD7"),
- MTK_FUNCTION(6, "PCIE0_CLKREQ_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(251, "GPIO251"),
- "B15", "mt7623",
- MTK_EINT_FUNCTION(0, 136),
- MTK_FUNCTION(0, "GPIO251"),
- MTK_FUNCTION(1, "TEST_MD6"),
- MTK_FUNCTION(6, "PCIE0_WAKE_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(252, "GPIO252"),
- "C16", "mt7623",
- MTK_EINT_FUNCTION(0, 137),
- MTK_FUNCTION(0, "GPIO252"),
- MTK_FUNCTION(1, "TEST_MD5"),
- MTK_FUNCTION(6, "PCIE1_CLKREQ_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(253, "GPIO253"),
- "D17", "mt7623",
- MTK_EINT_FUNCTION(0, 138),
- MTK_FUNCTION(0, "GPIO253"),
- MTK_FUNCTION(1, "TEST_MD4"),
- MTK_FUNCTION(6, "PCIE1_WAKE_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(254, "GPIO254"),
- "D16", "mt7623",
- MTK_EINT_FUNCTION(0, 139),
- MTK_FUNCTION(0, "GPIO254"),
- MTK_FUNCTION(1, "TEST_MD3"),
- MTK_FUNCTION(6, "PCIE2_CLKREQ_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(255, "GPIO255"),
- "C17", "mt7623",
- MTK_EINT_FUNCTION(0, 140),
- MTK_FUNCTION(0, "GPIO255"),
- MTK_FUNCTION(1, "TEST_MD2"),
- MTK_FUNCTION(6, "PCIE2_WAKE_N")
- ),
- MTK_PIN(
- PINCTRL_PIN(256, "GPIO256"),
- "B17", "mt7623",
- MTK_EINT_FUNCTION(0, 141),
- MTK_FUNCTION(0, "GPIO256"),
- MTK_FUNCTION(1, "TEST_MD1")
- ),
- MTK_PIN(
- PINCTRL_PIN(257, "GPIO257"),
- "C15", "mt7623",
- MTK_EINT_FUNCTION(0, 142),
- MTK_FUNCTION(0, "GPIO257"),
- MTK_FUNCTION(1, "TEST_MD0")
- ),
- MTK_PIN(
- PINCTRL_PIN(258, "GPIO258"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO258")
- ),
- MTK_PIN(
- PINCTRL_PIN(259, "GPIO259"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO259")
- ),
- MTK_PIN(
- PINCTRL_PIN(260, "GPIO260"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO260")
- ),
- MTK_PIN(
- PINCTRL_PIN(261, "MSDC1_INS"),
- "AD1", "mt7623",
- MTK_EINT_FUNCTION(0, 146),
- MTK_FUNCTION(0, "GPIO261"),
- MTK_FUNCTION(1, "MSDC1_INS")
- ),
- MTK_PIN(
- PINCTRL_PIN(262, "G2_TXEN"),
- "A23", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO262"),
- MTK_FUNCTION(1, "G2_TXEN")
- ),
- MTK_PIN(
- PINCTRL_PIN(263, "G2_TXD3"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO263"),
- MTK_FUNCTION(1, "G2_TXD3")
- ),
- MTK_PIN(
- PINCTRL_PIN(264, "G2_TXD2"),
- "C24", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO264"),
- MTK_FUNCTION(1, "G2_TXD2")
- ),
- MTK_PIN(
- PINCTRL_PIN(265, "G2_TXD1"),
- "B25", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO265"),
- MTK_FUNCTION(1, "G2_TXD1")
- ),
- MTK_PIN(
- PINCTRL_PIN(266, "G2_TXD0"),
- "A24", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO266"),
- MTK_FUNCTION(1, "G2_TXD0")
- ),
- MTK_PIN(
- PINCTRL_PIN(267, "G2_TXCLK"),
- "C23", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO267"),
- MTK_FUNCTION(1, "G2_TXC")
- ),
- MTK_PIN(
- PINCTRL_PIN(268, "G2_RXCLK"),
- "B23", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO268"),
- MTK_FUNCTION(1, "G2_RXC")
- ),
- MTK_PIN(
- PINCTRL_PIN(269, "G2_RXD0"),
- "D21", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO269"),
- MTK_FUNCTION(1, "G2_RXD0")
- ),
- MTK_PIN(
- PINCTRL_PIN(270, "G2_RXD1"),
- "B22", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO270"),
- MTK_FUNCTION(1, "G2_RXD1")
- ),
- MTK_PIN(
- PINCTRL_PIN(271, "G2_RXD2"),
- "A22", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO271"),
- MTK_FUNCTION(1, "G2_RXD2")
- ),
- MTK_PIN(
- PINCTRL_PIN(272, "G2_RXD3"),
- "C22", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO272"),
- MTK_FUNCTION(1, "G2_RXD3")
- ),
- MTK_PIN(
- PINCTRL_PIN(273, "GPIO273"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO273")
- ),
- MTK_PIN(
- PINCTRL_PIN(274, "G2_RXDV"),
- "C21", "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO274"),
- MTK_FUNCTION(1, "G2_RXDV")
- ),
- MTK_PIN(
- PINCTRL_PIN(275, "G2_MDC"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO275"),
- MTK_FUNCTION(1, "MDC")
- ),
- MTK_PIN(
- PINCTRL_PIN(276, "G2_MDIO"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO276"),
- MTK_FUNCTION(1, "MDIO")
- ),
- MTK_PIN(
- PINCTRL_PIN(277, "GPIO277"),
- NULL, "mt7623",
- MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
- MTK_FUNCTION(0, "GPIO277")
- ),
- MTK_PIN(
- PINCTRL_PIN(278, "JTAG_RESET"),
- "H20", "mt7623",
- MTK_EINT_FUNCTION(0, 147),
- MTK_FUNCTION(0, "GPIO278"),
- MTK_FUNCTION(1, "JTAG_RESET")
- ),
-};
-
-#endif /* __PINCTRL_MTK_MT7623_H */
--
1.9.1
^ permalink raw reply related
* [PATCH v2 25/30] arm: dts: mt7623: rename mt7623-evb.dts to arch/arm/boot/dts/mt7623n-rfb.dtsi
From: Sean Wang @ 2017-05-01 7:06 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170428203025.gdrtbudfzwy5z4h5@rob-hp-laptop>
On Fri, 2017-04-28 at 15:30 -0500, Rob Herring wrote:
> On Wed, Apr 26, 2017 at 05:26:09PM +0800, sean.wang at mediatek.com wrote:
> > From: Sean Wang <sean.wang@mediatek.com>
> >
> > There are 2 versions of the SoC. MT7623N is almost identical to MT7623A
> > but has some additional multimedia features. The reference boards are
> > available as NAND or MMC and might have a different ethernet setup. In
> > order to reduce the duplication of devicetree code we add an intermediate
> > dtsi file for these reference boards. Additionally Mediatek pointed out,
> > that the EVB is yet another board and the board in question is infact the
> > RFB. Take this into account while renaming the files.
>
> You are breaking compatibility with existing DTs. Just document which
> flavor you want "mediatek,mt7623" to refer to and add the new one. Or
> just add 2 new strings but keep the old one.
>
Hi Rob,
really appreciate your patient guidance.
I prefer to using the way one you suggest: the old one is kept and
refers to mt7623n SoC and new one will be added for mt7623a Soc.
Sean
> >
> > Signed-off-by: John Crispin <john@phrozen.org>
> > Signed-off-by: Sean Wang <sean.wang@mediatek.com>
> >
> > ---
> > Documentation/devicetree/bindings/arm/mediatek.txt | 6 ++--
> > arch/arm/boot/dts/Makefile | 2 +-
> > arch/arm/boot/dts/mt7623-evb.dts | 33 ----------------------
> > arch/arm/boot/dts/mt7623n-rfb-nand.dts | 21 ++++++++++++++
> > arch/arm/boot/dts/mt7623n-rfb.dtsi | 29 +++++++++++++++++++
> > arch/arm/mach-mediatek/mediatek.c | 4 +--
> > arch/arm/mach-mediatek/platsmp.c | 2 +-
> > 7 files changed, 57 insertions(+), 40 deletions(-)
> > delete mode 100644 arch/arm/boot/dts/mt7623-evb.dts
> > create mode 100644 arch/arm/boot/dts/mt7623n-rfb-nand.dts
> > create mode 100644 arch/arm/boot/dts/mt7623n-rfb.dtsi
> >
> > diff --git a/Documentation/devicetree/bindings/arm/mediatek.txt b/Documentation/devicetree/bindings/arm/mediatek.txt
> > index c860b24..7f7c804 100644
> > --- a/Documentation/devicetree/bindings/arm/mediatek.txt
> > +++ b/Documentation/devicetree/bindings/arm/mediatek.txt
> > @@ -12,7 +12,7 @@ compatible: Must contain one of
> > "mediatek,mt6592"
> > "mediatek,mt6755"
> > "mediatek,mt6795"
> > - "mediatek,mt7623"
> > + "mediatek,mt7623n"
> > "mediatek,mt8127"
> > "mediatek,mt8135"
> > "mediatek,mt8173"
^ permalink raw reply
* [PATCH v2 29/30] dt-bindings: add vendor prefix for bananapi
From: Sean Wang @ 2017-05-01 6:58 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170428203727.m6jm5w6nb2iirxih@rob-hp-laptop>
On Fri, 2017-04-28 at 15:37 -0500, Rob Herring wrote:
> On Wed, Apr 26, 2017 at 05:26:13PM +0800, sean.wang at mediatek.com wrote:
> > From: Sean Wang <sean.wang@mediatek.com>
> >
> > Banana Pi team in Sinovoip Co., Limited which are dedicated to
> > design and manufacture open hardware product.
> >
> > Website: http://www.banana-pi.org/
> >
> > Signed-off-by: Sean Wang <sean.wang@mediatek.com>
> > ---
> > Documentation/devicetree/bindings/vendor-prefixes.txt | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
> > index ec0bfb9..8ca0f3c 100644
> > --- a/Documentation/devicetree/bindings/vendor-prefixes.txt
> > +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
> > @@ -44,6 +44,7 @@ avia avia semiconductor
> > avic Shanghai AVIC Optoelectronics Co., Ltd.
> > axentia Axentia Technologies AB
> > axis Axis Communications AB
> > +bananapi Banana Pi SINOVOP CO., LIMITED
>
> s/SINOVOP/SINOVOIP/
Hi Rob,
thanks for your careful reviewing , i will correct it in the next
version.
BTW, Could those related dts changes go through your tree if everything
looks good? Because I find Matthias have been inactive for a while and
the latest branch in his tree seems still staying on 4.10.
Sean
>
> > boe BOE Technology Group Co., Ltd.
> > bosch Bosch Sensortec GmbH
> > boundary Boundary Devices Inc.
> > --
> > 1.9.1
> >
^ permalink raw reply
* [PATCH v2 02/30] pinctrl: mediatek: reuse pinctrl driver for mt7623
From: Sean Wang @ 2017-05-01 6:44 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CACRpkdbR-k3wgD+7KoV6d7yg1uduXpa9MO0+woEibQYPeYzgYw@mail.gmail.com>
On Fri, 2017-04-28 at 10:01 +0200, Linus Walleij wrote:
> On Wed, Apr 26, 2017 at 11:25 AM, <sean.wang@mediatek.com> wrote:
>
> > From: Sean Wang <sean.wang@mediatek.com>
> >
> > mt7623 pinctrl driver can be compatible with mt2701 one,
> > so the patch reuses the driver and deletes those redundant
> > ones.
> >
> > Cc: John Crispin <john@phrozen.org>
> > Signed-off-by: Sean Wang <sean.wang@mediatek.com>
>
> Partly correct.
>
> > "mediatek,mt6397-pinctrl", compatible with mt6397 pinctrl.
> > - "mediatek,mt7623-pinctrl", compatible with mt7623 pinctrl.
>
> NO don't do this.
>
> "compatible" means exactly this: this hardware is compatible with
> this driver. That is why we have it!
>
> So instead of mt7623 pretending to be mt2701, let the mt2701 driver
> list that it is compatible with mt7623, simple.
>
> So patch pinctrl-mt2701.c mt2701_pctrl_match[] instead.
>
Hi Linus,
really appreciate your clear guidance and reviewing on this
I will fix it up in the next version
Sean
> Yours,
> Linus Walleij
^ permalink raw reply
* [PATCH 2/2] dmaengine: Add STM32 MDMA driver
From: Vinod Koul @ 2017-05-01 6:12 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <d1d92f79-ce3c-e057-7f47-1fd5e42fa5dc@st.com>
On Wed, Apr 26, 2017 at 12:35:46PM +0000, Pierre Yves MORDRET wrote:
> On 04/06/2017 09:08 AM, Vinod Koul wrote:
> >> +static int stm32_mdma_get_width(struct stm32_mdma_chan *chan,
> >> + enum dma_slave_buswidth width)
> >> +{
> >> + switch (width) {
> >> + case DMA_SLAVE_BUSWIDTH_1_BYTE:
> >> + return STM32_MDMA_BYTE;
> >> + case DMA_SLAVE_BUSWIDTH_2_BYTES:
> >> + return STM32_MDMA_HALF_WORD;
> >> + case DMA_SLAVE_BUSWIDTH_4_BYTES:
> >> + return STM32_MDMA_WORD;
> >> + case DMA_SLAVE_BUSWIDTH_8_BYTES:
> >> + return STM32_MDMA_DOUBLE_WORD;
> >
> > IIUC we can do this with ffs()
>
> I don't believe we can do that. This function translates DMA_SLAVE enum
> into internal register representation.
Yes and internal represenation seemed to be ffs() of dmanegine one.
> >> +subsys_initcall(stm32_mdma_init);
> >
> > why subsys?
> >
>
> subsys_initcall level is to ensure MDMA is going to be probed before its
> clients
Please use deffered probe approach for that
--
~Vinod
^ permalink raw reply
* [PATCH 2/5] dmaengine: Add STM32 DMAMUX driver
From: Vinod Koul @ 2017-05-01 6:03 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <d18cb12d-1fd1-39d2-501a-18c000b9982e@st.com>
On Wed, Apr 26, 2017 at 09:17:37AM +0000, Pierre Yves MORDRET wrote:
> >> +
> >> + ret = of_property_read_u32(node, "dma-channels",
> >> + &dmamux->dmamux_channels);
> >
> > can we have property_xxx calls alone, that way driver is not strictly
> > dependent on of
>
> Can you please explain what you are asking for ? Not sure to understand
> correctly.
Use device_property_read_u32() which is a generic property API.
> >> +static int __init stm32_dmamux_init(void)
> >> +{
> >> + return platform_driver_register(&stm32_dmamux_driver);
> >> +}
> >> +arch_initcall(stm32_dmamux_init);
> >
> > why not module init, wouldnt defer probe solve the dependencies
> >
>
> The reason behind many devices (device_initcall level) rely on DMAs. If
> init is deferred DMAMUX driver will be probed twice if dependents rely
> on it. This sounds not a good call. This explains arch_initcall level.
Why not deferred probe was introduced to help with dependencies...
--
~Vinod
^ permalink raw reply
* [PATCH 0/2] arm64: Workaround for Thunder KVM hang issues.
From: Jon Masters @ 2017-05-01 4:53 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170424184250.667-1-david.daney@cavium.com>
On 04/24/2017 02:42 PM, David Daney wrote:
> We have discovered in rare circumstances, guest execution may result
> in host not receiving one or more interrupts. This does not otherwise
> affect guest or host execution and/or isolation.
Thanks David. I have tested these and can confirm that a 4.11 machine
previously experiencing an issue has stable VMs with these.
Tested-by: Jon Masters <jcm@redhat.com>
^ permalink raw reply
* [PATCH] [media] pxa_camera: fix module remove codepath for v4l2 clock
From: Petr Cvek @ 2017-05-01 4:44 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <87a87111s6.fsf@belgarion.home>
Dne 28.4.2017 v 08:31 Robert Jarzmik napsal(a):
> Petr Cvek <petr.cvek@tul.cz> writes:
>
>> I will post some other bugfixes (and feature adding) for pxa_camera soon. Do you wish to be CC'd?
>>
>> P.S. Who is the the maintainer of pxa_camera BTW? Still Guennadi Liakhovetski?
> Euh no, that's me.
OK ... so when I remove the ov9640 driver from soc_camera (palmz72 and magician used it with soc_camera+pxa_camera) does that mean I will be its maintainer?
Petr
^ permalink raw reply
* [PATCH v2 2/2] ARM: sun8i: a83t: Replace underscores with hyphens in pinmux node names
From: Chen-Yu Tsai @ 2017-05-01 3:14 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20170501031408.10469-1-wens@csie.org>
We should use hyphens and not underscores in device node names.
Replace the ones that were just added.
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
arch/arm/boot/dts/sun8i-a83t.dtsi | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/sun8i-a83t.dtsi b/arch/arm/boot/dts/sun8i-a83t.dtsi
index aecde8be53bc..c0a1e4f74b89 100644
--- a/arch/arm/boot/dts/sun8i-a83t.dtsi
+++ b/arch/arm/boot/dts/sun8i-a83t.dtsi
@@ -174,7 +174,7 @@
#interrupt-cells = <3>;
#gpio-cells = <3>;
- mmc0_pins: mmc0_pins {
+ mmc0_pins: mmc0-pins {
pins = "PF0", "PF1", "PF2",
"PF3", "PF4", "PF5";
function = "mmc0";
@@ -182,12 +182,12 @@
bias-pull-up;
};
- uart0_pb_pins: uart0_pb_pins {
+ uart0_pb_pins: uart0-pb-pins {
pins = "PB9", "PB10";
function = "uart0";
};
- uart0_pf_pins: uart0_pf_pins {
+ uart0_pf_pins: uart0-pf-pins {
pins = "PF2", "PF4";
function = "uart0";
};
--
2.11.0
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox