summaryrefslogtreecommitdiff
path: root/drivers/pinctrl
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/Kconfig4
-rw-r--r--drivers/pinctrl/actions/pinctrl-owl.c8
-rw-r--r--drivers/pinctrl/bcm/pinctrl-bcm2835.c9
-rw-r--r--drivers/pinctrl/bcm/pinctrl-iproc-gpio.c6
-rw-r--r--drivers/pinctrl/bcm/pinctrl-nsp-gpio.c6
-rw-r--r--drivers/pinctrl/core.c29
-rw-r--r--drivers/pinctrl/freescale/Kconfig11
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx-scmi.c4
-rw-r--r--drivers/pinctrl/mediatek/Kconfig22
-rw-r--r--drivers/pinctrl/mediatek/Makefile2
-rw-r--r--drivers/pinctrl/mediatek/mtk-eint.c35
-rw-r--r--drivers/pinctrl/mediatek/mtk-eint.h7
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-airoha.c19
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-moore.c18
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-mt6893.c879
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-mt8196.c1860
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c9
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-mtk-common.c15
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-mtk-mt6893.h2283
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-mtk-mt8196.h3085
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-paris.c29
-rw-r--r--drivers/pinctrl/meson/Kconfig24
-rw-r--r--drivers/pinctrl/meson/pinctrl-amlogic-a4.c22
-rw-r--r--drivers/pinctrl/meson/pinctrl-meson.c6
-rw-r--r--drivers/pinctrl/mvebu/pinctrl-armada-37xx.c43
-rw-r--r--drivers/pinctrl/nomadik/Kconfig6
-rw-r--r--drivers/pinctrl/nomadik/pinctrl-abx500.c12
-rw-r--r--drivers/pinctrl/pinconf.h17
-rw-r--r--drivers/pinctrl/pinctrl-amd.c56
-rw-r--r--drivers/pinctrl/pinctrl-apple-gpio.c30
-rw-r--r--drivers/pinctrl/pinctrl-at91-pio4.c20
-rw-r--r--drivers/pinctrl/pinctrl-at91.c21
-rw-r--r--drivers/pinctrl/pinctrl-axp209.c35
-rw-r--r--drivers/pinctrl/pinctrl-cy8c95x0.c17
-rw-r--r--drivers/pinctrl/pinctrl-ingenic.c8
-rw-r--r--drivers/pinctrl/pinctrl-keembay.c2
-rw-r--r--drivers/pinctrl/pinctrl-mcp23s08.c8
-rw-r--r--drivers/pinctrl/pinctrl-microchip-sgpio.c8
-rw-r--r--drivers/pinctrl/pinctrl-ocelot.c17
-rw-r--r--drivers/pinctrl/pinctrl-pistachio.c8
-rw-r--r--drivers/pinctrl/pinctrl-rk805.c26
-rw-r--r--drivers/pinctrl/pinctrl-scmi.c1
-rw-r--r--drivers/pinctrl/pinctrl-single.c9
-rw-r--r--drivers/pinctrl/pinctrl-stmfx.c13
-rw-r--r--drivers/pinctrl/pinctrl-sx150x.c23
-rw-r--r--drivers/pinctrl/qcom/pinctrl-lpass-lpi.c6
-rw-r--r--drivers/pinctrl/qcom/pinctrl-msm.c6
-rw-r--r--drivers/pinctrl/qcom/pinctrl-qcm2290.c70
-rw-r--r--drivers/pinctrl/qcom/pinctrl-qcs615.c2
-rw-r--r--drivers/pinctrl/qcom/pinctrl-qcs8300.c2
-rw-r--r--drivers/pinctrl/qcom/pinctrl-spmi-gpio.c6
-rw-r--r--drivers/pinctrl/qcom/pinctrl-spmi-mpp.c6
-rw-r--r--drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c7
-rw-r--r--drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c7
-rw-r--r--drivers/pinctrl/qcom/tlmm-test.c1
-rw-r--r--drivers/pinctrl/renesas/Kconfig1
-rw-r--r--drivers/pinctrl/renesas/pinctrl-rzg2l.c299
-rw-r--r--drivers/pinctrl/samsung/pinctrl-exynos-arm64.c52
-rw-r--r--drivers/pinctrl/samsung/pinctrl-exynos.c294
-rw-r--r--drivers/pinctrl/samsung/pinctrl-exynos.h28
-rw-r--r--drivers/pinctrl/samsung/pinctrl-samsung.c34
-rw-r--r--drivers/pinctrl/samsung/pinctrl-samsung.h8
-rw-r--r--drivers/pinctrl/spacemit/pinctrl-k1.c10
-rw-r--r--drivers/pinctrl/stm32/pinctrl-stm32.c7
-rw-r--r--drivers/pinctrl/sunxi/pinctrl-sunxi.c7
-rw-r--r--drivers/pinctrl/uniphier/Kconfig2
66 files changed, 9027 insertions, 600 deletions
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 464cc9aca157..33db9104df17 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -103,12 +103,10 @@ config PINCTRL_AS3722
config PINCTRL_AT91
bool "AT91 pinctrl driver"
- depends on OF
- depends on ARCH_AT91
+ depends on (OF && ARCH_AT91) || COMPILE_TEST
select PINMUX
select PINCONF
select GPIOLIB
- select OF_GPIO
select GPIOLIB_IRQCHIP
help
Say Y here to enable the at91 pinctrl driver
diff --git a/drivers/pinctrl/actions/pinctrl-owl.c b/drivers/pinctrl/actions/pinctrl-owl.c
index d49b77dcfcff..86f3d5c69e36 100644
--- a/drivers/pinctrl/actions/pinctrl-owl.c
+++ b/drivers/pinctrl/actions/pinctrl-owl.c
@@ -598,7 +598,7 @@ static int owl_gpio_get(struct gpio_chip *chip, unsigned int offset)
return !!(val & BIT(offset));
}
-static void owl_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
+static int owl_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
{
struct owl_pinctrl *pctrl = gpiochip_get_data(chip);
const struct owl_gpio_port *port;
@@ -607,13 +607,15 @@ static void owl_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
port = owl_gpio_get_port(pctrl, &offset);
if (WARN_ON(port == NULL))
- return;
+ return -ENODEV;
gpio_base = pctrl->base + port->offset;
raw_spin_lock_irqsave(&pctrl->lock, flags);
owl_gpio_update_reg(gpio_base + port->dat, offset, value);
raw_spin_unlock_irqrestore(&pctrl->lock, flags);
+
+ return 0;
}
static int owl_gpio_direction_input(struct gpio_chip *chip, unsigned int offset)
@@ -960,7 +962,7 @@ int owl_pinctrl_probe(struct platform_device *pdev,
pctrl->chip.direction_input = owl_gpio_direction_input;
pctrl->chip.direction_output = owl_gpio_direction_output;
pctrl->chip.get = owl_gpio_get;
- pctrl->chip.set = owl_gpio_set;
+ pctrl->chip.set_rv = owl_gpio_set;
pctrl->chip.request = owl_gpio_request;
pctrl->chip.free = owl_gpio_free;
diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
index eaeec096bc9a..826827800474 100644
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
@@ -356,11 +356,14 @@ static int bcm2835_gpio_get_direction(struct gpio_chip *chip, unsigned int offse
return GPIO_LINE_DIRECTION_IN;
}
-static void bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int bcm2835_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct bcm2835_pinctrl *pc = gpiochip_get_data(chip);
bcm2835_gpio_set_bit(pc, value ? GPSET0 : GPCLR0, offset);
+
+ return 0;
}
static int bcm2835_gpio_direction_output(struct gpio_chip *chip,
@@ -394,7 +397,7 @@ static const struct gpio_chip bcm2835_gpio_chip = {
.direction_output = bcm2835_gpio_direction_output,
.get_direction = bcm2835_gpio_get_direction,
.get = bcm2835_gpio_get,
- .set = bcm2835_gpio_set,
+ .set_rv = bcm2835_gpio_set,
.set_config = gpiochip_generic_config,
.base = -1,
.ngpio = BCM2835_NUM_GPIOS,
@@ -411,7 +414,7 @@ static const struct gpio_chip bcm2711_gpio_chip = {
.direction_output = bcm2835_gpio_direction_output,
.get_direction = bcm2835_gpio_get_direction,
.get = bcm2835_gpio_get,
- .set = bcm2835_gpio_set,
+ .set_rv = bcm2835_gpio_set,
.set_config = gpiochip_generic_config,
.base = -1,
.ngpio = BCM2711_NUM_GPIOS,
diff --git a/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c b/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
index c9a3d3aa8c10..1d08b8d4cdd7 100644
--- a/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
@@ -390,7 +390,7 @@ static int iproc_gpio_get_direction(struct gpio_chip *gc, unsigned int gpio)
return GPIO_LINE_DIRECTION_IN;
}
-static void iproc_gpio_set(struct gpio_chip *gc, unsigned gpio, int val)
+static int iproc_gpio_set(struct gpio_chip *gc, unsigned int gpio, int val)
{
struct iproc_gpio *chip = gpiochip_get_data(gc);
unsigned long flags;
@@ -400,6 +400,8 @@ static void iproc_gpio_set(struct gpio_chip *gc, unsigned gpio, int val)
raw_spin_unlock_irqrestore(&chip->lock, flags);
dev_dbg(chip->dev, "gpio:%u set, value:%d\n", gpio, val);
+
+ return 0;
}
static int iproc_gpio_get(struct gpio_chip *gc, unsigned gpio)
@@ -863,7 +865,7 @@ static int iproc_gpio_probe(struct platform_device *pdev)
gc->direction_input = iproc_gpio_direction_input;
gc->direction_output = iproc_gpio_direction_output;
gc->get_direction = iproc_gpio_get_direction;
- gc->set = iproc_gpio_set;
+ gc->set_rv = iproc_gpio_set;
gc->get = iproc_gpio_get;
chip->pinmux_is_supported = of_property_read_bool(dev->of_node,
diff --git a/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c b/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
index a96be8f244e0..b08f8480ddc6 100644
--- a/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
@@ -310,7 +310,7 @@ static int nsp_gpio_get_direction(struct gpio_chip *gc, unsigned gpio)
return !val;
}
-static void nsp_gpio_set(struct gpio_chip *gc, unsigned gpio, int val)
+static int nsp_gpio_set(struct gpio_chip *gc, unsigned int gpio, int val)
{
struct nsp_gpio *chip = gpiochip_get_data(gc);
unsigned long flags;
@@ -320,6 +320,8 @@ static void nsp_gpio_set(struct gpio_chip *gc, unsigned gpio, int val)
raw_spin_unlock_irqrestore(&chip->lock, flags);
dev_dbg(chip->dev, "gpio:%u set, value:%d\n", gpio, val);
+
+ return 0;
}
static int nsp_gpio_get(struct gpio_chip *gc, unsigned gpio)
@@ -654,7 +656,7 @@ static int nsp_gpio_probe(struct platform_device *pdev)
gc->direction_input = nsp_gpio_direction_input;
gc->direction_output = nsp_gpio_direction_output;
gc->get_direction = nsp_gpio_get_direction;
- gc->set = nsp_gpio_set;
+ gc->set_rv = nsp_gpio_set;
gc->get = nsp_gpio_get;
/* optional GPIO interrupt support */
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
index 4bdbf6bb26e2..9046292d1360 100644
--- a/drivers/pinctrl/core.c
+++ b/drivers/pinctrl/core.c
@@ -1530,6 +1530,35 @@ void pinctrl_unregister_mappings(const struct pinctrl_map *map)
}
EXPORT_SYMBOL_GPL(pinctrl_unregister_mappings);
+static void devm_pinctrl_unregister_mappings(void *maps)
+{
+ pinctrl_unregister_mappings(maps);
+}
+
+/**
+ * devm_pinctrl_register_mappings() - Resource managed pinctrl_register_mappings()
+ * @dev: device for which mappings are registered
+ * @maps: the pincontrol mappings table to register. Note the pinctrl-core
+ * keeps a reference to the passed in maps, so they should _not_ be
+ * marked with __initdata.
+ * @num_maps: the number of maps in the mapping table
+ *
+ * Returns: 0 on success, or negative errno on failure.
+ */
+int devm_pinctrl_register_mappings(struct device *dev,
+ const struct pinctrl_map *maps,
+ unsigned int num_maps)
+{
+ int ret;
+
+ ret = pinctrl_register_mappings(maps, num_maps);
+ if (ret)
+ return ret;
+
+ return devm_add_action_or_reset(dev, devm_pinctrl_unregister_mappings, (void *)maps);
+}
+EXPORT_SYMBOL_GPL(devm_pinctrl_register_mappings);
+
/**
* pinctrl_force_sleep() - turn a given controller device into sleep state
* @pctldev: pin controller device
diff --git a/drivers/pinctrl/freescale/Kconfig b/drivers/pinctrl/freescale/Kconfig
index 4c420b21b804..8d24decd3f07 100644
--- a/drivers/pinctrl/freescale/Kconfig
+++ b/drivers/pinctrl/freescale/Kconfig
@@ -20,7 +20,9 @@ config PINCTRL_IMX_SCMI
config PINCTRL_IMX_SCU
tristate
+ depends on OF
depends on IMX_SCU || COMPILE_TEST
+ default IMX_SCU
select PINCTRL_IMX
config PINCTRL_IMX1_CORE
@@ -159,6 +161,7 @@ config PINCTRL_IMX8MM
tristate "IMX8MM pinctrl driver"
depends on OF
depends on SOC_IMX8M || COMPILE_TEST
+ default SOC_IMX8M
select PINCTRL_IMX
help
Say Y here to enable the imx8mm pinctrl driver
@@ -167,6 +170,7 @@ config PINCTRL_IMX8MN
tristate "IMX8MN pinctrl driver"
depends on OF
depends on SOC_IMX8M || COMPILE_TEST
+ default SOC_IMX8M
select PINCTRL_IMX
help
Say Y here to enable the imx8mn pinctrl driver
@@ -175,6 +179,7 @@ config PINCTRL_IMX8MP
tristate "IMX8MP pinctrl driver"
depends on OF
depends on SOC_IMX8M || COMPILE_TEST
+ default SOC_IMX8M
select PINCTRL_IMX
help
Say Y here to enable the imx8mp pinctrl driver
@@ -183,6 +188,7 @@ config PINCTRL_IMX8MQ
tristate "IMX8MQ pinctrl driver"
depends on OF
depends on SOC_IMX8M || COMPILE_TEST
+ default SOC_IMX8M
select PINCTRL_IMX
help
Say Y here to enable the imx8mq pinctrl driver
@@ -191,6 +197,7 @@ config PINCTRL_IMX8QM
tristate "IMX8QM pinctrl driver"
depends on OF
depends on (IMX_SCU && ARCH_MXC && ARM64) || COMPILE_TEST
+ default ARCH_MXC
select PINCTRL_IMX_SCU
help
Say Y here to enable the imx8qm pinctrl driver
@@ -199,6 +206,7 @@ config PINCTRL_IMX8QXP
tristate "IMX8QXP pinctrl driver"
depends on OF
depends on (IMX_SCU && ARCH_MXC && ARM64) || COMPILE_TEST
+ default ARCH_MXC
select PINCTRL_IMX_SCU
help
Say Y here to enable the imx8qxp pinctrl driver
@@ -207,6 +215,7 @@ config PINCTRL_IMX8DXL
tristate "IMX8DXL pinctrl driver"
depends on OF
depends on (IMX_SCU && ARCH_MXC && ARM64) || COMPILE_TEST
+ default ARCH_MXC
select PINCTRL_IMX_SCU
help
Say Y here to enable the imx8dxl pinctrl driver
@@ -215,6 +224,7 @@ config PINCTRL_IMX8ULP
tristate "IMX8ULP pinctrl driver"
depends on OF
depends on ARCH_MXC || COMPILE_TEST
+ default ARCH_MXC
select PINCTRL_IMX
help
Say Y here to enable the imx8ulp pinctrl driver
@@ -239,6 +249,7 @@ config PINCTRL_IMX93
tristate "IMX93 pinctrl driver"
depends on OF
depends on ARCH_MXC || COMPILE_TEST
+ default SOC_IMX9
select PINCTRL_IMX
help
Say Y here to enable the imx93 pinctrl driver
diff --git a/drivers/pinctrl/freescale/pinctrl-imx-scmi.c b/drivers/pinctrl/freescale/pinctrl-imx-scmi.c
index 8f15c4c4dc44..4e8ab919b334 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx-scmi.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx-scmi.c
@@ -51,6 +51,7 @@ struct scmi_pinctrl_imx {
#define IMX_SCMI_PIN_SIZE 24
#define IMX95_DAISY_OFF 0x408
+#define IMX94_DAISY_OFF 0x608
static int pinctrl_scmi_imx_dt_node_to_map(struct pinctrl_dev *pctldev,
struct device_node *np,
@@ -70,6 +71,8 @@ static int pinctrl_scmi_imx_dt_node_to_map(struct pinctrl_dev *pctldev,
if (!daisy_off) {
if (of_machine_is_compatible("fsl,imx95")) {
daisy_off = IMX95_DAISY_OFF;
+ } else if (of_machine_is_compatible("fsl,imx94")) {
+ daisy_off = IMX94_DAISY_OFF;
} else {
dev_err(pctldev->dev, "platform not support scmi pinctrl\n");
return -EINVAL;
@@ -289,6 +292,7 @@ scmi_pinctrl_imx_get_pins(struct scmi_pinctrl_imx *pmx, struct pinctrl_desc *des
static const char * const scmi_pinctrl_imx_allowlist[] = {
"fsl,imx95",
+ "fsl,imx94",
NULL
};
diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig
index 58f32818a0e6..2d15af6be276 100644
--- a/drivers/pinctrl/mediatek/Kconfig
+++ b/drivers/pinctrl/mediatek/Kconfig
@@ -181,6 +181,16 @@ config PINCTRL_MT6797
default ARM64 && ARCH_MEDIATEK
select PINCTRL_MTK_PARIS
+config PINCTRL_MT6893
+ bool "MediaTek Dimensity MT6893 pin control"
+ depends on OF
+ depends on ARM64 || COMPILE_TEST
+ default ARM64 && ARCH_MEDIATEK
+ select PINCTRL_MTK_PARIS
+ help
+ Say yes here to support pin controller and gpio driver
+ on the MediaTek Dimensity 1200 MT6893 Smartphone SoC.
+
config PINCTRL_MT7622
bool "MediaTek MT7622 pin control"
depends on OF
@@ -263,6 +273,18 @@ config PINCTRL_MT8195
default ARM64 && ARCH_MEDIATEK
select PINCTRL_MTK_PARIS
+config PINCTRL_MT8196
+ bool "MediaTek MT8196 pin control"
+ depends on OF
+ depends on ARM64 || COMPILE_TEST
+ default ARM64 && ARCH_MEDIATEK
+ select PINCTRL_MTK_PARIS
+ help
+ Say yes here to support pin controller and gpio driver
+ on MediaTek MT8196 SoC.
+ In MTK platform, we support virtual gpio and use it to
+ map specific eint which doesn't have real gpio pin.
+
config PINCTRL_MT8365
bool "MediaTek MT8365 pin control"
depends on OF
diff --git a/drivers/pinctrl/mediatek/Makefile b/drivers/pinctrl/mediatek/Makefile
index 721ae83476d0..7518980fba59 100644
--- a/drivers/pinctrl/mediatek/Makefile
+++ b/drivers/pinctrl/mediatek/Makefile
@@ -23,6 +23,7 @@ obj-$(CONFIG_PINCTRL_MT6765) += pinctrl-mt6765.o
obj-$(CONFIG_PINCTRL_MT6779) += pinctrl-mt6779.o
obj-$(CONFIG_PINCTRL_MT6795) += pinctrl-mt6795.o
obj-$(CONFIG_PINCTRL_MT6797) += pinctrl-mt6797.o
+obj-$(CONFIG_PINCTRL_MT6893) += pinctrl-mt6893.o
obj-$(CONFIG_PINCTRL_MT7622) += pinctrl-mt7622.o
obj-$(CONFIG_PINCTRL_MT7623) += pinctrl-mt7623.o
obj-$(CONFIG_PINCTRL_MT7629) += pinctrl-mt7629.o
@@ -36,6 +37,7 @@ obj-$(CONFIG_PINCTRL_MT8186) += pinctrl-mt8186.o
obj-$(CONFIG_PINCTRL_MT8188) += pinctrl-mt8188.o
obj-$(CONFIG_PINCTRL_MT8192) += pinctrl-mt8192.o
obj-$(CONFIG_PINCTRL_MT8195) += pinctrl-mt8195.o
+obj-$(CONFIG_PINCTRL_MT8196) += pinctrl-mt8196.o
obj-$(CONFIG_PINCTRL_MT8365) += pinctrl-mt8365.o
obj-$(CONFIG_PINCTRL_MT8516) += pinctrl-mt8516.o
obj-$(CONFIG_PINCTRL_MT6397) += pinctrl-mt6397.o
diff --git a/drivers/pinctrl/mediatek/mtk-eint.c b/drivers/pinctrl/mediatek/mtk-eint.c
index b4eb2beab691..d906a5e4101f 100644
--- a/drivers/pinctrl/mediatek/mtk-eint.c
+++ b/drivers/pinctrl/mediatek/mtk-eint.c
@@ -22,7 +22,6 @@
#include <linux/platform_device.h>
#include "mtk-eint.h"
-#include "pinctrl-mtk-common-v2.h"
#define MTK_EINT_EDGE_SENSITIVE 0
#define MTK_EINT_LEVEL_SENSITIVE 1
@@ -505,10 +504,9 @@ int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n)
}
EXPORT_SYMBOL_GPL(mtk_eint_find_irq);
-int mtk_eint_do_init(struct mtk_eint *eint)
+int mtk_eint_do_init(struct mtk_eint *eint, struct mtk_eint_pin *eint_pin)
{
- unsigned int size, i, port, inst = 0;
- struct mtk_pinctrl *hw = (struct mtk_pinctrl *)eint->pctl;
+ unsigned int size, i, port, virq, inst = 0;
/* If clients don't assign a specific regs, let's use generic one */
if (!eint->regs)
@@ -519,7 +517,15 @@ int mtk_eint_do_init(struct mtk_eint *eint)
if (!eint->base_pin_num)
return -ENOMEM;
- if (eint->nbase == 1) {
+ if (eint_pin) {
+ eint->pins = eint_pin;
+ for (i = 0; i < eint->hw->ap_num; i++) {
+ inst = eint->pins[i].instance;
+ if (inst >= eint->nbase)
+ continue;
+ eint->base_pin_num[inst]++;
+ }
+ } else {
size = eint->hw->ap_num * sizeof(struct mtk_eint_pin);
eint->pins = devm_kmalloc(eint->dev, size, GFP_KERNEL);
if (!eint->pins)
@@ -533,16 +539,6 @@ int mtk_eint_do_init(struct mtk_eint *eint)
}
}
- if (hw && hw->soc && hw->soc->eint_pin) {
- eint->pins = hw->soc->eint_pin;
- for (i = 0; i < eint->hw->ap_num; i++) {
- inst = eint->pins[i].instance;
- if (inst >= eint->nbase)
- continue;
- eint->base_pin_num[inst]++;
- }
- }
-
eint->pin_list = devm_kmalloc(eint->dev, eint->nbase * sizeof(u16 *), GFP_KERNEL);
if (!eint->pin_list)
goto err_pin_list;
@@ -565,9 +561,8 @@ int mtk_eint_do_init(struct mtk_eint *eint)
goto err_eint;
}
- eint->domain = irq_domain_add_linear(eint->dev->of_node,
- eint->hw->ap_num,
- &irq_domain_simple_ops, NULL);
+ eint->domain = irq_domain_create_linear(of_fwnode_handle(eint->dev->of_node),
+ eint->hw->ap_num, &irq_domain_simple_ops, NULL);
if (!eint->domain)
goto err_eint;
@@ -584,7 +579,7 @@ int mtk_eint_do_init(struct mtk_eint *eint)
if (inst >= eint->nbase)
continue;
eint->pin_list[inst][eint->pins[i].index] = i;
- int virq = irq_create_mapping(eint->domain, i);
+ virq = irq_create_mapping(eint->domain, i);
irq_set_chip_and_handler(virq, &mtk_eint_irq_chip,
handle_level_irq);
irq_set_chip_data(virq, eint);
@@ -610,7 +605,7 @@ err_cur_mask:
err_wake_mask:
devm_kfree(eint->dev, eint->pin_list);
err_pin_list:
- if (eint->nbase == 1)
+ if (!eint_pin)
devm_kfree(eint->dev, eint->pins);
err_pins:
devm_kfree(eint->dev, eint->base_pin_num);
diff --git a/drivers/pinctrl/mediatek/mtk-eint.h b/drivers/pinctrl/mediatek/mtk-eint.h
index f7f58cca0d5e..fc31a4c0c77b 100644
--- a/drivers/pinctrl/mediatek/mtk-eint.h
+++ b/drivers/pinctrl/mediatek/mtk-eint.h
@@ -66,7 +66,7 @@ struct mtk_eint_xt {
struct mtk_eint {
struct device *dev;
void __iomem **base;
- u8 nbase;
+ int nbase;
u16 *base_pin_num;
struct irq_domain *domain;
int irq;
@@ -88,7 +88,7 @@ struct mtk_eint {
};
#if IS_ENABLED(CONFIG_EINT_MTK)
-int mtk_eint_do_init(struct mtk_eint *eint);
+int mtk_eint_do_init(struct mtk_eint *eint, struct mtk_eint_pin *eint_pin);
int mtk_eint_do_suspend(struct mtk_eint *eint);
int mtk_eint_do_resume(struct mtk_eint *eint);
int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
@@ -96,7 +96,8 @@ int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n);
#else
-static inline int mtk_eint_do_init(struct mtk_eint *eint)
+static inline int mtk_eint_do_init(struct mtk_eint *eint,
+ struct mtk_eint_pin *eint_pin)
{
return -EOPNOTSUPP;
}
diff --git a/drivers/pinctrl/mediatek/pinctrl-airoha.c b/drivers/pinctrl/mediatek/pinctrl-airoha.c
index 5d84a778683d..b97b28ebb37a 100644
--- a/drivers/pinctrl/mediatek/pinctrl-airoha.c
+++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c
@@ -2247,15 +2247,16 @@ static int airoha_convert_pin_to_reg_offset(struct pinctrl_dev *pctrl_dev,
}
/* gpio callbacks */
-static void airoha_gpio_set(struct gpio_chip *chip, unsigned int gpio,
- int value)
+static int airoha_gpio_set(struct gpio_chip *chip, unsigned int gpio,
+ int value)
{
struct airoha_pinctrl *pinctrl = gpiochip_get_data(chip);
u32 offset = gpio % AIROHA_PIN_BANK_SIZE;
u8 index = gpio / AIROHA_PIN_BANK_SIZE;
- regmap_update_bits(pinctrl->regmap, pinctrl->gpiochip.data[index],
- BIT(offset), value ? BIT(offset) : 0);
+ return regmap_update_bits(pinctrl->regmap,
+ pinctrl->gpiochip.data[index],
+ BIT(offset), value ? BIT(offset) : 0);
}
static int airoha_gpio_get(struct gpio_chip *chip, unsigned int gpio)
@@ -2280,9 +2281,7 @@ static int airoha_gpio_direction_output(struct gpio_chip *chip,
if (err)
return err;
- airoha_gpio_set(chip, gpio, value);
-
- return 0;
+ return airoha_gpio_set(chip, gpio, value);
}
/* irq callbacks */
@@ -2419,7 +2418,7 @@ static int airoha_pinctrl_add_gpiochip(struct airoha_pinctrl *pinctrl,
gc->free = gpiochip_generic_free;
gc->direction_input = pinctrl_gpio_direction_input;
gc->direction_output = airoha_gpio_direction_output;
- gc->set = airoha_gpio_set;
+ gc->set_rv = airoha_gpio_set;
gc->get = airoha_gpio_get;
gc->base = -1;
gc->ngpio = AIROHA_NUM_PINS;
@@ -2715,9 +2714,7 @@ static int airoha_pinconf_set_pin_value(struct pinctrl_dev *pctrl_dev,
if (pin < 0)
return pin;
- airoha_gpio_set(&pinctrl->gpiochip.chip, pin, value);
-
- return 0;
+ return airoha_gpio_set(&pinctrl->gpiochip.chip, pin, value);
}
static int airoha_pinconf_set(struct pinctrl_dev *pctrl_dev,
diff --git a/drivers/pinctrl/mediatek/pinctrl-moore.c b/drivers/pinctrl/mediatek/pinctrl-moore.c
index aad4891223d3..827d0f191031 100644
--- a/drivers/pinctrl/mediatek/pinctrl-moore.c
+++ b/drivers/pinctrl/mediatek/pinctrl-moore.c
@@ -496,24 +496,26 @@ static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
return !!value;
}
-static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
+static int mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
{
struct mtk_pinctrl *hw = gpiochip_get_data(chip);
const struct mtk_pin_desc *desc;
desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
- if (!desc->name) {
- dev_err(hw->dev, "Failed to set gpio %d\n", gpio);
- return;
- }
+ if (!desc->name)
+ return -ENOTSUPP;
- mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
+ return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
}
static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
int value)
{
- mtk_gpio_set(chip, gpio, value);
+ int ret;
+
+ ret = mtk_gpio_set(chip, gpio, value);
+ if (ret)
+ return ret;
return pinctrl_gpio_direction_output(chip, gpio);
}
@@ -567,7 +569,7 @@ static int mtk_build_gpiochip(struct mtk_pinctrl *hw)
chip->direction_input = pinctrl_gpio_direction_input;
chip->direction_output = mtk_gpio_direction_output;
chip->get = mtk_gpio_get;
- chip->set = mtk_gpio_set;
+ chip->set_rv = mtk_gpio_set;
chip->to_irq = mtk_gpio_to_irq;
chip->set_config = mtk_gpio_set_config;
chip->base = -1;
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt6893.c b/drivers/pinctrl/mediatek/pinctrl-mt6893.c
new file mode 100644
index 000000000000..468ce0109b07
--- /dev/null
+++ b/drivers/pinctrl/mediatek/pinctrl-mt6893.c
@@ -0,0 +1,879 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2019 MediaTek Inc.
+ * Copyright (C) 2024 Collabora Ltd.
+ * AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+ */
+
+#include <linux/module.h>
+#include "pinctrl-mtk-mt6893.h"
+#include "pinctrl-paris.h"
+
+#define PIN_FIELD_BASE(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits) \
+ PIN_FIELD_CALC(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits, \
+ 32, 0)
+
+#define PINS_FIELD_BASE(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits) \
+ PIN_FIELD_CALC(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits, \
+ 32, 1)
+
+static const struct mtk_pin_field_calc mt6893_pin_mode_range[] = {
+ PIN_FIELD(0, 219, 0x0300, 0x10, 0, 4),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_dir_range[] = {
+ PIN_FIELD(0, 219, 0x0000, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_di_range[] = {
+ PIN_FIELD(0, 219, 0x0200, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_do_range[] = {
+ PIN_FIELD(0, 219, 0x0100, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_smt_range[] = {
+ PINS_FIELD_BASE(0, 9, 2, 0x00f0, 0x10, 7, 1),
+ PINS_FIELD_BASE(10, 15, 1, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(16, 17, 5, 0x00c0, 0x10, 8, 1),
+ PINS_FIELD_BASE(18, 25, 7, 0x00f0, 0x10, 1, 1),
+ PINS_FIELD_BASE(26, 30, 6, 0x00e0, 0x10, 6, 1),
+ PINS_FIELD_BASE(31, 35, 6, 0x00e0, 0x10, 2, 1),
+ PIN_FIELD_BASE(36, 36, 6, 0x00e0, 0x10, 16, 1),
+ PINS_FIELD_BASE(37, 39, 6, 0x00e0, 0x10, 15, 1),
+ PIN_FIELD_BASE(40, 41, 6, 0x00e0, 0x10, 0, 1),
+ PIN_FIELD_BASE(42, 42, 6, 0x00e0, 0x10, 5, 1),
+ PIN_FIELD_BASE(43, 44, 6, 0x00e0, 0x10, 3, 1),
+ PIN_FIELD_BASE(45, 45, 6, 0x00e0, 0x10, 12, 1),
+ PIN_FIELD_BASE(46, 46, 6, 0x00e0, 0x10, 14, 1),
+ PIN_FIELD_BASE(47, 47, 6, 0x00e0, 0x10, 13, 1),
+ PIN_FIELD_BASE(48, 49, 6, 0x00e0, 0x10, 10, 1),
+ PIN_FIELD_BASE(50, 50, 6, 0x00e0, 0x10, 9, 1),
+ PIN_FIELD_BASE(51, 52, 3, 0x0090, 0x10, 6, 1),
+ PINS_FIELD_BASE(53, 56, 3, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(57, 60, 3, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(61, 61, 3, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(62, 62, 4, 0x0050, 0x10, 1, 1),
+ PINS_FIELD_BASE(63, 73, 3, 0x0090, 0x10, 0, 1),
+ PINS_FIELD_BASE(74, 84, 4, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(85, 86, 4, 0x0050, 0x10, 4, 1),
+ PIN_FIELD_BASE(87, 88, 4, 0x0050, 0x10, 2, 1),
+ PIN_FIELD_BASE(89, 90, 2, 0x00f0, 0x10, 26, 1),
+ PIN_FIELD_BASE(91, 91, 2, 0x00f0, 0x10, 0, 1),
+ PINS_FIELD_BASE(92, 95, 2, 0x0100, 0x10, 0, 1),
+ PIN_FIELD_BASE(96, 96, 2, 0x00f0, 0x10, 30, 1),
+ PIN_FIELD_BASE(97, 97, 2, 0x00f0, 0x10, 28, 1),
+ PIN_FIELD_BASE(98, 98, 2, 0x00f0, 0x10, 31, 1),
+ PINS_FIELD_BASE(99, 102, 2, 0x00f0, 0x10, 29, 1),
+ PINS_FIELD_BASE(103, 105, 2, 0x00f0, 0x10, 24, 1),
+ PIN_FIELD_BASE(106, 106, 2, 0x00f0, 0x10, 25, 1),
+ PIN_FIELD_BASE(107, 108, 2, 0x00f0, 0x10, 5, 1),
+ PINS_FIELD_BASE(109, 113, 2, 0x00f0, 0x10, 8, 1),
+ PINS_FIELD_BASE(114, 116, 2, 0x00f0, 0x10, 16, 1),
+ PIN_FIELD_BASE(117, 117, 2, 0x00f0, 0x10, 17, 1),
+ PIN_FIELD_BASE(118, 118, 2, 0x00f0, 0x10, 10, 1),
+ PIN_FIELD_BASE(119, 119, 2, 0x00f0, 0x10, 18, 1),
+ PIN_FIELD_BASE(120, 120, 2, 0x00f0, 0x10, 15, 1),
+ PIN_FIELD_BASE(121, 121, 2, 0x00f0, 0x10, 23, 1),
+ PIN_FIELD_BASE(122, 122, 2, 0x00f0, 0x10, 14, 1),
+ PIN_FIELD_BASE(123, 123, 2, 0x00f0, 0x10, 22, 1),
+ PIN_FIELD_BASE(124, 124, 2, 0x00f0, 0x10, 13, 1),
+ PIN_FIELD_BASE(125, 125, 2, 0x00f0, 0x10, 21, 1),
+ PINS_FIELD_BASE(126, 129, 2, 0x00f0, 0x10, 9, 1),
+ PINS_FIELD_BASE(130, 135, 2, 0x00f0, 0x10, 4, 1),
+ PIN_FIELD_BASE(136, 138, 2, 0x00f0, 0x10, 1, 1),
+ PIN_FIELD_BASE(139, 139, 2, 0x00f0, 0x10, 12, 1),
+ PIN_FIELD_BASE(140, 140, 2, 0x00f0, 0x10, 20, 1),
+ PIN_FIELD_BASE(141, 141, 2, 0x00f0, 0x10, 11, 1),
+ PIN_FIELD_BASE(142, 142, 2, 0x00f0, 0x10, 19, 1),
+ PINS_FIELD_BASE(143, 148, 1, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(149, 151, 1, 0x0090, 0x10, 0, 1),
+ PINS_FIELD_BASE(152, 155, 5, 0x00c0, 0x10, 10, 1),
+ PIN_FIELD_BASE(156, 156, 5, 0x00c0, 0x10, 14, 1),
+ PINS_FIELD_BASE(157, 159, 5, 0x00c0, 0x10, 13, 1),
+ PIN_FIELD_BASE(160, 161, 5, 0x00c0, 0x10, 11, 1),
+ PINS_FIELD_BASE(162, 171, 5, 0x00c0, 0x10, 0, 1),
+ PIN_FIELD_BASE(172, 173, 5, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(174, 174, 5, 0x00c0, 0x10, 3, 1),
+ PIN_FIELD_BASE(175, 175, 5, 0x00c0, 0x10, 6, 1),
+ PIN_FIELD_BASE(176, 177, 5, 0x00c0, 0x10, 1, 1),
+ PINS_FIELD_BASE(178, 182, 5, 0x00c0, 0x10, 7, 1),
+ PIN_FIELD_BASE(183, 183, 7, 0x00f0, 0x10, 3, 1),
+ PINS_FIELD_BASE(184, 190, 7, 0x00f0, 0x10, 4, 1),
+ PIN_FIELD_BASE(191, 191, 7, 0x00f0, 0x10, 5, 1),
+ PIN_FIELD_BASE(192, 192, 7, 0x00f0, 0x10, 2, 1),
+ PIN_FIELD_BASE(193, 193, 7, 0x00f0, 0x10, 4, 1),
+ PIN_FIELD_BASE(194, 194, 7, 0x00f0, 0x10, 6, 1),
+ PIN_FIELD_BASE(195, 195, 7, 0x00f0, 0x10, 12, 1),
+ PINS_FIELD_BASE(196, 199, 7, 0x00f0, 0x10, 0, 1),
+ PIN_FIELD_BASE(200, 200, 7, 0x00f0, 0x10, 11, 1),
+ PIN_FIELD_BASE(201, 201, 7, 0x00f0, 0x10, 14, 1),
+ PIN_FIELD_BASE(202, 202, 7, 0x00f0, 0x10, 10, 1),
+ PIN_FIELD_BASE(203, 203, 7, 0x00f0, 0x10, 13, 1),
+ PIN_FIELD_BASE(204, 205, 6, 0x00e0, 0x10, 7, 1),
+ PIN_FIELD_BASE(206, 208, 7, 0x00f0, 0x10, 15, 1),
+ PINS_FIELD_BASE(209, 211, 7, 0x00f0, 0x10, 7, 1),
+ PIN_FIELD_BASE(212, 213, 7, 0x00f0, 0x10, 8, 1),
+ PINS_FIELD_BASE(214, 219, 7, 0x00f0, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_ies_range[] = {
+ PIN_FIELD_BASE(0, 9, 2, 0x0060, 0x10, 12, 1),
+ PIN_FIELD_BASE(10, 15, 1, 0x0020, 0x10, 9, 1),
+ PIN_FIELD_BASE(16, 17, 5, 0x0030, 0x10, 21, 1),
+ PIN_FIELD_BASE(18, 25, 7, 0x0050, 0x10, 10, 1),
+ PIN_FIELD_BASE(26, 30, 6, 0x0040, 0x10, 10, 1),
+ PIN_FIELD_BASE(31, 31, 6, 0x0040, 0x10, 6, 1),
+ PIN_FIELD_BASE(32, 32, 6, 0x0040, 0x10, 3, 1),
+ PIN_FIELD_BASE(33, 33, 6, 0x0040, 0x10, 5, 1),
+ PIN_FIELD_BASE(34, 34, 6, 0x0040, 0x10, 2, 1),
+ PIN_FIELD_BASE(35, 35, 6, 0x0040, 0x10, 4, 1),
+ PIN_FIELD_BASE(36, 39, 6, 0x0040, 0x10, 23, 1),
+ PIN_FIELD_BASE(40, 41, 6, 0x0040, 0x10, 0, 1),
+ PIN_FIELD_BASE(42, 42, 6, 0x0040, 0x10, 9, 1),
+ PIN_FIELD_BASE(43, 44, 6, 0x0040, 0x10, 7, 1),
+ PIN_FIELD_BASE(45, 45, 6, 0x0040, 0x10, 20, 1),
+ PIN_FIELD_BASE(46, 46, 6, 0x0040, 0x10, 22, 1),
+ PIN_FIELD_BASE(47, 47, 6, 0x0040, 0x10, 21, 1),
+ PIN_FIELD_BASE(48, 49, 6, 0x0040, 0x10, 18, 1),
+ PIN_FIELD_BASE(50, 50, 6, 0x0040, 0x10, 17, 1),
+ PIN_FIELD_BASE(51, 52, 3, 0x0020, 0x10, 16, 1),
+ PIN_FIELD_BASE(53, 53, 3, 0x0020, 0x10, 21, 1),
+ PIN_FIELD_BASE(54, 54, 3, 0x0020, 0x10, 18, 1),
+ PIN_FIELD_BASE(55, 55, 3, 0x0020, 0x10, 20, 1),
+ PIN_FIELD_BASE(56, 56, 3, 0x0020, 0x10, 19, 1),
+ PIN_FIELD_BASE(57, 60, 3, 0x0020, 0x10, 12, 1),
+ PIN_FIELD_BASE(61, 61, 3, 0x0020, 0x10, 11, 1),
+ PIN_FIELD_BASE(62, 62, 4, 0x0010, 0x10, 11, 1),
+ PIN_FIELD_BASE(63, 64, 3, 0x0020, 0x10, 0, 1),
+ PIN_FIELD_BASE(65, 72, 3, 0x0020, 0x10, 3, 1),
+ PIN_FIELD_BASE(73, 73, 3, 0x0020, 0x10, 2, 1),
+ PIN_FIELD_BASE(74, 84, 4, 0x0010, 0x10, 0, 1),
+ PIN_FIELD_BASE(85, 86, 4, 0x0010, 0x10, 14, 1),
+ PIN_FIELD_BASE(87, 88, 4, 0x0010, 0x10, 12, 1),
+ PIN_FIELD_BASE(89, 90, 2, 0x0070, 0x10, 19, 1),
+ PIN_FIELD_BASE(91, 91, 2, 0x0060, 0x10, 0, 1),
+ PIN_FIELD_BASE(92, 92, 2, 0x0070, 0x10, 28, 1),
+ PIN_FIELD_BASE(93, 93, 2, 0x0070, 0x10, 30, 1),
+ PIN_FIELD_BASE(94, 94, 2, 0x0070, 0x10, 29, 1),
+ PIN_FIELD_BASE(95, 95, 2, 0x0070, 0x10, 31, 1),
+ PIN_FIELD_BASE(96, 96, 2, 0x0070, 0x10, 26, 1),
+ PIN_FIELD_BASE(97, 97, 2, 0x0070, 0x10, 21, 1),
+ PIN_FIELD_BASE(98, 98, 2, 0x0070, 0x10, 27, 1),
+ PIN_FIELD_BASE(99, 102, 2, 0x0070, 0x10, 22, 1),
+ PIN_FIELD_BASE(103, 103, 2, 0x0070, 0x10, 17, 1),
+ PIN_FIELD_BASE(104, 104, 2, 0x0070, 0x10, 16, 1),
+ PIN_FIELD_BASE(105, 105, 2, 0x0070, 0x10, 18, 1),
+ PIN_FIELD_BASE(106, 106, 2, 0x0070, 0x10, 15, 1),
+ PIN_FIELD_BASE(107, 108, 2, 0x0060, 0x10, 10, 1),
+ PIN_FIELD_BASE(109, 109, 2, 0x0060, 0x10, 25, 1),
+ PIN_FIELD_BASE(110, 110, 2, 0x0060, 0x10, 22, 1),
+ PIN_FIELD_BASE(111, 111, 2, 0x0060, 0x10, 24, 1),
+ PIN_FIELD_BASE(112, 112, 2, 0x0060, 0x10, 26, 1),
+ PIN_FIELD_BASE(113, 113, 2, 0x0060, 0x10, 23, 1),
+ PIN_FIELD_BASE(114, 114, 2, 0x0070, 0x10, 7, 1),
+ PIN_FIELD_BASE(115, 115, 2, 0x0070, 0x10, 6, 1),
+ PIN_FIELD_BASE(116, 116, 2, 0x0070, 0x10, 8, 1),
+ PIN_FIELD_BASE(117, 117, 2, 0x0070, 0x10, 5, 1),
+ PIN_FIELD_BASE(118, 118, 2, 0x0060, 0x10, 31, 1),
+ PIN_FIELD_BASE(119, 119, 2, 0x0070, 0x10, 9, 1),
+ PIN_FIELD_BASE(120, 120, 2, 0x0070, 0x10, 4, 1),
+ PIN_FIELD_BASE(121, 121, 2, 0x0070, 0x10, 14, 1),
+ PIN_FIELD_BASE(122, 122, 2, 0x0070, 0x10, 3, 1),
+ PIN_FIELD_BASE(123, 123, 2, 0x0070, 0x10, 13, 1),
+ PIN_FIELD_BASE(124, 124, 2, 0x0070, 0x10, 2, 1),
+ PIN_FIELD_BASE(125, 125, 2, 0x0070, 0x10, 12, 1),
+ PIN_FIELD_BASE(126, 129, 2, 0x0060, 0x10, 27, 1),
+ PIN_FIELD_BASE(130, 132, 2, 0x0060, 0x10, 7, 1),
+ PIN_FIELD_BASE(133, 135, 2, 0x0060, 0x10, 4, 1),
+ PIN_FIELD_BASE(136, 138, 2, 0x0060, 0x10, 1, 1),
+ PIN_FIELD_BASE(139, 139, 2, 0x0070, 0x10, 1, 1),
+ PIN_FIELD_BASE(140, 140, 2, 0x0070, 0x10, 11, 1),
+ PIN_FIELD_BASE(141, 141, 2, 0x0070, 0x10, 0, 1),
+ PIN_FIELD_BASE(142, 142, 2, 0x0070, 0x10, 10, 1),
+ PIN_FIELD_BASE(143, 145, 1, 0x0020, 0x10, 6, 1),
+ PIN_FIELD_BASE(146, 148, 1, 0x0020, 0x10, 3, 1),
+ PIN_FIELD_BASE(149, 151, 1, 0x0020, 0x10, 0, 1),
+ PIN_FIELD_BASE(152, 152, 5, 0x0030, 0x10, 26, 1),
+ PIN_FIELD_BASE(153, 153, 5, 0x0030, 0x10, 25, 1),
+ PIN_FIELD_BASE(154, 155, 5, 0x0030, 0x10, 23, 1),
+ PIN_FIELD_BASE(156, 158, 5, 0x0030, 0x10, 29, 1),
+ PIN_FIELD_BASE(159, 159, 5, 0x0040, 0x10, 0, 1),
+ PIN_FIELD_BASE(160, 161, 5, 0x0030, 0x10, 27, 1),
+ PIN_FIELD_BASE(162, 171, 5, 0x0030, 0x10, 0, 1),
+ PIN_FIELD_BASE(172, 173, 5, 0x0030, 0x10, 13, 1),
+ PIN_FIELD_BASE(174, 174, 5, 0x0030, 0x10, 12, 1),
+ PIN_FIELD_BASE(175, 175, 5, 0x0030, 0x10, 15, 1),
+ PIN_FIELD_BASE(176, 177, 5, 0x0030, 0x10, 10, 1),
+ PIN_FIELD_BASE(178, 182, 5, 0x0030, 0x10, 16, 1),
+ PIN_FIELD_BASE(183, 184, 7, 0x0050, 0x10, 19, 1),
+ PIN_FIELD_BASE(185, 185, 7, 0x0050, 0x10, 22, 1),
+ PIN_FIELD_BASE(186, 186, 7, 0x0050, 0x10, 24, 1),
+ PIN_FIELD_BASE(187, 187, 7, 0x0050, 0x10, 26, 1),
+ PIN_FIELD_BASE(188, 188, 7, 0x0050, 0x10, 21, 1),
+ PIN_FIELD_BASE(189, 189, 7, 0x0050, 0x10, 25, 1),
+ PIN_FIELD_BASE(190, 191, 7, 0x0050, 0x10, 27, 1),
+ PIN_FIELD_BASE(192, 192, 7, 0x0050, 0x10, 18, 1),
+ PIN_FIELD_BASE(193, 193, 7, 0x0050, 0x10, 23, 1),
+ PIN_FIELD_BASE(194, 194, 7, 0x0050, 0x10, 29, 1),
+ PIN_FIELD_BASE(195, 195, 7, 0x0060, 0x10, 5, 1),
+ PIN_FIELD_BASE(196, 196, 7, 0x0050, 0x10, 6, 1),
+ PIN_FIELD_BASE(197, 197, 7, 0x0050, 0x10, 8, 1),
+ PIN_FIELD_BASE(198, 198, 7, 0x0050, 0x10, 7, 1),
+ PIN_FIELD_BASE(199, 199, 7, 0x0050, 0x10, 3, 1),
+ PIN_FIELD_BASE(200, 200, 7, 0x0060, 0x10, 4, 1),
+ PIN_FIELD_BASE(201, 201, 7, 0x0060, 0x10, 7, 1),
+ PIN_FIELD_BASE(202, 202, 7, 0x0060, 0x10, 3, 1),
+ PIN_FIELD_BASE(203, 203, 7, 0x0060, 0x10, 6, 1),
+ PIN_FIELD_BASE(204, 205, 6, 0x0040, 0x10, 15, 1),
+ PIN_FIELD_BASE(206, 208, 7, 0x0060, 0x10, 8, 1),
+ PIN_FIELD_BASE(209, 209, 7, 0x0060, 0x10, 0, 1),
+ PIN_FIELD_BASE(210, 210, 7, 0x0050, 0x10, 31, 1),
+ PIN_FIELD_BASE(211, 211, 7, 0x0060, 0x10, 1, 1),
+ PIN_FIELD_BASE(212, 212, 7, 0x0050, 0x10, 30, 1),
+ PIN_FIELD_BASE(213, 213, 7, 0x0060, 0x10, 2, 1),
+ PIN_FIELD_BASE(214, 214, 7, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(215, 215, 7, 0x0050, 0x10, 9, 1),
+ PIN_FIELD_BASE(216, 217, 7, 0x0050, 0x10, 4, 1),
+ PIN_FIELD_BASE(218, 219, 7, 0x0050, 0x10, 1, 1),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_pu_range[] = {
+ PIN_FIELD_BASE(0, 9, 2, 0x00a0, 0x10, 12, 1),
+ PIN_FIELD_BASE(16, 17, 5, 0x0070, 0x10, 21, 1),
+ PIN_FIELD_BASE(18, 25, 7, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(26, 30, 6, 0x0080, 0x10, 10, 1),
+ PIN_FIELD_BASE(31, 31, 6, 0x0080, 0x10, 6, 1),
+ PIN_FIELD_BASE(32, 32, 6, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(33, 33, 6, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(34, 34, 6, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(35, 35, 6, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(36, 39, 6, 0x0080, 0x10, 17, 1),
+ PIN_FIELD_BASE(40, 41, 6, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(42, 42, 6, 0x0080, 0x10, 9, 1),
+ PIN_FIELD_BASE(43, 44, 6, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(57, 60, 3, 0x0050, 0x10, 12, 1),
+ PIN_FIELD_BASE(61, 61, 3, 0x0050, 0x10, 11, 1),
+ PIN_FIELD_BASE(62, 62, 4, 0x0030, 0x10, 11, 1),
+ PIN_FIELD_BASE(63, 64, 3, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(65, 72, 3, 0x0050, 0x10, 3, 1),
+ PIN_FIELD_BASE(73, 73, 3, 0x0050, 0x10, 2, 1),
+ PIN_FIELD_BASE(74, 84, 4, 0x0030, 0x10, 0, 1),
+ PIN_FIELD_BASE(85, 86, 4, 0x0030, 0x10, 14, 1),
+ PIN_FIELD_BASE(87, 88, 4, 0x0030, 0x10, 12, 1),
+ PIN_FIELD_BASE(89, 90, 2, 0x00b0, 0x10, 19, 1),
+ PIN_FIELD_BASE(91, 91, 2, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(92, 92, 2, 0x00b0, 0x10, 28, 1),
+ PIN_FIELD_BASE(93, 93, 2, 0x00b0, 0x10, 30, 1),
+ PIN_FIELD_BASE(94, 94, 2, 0x00b0, 0x10, 29, 1),
+ PIN_FIELD_BASE(95, 95, 2, 0x00b0, 0x10, 31, 1),
+ PIN_FIELD_BASE(96, 96, 2, 0x00b0, 0x10, 26, 1),
+ PIN_FIELD_BASE(97, 97, 2, 0x00b0, 0x10, 21, 1),
+ PIN_FIELD_BASE(98, 98, 2, 0x00b0, 0x10, 27, 1),
+ PIN_FIELD_BASE(99, 102, 2, 0x00b0, 0x10, 22, 1),
+ PIN_FIELD_BASE(103, 103, 2, 0x00b0, 0x10, 17, 1),
+ PIN_FIELD_BASE(104, 104, 2, 0x00b0, 0x10, 16, 1),
+ PIN_FIELD_BASE(105, 105, 2, 0x00b0, 0x10, 18, 1),
+ PIN_FIELD_BASE(106, 106, 2, 0x00b0, 0x10, 15, 1),
+ PIN_FIELD_BASE(107, 108, 2, 0x00a0, 0x10, 10, 1),
+ PIN_FIELD_BASE(109, 109, 2, 0x00a0, 0x10, 25, 1),
+ PIN_FIELD_BASE(110, 110, 2, 0x00a0, 0x10, 22, 1),
+ PIN_FIELD_BASE(111, 111, 2, 0x00a0, 0x10, 24, 1),
+ PIN_FIELD_BASE(112, 112, 2, 0x00a0, 0x10, 26, 1),
+ PIN_FIELD_BASE(113, 113, 2, 0x00a0, 0x10, 23, 1),
+ PIN_FIELD_BASE(114, 114, 2, 0x00b0, 0x10, 7, 1),
+ PIN_FIELD_BASE(115, 115, 2, 0x00b0, 0x10, 6, 1),
+ PIN_FIELD_BASE(116, 116, 2, 0x00b0, 0x10, 8, 1),
+ PIN_FIELD_BASE(117, 117, 2, 0x00b0, 0x10, 5, 1),
+ PIN_FIELD_BASE(118, 118, 2, 0x00a0, 0x10, 31, 1),
+ PIN_FIELD_BASE(119, 119, 2, 0x00b0, 0x10, 9, 1),
+ PIN_FIELD_BASE(120, 120, 2, 0x00b0, 0x10, 4, 1),
+ PIN_FIELD_BASE(121, 121, 2, 0x00b0, 0x10, 14, 1),
+ PIN_FIELD_BASE(122, 122, 2, 0x00b0, 0x10, 3, 1),
+ PIN_FIELD_BASE(123, 123, 2, 0x00b0, 0x10, 13, 1),
+ PIN_FIELD_BASE(124, 124, 2, 0x00b0, 0x10, 2, 1),
+ PIN_FIELD_BASE(125, 125, 2, 0x00b0, 0x10, 12, 1),
+ PIN_FIELD_BASE(126, 129, 2, 0x00a0, 0x10, 27, 1),
+ PIN_FIELD_BASE(130, 132, 2, 0x00a0, 0x10, 7, 1),
+ PIN_FIELD_BASE(133, 135, 2, 0x00a0, 0x10, 4, 1),
+ PIN_FIELD_BASE(136, 138, 2, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(139, 139, 2, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(140, 140, 2, 0x00b0, 0x10, 11, 1),
+ PIN_FIELD_BASE(141, 141, 2, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(142, 142, 2, 0x00b0, 0x10, 10, 1),
+ PIN_FIELD_BASE(143, 145, 1, 0x0050, 0x10, 6, 1),
+ PIN_FIELD_BASE(146, 148, 1, 0x0050, 0x10, 3, 1),
+ PIN_FIELD_BASE(149, 151, 1, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(156, 159, 5, 0x0070, 0x10, 25, 1),
+ PIN_FIELD_BASE(160, 161, 5, 0x0070, 0x10, 23, 1),
+ PIN_FIELD_BASE(162, 171, 5, 0x0070, 0x10, 0, 1),
+ PIN_FIELD_BASE(172, 173, 5, 0x0070, 0x10, 13, 1),
+ PIN_FIELD_BASE(174, 174, 5, 0x0070, 0x10, 12, 1),
+ PIN_FIELD_BASE(175, 175, 5, 0x0070, 0x10, 15, 1),
+ PIN_FIELD_BASE(176, 177, 5, 0x0070, 0x10, 10, 1),
+ PIN_FIELD_BASE(178, 182, 5, 0x0070, 0x10, 16, 1),
+ PIN_FIELD_BASE(195, 195, 7, 0x0090, 0x10, 25, 1),
+ PIN_FIELD_BASE(196, 196, 7, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(197, 197, 7, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(198, 198, 7, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(199, 199, 7, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(200, 200, 7, 0x0090, 0x10, 24, 1),
+ PIN_FIELD_BASE(201, 201, 7, 0x0090, 0x10, 27, 1),
+ PIN_FIELD_BASE(202, 202, 7, 0x0090, 0x10, 23, 1),
+ PIN_FIELD_BASE(203, 203, 7, 0x0090, 0x10, 26, 1),
+ PIN_FIELD_BASE(204, 205, 6, 0x0080, 0x10, 15, 1),
+ PIN_FIELD_BASE(206, 208, 7, 0x0090, 0x10, 28, 1),
+ PIN_FIELD_BASE(209, 209, 7, 0x0090, 0x10, 20, 1),
+ PIN_FIELD_BASE(210, 210, 7, 0x0090, 0x10, 19, 1),
+ PIN_FIELD_BASE(211, 211, 7, 0x0090, 0x10, 21, 1),
+ PIN_FIELD_BASE(212, 212, 7, 0x0090, 0x10, 18, 1),
+ PIN_FIELD_BASE(213, 213, 7, 0x0090, 0x10, 22, 1),
+ PIN_FIELD_BASE(214, 214, 7, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(215, 215, 7, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(216, 217, 7, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(218, 219, 7, 0x0090, 0x10, 1, 1),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_pd_range[] = {
+ PIN_FIELD_BASE(0, 9, 2, 0x0080, 0x10, 12, 1),
+ PIN_FIELD_BASE(16, 17, 5, 0x0050, 0x10, 21, 1),
+ PIN_FIELD_BASE(18, 25, 7, 0x0070, 0x10, 10, 1),
+ PIN_FIELD_BASE(26, 30, 6, 0x0060, 0x10, 10, 1),
+ PIN_FIELD_BASE(31, 31, 6, 0x0060, 0x10, 6, 1),
+ PIN_FIELD_BASE(32, 32, 6, 0x0060, 0x10, 3, 1),
+ PIN_FIELD_BASE(33, 33, 6, 0x0060, 0x10, 5, 1),
+ PIN_FIELD_BASE(34, 34, 6, 0x0060, 0x10, 2, 1),
+ PIN_FIELD_BASE(35, 35, 6, 0x0060, 0x10, 4, 1),
+ PIN_FIELD_BASE(36, 39, 6, 0x0060, 0x10, 17, 1),
+ PIN_FIELD_BASE(40, 41, 6, 0x0060, 0x10, 0, 1),
+ PIN_FIELD_BASE(42, 42, 6, 0x0060, 0x10, 9, 1),
+ PIN_FIELD_BASE(43, 44, 6, 0x0060, 0x10, 7, 1),
+ PIN_FIELD_BASE(57, 60, 3, 0x0030, 0x10, 12, 1),
+ PIN_FIELD_BASE(61, 61, 3, 0x0030, 0x10, 11, 1),
+ PIN_FIELD_BASE(62, 62, 4, 0x0020, 0x10, 11, 1),
+ PIN_FIELD_BASE(63, 64, 3, 0x0030, 0x10, 0, 1),
+ PIN_FIELD_BASE(65, 72, 3, 0x0030, 0x10, 3, 1),
+ PIN_FIELD_BASE(73, 73, 3, 0x0030, 0x10, 2, 1),
+ PIN_FIELD_BASE(74, 84, 4, 0x0020, 0x10, 0, 1),
+ PIN_FIELD_BASE(85, 86, 4, 0x0020, 0x10, 14, 1),
+ PIN_FIELD_BASE(87, 88, 4, 0x0020, 0x10, 12, 1),
+ PIN_FIELD_BASE(89, 90, 2, 0x0090, 0x10, 19, 1),
+ PIN_FIELD_BASE(91, 91, 2, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(92, 92, 2, 0x0090, 0x10, 28, 1),
+ PIN_FIELD_BASE(93, 93, 2, 0x0090, 0x10, 30, 1),
+ PIN_FIELD_BASE(94, 94, 2, 0x0090, 0x10, 29, 1),
+ PIN_FIELD_BASE(95, 95, 2, 0x0090, 0x10, 31, 1),
+ PIN_FIELD_BASE(96, 96, 2, 0x0090, 0x10, 26, 1),
+ PIN_FIELD_BASE(97, 97, 2, 0x0090, 0x10, 21, 1),
+ PIN_FIELD_BASE(98, 98, 2, 0x0090, 0x10, 27, 1),
+ PIN_FIELD_BASE(99, 102, 2, 0x0090, 0x10, 22, 1),
+ PIN_FIELD_BASE(103, 103, 2, 0x0090, 0x10, 17, 1),
+ PIN_FIELD_BASE(104, 104, 2, 0x0090, 0x10, 16, 1),
+ PIN_FIELD_BASE(105, 105, 2, 0x0090, 0x10, 18, 1),
+ PIN_FIELD_BASE(106, 106, 2, 0x0090, 0x10, 15, 1),
+ PIN_FIELD_BASE(107, 108, 2, 0x0080, 0x10, 10, 1),
+ PIN_FIELD_BASE(109, 109, 2, 0x0080, 0x10, 25, 1),
+ PIN_FIELD_BASE(110, 110, 2, 0x0080, 0x10, 22, 1),
+ PIN_FIELD_BASE(111, 111, 2, 0x0080, 0x10, 24, 1),
+ PIN_FIELD_BASE(112, 112, 2, 0x0080, 0x10, 26, 1),
+ PIN_FIELD_BASE(113, 113, 2, 0x0080, 0x10, 23, 1),
+ PIN_FIELD_BASE(114, 114, 2, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(115, 115, 2, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(116, 116, 2, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(117, 117, 2, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(118, 118, 2, 0x0080, 0x10, 31, 1),
+ PIN_FIELD_BASE(119, 119, 2, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(120, 120, 2, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(121, 121, 2, 0x0090, 0x10, 14, 1),
+ PIN_FIELD_BASE(122, 122, 2, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(123, 123, 2, 0x0090, 0x10, 13, 1),
+ PIN_FIELD_BASE(124, 124, 2, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(125, 125, 2, 0x0090, 0x10, 12, 1),
+ PIN_FIELD_BASE(126, 129, 2, 0x0080, 0x10, 27, 1),
+ PIN_FIELD_BASE(130, 132, 2, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(133, 135, 2, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(136, 138, 2, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(139, 139, 2, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(140, 140, 2, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(141, 141, 2, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(142, 142, 2, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(143, 145, 1, 0x0030, 0x10, 6, 1),
+ PIN_FIELD_BASE(146, 148, 1, 0x0030, 0x10, 3, 1),
+ PIN_FIELD_BASE(149, 151, 1, 0x0030, 0x10, 0, 1),
+ PIN_FIELD_BASE(156, 159, 5, 0x0050, 0x10, 25, 1),
+ PIN_FIELD_BASE(160, 161, 5, 0x0050, 0x10, 23, 1),
+ PIN_FIELD_BASE(162, 171, 5, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(172, 173, 5, 0x0050, 0x10, 13, 1),
+ PIN_FIELD_BASE(174, 174, 5, 0x0050, 0x10, 12, 1),
+ PIN_FIELD_BASE(175, 175, 5, 0x0050, 0x10, 15, 1),
+ PIN_FIELD_BASE(176, 177, 5, 0x0050, 0x10, 10, 1),
+ PIN_FIELD_BASE(178, 182, 5, 0x0050, 0x10, 16, 1),
+ PIN_FIELD_BASE(195, 195, 7, 0x0070, 0x10, 25, 1),
+ PIN_FIELD_BASE(196, 196, 7, 0x0070, 0x10, 6, 1),
+ PIN_FIELD_BASE(197, 197, 7, 0x0070, 0x10, 8, 1),
+ PIN_FIELD_BASE(198, 198, 7, 0x0070, 0x10, 7, 1),
+ PIN_FIELD_BASE(199, 199, 7, 0x0070, 0x10, 3, 1),
+ PIN_FIELD_BASE(200, 200, 7, 0x0070, 0x10, 24, 1),
+ PIN_FIELD_BASE(201, 201, 7, 0x0070, 0x10, 27, 1),
+ PIN_FIELD_BASE(202, 202, 7, 0x0070, 0x10, 23, 1),
+ PIN_FIELD_BASE(203, 203, 7, 0x0070, 0x10, 26, 1),
+ PIN_FIELD_BASE(204, 205, 6, 0x0060, 0x10, 15, 1),
+ PIN_FIELD_BASE(206, 208, 7, 0x0070, 0x10, 28, 1),
+ PIN_FIELD_BASE(209, 209, 7, 0x0070, 0x10, 20, 1),
+ PIN_FIELD_BASE(210, 210, 7, 0x0070, 0x10, 19, 1),
+ PIN_FIELD_BASE(211, 211, 7, 0x0070, 0x10, 21, 1),
+ PIN_FIELD_BASE(212, 212, 7, 0x0070, 0x10, 18, 1),
+ PIN_FIELD_BASE(213, 213, 7, 0x0070, 0x10, 22, 1),
+ PIN_FIELD_BASE(214, 214, 7, 0x0070, 0x10, 0, 1),
+ PIN_FIELD_BASE(215, 215, 7, 0x0070, 0x10, 9, 1),
+ PIN_FIELD_BASE(216, 217, 7, 0x0070, 0x10, 4, 1),
+ PIN_FIELD_BASE(218, 219, 7, 0x0070, 0x10, 1, 1),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_drv_range[] = {
+ PINS_FIELD_BASE(0, 9, 2, 0x0000, 0x10, 21, 3),
+ PINS_FIELD_BASE(10, 15, 1, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(16, 17, 5, 0x0000, 0x10, 18, 3),
+ PINS_FIELD_BASE(18, 25, 7, 0x0000, 0x10, 3, 3),
+ PINS_FIELD_BASE(26, 30, 6, 0x0000, 0x10, 15, 3),
+ PINS_FIELD_BASE(31, 35, 6, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(36, 36, 6, 0x0010, 0x10, 7, 3),
+ PINS_FIELD_BASE(37, 39, 6, 0x0010, 0x10, 4, 3),
+ PIN_FIELD_BASE(40, 41, 6, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(42, 42, 6, 0x0000, 0x10, 12, 3),
+ PINS_FIELD_BASE(43, 44, 6, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(45, 45, 6, 0x0000, 0x10, 30, 2),
+ PIN_FIELD_BASE(46, 46, 6, 0x0010, 0x10, 2, 2),
+ PIN_FIELD_BASE(47, 47, 6, 0x0010, 0x10, 0, 2),
+ PIN_FIELD_BASE(48, 49, 6, 0x0000, 0x10, 26, 2),
+ PIN_FIELD_BASE(50, 50, 6, 0x0000, 0x10, 24, 2),
+ PIN_FIELD_BASE(51, 52, 3, 0x0000, 0x10, 18, 3),
+ PINS_FIELD_BASE(53, 56, 3, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(57, 60, 3, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(61, 61, 3, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(62, 62, 4, 0x0000, 0x10, 3, 3),
+ PINS_FIELD_BASE(63, 73, 3, 0x0000, 0x10, 0, 3),
+ PINS_FIELD_BASE(74, 84, 4, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(85, 86, 4, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(87, 88, 4, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(89, 90, 2, 0x0020, 0x10, 15, 3),
+ PIN_FIELD_BASE(91, 91, 2, 0x0000, 0x10, 0, 3),
+ PINS_FIELD_BASE(92, 95, 2, 0x0030, 0x10, 3, 3),
+ PIN_FIELD_BASE(96, 96, 2, 0x0020, 0x10, 27, 3),
+ PIN_FIELD_BASE(97, 97, 2, 0x0020, 0x10, 21, 3),
+ PIN_FIELD_BASE(98, 98, 2, 0x0030, 0x10, 0, 3),
+ PINS_FIELD_BASE(99, 102, 2, 0x0020, 0x10, 24, 3),
+ PINS_FIELD_BASE(103, 105, 2, 0x0020, 0x10, 9, 3),
+ PIN_FIELD_BASE(106, 106, 2, 0x0020, 0x10, 12, 3),
+ PIN_FIELD_BASE(107, 108, 2, 0x0000, 0x10, 15, 3),
+ PINS_FIELD_BASE(109, 113, 2, 0x0000, 0x10, 24, 3),
+ PINS_FIELD_BASE(114, 117, 2, 0x0010, 0x10, 18, 3),
+ PIN_FIELD_BASE(118, 118, 2, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(119, 119, 2, 0x0010, 0x10, 21, 3),
+ PIN_FIELD_BASE(120, 120, 2, 0x0010, 0x10, 15, 3),
+ PIN_FIELD_BASE(121, 121, 2, 0x0020, 0x10, 6, 3),
+ PIN_FIELD_BASE(122, 122, 2, 0x0010, 0x10, 12, 3),
+ PIN_FIELD_BASE(123, 123, 2, 0x0020, 0x10, 3, 3),
+ PIN_FIELD_BASE(124, 124, 2, 0x0010, 0x10, 9, 3),
+ PIN_FIELD_BASE(125, 125, 2, 0x0020, 0x10, 0, 3),
+ PINS_FIELD_BASE(126, 129, 2, 0x0000, 0x10, 27, 3),
+ PINS_FIELD_BASE(130, 135, 2, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(136, 138, 2, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(139, 139, 2, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(140, 140, 2, 0x0010, 0x10, 27, 3),
+ PIN_FIELD_BASE(141, 141, 2, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(142, 142, 2, 0x0010, 0x10, 24, 3),
+ PINS_FIELD_BASE(143, 148, 1, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(149, 151, 1, 0x0000, 0x10, 0, 3),
+ PINS_FIELD_BASE(152, 155, 5, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(156, 156, 5, 0x0010, 0x10, 6, 3),
+ PINS_FIELD_BASE(157, 159, 5, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(160, 160, 5, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(161, 161, 5, 0x0010, 0x10, 0, 3),
+ PINS_FIELD_BASE(162, 171, 5, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(172, 172, 5, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(173, 173, 5, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(174, 174, 5, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(175, 177, 5, 0x0000, 0x10, 3, 3),
+ PINS_FIELD_BASE(178, 182, 5, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(183, 183, 7, 0x0000, 0x10, 9, 3),
+ PINS_FIELD_BASE(184, 190, 7, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(191, 191, 7, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(192, 192, 7, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(193, 193, 7, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(194, 194, 7, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(195, 195, 7, 0x0010, 0x10, 3, 3),
+ PINS_FIELD_BASE(196, 199, 7, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(200, 200, 7, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(201, 201, 7, 0x0010, 0x10, 9, 3),
+ PIN_FIELD_BASE(202, 202, 7, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(203, 203, 7, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(204, 205, 6, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(206, 208, 7, 0x0010, 0x10, 12, 3),
+ PINS_FIELD_BASE(209, 212, 7, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(213, 213, 7, 0x0000, 0x10, 24, 3),
+ PINS_FIELD_BASE(214, 219, 7, 0x0000, 0x10, 0, 3),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_pupd_range[] = {
+ PIN_FIELD_BASE(10, 15, 1, 0x0040, 0x10, 0, 1),
+ PIN_FIELD_BASE(45, 45, 6, 0x0070, 0x10, 3, 1),
+ PIN_FIELD_BASE(46, 46, 6, 0x0070, 0x10, 5, 1),
+ PIN_FIELD_BASE(47, 47, 6, 0x0070, 0x10, 4, 1),
+ PIN_FIELD_BASE(48, 49, 6, 0x0070, 0x10, 1, 1),
+ PIN_FIELD_BASE(50, 50, 6, 0x0070, 0x10, 0, 1),
+ PIN_FIELD_BASE(51, 52, 3, 0x0040, 0x10, 0, 1),
+ PIN_FIELD_BASE(53, 53, 3, 0x0040, 0x10, 5, 1),
+ PIN_FIELD_BASE(54, 54, 3, 0x0040, 0x10, 2, 1),
+ PIN_FIELD_BASE(55, 55, 3, 0x0040, 0x10, 4, 1),
+ PIN_FIELD_BASE(56, 56, 3, 0x0040, 0x10, 3, 1),
+ PIN_FIELD_BASE(152, 152, 5, 0x0060, 0x10, 3, 1),
+ PIN_FIELD_BASE(153, 153, 5, 0x0060, 0x10, 2, 1),
+ PIN_FIELD_BASE(154, 155, 5, 0x0060, 0x10, 0, 1),
+ PIN_FIELD_BASE(183, 184, 7, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(185, 185, 7, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(186, 186, 7, 0x0080, 0x10, 6, 1),
+ PIN_FIELD_BASE(187, 187, 7, 0x0080, 0x10, 8, 1),
+ PIN_FIELD_BASE(188, 188, 7, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(189, 189, 7, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(190, 191, 7, 0x0080, 0x10, 9, 1),
+ PIN_FIELD_BASE(192, 192, 7, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(193, 193, 7, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(194, 194, 7, 0x0080, 0x10, 11, 1),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_r0_range[] = {
+ PIN_FIELD_BASE(10, 15, 1, 0x0060, 0x10, 0, 1),
+ PIN_FIELD_BASE(24, 24, 7, 0x00e0, 0x10, 0, 1),
+ PIN_FIELD_BASE(25, 25, 7, 0x00e0, 0x10, 2, 1),
+ PIN_FIELD_BASE(45, 45, 6, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(46, 46, 6, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(47, 47, 6, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(48, 49, 6, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(50, 50, 6, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(51, 52, 3, 0x0060, 0x10, 0, 1),
+ PIN_FIELD_BASE(53, 53, 3, 0x0060, 0x10, 5, 1),
+ PIN_FIELD_BASE(54, 54, 3, 0x0060, 0x10, 2, 1),
+ PIN_FIELD_BASE(55, 55, 3, 0x0060, 0x10, 4, 1),
+ PIN_FIELD_BASE(56, 56, 3, 0x0060, 0x10, 3, 1),
+ PIN_FIELD_BASE(118, 118, 2, 0x00e0, 0x10, 0, 1),
+ PIN_FIELD_BASE(119, 119, 2, 0x00e0, 0x10, 12, 1),
+ PIN_FIELD_BASE(120, 120, 2, 0x00e0, 0x10, 10, 1),
+ PIN_FIELD_BASE(121, 121, 2, 0x00e0, 0x10, 22, 1),
+ PIN_FIELD_BASE(122, 122, 2, 0x00e0, 0x10, 8, 1),
+ PIN_FIELD_BASE(123, 123, 2, 0x00e0, 0x10, 20, 1),
+ PIN_FIELD_BASE(124, 124, 2, 0x00e0, 0x10, 6, 1),
+ PIN_FIELD_BASE(125, 125, 2, 0x00e0, 0x10, 18, 1),
+ PIN_FIELD_BASE(139, 139, 2, 0x00e0, 0x10, 4, 1),
+ PIN_FIELD_BASE(140, 140, 2, 0x00e0, 0x10, 16, 1),
+ PIN_FIELD_BASE(141, 141, 2, 0x00e0, 0x10, 2, 1),
+ PIN_FIELD_BASE(142, 142, 2, 0x00e0, 0x10, 14, 1),
+ PIN_FIELD_BASE(152, 152, 5, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(153, 153, 5, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(154, 155, 5, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(160, 160, 5, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(161, 161, 5, 0x00b0, 0x10, 2, 1),
+ PIN_FIELD_BASE(183, 184, 7, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(185, 185, 7, 0x00a0, 0x10, 4, 1),
+ PIN_FIELD_BASE(186, 186, 7, 0x00a0, 0x10, 6, 1),
+ PIN_FIELD_BASE(187, 187, 7, 0x00a0, 0x10, 8, 1),
+ PIN_FIELD_BASE(188, 188, 7, 0x00a0, 0x10, 3, 1),
+ PIN_FIELD_BASE(189, 189, 7, 0x00a0, 0x10, 7, 1),
+ PIN_FIELD_BASE(190, 191, 7, 0x00a0, 0x10, 9, 1),
+ PIN_FIELD_BASE(192, 192, 7, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(193, 193, 7, 0x00a0, 0x10, 5, 1),
+ PIN_FIELD_BASE(194, 194, 7, 0x00a0, 0x10, 11, 1),
+ PIN_FIELD_BASE(200, 200, 7, 0x00e0, 0x10, 6, 1),
+ PIN_FIELD_BASE(201, 201, 7, 0x00e0, 0x10, 10, 1),
+ PIN_FIELD_BASE(202, 202, 7, 0x00e0, 0x10, 4, 1),
+ PIN_FIELD_BASE(203, 203, 7, 0x00e0, 0x10, 8, 1),
+ PIN_FIELD_BASE(204, 204, 6, 0x00d0, 0x10, 0, 1),
+ PIN_FIELD_BASE(205, 205, 6, 0x00d0, 0x10, 2, 1),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_r1_range[] = {
+ PIN_FIELD_BASE(10, 15, 1, 0x0070, 0x10, 0, 1),
+ PIN_FIELD_BASE(24, 24, 7, 0x00e0, 0x10, 1, 1),
+ PIN_FIELD_BASE(25, 25, 7, 0x00e0, 0x10, 3, 1),
+ PIN_FIELD_BASE(45, 45, 6, 0x00a0, 0x10, 3, 1),
+ PIN_FIELD_BASE(46, 46, 6, 0x00a0, 0x10, 5, 1),
+ PIN_FIELD_BASE(47, 47, 6, 0x00a0, 0x10, 4, 1),
+ PIN_FIELD_BASE(48, 49, 6, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(50, 50, 6, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(51, 52, 3, 0x0070, 0x10, 0, 1),
+ PIN_FIELD_BASE(53, 53, 3, 0x0070, 0x10, 5, 1),
+ PIN_FIELD_BASE(54, 54, 3, 0x0070, 0x10, 2, 1),
+ PIN_FIELD_BASE(55, 55, 3, 0x0070, 0x10, 4, 1),
+ PIN_FIELD_BASE(56, 56, 3, 0x0070, 0x10, 3, 1),
+ PIN_FIELD_BASE(118, 118, 2, 0x00e0, 0x10, 1, 1),
+ PIN_FIELD_BASE(119, 119, 2, 0x00e0, 0x10, 13, 1),
+ PIN_FIELD_BASE(120, 120, 2, 0x00e0, 0x10, 11, 1),
+ PIN_FIELD_BASE(121, 121, 2, 0x00e0, 0x10, 23, 1),
+ PIN_FIELD_BASE(122, 122, 2, 0x00e0, 0x10, 9, 1),
+ PIN_FIELD_BASE(123, 123, 2, 0x00e0, 0x10, 21, 1),
+ PIN_FIELD_BASE(124, 124, 2, 0x00e0, 0x10, 7, 1),
+ PIN_FIELD_BASE(125, 125, 2, 0x00e0, 0x10, 19, 1),
+ PIN_FIELD_BASE(139, 139, 2, 0x00e0, 0x10, 5, 1),
+ PIN_FIELD_BASE(140, 140, 2, 0x00e0, 0x10, 17, 1),
+ PIN_FIELD_BASE(141, 141, 2, 0x00e0, 0x10, 3, 1),
+ PIN_FIELD_BASE(142, 142, 2, 0x00e0, 0x10, 15, 1),
+ PIN_FIELD_BASE(152, 152, 5, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(153, 153, 5, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(154, 155, 5, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(160, 160, 5, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(161, 161, 5, 0x00b0, 0x10, 3, 1),
+ PIN_FIELD_BASE(183, 184, 7, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(185, 185, 7, 0x00b0, 0x10, 4, 1),
+ PIN_FIELD_BASE(186, 186, 7, 0x00b0, 0x10, 6, 1),
+ PIN_FIELD_BASE(187, 187, 7, 0x00b0, 0x10, 8, 1),
+ PIN_FIELD_BASE(188, 188, 7, 0x00b0, 0x10, 3, 1),
+ PIN_FIELD_BASE(189, 189, 7, 0x00b0, 0x10, 7, 1),
+ PIN_FIELD_BASE(190, 191, 7, 0x00b0, 0x10, 9, 1),
+ PIN_FIELD_BASE(192, 192, 7, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(193, 193, 7, 0x00b0, 0x10, 5, 1),
+ PIN_FIELD_BASE(194, 194, 7, 0x00b0, 0x10, 11, 1),
+ PIN_FIELD_BASE(200, 200, 7, 0x00e0, 0x10, 7, 1),
+ PIN_FIELD_BASE(201, 201, 7, 0x00e0, 0x10, 11, 1),
+ PIN_FIELD_BASE(202, 202, 7, 0x00e0, 0x10, 5, 1),
+ PIN_FIELD_BASE(203, 203, 7, 0x00e0, 0x10, 9, 1),
+ PIN_FIELD_BASE(204, 204, 6, 0x00d0, 0x10, 1, 1),
+ PIN_FIELD_BASE(205, 205, 6, 0x00d0, 0x10, 3, 1),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_drv_adv_range[] = {
+ PIN_FIELD_BASE(24, 24, 7, 0x0030, 0x10, 0, 3),
+ PIN_FIELD_BASE(25, 25, 7, 0x0030, 0x10, 3, 3),
+ PIN_FIELD_BASE(89, 89, 2, 0x0050, 0x10, 6, 5),
+ PIN_FIELD_BASE(90, 90, 2, 0x0050, 0x10, 11, 5),
+ PIN_FIELD_BASE(118, 118, 2, 0x0040, 0x10, 0, 3),
+ PIN_FIELD_BASE(119, 119, 2, 0x0040, 0x10, 18, 3),
+ PIN_FIELD_BASE(120, 120, 2, 0x0040, 0x10, 15, 3),
+ PIN_FIELD_BASE(121, 121, 2, 0x0050, 0x10, 3, 3),
+ PIN_FIELD_BASE(122, 122, 2, 0x0040, 0x10, 12, 3),
+ PIN_FIELD_BASE(123, 123, 2, 0x0050, 0x10, 0, 3),
+ PIN_FIELD_BASE(124, 124, 2, 0x0040, 0x10, 9, 3),
+ PIN_FIELD_BASE(125, 125, 2, 0x0040, 0x10, 27, 3),
+ PIN_FIELD_BASE(139, 139, 2, 0x0040, 0x10, 6, 3),
+ PIN_FIELD_BASE(140, 140, 2, 0x0040, 0x10, 24, 3),
+ PIN_FIELD_BASE(141, 141, 2, 0x0040, 0x10, 3, 3),
+ PIN_FIELD_BASE(142, 142, 2, 0x0040, 0x10, 21, 3),
+ PIN_FIELD_BASE(160, 160, 5, 0x0020, 0x10, 0, 3),
+ PIN_FIELD_BASE(161, 161, 5, 0x0020, 0x10, 3, 3),
+ PIN_FIELD_BASE(200, 200, 7, 0x0030, 0x10, 9, 3),
+ PIN_FIELD_BASE(201, 201, 7, 0x0030, 0x10, 15, 3),
+ PIN_FIELD_BASE(202, 202, 7, 0x0030, 0x10, 6, 3),
+ PIN_FIELD_BASE(203, 203, 7, 0x0030, 0x10, 12, 3),
+ PIN_FIELD_BASE(204, 204, 6, 0x0020, 0x10, 0, 3),
+ PIN_FIELD_BASE(205, 205, 6, 0x0020, 0x10, 3, 3),
+};
+
+static const struct mtk_pin_field_calc mt6893_pin_rsel_range[] = {
+ PIN_FIELD_BASE(24, 24, 7, 0x00e0, 0x10, 0, 2),
+ PIN_FIELD_BASE(25, 25, 7, 0x00e0, 0x10, 2, 2),
+ PIN_FIELD_BASE(118, 118, 2, 0x00e0, 0x10, 0, 2),
+ PIN_FIELD_BASE(119, 119, 2, 0x00e0, 0x10, 12, 2),
+ PIN_FIELD_BASE(120, 120, 2, 0x00e0, 0x10, 10, 2),
+ PIN_FIELD_BASE(121, 121, 2, 0x00e0, 0x10, 22, 2),
+ PIN_FIELD_BASE(122, 122, 2, 0x00e0, 0x10, 8, 2),
+ PIN_FIELD_BASE(123, 123, 2, 0x00e0, 0x10, 20, 2),
+ PIN_FIELD_BASE(124, 124, 2, 0x00e0, 0x10, 6, 2),
+ PIN_FIELD_BASE(125, 125, 2, 0x00e0, 0x10, 18, 2),
+ PIN_FIELD_BASE(139, 139, 2, 0x00e0, 0x10, 4, 2),
+ PIN_FIELD_BASE(140, 140, 2, 0x00e0, 0x10, 16, 2),
+ PIN_FIELD_BASE(141, 141, 2, 0x00e0, 0x10, 2, 2),
+ PIN_FIELD_BASE(142, 142, 2, 0x00e0, 0x10, 14, 2),
+ PIN_FIELD_BASE(160, 160, 5, 0x00b0, 0x10, 0, 2),
+ PIN_FIELD_BASE(161, 161, 5, 0x00b0, 0x10, 2, 2),
+ PIN_FIELD_BASE(200, 200, 7, 0x00e0, 0x10, 6, 2),
+ PIN_FIELD_BASE(201, 201, 7, 0x00e0, 0x10, 10, 2),
+ PIN_FIELD_BASE(202, 202, 7, 0x00e0, 0x10, 4, 2),
+ PIN_FIELD_BASE(203, 203, 7, 0x00e0, 0x10, 8, 2),
+ PIN_FIELD_BASE(204, 204, 6, 0x00d0, 0x10, 0, 2),
+ PIN_FIELD_BASE(205, 205, 6, 0x00d0, 0x10, 2, 2),
+};
+
+static const unsigned int mt6893_pull_type[] = {
+ MTK_PULL_PU_PD_TYPE, /* 0 */ MTK_PULL_PU_PD_TYPE, /* 1 */
+ MTK_PULL_PU_PD_TYPE, /* 2 */ MTK_PULL_PU_PD_TYPE, /* 3 */
+ MTK_PULL_PU_PD_TYPE, /* 4 */ MTK_PULL_PU_PD_TYPE, /* 5 */
+ MTK_PULL_PU_PD_TYPE, /* 6 */ MTK_PULL_PU_PD_TYPE, /* 7 */
+ MTK_PULL_PU_PD_TYPE, /* 8 */ MTK_PULL_PU_PD_TYPE, /* 9 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 10 */ MTK_PULL_PUPD_R1R0_TYPE, /* 11 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 12 */ MTK_PULL_PUPD_R1R0_TYPE, /* 13 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 14 */ MTK_PULL_PUPD_R1R0_TYPE, /* 15 */
+ MTK_PULL_PU_PD_TYPE, /* 16 */ MTK_PULL_PU_PD_TYPE, /* 17 */
+ MTK_PULL_PU_PD_TYPE, /* 18 */ MTK_PULL_PU_PD_TYPE, /* 19 */
+ MTK_PULL_PU_PD_TYPE, /* 20 */ MTK_PULL_PU_PD_TYPE, /* 21 */
+ MTK_PULL_PU_PD_TYPE, /* 22 */ MTK_PULL_PU_PD_TYPE, /* 23 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 24 */ MTK_PULL_PU_PD_RSEL_TYPE, /* 25 */
+ MTK_PULL_PU_PD_TYPE, /* 26 */ MTK_PULL_PU_PD_TYPE, /* 27 */
+ MTK_PULL_PU_PD_TYPE, /* 28 */ MTK_PULL_PU_PD_TYPE, /* 29 */
+ MTK_PULL_PU_PD_TYPE, /* 30 */ MTK_PULL_PU_PD_TYPE, /* 31 */
+ MTK_PULL_PU_PD_TYPE, /* 32 */ MTK_PULL_PU_PD_TYPE, /* 33 */
+ MTK_PULL_PU_PD_TYPE, /* 34 */ MTK_PULL_PU_PD_TYPE, /* 35 */
+ MTK_PULL_PU_PD_TYPE, /* 36 */ MTK_PULL_PU_PD_TYPE, /* 37 */
+ MTK_PULL_PU_PD_TYPE, /* 38 */ MTK_PULL_PU_PD_TYPE, /* 39 */
+ MTK_PULL_PU_PD_TYPE, /* 40 */ MTK_PULL_PU_PD_TYPE, /* 41 */
+ MTK_PULL_PU_PD_TYPE, /* 42 */ MTK_PULL_PU_PD_TYPE, /* 43 */
+ MTK_PULL_PU_PD_TYPE, /* 44 */ MTK_PULL_PUPD_R1R0_TYPE, /* 45 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 46 */ MTK_PULL_PUPD_R1R0_TYPE, /* 47 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 48 */ MTK_PULL_PUPD_R1R0_TYPE, /* 49 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 50 */ MTK_PULL_PUPD_R1R0_TYPE, /* 51 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 52 */ MTK_PULL_PUPD_R1R0_TYPE, /* 53 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 54 */ MTK_PULL_PUPD_R1R0_TYPE, /* 55 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 56 */ MTK_PULL_PU_PD_TYPE, /* 57 */
+ MTK_PULL_PU_PD_TYPE, /* 58 */ MTK_PULL_PU_PD_TYPE, /* 59 */
+ MTK_PULL_PU_PD_TYPE, /* 60 */ MTK_PULL_PU_PD_TYPE, /* 61 */
+ MTK_PULL_PU_PD_TYPE, /* 62 */ MTK_PULL_PU_PD_TYPE, /* 63 */
+ MTK_PULL_PU_PD_TYPE, /* 64 */ MTK_PULL_PU_PD_TYPE, /* 65 */
+ MTK_PULL_PU_PD_TYPE, /* 66 */ MTK_PULL_PU_PD_TYPE, /* 67 */
+ MTK_PULL_PU_PD_TYPE, /* 68 */ MTK_PULL_PU_PD_TYPE, /* 69 */
+ MTK_PULL_PU_PD_TYPE, /* 70 */ MTK_PULL_PU_PD_TYPE, /* 71 */
+ MTK_PULL_PU_PD_TYPE, /* 72 */ MTK_PULL_PU_PD_TYPE, /* 73 */
+ MTK_PULL_PU_PD_TYPE, /* 74 */ MTK_PULL_PU_PD_TYPE, /* 75 */
+ MTK_PULL_PU_PD_TYPE, /* 76 */ MTK_PULL_PU_PD_TYPE, /* 77 */
+ MTK_PULL_PU_PD_TYPE, /* 78 */ MTK_PULL_PU_PD_TYPE, /* 79 */
+ MTK_PULL_PU_PD_TYPE, /* 80 */ MTK_PULL_PU_PD_TYPE, /* 81 */
+ MTK_PULL_PU_PD_TYPE, /* 82 */ MTK_PULL_PU_PD_TYPE, /* 83 */
+ MTK_PULL_PU_PD_TYPE, /* 84 */ MTK_PULL_PU_PD_TYPE, /* 85 */
+ MTK_PULL_PU_PD_TYPE, /* 86 */ MTK_PULL_PU_PD_TYPE, /* 87 */
+ MTK_PULL_PU_PD_TYPE, /* 88 */ MTK_PULL_PU_PD_TYPE, /* 89 */
+ MTK_PULL_PU_PD_TYPE, /* 90 */ MTK_PULL_PU_PD_TYPE, /* 91 */
+ MTK_PULL_PU_PD_TYPE, /* 92 */ MTK_PULL_PU_PD_TYPE, /* 93 */
+ MTK_PULL_PU_PD_TYPE, /* 94 */ MTK_PULL_PU_PD_TYPE, /* 95 */
+ MTK_PULL_PU_PD_TYPE, /* 96 */ MTK_PULL_PU_PD_TYPE, /* 97 */
+ MTK_PULL_PU_PD_TYPE, /* 98 */ MTK_PULL_PU_PD_TYPE, /* 99 */
+ MTK_PULL_PU_PD_TYPE, /* 100 */ MTK_PULL_PU_PD_TYPE, /* 101 */
+ MTK_PULL_PU_PD_TYPE, /* 102 */ MTK_PULL_PU_PD_TYPE, /* 103 */
+ MTK_PULL_PU_PD_TYPE, /* 104 */ MTK_PULL_PU_PD_TYPE, /* 105 */
+ MTK_PULL_PU_PD_TYPE, /* 106 */ MTK_PULL_PU_PD_TYPE, /* 107 */
+ MTK_PULL_PU_PD_TYPE, /* 108 */ MTK_PULL_PU_PD_TYPE, /* 109 */
+ MTK_PULL_PU_PD_TYPE, /* 110 */ MTK_PULL_PU_PD_TYPE, /* 111 */
+ MTK_PULL_PU_PD_TYPE, /* 112 */ MTK_PULL_PU_PD_TYPE, /* 113 */
+ MTK_PULL_PU_PD_TYPE, /* 114 */ MTK_PULL_PU_PD_TYPE, /* 115 */
+ MTK_PULL_PU_PD_TYPE, /* 116 */ MTK_PULL_PU_PD_TYPE, /* 117 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 118 */ MTK_PULL_PU_PD_RSEL_TYPE, /* 119 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 120 */ MTK_PULL_PU_PD_RSEL_TYPE, /* 121 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 122 */ MTK_PULL_PU_PD_RSEL_TYPE, /* 123 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 124 */ MTK_PULL_PU_PD_RSEL_TYPE, /* 125 */
+ MTK_PULL_PU_PD_TYPE, /* 126 */ MTK_PULL_PU_PD_TYPE, /* 127 */
+ MTK_PULL_PU_PD_TYPE, /* 128 */ MTK_PULL_PU_PD_TYPE, /* 129 */
+ MTK_PULL_PU_PD_TYPE, /* 130 */ MTK_PULL_PU_PD_TYPE, /* 131 */
+ MTK_PULL_PU_PD_TYPE, /* 132 */ MTK_PULL_PU_PD_TYPE, /* 133 */
+ MTK_PULL_PU_PD_TYPE, /* 134 */ MTK_PULL_PU_PD_TYPE, /* 135 */
+ MTK_PULL_PU_PD_TYPE, /* 136 */ MTK_PULL_PU_PD_TYPE, /* 137 */
+ MTK_PULL_PU_PD_TYPE, /* 138 */ MTK_PULL_PU_PD_TYPE, /* 139 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 140 */ MTK_PULL_PU_PD_RSEL_TYPE, /* 141 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 142 */ MTK_PULL_PU_PD_TYPE, /* 143 */
+ MTK_PULL_PU_PD_TYPE, /* 144 */ MTK_PULL_PU_PD_TYPE, /* 145 */
+ MTK_PULL_PU_PD_TYPE, /* 146 */ MTK_PULL_PU_PD_TYPE, /* 147 */
+ MTK_PULL_PU_PD_TYPE, /* 148 */ MTK_PULL_PU_PD_TYPE, /* 149 */
+ MTK_PULL_PU_PD_TYPE, /* 150 */ MTK_PULL_PU_PD_TYPE, /* 151 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 152 */ MTK_PULL_PUPD_R1R0_TYPE, /* 153 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 154 */ MTK_PULL_PUPD_R1R0_TYPE, /* 155 */
+ MTK_PULL_PU_PD_TYPE, /* 156 */ MTK_PULL_PU_PD_TYPE, /* 157 */
+ MTK_PULL_PU_PD_TYPE, /* 158 */ MTK_PULL_PU_PD_TYPE, /* 159 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 160 */ MTK_PULL_PU_PD_RSEL_TYPE, /* 161 */
+ MTK_PULL_PU_PD_TYPE, /* 162 */ MTK_PULL_PU_PD_TYPE, /* 163 */
+ MTK_PULL_PU_PD_TYPE, /* 164 */ MTK_PULL_PU_PD_TYPE, /* 165 */
+ MTK_PULL_PU_PD_TYPE, /* 166 */ MTK_PULL_PU_PD_TYPE, /* 167 */
+ MTK_PULL_PU_PD_TYPE, /* 168 */ MTK_PULL_PU_PD_TYPE, /* 169 */
+ MTK_PULL_PU_PD_TYPE, /* 170 */ MTK_PULL_PU_PD_TYPE, /* 171 */
+ MTK_PULL_PU_PD_TYPE, /* 172 */ MTK_PULL_PU_PD_TYPE, /* 173 */
+ MTK_PULL_PU_PD_TYPE, /* 174 */ MTK_PULL_PU_PD_TYPE, /* 175 */
+ MTK_PULL_PU_PD_TYPE, /* 176 */ MTK_PULL_PU_PD_TYPE, /* 177 */
+ MTK_PULL_PU_PD_TYPE, /* 178 */ MTK_PULL_PU_PD_TYPE, /* 179 */
+ MTK_PULL_PU_PD_TYPE, /* 180 */ MTK_PULL_PU_PD_TYPE, /* 181 */
+ MTK_PULL_PU_PD_TYPE, /* 182 */ MTK_PULL_PUPD_R1R0_TYPE, /* 183 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 184 */ MTK_PULL_PUPD_R1R0_TYPE, /* 185 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 186 */ MTK_PULL_PUPD_R1R0_TYPE, /* 187 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 188 */ MTK_PULL_PUPD_R1R0_TYPE, /* 189 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 190 */ MTK_PULL_PUPD_R1R0_TYPE, /* 191 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 192 */ MTK_PULL_PUPD_R1R0_TYPE, /* 193 */
+ MTK_PULL_PUPD_R1R0_TYPE, /* 194 */ MTK_PULL_PU_PD_TYPE, /* 195 */
+ MTK_PULL_PU_PD_TYPE, /* 196 */ MTK_PULL_PU_PD_TYPE, /* 197 */
+ MTK_PULL_PU_PD_TYPE, /* 198 */ MTK_PULL_PU_PD_TYPE, /* 199 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 200 */ MTK_PULL_PU_PD_RSEL_TYPE, /* 201 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 202 */ MTK_PULL_PU_PD_RSEL_TYPE, /* 203 */
+ MTK_PULL_PU_PD_RSEL_TYPE, /* 204 */ MTK_PULL_PU_PD_RSEL_TYPE, /* 205 */
+ MTK_PULL_PU_PD_TYPE, /* 206 */ MTK_PULL_PU_PD_TYPE, /* 207 */
+ MTK_PULL_PU_PD_TYPE, /* 208 */ MTK_PULL_PU_PD_TYPE, /* 209 */
+ MTK_PULL_PU_PD_TYPE, /* 210 */ MTK_PULL_PU_PD_TYPE, /* 211 */
+ MTK_PULL_PU_PD_TYPE, /* 212 */ MTK_PULL_PU_PD_TYPE, /* 213 */
+ MTK_PULL_PU_PD_TYPE, /* 214 */ MTK_PULL_PU_PD_TYPE, /* 215 */
+ MTK_PULL_PU_PD_TYPE, /* 216 */ MTK_PULL_PU_PD_TYPE, /* 217 */
+ MTK_PULL_PU_PD_TYPE, /* 218 */ MTK_PULL_PU_PD_TYPE, /* 219 */
+};
+
+static const char * const mt6893_pinctrl_register_base_name[] = {
+ "base", "rm", "bm", "bl", "br", "lm", "lb", "rt", "lt", "tl",
+};
+
+static const struct mtk_pin_reg_calc mt6893_reg_cals[PINCTRL_PIN_REG_MAX] = {
+ [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt6893_pin_mode_range),
+ [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt6893_pin_dir_range),
+ [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt6893_pin_di_range),
+ [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt6893_pin_do_range),
+ [PINCTRL_PIN_REG_SR] = MTK_RANGE(mt6893_pin_dir_range),
+ [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt6893_pin_smt_range),
+ [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt6893_pin_ies_range),
+ [PINCTRL_PIN_REG_PU] = MTK_RANGE(mt6893_pin_pu_range),
+ [PINCTRL_PIN_REG_PD] = MTK_RANGE(mt6893_pin_pd_range),
+ [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt6893_pin_drv_range),
+ [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt6893_pin_pupd_range),
+ [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt6893_pin_r0_range),
+ [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt6893_pin_r1_range),
+ [PINCTRL_PIN_REG_DRV_ADV] = MTK_RANGE(mt6893_pin_drv_adv_range),
+ [PINCTRL_PIN_REG_RSEL] = MTK_RANGE(mt6893_pin_rsel_range),
+};
+
+static const struct mtk_eint_hw mt6893_eint_hw = {
+ .port_mask = 7,
+ .ports = 7,
+ .ap_num = 224,
+ .db_cnt = 32,
+ .db_time = debounce_time_mt6765,
+};
+
+static const struct mtk_pin_soc mt6893_data = {
+ .reg_cal = mt6893_reg_cals,
+ .pins = mtk_pins_mt6893,
+ .npins = ARRAY_SIZE(mtk_pins_mt6893),
+ .ngrps = ARRAY_SIZE(mtk_pins_mt6893),
+ .eint_hw = &mt6893_eint_hw,
+ .nfuncs = 8,
+ .gpio_m = 0,
+ .base_names = mt6893_pinctrl_register_base_name,
+ .nbase_names = ARRAY_SIZE(mt6893_pinctrl_register_base_name),
+ .pull_type = mt6893_pull_type,
+ .bias_set_combo = mtk_pinconf_bias_set_combo,
+ .bias_get_combo = mtk_pinconf_bias_get_combo,
+ .drive_set = mtk_pinconf_drive_set_rev1,
+ .drive_get = mtk_pinconf_drive_get_rev1,
+ .adv_drive_set = mtk_pinconf_adv_drive_set_raw,
+ .adv_drive_get = mtk_pinconf_adv_drive_get_raw,
+};
+
+static const struct of_device_id mt6893_pinctrl_of_match[] = {
+ { .compatible = "mediatek,mt6893-pinctrl", .data = &mt6893_data },
+ { /* sentinel */ }
+};
+
+static struct platform_driver mt6893_pinctrl_driver = {
+ .driver = {
+ .name = "mt6893-pinctrl",
+ .of_match_table = mt6893_pinctrl_of_match,
+ .pm = pm_sleep_ptr(&mtk_paris_pinctrl_pm_ops)
+ },
+ .probe = mtk_paris_pinctrl_probe,
+};
+
+static int __init mt6893_pinctrl_init(void)
+{
+ return platform_driver_register(&mt6893_pinctrl_driver);
+}
+
+arch_initcall(mt6893_pinctrl_init);
+
+MODULE_DESCRIPTION("MediaTek MT6893 Pinctrl Driver");
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8196.c b/drivers/pinctrl/mediatek/pinctrl-mt8196.c
new file mode 100644
index 000000000000..82a73929c7a0
--- /dev/null
+++ b/drivers/pinctrl/mediatek/pinctrl-mt8196.c
@@ -0,0 +1,1860 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 MediaTek Inc.
+ * Author: Guodong Liu <Guodong.Liu@mediatek.com>
+ * Lei Xue <lei.xue@mediatek.com>
+ * Cathy Xu <ot_cathy.xu@mediatek.com>
+ */
+
+#include <linux/module.h>
+#include "pinctrl-mtk-mt8196.h"
+#include "pinctrl-paris.h"
+
+#define PIN_FIELD_BASE(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits) \
+ PIN_FIELD_CALC(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits, \
+ 32, 0)
+
+#define PINS_FIELD_BASE(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits) \
+ PIN_FIELD_CALC(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits, \
+ 32, 1)
+
+static const struct mtk_pin_field_calc mt8196_pin_mode_range[] = {
+ PIN_FIELD(0, 270, 0x0300, 0x10, 0, 4),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_dir_range[] = {
+ PIN_FIELD(0, 270, 0x0000, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_di_range[] = {
+ PIN_FIELD(0, 270, 0x0200, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_do_range[] = {
+ PIN_FIELD(0, 270, 0x0100, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_smt_range[] = {
+ PIN_FIELD_BASE(0, 0, 8, 0x00d0, 0x10, 0, 1),
+ PIN_FIELD_BASE(1, 1, 8, 0x00d0, 0x10, 1, 1),
+ PIN_FIELD_BASE(2, 2, 11, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(3, 3, 11, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(4, 4, 11, 0x00a0, 0x10, 2, 1),
+ PIN_FIELD_BASE(5, 5, 11, 0x00a0, 0x10, 2, 1),
+ PIN_FIELD_BASE(6, 6, 11, 0x00a0, 0x10, 2, 1),
+ PIN_FIELD_BASE(7, 7, 11, 0x00a0, 0x10, 2, 1),
+ PIN_FIELD_BASE(8, 8, 11, 0x00a0, 0x10, 3, 1),
+ PIN_FIELD_BASE(9, 9, 9, 0x0120, 0x10, 13, 1),
+ PIN_FIELD_BASE(10, 10, 9, 0x0120, 0x10, 12, 1),
+ PIN_FIELD_BASE(11, 11, 8, 0x00d0, 0x10, 2, 1),
+ PIN_FIELD_BASE(12, 12, 9, 0x0120, 0x10, 15, 1),
+ PIN_FIELD_BASE(13, 13, 6, 0x0120, 0x10, 3, 1),
+ PIN_FIELD_BASE(14, 14, 3, 0x00c0, 0x10, 0, 1),
+ PIN_FIELD_BASE(15, 15, 6, 0x0120, 0x10, 0, 1),
+ PIN_FIELD_BASE(16, 16, 6, 0x0120, 0x10, 3, 1),
+ PIN_FIELD_BASE(17, 17, 6, 0x0120, 0x10, 3, 1),
+ PIN_FIELD_BASE(18, 18, 6, 0x0120, 0x10, 1, 1),
+ PIN_FIELD_BASE(19, 19, 6, 0x0120, 0x10, 2, 1),
+ PIN_FIELD_BASE(20, 20, 3, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(21, 21, 2, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(22, 22, 2, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(23, 23, 2, 0x00b0, 0x10, 2, 1),
+ PIN_FIELD_BASE(24, 24, 2, 0x00b0, 0x10, 3, 1),
+ PIN_FIELD_BASE(25, 25, 2, 0x00b0, 0x10, 4, 1),
+ PIN_FIELD_BASE(26, 26, 2, 0x00b0, 0x10, 5, 1),
+ PIN_FIELD_BASE(27, 27, 2, 0x00b0, 0x10, 7, 1),
+ PIN_FIELD_BASE(28, 28, 2, 0x00b0, 0x10, 7, 1),
+ PIN_FIELD_BASE(29, 29, 2, 0x00b0, 0x10, 7, 1),
+ PIN_FIELD_BASE(30, 30, 2, 0x00b0, 0x10, 8, 1),
+ PIN_FIELD_BASE(31, 31, 2, 0x00b0, 0x10, 8, 1),
+ PIN_FIELD_BASE(32, 32, 1, 0x00c0, 0x10, 8, 1),
+ PIN_FIELD_BASE(33, 33, 1, 0x00c0, 0x10, 8, 1),
+ PIN_FIELD_BASE(34, 34, 1, 0x00c0, 0x10, 8, 1),
+ PIN_FIELD_BASE(35, 35, 1, 0x00c0, 0x10, 8, 1),
+ PIN_FIELD_BASE(36, 36, 1, 0x00c0, 0x10, 9, 1),
+ PIN_FIELD_BASE(37, 37, 1, 0x00c0, 0x10, 9, 1),
+ PIN_FIELD_BASE(38, 38, 1, 0x00c0, 0x10, 6, 1),
+ PIN_FIELD_BASE(39, 39, 8, 0x00d0, 0x10, 4, 1),
+ PIN_FIELD_BASE(40, 40, 8, 0x00d0, 0x10, 3, 1),
+ PIN_FIELD_BASE(41, 41, 8, 0x00d0, 0x10, 3, 1),
+ PIN_FIELD_BASE(42, 42, 8, 0x00d0, 0x10, 3, 1),
+ PIN_FIELD_BASE(43, 43, 8, 0x00d0, 0x10, 3, 1),
+ PIN_FIELD_BASE(44, 44, 8, 0x00d0, 0x10, 5, 1),
+ PIN_FIELD_BASE(45, 45, 8, 0x00d0, 0x10, 5, 1),
+ PIN_FIELD_BASE(46, 46, 8, 0x00d0, 0x10, 6, 1),
+ PIN_FIELD_BASE(47, 47, 8, 0x00d0, 0x10, 9, 1),
+ PIN_FIELD_BASE(48, 48, 8, 0x00d0, 0x10, 7, 1),
+ PIN_FIELD_BASE(49, 49, 8, 0x00d0, 0x10, 10, 1),
+ PIN_FIELD_BASE(50, 50, 8, 0x00d0, 0x10, 8, 1),
+ PIN_FIELD_BASE(51, 51, 8, 0x00d0, 0x10, 11, 1),
+ PIN_FIELD_BASE(52, 52, 9, 0x0120, 0x10, 7, 1),
+ PIN_FIELD_BASE(53, 53, 9, 0x0120, 0x10, 8, 1),
+ PIN_FIELD_BASE(54, 54, 9, 0x0120, 0x10, 2, 1),
+ PIN_FIELD_BASE(55, 55, 9, 0x0120, 0x10, 1, 1),
+ PIN_FIELD_BASE(56, 56, 9, 0x0120, 0x10, 5, 1),
+ PIN_FIELD_BASE(57, 57, 9, 0x0120, 0x10, 6, 1),
+ PIN_FIELD_BASE(58, 58, 9, 0x0120, 0x10, 3, 1),
+ PIN_FIELD_BASE(59, 59, 9, 0x0120, 0x10, 4, 1),
+ PIN_FIELD_BASE(60, 60, 9, 0x0120, 0x10, 19, 1),
+ PIN_FIELD_BASE(61, 61, 9, 0x0120, 0x10, 10, 1),
+ PIN_FIELD_BASE(62, 62, 9, 0x0120, 0x10, 9, 1),
+ PIN_FIELD_BASE(63, 63, 9, 0x0120, 0x10, 14, 1),
+ PIN_FIELD_BASE(64, 64, 9, 0x0120, 0x10, 0, 1),
+ PIN_FIELD_BASE(65, 65, 9, 0x0120, 0x10, 11, 1),
+ PIN_FIELD_BASE(66, 66, 9, 0x0120, 0x10, 16, 1),
+ PIN_FIELD_BASE(67, 67, 9, 0x0120, 0x10, 18, 1),
+ PIN_FIELD_BASE(68, 68, 9, 0x0120, 0x10, 18, 1),
+ PIN_FIELD_BASE(69, 69, 9, 0x0120, 0x10, 18, 1),
+ PIN_FIELD_BASE(70, 70, 9, 0x0120, 0x10, 17, 1),
+ PIN_FIELD_BASE(71, 71, 9, 0x0120, 0x10, 17, 1),
+ PIN_FIELD_BASE(72, 72, 9, 0x0120, 0x10, 18, 1),
+ PIN_FIELD_BASE(73, 73, 9, 0x0120, 0x10, 17, 1),
+ PIN_FIELD_BASE(74, 74, 9, 0x0120, 0x10, 17, 1),
+ PIN_FIELD_BASE(75, 75, 10, 0x00b0, 0x10, 2, 1),
+ PIN_FIELD_BASE(76, 76, 10, 0x00b0, 0x10, 3, 1),
+ PIN_FIELD_BASE(77, 77, 10, 0x00b0, 0x10, 4, 1),
+ PIN_FIELD_BASE(78, 78, 10, 0x00b0, 0x10, 5, 1),
+ PIN_FIELD_BASE(79, 79, 10, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(80, 80, 10, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(81, 81, 11, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(82, 82, 11, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(83, 83, 11, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(84, 84, 11, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(85, 85, 11, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(86, 86, 11, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(87, 87, 11, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(88, 88, 11, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(89, 89, 11, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(90, 90, 11, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(91, 91, 12, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(92, 92, 12, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(93, 93, 12, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(94, 94, 12, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(95, 95, 12, 0x00c0, 0x10, 0, 1),
+ PIN_FIELD_BASE(96, 96, 12, 0x00c0, 0x10, 2, 1),
+ PIN_FIELD_BASE(97, 97, 12, 0x00c0, 0x10, 1, 1),
+ PIN_FIELD_BASE(98, 98, 12, 0x00c0, 0x10, 3, 1),
+ PIN_FIELD_BASE(99, 99, 12, 0x00c0, 0x10, 6, 1),
+ PIN_FIELD_BASE(100, 100, 12, 0x00c0, 0x10, 9, 1),
+ PIN_FIELD_BASE(101, 101, 12, 0x00c0, 0x10, 7, 1),
+ PIN_FIELD_BASE(102, 102, 12, 0x00c0, 0x10, 10, 1),
+ PIN_FIELD_BASE(103, 103, 12, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(104, 104, 12, 0x00c0, 0x10, 8, 1),
+ PIN_FIELD_BASE(105, 105, 12, 0x00c0, 0x10, 11, 1),
+ PIN_FIELD_BASE(106, 106, 5, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(107, 107, 5, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(108, 108, 5, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(109, 109, 5, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(110, 110, 5, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(111, 111, 5, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(112, 112, 5, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(113, 113, 5, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(114, 114, 5, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(115, 115, 5, 0x00b0, 0x10, 2, 1),
+ PIN_FIELD_BASE(116, 116, 5, 0x00b0, 0x10, 2, 1),
+ PIN_FIELD_BASE(117, 117, 5, 0x00b0, 0x10, 2, 1),
+ PIN_FIELD_BASE(118, 118, 6, 0x0120, 0x10, 6, 1),
+ PIN_FIELD_BASE(119, 119, 6, 0x0120, 0x10, 7, 1),
+ PIN_FIELD_BASE(120, 120, 6, 0x0120, 0x10, 9, 1),
+ PIN_FIELD_BASE(121, 121, 6, 0x0120, 0x10, 8, 1),
+ PIN_FIELD_BASE(122, 122, 6, 0x0120, 0x10, 3, 1),
+ PIN_FIELD_BASE(123, 123, 6, 0x0120, 0x10, 4, 1),
+ PIN_FIELD_BASE(124, 124, 6, 0x0120, 0x10, 5, 1),
+ PIN_FIELD_BASE(125, 125, 7, 0x00f0, 0x10, 0, 1),
+ PIN_FIELD_BASE(126, 126, 7, 0x00f0, 0x10, 1, 1),
+ PIN_FIELD_BASE(127, 127, 7, 0x00f0, 0x10, 2, 1),
+ PIN_FIELD_BASE(128, 128, 7, 0x00f0, 0x10, 3, 1),
+ PIN_FIELD_BASE(129, 129, 7, 0x00f0, 0x10, 4, 1),
+ PIN_FIELD_BASE(130, 130, 7, 0x00f0, 0x10, 5, 1),
+ PIN_FIELD_BASE(131, 131, 7, 0x00f0, 0x10, 9, 1),
+ PIN_FIELD_BASE(132, 132, 7, 0x00f0, 0x10, 11, 1),
+ PIN_FIELD_BASE(133, 133, 7, 0x00f0, 0x10, 10, 1),
+ PIN_FIELD_BASE(134, 134, 7, 0x00f0, 0x10, 6, 1),
+ PIN_FIELD_BASE(135, 135, 7, 0x00f0, 0x10, 8, 1),
+ PIN_FIELD_BASE(136, 136, 7, 0x00f0, 0x10, 7, 1),
+ PIN_FIELD_BASE(137, 137, 4, 0x00d0, 0x10, 2, 1),
+ PIN_FIELD_BASE(138, 138, 4, 0x00d0, 0x10, 3, 1),
+ PIN_FIELD_BASE(139, 139, 4, 0x00d0, 0x10, 4, 1),
+ PIN_FIELD_BASE(140, 140, 4, 0x00d0, 0x10, 5, 1),
+ PIN_FIELD_BASE(141, 141, 4, 0x00d0, 0x10, 6, 1),
+ PIN_FIELD_BASE(142, 142, 4, 0x00d0, 0x10, 7, 1),
+ PIN_FIELD_BASE(143, 143, 4, 0x00d0, 0x10, 8, 1),
+ PIN_FIELD_BASE(144, 144, 4, 0x00d0, 0x10, 9, 1),
+ PIN_FIELD_BASE(145, 145, 4, 0x00d0, 0x10, 10, 1),
+ PIN_FIELD_BASE(146, 146, 4, 0x00d0, 0x10, 10, 1),
+ PIN_FIELD_BASE(147, 147, 4, 0x00d0, 0x10, 0, 1),
+ PIN_FIELD_BASE(148, 148, 4, 0x00d0, 0x10, 1, 1),
+ PIN_FIELD_BASE(149, 149, 4, 0x00d0, 0x10, 11, 1),
+ PIN_FIELD_BASE(150, 150, 4, 0x00d0, 0x10, 11, 1),
+ PIN_FIELD_BASE(151, 151, 4, 0x00d0, 0x10, 11, 1),
+ PIN_FIELD_BASE(152, 152, 4, 0x00d0, 0x10, 11, 1),
+ PIN_FIELD_BASE(153, 153, 4, 0x00d0, 0x10, 13, 1),
+ PIN_FIELD_BASE(154, 154, 4, 0x00d0, 0x10, 13, 1),
+ PIN_FIELD_BASE(155, 155, 4, 0x00d0, 0x10, 12, 1),
+ PIN_FIELD_BASE(156, 156, 4, 0x00d0, 0x10, 12, 1),
+ PIN_FIELD_BASE(157, 157, 2, 0x00b0, 0x10, 6, 1),
+ PIN_FIELD_BASE(158, 158, 2, 0x00b0, 0x10, 6, 1),
+ PIN_FIELD_BASE(159, 159, 2, 0x00b0, 0x10, 6, 1),
+ PIN_FIELD_BASE(160, 160, 3, 0x00c0, 0x10, 1, 1),
+ PIN_FIELD_BASE(161, 161, 3, 0x00c0, 0x10, 2, 1),
+ PIN_FIELD_BASE(162, 162, 3, 0x00c0, 0x10, 2, 1),
+ PIN_FIELD_BASE(163, 163, 3, 0x00c0, 0x10, 2, 1),
+ PIN_FIELD_BASE(164, 164, 3, 0x00c0, 0x10, 7, 1),
+ PIN_FIELD_BASE(165, 165, 3, 0x00c0, 0x10, 9, 1),
+ PIN_FIELD_BASE(166, 166, 3, 0x00c0, 0x10, 8, 1),
+ PIN_FIELD_BASE(167, 167, 3, 0x00c0, 0x10, 10, 1),
+ PIN_FIELD_BASE(168, 168, 3, 0x00c0, 0x10, 11, 1),
+ PIN_FIELD_BASE(169, 169, 3, 0x00c0, 0x10, 3, 1),
+ PIN_FIELD_BASE(170, 170, 3, 0x00c0, 0x10, 12, 1),
+ PIN_FIELD_BASE(171, 171, 3, 0x00c0, 0x10, 3, 1),
+ PIN_FIELD_BASE(172, 172, 3, 0x00c0, 0x10, 3, 1),
+ PIN_FIELD_BASE(173, 173, 3, 0x00c0, 0x10, 3, 1),
+ PIN_FIELD_BASE(174, 174, 1, 0x00c0, 0x10, 9, 1),
+ PIN_FIELD_BASE(175, 175, 1, 0x00c0, 0x10, 9, 1),
+ PIN_FIELD_BASE(176, 176, 1, 0x00c0, 0x10, 10, 1),
+ PIN_FIELD_BASE(177, 177, 1, 0x00c0, 0x10, 11, 1),
+ PIN_FIELD_BASE(178, 178, 1, 0x00c0, 0x10, 7, 1),
+ PIN_FIELD_BASE(179, 179, 1, 0x00c0, 0x10, 7, 1),
+ PIN_FIELD_BASE(180, 180, 1, 0x00c0, 0x10, 0, 1),
+ PIN_FIELD_BASE(181, 181, 1, 0x00c0, 0x10, 1, 1),
+ PIN_FIELD_BASE(182, 182, 1, 0x00c0, 0x10, 2, 1),
+ PIN_FIELD_BASE(183, 183, 1, 0x00c0, 0x10, 3, 1),
+ PIN_FIELD_BASE(184, 184, 1, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(185, 185, 1, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(186, 186, 13, 0x0110, 0x10, 14, 1),
+ PIN_FIELD_BASE(187, 187, 13, 0x0110, 0x10, 14, 1),
+ PIN_FIELD_BASE(188, 188, 13, 0x0110, 0x10, 4, 1),
+ PIN_FIELD_BASE(189, 189, 13, 0x0110, 0x10, 9, 1),
+ PIN_FIELD_BASE(190, 190, 13, 0x0110, 0x10, 5, 1),
+ PIN_FIELD_BASE(191, 191, 13, 0x0110, 0x10, 10, 1),
+ PIN_FIELD_BASE(192, 192, 13, 0x0110, 0x10, 0, 1),
+ PIN_FIELD_BASE(193, 193, 13, 0x0110, 0x10, 15, 1),
+ PIN_FIELD_BASE(194, 194, 13, 0x0110, 0x10, 6, 1),
+ PIN_FIELD_BASE(195, 195, 13, 0x0110, 0x10, 11, 1),
+ PIN_FIELD_BASE(196, 196, 13, 0x0110, 0x10, 1, 1),
+ PIN_FIELD_BASE(197, 197, 13, 0x0110, 0x10, 16, 1),
+ PIN_FIELD_BASE(198, 198, 13, 0x0110, 0x10, 7, 1),
+ PIN_FIELD_BASE(199, 199, 13, 0x0110, 0x10, 12, 1),
+ PIN_FIELD_BASE(200, 200, 13, 0x0110, 0x10, 19, 1),
+ PIN_FIELD_BASE(201, 201, 13, 0x0110, 0x10, 22, 1),
+ PIN_FIELD_BASE(202, 202, 13, 0x0110, 0x10, 8, 1),
+ PIN_FIELD_BASE(203, 203, 13, 0x0110, 0x10, 13, 1),
+ PIN_FIELD_BASE(204, 204, 13, 0x0110, 0x10, 2, 1),
+ PIN_FIELD_BASE(205, 205, 13, 0x0110, 0x10, 3, 1),
+ PIN_FIELD_BASE(206, 206, 13, 0x0110, 0x10, 18, 1),
+ PIN_FIELD_BASE(207, 207, 13, 0x0110, 0x10, 17, 1),
+ PIN_FIELD_BASE(208, 208, 13, 0x0110, 0x10, 17, 1),
+ PIN_FIELD_BASE(209, 209, 13, 0x0110, 0x10, 17, 1),
+ PIN_FIELD_BASE(210, 210, 14, 0x0130, 0x10, 0, 1),
+ PIN_FIELD_BASE(211, 211, 14, 0x0130, 0x10, 1, 1),
+ PIN_FIELD_BASE(212, 212, 14, 0x0130, 0x10, 2, 1),
+ PIN_FIELD_BASE(213, 213, 14, 0x0130, 0x10, 3, 1),
+ PIN_FIELD_BASE(214, 214, 13, 0x0110, 0x10, 20, 1),
+ PIN_FIELD_BASE(215, 215, 13, 0x0110, 0x10, 21, 1),
+ PIN_FIELD_BASE(216, 216, 14, 0x0130, 0x10, 11, 1),
+ PIN_FIELD_BASE(217, 217, 14, 0x0130, 0x10, 11, 1),
+ PIN_FIELD_BASE(218, 218, 14, 0x0130, 0x10, 11, 1),
+ PIN_FIELD_BASE(219, 219, 14, 0x0130, 0x10, 4, 1),
+ PIN_FIELD_BASE(220, 220, 14, 0x0130, 0x10, 11, 1),
+ PIN_FIELD_BASE(221, 221, 14, 0x0130, 0x10, 12, 1),
+ PIN_FIELD_BASE(222, 222, 14, 0x0130, 0x10, 22, 1),
+ PIN_FIELD_BASE(223, 223, 14, 0x0130, 0x10, 21, 1),
+ PIN_FIELD_BASE(224, 224, 14, 0x0130, 0x10, 5, 1),
+ PIN_FIELD_BASE(225, 225, 14, 0x0130, 0x10, 6, 1),
+ PIN_FIELD_BASE(226, 226, 14, 0x0130, 0x10, 7, 1),
+ PIN_FIELD_BASE(227, 227, 14, 0x0130, 0x10, 8, 1),
+ PIN_FIELD_BASE(228, 228, 14, 0x0130, 0x10, 9, 1),
+ PIN_FIELD_BASE(229, 229, 14, 0x0130, 0x10, 10, 1),
+ PIN_FIELD_BASE(230, 230, 15, 0x00e0, 0x10, 0, 1),
+ PIN_FIELD_BASE(231, 231, 15, 0x00e0, 0x10, 0, 1),
+ PIN_FIELD_BASE(232, 232, 15, 0x00e0, 0x10, 0, 1),
+ PIN_FIELD_BASE(233, 233, 15, 0x00e0, 0x10, 1, 1),
+ PIN_FIELD_BASE(234, 234, 15, 0x00e0, 0x10, 1, 1),
+ PIN_FIELD_BASE(235, 235, 15, 0x00e0, 0x10, 1, 1),
+ PIN_FIELD_BASE(236, 236, 15, 0x00e0, 0x10, 1, 1),
+ PIN_FIELD_BASE(237, 237, 15, 0x00e0, 0x10, 2, 1),
+ PIN_FIELD_BASE(238, 238, 15, 0x00e0, 0x10, 2, 1),
+ PIN_FIELD_BASE(239, 239, 15, 0x00e0, 0x10, 2, 1),
+ PIN_FIELD_BASE(240, 240, 15, 0x00e0, 0x10, 2, 1),
+ PIN_FIELD_BASE(241, 241, 15, 0x00e0, 0x10, 3, 1),
+ PIN_FIELD_BASE(242, 242, 15, 0x00e0, 0x10, 3, 1),
+ PIN_FIELD_BASE(243, 243, 15, 0x00e0, 0x10, 3, 1),
+ PIN_FIELD_BASE(244, 244, 15, 0x00e0, 0x10, 3, 1),
+ PIN_FIELD_BASE(245, 245, 15, 0x00e0, 0x10, 4, 1),
+ PIN_FIELD_BASE(246, 246, 15, 0x00e0, 0x10, 5, 1),
+ PIN_FIELD_BASE(247, 247, 15, 0x00e0, 0x10, 5, 1),
+ PIN_FIELD_BASE(248, 248, 15, 0x00e0, 0x10, 4, 1),
+ PIN_FIELD_BASE(249, 249, 15, 0x00e0, 0x10, 4, 1),
+ PIN_FIELD_BASE(250, 250, 15, 0x00e0, 0x10, 4, 1),
+ PIN_FIELD_BASE(251, 251, 3, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(252, 252, 3, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(253, 253, 3, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(254, 254, 3, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(255, 255, 3, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(256, 256, 3, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(257, 257, 3, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(258, 258, 3, 0x00c0, 0x10, 6, 1),
+ PIN_FIELD_BASE(259, 259, 14, 0x0130, 0x10, 13, 1),
+ PIN_FIELD_BASE(260, 260, 14, 0x0130, 0x10, 14, 1),
+ PIN_FIELD_BASE(261, 261, 14, 0x0130, 0x10, 15, 1),
+ PIN_FIELD_BASE(262, 262, 14, 0x0130, 0x10, 16, 1),
+ PIN_FIELD_BASE(263, 263, 14, 0x0130, 0x10, 17, 1),
+ PIN_FIELD_BASE(264, 264, 14, 0x0130, 0x10, 18, 1),
+ PIN_FIELD_BASE(265, 265, 14, 0x0130, 0x10, 19, 1),
+ PIN_FIELD_BASE(266, 266, 14, 0x0130, 0x10, 20, 1),
+ PIN_FIELD_BASE(267, 267, 15, 0x00e0, 0x10, 8, 1),
+ PIN_FIELD_BASE(268, 268, 15, 0x00e0, 0x10, 9, 1),
+ PIN_FIELD_BASE(269, 269, 15, 0x00e0, 0x10, 6, 1),
+ PIN_FIELD_BASE(270, 270, 15, 0x00e0, 0x10, 7, 1),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_ies_range[] = {
+ PIN_FIELD_BASE(0, 0, 8, 0x0060, 0x10, 0, 1),
+ PIN_FIELD_BASE(1, 1, 8, 0x0060, 0x10, 1, 1),
+ PIN_FIELD_BASE(2, 2, 11, 0x0040, 0x10, 1, 1),
+ PIN_FIELD_BASE(3, 3, 11, 0x0040, 0x10, 2, 1),
+ PIN_FIELD_BASE(4, 4, 11, 0x0040, 0x10, 3, 1),
+ PIN_FIELD_BASE(5, 5, 11, 0x0040, 0x10, 4, 1),
+ PIN_FIELD_BASE(6, 6, 11, 0x0040, 0x10, 5, 1),
+ PIN_FIELD_BASE(7, 7, 11, 0x0040, 0x10, 6, 1),
+ PIN_FIELD_BASE(8, 8, 11, 0x0040, 0x10, 7, 1),
+ PIN_FIELD_BASE(9, 9, 9, 0x0070, 0x10, 14, 1),
+ PIN_FIELD_BASE(10, 10, 9, 0x0070, 0x10, 12, 1),
+ PIN_FIELD_BASE(11, 11, 8, 0x0060, 0x10, 2, 1),
+ PIN_FIELD_BASE(12, 12, 9, 0x0070, 0x10, 13, 1),
+ PIN_FIELD_BASE(13, 13, 6, 0x0060, 0x10, 1, 1),
+ PIN_FIELD_BASE(14, 14, 3, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(15, 15, 6, 0x0060, 0x10, 2, 1),
+ PIN_FIELD_BASE(16, 16, 6, 0x0060, 0x10, 3, 1),
+ PIN_FIELD_BASE(17, 17, 6, 0x0060, 0x10, 4, 1),
+ PIN_FIELD_BASE(18, 18, 6, 0x0060, 0x10, 5, 1),
+ PIN_FIELD_BASE(19, 19, 6, 0x0060, 0x10, 6, 1),
+ PIN_FIELD_BASE(20, 20, 3, 0x0050, 0x10, 1, 1),
+ PIN_FIELD_BASE(21, 21, 2, 0x0050, 0x10, 3, 1),
+ PIN_FIELD_BASE(22, 22, 2, 0x0050, 0x10, 4, 1),
+ PIN_FIELD_BASE(23, 23, 2, 0x0050, 0x10, 5, 1),
+ PIN_FIELD_BASE(24, 24, 2, 0x0050, 0x10, 6, 1),
+ PIN_FIELD_BASE(25, 25, 2, 0x0050, 0x10, 7, 1),
+ PIN_FIELD_BASE(26, 26, 2, 0x0050, 0x10, 8, 1),
+ PIN_FIELD_BASE(27, 27, 2, 0x0050, 0x10, 9, 1),
+ PIN_FIELD_BASE(28, 28, 2, 0x0050, 0x10, 10, 1),
+ PIN_FIELD_BASE(29, 29, 2, 0x0050, 0x10, 11, 1),
+ PIN_FIELD_BASE(30, 30, 2, 0x0050, 0x10, 12, 1),
+ PIN_FIELD_BASE(31, 31, 2, 0x0050, 0x10, 13, 1),
+ PIN_FIELD_BASE(32, 32, 1, 0x0050, 0x10, 8, 1),
+ PIN_FIELD_BASE(33, 33, 1, 0x0050, 0x10, 9, 1),
+ PIN_FIELD_BASE(34, 34, 1, 0x0050, 0x10, 10, 1),
+ PIN_FIELD_BASE(35, 35, 1, 0x0050, 0x10, 11, 1),
+ PIN_FIELD_BASE(36, 36, 1, 0x0050, 0x10, 12, 1),
+ PIN_FIELD_BASE(37, 37, 1, 0x0050, 0x10, 13, 1),
+ PIN_FIELD_BASE(38, 38, 1, 0x0050, 0x10, 14, 1),
+ PIN_FIELD_BASE(39, 39, 8, 0x0060, 0x10, 6, 1),
+ PIN_FIELD_BASE(40, 40, 8, 0x0060, 0x10, 3, 1),
+ PIN_FIELD_BASE(41, 41, 8, 0x0060, 0x10, 5, 1),
+ PIN_FIELD_BASE(42, 42, 8, 0x0060, 0x10, 4, 1),
+ PIN_FIELD_BASE(43, 43, 8, 0x0060, 0x10, 7, 1),
+ PIN_FIELD_BASE(44, 44, 8, 0x0060, 0x10, 8, 1),
+ PIN_FIELD_BASE(45, 45, 8, 0x0060, 0x10, 9, 1),
+ PIN_FIELD_BASE(46, 46, 8, 0x0060, 0x10, 10, 1),
+ PIN_FIELD_BASE(47, 47, 8, 0x0060, 0x10, 13, 1),
+ PIN_FIELD_BASE(48, 48, 8, 0x0060, 0x10, 11, 1),
+ PIN_FIELD_BASE(49, 49, 8, 0x0060, 0x10, 14, 1),
+ PIN_FIELD_BASE(50, 50, 8, 0x0060, 0x10, 12, 1),
+ PIN_FIELD_BASE(51, 51, 8, 0x0060, 0x10, 15, 1),
+ PIN_FIELD_BASE(52, 52, 9, 0x0070, 0x10, 7, 1),
+ PIN_FIELD_BASE(53, 53, 9, 0x0070, 0x10, 8, 1),
+ PIN_FIELD_BASE(54, 54, 9, 0x0070, 0x10, 2, 1),
+ PIN_FIELD_BASE(55, 55, 9, 0x0070, 0x10, 1, 1),
+ PIN_FIELD_BASE(56, 56, 9, 0x0070, 0x10, 5, 1),
+ PIN_FIELD_BASE(57, 57, 9, 0x0070, 0x10, 6, 1),
+ PIN_FIELD_BASE(58, 58, 9, 0x0070, 0x10, 3, 1),
+ PIN_FIELD_BASE(59, 59, 9, 0x0070, 0x10, 4, 1),
+ PIN_FIELD_BASE(60, 60, 9, 0x0070, 0x10, 19, 1),
+ PIN_FIELD_BASE(61, 61, 9, 0x0070, 0x10, 10, 1),
+ PIN_FIELD_BASE(62, 62, 9, 0x0070, 0x10, 9, 1),
+ PIN_FIELD_BASE(63, 63, 9, 0x0070, 0x10, 18, 1),
+ PIN_FIELD_BASE(64, 64, 9, 0x0070, 0x10, 0, 1),
+ PIN_FIELD_BASE(65, 65, 9, 0x0070, 0x10, 11, 1),
+ PIN_FIELD_BASE(66, 66, 9, 0x0070, 0x10, 24, 1),
+ PIN_FIELD_BASE(67, 67, 9, 0x0070, 0x10, 22, 1),
+ PIN_FIELD_BASE(68, 68, 9, 0x0070, 0x10, 21, 1),
+ PIN_FIELD_BASE(69, 69, 9, 0x0070, 0x10, 25, 1),
+ PIN_FIELD_BASE(70, 70, 9, 0x0070, 0x10, 16, 1),
+ PIN_FIELD_BASE(71, 71, 9, 0x0070, 0x10, 15, 1),
+ PIN_FIELD_BASE(72, 72, 9, 0x0070, 0x10, 23, 1),
+ PIN_FIELD_BASE(73, 73, 9, 0x0070, 0x10, 20, 1),
+ PIN_FIELD_BASE(74, 74, 9, 0x0070, 0x10, 17, 1),
+ PIN_FIELD_BASE(75, 75, 10, 0x0050, 0x10, 2, 1),
+ PIN_FIELD_BASE(76, 76, 10, 0x0050, 0x10, 3, 1),
+ PIN_FIELD_BASE(77, 77, 10, 0x0050, 0x10, 4, 1),
+ PIN_FIELD_BASE(78, 78, 10, 0x0050, 0x10, 5, 1),
+ PIN_FIELD_BASE(79, 79, 10, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(80, 80, 10, 0x0050, 0x10, 1, 1),
+ PIN_FIELD_BASE(81, 81, 11, 0x0040, 0x10, 9, 1),
+ PIN_FIELD_BASE(82, 82, 11, 0x0040, 0x10, 10, 1),
+ PIN_FIELD_BASE(83, 83, 11, 0x0040, 0x10, 12, 1),
+ PIN_FIELD_BASE(84, 84, 11, 0x0040, 0x10, 11, 1),
+ PIN_FIELD_BASE(85, 85, 11, 0x0040, 0x10, 13, 1),
+ PIN_FIELD_BASE(86, 86, 11, 0x0040, 0x10, 14, 1),
+ PIN_FIELD_BASE(87, 87, 11, 0x0040, 0x10, 16, 1),
+ PIN_FIELD_BASE(88, 88, 11, 0x0040, 0x10, 15, 1),
+ PIN_FIELD_BASE(89, 89, 11, 0x0040, 0x10, 0, 1),
+ PIN_FIELD_BASE(90, 90, 11, 0x0040, 0x10, 8, 1),
+ PIN_FIELD_BASE(91, 91, 12, 0x0050, 0x10, 6, 1),
+ PIN_FIELD_BASE(92, 92, 12, 0x0050, 0x10, 7, 1),
+ PIN_FIELD_BASE(93, 93, 12, 0x0050, 0x10, 8, 1),
+ PIN_FIELD_BASE(94, 94, 12, 0x0050, 0x10, 4, 1),
+ PIN_FIELD_BASE(95, 95, 12, 0x0050, 0x10, 1, 1),
+ PIN_FIELD_BASE(96, 96, 12, 0x0050, 0x10, 3, 1),
+ PIN_FIELD_BASE(97, 97, 12, 0x0050, 0x10, 2, 1),
+ PIN_FIELD_BASE(98, 98, 12, 0x0050, 0x10, 5, 1),
+ PIN_FIELD_BASE(99, 99, 12, 0x0050, 0x10, 9, 1),
+ PIN_FIELD_BASE(100, 100, 12, 0x0050, 0x10, 12, 1),
+ PIN_FIELD_BASE(101, 101, 12, 0x0050, 0x10, 10, 1),
+ PIN_FIELD_BASE(102, 102, 12, 0x0050, 0x10, 13, 1),
+ PIN_FIELD_BASE(103, 103, 12, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(104, 104, 12, 0x0050, 0x10, 11, 1),
+ PIN_FIELD_BASE(105, 105, 12, 0x0050, 0x10, 14, 1),
+ PIN_FIELD_BASE(106, 106, 5, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(107, 107, 5, 0x0050, 0x10, 1, 1),
+ PIN_FIELD_BASE(108, 108, 5, 0x0050, 0x10, 3, 1),
+ PIN_FIELD_BASE(109, 109, 5, 0x0050, 0x10, 2, 1),
+ PIN_FIELD_BASE(110, 110, 5, 0x0050, 0x10, 4, 1),
+ PIN_FIELD_BASE(111, 111, 5, 0x0050, 0x10, 5, 1),
+ PIN_FIELD_BASE(112, 112, 5, 0x0050, 0x10, 7, 1),
+ PIN_FIELD_BASE(113, 113, 5, 0x0050, 0x10, 6, 1),
+ PIN_FIELD_BASE(114, 114, 5, 0x0050, 0x10, 8, 1),
+ PIN_FIELD_BASE(115, 115, 5, 0x0050, 0x10, 9, 1),
+ PIN_FIELD_BASE(116, 116, 5, 0x0050, 0x10, 11, 1),
+ PIN_FIELD_BASE(117, 117, 5, 0x0050, 0x10, 10, 1),
+ PIN_FIELD_BASE(118, 118, 6, 0x0060, 0x10, 9, 1),
+ PIN_FIELD_BASE(119, 119, 6, 0x0060, 0x10, 10, 1),
+ PIN_FIELD_BASE(120, 120, 6, 0x0060, 0x10, 12, 1),
+ PIN_FIELD_BASE(121, 121, 6, 0x0060, 0x10, 11, 1),
+ PIN_FIELD_BASE(122, 122, 6, 0x0060, 0x10, 0, 1),
+ PIN_FIELD_BASE(123, 123, 6, 0x0060, 0x10, 7, 1),
+ PIN_FIELD_BASE(124, 124, 6, 0x0060, 0x10, 8, 1),
+ PIN_FIELD_BASE(125, 125, 7, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(126, 126, 7, 0x0050, 0x10, 1, 1),
+ PIN_FIELD_BASE(127, 127, 7, 0x0050, 0x10, 2, 1),
+ PIN_FIELD_BASE(128, 128, 7, 0x0050, 0x10, 3, 1),
+ PIN_FIELD_BASE(129, 129, 7, 0x0050, 0x10, 4, 1),
+ PIN_FIELD_BASE(130, 130, 7, 0x0050, 0x10, 5, 1),
+ PIN_FIELD_BASE(131, 131, 7, 0x0050, 0x10, 9, 1),
+ PIN_FIELD_BASE(132, 132, 7, 0x0050, 0x10, 11, 1),
+ PIN_FIELD_BASE(133, 133, 7, 0x0050, 0x10, 10, 1),
+ PIN_FIELD_BASE(134, 134, 7, 0x0050, 0x10, 6, 1),
+ PIN_FIELD_BASE(135, 135, 7, 0x0050, 0x10, 8, 1),
+ PIN_FIELD_BASE(136, 136, 7, 0x0050, 0x10, 7, 1),
+ PIN_FIELD_BASE(137, 137, 4, 0x0040, 0x10, 10, 1),
+ PIN_FIELD_BASE(138, 138, 4, 0x0040, 0x10, 11, 1),
+ PIN_FIELD_BASE(139, 139, 4, 0x0040, 0x10, 12, 1),
+ PIN_FIELD_BASE(140, 140, 4, 0x0040, 0x10, 13, 1),
+ PIN_FIELD_BASE(141, 141, 4, 0x0040, 0x10, 14, 1),
+ PIN_FIELD_BASE(142, 142, 4, 0x0040, 0x10, 15, 1),
+ PIN_FIELD_BASE(143, 143, 4, 0x0040, 0x10, 16, 1),
+ PIN_FIELD_BASE(144, 144, 4, 0x0040, 0x10, 17, 1),
+ PIN_FIELD_BASE(145, 145, 4, 0x0040, 0x10, 0, 1),
+ PIN_FIELD_BASE(146, 146, 4, 0x0040, 0x10, 1, 1),
+ PIN_FIELD_BASE(147, 147, 4, 0x0040, 0x10, 2, 1),
+ PIN_FIELD_BASE(148, 148, 4, 0x0040, 0x10, 3, 1),
+ PIN_FIELD_BASE(149, 149, 4, 0x0040, 0x10, 4, 1),
+ PIN_FIELD_BASE(150, 150, 4, 0x0040, 0x10, 5, 1),
+ PIN_FIELD_BASE(151, 151, 4, 0x0040, 0x10, 6, 1),
+ PIN_FIELD_BASE(152, 152, 4, 0x0040, 0x10, 7, 1),
+ PIN_FIELD_BASE(153, 153, 4, 0x0040, 0x10, 9, 1),
+ PIN_FIELD_BASE(154, 154, 4, 0x0040, 0x10, 8, 1),
+ PIN_FIELD_BASE(155, 155, 4, 0x0040, 0x10, 18, 1),
+ PIN_FIELD_BASE(156, 156, 4, 0x0040, 0x10, 19, 1),
+ PIN_FIELD_BASE(157, 157, 2, 0x0050, 0x10, 1, 1),
+ PIN_FIELD_BASE(158, 158, 2, 0x0050, 0x10, 2, 1),
+ PIN_FIELD_BASE(159, 159, 2, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(160, 160, 3, 0x0050, 0x10, 22, 1),
+ PIN_FIELD_BASE(161, 161, 3, 0x0050, 0x10, 20, 1),
+ PIN_FIELD_BASE(162, 162, 3, 0x0050, 0x10, 23, 1),
+ PIN_FIELD_BASE(163, 163, 3, 0x0050, 0x10, 21, 1),
+ PIN_FIELD_BASE(164, 164, 3, 0x0050, 0x10, 12, 1),
+ PIN_FIELD_BASE(165, 165, 3, 0x0050, 0x10, 14, 1),
+ PIN_FIELD_BASE(166, 166, 3, 0x0050, 0x10, 13, 1),
+ PIN_FIELD_BASE(167, 167, 3, 0x0050, 0x10, 15, 1),
+ PIN_FIELD_BASE(168, 168, 3, 0x0050, 0x10, 16, 1),
+ PIN_FIELD_BASE(169, 169, 3, 0x0050, 0x10, 17, 1),
+ PIN_FIELD_BASE(170, 170, 3, 0x0050, 0x10, 19, 1),
+ PIN_FIELD_BASE(171, 171, 3, 0x0050, 0x10, 18, 1),
+ PIN_FIELD_BASE(172, 172, 3, 0x0050, 0x10, 10, 1),
+ PIN_FIELD_BASE(173, 173, 3, 0x0050, 0x10, 11, 1),
+ PIN_FIELD_BASE(174, 174, 1, 0x0050, 0x10, 15, 1),
+ PIN_FIELD_BASE(175, 175, 1, 0x0050, 0x10, 16, 1),
+ PIN_FIELD_BASE(176, 176, 1, 0x0050, 0x10, 17, 1),
+ PIN_FIELD_BASE(177, 177, 1, 0x0050, 0x10, 18, 1),
+ PIN_FIELD_BASE(178, 178, 1, 0x0050, 0x10, 6, 1),
+ PIN_FIELD_BASE(179, 179, 1, 0x0050, 0x10, 7, 1),
+ PIN_FIELD_BASE(180, 180, 1, 0x0050, 0x10, 0, 1),
+ PIN_FIELD_BASE(181, 181, 1, 0x0050, 0x10, 1, 1),
+ PIN_FIELD_BASE(182, 182, 1, 0x0050, 0x10, 2, 1),
+ PIN_FIELD_BASE(183, 183, 1, 0x0050, 0x10, 3, 1),
+ PIN_FIELD_BASE(184, 184, 1, 0x0050, 0x10, 4, 1),
+ PIN_FIELD_BASE(185, 185, 1, 0x0050, 0x10, 5, 1),
+ PIN_FIELD_BASE(186, 186, 13, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(187, 187, 13, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(188, 188, 13, 0x0090, 0x10, 12, 1),
+ PIN_FIELD_BASE(189, 189, 13, 0x0090, 0x10, 17, 1),
+ PIN_FIELD_BASE(190, 190, 13, 0x0090, 0x10, 13, 1),
+ PIN_FIELD_BASE(191, 191, 13, 0x0090, 0x10, 18, 1),
+ PIN_FIELD_BASE(192, 192, 13, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(193, 193, 13, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(194, 194, 13, 0x0090, 0x10, 14, 1),
+ PIN_FIELD_BASE(195, 195, 13, 0x0090, 0x10, 19, 1),
+ PIN_FIELD_BASE(196, 196, 13, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(197, 197, 13, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(198, 198, 13, 0x0090, 0x10, 15, 1),
+ PIN_FIELD_BASE(199, 199, 13, 0x0090, 0x10, 20, 1),
+ PIN_FIELD_BASE(200, 200, 13, 0x0090, 0x10, 22, 1),
+ PIN_FIELD_BASE(201, 201, 13, 0x0090, 0x10, 25, 1),
+ PIN_FIELD_BASE(202, 202, 13, 0x0090, 0x10, 16, 1),
+ PIN_FIELD_BASE(203, 203, 13, 0x0090, 0x10, 21, 1),
+ PIN_FIELD_BASE(204, 204, 13, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(205, 205, 13, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(206, 206, 13, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(207, 207, 13, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(208, 208, 13, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(209, 209, 13, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(210, 210, 14, 0x0060, 0x10, 0, 1),
+ PIN_FIELD_BASE(211, 211, 14, 0x0060, 0x10, 1, 1),
+ PIN_FIELD_BASE(212, 212, 14, 0x0060, 0x10, 2, 1),
+ PIN_FIELD_BASE(213, 213, 14, 0x0060, 0x10, 3, 1),
+ PIN_FIELD_BASE(214, 214, 13, 0x0090, 0x10, 23, 1),
+ PIN_FIELD_BASE(215, 215, 13, 0x0090, 0x10, 24, 1),
+ PIN_FIELD_BASE(216, 216, 14, 0x0060, 0x10, 13, 1),
+ PIN_FIELD_BASE(217, 217, 14, 0x0060, 0x10, 5, 1),
+ PIN_FIELD_BASE(218, 218, 14, 0x0060, 0x10, 6, 1),
+ PIN_FIELD_BASE(219, 219, 14, 0x0060, 0x10, 4, 1),
+ PIN_FIELD_BASE(220, 220, 14, 0x0060, 0x10, 22, 1),
+ PIN_FIELD_BASE(221, 221, 14, 0x0060, 0x10, 23, 1),
+ PIN_FIELD_BASE(222, 222, 14, 0x0060, 0x10, 25, 1),
+ PIN_FIELD_BASE(223, 223, 14, 0x0060, 0x10, 24, 1),
+ PIN_FIELD_BASE(224, 224, 14, 0x0060, 0x10, 7, 1),
+ PIN_FIELD_BASE(225, 225, 14, 0x0060, 0x10, 8, 1),
+ PIN_FIELD_BASE(226, 226, 14, 0x0060, 0x10, 9, 1),
+ PIN_FIELD_BASE(227, 227, 14, 0x0060, 0x10, 10, 1),
+ PIN_FIELD_BASE(228, 228, 14, 0x0060, 0x10, 11, 1),
+ PIN_FIELD_BASE(229, 229, 14, 0x0060, 0x10, 12, 1),
+ PIN_FIELD_BASE(230, 230, 15, 0x0040, 0x10, 13, 1),
+ PIN_FIELD_BASE(231, 231, 15, 0x0040, 0x10, 14, 1),
+ PIN_FIELD_BASE(232, 232, 15, 0x0040, 0x10, 10, 1),
+ PIN_FIELD_BASE(233, 233, 15, 0x0040, 0x10, 0, 1),
+ PIN_FIELD_BASE(234, 234, 15, 0x0040, 0x10, 3, 1),
+ PIN_FIELD_BASE(235, 235, 15, 0x0040, 0x10, 1, 1),
+ PIN_FIELD_BASE(236, 236, 15, 0x0040, 0x10, 2, 1),
+ PIN_FIELD_BASE(237, 237, 15, 0x0040, 0x10, 6, 1),
+ PIN_FIELD_BASE(238, 238, 15, 0x0040, 0x10, 5, 1),
+ PIN_FIELD_BASE(239, 239, 15, 0x0040, 0x10, 23, 1),
+ PIN_FIELD_BASE(240, 240, 15, 0x0040, 0x10, 22, 1),
+ PIN_FIELD_BASE(241, 241, 15, 0x0040, 0x10, 16, 1),
+ PIN_FIELD_BASE(242, 242, 15, 0x0040, 0x10, 17, 1),
+ PIN_FIELD_BASE(243, 243, 15, 0x0040, 0x10, 15, 1),
+ PIN_FIELD_BASE(244, 244, 15, 0x0040, 0x10, 12, 1),
+ PIN_FIELD_BASE(245, 245, 15, 0x0040, 0x10, 9, 1),
+ PIN_FIELD_BASE(246, 246, 15, 0x0040, 0x10, 8, 1),
+ PIN_FIELD_BASE(247, 247, 15, 0x0040, 0x10, 7, 1),
+ PIN_FIELD_BASE(248, 248, 15, 0x0040, 0x10, 4, 1),
+ PIN_FIELD_BASE(249, 249, 15, 0x0040, 0x10, 24, 1),
+ PIN_FIELD_BASE(250, 250, 15, 0x0040, 0x10, 11, 1),
+ PIN_FIELD_BASE(251, 251, 3, 0x0050, 0x10, 2, 1),
+ PIN_FIELD_BASE(252, 252, 3, 0x0050, 0x10, 3, 1),
+ PIN_FIELD_BASE(253, 253, 3, 0x0050, 0x10, 4, 1),
+ PIN_FIELD_BASE(254, 254, 3, 0x0050, 0x10, 5, 1),
+ PIN_FIELD_BASE(255, 255, 3, 0x0050, 0x10, 6, 1),
+ PIN_FIELD_BASE(256, 256, 3, 0x0050, 0x10, 7, 1),
+ PIN_FIELD_BASE(257, 257, 3, 0x0050, 0x10, 8, 1),
+ PIN_FIELD_BASE(258, 258, 3, 0x0050, 0x10, 9, 1),
+ PIN_FIELD_BASE(259, 259, 14, 0x0060, 0x10, 14, 1),
+ PIN_FIELD_BASE(260, 260, 14, 0x0060, 0x10, 15, 1),
+ PIN_FIELD_BASE(261, 261, 14, 0x0060, 0x10, 16, 1),
+ PIN_FIELD_BASE(262, 262, 14, 0x0060, 0x10, 17, 1),
+ PIN_FIELD_BASE(263, 263, 14, 0x0060, 0x10, 18, 1),
+ PIN_FIELD_BASE(264, 264, 14, 0x0060, 0x10, 19, 1),
+ PIN_FIELD_BASE(265, 265, 14, 0x0060, 0x10, 20, 1),
+ PIN_FIELD_BASE(266, 266, 14, 0x0060, 0x10, 21, 1),
+ PIN_FIELD_BASE(267, 267, 15, 0x0040, 0x10, 20, 1),
+ PIN_FIELD_BASE(268, 268, 15, 0x0040, 0x10, 21, 1),
+ PIN_FIELD_BASE(269, 269, 15, 0x0040, 0x10, 18, 1),
+ PIN_FIELD_BASE(270, 270, 15, 0x0040, 0x10, 19, 1),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_pupd_range[] = {
+ PIN_FIELD_BASE(60, 60, 9, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(125, 125, 7, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(126, 126, 7, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(127, 127, 7, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(128, 128, 7, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(129, 129, 7, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(130, 130, 7, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(131, 131, 7, 0x0080, 0x10, 9, 1),
+ PIN_FIELD_BASE(132, 132, 7, 0x0080, 0x10, 11, 1),
+ PIN_FIELD_BASE(133, 133, 7, 0x0080, 0x10, 10, 1),
+ PIN_FIELD_BASE(134, 134, 7, 0x0080, 0x10, 6, 1),
+ PIN_FIELD_BASE(135, 135, 7, 0x0080, 0x10, 8, 1),
+ PIN_FIELD_BASE(136, 136, 7, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(137, 137, 4, 0x0070, 0x10, 10, 1),
+ PIN_FIELD_BASE(138, 138, 4, 0x0070, 0x10, 11, 1),
+ PIN_FIELD_BASE(139, 139, 4, 0x0070, 0x10, 12, 1),
+ PIN_FIELD_BASE(140, 140, 4, 0x0070, 0x10, 13, 1),
+ PIN_FIELD_BASE(141, 141, 4, 0x0070, 0x10, 14, 1),
+ PIN_FIELD_BASE(142, 142, 4, 0x0070, 0x10, 15, 1),
+ PIN_FIELD_BASE(143, 143, 4, 0x0070, 0x10, 16, 1),
+ PIN_FIELD_BASE(144, 144, 4, 0x0070, 0x10, 17, 1),
+ PIN_FIELD_BASE(145, 145, 4, 0x0070, 0x10, 0, 1),
+ PIN_FIELD_BASE(146, 146, 4, 0x0070, 0x10, 1, 1),
+ PIN_FIELD_BASE(147, 147, 4, 0x0070, 0x10, 2, 1),
+ PIN_FIELD_BASE(148, 148, 4, 0x0070, 0x10, 3, 1),
+ PIN_FIELD_BASE(149, 149, 4, 0x0070, 0x10, 4, 1),
+ PIN_FIELD_BASE(150, 150, 4, 0x0070, 0x10, 5, 1),
+ PIN_FIELD_BASE(151, 151, 4, 0x0070, 0x10, 6, 1),
+ PIN_FIELD_BASE(152, 152, 4, 0x0070, 0x10, 7, 1),
+ PIN_FIELD_BASE(153, 153, 4, 0x0070, 0x10, 9, 1),
+ PIN_FIELD_BASE(154, 154, 4, 0x0070, 0x10, 8, 1),
+ PIN_FIELD_BASE(155, 155, 4, 0x0070, 0x10, 18, 1),
+ PIN_FIELD_BASE(156, 156, 4, 0x0070, 0x10, 19, 1),
+ PIN_FIELD_BASE(217, 217, 14, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(218, 218, 14, 0x00a0, 0x10, 2, 1),
+ PIN_FIELD_BASE(219, 219, 14, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(224, 224, 14, 0x00a0, 0x10, 3, 1),
+ PIN_FIELD_BASE(225, 225, 14, 0x00a0, 0x10, 4, 1),
+ PIN_FIELD_BASE(226, 226, 14, 0x00a0, 0x10, 5, 1),
+ PIN_FIELD_BASE(227, 227, 14, 0x00a0, 0x10, 6, 1),
+ PIN_FIELD_BASE(228, 228, 14, 0x00a0, 0x10, 7, 1),
+ PIN_FIELD_BASE(229, 229, 14, 0x00a0, 0x10, 8, 1),
+ PIN_FIELD_BASE(259, 259, 14, 0x00a0, 0x10, 9, 1),
+ PIN_FIELD_BASE(260, 260, 14, 0x00a0, 0x10, 10, 1),
+ PIN_FIELD_BASE(261, 261, 14, 0x00a0, 0x10, 11, 1),
+ PIN_FIELD_BASE(262, 262, 14, 0x00a0, 0x10, 12, 1),
+ PIN_FIELD_BASE(263, 263, 14, 0x00a0, 0x10, 13, 1),
+ PIN_FIELD_BASE(264, 264, 14, 0x00a0, 0x10, 14, 1),
+ PIN_FIELD_BASE(265, 265, 14, 0x00a0, 0x10, 15, 1),
+ PIN_FIELD_BASE(266, 266, 14, 0x00a0, 0x10, 16, 1),
+ PIN_FIELD_BASE(267, 267, 15, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(268, 268, 15, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(269, 269, 15, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(270, 270, 15, 0x0080, 0x10, 1, 1),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_r0_range[] = {
+ PIN_FIELD_BASE(60, 60, 9, 0x00d0, 0x10, 0, 1),
+ PIN_FIELD_BASE(125, 125, 7, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(126, 126, 7, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(127, 127, 7, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(128, 128, 7, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(129, 129, 7, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(130, 130, 7, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(131, 131, 7, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(132, 132, 7, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(133, 133, 7, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(134, 134, 7, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(135, 135, 7, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(136, 136, 7, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(137, 137, 4, 0x0080, 0x10, 10, 1),
+ PIN_FIELD_BASE(138, 138, 4, 0x0080, 0x10, 11, 1),
+ PIN_FIELD_BASE(139, 139, 4, 0x0080, 0x10, 12, 1),
+ PIN_FIELD_BASE(140, 140, 4, 0x0080, 0x10, 13, 1),
+ PIN_FIELD_BASE(141, 141, 4, 0x0080, 0x10, 14, 1),
+ PIN_FIELD_BASE(142, 142, 4, 0x0080, 0x10, 15, 1),
+ PIN_FIELD_BASE(143, 143, 4, 0x0080, 0x10, 16, 1),
+ PIN_FIELD_BASE(144, 144, 4, 0x0080, 0x10, 17, 1),
+ PIN_FIELD_BASE(145, 145, 4, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(146, 146, 4, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(147, 147, 4, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(148, 148, 4, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(149, 149, 4, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(150, 150, 4, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(151, 151, 4, 0x0080, 0x10, 6, 1),
+ PIN_FIELD_BASE(152, 152, 4, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(153, 153, 4, 0x0080, 0x10, 9, 1),
+ PIN_FIELD_BASE(154, 154, 4, 0x0080, 0x10, 8, 1),
+ PIN_FIELD_BASE(155, 155, 4, 0x0080, 0x10, 18, 1),
+ PIN_FIELD_BASE(156, 156, 4, 0x0080, 0x10, 19, 1),
+ PIN_FIELD_BASE(217, 217, 14, 0x00c0, 0x10, 1, 1),
+ PIN_FIELD_BASE(218, 218, 14, 0x00c0, 0x10, 2, 1),
+ PIN_FIELD_BASE(219, 219, 14, 0x00c0, 0x10, 0, 1),
+ PIN_FIELD_BASE(224, 224, 14, 0x00c0, 0x10, 3, 1),
+ PIN_FIELD_BASE(225, 225, 14, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(226, 226, 14, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(227, 227, 14, 0x00c0, 0x10, 6, 1),
+ PIN_FIELD_BASE(228, 228, 14, 0x00c0, 0x10, 7, 1),
+ PIN_FIELD_BASE(229, 229, 14, 0x00c0, 0x10, 8, 1),
+ PIN_FIELD_BASE(259, 259, 14, 0x00c0, 0x10, 9, 1),
+ PIN_FIELD_BASE(260, 260, 14, 0x00c0, 0x10, 10, 1),
+ PIN_FIELD_BASE(261, 261, 14, 0x00c0, 0x10, 11, 1),
+ PIN_FIELD_BASE(262, 262, 14, 0x00c0, 0x10, 12, 1),
+ PIN_FIELD_BASE(263, 263, 14, 0x00c0, 0x10, 13, 1),
+ PIN_FIELD_BASE(264, 264, 14, 0x00c0, 0x10, 14, 1),
+ PIN_FIELD_BASE(265, 265, 14, 0x00c0, 0x10, 15, 1),
+ PIN_FIELD_BASE(266, 266, 14, 0x00c0, 0x10, 16, 1),
+ PIN_FIELD_BASE(267, 267, 15, 0x00a0, 0x10, 2, 1),
+ PIN_FIELD_BASE(268, 268, 15, 0x00a0, 0x10, 3, 1),
+ PIN_FIELD_BASE(269, 269, 15, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(270, 270, 15, 0x00a0, 0x10, 1, 1),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_r1_range[] = {
+ PIN_FIELD_BASE(60, 60, 9, 0x00e0, 0x10, 0, 1),
+ PIN_FIELD_BASE(125, 125, 7, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(126, 126, 7, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(127, 127, 7, 0x00a0, 0x10, 2, 1),
+ PIN_FIELD_BASE(128, 128, 7, 0x00a0, 0x10, 3, 1),
+ PIN_FIELD_BASE(129, 129, 7, 0x00a0, 0x10, 4, 1),
+ PIN_FIELD_BASE(130, 130, 7, 0x00a0, 0x10, 5, 1),
+ PIN_FIELD_BASE(131, 131, 7, 0x00a0, 0x10, 9, 1),
+ PIN_FIELD_BASE(132, 132, 7, 0x00a0, 0x10, 11, 1),
+ PIN_FIELD_BASE(133, 133, 7, 0x00a0, 0x10, 10, 1),
+ PIN_FIELD_BASE(134, 134, 7, 0x00a0, 0x10, 6, 1),
+ PIN_FIELD_BASE(135, 135, 7, 0x00a0, 0x10, 8, 1),
+ PIN_FIELD_BASE(136, 136, 7, 0x00a0, 0x10, 7, 1),
+ PIN_FIELD_BASE(137, 137, 4, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(138, 138, 4, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(139, 139, 4, 0x0090, 0x10, 12, 1),
+ PIN_FIELD_BASE(140, 140, 4, 0x0090, 0x10, 13, 1),
+ PIN_FIELD_BASE(141, 141, 4, 0x0090, 0x10, 14, 1),
+ PIN_FIELD_BASE(142, 142, 4, 0x0090, 0x10, 15, 1),
+ PIN_FIELD_BASE(143, 143, 4, 0x0090, 0x10, 16, 1),
+ PIN_FIELD_BASE(144, 144, 4, 0x0090, 0x10, 17, 1),
+ PIN_FIELD_BASE(145, 145, 4, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(146, 146, 4, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(147, 147, 4, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(148, 148, 4, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(149, 149, 4, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(150, 150, 4, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(151, 151, 4, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(152, 152, 4, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(153, 153, 4, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(154, 154, 4, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(155, 155, 4, 0x0090, 0x10, 18, 1),
+ PIN_FIELD_BASE(156, 156, 4, 0x0090, 0x10, 19, 1),
+ PIN_FIELD_BASE(217, 217, 14, 0x00d0, 0x10, 1, 1),
+ PIN_FIELD_BASE(218, 218, 14, 0x00d0, 0x10, 2, 1),
+ PIN_FIELD_BASE(219, 219, 14, 0x00d0, 0x10, 0, 1),
+ PIN_FIELD_BASE(224, 224, 14, 0x00d0, 0x10, 3, 1),
+ PIN_FIELD_BASE(225, 225, 14, 0x00d0, 0x10, 4, 1),
+ PIN_FIELD_BASE(226, 226, 14, 0x00d0, 0x10, 5, 1),
+ PIN_FIELD_BASE(227, 227, 14, 0x00d0, 0x10, 6, 1),
+ PIN_FIELD_BASE(228, 228, 14, 0x00d0, 0x10, 7, 1),
+ PIN_FIELD_BASE(229, 229, 14, 0x00d0, 0x10, 8, 1),
+ PIN_FIELD_BASE(259, 259, 14, 0x00d0, 0x10, 9, 1),
+ PIN_FIELD_BASE(260, 260, 14, 0x00d0, 0x10, 10, 1),
+ PIN_FIELD_BASE(261, 261, 14, 0x00d0, 0x10, 11, 1),
+ PIN_FIELD_BASE(262, 262, 14, 0x00d0, 0x10, 12, 1),
+ PIN_FIELD_BASE(263, 263, 14, 0x00d0, 0x10, 13, 1),
+ PIN_FIELD_BASE(264, 264, 14, 0x00d0, 0x10, 14, 1),
+ PIN_FIELD_BASE(265, 265, 14, 0x00d0, 0x10, 15, 1),
+ PIN_FIELD_BASE(266, 266, 14, 0x00d0, 0x10, 16, 1),
+ PIN_FIELD_BASE(267, 267, 15, 0x00b0, 0x10, 2, 1),
+ PIN_FIELD_BASE(268, 268, 15, 0x00b0, 0x10, 3, 1),
+ PIN_FIELD_BASE(269, 269, 15, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(270, 270, 15, 0x00b0, 0x10, 1, 1),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_pu_range[] = {
+ PIN_FIELD_BASE(0, 0, 8, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(1, 1, 8, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(2, 2, 11, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(3, 3, 11, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(4, 4, 11, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(5, 5, 11, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(6, 6, 11, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(7, 7, 11, 0x0080, 0x10, 6, 1),
+ PIN_FIELD_BASE(8, 8, 11, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(9, 9, 9, 0x00c0, 0x10, 14, 1),
+ PIN_FIELD_BASE(10, 10, 9, 0x00c0, 0x10, 12, 1),
+ PIN_FIELD_BASE(11, 11, 8, 0x00a0, 0x10, 2, 1),
+ PIN_FIELD_BASE(12, 12, 9, 0x00c0, 0x10, 13, 1),
+ PIN_FIELD_BASE(13, 13, 6, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(14, 14, 3, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(15, 15, 6, 0x00b0, 0x10, 2, 1),
+ PIN_FIELD_BASE(16, 16, 6, 0x00b0, 0x10, 3, 1),
+ PIN_FIELD_BASE(17, 17, 6, 0x00b0, 0x10, 4, 1),
+ PIN_FIELD_BASE(18, 18, 6, 0x00b0, 0x10, 5, 1),
+ PIN_FIELD_BASE(19, 19, 6, 0x00b0, 0x10, 6, 1),
+ PIN_FIELD_BASE(20, 20, 3, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(21, 21, 2, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(22, 22, 2, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(23, 23, 2, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(24, 24, 2, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(25, 25, 2, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(26, 26, 2, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(27, 27, 2, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(28, 28, 2, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(29, 29, 2, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(30, 30, 2, 0x0090, 0x10, 12, 1),
+ PIN_FIELD_BASE(31, 31, 2, 0x0090, 0x10, 13, 1),
+ PIN_FIELD_BASE(32, 32, 1, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(33, 33, 1, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(34, 34, 1, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(35, 35, 1, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(36, 36, 1, 0x0090, 0x10, 12, 1),
+ PIN_FIELD_BASE(37, 37, 1, 0x0090, 0x10, 13, 1),
+ PIN_FIELD_BASE(38, 38, 1, 0x0090, 0x10, 14, 1),
+ PIN_FIELD_BASE(39, 39, 8, 0x00a0, 0x10, 6, 1),
+ PIN_FIELD_BASE(40, 40, 8, 0x00a0, 0x10, 3, 1),
+ PIN_FIELD_BASE(41, 41, 8, 0x00a0, 0x10, 5, 1),
+ PIN_FIELD_BASE(42, 42, 8, 0x00a0, 0x10, 4, 1),
+ PIN_FIELD_BASE(43, 43, 8, 0x00a0, 0x10, 7, 1),
+ PIN_FIELD_BASE(44, 44, 8, 0x00a0, 0x10, 8, 1),
+ PIN_FIELD_BASE(45, 45, 8, 0x00a0, 0x10, 9, 1),
+ PIN_FIELD_BASE(46, 46, 8, 0x00a0, 0x10, 10, 1),
+ PIN_FIELD_BASE(47, 47, 8, 0x00a0, 0x10, 13, 1),
+ PIN_FIELD_BASE(48, 48, 8, 0x00a0, 0x10, 11, 1),
+ PIN_FIELD_BASE(49, 49, 8, 0x00a0, 0x10, 14, 1),
+ PIN_FIELD_BASE(50, 50, 8, 0x00a0, 0x10, 12, 1),
+ PIN_FIELD_BASE(51, 51, 8, 0x00a0, 0x10, 15, 1),
+ PIN_FIELD_BASE(52, 52, 9, 0x00c0, 0x10, 7, 1),
+ PIN_FIELD_BASE(53, 53, 9, 0x00c0, 0x10, 8, 1),
+ PIN_FIELD_BASE(54, 54, 9, 0x00c0, 0x10, 2, 1),
+ PIN_FIELD_BASE(55, 55, 9, 0x00c0, 0x10, 1, 1),
+ PIN_FIELD_BASE(56, 56, 9, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(57, 57, 9, 0x00c0, 0x10, 6, 1),
+ PIN_FIELD_BASE(58, 58, 9, 0x00c0, 0x10, 3, 1),
+ PIN_FIELD_BASE(59, 59, 9, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(61, 61, 9, 0x00c0, 0x10, 10, 1),
+ PIN_FIELD_BASE(62, 62, 9, 0x00c0, 0x10, 9, 1),
+ PIN_FIELD_BASE(63, 63, 9, 0x00c0, 0x10, 18, 1),
+ PIN_FIELD_BASE(64, 64, 9, 0x00c0, 0x10, 0, 1),
+ PIN_FIELD_BASE(65, 65, 9, 0x00c0, 0x10, 11, 1),
+ PIN_FIELD_BASE(66, 66, 9, 0x00c0, 0x10, 24, 1),
+ PIN_FIELD_BASE(67, 67, 9, 0x00c0, 0x10, 21, 1),
+ PIN_FIELD_BASE(68, 68, 9, 0x00c0, 0x10, 20, 1),
+ PIN_FIELD_BASE(69, 69, 9, 0x00c0, 0x10, 25, 1),
+ PIN_FIELD_BASE(70, 70, 9, 0x00c0, 0x10, 16, 1),
+ PIN_FIELD_BASE(71, 71, 9, 0x00c0, 0x10, 15, 1),
+ PIN_FIELD_BASE(72, 72, 9, 0x00c0, 0x10, 23, 1),
+ PIN_FIELD_BASE(73, 73, 9, 0x00c0, 0x10, 19, 1),
+ PIN_FIELD_BASE(74, 74, 9, 0x00c0, 0x10, 17, 1),
+ PIN_FIELD_BASE(75, 75, 10, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(76, 76, 10, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(77, 77, 10, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(78, 78, 10, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(79, 79, 10, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(80, 80, 10, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(81, 81, 11, 0x0080, 0x10, 9, 1),
+ PIN_FIELD_BASE(82, 82, 11, 0x0080, 0x10, 10, 1),
+ PIN_FIELD_BASE(83, 83, 11, 0x0080, 0x10, 12, 1),
+ PIN_FIELD_BASE(84, 84, 11, 0x0080, 0x10, 11, 1),
+ PIN_FIELD_BASE(85, 85, 11, 0x0080, 0x10, 13, 1),
+ PIN_FIELD_BASE(86, 86, 11, 0x0080, 0x10, 14, 1),
+ PIN_FIELD_BASE(87, 87, 11, 0x0080, 0x10, 16, 1),
+ PIN_FIELD_BASE(88, 88, 11, 0x0080, 0x10, 15, 1),
+ PIN_FIELD_BASE(89, 89, 11, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(90, 90, 11, 0x0080, 0x10, 8, 1),
+ PIN_FIELD_BASE(91, 91, 12, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(92, 92, 12, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(93, 93, 12, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(94, 94, 12, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(95, 95, 12, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(96, 96, 12, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(97, 97, 12, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(98, 98, 12, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(99, 99, 12, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(100, 100, 12, 0x0090, 0x10, 12, 1),
+ PIN_FIELD_BASE(101, 101, 12, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(102, 102, 12, 0x0090, 0x10, 13, 1),
+ PIN_FIELD_BASE(103, 103, 12, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(104, 104, 12, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(105, 105, 12, 0x0090, 0x10, 14, 1),
+ PIN_FIELD_BASE(106, 106, 5, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(107, 107, 5, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(108, 108, 5, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(109, 109, 5, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(110, 110, 5, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(111, 111, 5, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(112, 112, 5, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(113, 113, 5, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(114, 114, 5, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(115, 115, 5, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(116, 116, 5, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(117, 117, 5, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(118, 118, 6, 0x00b0, 0x10, 9, 1),
+ PIN_FIELD_BASE(119, 119, 6, 0x00b0, 0x10, 10, 1),
+ PIN_FIELD_BASE(120, 120, 6, 0x00b0, 0x10, 12, 1),
+ PIN_FIELD_BASE(121, 121, 6, 0x00b0, 0x10, 11, 1),
+ PIN_FIELD_BASE(122, 122, 6, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(123, 123, 6, 0x00b0, 0x10, 7, 1),
+ PIN_FIELD_BASE(124, 124, 6, 0x00b0, 0x10, 8, 1),
+ PIN_FIELD_BASE(157, 157, 2, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(158, 158, 2, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(159, 159, 2, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(160, 160, 3, 0x0090, 0x10, 22, 1),
+ PIN_FIELD_BASE(161, 161, 3, 0x0090, 0x10, 20, 1),
+ PIN_FIELD_BASE(162, 162, 3, 0x0090, 0x10, 23, 1),
+ PIN_FIELD_BASE(163, 163, 3, 0x0090, 0x10, 21, 1),
+ PIN_FIELD_BASE(164, 164, 3, 0x0090, 0x10, 12, 1),
+ PIN_FIELD_BASE(165, 165, 3, 0x0090, 0x10, 14, 1),
+ PIN_FIELD_BASE(166, 166, 3, 0x0090, 0x10, 13, 1),
+ PIN_FIELD_BASE(167, 167, 3, 0x0090, 0x10, 15, 1),
+ PIN_FIELD_BASE(168, 168, 3, 0x0090, 0x10, 16, 1),
+ PIN_FIELD_BASE(169, 169, 3, 0x0090, 0x10, 17, 1),
+ PIN_FIELD_BASE(170, 170, 3, 0x0090, 0x10, 19, 1),
+ PIN_FIELD_BASE(171, 171, 3, 0x0090, 0x10, 18, 1),
+ PIN_FIELD_BASE(172, 172, 3, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(173, 173, 3, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(174, 174, 1, 0x0090, 0x10, 15, 1),
+ PIN_FIELD_BASE(175, 175, 1, 0x0090, 0x10, 16, 1),
+ PIN_FIELD_BASE(176, 176, 1, 0x0090, 0x10, 17, 1),
+ PIN_FIELD_BASE(177, 177, 1, 0x0090, 0x10, 18, 1),
+ PIN_FIELD_BASE(178, 178, 1, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(179, 179, 1, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(180, 180, 1, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(181, 181, 1, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(182, 182, 1, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(183, 183, 1, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(184, 184, 1, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(185, 185, 1, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(186, 186, 13, 0x00d0, 0x10, 4, 1),
+ PIN_FIELD_BASE(187, 187, 13, 0x00d0, 0x10, 5, 1),
+ PIN_FIELD_BASE(188, 188, 13, 0x00d0, 0x10, 12, 1),
+ PIN_FIELD_BASE(189, 189, 13, 0x00d0, 0x10, 17, 1),
+ PIN_FIELD_BASE(190, 190, 13, 0x00d0, 0x10, 13, 1),
+ PIN_FIELD_BASE(191, 191, 13, 0x00d0, 0x10, 18, 1),
+ PIN_FIELD_BASE(192, 192, 13, 0x00d0, 0x10, 0, 1),
+ PIN_FIELD_BASE(193, 193, 13, 0x00d0, 0x10, 6, 1),
+ PIN_FIELD_BASE(194, 194, 13, 0x00d0, 0x10, 14, 1),
+ PIN_FIELD_BASE(195, 195, 13, 0x00d0, 0x10, 19, 1),
+ PIN_FIELD_BASE(196, 196, 13, 0x00d0, 0x10, 1, 1),
+ PIN_FIELD_BASE(197, 197, 13, 0x00d0, 0x10, 7, 1),
+ PIN_FIELD_BASE(198, 198, 13, 0x00d0, 0x10, 15, 1),
+ PIN_FIELD_BASE(199, 199, 13, 0x00d0, 0x10, 20, 1),
+ PIN_FIELD_BASE(200, 200, 13, 0x00d0, 0x10, 22, 1),
+ PIN_FIELD_BASE(201, 201, 13, 0x00d0, 0x10, 25, 1),
+ PIN_FIELD_BASE(202, 202, 13, 0x00d0, 0x10, 16, 1),
+ PIN_FIELD_BASE(203, 203, 13, 0x00d0, 0x10, 21, 1),
+ PIN_FIELD_BASE(204, 204, 13, 0x00d0, 0x10, 2, 1),
+ PIN_FIELD_BASE(205, 205, 13, 0x00d0, 0x10, 3, 1),
+ PIN_FIELD_BASE(206, 206, 13, 0x00d0, 0x10, 8, 1),
+ PIN_FIELD_BASE(207, 207, 13, 0x00d0, 0x10, 9, 1),
+ PIN_FIELD_BASE(208, 208, 13, 0x00d0, 0x10, 10, 1),
+ PIN_FIELD_BASE(209, 209, 13, 0x00d0, 0x10, 11, 1),
+ PIN_FIELD_BASE(210, 210, 14, 0x00b0, 0x10, 0, 1),
+ PIN_FIELD_BASE(211, 211, 14, 0x00b0, 0x10, 1, 1),
+ PIN_FIELD_BASE(212, 212, 14, 0x00b0, 0x10, 2, 1),
+ PIN_FIELD_BASE(213, 213, 14, 0x00b0, 0x10, 3, 1),
+ PIN_FIELD_BASE(214, 214, 13, 0x00d0, 0x10, 23, 1),
+ PIN_FIELD_BASE(215, 215, 13, 0x00d0, 0x10, 24, 1),
+ PIN_FIELD_BASE(216, 216, 14, 0x00b0, 0x10, 4, 1),
+ PIN_FIELD_BASE(220, 220, 14, 0x00b0, 0x10, 5, 1),
+ PIN_FIELD_BASE(221, 221, 14, 0x00b0, 0x10, 6, 1),
+ PIN_FIELD_BASE(222, 222, 14, 0x00b0, 0x10, 8, 1),
+ PIN_FIELD_BASE(223, 223, 14, 0x00b0, 0x10, 7, 1),
+ PIN_FIELD_BASE(230, 230, 15, 0x0090, 0x10, 13, 1),
+ PIN_FIELD_BASE(231, 231, 15, 0x0090, 0x10, 14, 1),
+ PIN_FIELD_BASE(232, 232, 15, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(233, 233, 15, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(234, 234, 15, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(235, 235, 15, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(236, 236, 15, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(237, 237, 15, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(238, 238, 15, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(239, 239, 15, 0x0090, 0x10, 19, 1),
+ PIN_FIELD_BASE(240, 240, 15, 0x0090, 0x10, 18, 1),
+ PIN_FIELD_BASE(241, 241, 15, 0x0090, 0x10, 16, 1),
+ PIN_FIELD_BASE(242, 242, 15, 0x0090, 0x10, 17, 1),
+ PIN_FIELD_BASE(243, 243, 15, 0x0090, 0x10, 15, 1),
+ PIN_FIELD_BASE(244, 244, 15, 0x0090, 0x10, 12, 1),
+ PIN_FIELD_BASE(245, 245, 15, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(246, 246, 15, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(247, 247, 15, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(248, 248, 15, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(249, 249, 15, 0x0090, 0x10, 20, 1),
+ PIN_FIELD_BASE(250, 250, 15, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(251, 251, 3, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(252, 252, 3, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(253, 253, 3, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(254, 254, 3, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(255, 255, 3, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(256, 256, 3, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(257, 257, 3, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(258, 258, 3, 0x0090, 0x10, 9, 1),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_pd_range[] = {
+ PIN_FIELD_BASE(0, 0, 8, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(1, 1, 8, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(2, 2, 11, 0x0070, 0x10, 1, 1),
+ PIN_FIELD_BASE(3, 3, 11, 0x0070, 0x10, 2, 1),
+ PIN_FIELD_BASE(4, 4, 11, 0x0070, 0x10, 3, 1),
+ PIN_FIELD_BASE(5, 5, 11, 0x0070, 0x10, 4, 1),
+ PIN_FIELD_BASE(6, 6, 11, 0x0070, 0x10, 5, 1),
+ PIN_FIELD_BASE(7, 7, 11, 0x0070, 0x10, 6, 1),
+ PIN_FIELD_BASE(8, 8, 11, 0x0070, 0x10, 7, 1),
+ PIN_FIELD_BASE(9, 9, 9, 0x00a0, 0x10, 14, 1),
+ PIN_FIELD_BASE(10, 10, 9, 0x00a0, 0x10, 12, 1),
+ PIN_FIELD_BASE(11, 11, 8, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(12, 12, 9, 0x00a0, 0x10, 13, 1),
+ PIN_FIELD_BASE(13, 13, 6, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(14, 14, 3, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(15, 15, 6, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(16, 16, 6, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(17, 17, 6, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(18, 18, 6, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(19, 19, 6, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(20, 20, 3, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(21, 21, 2, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(22, 22, 2, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(23, 23, 2, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(24, 24, 2, 0x0080, 0x10, 6, 1),
+ PIN_FIELD_BASE(25, 25, 2, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(26, 26, 2, 0x0080, 0x10, 8, 1),
+ PIN_FIELD_BASE(27, 27, 2, 0x0080, 0x10, 9, 1),
+ PIN_FIELD_BASE(28, 28, 2, 0x0080, 0x10, 10, 1),
+ PIN_FIELD_BASE(29, 29, 2, 0x0080, 0x10, 11, 1),
+ PIN_FIELD_BASE(30, 30, 2, 0x0080, 0x10, 12, 1),
+ PIN_FIELD_BASE(31, 31, 2, 0x0080, 0x10, 13, 1),
+ PIN_FIELD_BASE(32, 32, 1, 0x0080, 0x10, 8, 1),
+ PIN_FIELD_BASE(33, 33, 1, 0x0080, 0x10, 9, 1),
+ PIN_FIELD_BASE(34, 34, 1, 0x0080, 0x10, 10, 1),
+ PIN_FIELD_BASE(35, 35, 1, 0x0080, 0x10, 11, 1),
+ PIN_FIELD_BASE(36, 36, 1, 0x0080, 0x10, 12, 1),
+ PIN_FIELD_BASE(37, 37, 1, 0x0080, 0x10, 13, 1),
+ PIN_FIELD_BASE(38, 38, 1, 0x0080, 0x10, 14, 1),
+ PIN_FIELD_BASE(39, 39, 8, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(40, 40, 8, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(41, 41, 8, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(42, 42, 8, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(43, 43, 8, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(44, 44, 8, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(45, 45, 8, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(46, 46, 8, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(47, 47, 8, 0x0090, 0x10, 13, 1),
+ PIN_FIELD_BASE(48, 48, 8, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(49, 49, 8, 0x0090, 0x10, 14, 1),
+ PIN_FIELD_BASE(50, 50, 8, 0x0090, 0x10, 12, 1),
+ PIN_FIELD_BASE(51, 51, 8, 0x0090, 0x10, 15, 1),
+ PIN_FIELD_BASE(52, 52, 9, 0x00a0, 0x10, 7, 1),
+ PIN_FIELD_BASE(53, 53, 9, 0x00a0, 0x10, 8, 1),
+ PIN_FIELD_BASE(54, 54, 9, 0x00a0, 0x10, 2, 1),
+ PIN_FIELD_BASE(55, 55, 9, 0x00a0, 0x10, 1, 1),
+ PIN_FIELD_BASE(56, 56, 9, 0x00a0, 0x10, 5, 1),
+ PIN_FIELD_BASE(57, 57, 9, 0x00a0, 0x10, 6, 1),
+ PIN_FIELD_BASE(58, 58, 9, 0x00a0, 0x10, 3, 1),
+ PIN_FIELD_BASE(59, 59, 9, 0x00a0, 0x10, 4, 1),
+ PIN_FIELD_BASE(61, 61, 9, 0x00a0, 0x10, 10, 1),
+ PIN_FIELD_BASE(62, 62, 9, 0x00a0, 0x10, 9, 1),
+ PIN_FIELD_BASE(63, 63, 9, 0x00a0, 0x10, 18, 1),
+ PIN_FIELD_BASE(64, 64, 9, 0x00a0, 0x10, 0, 1),
+ PIN_FIELD_BASE(65, 65, 9, 0x00a0, 0x10, 11, 1),
+ PIN_FIELD_BASE(66, 66, 9, 0x00a0, 0x10, 24, 1),
+ PIN_FIELD_BASE(67, 67, 9, 0x00a0, 0x10, 21, 1),
+ PIN_FIELD_BASE(68, 68, 9, 0x00a0, 0x10, 20, 1),
+ PIN_FIELD_BASE(69, 69, 9, 0x00a0, 0x10, 25, 1),
+ PIN_FIELD_BASE(70, 70, 9, 0x00a0, 0x10, 16, 1),
+ PIN_FIELD_BASE(71, 71, 9, 0x00a0, 0x10, 15, 1),
+ PIN_FIELD_BASE(72, 72, 9, 0x00a0, 0x10, 23, 1),
+ PIN_FIELD_BASE(73, 73, 9, 0x00a0, 0x10, 19, 1),
+ PIN_FIELD_BASE(74, 74, 9, 0x00a0, 0x10, 17, 1),
+ PIN_FIELD_BASE(75, 75, 10, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(76, 76, 10, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(77, 77, 10, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(78, 78, 10, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(79, 79, 10, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(80, 80, 10, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(81, 81, 11, 0x0070, 0x10, 9, 1),
+ PIN_FIELD_BASE(82, 82, 11, 0x0070, 0x10, 10, 1),
+ PIN_FIELD_BASE(83, 83, 11, 0x0070, 0x10, 12, 1),
+ PIN_FIELD_BASE(84, 84, 11, 0x0070, 0x10, 11, 1),
+ PIN_FIELD_BASE(85, 85, 11, 0x0070, 0x10, 13, 1),
+ PIN_FIELD_BASE(86, 86, 11, 0x0070, 0x10, 14, 1),
+ PIN_FIELD_BASE(87, 87, 11, 0x0070, 0x10, 16, 1),
+ PIN_FIELD_BASE(88, 88, 11, 0x0070, 0x10, 15, 1),
+ PIN_FIELD_BASE(89, 89, 11, 0x0070, 0x10, 0, 1),
+ PIN_FIELD_BASE(90, 90, 11, 0x0070, 0x10, 8, 1),
+ PIN_FIELD_BASE(91, 91, 12, 0x0080, 0x10, 6, 1),
+ PIN_FIELD_BASE(92, 92, 12, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(93, 93, 12, 0x0080, 0x10, 8, 1),
+ PIN_FIELD_BASE(94, 94, 12, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(95, 95, 12, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(96, 96, 12, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(97, 97, 12, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(98, 98, 12, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(99, 99, 12, 0x0080, 0x10, 9, 1),
+ PIN_FIELD_BASE(100, 100, 12, 0x0080, 0x10, 12, 1),
+ PIN_FIELD_BASE(101, 101, 12, 0x0080, 0x10, 10, 1),
+ PIN_FIELD_BASE(102, 102, 12, 0x0080, 0x10, 13, 1),
+ PIN_FIELD_BASE(103, 103, 12, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(104, 104, 12, 0x0080, 0x10, 11, 1),
+ PIN_FIELD_BASE(105, 105, 12, 0x0080, 0x10, 14, 1),
+ PIN_FIELD_BASE(106, 106, 5, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(107, 107, 5, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(108, 108, 5, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(109, 109, 5, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(110, 110, 5, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(111, 111, 5, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(112, 112, 5, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(113, 113, 5, 0x0080, 0x10, 6, 1),
+ PIN_FIELD_BASE(114, 114, 5, 0x0080, 0x10, 8, 1),
+ PIN_FIELD_BASE(115, 115, 5, 0x0080, 0x10, 9, 1),
+ PIN_FIELD_BASE(116, 116, 5, 0x0080, 0x10, 11, 1),
+ PIN_FIELD_BASE(117, 117, 5, 0x0080, 0x10, 10, 1),
+ PIN_FIELD_BASE(118, 118, 6, 0x0090, 0x10, 9, 1),
+ PIN_FIELD_BASE(119, 119, 6, 0x0090, 0x10, 10, 1),
+ PIN_FIELD_BASE(120, 120, 6, 0x0090, 0x10, 12, 1),
+ PIN_FIELD_BASE(121, 121, 6, 0x0090, 0x10, 11, 1),
+ PIN_FIELD_BASE(122, 122, 6, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(123, 123, 6, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(124, 124, 6, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(157, 157, 2, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(158, 158, 2, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(159, 159, 2, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(160, 160, 3, 0x0080, 0x10, 22, 1),
+ PIN_FIELD_BASE(161, 161, 3, 0x0080, 0x10, 20, 1),
+ PIN_FIELD_BASE(162, 162, 3, 0x0080, 0x10, 23, 1),
+ PIN_FIELD_BASE(163, 163, 3, 0x0080, 0x10, 21, 1),
+ PIN_FIELD_BASE(164, 164, 3, 0x0080, 0x10, 12, 1),
+ PIN_FIELD_BASE(165, 165, 3, 0x0080, 0x10, 14, 1),
+ PIN_FIELD_BASE(166, 166, 3, 0x0080, 0x10, 13, 1),
+ PIN_FIELD_BASE(167, 167, 3, 0x0080, 0x10, 15, 1),
+ PIN_FIELD_BASE(168, 168, 3, 0x0080, 0x10, 16, 1),
+ PIN_FIELD_BASE(169, 169, 3, 0x0080, 0x10, 17, 1),
+ PIN_FIELD_BASE(170, 170, 3, 0x0080, 0x10, 19, 1),
+ PIN_FIELD_BASE(171, 171, 3, 0x0080, 0x10, 18, 1),
+ PIN_FIELD_BASE(172, 172, 3, 0x0080, 0x10, 10, 1),
+ PIN_FIELD_BASE(173, 173, 3, 0x0080, 0x10, 11, 1),
+ PIN_FIELD_BASE(174, 174, 1, 0x0080, 0x10, 15, 1),
+ PIN_FIELD_BASE(175, 175, 1, 0x0080, 0x10, 16, 1),
+ PIN_FIELD_BASE(176, 176, 1, 0x0080, 0x10, 17, 1),
+ PIN_FIELD_BASE(177, 177, 1, 0x0080, 0x10, 18, 1),
+ PIN_FIELD_BASE(178, 178, 1, 0x0080, 0x10, 6, 1),
+ PIN_FIELD_BASE(179, 179, 1, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(180, 180, 1, 0x0080, 0x10, 0, 1),
+ PIN_FIELD_BASE(181, 181, 1, 0x0080, 0x10, 1, 1),
+ PIN_FIELD_BASE(182, 182, 1, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(183, 183, 1, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(184, 184, 1, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(185, 185, 1, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(186, 186, 13, 0x00c0, 0x10, 4, 1),
+ PIN_FIELD_BASE(187, 187, 13, 0x00c0, 0x10, 5, 1),
+ PIN_FIELD_BASE(188, 188, 13, 0x00c0, 0x10, 12, 1),
+ PIN_FIELD_BASE(189, 189, 13, 0x00c0, 0x10, 17, 1),
+ PIN_FIELD_BASE(190, 190, 13, 0x00c0, 0x10, 13, 1),
+ PIN_FIELD_BASE(191, 191, 13, 0x00c0, 0x10, 18, 1),
+ PIN_FIELD_BASE(192, 192, 13, 0x00c0, 0x10, 0, 1),
+ PIN_FIELD_BASE(193, 193, 13, 0x00c0, 0x10, 6, 1),
+ PIN_FIELD_BASE(194, 194, 13, 0x00c0, 0x10, 14, 1),
+ PIN_FIELD_BASE(195, 195, 13, 0x00c0, 0x10, 19, 1),
+ PIN_FIELD_BASE(196, 196, 13, 0x00c0, 0x10, 1, 1),
+ PIN_FIELD_BASE(197, 197, 13, 0x00c0, 0x10, 7, 1),
+ PIN_FIELD_BASE(198, 198, 13, 0x00c0, 0x10, 15, 1),
+ PIN_FIELD_BASE(199, 199, 13, 0x00c0, 0x10, 20, 1),
+ PIN_FIELD_BASE(200, 200, 13, 0x00c0, 0x10, 22, 1),
+ PIN_FIELD_BASE(201, 201, 13, 0x00c0, 0x10, 25, 1),
+ PIN_FIELD_BASE(202, 202, 13, 0x00c0, 0x10, 16, 1),
+ PIN_FIELD_BASE(203, 203, 13, 0x00c0, 0x10, 21, 1),
+ PIN_FIELD_BASE(204, 204, 13, 0x00c0, 0x10, 2, 1),
+ PIN_FIELD_BASE(205, 205, 13, 0x00c0, 0x10, 3, 1),
+ PIN_FIELD_BASE(206, 206, 13, 0x00c0, 0x10, 8, 1),
+ PIN_FIELD_BASE(207, 207, 13, 0x00c0, 0x10, 9, 1),
+ PIN_FIELD_BASE(208, 208, 13, 0x00c0, 0x10, 10, 1),
+ PIN_FIELD_BASE(209, 209, 13, 0x00c0, 0x10, 11, 1),
+ PIN_FIELD_BASE(210, 210, 14, 0x0090, 0x10, 0, 1),
+ PIN_FIELD_BASE(211, 211, 14, 0x0090, 0x10, 1, 1),
+ PIN_FIELD_BASE(212, 212, 14, 0x0090, 0x10, 2, 1),
+ PIN_FIELD_BASE(213, 213, 14, 0x0090, 0x10, 3, 1),
+ PIN_FIELD_BASE(214, 214, 13, 0x00c0, 0x10, 23, 1),
+ PIN_FIELD_BASE(215, 215, 13, 0x00c0, 0x10, 24, 1),
+ PIN_FIELD_BASE(216, 216, 14, 0x0090, 0x10, 4, 1),
+ PIN_FIELD_BASE(220, 220, 14, 0x0090, 0x10, 5, 1),
+ PIN_FIELD_BASE(221, 221, 14, 0x0090, 0x10, 6, 1),
+ PIN_FIELD_BASE(222, 222, 14, 0x0090, 0x10, 8, 1),
+ PIN_FIELD_BASE(223, 223, 14, 0x0090, 0x10, 7, 1),
+ PIN_FIELD_BASE(230, 230, 15, 0x0070, 0x10, 13, 1),
+ PIN_FIELD_BASE(231, 231, 15, 0x0070, 0x10, 14, 1),
+ PIN_FIELD_BASE(232, 232, 15, 0x0070, 0x10, 10, 1),
+ PIN_FIELD_BASE(233, 233, 15, 0x0070, 0x10, 0, 1),
+ PIN_FIELD_BASE(234, 234, 15, 0x0070, 0x10, 3, 1),
+ PIN_FIELD_BASE(235, 235, 15, 0x0070, 0x10, 1, 1),
+ PIN_FIELD_BASE(236, 236, 15, 0x0070, 0x10, 2, 1),
+ PIN_FIELD_BASE(237, 237, 15, 0x0070, 0x10, 6, 1),
+ PIN_FIELD_BASE(238, 238, 15, 0x0070, 0x10, 5, 1),
+ PIN_FIELD_BASE(239, 239, 15, 0x0070, 0x10, 19, 1),
+ PIN_FIELD_BASE(240, 240, 15, 0x0070, 0x10, 18, 1),
+ PIN_FIELD_BASE(241, 241, 15, 0x0070, 0x10, 16, 1),
+ PIN_FIELD_BASE(242, 242, 15, 0x0070, 0x10, 17, 1),
+ PIN_FIELD_BASE(243, 243, 15, 0x0070, 0x10, 15, 1),
+ PIN_FIELD_BASE(244, 244, 15, 0x0070, 0x10, 12, 1),
+ PIN_FIELD_BASE(245, 245, 15, 0x0070, 0x10, 9, 1),
+ PIN_FIELD_BASE(246, 246, 15, 0x0070, 0x10, 8, 1),
+ PIN_FIELD_BASE(247, 247, 15, 0x0070, 0x10, 7, 1),
+ PIN_FIELD_BASE(248, 248, 15, 0x0070, 0x10, 4, 1),
+ PIN_FIELD_BASE(249, 249, 15, 0x0070, 0x10, 20, 1),
+ PIN_FIELD_BASE(250, 250, 15, 0x0070, 0x10, 11, 1),
+ PIN_FIELD_BASE(251, 251, 3, 0x0080, 0x10, 2, 1),
+ PIN_FIELD_BASE(252, 252, 3, 0x0080, 0x10, 3, 1),
+ PIN_FIELD_BASE(253, 253, 3, 0x0080, 0x10, 4, 1),
+ PIN_FIELD_BASE(254, 254, 3, 0x0080, 0x10, 5, 1),
+ PIN_FIELD_BASE(255, 255, 3, 0x0080, 0x10, 6, 1),
+ PIN_FIELD_BASE(256, 256, 3, 0x0080, 0x10, 7, 1),
+ PIN_FIELD_BASE(257, 257, 3, 0x0080, 0x10, 8, 1),
+ PIN_FIELD_BASE(258, 258, 3, 0x0080, 0x10, 9, 1),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_drv_range[] = {
+ PIN_FIELD_BASE(0, 0, 8, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(1, 1, 8, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(2, 2, 11, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(3, 3, 11, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(4, 4, 11, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(5, 5, 11, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(6, 6, 11, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(7, 7, 11, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(8, 8, 11, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(9, 9, 9, 0x0010, 0x10, 9, 3),
+ PIN_FIELD_BASE(10, 10, 9, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(11, 11, 8, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(12, 12, 9, 0x0010, 0x10, 15, 3),
+ PIN_FIELD_BASE(13, 13, 6, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(14, 14, 3, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(15, 15, 6, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(16, 16, 6, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(17, 17, 6, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(18, 18, 6, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(19, 19, 6, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(20, 20, 3, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(21, 21, 2, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(22, 22, 2, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(23, 23, 2, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(24, 24, 2, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(25, 25, 2, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(26, 26, 2, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(27, 27, 2, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(28, 28, 2, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(29, 29, 2, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(30, 30, 2, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(31, 31, 2, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(32, 32, 1, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(33, 33, 1, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(34, 34, 1, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(35, 35, 1, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(36, 36, 1, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(37, 37, 1, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(38, 38, 1, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(39, 39, 8, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(40, 40, 8, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(41, 41, 8, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(42, 42, 8, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(43, 43, 8, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(44, 44, 8, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(45, 45, 8, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(46, 46, 8, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(47, 47, 8, 0x0010, 0x10, 9, 3),
+ PIN_FIELD_BASE(48, 48, 8, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(49, 49, 8, 0x0010, 0x10, 12, 3),
+ PIN_FIELD_BASE(50, 50, 8, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(51, 51, 8, 0x0010, 0x10, 15, 3),
+ PIN_FIELD_BASE(52, 52, 9, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(53, 53, 9, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(54, 54, 9, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(55, 55, 9, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(56, 56, 9, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(57, 57, 9, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(58, 58, 9, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(59, 59, 9, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(60, 60, 9, 0x0010, 0x10, 24, 3),
+ PIN_FIELD_BASE(61, 61, 9, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(62, 62, 9, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(63, 63, 9, 0x0010, 0x10, 12, 3),
+ PIN_FIELD_BASE(64, 64, 9, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(65, 65, 9, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(66, 66, 9, 0x0010, 0x10, 27, 3),
+ PIN_FIELD_BASE(67, 67, 9, 0x0010, 0x10, 21, 3),
+ PIN_FIELD_BASE(68, 68, 9, 0x0010, 0x10, 21, 3),
+ PIN_FIELD_BASE(69, 69, 9, 0x0010, 0x10, 21, 3),
+ PIN_FIELD_BASE(70, 70, 9, 0x0010, 0x10, 18, 3),
+ PIN_FIELD_BASE(71, 71, 9, 0x0010, 0x10, 18, 3),
+ PIN_FIELD_BASE(72, 72, 9, 0x0010, 0x10, 21, 3),
+ PIN_FIELD_BASE(73, 73, 9, 0x0010, 0x10, 18, 3),
+ PIN_FIELD_BASE(74, 74, 9, 0x0010, 0x10, 18, 3),
+ PIN_FIELD_BASE(75, 75, 10, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(76, 76, 10, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(77, 77, 10, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(78, 78, 10, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(79, 79, 10, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(80, 80, 10, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(81, 81, 11, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(82, 82, 11, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(83, 83, 11, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(84, 84, 11, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(85, 85, 11, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(86, 86, 11, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(87, 87, 11, 0x0010, 0x10, 9, 3),
+ PIN_FIELD_BASE(88, 88, 11, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(89, 89, 11, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(90, 90, 11, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(91, 91, 12, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(92, 92, 12, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(93, 93, 12, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(94, 94, 12, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(95, 95, 12, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(96, 96, 12, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(97, 97, 12, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(98, 98, 12, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(99, 99, 12, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(100, 100, 12, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(101, 101, 12, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(102, 102, 12, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(103, 103, 12, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(104, 104, 12, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(105, 105, 12, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(106, 106, 5, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(107, 107, 5, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(108, 108, 5, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(109, 109, 5, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(110, 110, 5, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(111, 111, 5, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(112, 112, 5, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(113, 113, 5, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(114, 114, 5, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(115, 115, 5, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(116, 116, 5, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(117, 117, 5, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(118, 118, 6, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(119, 119, 6, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(120, 120, 6, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(121, 121, 6, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(122, 122, 6, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(123, 123, 6, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(124, 124, 6, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(125, 125, 7, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(126, 126, 7, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(127, 127, 7, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(128, 128, 7, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(129, 129, 7, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(130, 130, 7, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(131, 131, 7, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(132, 132, 7, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(133, 133, 7, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(134, 134, 7, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(135, 135, 7, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(136, 136, 7, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(137, 137, 4, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(138, 138, 4, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(139, 139, 4, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(140, 140, 4, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(141, 141, 4, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(142, 142, 4, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(143, 143, 4, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(144, 144, 4, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(145, 145, 4, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(146, 146, 4, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(147, 147, 4, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(148, 148, 4, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(149, 149, 4, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(150, 150, 4, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(151, 151, 4, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(152, 152, 4, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(153, 153, 4, 0x0010, 0x10, 12, 3),
+ PIN_FIELD_BASE(154, 154, 4, 0x0010, 0x10, 9, 3),
+ PIN_FIELD_BASE(155, 155, 4, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(156, 156, 4, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(157, 157, 2, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(158, 158, 2, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(159, 159, 2, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(160, 160, 3, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(161, 161, 3, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(162, 162, 3, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(163, 163, 3, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(164, 164, 3, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(165, 165, 3, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(166, 166, 3, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(167, 167, 3, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(168, 168, 3, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(169, 169, 3, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(170, 170, 3, 0x0010, 0x10, 9, 3),
+ PIN_FIELD_BASE(171, 171, 3, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(172, 172, 3, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(173, 173, 3, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(174, 174, 1, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(175, 175, 1, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(176, 176, 1, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(177, 177, 1, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(178, 178, 1, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(179, 179, 1, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(180, 180, 1, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(181, 181, 1, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(182, 182, 1, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(183, 183, 1, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(184, 184, 1, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(185, 185, 1, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(186, 186, 13, 0x0010, 0x10, 12, 3),
+ PIN_FIELD_BASE(187, 187, 13, 0x0010, 0x10, 12, 3),
+ PIN_FIELD_BASE(188, 188, 13, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(189, 189, 13, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(190, 190, 13, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(191, 191, 13, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(192, 192, 13, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(193, 193, 13, 0x0010, 0x10, 15, 3),
+ PIN_FIELD_BASE(194, 194, 13, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(195, 195, 13, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(196, 196, 13, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(197, 197, 13, 0x0010, 0x10, 18, 3),
+ PIN_FIELD_BASE(198, 198, 13, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(199, 199, 13, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(200, 200, 13, 0x0010, 0x10, 27, 3),
+ PIN_FIELD_BASE(201, 201, 13, 0x0020, 0x10, 6, 3),
+ PIN_FIELD_BASE(202, 202, 13, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(203, 203, 13, 0x0010, 0x10, 9, 3),
+ PIN_FIELD_BASE(204, 204, 13, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(205, 205, 13, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(206, 206, 13, 0x0010, 0x10, 24, 3),
+ PIN_FIELD_BASE(207, 207, 13, 0x0010, 0x10, 21, 3),
+ PIN_FIELD_BASE(208, 208, 13, 0x0010, 0x10, 21, 3),
+ PIN_FIELD_BASE(209, 209, 13, 0x0010, 0x10, 21, 3),
+ PIN_FIELD_BASE(210, 210, 14, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(211, 211, 14, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(212, 212, 14, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(213, 213, 14, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(214, 214, 13, 0x0020, 0x10, 0, 3),
+ PIN_FIELD_BASE(215, 215, 13, 0x0020, 0x10, 3, 3),
+ PIN_FIELD_BASE(216, 216, 14, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(217, 217, 14, 0x0010, 0x10, 6, 3),
+ PIN_FIELD_BASE(218, 218, 14, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(219, 219, 14, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(220, 220, 14, 0x0020, 0x10, 3, 3),
+ PIN_FIELD_BASE(221, 221, 14, 0x0020, 0x10, 6, 3),
+ PIN_FIELD_BASE(222, 222, 14, 0x0020, 0x10, 12, 3),
+ PIN_FIELD_BASE(223, 223, 14, 0x0020, 0x10, 9, 3),
+ PIN_FIELD_BASE(224, 224, 14, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(225, 225, 14, 0x0000, 0x10, 21, 3),
+ PIN_FIELD_BASE(226, 226, 14, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(227, 227, 14, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(228, 228, 14, 0x0010, 0x10, 0, 3),
+ PIN_FIELD_BASE(229, 229, 14, 0x0010, 0x10, 3, 3),
+ PIN_FIELD_BASE(230, 230, 15, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(231, 231, 15, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(232, 232, 15, 0x0000, 0x10, 0, 3),
+ PIN_FIELD_BASE(233, 233, 15, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(234, 234, 15, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(235, 235, 15, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(236, 236, 15, 0x0000, 0x10, 3, 3),
+ PIN_FIELD_BASE(237, 237, 15, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(238, 238, 15, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(239, 239, 15, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(240, 240, 15, 0x0000, 0x10, 6, 3),
+ PIN_FIELD_BASE(241, 241, 15, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(242, 242, 15, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(243, 243, 15, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(244, 244, 15, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(245, 245, 15, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(246, 246, 15, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(247, 247, 15, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(248, 248, 15, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(249, 249, 15, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(250, 250, 15, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(251, 251, 3, 0x0000, 0x10, 9, 3),
+ PIN_FIELD_BASE(252, 252, 3, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(253, 253, 3, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(254, 254, 3, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(255, 255, 3, 0x0000, 0x10, 12, 3),
+ PIN_FIELD_BASE(256, 256, 3, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(257, 257, 3, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(258, 258, 3, 0x0000, 0x10, 15, 3),
+ PIN_FIELD_BASE(259, 259, 14, 0x0010, 0x10, 9, 3),
+ PIN_FIELD_BASE(260, 260, 14, 0x0010, 0x10, 12, 3),
+ PIN_FIELD_BASE(261, 261, 14, 0x0010, 0x10, 15, 3),
+ PIN_FIELD_BASE(262, 262, 14, 0x0010, 0x10, 18, 3),
+ PIN_FIELD_BASE(263, 263, 14, 0x0010, 0x10, 21, 3),
+ PIN_FIELD_BASE(264, 264, 14, 0x0010, 0x10, 24, 3),
+ PIN_FIELD_BASE(265, 265, 14, 0x0010, 0x10, 27, 3),
+ PIN_FIELD_BASE(266, 266, 14, 0x0020, 0x10, 0, 3),
+ PIN_FIELD_BASE(267, 267, 15, 0x0000, 0x10, 24, 3),
+ PIN_FIELD_BASE(268, 268, 15, 0x0000, 0x10, 27, 3),
+ PIN_FIELD_BASE(269, 269, 15, 0x0000, 0x10, 18, 3),
+ PIN_FIELD_BASE(270, 270, 15, 0x0000, 0x10, 21, 3),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_drv_adv_range[] = {
+ PIN_FIELD_BASE(46, 46, 8, 0x0030, 0x10, 0, 3),
+ PIN_FIELD_BASE(47, 47, 8, 0x0030, 0x10, 9, 3),
+ PIN_FIELD_BASE(48, 48, 8, 0x0030, 0x10, 3, 3),
+ PIN_FIELD_BASE(49, 49, 8, 0x0030, 0x10, 12, 3),
+ PIN_FIELD_BASE(50, 50, 8, 0x0030, 0x10, 6, 3),
+ PIN_FIELD_BASE(51, 51, 8, 0x0030, 0x10, 15, 3),
+ PIN_FIELD_BASE(52, 52, 9, 0x0030, 0x10, 0, 3),
+ PIN_FIELD_BASE(53, 53, 9, 0x0030, 0x10, 3, 3),
+ PIN_FIELD_BASE(75, 75, 10, 0x0020, 0x10, 0, 5),
+ PIN_FIELD_BASE(76, 76, 10, 0x0020, 0x10, 5, 5),
+ PIN_FIELD_BASE(77, 77, 10, 0x0020, 0x10, 10, 5),
+ PIN_FIELD_BASE(78, 78, 10, 0x0020, 0x10, 15, 5),
+ PIN_FIELD_BASE(99, 99, 12, 0x0020, 0x10, 0, 3),
+ PIN_FIELD_BASE(100, 100, 12, 0x0020, 0x10, 9, 3),
+ PIN_FIELD_BASE(101, 101, 12, 0x0020, 0x10, 3, 3),
+ PIN_FIELD_BASE(102, 102, 12, 0x0020, 0x10, 12, 3),
+ PIN_FIELD_BASE(104, 104, 12, 0x0020, 0x10, 6, 3),
+ PIN_FIELD_BASE(105, 105, 12, 0x0020, 0x10, 15, 3),
+ PIN_FIELD_BASE(123, 123, 6, 0x0020, 0x10, 0, 3),
+ PIN_FIELD_BASE(124, 124, 6, 0x0020, 0x10, 3, 3),
+ PIN_FIELD_BASE(164, 164, 3, 0x0020, 0x10, 0, 3),
+ PIN_FIELD_BASE(165, 165, 3, 0x0020, 0x10, 6, 3),
+ PIN_FIELD_BASE(166, 166, 3, 0x0020, 0x10, 3, 3),
+ PIN_FIELD_BASE(167, 167, 3, 0x0020, 0x10, 9, 3),
+ PIN_FIELD_BASE(168, 168, 3, 0x0020, 0x10, 12, 3),
+ PIN_FIELD_BASE(170, 170, 3, 0x0020, 0x10, 15, 3),
+ PIN_FIELD_BASE(176, 176, 1, 0x0020, 0x10, 0, 3),
+ PIN_FIELD_BASE(177, 177, 1, 0x0020, 0x10, 3, 3),
+ PIN_FIELD_BASE(188, 188, 13, 0x0040, 0x10, 0, 3),
+ PIN_FIELD_BASE(189, 189, 13, 0x0040, 0x10, 15, 3),
+ PIN_FIELD_BASE(190, 190, 13, 0x0040, 0x10, 3, 3),
+ PIN_FIELD_BASE(191, 191, 13, 0x0040, 0x10, 18, 3),
+ PIN_FIELD_BASE(194, 194, 13, 0x0040, 0x10, 6, 3),
+ PIN_FIELD_BASE(195, 195, 13, 0x0040, 0x10, 21, 3),
+ PIN_FIELD_BASE(198, 198, 13, 0x0040, 0x10, 9, 3),
+ PIN_FIELD_BASE(199, 199, 13, 0x0040, 0x10, 24, 3),
+ PIN_FIELD_BASE(200, 200, 13, 0x0050, 0x10, 0, 3),
+ PIN_FIELD_BASE(201, 201, 13, 0x0050, 0x10, 9, 3),
+ PIN_FIELD_BASE(202, 202, 13, 0x0040, 0x10, 12, 3),
+ PIN_FIELD_BASE(203, 203, 13, 0x0040, 0x10, 27, 3),
+ PIN_FIELD_BASE(214, 214, 13, 0x0050, 0x10, 3, 3),
+ PIN_FIELD_BASE(215, 215, 13, 0x0050, 0x10, 6, 3),
+};
+
+static const struct mtk_pin_field_calc mt8196_pin_rsel_range[] = {
+ PIN_FIELD_BASE(46, 46, 8, 0x00c0, 0x10, 0, 3),
+ PIN_FIELD_BASE(47, 47, 8, 0x00c0, 0x10, 9, 3),
+ PIN_FIELD_BASE(48, 48, 8, 0x00c0, 0x10, 3, 3),
+ PIN_FIELD_BASE(49, 49, 8, 0x00c0, 0x10, 12, 3),
+ PIN_FIELD_BASE(50, 50, 8, 0x00c0, 0x10, 6, 3),
+ PIN_FIELD_BASE(51, 51, 8, 0x00c0, 0x10, 15, 3),
+ PIN_FIELD_BASE(52, 52, 9, 0x0110, 0x10, 0, 3),
+ PIN_FIELD_BASE(53, 53, 9, 0x0110, 0x10, 3, 3),
+ PIN_FIELD_BASE(99, 99, 12, 0x00b0, 0x10, 0, 3),
+ PIN_FIELD_BASE(100, 100, 12, 0x00b0, 0x10, 9, 3),
+ PIN_FIELD_BASE(101, 101, 12, 0x00b0, 0x10, 3, 3),
+ PIN_FIELD_BASE(102, 102, 12, 0x00b0, 0x10, 12, 3),
+ PIN_FIELD_BASE(104, 104, 12, 0x00b0, 0x10, 6, 3),
+ PIN_FIELD_BASE(105, 105, 12, 0x00b0, 0x10, 15, 3),
+ PIN_FIELD_BASE(123, 123, 6, 0x0100, 0x10, 0, 3),
+ PIN_FIELD_BASE(124, 124, 6, 0x0100, 0x10, 3, 3),
+ PIN_FIELD_BASE(164, 164, 3, 0x00b0, 0x10, 0, 3),
+ PIN_FIELD_BASE(165, 165, 3, 0x00b0, 0x10, 6, 3),
+ PIN_FIELD_BASE(166, 166, 3, 0x00b0, 0x10, 3, 3),
+ PIN_FIELD_BASE(167, 167, 3, 0x00b0, 0x10, 9, 3),
+ PIN_FIELD_BASE(168, 168, 3, 0x00b0, 0x10, 12, 3),
+ PIN_FIELD_BASE(170, 170, 3, 0x00b0, 0x10, 15, 3),
+ PIN_FIELD_BASE(176, 176, 1, 0x00b0, 0x10, 0, 3),
+ PIN_FIELD_BASE(177, 177, 1, 0x00b0, 0x10, 3, 3),
+ PIN_FIELD_BASE(188, 188, 13, 0x00f0, 0x10, 0, 3),
+ PIN_FIELD_BASE(189, 189, 13, 0x00f0, 0x10, 15, 3),
+ PIN_FIELD_BASE(190, 190, 13, 0x00f0, 0x10, 3, 3),
+ PIN_FIELD_BASE(191, 191, 13, 0x00f0, 0x10, 18, 3),
+ PIN_FIELD_BASE(194, 194, 13, 0x00f0, 0x10, 6, 3),
+ PIN_FIELD_BASE(195, 195, 13, 0x00f0, 0x10, 21, 3),
+ PIN_FIELD_BASE(198, 198, 13, 0x00f0, 0x10, 9, 3),
+ PIN_FIELD_BASE(199, 199, 13, 0x00f0, 0x10, 24, 3),
+ PIN_FIELD_BASE(200, 200, 13, 0x0100, 0x10, 0, 3),
+ PIN_FIELD_BASE(201, 201, 13, 0x0100, 0x10, 9, 3),
+ PIN_FIELD_BASE(202, 202, 13, 0x00f0, 0x10, 12, 3),
+ PIN_FIELD_BASE(203, 203, 13, 0x00f0, 0x10, 27, 3),
+ PIN_FIELD_BASE(214, 214, 13, 0x0100, 0x10, 3, 3),
+ PIN_FIELD_BASE(215, 215, 13, 0x0100, 0x10, 6, 3),
+};
+
+static const struct mtk_pin_rsel mt8196_pin_rsel_val_range[] = {
+ PIN_RSEL(46, 53, 0x0, 75000, 75000),
+ PIN_RSEL(46, 53, 0x1, 10000, 5000),
+ PIN_RSEL(46, 53, 0x2, 5000, 75000),
+ PIN_RSEL(46, 53, 0x3, 4000, 5000),
+ PIN_RSEL(46, 53, 0x4, 3000, 75000),
+ PIN_RSEL(46, 53, 0x5, 2000, 5000),
+ PIN_RSEL(46, 53, 0x6, 1500, 75000),
+ PIN_RSEL(46, 53, 0x7, 1000, 5000),
+ PIN_RSEL(99, 102, 0x0, 75000, 75000),
+ PIN_RSEL(99, 102, 0x1, 10000, 5000),
+ PIN_RSEL(99, 102, 0x2, 5000, 75000),
+ PIN_RSEL(99, 102, 0x3, 4000, 5000),
+ PIN_RSEL(99, 102, 0x4, 3000, 75000),
+ PIN_RSEL(99, 102, 0x5, 2000, 5000),
+ PIN_RSEL(99, 102, 0x6, 1500, 75000),
+ PIN_RSEL(99, 102, 0x7, 1000, 5000),
+ PIN_RSEL(104, 105, 0x0, 75000, 75000),
+ PIN_RSEL(104, 105, 0x1, 10000, 5000),
+ PIN_RSEL(104, 105, 0x2, 5000, 75000),
+ PIN_RSEL(104, 105, 0x3, 4000, 5000),
+ PIN_RSEL(104, 105, 0x4, 3000, 75000),
+ PIN_RSEL(104, 105, 0x5, 2000, 5000),
+ PIN_RSEL(104, 105, 0x6, 1500, 75000),
+ PIN_RSEL(104, 105, 0x7, 1000, 5000),
+ PIN_RSEL(123, 124, 0x0, 75000, 75000),
+ PIN_RSEL(123, 124, 0x1, 10000, 5000),
+ PIN_RSEL(123, 124, 0x2, 5000, 75000),
+ PIN_RSEL(123, 124, 0x3, 4000, 5000),
+ PIN_RSEL(123, 124, 0x4, 3000, 75000),
+ PIN_RSEL(123, 124, 0x5, 2000, 5000),
+ PIN_RSEL(123, 124, 0x6, 1500, 75000),
+ PIN_RSEL(123, 124, 0x7, 1000, 5000),
+ PIN_RSEL(164, 168, 0x0, 75000, 75000),
+ PIN_RSEL(164, 168, 0x1, 10000, 5000),
+ PIN_RSEL(164, 168, 0x2, 5000, 75000),
+ PIN_RSEL(164, 168, 0x3, 4000, 5000),
+ PIN_RSEL(164, 168, 0x4, 3000, 75000),
+ PIN_RSEL(164, 168, 0x5, 2000, 5000),
+ PIN_RSEL(164, 168, 0x6, 1500, 75000),
+ PIN_RSEL(164, 168, 0x7, 1000, 5000),
+ PIN_RSEL(170, 170, 0x0, 75000, 75000),
+ PIN_RSEL(170, 170, 0x1, 10000, 5000),
+ PIN_RSEL(170, 170, 0x2, 5000, 75000),
+ PIN_RSEL(170, 170, 0x3, 4000, 5000),
+ PIN_RSEL(170, 170, 0x4, 3000, 75000),
+ PIN_RSEL(170, 170, 0x5, 2000, 5000),
+ PIN_RSEL(170, 170, 0x6, 1500, 75000),
+ PIN_RSEL(170, 170, 0x7, 1000, 5000),
+ PIN_RSEL(176, 177, 0x0, 75000, 75000),
+ PIN_RSEL(176, 177, 0x1, 10000, 5000),
+ PIN_RSEL(176, 177, 0x2, 5000, 75000),
+ PIN_RSEL(176, 177, 0x3, 4000, 5000),
+ PIN_RSEL(176, 177, 0x4, 3000, 75000),
+ PIN_RSEL(176, 177, 0x5, 2000, 5000),
+ PIN_RSEL(176, 177, 0x6, 1500, 75000),
+ PIN_RSEL(176, 177, 0x7, 1000, 5000),
+ PIN_RSEL(188, 191, 0x0, 75000, 75000),
+ PIN_RSEL(188, 191, 0x1, 10000, 5000),
+ PIN_RSEL(188, 191, 0x2, 5000, 75000),
+ PIN_RSEL(188, 191, 0x3, 4000, 5000),
+ PIN_RSEL(188, 191, 0x4, 3000, 75000),
+ PIN_RSEL(188, 191, 0x5, 2000, 5000),
+ PIN_RSEL(188, 191, 0x6, 1500, 75000),
+ PIN_RSEL(188, 191, 0x7, 1000, 5000),
+ PIN_RSEL(194, 195, 0x0, 75000, 75000),
+ PIN_RSEL(194, 195, 0x1, 10000, 5000),
+ PIN_RSEL(194, 195, 0x2, 5000, 75000),
+ PIN_RSEL(194, 195, 0x3, 4000, 5000),
+ PIN_RSEL(194, 195, 0x4, 3000, 75000),
+ PIN_RSEL(194, 195, 0x5, 2000, 5000),
+ PIN_RSEL(194, 195, 0x6, 1500, 75000),
+ PIN_RSEL(194, 195, 0x7, 1000, 5000),
+ PIN_RSEL(198, 203, 0x0, 75000, 75000),
+ PIN_RSEL(198, 203, 0x1, 10000, 5000),
+ PIN_RSEL(198, 203, 0x2, 5000, 75000),
+ PIN_RSEL(198, 203, 0x3, 4000, 5000),
+ PIN_RSEL(198, 203, 0x4, 3000, 75000),
+ PIN_RSEL(198, 203, 0x5, 2000, 5000),
+ PIN_RSEL(198, 203, 0x6, 1500, 75000),
+ PIN_RSEL(198, 203, 0x7, 1000, 5000),
+ PIN_RSEL(214, 215, 0x0, 75000, 75000),
+ PIN_RSEL(214, 215, 0x1, 10000, 5000),
+ PIN_RSEL(214, 215, 0x2, 5000, 75000),
+ PIN_RSEL(214, 215, 0x3, 4000, 5000),
+ PIN_RSEL(214, 215, 0x4, 3000, 75000),
+ PIN_RSEL(214, 215, 0x5, 2000, 5000),
+ PIN_RSEL(214, 215, 0x6, 1500, 75000),
+ PIN_RSEL(214, 215, 0x7, 1000, 5000),
+};
+
+static const unsigned int mt8196_pull_type[] = {
+ MTK_PULL_PU_PD_TYPE,/*0*/ MTK_PULL_PU_PD_TYPE,/*1*/
+ MTK_PULL_PU_PD_TYPE,/*2*/ MTK_PULL_PU_PD_TYPE,/*3*/
+ MTK_PULL_PU_PD_TYPE,/*4*/ MTK_PULL_PU_PD_TYPE,/*5*/
+ MTK_PULL_PU_PD_TYPE,/*6*/ MTK_PULL_PU_PD_TYPE,/*7*/
+ MTK_PULL_PU_PD_TYPE,/*8*/ MTK_PULL_PU_PD_TYPE,/*9*/
+ MTK_PULL_PU_PD_TYPE,/*10*/ MTK_PULL_PU_PD_TYPE,/*11*/
+ MTK_PULL_PU_PD_TYPE,/*12*/ MTK_PULL_PU_PD_TYPE,/*13*/
+ MTK_PULL_PU_PD_TYPE,/*14*/ MTK_PULL_PU_PD_TYPE,/*15*/
+ MTK_PULL_PU_PD_TYPE,/*16*/ MTK_PULL_PU_PD_TYPE,/*17*/
+ MTK_PULL_PU_PD_TYPE,/*18*/ MTK_PULL_PU_PD_TYPE,/*19*/
+ MTK_PULL_PU_PD_TYPE,/*20*/ MTK_PULL_PU_PD_TYPE,/*21*/
+ MTK_PULL_PU_PD_TYPE,/*22*/ MTK_PULL_PU_PD_TYPE,/*23*/
+ MTK_PULL_PU_PD_TYPE,/*24*/ MTK_PULL_PU_PD_TYPE,/*25*/
+ MTK_PULL_PU_PD_TYPE,/*26*/ MTK_PULL_PU_PD_TYPE,/*27*/
+ MTK_PULL_PU_PD_TYPE,/*28*/ MTK_PULL_PU_PD_TYPE,/*29*/
+ MTK_PULL_PU_PD_TYPE,/*30*/ MTK_PULL_PU_PD_TYPE,/*31*/
+ MTK_PULL_PU_PD_TYPE,/*32*/ MTK_PULL_PU_PD_TYPE,/*33*/
+ MTK_PULL_PU_PD_TYPE,/*34*/ MTK_PULL_PU_PD_TYPE,/*35*/
+ MTK_PULL_PU_PD_TYPE,/*36*/ MTK_PULL_PU_PD_TYPE,/*37*/
+ MTK_PULL_PU_PD_TYPE,/*38*/ MTK_PULL_PU_PD_TYPE,/*39*/
+ MTK_PULL_PU_PD_TYPE,/*40*/ MTK_PULL_PU_PD_TYPE,/*41*/
+ MTK_PULL_PU_PD_TYPE,/*42*/ MTK_PULL_PU_PD_TYPE,/*43*/
+ MTK_PULL_PU_PD_TYPE,/*44*/ MTK_PULL_PU_PD_TYPE,/*45*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*46*/ MTK_PULL_PU_PD_RSEL_TYPE,/*47*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*48*/ MTK_PULL_PU_PD_RSEL_TYPE,/*49*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*50*/ MTK_PULL_PU_PD_RSEL_TYPE,/*51*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*52*/ MTK_PULL_PU_PD_RSEL_TYPE,/*53*/
+ MTK_PULL_PU_PD_TYPE,/*54*/ MTK_PULL_PU_PD_TYPE,/*55*/
+ MTK_PULL_PU_PD_TYPE,/*56*/ MTK_PULL_PU_PD_TYPE,/*57*/
+ MTK_PULL_PU_PD_TYPE,/*58*/ MTK_PULL_PU_PD_TYPE,/*59*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*60*/ MTK_PULL_PU_PD_TYPE,/*61*/
+ MTK_PULL_PU_PD_TYPE,/*62*/ MTK_PULL_PU_PD_TYPE,/*63*/
+ MTK_PULL_PU_PD_TYPE,/*64*/ MTK_PULL_PU_PD_TYPE,/*65*/
+ MTK_PULL_PU_PD_TYPE,/*66*/ MTK_PULL_PU_PD_TYPE,/*67*/
+ MTK_PULL_PU_PD_TYPE,/*68*/ MTK_PULL_PU_PD_TYPE,/*69*/
+ MTK_PULL_PU_PD_TYPE,/*70*/ MTK_PULL_PU_PD_TYPE,/*71*/
+ MTK_PULL_PU_PD_TYPE,/*72*/ MTK_PULL_PU_PD_TYPE,/*73*/
+ MTK_PULL_PU_PD_TYPE,/*74*/ MTK_PULL_PU_PD_TYPE,/*75*/
+ MTK_PULL_PU_PD_TYPE,/*76*/ MTK_PULL_PU_PD_TYPE,/*77*/
+ MTK_PULL_PU_PD_TYPE,/*78*/ MTK_PULL_PU_PD_TYPE,/*79*/
+ MTK_PULL_PU_PD_TYPE,/*80*/ MTK_PULL_PU_PD_TYPE,/*81*/
+ MTK_PULL_PU_PD_TYPE,/*82*/ MTK_PULL_PU_PD_TYPE,/*83*/
+ MTK_PULL_PU_PD_TYPE,/*84*/ MTK_PULL_PU_PD_TYPE,/*85*/
+ MTK_PULL_PU_PD_TYPE,/*86*/ MTK_PULL_PU_PD_TYPE,/*87*/
+ MTK_PULL_PU_PD_TYPE,/*88*/ MTK_PULL_PU_PD_TYPE,/*89*/
+ MTK_PULL_PU_PD_TYPE,/*90*/ MTK_PULL_PU_PD_TYPE,/*91*/
+ MTK_PULL_PU_PD_TYPE,/*92*/ MTK_PULL_PU_PD_TYPE,/*93*/
+ MTK_PULL_PU_PD_TYPE,/*94*/ MTK_PULL_PU_PD_TYPE,/*95*/
+ MTK_PULL_PU_PD_TYPE,/*96*/ MTK_PULL_PU_PD_TYPE,/*97*/
+ MTK_PULL_PU_PD_TYPE,/*98*/ MTK_PULL_PU_PD_RSEL_TYPE,/*99*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*100*/ MTK_PULL_PU_PD_RSEL_TYPE,/*101*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*102*/ MTK_PULL_PU_PD_TYPE,/*103*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*104*/ MTK_PULL_PU_PD_RSEL_TYPE,/*105*/
+ MTK_PULL_PU_PD_TYPE,/*106*/ MTK_PULL_PU_PD_TYPE,/*107*/
+ MTK_PULL_PU_PD_TYPE,/*108*/ MTK_PULL_PU_PD_TYPE,/*109*/
+ MTK_PULL_PU_PD_TYPE,/*110*/ MTK_PULL_PU_PD_TYPE,/*111*/
+ MTK_PULL_PU_PD_TYPE,/*112*/ MTK_PULL_PU_PD_TYPE,/*113*/
+ MTK_PULL_PU_PD_TYPE,/*114*/ MTK_PULL_PU_PD_TYPE,/*115*/
+ MTK_PULL_PU_PD_TYPE,/*116*/ MTK_PULL_PU_PD_TYPE,/*117*/
+ MTK_PULL_PU_PD_TYPE,/*118*/ MTK_PULL_PU_PD_TYPE,/*119*/
+ MTK_PULL_PU_PD_TYPE,/*120*/ MTK_PULL_PU_PD_TYPE,/*121*/
+ MTK_PULL_PU_PD_TYPE,/*122*/ MTK_PULL_PU_PD_RSEL_TYPE,/*123*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*124*/ MTK_PULL_PUPD_R1R0_TYPE,/*125*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*126*/ MTK_PULL_PUPD_R1R0_TYPE,/*127*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*128*/ MTK_PULL_PUPD_R1R0_TYPE,/*129*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*130*/ MTK_PULL_PUPD_R1R0_TYPE,/*131*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*132*/ MTK_PULL_PUPD_R1R0_TYPE,/*133*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*134*/ MTK_PULL_PUPD_R1R0_TYPE,/*135*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*136*/ MTK_PULL_PUPD_R1R0_TYPE,/*137*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*138*/ MTK_PULL_PUPD_R1R0_TYPE,/*139*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*140*/ MTK_PULL_PUPD_R1R0_TYPE,/*141*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*142*/ MTK_PULL_PUPD_R1R0_TYPE,/*143*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*144*/ MTK_PULL_PUPD_R1R0_TYPE,/*145*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*146*/ MTK_PULL_PUPD_R1R0_TYPE,/*147*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*148*/ MTK_PULL_PUPD_R1R0_TYPE,/*149*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*150*/ MTK_PULL_PUPD_R1R0_TYPE,/*151*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*152*/ MTK_PULL_PUPD_R1R0_TYPE,/*153*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*154*/ MTK_PULL_PUPD_R1R0_TYPE,/*155*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*156*/ MTK_PULL_PU_PD_TYPE,/*157*/
+ MTK_PULL_PU_PD_TYPE,/*158*/ MTK_PULL_PU_PD_TYPE,/*159*/
+ MTK_PULL_PU_PD_TYPE,/*160*/ MTK_PULL_PU_PD_TYPE,/*161*/
+ MTK_PULL_PU_PD_TYPE,/*162*/ MTK_PULL_PU_PD_TYPE,/*163*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*164*/ MTK_PULL_PU_PD_RSEL_TYPE,/*165*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*166*/ MTK_PULL_PU_PD_RSEL_TYPE,/*167*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*168*/ MTK_PULL_PU_PD_TYPE,/*169*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*170*/ MTK_PULL_PU_PD_TYPE,/*171*/
+ MTK_PULL_PU_PD_TYPE,/*172*/ MTK_PULL_PU_PD_TYPE,/*173*/
+ MTK_PULL_PU_PD_TYPE,/*174*/ MTK_PULL_PU_PD_TYPE,/*175*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*176*/ MTK_PULL_PU_PD_RSEL_TYPE,/*177*/
+ MTK_PULL_PU_PD_TYPE,/*178*/ MTK_PULL_PU_PD_TYPE,/*179*/
+ MTK_PULL_PU_PD_TYPE,/*180*/ MTK_PULL_PU_PD_TYPE,/*181*/
+ MTK_PULL_PU_PD_TYPE,/*182*/ MTK_PULL_PU_PD_TYPE,/*183*/
+ MTK_PULL_PU_PD_TYPE,/*184*/ MTK_PULL_PU_PD_TYPE,/*185*/
+ MTK_PULL_PU_PD_TYPE,/*186*/ MTK_PULL_PU_PD_TYPE,/*187*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*188*/ MTK_PULL_PU_PD_RSEL_TYPE,/*189*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*190*/ MTK_PULL_PU_PD_RSEL_TYPE,/*191*/
+ MTK_PULL_PU_PD_TYPE,/*192*/ MTK_PULL_PU_PD_TYPE,/*193*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*194*/ MTK_PULL_PU_PD_RSEL_TYPE,/*195*/
+ MTK_PULL_PU_PD_TYPE,/*196*/ MTK_PULL_PU_PD_TYPE,/*197*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*198*/ MTK_PULL_PU_PD_RSEL_TYPE,/*199*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*200*/ MTK_PULL_PU_PD_RSEL_TYPE,/*201*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*202*/ MTK_PULL_PU_PD_RSEL_TYPE,/*203*/
+ MTK_PULL_PU_PD_TYPE,/*204*/ MTK_PULL_PU_PD_TYPE,/*205*/
+ MTK_PULL_PU_PD_TYPE,/*206*/ MTK_PULL_PU_PD_TYPE,/*207*/
+ MTK_PULL_PU_PD_TYPE,/*208*/ MTK_PULL_PU_PD_TYPE,/*209*/
+ MTK_PULL_PU_PD_TYPE,/*210*/ MTK_PULL_PU_PD_TYPE,/*211*/
+ MTK_PULL_PU_PD_TYPE,/*212*/ MTK_PULL_PU_PD_TYPE,/*213*/
+ MTK_PULL_PU_PD_RSEL_TYPE,/*214*/ MTK_PULL_PU_PD_RSEL_TYPE,/*215*/
+ MTK_PULL_PU_PD_TYPE,/*216*/ MTK_PULL_PUPD_R1R0_TYPE,/*217*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*218*/ MTK_PULL_PUPD_R1R0_TYPE,/*219*/
+ MTK_PULL_PU_PD_TYPE,/*220*/ MTK_PULL_PU_PD_TYPE,/*221*/
+ MTK_PULL_PU_PD_TYPE,/*222*/ MTK_PULL_PU_PD_TYPE,/*223*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*224*/ MTK_PULL_PUPD_R1R0_TYPE,/*225*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*226*/ MTK_PULL_PUPD_R1R0_TYPE,/*227*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*228*/ MTK_PULL_PUPD_R1R0_TYPE,/*229*/
+ MTK_PULL_PU_PD_TYPE,/*230*/ MTK_PULL_PU_PD_TYPE,/*231*/
+ MTK_PULL_PU_PD_TYPE,/*232*/ MTK_PULL_PU_PD_TYPE,/*233*/
+ MTK_PULL_PU_PD_TYPE,/*234*/ MTK_PULL_PU_PD_TYPE,/*235*/
+ MTK_PULL_PU_PD_TYPE,/*236*/ MTK_PULL_PU_PD_TYPE,/*237*/
+ MTK_PULL_PU_PD_TYPE,/*238*/ MTK_PULL_PU_PD_TYPE,/*239*/
+ MTK_PULL_PU_PD_TYPE,/*240*/ MTK_PULL_PU_PD_TYPE,/*241*/
+ MTK_PULL_PU_PD_TYPE,/*242*/ MTK_PULL_PU_PD_TYPE,/*243*/
+ MTK_PULL_PU_PD_TYPE,/*244*/ MTK_PULL_PU_PD_TYPE,/*245*/
+ MTK_PULL_PU_PD_TYPE,/*246*/ MTK_PULL_PU_PD_TYPE,/*247*/
+ MTK_PULL_PU_PD_TYPE,/*248*/ MTK_PULL_PU_PD_TYPE,/*249*/
+ MTK_PULL_PU_PD_TYPE,/*250*/ MTK_PULL_PU_PD_TYPE,/*251*/
+ MTK_PULL_PU_PD_TYPE,/*252*/ MTK_PULL_PU_PD_TYPE,/*253*/
+ MTK_PULL_PU_PD_TYPE,/*254*/ MTK_PULL_PU_PD_TYPE,/*255*/
+ MTK_PULL_PU_PD_TYPE,/*256*/ MTK_PULL_PU_PD_TYPE,/*257*/
+ MTK_PULL_PU_PD_TYPE,/*258*/ MTK_PULL_PUPD_R1R0_TYPE,/*259*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*260*/ MTK_PULL_PUPD_R1R0_TYPE,/*261*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*262*/ MTK_PULL_PUPD_R1R0_TYPE,/*263*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*264*/ MTK_PULL_PUPD_R1R0_TYPE,/*265*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*266*/ MTK_PULL_PUPD_R1R0_TYPE,/*267*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*268*/ MTK_PULL_PUPD_R1R0_TYPE,/*269*/
+ MTK_PULL_PUPD_R1R0_TYPE,/*270*/
+};
+
+static const struct mtk_pin_reg_calc mt8196_reg_cals[PINCTRL_PIN_REG_MAX] = {
+ [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt8196_pin_mode_range),
+ [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt8196_pin_dir_range),
+ [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt8196_pin_di_range),
+ [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt8196_pin_do_range),
+ [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt8196_pin_smt_range),
+ [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt8196_pin_ies_range),
+ [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt8196_pin_pupd_range),
+ [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt8196_pin_r0_range),
+ [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt8196_pin_r1_range),
+ [PINCTRL_PIN_REG_PU] = MTK_RANGE(mt8196_pin_pu_range),
+ [PINCTRL_PIN_REG_PD] = MTK_RANGE(mt8196_pin_pd_range),
+ [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt8196_pin_drv_range),
+ [PINCTRL_PIN_REG_DRV_ADV] = MTK_RANGE(mt8196_pin_drv_adv_range),
+ [PINCTRL_PIN_REG_RSEL] = MTK_RANGE(mt8196_pin_rsel_range),
+};
+
+static const char * const mt8196_pinctrl_register_base_names[] = {
+ "iocfg0", "iocfg_rt", "iocfg_rm1", "iocfg_rm2",
+ "iocfg_rb", "iocfg_bm1", "iocfg_bm2", "iocfg_bm3",
+ "iocfg_lt", "iocfg_lm1", "iocfg_lm2", "iocfg_lb1",
+ "iocfg_lb2", "iocfg_tm1", "iocfg_tm2", "iocfg_tm3",
+};
+
+static const struct mtk_eint_hw mt8196_eint_hw = {
+ .port_mask = 0xf,
+ .ports = 3,
+ .ap_num = 293,
+ .db_cnt = 32,
+ .db_time = debounce_time_mt6765,
+};
+
+static const struct mtk_pin_soc mt8196_data = {
+ .reg_cal = mt8196_reg_cals,
+ .pins = mtk_pins_mt8196,
+ .npins = ARRAY_SIZE(mtk_pins_mt8196),
+ .ngrps = ARRAY_SIZE(mtk_pins_mt8196),
+ .eint_hw = &mt8196_eint_hw,
+ .eint_pin = eint_pins_mt8196,
+ .nfuncs = 8,
+ .gpio_m = 0,
+ .base_names = mt8196_pinctrl_register_base_names,
+ .nbase_names = ARRAY_SIZE(mt8196_pinctrl_register_base_names),
+ .pull_type = mt8196_pull_type,
+ .pin_rsel = mt8196_pin_rsel_val_range,
+ .npin_rsel = ARRAY_SIZE(mt8196_pin_rsel_val_range),
+ .bias_set_combo = mtk_pinconf_bias_set_combo,
+ .bias_get_combo = mtk_pinconf_bias_get_combo,
+ .drive_set = mtk_pinconf_drive_set_rev1,
+ .drive_get = mtk_pinconf_drive_get_rev1,
+ .adv_drive_get = mtk_pinconf_adv_drive_get_raw,
+ .adv_drive_set = mtk_pinconf_adv_drive_set_raw,
+};
+
+static const struct of_device_id mt8196_pinctrl_of_match[] = {
+ { .compatible = "mediatek,mt8196-pinctrl", .data = &mt8196_data },
+ { /* sentinel */ }
+};
+
+static struct platform_driver mt8196_pinctrl_driver = {
+ .driver = {
+ .name = "mt8196-pinctrl",
+ .of_match_table = mt8196_pinctrl_of_match,
+ .pm = pm_sleep_ptr(&mtk_paris_pinctrl_pm_ops),
+ },
+ .probe = mtk_paris_pinctrl_probe,
+};
+
+static int __init mt8196_pinctrl_init(void)
+{
+ return platform_driver_register(&mt8196_pinctrl_driver);
+}
+arch_initcall(mt8196_pinctrl_init);
+
+MODULE_DESCRIPTION("MediaTek MT8196 Pinctrl Driver");
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
index d1556b75d9ef..4918d38abfc2 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
@@ -381,10 +381,13 @@ int mtk_build_eint(struct mtk_pinctrl *hw, struct platform_device *pdev)
return -ENOMEM;
count_reg_names = of_property_count_strings(np, "reg-names");
- if (count_reg_names < hw->soc->nbase_names)
+ if (count_reg_names < 0)
+ return -EINVAL;
+
+ hw->eint->nbase = count_reg_names - (int)hw->soc->nbase_names;
+ if (hw->eint->nbase <= 0)
return -EINVAL;
- hw->eint->nbase = count_reg_names - hw->soc->nbase_names;
hw->eint->base = devm_kmalloc_array(&pdev->dev, hw->eint->nbase,
sizeof(*hw->eint->base), GFP_KERNEL | __GFP_ZERO);
if (!hw->eint->base) {
@@ -416,7 +419,7 @@ int mtk_build_eint(struct mtk_pinctrl *hw, struct platform_device *pdev)
hw->eint->pctl = hw;
hw->eint->gpio_xlate = &mtk_eint_xt;
- ret = mtk_eint_do_init(hw->eint);
+ ret = mtk_eint_do_init(hw->eint, hw->soc->eint_pin);
if (ret)
goto err_free_eint;
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
index 8596f3541265..a4cb6d511fcd 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -86,7 +86,7 @@ static int mtk_pmx_gpio_set_direction(struct pinctrl_dev *pctldev,
return 0;
}
-static void mtk_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int mtk_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
{
unsigned int reg_addr;
unsigned int bit;
@@ -100,7 +100,7 @@ static void mtk_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
else
reg_addr = CLR_ADDR(reg_addr, pctl);
- regmap_write(mtk_get_regmap(pctl, offset), reg_addr, bit);
+ return regmap_write(mtk_get_regmap(pctl, offset), reg_addr, bit);
}
static int mtk_pconf_set_ies_smt(struct mtk_pinctrl *pctl, unsigned pin,
@@ -809,7 +809,12 @@ static const struct pinmux_ops mtk_pmx_ops = {
static int mtk_gpio_direction_output(struct gpio_chip *chip,
unsigned offset, int value)
{
- mtk_gpio_set(chip, offset, value);
+ int ret;
+
+ ret = mtk_gpio_set(chip, offset, value);
+ if (ret)
+ return ret;
+
return pinctrl_gpio_direction_output(chip, offset);
}
@@ -893,7 +898,7 @@ static const struct gpio_chip mtk_gpio_chip = {
.direction_input = pinctrl_gpio_direction_input,
.direction_output = mtk_gpio_direction_output,
.get = mtk_gpio_get,
- .set = mtk_gpio_set,
+ .set_rv = mtk_gpio_set,
.to_irq = mtk_gpio_to_irq,
.set_config = mtk_gpio_set_config,
};
@@ -1039,7 +1044,7 @@ static int mtk_eint_init(struct mtk_pinctrl *pctl, struct platform_device *pdev)
pctl->eint->pctl = pctl;
pctl->eint->gpio_xlate = &mtk_eint_xt;
- return mtk_eint_do_init(pctl->eint);
+ return mtk_eint_do_init(pctl->eint, NULL);
}
/* This is used as a common probe function */
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt6893.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6893.h
new file mode 100644
index 000000000000..0d3bb16411f8
--- /dev/null
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6893.h
@@ -0,0 +1,2283 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2019 MediaTek Inc.
+ * Copyright (C) 2024 Collabora Ltd.
+ *
+ * Author: Andy Teng <andy.teng@mediatek.com>
+ */
+
+#ifndef __PINCTRL_MTK_MT6893_H
+#define __PINCTRL_MTK_MT6893_H
+
+#include "pinctrl-paris.h"
+
+static const struct mtk_pin_desc mtk_pins_mt6893[] = {
+ MTK_PIN(
+ 0, "GPIO0",
+ MTK_EINT_FUNCTION(0, 0),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO0"),
+ MTK_FUNCTION(1, "SPI6_CLK"),
+ MTK_FUNCTION(2, "I2S5_MCK"),
+ MTK_FUNCTION(3, "PWM_0"),
+ MTK_FUNCTION(4, "MD_INT0"),
+ MTK_FUNCTION(5, "TP_GPIO0_AO")
+ ),
+ MTK_PIN(
+ 1, "GPIO1",
+ MTK_EINT_FUNCTION(0, 1),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO1"),
+ MTK_FUNCTION(1, "SPI6_CSB"),
+ MTK_FUNCTION(2, "I2S5_BCK"),
+ MTK_FUNCTION(3, "PWM_1"),
+ MTK_FUNCTION(4, "MD_INT1_C2K_UIM0_HOT_PLUG"),
+ MTK_FUNCTION(5, "TP_GPIO1_AO")
+ ),
+ MTK_PIN(
+ 2, "GPIO2",
+ MTK_EINT_FUNCTION(0, 2),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO2"),
+ MTK_FUNCTION(1, "SPI6_MI"),
+ MTK_FUNCTION(2, "I2S5_LRCK"),
+ MTK_FUNCTION(3, "PWM_2"),
+ MTK_FUNCTION(4, "MD_INT2_C2K_UIM1_HOT_PLUG"),
+ MTK_FUNCTION(5, "TP_GPIO2_AO")
+ ),
+ MTK_PIN(
+ 3, "GPIO3",
+ MTK_EINT_FUNCTION(0, 3),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO3"),
+ MTK_FUNCTION(1, "SPI6_MO"),
+ MTK_FUNCTION(2, "I2S5_DO"),
+ MTK_FUNCTION(3, "PWM_3"),
+ MTK_FUNCTION(4, "CLKM0"),
+ MTK_FUNCTION(5, "TP_GPIO3_AO")
+ ),
+ MTK_PIN(
+ 4, "GPIO4",
+ MTK_EINT_FUNCTION(0, 4),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO4"),
+ MTK_FUNCTION(1, "SPI7_A_CLK"),
+ MTK_FUNCTION(2, "I2S2_MCK"),
+ MTK_FUNCTION(3, "DMIC1_CLK"),
+ MTK_FUNCTION(4, "PCM1_DI"),
+ MTK_FUNCTION(5, "TP_GPIO4_AO")
+ ),
+ MTK_PIN(
+ 5, "GPIO5",
+ MTK_EINT_FUNCTION(0, 5),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO5"),
+ MTK_FUNCTION(1, "SPI7_A_CSB"),
+ MTK_FUNCTION(2, "I2S2_BCK"),
+ MTK_FUNCTION(3, "DMIC1_DAT"),
+ MTK_FUNCTION(4, "PCM1_CLK"),
+ MTK_FUNCTION(5, "TP_GPIO5_AO")
+ ),
+ MTK_PIN(
+ 6, "GPIO6",
+ MTK_EINT_FUNCTION(0, 6),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO6"),
+ MTK_FUNCTION(1, "SPI7_A_MI"),
+ MTK_FUNCTION(2, "I2S2_LRCK"),
+ MTK_FUNCTION(3, "DMIC_CLK"),
+ MTK_FUNCTION(4, "PCM1_SYNC"),
+ MTK_FUNCTION(5, "TP_GPIO6_AO"),
+ MTK_FUNCTION(6, "CONN_TCXOENA_REQ")
+ ),
+ MTK_PIN(
+ 7, "GPIO7",
+ MTK_EINT_FUNCTION(0, 7),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO7"),
+ MTK_FUNCTION(1, "SPI7_A_MO"),
+ MTK_FUNCTION(2, "I2S2_DI"),
+ MTK_FUNCTION(3, "DMIC_DAT"),
+ MTK_FUNCTION(4, "PCM1_DO0"),
+ MTK_FUNCTION(5, "TP_GPIO7_AO"),
+ MTK_FUNCTION(6, "WIFI_TXD")
+ ),
+ MTK_PIN(
+ 8, "GPIO8",
+ MTK_EINT_FUNCTION(0, 8),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO8"),
+ MTK_FUNCTION(1, "SRCLKENAI1"),
+ MTK_FUNCTION(2, "I2S2_DI2"),
+ MTK_FUNCTION(3, "KPCOL2"),
+ MTK_FUNCTION(4, "PCM1_DO1"),
+ MTK_FUNCTION(5, "CLKM1"),
+ MTK_FUNCTION(6, "CONN_BT_TXD")
+ ),
+ MTK_PIN(
+ 9, "GPIO9",
+ MTK_EINT_FUNCTION(0, 9),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO9"),
+ MTK_FUNCTION(1, "SRCLKENAI0"),
+ MTK_FUNCTION(2, "DVFSRC_EXT_REQ"),
+ MTK_FUNCTION(3, "KPROW2"),
+ MTK_FUNCTION(4, "PCM1_DO2"),
+ MTK_FUNCTION(5, "CLKM3"),
+ MTK_FUNCTION(6, "CMMCLK4")
+ ),
+ MTK_PIN(
+ 10, "GPIO10",
+ MTK_EINT_FUNCTION(0, 10),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO10"),
+ MTK_FUNCTION(1, "MSDC1_CLK_A"),
+ MTK_FUNCTION(2, "SPI4_B_CLK"),
+ MTK_FUNCTION(3, "I2S8_MCK"),
+ MTK_FUNCTION(4, "DSI1_TE"),
+ MTK_FUNCTION(5, "MD_INT0"),
+ MTK_FUNCTION(6, "TP_GPIO0_AO")
+ ),
+ MTK_PIN(
+ 11, "GPIO11",
+ MTK_EINT_FUNCTION(0, 11),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO11"),
+ MTK_FUNCTION(1, "MSDC1_CMD_A"),
+ MTK_FUNCTION(2, "SPI4_B_CSB"),
+ MTK_FUNCTION(3, "I2S8_BCK"),
+ MTK_FUNCTION(4, "LCM1_RST"),
+ MTK_FUNCTION(5, "MD_INT1_C2K_UIM0_HOT_PLUG"),
+ MTK_FUNCTION(6, "TP_GPIO1_AO")
+ ),
+ MTK_PIN(
+ 12, "GPIO12",
+ MTK_EINT_FUNCTION(0, 12),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO12"),
+ MTK_FUNCTION(1, "MSDC1_DAT3_A"),
+ MTK_FUNCTION(2, "SPI4_B_MI"),
+ MTK_FUNCTION(3, "I2S8_LRCK"),
+ MTK_FUNCTION(4, "DMIC1_CLK"),
+ MTK_FUNCTION(5, "MD_INT2_C2K_UIM1_HOT_PLUG"),
+ MTK_FUNCTION(6, "TP_GPIO2_AO")
+ ),
+ MTK_PIN(
+ 13, "GPIO13",
+ MTK_EINT_FUNCTION(0, 13),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO13"),
+ MTK_FUNCTION(1, "MSDC1_DAT0_A"),
+ MTK_FUNCTION(2, "SPI4_B_MO"),
+ MTK_FUNCTION(3, "I2S8_DI"),
+ MTK_FUNCTION(4, "DMIC1_DAT"),
+ MTK_FUNCTION(5, "ANT_SEL10"),
+ MTK_FUNCTION(6, "TP_GPIO3_AO")
+ ),
+ MTK_PIN(
+ 14, "GPIO14",
+ MTK_EINT_FUNCTION(0, 14),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO14"),
+ MTK_FUNCTION(1, "MSDC1_DAT2_A"),
+ MTK_FUNCTION(2, "SPI5_C_CLK"),
+ MTK_FUNCTION(3, "I2S9_MCK"),
+ MTK_FUNCTION(4, "IDDIG"),
+ MTK_FUNCTION(5, "ANT_SEL11"),
+ MTK_FUNCTION(6, "TP_GPIO4_AO")
+ ),
+ MTK_PIN(
+ 15, "GPIO15",
+ MTK_EINT_FUNCTION(0, 15),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO15"),
+ MTK_FUNCTION(1, "MSDC1_DAT1_A"),
+ MTK_FUNCTION(2, "SPI5_C_CSB"),
+ MTK_FUNCTION(3, "I2S9_BCK"),
+ MTK_FUNCTION(4, "USB_DRVVBUS"),
+ MTK_FUNCTION(5, "ANT_SEL12"),
+ MTK_FUNCTION(6, "TP_GPIO5_AO")
+ ),
+ MTK_PIN(
+ 16, "GPIO16",
+ MTK_EINT_FUNCTION(0, 16),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO16"),
+ MTK_FUNCTION(1, "SRCLKENAI1"),
+ MTK_FUNCTION(2, "SPI5_C_MI"),
+ MTK_FUNCTION(3, "I2S9_LRCK"),
+ MTK_FUNCTION(4, "KPCOL2"),
+ MTK_FUNCTION(5, "GPS_L1_ELNA_EN"),
+ MTK_FUNCTION(6, "TP_GPIO6_AO"),
+ MTK_FUNCTION(7, "DBG_MON_A30")
+ ),
+ MTK_PIN(
+ 17, "GPIO17",
+ MTK_EINT_FUNCTION(0, 17),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO17"),
+ MTK_FUNCTION(1, "SRCLKENAI0"),
+ MTK_FUNCTION(2, "SPI5_C_MO"),
+ MTK_FUNCTION(3, "I2S9_DO"),
+ MTK_FUNCTION(4, "KPROW2"),
+ MTK_FUNCTION(5, "GPS_L5_ELNA_EN"),
+ MTK_FUNCTION(6, "TP_GPIO7_AO"),
+ MTK_FUNCTION(7, "DBG_MON_A31")
+ ),
+ MTK_PIN(
+ 18, "GPIO18",
+ MTK_EINT_FUNCTION(0, 18),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO18"),
+ MTK_FUNCTION(1, "DP_TX_HPD"),
+ MTK_FUNCTION(2, "SPI4_C_MI"),
+ MTK_FUNCTION(3, "SPI1_B_MI"),
+ MTK_FUNCTION(4, "GPS_L1_ELNA_EN"),
+ MTK_FUNCTION(5, "ANT_SEL10"),
+ MTK_FUNCTION(6, "MD_INT0")
+ ),
+ MTK_PIN(
+ 19, "GPIO19",
+ MTK_EINT_FUNCTION(0, 19),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO19"),
+ MTK_FUNCTION(1, "SRCLKENAI1"),
+ MTK_FUNCTION(2, "SPI4_C_MO"),
+ MTK_FUNCTION(3, "SPI1_B_MO"),
+ MTK_FUNCTION(4, "GPS_L5_ELNA_EN"),
+ MTK_FUNCTION(5, "ANT_SEL11"),
+ MTK_FUNCTION(6, "MD_INT1_C2K_UIM0_HOT_PLUG")
+ ),
+ MTK_PIN(
+ 20, "GPIO20",
+ MTK_EINT_FUNCTION(0, 20),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO20"),
+ MTK_FUNCTION(1, "SRCLKENAI0"),
+ MTK_FUNCTION(2, "SPI4_C_CLK"),
+ MTK_FUNCTION(3, "SPI1_B_CLK"),
+ MTK_FUNCTION(4, "PWM_3"),
+ MTK_FUNCTION(5, "ANT_SEL12"),
+ MTK_FUNCTION(6, "MD_INT2_C2K_UIM1_HOT_PLUG")
+ ),
+ MTK_PIN(
+ 21, "GPIO21",
+ MTK_EINT_FUNCTION(0, 21),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO21"),
+ MTK_FUNCTION(1, "DP_TX_HPD"),
+ MTK_FUNCTION(2, "SPI4_C_CSB"),
+ MTK_FUNCTION(3, "SPI1_B_CSB"),
+ MTK_FUNCTION(4, "I2S7_MCK"),
+ MTK_FUNCTION(5, "I2S9_MCK"),
+ MTK_FUNCTION(6, "IDDIG")
+ ),
+ MTK_PIN(
+ 22, "GPIO22",
+ MTK_EINT_FUNCTION(0, 22),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO22"),
+ MTK_FUNCTION(1, "LCM1_RST"),
+ MTK_FUNCTION(2, "SPI0_C_CLK"),
+ MTK_FUNCTION(3, "SPI7_B_CLK"),
+ MTK_FUNCTION(4, "I2S7_BCK"),
+ MTK_FUNCTION(5, "I2S9_BCK"),
+ MTK_FUNCTION(6, "SCL13")
+ ),
+ MTK_PIN(
+ 23, "GPIO23",
+ MTK_EINT_FUNCTION(0, 23),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO23"),
+ MTK_FUNCTION(1, "DSI1_TE"),
+ MTK_FUNCTION(2, "SPI0_C_CSB"),
+ MTK_FUNCTION(3, "SPI7_B_CSB"),
+ MTK_FUNCTION(4, "I2S7_LRCK"),
+ MTK_FUNCTION(5, "I2S9_LRCK"),
+ MTK_FUNCTION(6, "SDA13")
+ ),
+ MTK_PIN(
+ 24, "GPIO24",
+ MTK_EINT_FUNCTION(0, 24),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO24"),
+ MTK_FUNCTION(1, "SRCLKENAI1"),
+ MTK_FUNCTION(2, "SPI0_C_MI"),
+ MTK_FUNCTION(3, "SPI7_B_MI"),
+ MTK_FUNCTION(4, "I2S6_DI"),
+ MTK_FUNCTION(5, "I2S8_DI"),
+ MTK_FUNCTION(6, "SCL_6306")
+ ),
+ MTK_PIN(
+ 25, "GPIO25",
+ MTK_EINT_FUNCTION(0, 25),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO25"),
+ MTK_FUNCTION(1, "SRCLKENAI0"),
+ MTK_FUNCTION(2, "SPI0_C_MO"),
+ MTK_FUNCTION(3, "SPI7_B_MO"),
+ MTK_FUNCTION(4, "I2S7_DO"),
+ MTK_FUNCTION(5, "I2S9_DO"),
+ MTK_FUNCTION(6, "SDA_6306")
+ ),
+ MTK_PIN(
+ 26, "GPIO26",
+ MTK_EINT_FUNCTION(0, 26),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO26"),
+ MTK_FUNCTION(1, "PWM_2"),
+ MTK_FUNCTION(2, "CLKM0"),
+ MTK_FUNCTION(3, "USB_DRVVBUS")
+ ),
+ MTK_PIN(
+ 27, "GPIO27",
+ MTK_EINT_FUNCTION(0, 27),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO27"),
+ MTK_FUNCTION(1, "PWM_3"),
+ MTK_FUNCTION(2, "CLKM1")
+ ),
+ MTK_PIN(
+ 28, "GPIO28",
+ MTK_EINT_FUNCTION(0, 28),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO28"),
+ MTK_FUNCTION(1, "PWM_0"),
+ MTK_FUNCTION(2, "CLKM2")
+ ),
+ MTK_PIN(
+ 29, "GPIO29",
+ MTK_EINT_FUNCTION(0, 29),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO29"),
+ MTK_FUNCTION(1, "PWM_1"),
+ MTK_FUNCTION(2, "CLKM3"),
+ MTK_FUNCTION(3, "DSI1_TE")
+ ),
+ MTK_PIN(
+ 30, "GPIO30",
+ MTK_EINT_FUNCTION(0, 30),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO30"),
+ MTK_FUNCTION(1, "PWM_2"),
+ MTK_FUNCTION(2, "CLKM0"),
+ MTK_FUNCTION(3, "LCM1_RST")
+ ),
+ MTK_PIN(
+ 31, "GPIO31",
+ MTK_EINT_FUNCTION(0, 31),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO31"),
+ MTK_FUNCTION(1, "I2S3_MCK"),
+ MTK_FUNCTION(2, "I2S1_MCK"),
+ MTK_FUNCTION(3, "I2S5_MCK"),
+ MTK_FUNCTION(4, "SRCLKENAI0"),
+ MTK_FUNCTION(5, "I2S0_MCK")
+ ),
+ MTK_PIN(
+ 32, "GPIO32",
+ MTK_EINT_FUNCTION(0, 32),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO32"),
+ MTK_FUNCTION(1, "I2S3_BCK"),
+ MTK_FUNCTION(2, "I2S1_BCK"),
+ MTK_FUNCTION(3, "I2S5_BCK"),
+ MTK_FUNCTION(4, "PCM0_CLK"),
+ MTK_FUNCTION(5, "I2S0_BCK")
+ ),
+ MTK_PIN(
+ 33, "GPIO33",
+ MTK_EINT_FUNCTION(0, 33),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO33"),
+ MTK_FUNCTION(1, "I2S3_LRCK"),
+ MTK_FUNCTION(2, "I2S1_LRCK"),
+ MTK_FUNCTION(3, "I2S5_LRCK"),
+ MTK_FUNCTION(4, "PCM0_SYNC"),
+ MTK_FUNCTION(5, "I2S0_LRCK")
+ ),
+ MTK_PIN(
+ 34, "GPIO34",
+ MTK_EINT_FUNCTION(0, 34),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO34"),
+ MTK_FUNCTION(1, "I2S0_DI"),
+ MTK_FUNCTION(2, "I2S2_DI"),
+ MTK_FUNCTION(3, "I2S2_DI2"),
+ MTK_FUNCTION(4, "PCM0_DI"),
+ MTK_FUNCTION(5, "I2S0_DI")
+ ),
+ MTK_PIN(
+ 35, "GPIO35",
+ MTK_EINT_FUNCTION(0, 35),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO35"),
+ MTK_FUNCTION(1, "I2S3_DO"),
+ MTK_FUNCTION(2, "I2S1_DO"),
+ MTK_FUNCTION(3, "I2S5_DO"),
+ MTK_FUNCTION(4, "PCM0_DO")
+ ),
+ MTK_PIN(
+ 36, "GPIO36",
+ MTK_EINT_FUNCTION(0, 36),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO36"),
+ MTK_FUNCTION(1, "SPI5_A_CLK"),
+ MTK_FUNCTION(2, "DMIC1_CLK"),
+ MTK_FUNCTION(3, "IDDIG"),
+ MTK_FUNCTION(4, "MD_URXD0"),
+ MTK_FUNCTION(5, "UCTS0"),
+ MTK_FUNCTION(6, "URXD1"),
+ MTK_FUNCTION(7, "DBG_MON_A0")
+ ),
+ MTK_PIN(
+ 37, "GPIO37",
+ MTK_EINT_FUNCTION(0, 37),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO37"),
+ MTK_FUNCTION(1, "SPI5_A_CSB"),
+ MTK_FUNCTION(2, "DMIC1_DAT"),
+ MTK_FUNCTION(3, "USB_DRVVBUS"),
+ MTK_FUNCTION(4, "MD_UTXD0"),
+ MTK_FUNCTION(5, "URTS0"),
+ MTK_FUNCTION(6, "UTXD1"),
+ MTK_FUNCTION(7, "DBG_MON_A1")
+ ),
+ MTK_PIN(
+ 38, "GPIO38",
+ MTK_EINT_FUNCTION(0, 38),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO38"),
+ MTK_FUNCTION(1, "SPI5_A_MI"),
+ MTK_FUNCTION(2, "DMIC_CLK"),
+ MTK_FUNCTION(3, "DSI1_TE"),
+ MTK_FUNCTION(4, "MD_URXD1"),
+ MTK_FUNCTION(5, "URXD0"),
+ MTK_FUNCTION(6, "UCTS1"),
+ MTK_FUNCTION(7, "DBG_MON_A2")
+ ),
+ MTK_PIN(
+ 39, "GPIO39",
+ MTK_EINT_FUNCTION(0, 39),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO39"),
+ MTK_FUNCTION(1, "SPI5_A_MO"),
+ MTK_FUNCTION(2, "DMIC_DAT"),
+ MTK_FUNCTION(3, "LCM1_RST"),
+ MTK_FUNCTION(4, "MD_UTXD1"),
+ MTK_FUNCTION(5, "UTXD0"),
+ MTK_FUNCTION(6, "URTS1"),
+ MTK_FUNCTION(7, "DBG_MON_A3")
+ ),
+ MTK_PIN(
+ 40, "GPIO40",
+ MTK_EINT_FUNCTION(0, 40),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO40"),
+ MTK_FUNCTION(1, "DISP_PWM"),
+ MTK_FUNCTION(7, "DBG_MON_A6")
+ ),
+ MTK_PIN(
+ 41, "GPIO41",
+ MTK_EINT_FUNCTION(0, 41),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO41"),
+ MTK_FUNCTION(1, "DSI_TE")
+ ),
+ MTK_PIN(
+ 42, "GPIO42",
+ MTK_EINT_FUNCTION(0, 42),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO42"),
+ MTK_FUNCTION(1, "LCM_RST")
+ ),
+ MTK_PIN(
+ 43, "GPIO43",
+ MTK_EINT_FUNCTION(0, 43),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO43"),
+ MTK_FUNCTION(1, "MD_INT1_C2K_UIM0_HOT_PLUG"),
+ MTK_FUNCTION(2, "MD_INT2_C2K_UIM1_HOT_PLUG"),
+ MTK_FUNCTION(3, "SCL_6306"),
+ MTK_FUNCTION(4, "ADSP_URXD0"),
+ MTK_FUNCTION(5, "PTA_RXD"),
+ MTK_FUNCTION(6, "SSPM_URXD_AO"),
+ MTK_FUNCTION(7, "DBG_MON_A4")
+ ),
+ MTK_PIN(
+ 44, "GPIO44",
+ MTK_EINT_FUNCTION(0, 44),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO44"),
+ MTK_FUNCTION(1, "MD_INT2_C2K_UIM1_HOT_PLUG"),
+ MTK_FUNCTION(2, "MD_INT1_C2K_UIM0_HOT_PLUG"),
+ MTK_FUNCTION(3, "SDA_6306"),
+ MTK_FUNCTION(4, "ADSP_UTXD0"),
+ MTK_FUNCTION(5, "PTA_TXD"),
+ MTK_FUNCTION(6, "SSPM_UTXD_AO"),
+ MTK_FUNCTION(7, "DBG_MON_A5")
+ ),
+ MTK_PIN(
+ 45, "GPIO45",
+ MTK_EINT_FUNCTION(0, 45),
+ DRV_GRP2,
+ MTK_FUNCTION(0, "GPIO45"),
+ MTK_FUNCTION(1, "MD1_SIM2_SCLK"),
+ MTK_FUNCTION(2, "MD1_SIM1_SCLK"),
+ MTK_FUNCTION(3, "MCUPM_JTAG_TDI"),
+ MTK_FUNCTION(4, "APU_JTAG_TDI"),
+ MTK_FUNCTION(5, "CCU_JTAG_TDI"),
+ MTK_FUNCTION(6, "LVTS_SCK")
+ ),
+ MTK_PIN(
+ 46, "GPIO46",
+ MTK_EINT_FUNCTION(0, 46),
+ DRV_GRP2,
+ MTK_FUNCTION(0, "GPIO46"),
+ MTK_FUNCTION(1, "MD1_SIM2_SRST"),
+ MTK_FUNCTION(2, "MD1_SIM1_SRST"),
+ MTK_FUNCTION(3, "MCUPM_JTAG_TMS"),
+ MTK_FUNCTION(4, "APU_JTAG_TMS"),
+ MTK_FUNCTION(5, "CCU_JTAG_TMS"),
+ MTK_FUNCTION(6, "LVTS_SDI")
+ ),
+ MTK_PIN(
+ 47, "GPIO47",
+ MTK_EINT_FUNCTION(0, 47),
+ DRV_GRP2,
+ MTK_FUNCTION(0, "GPIO47"),
+ MTK_FUNCTION(1, "MD1_SIM2_SIO"),
+ MTK_FUNCTION(2, "MD1_SIM1_SIO"),
+ MTK_FUNCTION(3, "MCUPM_JTAG_TDO"),
+ MTK_FUNCTION(4, "APU_JTAG_TDO"),
+ MTK_FUNCTION(5, "CCU_JTAG_TDO"),
+ MTK_FUNCTION(6, "LVTS_SCF")
+ ),
+ MTK_PIN(
+ 48, "GPIO48",
+ MTK_EINT_FUNCTION(0, 48),
+ DRV_GRP2,
+ MTK_FUNCTION(0, "GPIO48"),
+ MTK_FUNCTION(1, "MD1_SIM1_SIO"),
+ MTK_FUNCTION(2, "MD1_SIM2_SIO"),
+ MTK_FUNCTION(3, "MCUPM_JTAG_TRSTN"),
+ MTK_FUNCTION(4, "APU_JTAG_TRST"),
+ MTK_FUNCTION(5, "CCU_JTAG_TRST"),
+ MTK_FUNCTION(6, "LVTS_FOUT")
+ ),
+ MTK_PIN(
+ 49, "GPIO49",
+ MTK_EINT_FUNCTION(0, 49),
+ DRV_GRP2,
+ MTK_FUNCTION(0, "GPIO49"),
+ MTK_FUNCTION(1, "MD1_SIM1_SRST"),
+ MTK_FUNCTION(2, "MD1_SIM2_SRST"),
+ MTK_FUNCTION(3, "MCUPM_JTAG_TCK"),
+ MTK_FUNCTION(4, "APU_JTAG_TCK"),
+ MTK_FUNCTION(5, "CCU_JTAG_TCK"),
+ MTK_FUNCTION(6, "LVTS_SDO")
+ ),
+ MTK_PIN(
+ 50, "GPIO50",
+ MTK_EINT_FUNCTION(0, 50),
+ DRV_GRP2,
+ MTK_FUNCTION(0, "GPIO50"),
+ MTK_FUNCTION(1, "MD1_SIM1_SCLK"),
+ MTK_FUNCTION(2, "MD1_SIM2_SCLK"),
+ MTK_FUNCTION(6, "LVTS_26M")
+ ),
+ MTK_PIN(
+ 51, "GPIO51",
+ MTK_EINT_FUNCTION(0, 51),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO51"),
+ MTK_FUNCTION(1, "MSDC1_CLK"),
+ MTK_FUNCTION(2, "PCM1_CLK"),
+ MTK_FUNCTION(3, "VPU_UDI_TCK"),
+ MTK_FUNCTION(4, "UDI_TCK"),
+ MTK_FUNCTION(5, "IPU_JTAG_TCK"),
+ MTK_FUNCTION(6, "SSPM_JTAG_TCK"),
+ MTK_FUNCTION(7, "JTCK_SEL3")
+ ),
+ MTK_PIN(
+ 52, "GPIO52",
+ MTK_EINT_FUNCTION(0, 52),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO52"),
+ MTK_FUNCTION(1, "MSDC1_CMD"),
+ MTK_FUNCTION(2, "PCM1_SYNC"),
+ MTK_FUNCTION(3, "VPU_UDI_TMS"),
+ MTK_FUNCTION(4, "UDI_TMS"),
+ MTK_FUNCTION(5, "IPU_JTAG_TMS"),
+ MTK_FUNCTION(6, "SSPM_JTAG_TMS"),
+ MTK_FUNCTION(7, "JTMS_SEL3")
+ ),
+ MTK_PIN(
+ 53, "GPIO53",
+ MTK_EINT_FUNCTION(0, 53),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO53"),
+ MTK_FUNCTION(1, "MSDC1_DAT3"),
+ MTK_FUNCTION(2, "PCM1_DI")
+ ),
+ MTK_PIN(
+ 54, "GPIO54",
+ MTK_EINT_FUNCTION(0, 54),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO54"),
+ MTK_FUNCTION(1, "MSDC1_DAT0"),
+ MTK_FUNCTION(2, "PCM1_DO0"),
+ MTK_FUNCTION(3, "VPU_UDI_TDI"),
+ MTK_FUNCTION(4, "UDI_TDI"),
+ MTK_FUNCTION(5, "IPU_JTAG_TDI"),
+ MTK_FUNCTION(6, "SSPM_JTAG_TDI"),
+ MTK_FUNCTION(7, "JTDI_SEL3")
+ ),
+ MTK_PIN(
+ 55, "GPIO55",
+ MTK_EINT_FUNCTION(0, 55),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO55"),
+ MTK_FUNCTION(1, "MSDC1_DAT2"),
+ MTK_FUNCTION(2, "PCM1_DO2"),
+ MTK_FUNCTION(3, "VPU_UDI_NTRST"),
+ MTK_FUNCTION(4, "UDI_NTRST"),
+ MTK_FUNCTION(5, "IPU_JTAG_TRST"),
+ MTK_FUNCTION(6, "SSPM_JTAG_TRSTN"),
+ MTK_FUNCTION(7, "JTRSTN_SEL3")
+ ),
+ MTK_PIN(
+ 56, "GPIO56",
+ MTK_EINT_FUNCTION(0, 56),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO56"),
+ MTK_FUNCTION(1, "MSDC1_DAT1"),
+ MTK_FUNCTION(2, "PCM1_DO1"),
+ MTK_FUNCTION(3, "VPU_UDI_TDO"),
+ MTK_FUNCTION(4, "UDI_TDO"),
+ MTK_FUNCTION(5, "IPU_JTAG_TDO"),
+ MTK_FUNCTION(6, "SSPM_JTAG_TDO"),
+ MTK_FUNCTION(7, "JTDO_SEL3")
+ ),
+ MTK_PIN(
+ 57, "GPIO57",
+ MTK_EINT_FUNCTION(0, 57),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO57"),
+ MTK_FUNCTION(1, "MIPI2_D_SCLK"),
+ MTK_FUNCTION(7, "DBG_MON_A14")
+ ),
+ MTK_PIN(
+ 58, "GPIO58",
+ MTK_EINT_FUNCTION(0, 58),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO58"),
+ MTK_FUNCTION(1, "MIPI2_D_SDATA"),
+ MTK_FUNCTION(7, "DBG_MON_A15")
+ ),
+ MTK_PIN(
+ 59, "GPIO59",
+ MTK_EINT_FUNCTION(0, 59),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO59"),
+ MTK_FUNCTION(1, "MIPI_M_SCLK"),
+ MTK_FUNCTION(7, "DBG_MON_A17")
+ ),
+ MTK_PIN(
+ 60, "GPIO60",
+ MTK_EINT_FUNCTION(0, 60),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO60"),
+ MTK_FUNCTION(1, "MIPI_M_SDATA"),
+ MTK_FUNCTION(7, "DBG_MON_A18")
+ ),
+ MTK_PIN(
+ 61, "GPIO61",
+ MTK_EINT_FUNCTION(0, 61),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO61"),
+ MTK_FUNCTION(1, "MD_UCNT_A_TGL"),
+ MTK_FUNCTION(7, "DBG_MON_A16")
+ ),
+ MTK_PIN(
+ 62, "GPIO62",
+ MTK_EINT_FUNCTION(0, 62),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO62"),
+ MTK_FUNCTION(1, "DIGRF_IRQ")
+ ),
+ MTK_PIN(
+ 63, "GPIO63",
+ MTK_EINT_FUNCTION(0, 63),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO63"),
+ MTK_FUNCTION(1, "BPI_BUS0"),
+ MTK_FUNCTION(7, "DBG_MON_A19")
+ ),
+ MTK_PIN(
+ 64, "GPIO64",
+ MTK_EINT_FUNCTION(0, 64),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO64"),
+ MTK_FUNCTION(1, "BPI_BUS1"),
+ MTK_FUNCTION(7, "DBG_MON_A20")
+ ),
+ MTK_PIN(
+ 65, "GPIO65",
+ MTK_EINT_FUNCTION(0, 65),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO65"),
+ MTK_FUNCTION(1, "BPI_BUS2"),
+ MTK_FUNCTION(7, "DBG_MON_A21")
+ ),
+ MTK_PIN(
+ 66, "GPIO66",
+ MTK_EINT_FUNCTION(0, 66),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO66"),
+ MTK_FUNCTION(1, "BPI_BUS3"),
+ MTK_FUNCTION(7, "DBG_MON_A22")
+ ),
+ MTK_PIN(
+ 67, "GPIO67",
+ MTK_EINT_FUNCTION(0, 67),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO67"),
+ MTK_FUNCTION(1, "BPI_BUS4")
+ ),
+ MTK_PIN(
+ 68, "GPIO68",
+ MTK_EINT_FUNCTION(0, 68),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO68"),
+ MTK_FUNCTION(1, "BPI_BUS5")
+ ),
+ MTK_PIN(
+ 69, "GPIO69",
+ MTK_EINT_FUNCTION(0, 69),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO69"),
+ MTK_FUNCTION(1, "BPI_BUS6"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS6")
+ ),
+ MTK_PIN(
+ 70, "GPIO70",
+ MTK_EINT_FUNCTION(0, 70),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO70"),
+ MTK_FUNCTION(1, "BPI_BUS7"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS7")
+ ),
+ MTK_PIN(
+ 71, "GPIO71",
+ MTK_EINT_FUNCTION(0, 71),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO71"),
+ MTK_FUNCTION(1, "BPI_BUS8"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS8")
+ ),
+ MTK_PIN(
+ 72, "GPIO72",
+ MTK_EINT_FUNCTION(0, 72),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO72"),
+ MTK_FUNCTION(1, "BPI_BUS9"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS9")
+ ),
+ MTK_PIN(
+ 73, "GPIO73",
+ MTK_EINT_FUNCTION(0, 73),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO73"),
+ MTK_FUNCTION(1, "BPI_BUS10"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS10")
+ ),
+ MTK_PIN(
+ 74, "GPIO74",
+ MTK_EINT_FUNCTION(0, 74),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO74"),
+ MTK_FUNCTION(1, "BPI_BUS11_OLAT0"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS11_OLAT0")
+ ),
+ MTK_PIN(
+ 75, "GPIO75",
+ MTK_EINT_FUNCTION(0, 75),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO75"),
+ MTK_FUNCTION(1, "BPI_BUS12_OLAT1"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS12_OLAT1")
+ ),
+ MTK_PIN(
+ 76, "GPIO76",
+ MTK_EINT_FUNCTION(0, 76),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO76"),
+ MTK_FUNCTION(1, "BPI_BUS13_OLAT2"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS13_OLAT2")
+ ),
+ MTK_PIN(
+ 77, "GPIO77",
+ MTK_EINT_FUNCTION(0, 77),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO77"),
+ MTK_FUNCTION(1, "BPI_BUS14_OLAT3"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS14_OLAT3")
+ ),
+ MTK_PIN(
+ 78, "GPIO78",
+ MTK_EINT_FUNCTION(0, 78),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO78"),
+ MTK_FUNCTION(1, "BPI_BUS15_OLAT4"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS15_OLAT4"),
+ MTK_FUNCTION(7, "DBG_MON_A7")
+ ),
+ MTK_PIN(
+ 79, "GPIO79",
+ MTK_EINT_FUNCTION(0, 79),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO79"),
+ MTK_FUNCTION(1, "BPI_BUS16_OLAT5"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS16_OLAT5"),
+ MTK_FUNCTION(7, "DBG_MON_A8")
+ ),
+ MTK_PIN(
+ 80, "GPIO80",
+ MTK_EINT_FUNCTION(0, 80),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO80"),
+ MTK_FUNCTION(1, "BPI_BUS17_ANT0"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS17_ANT0"),
+ MTK_FUNCTION(7, "DBG_MON_A9")
+ ),
+ MTK_PIN(
+ 81, "GPIO81",
+ MTK_EINT_FUNCTION(0, 81),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO81"),
+ MTK_FUNCTION(1, "BPI_BUS18_ANT1"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS18_ANT1"),
+ MTK_FUNCTION(7, "DBG_MON_A10")
+ ),
+ MTK_PIN(
+ 82, "GPIO82",
+ MTK_EINT_FUNCTION(0, 82),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO82"),
+ MTK_FUNCTION(1, "BPI_BUS19_ANT2"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS19_ANT2"),
+ MTK_FUNCTION(7, "DBG_MON_A11")
+ ),
+ MTK_PIN(
+ 83, "GPIO83",
+ MTK_EINT_FUNCTION(0, 83),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO83"),
+ MTK_FUNCTION(1, "BPI_BUS20_ANT3"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS20_ANT3"),
+ MTK_FUNCTION(7, "DBG_MON_A12")
+ ),
+ MTK_PIN(
+ 84, "GPIO84",
+ MTK_EINT_FUNCTION(0, 84),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO84"),
+ MTK_FUNCTION(1, "BPI_BUS21_ANT4"),
+ MTK_FUNCTION(2, "CONN_BPI_BUS21_ANT4"),
+ MTK_FUNCTION(7, "DBG_MON_A13")
+ ),
+ MTK_PIN(
+ 85, "GPIO85",
+ MTK_EINT_FUNCTION(0, 85),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO85"),
+ MTK_FUNCTION(1, "MIPI1_D_SCLK"),
+ MTK_FUNCTION(2, "CONN_MIPI1_SCLK")
+ ),
+ MTK_PIN(
+ 86, "GPIO86",
+ MTK_EINT_FUNCTION(0, 86),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO86"),
+ MTK_FUNCTION(1, "MIPI1_D_SDATA"),
+ MTK_FUNCTION(2, "CONN_MIPI1_SDATA")
+ ),
+ MTK_PIN(
+ 87, "GPIO87",
+ MTK_EINT_FUNCTION(0, 87),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO87"),
+ MTK_FUNCTION(1, "MIPI0_D_SCLK"),
+ MTK_FUNCTION(2, "CONN_MIPI0_SCLK")
+ ),
+ MTK_PIN(
+ 88, "GPIO88",
+ MTK_EINT_FUNCTION(0, 88),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO88"),
+ MTK_FUNCTION(1, "MIPI0_D_SDATA"),
+ MTK_FUNCTION(2, "CONN_MIPI0_SDATA")
+ ),
+ MTK_PIN(
+ 89, "GPIO89",
+ MTK_EINT_FUNCTION(0, 89),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO89"),
+ MTK_FUNCTION(1, "SPMI_SCL"),
+ MTK_FUNCTION(2, "SCL10")
+ ),
+ MTK_PIN(
+ 90, "GPIO90",
+ MTK_EINT_FUNCTION(0, 90),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO90"),
+ MTK_FUNCTION(1, "SPMI_SDA"),
+ MTK_FUNCTION(2, "SDA10")
+ ),
+ MTK_PIN(
+ 91, "GPIO91",
+ MTK_EINT_FUNCTION(0, 91),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO91"),
+ MTK_FUNCTION(1, "AP_GOOD")
+ ),
+ MTK_PIN(
+ 92, "GPIO92",
+ MTK_EINT_FUNCTION(0, 92),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO92"),
+ MTK_FUNCTION(1, "URXD0"),
+ MTK_FUNCTION(2, "MD_URXD0"),
+ MTK_FUNCTION(3, "MD_URXD1"),
+ MTK_FUNCTION(4, "SSPM_URXD_AO"),
+ MTK_FUNCTION(5, "CONN_BGF_UART0_RXD")
+ ),
+ MTK_PIN(
+ 93, "GPIO93",
+ MTK_EINT_FUNCTION(0, 93),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO93"),
+ MTK_FUNCTION(1, "UTXD0"),
+ MTK_FUNCTION(2, "MD_UTXD0"),
+ MTK_FUNCTION(3, "MD_UTXD1"),
+ MTK_FUNCTION(4, "SSPM_UTXD_AO"),
+ MTK_FUNCTION(5, "CONN_BGF_UART0_TXD"),
+ MTK_FUNCTION(6, "WIFI_TXD")
+ ),
+ MTK_PIN(
+ 94, "GPIO94",
+ MTK_EINT_FUNCTION(0, 94),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO94"),
+ MTK_FUNCTION(1, "URXD1"),
+ MTK_FUNCTION(2, "ADSP_URXD0"),
+ MTK_FUNCTION(3, "MD32_0_RXD"),
+ MTK_FUNCTION(4, "SSPM_URXD_AO"),
+ MTK_FUNCTION(5, "TP_URXD1_AO"),
+ MTK_FUNCTION(6, "TP_URXD2_AO"),
+ MTK_FUNCTION(7, "MBISTREADEN_TRIGGER")
+ ),
+ MTK_PIN(
+ 95, "GPIO95",
+ MTK_EINT_FUNCTION(0, 95),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO95"),
+ MTK_FUNCTION(1, "UTXD1"),
+ MTK_FUNCTION(2, "ADSP_UTXD0"),
+ MTK_FUNCTION(3, "MD32_0_TXD"),
+ MTK_FUNCTION(4, "SSPM_UTXD_AO"),
+ MTK_FUNCTION(5, "TP_UTXD1_AO"),
+ MTK_FUNCTION(6, "TP_UTXD2_AO"),
+ MTK_FUNCTION(7, "MBISTWRITEEN_TRIGGER")
+ ),
+ MTK_PIN(
+ 96, "GPIO96",
+ MTK_EINT_FUNCTION(0, 96),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO96"),
+ MTK_FUNCTION(1, "TDM_LRCK"),
+ MTK_FUNCTION(2, "I2S7_LRCK"),
+ MTK_FUNCTION(3, "I2S9_LRCK"),
+ MTK_FUNCTION(4, "SPI4_A_CLK"),
+ MTK_FUNCTION(5, "ADSP_JTAG0_TDI"),
+ MTK_FUNCTION(6, "CONN_BGF_DSP_L1_JDI"),
+ MTK_FUNCTION(7, "IO_JTAG_TDI")
+ ),
+ MTK_PIN(
+ 97, "GPIO97",
+ MTK_EINT_FUNCTION(0, 97),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO97"),
+ MTK_FUNCTION(1, "TDM_BCK"),
+ MTK_FUNCTION(2, "I2S7_BCK"),
+ MTK_FUNCTION(3, "I2S9_BCK"),
+ MTK_FUNCTION(4, "SPI4_A_CSB"),
+ MTK_FUNCTION(5, "ADSP_JTAG0_TRSTN"),
+ MTK_FUNCTION(6, "CONN_BGF_DSP_L1_JINTP"),
+ MTK_FUNCTION(7, "IO_JTAG_TRSTN")
+ ),
+ MTK_PIN(
+ 98, "GPIO98",
+ MTK_EINT_FUNCTION(0, 98),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO98"),
+ MTK_FUNCTION(1, "TDM_MCK"),
+ MTK_FUNCTION(2, "I2S7_MCK"),
+ MTK_FUNCTION(3, "I2S9_MCK"),
+ MTK_FUNCTION(4, "SPI4_A_MI"),
+ MTK_FUNCTION(5, "ADSP_JTAG0_TCK"),
+ MTK_FUNCTION(6, "CONN_BGF_DSP_L1_JCK"),
+ MTK_FUNCTION(7, "IO_JTAG_TCK")
+ ),
+ MTK_PIN(
+ 99, "GPIO99",
+ MTK_EINT_FUNCTION(0, 99),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO99"),
+ MTK_FUNCTION(1, "TDM_DATA0"),
+ MTK_FUNCTION(2, "I2S6_DI"),
+ MTK_FUNCTION(3, "I2S8_DI"),
+ MTK_FUNCTION(4, "SPI4_A_MO"),
+ MTK_FUNCTION(5, "ADSP_JTAG0_TDO"),
+ MTK_FUNCTION(6, "CONN_BGF_DSP_L1_JDO"),
+ MTK_FUNCTION(7, "IO_JTAG_TDO")
+ ),
+ MTK_PIN(
+ 100, "GPIO100",
+ MTK_EINT_FUNCTION(0, 100),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO100"),
+ MTK_FUNCTION(1, "TDM_DATA1"),
+ MTK_FUNCTION(2, "I2S7_DO"),
+ MTK_FUNCTION(3, "I2S9_DO"),
+ MTK_FUNCTION(4, "DP_TX_HPD"),
+ MTK_FUNCTION(5, "ADSP_JTAG0_TMS"),
+ MTK_FUNCTION(6, "CONN_BGF_DSP_L1_JMS"),
+ MTK_FUNCTION(7, "IO_JTAG_TMS")
+ ),
+ MTK_PIN(
+ 101, "GPIO101",
+ MTK_EINT_FUNCTION(0, 101),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO101"),
+ MTK_FUNCTION(1, "TDM_DATA2"),
+ MTK_FUNCTION(2, "DMIC1_CLK"),
+ MTK_FUNCTION(3, "SRCLKENAI0"),
+ MTK_FUNCTION(4, "SPI5_B_CLK"),
+ MTK_FUNCTION(5, "CLKM0"),
+ MTK_FUNCTION(7, "DAP_MD32_SWD")
+ ),
+ MTK_PIN(
+ 102, "GPIO102",
+ MTK_EINT_FUNCTION(0, 102),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO102"),
+ MTK_FUNCTION(1, "TDM_DATA3"),
+ MTK_FUNCTION(2, "DMIC1_DAT"),
+ MTK_FUNCTION(3, "SRCLKENAI1"),
+ MTK_FUNCTION(4, "SPI5_B_CSB"),
+ MTK_FUNCTION(5, "DP_TX_HPD"),
+ MTK_FUNCTION(6, "DVFSRC_EXT_REQ"),
+ MTK_FUNCTION(7, "DAP_MD32_SWCK")
+ ),
+ MTK_PIN(
+ 103, "GPIO103",
+ MTK_EINT_FUNCTION(0, 103),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO103"),
+ MTK_FUNCTION(1, "SPI0_A_MI"),
+ MTK_FUNCTION(2, "SCP_SPI0_MI"),
+ MTK_FUNCTION(5, "DFD_TDO"),
+ MTK_FUNCTION(6, "SPM_JTAG_TDO"),
+ MTK_FUNCTION(7, "JTDO_SEL1")
+ ),
+ MTK_PIN(
+ 104, "GPIO104",
+ MTK_EINT_FUNCTION(0, 104),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO104"),
+ MTK_FUNCTION(1, "SPI0_A_CSB"),
+ MTK_FUNCTION(2, "SCP_SPI0_CS"),
+ MTK_FUNCTION(5, "DFD_TMS"),
+ MTK_FUNCTION(6, "SPM_JTAG_TMS"),
+ MTK_FUNCTION(7, "JTMS_SEL1")
+ ),
+ MTK_PIN(
+ 105, "GPIO105",
+ MTK_EINT_FUNCTION(0, 105),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO105"),
+ MTK_FUNCTION(1, "SPI0_A_MO"),
+ MTK_FUNCTION(2, "SCP_SPI0_MO"),
+ MTK_FUNCTION(3, "SCP_SDA0"),
+ MTK_FUNCTION(5, "DFD_TDI"),
+ MTK_FUNCTION(6, "SPM_JTAG_TDI"),
+ MTK_FUNCTION(7, "JTDI_SEL1")
+ ),
+ MTK_PIN(
+ 106, "GPIO106",
+ MTK_EINT_FUNCTION(0, 106),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO106"),
+ MTK_FUNCTION(1, "SPI0_A_CLK"),
+ MTK_FUNCTION(2, "SCP_SPI0_CK"),
+ MTK_FUNCTION(3, "SCP_SCL0"),
+ MTK_FUNCTION(5, "DFD_TCK_XI"),
+ MTK_FUNCTION(6, "SPM_JTAG_TCK"),
+ MTK_FUNCTION(7, "JTCK_SEL1")
+ ),
+ MTK_PIN(
+ 107, "GPIO107",
+ MTK_EINT_FUNCTION(0, 107),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO107"),
+ MTK_FUNCTION(1, "DMIC_CLK"),
+ MTK_FUNCTION(2, "PWM_0"),
+ MTK_FUNCTION(3, "CLKM2"),
+ MTK_FUNCTION(4, "SPI5_B_MI"),
+ MTK_FUNCTION(6, "SPM_JTAG_TRSTN"),
+ MTK_FUNCTION(7, "JTRSTN_SEL1")
+ ),
+ MTK_PIN(
+ 108, "GPIO108",
+ MTK_EINT_FUNCTION(0, 108),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO108"),
+ MTK_FUNCTION(1, "DMIC_DAT"),
+ MTK_FUNCTION(2, "PWM_1"),
+ MTK_FUNCTION(3, "CLKM3"),
+ MTK_FUNCTION(4, "SPI5_B_MO"),
+ MTK_FUNCTION(7, "DAP_SONIC_SWD")
+ ),
+ MTK_PIN(
+ 109, "GPIO109",
+ MTK_EINT_FUNCTION(0, 109),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO109"),
+ MTK_FUNCTION(1, "I2S1_MCK"),
+ MTK_FUNCTION(2, "I2S3_MCK"),
+ MTK_FUNCTION(3, "I2S2_MCK"),
+ MTK_FUNCTION(4, "DP_TX_HPD"),
+ MTK_FUNCTION(5, "I2S2_MCK"),
+ MTK_FUNCTION(6, "SRCLKENAI0"),
+ MTK_FUNCTION(7, "DAP_SONIC_SWCK")
+ ),
+ MTK_PIN(
+ 110, "GPIO110",
+ MTK_EINT_FUNCTION(0, 110),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO110"),
+ MTK_FUNCTION(1, "I2S1_BCK"),
+ MTK_FUNCTION(2, "I2S3_BCK"),
+ MTK_FUNCTION(3, "I2S2_BCK"),
+ MTK_FUNCTION(4, "PCM0_CLK"),
+ MTK_FUNCTION(5, "I2S2_BCK"),
+ MTK_FUNCTION(6, "CONN_BGF_MCU_TDO")
+ ),
+ MTK_PIN(
+ 111, "GPIO111",
+ MTK_EINT_FUNCTION(0, 111),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO111"),
+ MTK_FUNCTION(1, "I2S1_LRCK"),
+ MTK_FUNCTION(2, "I2S3_LRCK"),
+ MTK_FUNCTION(3, "I2S2_LRCK"),
+ MTK_FUNCTION(4, "PCM0_SYNC"),
+ MTK_FUNCTION(5, "I2S2_LRCK"),
+ MTK_FUNCTION(6, "CONN_BGF_MCU_TDI")
+ ),
+ MTK_PIN(
+ 112, "GPIO112",
+ MTK_EINT_FUNCTION(0, 112),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO112"),
+ MTK_FUNCTION(1, "I2S2_DI"),
+ MTK_FUNCTION(2, "I2S0_DI"),
+ MTK_FUNCTION(3, "I2S2_DI2"),
+ MTK_FUNCTION(4, "PCM0_DI"),
+ MTK_FUNCTION(5, "I2S2_DI"),
+ MTK_FUNCTION(6, "CONN_BGF_MCU_TMS")
+ ),
+ MTK_PIN(
+ 113, "GPIO113",
+ MTK_EINT_FUNCTION(0, 113),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO113"),
+ MTK_FUNCTION(1, "I2S1_DO"),
+ MTK_FUNCTION(2, "I2S3_DO"),
+ MTK_FUNCTION(3, "I2S5_DO"),
+ MTK_FUNCTION(4, "PCM0_DO"),
+ MTK_FUNCTION(5, "I2S2_DI2"),
+ MTK_FUNCTION(6, "CONN_BGF_MCU_TCK")
+ ),
+ MTK_PIN(
+ 114, "GPIO114",
+ MTK_EINT_FUNCTION(0, 114),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO114"),
+ MTK_FUNCTION(1, "SPI2_MI"),
+ MTK_FUNCTION(2, "SCP_SPI2_MI"),
+ MTK_FUNCTION(6, "CONN_BGF_MCU_TRST_B")
+ ),
+ MTK_PIN(
+ 115, "GPIO115",
+ MTK_EINT_FUNCTION(0, 115),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO115"),
+ MTK_FUNCTION(1, "SPI2_CSB"),
+ MTK_FUNCTION(2, "SCP_SPI2_CS"),
+ MTK_FUNCTION(6, "CONN_BGF_MCU_DBGI_N")
+ ),
+ MTK_PIN(
+ 116, "GPIO116",
+ MTK_EINT_FUNCTION(0, 116),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO116"),
+ MTK_FUNCTION(1, "SPI2_MO"),
+ MTK_FUNCTION(2, "SCP_SPI2_MO"),
+ MTK_FUNCTION(3, "SCP_SDA1"),
+ MTK_FUNCTION(6, "CONN_BGF_MCU_DBGACK_N")
+ ),
+ MTK_PIN(
+ 117, "GPIO117",
+ MTK_EINT_FUNCTION(0, 117),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO117"),
+ MTK_FUNCTION(1, "SPI2_CLK"),
+ MTK_FUNCTION(2, "SCP_SPI2_CK"),
+ MTK_FUNCTION(3, "SCP_SCL1")
+ ),
+ MTK_PIN(
+ 118, "GPIO118",
+ MTK_EINT_FUNCTION(0, 118),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO118"),
+ MTK_FUNCTION(1, "SCL1"),
+ MTK_FUNCTION(2, "SCP_SCL0"),
+ MTK_FUNCTION(3, "SCP_SCL1")
+ ),
+ MTK_PIN(
+ 119, "GPIO119",
+ MTK_EINT_FUNCTION(0, 119),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO119"),
+ MTK_FUNCTION(1, "SDA1"),
+ MTK_FUNCTION(2, "SCP_SDA0"),
+ MTK_FUNCTION(3, "SCP_SDA1")
+ ),
+ MTK_PIN(
+ 120, "GPIO120",
+ MTK_EINT_FUNCTION(0, 120),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO120"),
+ MTK_FUNCTION(1, "SCL9")
+ ),
+ MTK_PIN(
+ 121, "GPIO121",
+ MTK_EINT_FUNCTION(0, 121),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO121"),
+ MTK_FUNCTION(1, "SDA9")
+ ),
+ MTK_PIN(
+ 122, "GPIO122",
+ MTK_EINT_FUNCTION(0, 122),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO122"),
+ MTK_FUNCTION(1, "SCL8")
+ ),
+ MTK_PIN(
+ 123, "GPIO123",
+ MTK_EINT_FUNCTION(0, 123),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO123"),
+ MTK_FUNCTION(1, "SDA8")
+ ),
+ MTK_PIN(
+ 124, "GPIO124",
+ MTK_EINT_FUNCTION(0, 124),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO124"),
+ MTK_FUNCTION(1, "SCL7"),
+ MTK_FUNCTION(2, "DMIC1_CLK")
+ ),
+ MTK_PIN(
+ 125, "GPIO125",
+ MTK_EINT_FUNCTION(0, 125),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO125"),
+ MTK_FUNCTION(1, "SDA7"),
+ MTK_FUNCTION(2, "DMIC1_DAT")
+ ),
+ MTK_PIN(
+ 126, "GPIO126",
+ MTK_EINT_FUNCTION(0, 126),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO126"),
+ MTK_FUNCTION(1, "CMFLASH0"),
+ MTK_FUNCTION(2, "PWM_2"),
+ MTK_FUNCTION(3, "TP_UCTS1_AO"),
+ MTK_FUNCTION(4, "UCTS0"),
+ MTK_FUNCTION(5, "SCL11"),
+ MTK_FUNCTION(6, "MD32_1_GPIO0")
+ ),
+ MTK_PIN(
+ 127, "GPIO127",
+ MTK_EINT_FUNCTION(0, 127),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO127"),
+ MTK_FUNCTION(1, "CMFLASH1"),
+ MTK_FUNCTION(2, "PWM_3"),
+ MTK_FUNCTION(3, "TP_URTS1_AO"),
+ MTK_FUNCTION(4, "URTS0"),
+ MTK_FUNCTION(5, "SDA11"),
+ MTK_FUNCTION(6, "MD32_1_GPIO1")
+ ),
+ MTK_PIN(
+ 128, "GPIO128",
+ MTK_EINT_FUNCTION(0, 128),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO128"),
+ MTK_FUNCTION(1, "CMFLASH2"),
+ MTK_FUNCTION(2, "PWM_0"),
+ MTK_FUNCTION(3, "TP_UCTS2_AO"),
+ MTK_FUNCTION(4, "UCTS1"),
+ MTK_FUNCTION(5, "SCL12"),
+ MTK_FUNCTION(6, "MD32_1_GPIO2")
+ ),
+ MTK_PIN(
+ 129, "GPIO129",
+ MTK_EINT_FUNCTION(0, 129),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO129"),
+ MTK_FUNCTION(1, "CMFLASH3"),
+ MTK_FUNCTION(2, "PWM_1"),
+ MTK_FUNCTION(3, "TP_URTS2_AO"),
+ MTK_FUNCTION(4, "URTS1"),
+ MTK_FUNCTION(5, "SDA12")
+ ),
+ MTK_PIN(
+ 130, "GPIO130",
+ MTK_EINT_FUNCTION(0, 130),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO130"),
+ MTK_FUNCTION(1, "CMVREF0"),
+ MTK_FUNCTION(2, "ANT_SEL10"),
+ MTK_FUNCTION(3, "SCP_JTAG0_TDO"),
+ MTK_FUNCTION(4, "MD32_0_JTAG_TDO"),
+ MTK_FUNCTION(5, "SCL11"),
+ MTK_FUNCTION(6, "CONN_WF_MCU_TDO"),
+ MTK_FUNCTION(7, "DBG_MON_A23")
+ ),
+ MTK_PIN(
+ 131, "GPIO131",
+ MTK_EINT_FUNCTION(0, 131),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO131"),
+ MTK_FUNCTION(1, "CMVREF1"),
+ MTK_FUNCTION(2, "ANT_SEL11"),
+ MTK_FUNCTION(3, "SCP_JTAG0_TDI"),
+ MTK_FUNCTION(4, "MD32_0_JTAG_TDI"),
+ MTK_FUNCTION(5, "SDA11"),
+ MTK_FUNCTION(6, "CONN_WF_MCU_TDI"),
+ MTK_FUNCTION(7, "DBG_MON_A26")
+ ),
+ MTK_PIN(
+ 132, "GPIO132",
+ MTK_EINT_FUNCTION(0, 132),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO132"),
+ MTK_FUNCTION(1, "CMVREF2"),
+ MTK_FUNCTION(2, "ANT_SEL12"),
+ MTK_FUNCTION(3, "SCP_JTAG0_TMS"),
+ MTK_FUNCTION(4, "MD32_0_JTAG_TMS"),
+ MTK_FUNCTION(6, "CONN_WF_MCU_TMS"),
+ MTK_FUNCTION(7, "DBG_MON_A28")
+ ),
+ MTK_PIN(
+ 133, "GPIO133",
+ MTK_EINT_FUNCTION(0, 133),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO133"),
+ MTK_FUNCTION(1, "CMVREF3"),
+ MTK_FUNCTION(2, "GPS_L1_ELNA_EN"),
+ MTK_FUNCTION(3, "SCP_JTAG0_TCK"),
+ MTK_FUNCTION(4, "MD32_0_JTAG_TCK"),
+ MTK_FUNCTION(6, "CONN_WF_MCU_TCK"),
+ MTK_FUNCTION(7, "DBG_MON_A24")
+ ),
+ MTK_PIN(
+ 134, "GPIO134",
+ MTK_EINT_FUNCTION(0, 134),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO134"),
+ MTK_FUNCTION(1, "CMVREF4"),
+ MTK_FUNCTION(2, "GPS_L5_ELNA_EN"),
+ MTK_FUNCTION(3, "SCP_JTAG0_TRSTN"),
+ MTK_FUNCTION(4, "MD32_0_JTAG_TRST"),
+ MTK_FUNCTION(6, "CONN_WF_MCU_TRST_B"),
+ MTK_FUNCTION(7, "DBG_MON_A27")
+ ),
+ MTK_PIN(
+ 135, "GPIO135",
+ MTK_EINT_FUNCTION(0, 135),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO135"),
+ MTK_FUNCTION(1, "PWM_0"),
+ MTK_FUNCTION(2, "SRCLKENAI1"),
+ MTK_FUNCTION(3, "MD_URXD0"),
+ MTK_FUNCTION(4, "MD32_0_RXD"),
+ MTK_FUNCTION(5, "CONN_TCXOENA_REQ"),
+ MTK_FUNCTION(6, "CONN_WF_MCU_DBGI_N"),
+ MTK_FUNCTION(7, "DBG_MON_A29")
+ ),
+ MTK_PIN(
+ 136, "GPIO136",
+ MTK_EINT_FUNCTION(0, 136),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO136"),
+ MTK_FUNCTION(1, "CMMCLK3"),
+ MTK_FUNCTION(2, "CLKM1"),
+ MTK_FUNCTION(3, "MD_UTXD0"),
+ MTK_FUNCTION(4, "MD32_0_TXD"),
+ MTK_FUNCTION(5, "CONN_BT_TXD"),
+ MTK_FUNCTION(6, "CONN_WF_MCU_DBGACK_N"),
+ MTK_FUNCTION(7, "DBG_MON_A25")
+ ),
+ MTK_PIN(
+ 137, "GPIO137",
+ MTK_EINT_FUNCTION(0, 137),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO137"),
+ MTK_FUNCTION(1, "CMMCLK4"),
+ MTK_FUNCTION(2, "CLKM2"),
+ MTK_FUNCTION(3, "MD_URXD1"),
+ MTK_FUNCTION(4, "MD32_1_RXD"),
+ MTK_FUNCTION(5, "ILDO_DOUT0"),
+ MTK_FUNCTION(6, "CONN_BGF_UART0_RXD")
+ ),
+ MTK_PIN(
+ 138, "GPIO138",
+ MTK_EINT_FUNCTION(0, 138),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO138"),
+ MTK_FUNCTION(1, "CMMCLK5"),
+ MTK_FUNCTION(2, "CLKM3"),
+ MTK_FUNCTION(3, "MD_UTXD1"),
+ MTK_FUNCTION(4, "MD32_1_TXD"),
+ MTK_FUNCTION(5, "ILDO_DOUT1"),
+ MTK_FUNCTION(6, "CONN_BGF_UART0_TXD")
+ ),
+ MTK_PIN(
+ 139, "GPIO139",
+ MTK_EINT_FUNCTION(0, 139),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO139"),
+ MTK_FUNCTION(1, "SCL4")
+ ),
+ MTK_PIN(
+ 140, "GPIO140",
+ MTK_EINT_FUNCTION(0, 140),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO140"),
+ MTK_FUNCTION(1, "SDA4")
+ ),
+ MTK_PIN(
+ 141, "GPIO141",
+ MTK_EINT_FUNCTION(0, 141),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO141"),
+ MTK_FUNCTION(1, "SCL2")
+ ),
+ MTK_PIN(
+ 142, "GPIO142",
+ MTK_EINT_FUNCTION(0, 142),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO142"),
+ MTK_FUNCTION(1, "SDA2")
+ ),
+ MTK_PIN(
+ 143, "GPIO143",
+ MTK_EINT_FUNCTION(0, 143),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO143"),
+ MTK_FUNCTION(1, "CMVREF0"),
+ MTK_FUNCTION(2, "SPI3_CLK"),
+ MTK_FUNCTION(3, "ADSP_JTAG1_TDO"),
+ MTK_FUNCTION(4, "SCP_JTAG1_TDO"),
+ MTK_FUNCTION(5, "MD32_1_JTAG_TDO"),
+ MTK_FUNCTION(6, "CONN_BGF_DSP_L5_JDO")
+ ),
+ MTK_PIN(
+ 144, "GPIO144",
+ MTK_EINT_FUNCTION(0, 144),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO144"),
+ MTK_FUNCTION(1, "CMVREF1"),
+ MTK_FUNCTION(2, "SPI3_CSB"),
+ MTK_FUNCTION(3, "ADSP_JTAG1_TDI"),
+ MTK_FUNCTION(4, "SCP_JTAG1_TDI"),
+ MTK_FUNCTION(5, "MD32_1_JTAG_TDI"),
+ MTK_FUNCTION(6, "CONN_BGF_DSP_L5_JDI")
+ ),
+ MTK_PIN(
+ 145, "GPIO145",
+ MTK_EINT_FUNCTION(0, 145),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO145"),
+ MTK_FUNCTION(1, "CMVREF2"),
+ MTK_FUNCTION(2, "SPI3_MI"),
+ MTK_FUNCTION(3, "ADSP_JTAG1_TMS"),
+ MTK_FUNCTION(4, "SCP_JTAG1_TMS"),
+ MTK_FUNCTION(5, "MD32_1_JTAG_TMS"),
+ MTK_FUNCTION(6, "CONN_BGF_DSP_L5_JMS")
+ ),
+ MTK_PIN(
+ 146, "GPIO146",
+ MTK_EINT_FUNCTION(0, 146),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO146"),
+ MTK_FUNCTION(1, "CMVREF3"),
+ MTK_FUNCTION(2, "SPI3_MO"),
+ MTK_FUNCTION(3, "ADSP_JTAG1_TCK"),
+ MTK_FUNCTION(4, "SCP_JTAG1_TCK"),
+ MTK_FUNCTION(5, "MD32_1_JTAG_TCK"),
+ MTK_FUNCTION(6, "CONN_BGF_DSP_L5_JCK")
+ ),
+ MTK_PIN(
+ 147, "GPIO147",
+ MTK_EINT_FUNCTION(0, 147),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO147"),
+ MTK_FUNCTION(1, "CMVREF4"),
+ MTK_FUNCTION(2, "EXT_FRAME_SYNC"),
+ MTK_FUNCTION(3, "ADSP_JTAG1_TRSTN"),
+ MTK_FUNCTION(4, "SCP_JTAG1_TRSTN"),
+ MTK_FUNCTION(5, "MD32_1_JTAG_TRST"),
+ MTK_FUNCTION(6, "CONN_BGF_DSP_L5_JINTP")
+ ),
+ MTK_PIN(
+ 148, "GPIO148",
+ MTK_EINT_FUNCTION(0, 148),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO148"),
+ MTK_FUNCTION(1, "PWM_1"),
+ MTK_FUNCTION(2, "AGPS_SYNC"),
+ MTK_FUNCTION(3, "CMMCLK5"),
+ MTK_FUNCTION(6, "CONN_WF_MCU_AICE_TMSC")
+ ),
+ MTK_PIN(
+ 149, "GPIO149",
+ MTK_EINT_FUNCTION(0, 149),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO149"),
+ MTK_FUNCTION(1, "CMMCLK0"),
+ MTK_FUNCTION(2, "CLKM0"),
+ MTK_FUNCTION(3, "MD32_0_GPIO0"),
+ MTK_FUNCTION(6, "CONN_WF_MCU_AICE_TCKC")
+ ),
+ MTK_PIN(
+ 150, "GPIO150",
+ MTK_EINT_FUNCTION(0, 150),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO150"),
+ MTK_FUNCTION(1, "CMMCLK1"),
+ MTK_FUNCTION(2, "CLKM1"),
+ MTK_FUNCTION(3, "MD32_0_GPIO1"),
+ MTK_FUNCTION(6, "CONN_BGF_MCU_AICE_TMSC")
+ ),
+ MTK_PIN(
+ 151, "GPIO151",
+ MTK_EINT_FUNCTION(0, 151),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO151"),
+ MTK_FUNCTION(1, "CMMCLK2"),
+ MTK_FUNCTION(2, "CLKM2"),
+ MTK_FUNCTION(3, "MD32_0_GPIO2"),
+ MTK_FUNCTION(6, "CONN_BGF_MCU_AICE_TCKC")
+ ),
+ MTK_PIN(
+ 152, "GPIO152",
+ MTK_EINT_FUNCTION(0, 152),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO152"),
+ MTK_FUNCTION(1, "KPROW1"),
+ MTK_FUNCTION(2, "PWM_2"),
+ MTK_FUNCTION(3, "IDDIG"),
+ MTK_FUNCTION(4, "DP_TX_HPD"),
+ MTK_FUNCTION(5, "DSI1_TE"),
+ MTK_FUNCTION(6, "MBISTREADEN_TRIGGER"),
+ MTK_FUNCTION(7, "DBG_MON_B2")
+ ),
+ MTK_PIN(
+ 153, "GPIO153",
+ MTK_EINT_FUNCTION(0, 153),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO153"),
+ MTK_FUNCTION(1, "KPROW0"),
+ MTK_FUNCTION(7, "DBG_MON_B1")
+ ),
+ MTK_PIN(
+ 154, "GPIO154",
+ MTK_EINT_FUNCTION(0, 154),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO154"),
+ MTK_FUNCTION(1, "KPCOL0"),
+ MTK_FUNCTION(7, "DBG_MON_A32")
+ ),
+ MTK_PIN(
+ 155, "GPIO155",
+ MTK_EINT_FUNCTION(0, 155),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO155"),
+ MTK_FUNCTION(1, "KPCOL1"),
+ MTK_FUNCTION(2, "PWM_3"),
+ MTK_FUNCTION(3, "USB_DRVVBUS"),
+ MTK_FUNCTION(4, "CONN_TCXOENA_REQ"),
+ MTK_FUNCTION(5, "LCM1_RST"),
+ MTK_FUNCTION(6, "MBISTWRITEEN_TRIGGER"),
+ MTK_FUNCTION(7, "DBG_MON_B0")
+ ),
+ MTK_PIN(
+ 156, "GPIO156",
+ MTK_EINT_FUNCTION(0, 156),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO156"),
+ MTK_FUNCTION(1, "SPI1_A_CLK"),
+ MTK_FUNCTION(2, "SCP_SPI1_A_CK"),
+ MTK_FUNCTION(3, "MRG_CLK"),
+ MTK_FUNCTION(4, "AGPS_SYNC"),
+ MTK_FUNCTION(5, "SCL12"),
+ MTK_FUNCTION(7, "DBG_MON_B3")
+ ),
+ MTK_PIN(
+ 157, "GPIO157",
+ MTK_EINT_FUNCTION(0, 157),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO157"),
+ MTK_FUNCTION(1, "SPI1_A_CSB"),
+ MTK_FUNCTION(2, "SCP_SPI1_A_CS"),
+ MTK_FUNCTION(3, "MRG_SYNC"),
+ MTK_FUNCTION(4, "EXT_FRAME_SYNC"),
+ MTK_FUNCTION(5, "SDA12"),
+ MTK_FUNCTION(7, "DBG_MON_B4")
+ ),
+ MTK_PIN(
+ 158, "GPIO158",
+ MTK_EINT_FUNCTION(0, 158),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO158"),
+ MTK_FUNCTION(1, "SPI1_A_MI"),
+ MTK_FUNCTION(2, "SCP_SPI1_A_MI"),
+ MTK_FUNCTION(3, "MRG_DI"),
+ MTK_FUNCTION(4, "PTA_RXD"),
+ MTK_FUNCTION(5, "SCL13"),
+ MTK_FUNCTION(7, "DBG_MON_B5")
+ ),
+ MTK_PIN(
+ 159, "GPIO159",
+ MTK_EINT_FUNCTION(0, 159),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO159"),
+ MTK_FUNCTION(1, "SPI1_A_MO"),
+ MTK_FUNCTION(2, "SCP_SPI1_A_MO"),
+ MTK_FUNCTION(3, "MRG_DO"),
+ MTK_FUNCTION(4, "PTA_TXD"),
+ MTK_FUNCTION(5, "SDA13"),
+ MTK_FUNCTION(7, "DBG_MON_B6")
+ ),
+ MTK_PIN(
+ 160, "GPIO160",
+ MTK_EINT_FUNCTION(0, 160),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO160"),
+ MTK_FUNCTION(1, "SCL3"),
+ MTK_FUNCTION(2, "SCP_SCL0"),
+ MTK_FUNCTION(3, "SCP_SCL1")
+ ),
+ MTK_PIN(
+ 161, "GPIO161",
+ MTK_EINT_FUNCTION(0, 161),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO161"),
+ MTK_FUNCTION(1, "SDA3"),
+ MTK_FUNCTION(2, "SCP_SDA0"),
+ MTK_FUNCTION(3, "SCP_SDA1")
+ ),
+ MTK_PIN(
+ 162, "GPIO162",
+ MTK_EINT_FUNCTION(0, 162),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO162"),
+ MTK_FUNCTION(1, "ANT_SEL0"),
+ MTK_FUNCTION(2, "GPS_L1_ELNA_EN"),
+ MTK_FUNCTION(7, "DBG_MON_B7")
+ ),
+ MTK_PIN(
+ 163, "GPIO163",
+ MTK_EINT_FUNCTION(0, 163),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO163"),
+ MTK_FUNCTION(1, "ANT_SEL1"),
+ MTK_FUNCTION(2, "GPS_L5_ELNA_EN"),
+ MTK_FUNCTION(7, "DBG_MON_B8")
+ ),
+ MTK_PIN(
+ 164, "GPIO164",
+ MTK_EINT_FUNCTION(0, 164),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO164"),
+ MTK_FUNCTION(1, "ANT_SEL2"),
+ MTK_FUNCTION(2, "SCP_SPI1_B_CK"),
+ MTK_FUNCTION(3, "TP_URXD1_AO"),
+ MTK_FUNCTION(5, "UCTS0"),
+ MTK_FUNCTION(7, "DBG_MON_B9")
+ ),
+ MTK_PIN(
+ 165, "GPIO165",
+ MTK_EINT_FUNCTION(0, 165),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO165"),
+ MTK_FUNCTION(1, "ANT_SEL3"),
+ MTK_FUNCTION(2, "SCP_SPI1_B_CS"),
+ MTK_FUNCTION(3, "TP_UTXD1_AO"),
+ MTK_FUNCTION(4, "CONN_TCXOENA_REQ"),
+ MTK_FUNCTION(5, "URTS0"),
+ MTK_FUNCTION(7, "DBG_MON_B10")
+ ),
+ MTK_PIN(
+ 166, "GPIO166",
+ MTK_EINT_FUNCTION(0, 166),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO166"),
+ MTK_FUNCTION(1, "ANT_SEL4"),
+ MTK_FUNCTION(2, "SCP_SPI1_B_MI"),
+ MTK_FUNCTION(3, "TP_URXD2_AO"),
+ MTK_FUNCTION(4, "SRCLKENAI1"),
+ MTK_FUNCTION(5, "UCTS1"),
+ MTK_FUNCTION(7, "DBG_MON_B11")
+ ),
+ MTK_PIN(
+ 167, "GPIO167",
+ MTK_EINT_FUNCTION(0, 167),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO167"),
+ MTK_FUNCTION(1, "ANT_SEL5"),
+ MTK_FUNCTION(2, "SCP_SPI1_B_MO"),
+ MTK_FUNCTION(3, "TP_UTXD2_AO"),
+ MTK_FUNCTION(4, "SRCLKENAI0"),
+ MTK_FUNCTION(5, "URTS1"),
+ MTK_FUNCTION(7, "DBG_MON_B12")
+ ),
+ MTK_PIN(
+ 168, "GPIO168",
+ MTK_EINT_FUNCTION(0, 168),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO168"),
+ MTK_FUNCTION(1, "ANT_SEL6"),
+ MTK_FUNCTION(2, "SPI0_B_CLK"),
+ MTK_FUNCTION(3, "TP_UCTS1_AO"),
+ MTK_FUNCTION(4, "KPCOL2"),
+ MTK_FUNCTION(5, "MD_UCTS0"),
+ MTK_FUNCTION(6, "SCL12"),
+ MTK_FUNCTION(7, "DBG_MON_B13")
+ ),
+ MTK_PIN(
+ 169, "GPIO169",
+ MTK_EINT_FUNCTION(0, 169),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO169"),
+ MTK_FUNCTION(1, "ANT_SEL7"),
+ MTK_FUNCTION(2, "SPI0_B_CSB"),
+ MTK_FUNCTION(3, "TP_URTS1_AO"),
+ MTK_FUNCTION(4, "KPROW2"),
+ MTK_FUNCTION(5, "MD_URTS0"),
+ MTK_FUNCTION(6, "SDA12"),
+ MTK_FUNCTION(7, "DBG_MON_B14")
+ ),
+ MTK_PIN(
+ 170, "GPIO170",
+ MTK_EINT_FUNCTION(0, 170),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO170"),
+ MTK_FUNCTION(1, "ANT_SEL8"),
+ MTK_FUNCTION(2, "SPI0_B_MI"),
+ MTK_FUNCTION(3, "TP_UCTS2_AO"),
+ MTK_FUNCTION(4, "SRCLKENAI1"),
+ MTK_FUNCTION(5, "MD_UCTS1"),
+ MTK_FUNCTION(6, "SCL13")
+ ),
+ MTK_PIN(
+ 171, "GPIO171",
+ MTK_EINT_FUNCTION(0, 171),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO171"),
+ MTK_FUNCTION(1, "ANT_SEL9"),
+ MTK_FUNCTION(2, "SPI0_B_MO"),
+ MTK_FUNCTION(3, "TP_URTS2_AO"),
+ MTK_FUNCTION(4, "SRCLKENAI0"),
+ MTK_FUNCTION(5, "MD_URTS1"),
+ MTK_FUNCTION(6, "SDA13")
+ ),
+ MTK_PIN(
+ 172, "GPIO172",
+ MTK_EINT_FUNCTION(0, 172),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO172"),
+ MTK_FUNCTION(1, "CONN_TOP_CLK"),
+ MTK_FUNCTION(2, "AUXIF_CLK0"),
+ MTK_FUNCTION(7, "DBG_MON_B18")
+ ),
+ MTK_PIN(
+ 173, "GPIO173",
+ MTK_EINT_FUNCTION(0, 173),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO173"),
+ MTK_FUNCTION(1, "CONN_TOP_DATA"),
+ MTK_FUNCTION(2, "AUXIF_ST0"),
+ MTK_FUNCTION(7, "DBG_MON_B19")
+ ),
+ MTK_PIN(
+ 174, "GPIO174",
+ MTK_EINT_FUNCTION(0, 174),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO174"),
+ MTK_FUNCTION(1, "CONN_HRST_B"),
+ MTK_FUNCTION(7, "DBG_MON_B17")
+ ),
+ MTK_PIN(
+ 175, "GPIO175",
+ MTK_EINT_FUNCTION(0, 175),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO175"),
+ MTK_FUNCTION(1, "CONN_WB_PTA"),
+ MTK_FUNCTION(7, "DBG_MON_B20")
+ ),
+ MTK_PIN(
+ 176, "GPIO176",
+ MTK_EINT_FUNCTION(0, 176),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO176"),
+ MTK_FUNCTION(1, "CONN_BT_CLK"),
+ MTK_FUNCTION(2, "AUXIF_CLK1"),
+ MTK_FUNCTION(7, "DBG_MON_B15")
+ ),
+ MTK_PIN(
+ 177, "GPIO177",
+ MTK_EINT_FUNCTION(0, 177),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO177"),
+ MTK_FUNCTION(1, "CONN_BT_DATA"),
+ MTK_FUNCTION(2, "AUXIF_ST1"),
+ MTK_FUNCTION(7, "DBG_MON_B16")
+ ),
+ MTK_PIN(
+ 178, "GPIO178",
+ MTK_EINT_FUNCTION(0, 178),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO178"),
+ MTK_FUNCTION(1, "CONN_WF_CTRL0"),
+ MTK_FUNCTION(7, "DBG_MON_B21")
+ ),
+ MTK_PIN(
+ 179, "GPIO179",
+ MTK_EINT_FUNCTION(0, 179),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO179"),
+ MTK_FUNCTION(1, "CONN_WF_CTRL1"),
+ MTK_FUNCTION(2, "UFS_MPHY_SCL"),
+ MTK_FUNCTION(7, "DBG_MON_B22")
+ ),
+ MTK_PIN(
+ 180, "GPIO180",
+ MTK_EINT_FUNCTION(0, 180),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO180"),
+ MTK_FUNCTION(1, "CONN_WF_CTRL2"),
+ MTK_FUNCTION(2, "UFS_MPHY_SDA"),
+ MTK_FUNCTION(7, "DBG_MON_B23")
+ ),
+ MTK_PIN(
+ 181, "GPIO181",
+ MTK_EINT_FUNCTION(0, 181),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO181"),
+ MTK_FUNCTION(1, "CONN_WF_CTRL3"),
+ MTK_FUNCTION(2, "UFS_UNIPRO_SDA")
+ ),
+ MTK_PIN(
+ 182, "GPIO182",
+ MTK_EINT_FUNCTION(0, 182),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO182"),
+ MTK_FUNCTION(1, "CONN_WF_CTRL4"),
+ MTK_FUNCTION(2, "UFS_UNIPRO_SCL")
+ ),
+ MTK_PIN(
+ 183, "GPIO183",
+ MTK_EINT_FUNCTION(0, 183),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO183"),
+ MTK_FUNCTION(1, "MSDC0_CMD")
+ ),
+ MTK_PIN(
+ 184, "GPIO184",
+ MTK_EINT_FUNCTION(0, 184),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO184"),
+ MTK_FUNCTION(1, "MSDC0_DAT0")
+ ),
+ MTK_PIN(
+ 185, "GPIO185",
+ MTK_EINT_FUNCTION(0, 185),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO185"),
+ MTK_FUNCTION(1, "MSDC0_DAT2")
+ ),
+ MTK_PIN(
+ 186, "GPIO186",
+ MTK_EINT_FUNCTION(0, 186),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO186"),
+ MTK_FUNCTION(1, "MSDC0_DAT4")
+ ),
+ MTK_PIN(
+ 187, "GPIO187",
+ MTK_EINT_FUNCTION(0, 187),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO187"),
+ MTK_FUNCTION(1, "MSDC0_DAT6")
+ ),
+ MTK_PIN(
+ 188, "GPIO188",
+ MTK_EINT_FUNCTION(0, 188),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO188"),
+ MTK_FUNCTION(1, "MSDC0_DAT1")
+ ),
+ MTK_PIN(
+ 189, "GPIO189",
+ MTK_EINT_FUNCTION(0, 189),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO189"),
+ MTK_FUNCTION(1, "MSDC0_DAT5")
+ ),
+ MTK_PIN(
+ 190, "GPIO190",
+ MTK_EINT_FUNCTION(0, 190),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO190"),
+ MTK_FUNCTION(1, "MSDC0_DAT7")
+ ),
+ MTK_PIN(
+ 191, "GPIO191",
+ MTK_EINT_FUNCTION(0, 191),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO191"),
+ MTK_FUNCTION(1, "MSDC0_DSL"),
+ MTK_FUNCTION(2, "GPS_L1_ELNA_EN"),
+ MTK_FUNCTION(3, "IDDIG"),
+ MTK_FUNCTION(4, "DMIC_CLK"),
+ MTK_FUNCTION(5, "DSI1_TE")
+ ),
+ MTK_PIN(
+ 192, "GPIO192",
+ MTK_EINT_FUNCTION(0, 192),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO192"),
+ MTK_FUNCTION(1, "MSDC0_CLK"),
+ MTK_FUNCTION(2, "GPS_L5_ELNA_EN"),
+ MTK_FUNCTION(3, "USB_DRVVBUS"),
+ MTK_FUNCTION(4, "DMIC_DAT"),
+ MTK_FUNCTION(5, "LCM1_RST")
+ ),
+ MTK_PIN(
+ 193, "GPIO193",
+ MTK_EINT_FUNCTION(0, 193),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO193"),
+ MTK_FUNCTION(1, "MSDC0_DAT3")
+ ),
+ MTK_PIN(
+ 194, "GPIO194",
+ MTK_EINT_FUNCTION(0, 194),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO194"),
+ MTK_FUNCTION(1, "MSDC0_RSTB")
+ ),
+ MTK_PIN(
+ 195, "GPIO195",
+ MTK_EINT_FUNCTION(0, 195),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO195"),
+ MTK_FUNCTION(1, "SCP_VREQ_VAO"),
+ MTK_FUNCTION(2, "DVFSRC_EXT_REQ")
+ ),
+ MTK_PIN(
+ 196, "GPIO196",
+ MTK_EINT_FUNCTION(0, 196),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO196"),
+ MTK_FUNCTION(1, "AUD_DAT_MOSI2"),
+ MTK_FUNCTION(7, "DBG_MON_B27")
+ ),
+ MTK_PIN(
+ 197, "GPIO197",
+ MTK_EINT_FUNCTION(0, 197),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO197"),
+ MTK_FUNCTION(1, "AUD_NLE_MOSI1"),
+ MTK_FUNCTION(2, "AUD_CLK_MISO"),
+ MTK_FUNCTION(3, "I2S2_MCK"),
+ MTK_FUNCTION(4, "I2S6_MCK"),
+ MTK_FUNCTION(5, "I2S8_MCK"),
+ MTK_FUNCTION(6, "UFS_UNIPRO_SDA"),
+ MTK_FUNCTION(7, "DBG_MON_B28")
+ ),
+ MTK_PIN(
+ 198, "GPIO198",
+ MTK_EINT_FUNCTION(0, 198),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO198"),
+ MTK_FUNCTION(1, "AUD_NLE_MOSI0"),
+ MTK_FUNCTION(2, "AUD_SYNC_MISO"),
+ MTK_FUNCTION(3, "I2S2_BCK"),
+ MTK_FUNCTION(4, "I2S6_BCK"),
+ MTK_FUNCTION(5, "I2S8_BCK"),
+ MTK_FUNCTION(7, "DBG_MON_B29")
+ ),
+ MTK_PIN(
+ 199, "GPIO199",
+ MTK_EINT_FUNCTION(0, 199),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO199"),
+ MTK_FUNCTION(1, "AUD_DAT_MISO2"),
+ MTK_FUNCTION(3, "I2S2_DI2"),
+ MTK_FUNCTION(7, "DBG_MON_B32")
+ ),
+ MTK_PIN(
+ 200, "GPIO200",
+ MTK_EINT_FUNCTION(0, 200),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO200"),
+ MTK_FUNCTION(1, "SCL6"),
+ MTK_FUNCTION(2, "SCP_SCL0"),
+ MTK_FUNCTION(3, "SCP_SCL1"),
+ MTK_FUNCTION(4, "SCL_6306")
+ ),
+ MTK_PIN(
+ 201, "GPIO201",
+ MTK_EINT_FUNCTION(0, 201),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO201"),
+ MTK_FUNCTION(1, "SDA6"),
+ MTK_FUNCTION(2, "SCP_SDA0"),
+ MTK_FUNCTION(3, "SCP_SDA1"),
+ MTK_FUNCTION(4, "SDA_6306")
+ ),
+ MTK_PIN(
+ 202, "GPIO202",
+ MTK_EINT_FUNCTION(0, 202),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO202"),
+ MTK_FUNCTION(1, "SCL5")
+ ),
+ MTK_PIN(
+ 203, "GPIO203",
+ MTK_EINT_FUNCTION(0, 203),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO203"),
+ MTK_FUNCTION(1, "SDA5")
+ ),
+ MTK_PIN(
+ 204, "GPIO204",
+ MTK_EINT_FUNCTION(0, 204),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO204"),
+ MTK_FUNCTION(1, "SCL0"),
+ MTK_FUNCTION(2, "SPI4_C_CLK"),
+ MTK_FUNCTION(3, "SPI7_B_CLK")
+ ),
+ MTK_PIN(
+ 205, "GPIO205",
+ MTK_EINT_FUNCTION(0, 205),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO205"),
+ MTK_FUNCTION(1, "SDA0"),
+ MTK_FUNCTION(2, "SPI4_C_CSB"),
+ MTK_FUNCTION(3, "SPI7_B_CSB")
+ ),
+ MTK_PIN(
+ 206, "GPIO206",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO206"),
+ MTK_FUNCTION(1, "SRCLKENA0")
+ ),
+ MTK_PIN(
+ 207, "GPIO207",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO207"),
+ MTK_FUNCTION(1, "SRCLKENA1")
+ ),
+ MTK_PIN(
+ 208, "GPIO208",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO208"),
+ MTK_FUNCTION(1, "WATCHDOG")
+ ),
+ MTK_PIN(
+ 209, "GPIO209",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO209"),
+ MTK_FUNCTION(1, "PWRAP_SPI0_MI"),
+ MTK_FUNCTION(2, "PWRAP_SPI0_MO")
+ ),
+ MTK_PIN(
+ 210, "GPIO210",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO210"),
+ MTK_FUNCTION(1, "PWRAP_SPI0_CSN")
+ ),
+ MTK_PIN(
+ 211, "GPIO211",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO211"),
+ MTK_FUNCTION(1, "PWRAP_SPI0_MO"),
+ MTK_FUNCTION(2, "PWRAP_SPI0_MI")
+ ),
+ MTK_PIN(
+ 212, "GPIO212",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO212"),
+ MTK_FUNCTION(1, "PWRAP_SPI0_CK")
+ ),
+ MTK_PIN(
+ 213, "GPIO213",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO213"),
+ MTK_FUNCTION(1, "RTC32K_CK")
+ ),
+ MTK_PIN(
+ 214, "GPIO214",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO214"),
+ MTK_FUNCTION(1, "AUD_CLK_MOSI"),
+ MTK_FUNCTION(3, "I2S1_MCK"),
+ MTK_FUNCTION(4, "I2S7_MCK"),
+ MTK_FUNCTION(5, "I2S9_MCK"),
+ MTK_FUNCTION(6, "UFS_UNIPRO_SCL")
+ ),
+ MTK_PIN(
+ 215, "GPIO215",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO215"),
+ MTK_FUNCTION(1, "AUD_SYNC_MOSI"),
+ MTK_FUNCTION(3, "I2S1_BCK"),
+ MTK_FUNCTION(4, "I2S7_BCK"),
+ MTK_FUNCTION(5, "I2S9_BCK"),
+ MTK_FUNCTION(7, "DBG_MON_B24")
+ ),
+ MTK_PIN(
+ 216, "GPIO216",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO216"),
+ MTK_FUNCTION(1, "AUD_DAT_MOSI0"),
+ MTK_FUNCTION(3, "I2S1_LRCK"),
+ MTK_FUNCTION(4, "I2S7_LRCK"),
+ MTK_FUNCTION(5, "I2S9_LRCK"),
+ MTK_FUNCTION(7, "DBG_MON_B25")
+ ),
+ MTK_PIN(
+ 217, "GPIO217",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO217"),
+ MTK_FUNCTION(1, "AUD_DAT_MOSI1"),
+ MTK_FUNCTION(3, "I2S1_DO"),
+ MTK_FUNCTION(4, "I2S7_DO"),
+ MTK_FUNCTION(5, "I2S9_DO"),
+ MTK_FUNCTION(6, "UFS_MPHY_SDA"),
+ MTK_FUNCTION(7, "DBG_MON_B26")
+ ),
+ MTK_PIN(
+ 218, "GPIO218",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO218"),
+ MTK_FUNCTION(1, "AUD_DAT_MISO0"),
+ MTK_FUNCTION(2, "VOW_DAT_MISO"),
+ MTK_FUNCTION(3, "I2S2_LRCK"),
+ MTK_FUNCTION(4, "I2S6_LRCK"),
+ MTK_FUNCTION(5, "I2S8_LRCK"),
+ MTK_FUNCTION(7, "DBG_MON_B30")
+ ),
+ MTK_PIN(
+ 219, "GPIO219",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO219"),
+ MTK_FUNCTION(1, "AUD_DAT_MISO1"),
+ MTK_FUNCTION(2, "VOW_CLK_MISO"),
+ MTK_FUNCTION(3, "I2S2_DI"),
+ MTK_FUNCTION(4, "I2S6_DI"),
+ MTK_FUNCTION(5, "I2S8_DI"),
+ MTK_FUNCTION(6, "UFS_MPHY_SCL"),
+ MTK_FUNCTION(7, "DBG_MON_B31")
+ ),
+ MTK_PIN(
+ 220, "GPIO220",
+ MTK_EINT_FUNCTION(0, 216),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 221, "GPIO221",
+ MTK_EINT_FUNCTION(0, 217),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 222, "GPIO222",
+ MTK_EINT_FUNCTION(0, 218),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 223, "GPIO223",
+ MTK_EINT_FUNCTION(0, 219),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 224, "GPIO224",
+ MTK_EINT_FUNCTION(0, 220),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 225, "GPIO225",
+ MTK_EINT_FUNCTION(0, 222),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 226, "GPIO226",
+ MTK_EINT_FUNCTION(0, 223),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+};
+
+#endif /* __PINCTRL_MTK_MT6893_H */
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt8196.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8196.h
new file mode 100644
index 000000000000..c2a7e239a234
--- /dev/null
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8196.h
@@ -0,0 +1,3085 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2025 MediaTek Inc.
+ * Author: Guodong Liu <Guodong.Liu@mediatek.com>
+ */
+
+#ifndef __PINCTRL_MTK_MT8196_H
+#define __PINCTRL_MTK_MT8196_H
+
+#include "pinctrl-paris.h"
+#define EINT_INVALID_BASE 0xff
+
+static const struct mtk_pin_desc mtk_pins_mt8196[] = {
+ MTK_PIN(
+ 0, "GPIO0",
+ MTK_EINT_FUNCTION(0, 0),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO0"),
+ MTK_FUNCTION(1, "DMIC1_CLK"),
+ MTK_FUNCTION(3, "SPI3_A_MO"),
+ MTK_FUNCTION(4, "FMI2S_B_LRCK"),
+ MTK_FUNCTION(5, "SCP_DMIC1_CLK"),
+ MTK_FUNCTION(6, "TP_GPIO14_AO")
+ ),
+ MTK_PIN(
+ 1, "GPIO1",
+ MTK_EINT_FUNCTION(0, 1),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO1"),
+ MTK_FUNCTION(1, "DMIC1_DAT"),
+ MTK_FUNCTION(2, "SRCLKENAI1"),
+ MTK_FUNCTION(3, "SPI3_A_MI"),
+ MTK_FUNCTION(4, "FMI2S_B_DI"),
+ MTK_FUNCTION(5, "SCP_DMIC1_DAT"),
+ MTK_FUNCTION(6, "TP_GPIO15_AO")
+ ),
+ MTK_PIN(
+ 2, "GPIO2",
+ MTK_EINT_FUNCTION(0, 2),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO2"),
+ MTK_FUNCTION(1, "PWM_VLP"),
+ MTK_FUNCTION(2, "DSI_HSYNC"),
+ MTK_FUNCTION(5, "RG_TSFDC_LDO_EN"),
+ MTK_FUNCTION(6, "TP_GPIO8_AO")
+ ),
+ MTK_PIN(
+ 3, "GPIO3",
+ MTK_EINT_FUNCTION(0, 3),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO3"),
+ MTK_FUNCTION(1, "MD_INT0"),
+ MTK_FUNCTION(2, "DSI1_HSYNC"),
+ MTK_FUNCTION(5, "DA_TSFDC_LDO_MODE"),
+ MTK_FUNCTION(6, "TP_GPIO9_AO")
+ ),
+ MTK_PIN(
+ 4, "GPIO4",
+ MTK_EINT_FUNCTION(0, 4),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO4"),
+ MTK_FUNCTION(1, "DISP_PWM1"),
+ MTK_FUNCTION(2, "MD32_0_GPIO0")
+ ),
+ MTK_PIN(
+ 5, "GPIO5",
+ MTK_EINT_FUNCTION(0, 5),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO5"),
+ MTK_FUNCTION(1, "LCM1_RST"),
+ MTK_FUNCTION(2, "SPI7_A_CLK")
+ ),
+ MTK_PIN(
+ 6, "GPIO6",
+ MTK_EINT_FUNCTION(0, 6),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO6"),
+ MTK_FUNCTION(1, "DSI1_TE"),
+ MTK_FUNCTION(2, "SPI7_A_CSB")
+ ),
+ MTK_PIN(
+ 7, "GPIO7",
+ MTK_EINT_FUNCTION(0, 7),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO7"),
+ MTK_FUNCTION(2, "SPI7_A_MO"),
+ MTK_FUNCTION(3, "GPS_PPS0")
+ ),
+ MTK_PIN(
+ 8, "GPIO8",
+ MTK_EINT_FUNCTION(0, 8),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO8"),
+ MTK_FUNCTION(2, "SPI7_A_MI"),
+ MTK_FUNCTION(3, "EDP_TX_HPD")
+ ),
+ MTK_PIN(
+ 9, "GPIO9",
+ MTK_EINT_FUNCTION(0, 9),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO9"),
+ MTK_FUNCTION(3, "I2SIN1_LRCK"),
+ MTK_FUNCTION(7, "RG_TSFDC_LDO_REFSEL0")
+ ),
+ MTK_PIN(
+ 10, "GPIO10",
+ MTK_EINT_FUNCTION(0, 10),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO10"),
+ MTK_FUNCTION(3, "I2SOUT1_DO"),
+ MTK_FUNCTION(7, "RG_TSFDC_LDO_REFSEL1")
+ ),
+ MTK_PIN(
+ 11, "GPIO11",
+ MTK_EINT_FUNCTION(0, 11),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO11"),
+ MTK_FUNCTION(4, "FMI2S_B_BCK"),
+ MTK_FUNCTION(7, "DBG_MON_A30")
+ ),
+ MTK_PIN(
+ 12, "GPIO12",
+ MTK_EINT_FUNCTION(0, 12),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO12"),
+ MTK_FUNCTION(3, "I2SIN1_DI_B")
+ ),
+ MTK_PIN(
+ 13, "GPIO13",
+ MTK_EINT_FUNCTION(0, 13),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO13"),
+ MTK_FUNCTION(1, "EDP_TX_HPD"),
+ MTK_FUNCTION(2, "GPS_PPS1")
+ ),
+ MTK_PIN(
+ 14, "GPIO14",
+ MTK_EINT_FUNCTION(0, 14),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO14"),
+ MTK_FUNCTION(1, "SRCLKENA2"),
+ MTK_FUNCTION(2, "DSI2_TE"),
+ MTK_FUNCTION(3, "SPMI_P_TRIG_FLAG"),
+ MTK_FUNCTION(5, "MD_INT3"),
+ MTK_FUNCTION(6, "TP_GPIO8_AO")
+ ),
+ MTK_PIN(
+ 15, "GPIO15",
+ MTK_EINT_FUNCTION(0, 15),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO15"),
+ MTK_FUNCTION(1, "SRCLKENAI0"),
+ MTK_FUNCTION(2, "SPMI_M_TRIG_FLAG"),
+ MTK_FUNCTION(3, "UCTS0"),
+ MTK_FUNCTION(4, "MD_INT4"),
+ MTK_FUNCTION(5, "I2SOUT2_DO"),
+ MTK_FUNCTION(6, "TP_GPIO9_AO")
+ ),
+ MTK_PIN(
+ 16, "GPIO16",
+ MTK_EINT_FUNCTION(0, 16),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO16"),
+ MTK_FUNCTION(1, "SRCLKENAI1"),
+ MTK_FUNCTION(2, "DP_TX_HPD"),
+ MTK_FUNCTION(3, "URTS0"),
+ MTK_FUNCTION(4, "GPS_L5_ELNA_EN"),
+ MTK_FUNCTION(5, "KPROW2"),
+ MTK_FUNCTION(6, "TP_GPIO10_AO")
+ ),
+ MTK_PIN(
+ 17, "GPIO17",
+ MTK_EINT_FUNCTION(0, 17),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO17"),
+ MTK_FUNCTION(1, "MD_INT0"),
+ MTK_FUNCTION(2, "DP_OC_EN"),
+ MTK_FUNCTION(3, "UCTS1"),
+ MTK_FUNCTION(4, "MD_NTN_URXD1"),
+ MTK_FUNCTION(5, "KPCOL2"),
+ MTK_FUNCTION(6, "TP_GPIO11_AO")
+ ),
+ MTK_PIN(
+ 18, "GPIO18",
+ MTK_EINT_FUNCTION(0, 18),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO18"),
+ MTK_FUNCTION(1, "DMIC1_CLK"),
+ MTK_FUNCTION(2, "DP_RAUX_SBU1"),
+ MTK_FUNCTION(3, "URTS1"),
+ MTK_FUNCTION(4, "MD_NTN_UTXD1"),
+ MTK_FUNCTION(5, "I2SIN2_DI"),
+ MTK_FUNCTION(6, "TP_UTXD_GNSS_VLP")
+ ),
+ MTK_PIN(
+ 19, "GPIO19",
+ MTK_EINT_FUNCTION(0, 19),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO19"),
+ MTK_FUNCTION(1, "DMIC1_DAT"),
+ MTK_FUNCTION(2, "DP_RAUX_SBU2"),
+ MTK_FUNCTION(3, "CONN_TCXOENA_REQ"),
+ MTK_FUNCTION(4, "CLKM3_A"),
+ MTK_FUNCTION(5, "I2SIN2_BCK"),
+ MTK_FUNCTION(6, "TP_URXD_GNSS_VLP")
+ ),
+ MTK_PIN(
+ 20, "GPIO20",
+ MTK_EINT_FUNCTION(0, 20),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO20"),
+ MTK_FUNCTION(1, "IDDIG"),
+ MTK_FUNCTION(2, "LCM2_RST"),
+ MTK_FUNCTION(3, "GPS_PPS1"),
+ MTK_FUNCTION(4, "CLKM2_A")
+ ),
+ MTK_PIN(
+ 21, "GPIO21",
+ MTK_EINT_FUNCTION(0, 21),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO21"),
+ MTK_FUNCTION(1, "BPI_BUS11"),
+ MTK_FUNCTION(2, "PCIE_PERSTN_1P"),
+ MTK_FUNCTION(3, "DSI1_TE"),
+ MTK_FUNCTION(4, "DMIC_CLK"),
+ MTK_FUNCTION(5, "SCP_DMIC_CLK")
+ ),
+ MTK_PIN(
+ 22, "GPIO22",
+ MTK_EINT_FUNCTION(0, 22),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO22"),
+ MTK_FUNCTION(1, "BPI_BUS12"),
+ MTK_FUNCTION(2, "PCIE_CLKREQN_1P"),
+ MTK_FUNCTION(3, "DSI2_TE"),
+ MTK_FUNCTION(4, "DMIC_DAT"),
+ MTK_FUNCTION(5, "SCP_DMIC_DAT")
+ ),
+ MTK_PIN(
+ 23, "GPIO23",
+ MTK_EINT_FUNCTION(0, 23),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO23"),
+ MTK_FUNCTION(1, "BPI_BUS13"),
+ MTK_FUNCTION(2, "PCIE_WAKEN_1P"),
+ MTK_FUNCTION(3, "DSI3_TE"),
+ MTK_FUNCTION(4, "DMIC1_CLK"),
+ MTK_FUNCTION(5, "SCP_DMIC1_CLK")
+ ),
+ MTK_PIN(
+ 24, "GPIO24",
+ MTK_EINT_FUNCTION(0, 24),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO24"),
+ MTK_FUNCTION(1, "BPI_BUS14"),
+ MTK_FUNCTION(2, "LCM1_RST"),
+ MTK_FUNCTION(3, "AGPS_SYNC"),
+ MTK_FUNCTION(4, "DMIC1_DAT"),
+ MTK_FUNCTION(5, "SCP_DMIC1_DAT"),
+ MTK_FUNCTION(6, "DISP_PWM1")
+ ),
+ MTK_PIN(
+ 25, "GPIO25",
+ MTK_EINT_FUNCTION(0, 25),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO25"),
+ MTK_FUNCTION(1, "BPI_BUS15"),
+ MTK_FUNCTION(2, "LCM2_RST"),
+ MTK_FUNCTION(3, "SRCLKENAI1"),
+ MTK_FUNCTION(4, "DMIC2_CLK"),
+ MTK_FUNCTION(6, "DISP_PWM2")
+ ),
+ MTK_PIN(
+ 26, "GPIO26",
+ MTK_EINT_FUNCTION(0, 26),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO26"),
+ MTK_FUNCTION(1, "BPI_BUS16"),
+ MTK_FUNCTION(2, "LCM3_RST"),
+ MTK_FUNCTION(4, "DMIC2_DAT"),
+ MTK_FUNCTION(6, "DISP_PWM3")
+ ),
+ MTK_PIN(
+ 27, "GPIO27",
+ MTK_EINT_FUNCTION(0, 27),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO27"),
+ MTK_FUNCTION(1, "BPI_BUS17"),
+ MTK_FUNCTION(2, "UTXD4"),
+ MTK_FUNCTION(6, "DISP_PWM4"),
+ MTK_FUNCTION(7, "DBG_MON_A20")
+ ),
+ MTK_PIN(
+ 28, "GPIO28",
+ MTK_EINT_FUNCTION(0, 28),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO28"),
+ MTK_FUNCTION(1, "BPI_BUS18"),
+ MTK_FUNCTION(2, "URXD4"),
+ MTK_FUNCTION(3, "SPI2_A_MI"),
+ MTK_FUNCTION(4, "CLKM0_A"),
+ MTK_FUNCTION(7, "DBG_MON_A21")
+ ),
+ MTK_PIN(
+ 29, "GPIO29",
+ MTK_EINT_FUNCTION(0, 29),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO29"),
+ MTK_FUNCTION(1, "BPI_BUS19"),
+ MTK_FUNCTION(2, "MD_NTN_UTXD1"),
+ MTK_FUNCTION(3, "SPI2_A_MO"),
+ MTK_FUNCTION(4, "CLKM1_A"),
+ MTK_FUNCTION(6, "UCTS4"),
+ MTK_FUNCTION(7, "DBG_MON_A17")
+ ),
+ MTK_PIN(
+ 30, "GPIO30",
+ MTK_EINT_FUNCTION(0, 30),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO30"),
+ MTK_FUNCTION(1, "BPI_BUS20"),
+ MTK_FUNCTION(2, "MD_NTN_URXD1"),
+ MTK_FUNCTION(3, "SPI2_A_CLK"),
+ MTK_FUNCTION(4, "CLKM2_A"),
+ MTK_FUNCTION(5, "DSI3_HSYNC"),
+ MTK_FUNCTION(6, "URTS4"),
+ MTK_FUNCTION(7, "DBG_MON_A18")
+ ),
+ MTK_PIN(
+ 31, "GPIO31",
+ MTK_EINT_FUNCTION(0, 31),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO31"),
+ MTK_FUNCTION(1, "BPI_BUS21"),
+ MTK_FUNCTION(3, "SPI2_A_CSB"),
+ MTK_FUNCTION(4, "CLKM3_A"),
+ MTK_FUNCTION(6, "EDP_TX_HPD"),
+ MTK_FUNCTION(7, "DBG_MON_A19")
+ ),
+ MTK_PIN(
+ 32, "GPIO32",
+ MTK_EINT_FUNCTION(0, 32),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO32"),
+ MTK_FUNCTION(1, "LCM4_RST"),
+ MTK_FUNCTION(2, "DP_TX_HPD"),
+ MTK_FUNCTION(3, "SSPM_JTAG_TCK_VLP"),
+ MTK_FUNCTION(4, "ADSP_JTAG0_TCK"),
+ MTK_FUNCTION(5, "SCP_JTAG0_TCK_VLP"),
+ MTK_FUNCTION(6, "SPU0_TCK"),
+ MTK_FUNCTION(7, "IO_JTAG_TCK")
+ ),
+ MTK_PIN(
+ 33, "GPIO33",
+ MTK_EINT_FUNCTION(0, 33),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO33"),
+ MTK_FUNCTION(1, "DSI4_TE"),
+ MTK_FUNCTION(2, "DP_OC_EN"),
+ MTK_FUNCTION(3, "SSPM_JTAG_TRSTN_VLP"),
+ MTK_FUNCTION(4, "ADSP_JTAG0_TRSTN"),
+ MTK_FUNCTION(5, "SCP_JTAG0_TRSTN_VLP"),
+ MTK_FUNCTION(6, "SPU0_NTRST"),
+ MTK_FUNCTION(7, "IO_JTAG_TRSTN")
+ ),
+ MTK_PIN(
+ 34, "GPIO34",
+ MTK_EINT_FUNCTION(0, 34),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO34"),
+ MTK_FUNCTION(1, "UCTS5"),
+ MTK_FUNCTION(2, "DP_RAUX_SBU1"),
+ MTK_FUNCTION(3, "SSPM_JTAG_TDI_VLP"),
+ MTK_FUNCTION(4, "ADSP_JTAG0_TDI"),
+ MTK_FUNCTION(5, "SCP_JTAG0_TDI_VLP"),
+ MTK_FUNCTION(6, "SPU0_TDI"),
+ MTK_FUNCTION(7, "IO_JTAG_TDI")
+ ),
+ MTK_PIN(
+ 35, "GPIO35",
+ MTK_EINT_FUNCTION(0, 35),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO35"),
+ MTK_FUNCTION(1, "URTS5"),
+ MTK_FUNCTION(2, "DP_RAUX_SBU2"),
+ MTK_FUNCTION(3, "SSPM_JTAG_TDO_VLP"),
+ MTK_FUNCTION(4, "ADSP_JTAG0_TDO"),
+ MTK_FUNCTION(5, "SCP_JTAG0_TDO_VLP"),
+ MTK_FUNCTION(6, "SPU0_TDO"),
+ MTK_FUNCTION(7, "IO_JTAG_TDO")
+ ),
+ MTK_PIN(
+ 36, "GPIO36",
+ MTK_EINT_FUNCTION(0, 36),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO36"),
+ MTK_FUNCTION(1, "UTXD5"),
+ MTK_FUNCTION(3, "SSPM_JTAG_TMS_VLP"),
+ MTK_FUNCTION(4, "ADSP_JTAG0_TMS"),
+ MTK_FUNCTION(5, "SCP_JTAG0_TMS_VLP"),
+ MTK_FUNCTION(6, "SPU0_TMS"),
+ MTK_FUNCTION(7, "IO_JTAG_TMS")
+ ),
+ MTK_PIN(
+ 37, "GPIO37",
+ MTK_EINT_FUNCTION(0, 37),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO37"),
+ MTK_FUNCTION(1, "URXD5"),
+ MTK_FUNCTION(3, "MD_INT3"),
+ MTK_FUNCTION(4, "CLKM0_B"),
+ MTK_FUNCTION(5, "TP_GPIO5_AO"),
+ MTK_FUNCTION(6, "SPU0_UTX"),
+ MTK_FUNCTION(7, "DAP_MD32_SWCK")
+ ),
+ MTK_PIN(
+ 38, "GPIO38",
+ MTK_EINT_FUNCTION(0, 38),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO38"),
+ MTK_FUNCTION(2, "SPMI_P_TRIG_FLAG"),
+ MTK_FUNCTION(3, "MD_INT4"),
+ MTK_FUNCTION(4, "CLKM1_B"),
+ MTK_FUNCTION(5, "TP_GPIO6_AO"),
+ MTK_FUNCTION(6, "SPU0_URX"),
+ MTK_FUNCTION(7, "DAP_MD32_SWD")
+ ),
+ MTK_PIN(
+ 39, "GPIO39",
+ MTK_EINT_FUNCTION(0, 39),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO39"),
+ MTK_FUNCTION(1, "I2S_MCK0"),
+ MTK_FUNCTION(3, "GPS_PPS0"),
+ MTK_FUNCTION(4, "CONN_TCXOENA_REQ"),
+ MTK_FUNCTION(7, "DBG_MON_B12")
+ ),
+ MTK_PIN(
+ 40, "GPIO40",
+ MTK_EINT_FUNCTION(0, 40),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO40"),
+ MTK_FUNCTION(1, "I2SIN6_0_BCK"),
+ MTK_FUNCTION(3, "SPI4_B_CLK"),
+ MTK_FUNCTION(4, "UCTS2"),
+ MTK_FUNCTION(5, "CCU1_UTXD"),
+ MTK_FUNCTION(7, "DBG_MON_B13")
+ ),
+ MTK_PIN(
+ 41, "GPIO41",
+ MTK_EINT_FUNCTION(0, 41),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO41"),
+ MTK_FUNCTION(1, "I2SIN6_0_LRCK"),
+ MTK_FUNCTION(3, "SPI4_B_CSB"),
+ MTK_FUNCTION(4, "URTS2"),
+ MTK_FUNCTION(5, "CCU1_URXD"),
+ MTK_FUNCTION(7, "DBG_MON_B14")
+ ),
+ MTK_PIN(
+ 42, "GPIO42",
+ MTK_EINT_FUNCTION(0, 42),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO42"),
+ MTK_FUNCTION(1, "I2SIN6_0_DI"),
+ MTK_FUNCTION(3, "SPI4_B_MI"),
+ MTK_FUNCTION(4, "URXD2"),
+ MTK_FUNCTION(5, "CCU1_URTS"),
+ MTK_FUNCTION(6, "MD32_0_RXD"),
+ MTK_FUNCTION(7, "DBG_MON_B15")
+ ),
+ MTK_PIN(
+ 43, "GPIO43",
+ MTK_EINT_FUNCTION(0, 43),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO43"),
+ MTK_FUNCTION(1, "I2SOUT6_0_DO"),
+ MTK_FUNCTION(3, "SPI4_B_MO"),
+ MTK_FUNCTION(4, "UTXD2"),
+ MTK_FUNCTION(5, "CCU1_UCTS"),
+ MTK_FUNCTION(6, "MD32_0_TXD"),
+ MTK_FUNCTION(7, "DBG_MON_B16")
+ ),
+ MTK_PIN(
+ 44, "GPIO44",
+ MTK_EINT_FUNCTION(0, 44),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO44"),
+ MTK_FUNCTION(1, "MD_INT1_C2K_UIM0_HOT_PLUG"),
+ MTK_FUNCTION(3, "SPI3_A_CLK"),
+ MTK_FUNCTION(6, "TP_GPIO10_AO")
+ ),
+ MTK_PIN(
+ 45, "GPIO45",
+ MTK_EINT_FUNCTION(0, 45),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO45"),
+ MTK_FUNCTION(1, "MD_INT2_C2K_UIM1_HOT_PLUG"),
+ MTK_FUNCTION(2, "DSI2_HSYNC"),
+ MTK_FUNCTION(3, "SPI3_A_CSB"),
+ MTK_FUNCTION(4, "PWM_VLP"),
+ MTK_FUNCTION(6, "TP_GPIO11_AO")
+ ),
+ MTK_PIN(
+ 46, "GPIO46",
+ MTK_EINT_FUNCTION(0, 46),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO46"),
+ MTK_FUNCTION(1, "SCP_SCL4"),
+ MTK_FUNCTION(2, "PWM_VLP"),
+ MTK_FUNCTION(4, "SCP_ILDO_DTEST1_VLP"),
+ MTK_FUNCTION(5, "UFS_MPHY_SCL"),
+ MTK_FUNCTION(6, "TP_GPIO0_AO")
+ ),
+ MTK_PIN(
+ 47, "GPIO47",
+ MTK_EINT_FUNCTION(0, 47),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO47"),
+ MTK_FUNCTION(1, "SCP_SDA4"),
+ MTK_FUNCTION(4, "SCP_ILDO_DTEST2_VLP"),
+ MTK_FUNCTION(5, "UFS_MPHY_SDA"),
+ MTK_FUNCTION(6, "TP_GPIO1_AO")
+ ),
+ MTK_PIN(
+ 48, "GPIO48",
+ MTK_EINT_FUNCTION(0, 48),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO48"),
+ MTK_FUNCTION(1, "SCP_SCL5"),
+ MTK_FUNCTION(2, "PWM_VLP"),
+ MTK_FUNCTION(3, "CCU0_UTXD"),
+ MTK_FUNCTION(4, "SCP_ILDO_DTEST3_VLP"),
+ MTK_FUNCTION(6, "TP_GPIO2_AO")
+ ),
+ MTK_PIN(
+ 49, "GPIO49",
+ MTK_EINT_FUNCTION(0, 49),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO49"),
+ MTK_FUNCTION(1, "SCP_SDA5"),
+ MTK_FUNCTION(3, "CCU0_URXD"),
+ MTK_FUNCTION(4, "SCP_ILDO_DTEST4_VLP"),
+ MTK_FUNCTION(6, "TP_GPIO3_AO")
+ ),
+ MTK_PIN(
+ 50, "GPIO50",
+ MTK_EINT_FUNCTION(0, 50),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO50"),
+ MTK_FUNCTION(1, "SCP_SCL6"),
+ MTK_FUNCTION(2, "PWM_VLP"),
+ MTK_FUNCTION(3, "CCU0_URTS"),
+ MTK_FUNCTION(4, "DSI_HSYNC"),
+ MTK_FUNCTION(6, "TP_GPIO4_AO")
+ ),
+ MTK_PIN(
+ 51, "GPIO51",
+ MTK_EINT_FUNCTION(0, 51),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO51"),
+ MTK_FUNCTION(1, "SCP_SDA6"),
+ MTK_FUNCTION(3, "CCU0_UCTS"),
+ MTK_FUNCTION(4, "DSI1_HSYNC"),
+ MTK_FUNCTION(6, "TP_GPIO5_AO")
+ ),
+ MTK_PIN(
+ 52, "GPIO52",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO52"),
+ MTK_FUNCTION(1, "SCP_SCL1"),
+ MTK_FUNCTION(3, "TDM_DATA2")
+ ),
+ MTK_PIN(
+ 53, "GPIO53",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO53"),
+ MTK_FUNCTION(1, "SCP_SDA1"),
+ MTK_FUNCTION(3, "TDM_DATA3")
+ ),
+ MTK_PIN(
+ 54, "GPIO54",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO54"),
+ MTK_FUNCTION(1, "AUD_CLK_MOSI"),
+ MTK_FUNCTION(3, "TDM_MCK")
+ ),
+ MTK_PIN(
+ 55, "GPIO55",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO55"),
+ MTK_FUNCTION(1, "AUD_CLK_MISO"),
+ MTK_FUNCTION(2, "I2SOUT2_BCK"),
+ MTK_FUNCTION(3, "TDM_BCK")
+ ),
+ MTK_PIN(
+ 56, "GPIO56",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO56"),
+ MTK_FUNCTION(1, "AUD_DAT_MOSI0"),
+ MTK_FUNCTION(2, "I2SOUT2_LRCK"),
+ MTK_FUNCTION(3, "TDM_LRCK")
+ ),
+ MTK_PIN(
+ 57, "GPIO57",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO57"),
+ MTK_FUNCTION(1, "AUD_DAT_MOSI1"),
+ MTK_FUNCTION(2, "I2SOUT2_DO"),
+ MTK_FUNCTION(3, "TDM_DATA0")
+ ),
+ MTK_PIN(
+ 58, "GPIO58",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO58"),
+ MTK_FUNCTION(1, "AUD_DAT_MISO0"),
+ MTK_FUNCTION(3, "TDM_DATA1")
+ ),
+ MTK_PIN(
+ 59, "GPIO59",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO59"),
+ MTK_FUNCTION(1, "AUD_DAT_MISO1"),
+ MTK_FUNCTION(3, "I2SIN1_BCK")
+ ),
+ MTK_PIN(
+ 60, "GPIO60",
+ MTK_EINT_FUNCTION(0, 60),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO60"),
+ MTK_FUNCTION(1, "KPCOL0"),
+ MTK_FUNCTION(6, "TP_GPIO13_AO")
+ ),
+ MTK_PIN(
+ 61, "GPIO61",
+ MTK_EINT_FUNCTION(0, 61),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO61"),
+ MTK_FUNCTION(1, "MCU_M_PMIC_POC_I")
+ ),
+ MTK_PIN(
+ 62, "GPIO62",
+ MTK_EINT_FUNCTION(0, 62),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO62"),
+ MTK_FUNCTION(1, "MCU_B_PMIC_POC_I")
+ ),
+ MTK_PIN(
+ 63, "GPIO63",
+ MTK_EINT_FUNCTION(0, 63),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO63"),
+ MTK_FUNCTION(1, "MFG_PMIC_POC_I")
+ ),
+ MTK_PIN(
+ 64, "GPIO64",
+ MTK_EINT_FUNCTION(0, 64),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO64"),
+ MTK_FUNCTION(1, "PRE_UVLO")
+ ),
+ MTK_PIN(
+ 65, "GPIO65",
+ MTK_EINT_FUNCTION(0, 65),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO65"),
+ MTK_FUNCTION(1, "DPM2PMIC"),
+ MTK_FUNCTION(2, "SRCLKENA1")
+ ),
+ MTK_PIN(
+ 66, "GPIO66",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO66"),
+ MTK_FUNCTION(1, "WATCHDOG")
+ ),
+ MTK_PIN(
+ 67, "GPIO67",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO67"),
+ MTK_FUNCTION(1, "SRCLKENA0")
+ ),
+ MTK_PIN(
+ 68, "GPIO68",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO68"),
+ MTK_FUNCTION(1, "SCP_VREQ_VAO")
+ ),
+ MTK_PIN(
+ 69, "GPIO69",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO69"),
+ MTK_FUNCTION(1, "RTC32K_CK")
+ ),
+ MTK_PIN(
+ 70, "GPIO70",
+ MTK_EINT_FUNCTION(0, 70),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO70"),
+ MTK_FUNCTION(1, "CMFLASH0")
+ ),
+ MTK_PIN(
+ 71, "GPIO71",
+ MTK_EINT_FUNCTION(0, 71),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO71")
+ ),
+ MTK_PIN(
+ 72, "GPIO72",
+ MTK_EINT_FUNCTION(0, 72),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO72")
+ ),
+ MTK_PIN(
+ 73, "GPIO73",
+ MTK_EINT_FUNCTION(0, 73),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO73")
+ ),
+ MTK_PIN(
+ 74, "GPIO74",
+ MTK_EINT_FUNCTION(0, 74),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO74"),
+ MTK_FUNCTION(1, "DCXO_FPM_LPM")
+ ),
+ MTK_PIN(
+ 75, "GPIO75",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO75"),
+ MTK_FUNCTION(1, "SPMI_M_SCL")
+ ),
+ MTK_PIN(
+ 76, "GPIO76",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO76"),
+ MTK_FUNCTION(1, "SPMI_M_SDA")
+ ),
+ MTK_PIN(
+ 77, "GPIO77",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO77"),
+ MTK_FUNCTION(1, "SPMI_P_SCL")
+ ),
+ MTK_PIN(
+ 78, "GPIO78",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO78"),
+ MTK_FUNCTION(1, "SPMI_P_SDA")
+ ),
+ MTK_PIN(
+ 79, "GPIO79",
+ MTK_EINT_FUNCTION(0, 79),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO79"),
+ MTK_FUNCTION(1, "CMMCLK0"),
+ MTK_FUNCTION(2, "MD_INT4")
+ ),
+ MTK_PIN(
+ 80, "GPIO80",
+ MTK_EINT_FUNCTION(0, 80),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO80"),
+ MTK_FUNCTION(1, "CMMCLK1")
+ ),
+ MTK_PIN(
+ 81, "GPIO81",
+ MTK_EINT_FUNCTION(0, 81),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO81"),
+ MTK_FUNCTION(1, "SCP_SPI0_CK"),
+ MTK_FUNCTION(2, "SPI6_B_CLK"),
+ MTK_FUNCTION(3, "PWM_VLP"),
+ MTK_FUNCTION(4, "I2SOUT5_BCK"),
+ MTK_FUNCTION(6, "TP_GPIO0_AO")
+ ),
+ MTK_PIN(
+ 82, "GPIO82",
+ MTK_EINT_FUNCTION(0, 82),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO82"),
+ MTK_FUNCTION(1, "SCP_SPI0_CS"),
+ MTK_FUNCTION(2, "SPI6_B_CSB"),
+ MTK_FUNCTION(4, "I2SOUT5_LRCK"),
+ MTK_FUNCTION(6, "TP_GPIO1_AO")
+ ),
+ MTK_PIN(
+ 83, "GPIO83",
+ MTK_EINT_FUNCTION(0, 83),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO83"),
+ MTK_FUNCTION(1, "SCP_SPI0_MO"),
+ MTK_FUNCTION(2, "SPI6_B_MO"),
+ MTK_FUNCTION(4, "I2SOUT5_DATA0"),
+ MTK_FUNCTION(6, "TP_GPIO2_AO")
+ ),
+ MTK_PIN(
+ 84, "GPIO84",
+ MTK_EINT_FUNCTION(0, 84),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO84"),
+ MTK_FUNCTION(1, "SCP_SPI0_MI"),
+ MTK_FUNCTION(2, "SPI6_B_MI"),
+ MTK_FUNCTION(4, "I2SOUT5_DATA1"),
+ MTK_FUNCTION(6, "TP_GPIO3_AO")
+ ),
+ MTK_PIN(
+ 85, "GPIO85",
+ MTK_EINT_FUNCTION(0, 85),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO85"),
+ MTK_FUNCTION(1, "SCP_SPI1_CK"),
+ MTK_FUNCTION(2, "SPI7_B_CLK"),
+ MTK_FUNCTION(4, "I2SIN5_DATA0"),
+ MTK_FUNCTION(5, "PWM_VLP"),
+ MTK_FUNCTION(6, "TP_GPIO4_AO")
+ ),
+ MTK_PIN(
+ 86, "GPIO86",
+ MTK_EINT_FUNCTION(0, 86),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO86"),
+ MTK_FUNCTION(1, "SCP_SPI1_CS"),
+ MTK_FUNCTION(2, "SPI7_B_CSB"),
+ MTK_FUNCTION(4, "I2SIN5_DATA1"),
+ MTK_FUNCTION(6, "TP_GPIO5_AO")
+ ),
+ MTK_PIN(
+ 87, "GPIO87",
+ MTK_EINT_FUNCTION(0, 87),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO87"),
+ MTK_FUNCTION(1, "SCP_SPI1_MO"),
+ MTK_FUNCTION(2, "SPI7_B_MO"),
+ MTK_FUNCTION(4, "I2SIN5_BCK"),
+ MTK_FUNCTION(6, "TP_GPIO6_AO")
+ ),
+ MTK_PIN(
+ 88, "GPIO88",
+ MTK_EINT_FUNCTION(0, 88),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO88"),
+ MTK_FUNCTION(1, "SCP_SPI1_MI"),
+ MTK_FUNCTION(2, "SPI7_B_MI"),
+ MTK_FUNCTION(4, "I2SIN5_LRCK"),
+ MTK_FUNCTION(6, "TP_GPIO7_AO")
+ ),
+ MTK_PIN(
+ 89, "GPIO89",
+ MTK_EINT_FUNCTION(0, 89),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO89"),
+ MTK_FUNCTION(1, "DSI_TE"),
+ MTK_FUNCTION(2, "DSI1_TE"),
+ MTK_FUNCTION(7, "DBG_MON_B30")
+ ),
+ MTK_PIN(
+ 90, "GPIO90",
+ MTK_EINT_FUNCTION(0, 90),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO90"),
+ MTK_FUNCTION(1, "LCM_RST"),
+ MTK_FUNCTION(2, "LCM1_RST"),
+ MTK_FUNCTION(7, "DBG_MON_B31")
+ ),
+ MTK_PIN(
+ 91, "GPIO91",
+ MTK_EINT_FUNCTION(0, 91),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO91"),
+ MTK_FUNCTION(1, "CMFLASH2"),
+ MTK_FUNCTION(2, "SF_D0"),
+ MTK_FUNCTION(3, "SRCLKENAI1"),
+ MTK_FUNCTION(5, "KPCOL2"),
+ MTK_FUNCTION(6, "TP_GPIO11_AO")
+ ),
+ MTK_PIN(
+ 92, "GPIO92",
+ MTK_EINT_FUNCTION(0, 92),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO92"),
+ MTK_FUNCTION(1, "CMFLASH3"),
+ MTK_FUNCTION(2, "SF_D1"),
+ MTK_FUNCTION(4, "DISP_PWM1"),
+ MTK_FUNCTION(6, "TP_GPIO12_AO")
+ ),
+ MTK_PIN(
+ 93, "GPIO93",
+ MTK_EINT_FUNCTION(0, 93),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO93"),
+ MTK_FUNCTION(1, "CMFLASH1"),
+ MTK_FUNCTION(2, "SF_D2"),
+ MTK_FUNCTION(3, "SRCLKENAI0"),
+ MTK_FUNCTION(5, "KPROW2"),
+ MTK_FUNCTION(6, "TP_GPIO13_AO")
+ ),
+ MTK_PIN(
+ 94, "GPIO94",
+ MTK_EINT_FUNCTION(0, 94),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO94"),
+ MTK_FUNCTION(1, "I2S_MCK1"),
+ MTK_FUNCTION(2, "SF_D3"),
+ MTK_FUNCTION(4, "MD32_0_GPIO0"),
+ MTK_FUNCTION(5, "CLKM0_A"),
+ MTK_FUNCTION(6, "TP_GPIO14_AO"),
+ MTK_FUNCTION(7, "DBG_MON_B18")
+ ),
+ MTK_PIN(
+ 95, "GPIO95",
+ MTK_EINT_FUNCTION(0, 95),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO95"),
+ MTK_FUNCTION(1, "I2SIN1_BCK"),
+ MTK_FUNCTION(2, "I2SIN4_BCK"),
+ MTK_FUNCTION(3, "SPI6_A_CLK"),
+ MTK_FUNCTION(4, "MD32_1_GPIO0"),
+ MTK_FUNCTION(5, "CLKM1_A"),
+ MTK_FUNCTION(6, "TP_GPIO15_AO"),
+ MTK_FUNCTION(7, "DBG_MON_B19")
+ ),
+ MTK_PIN(
+ 96, "GPIO96",
+ MTK_EINT_FUNCTION(0, 96),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO96"),
+ MTK_FUNCTION(1, "I2SIN1_LRCK"),
+ MTK_FUNCTION(2, "I2SIN4_LRCK"),
+ MTK_FUNCTION(3, "SPI6_A_CSB"),
+ MTK_FUNCTION(4, "MD32_2_GPIO0"),
+ MTK_FUNCTION(5, "CLKM2_A"),
+ MTK_FUNCTION(7, "DBG_MON_B20")
+ ),
+ MTK_PIN(
+ 97, "GPIO97",
+ MTK_EINT_FUNCTION(0, 97),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO97"),
+ MTK_FUNCTION(1, "I2SIN1_DI_A"),
+ MTK_FUNCTION(2, "I2SIN4_DATA0"),
+ MTK_FUNCTION(3, "SPI6_A_MO"),
+ MTK_FUNCTION(4, "MD32_3_GPIO0"),
+ MTK_FUNCTION(5, "CLKM3_A"),
+ MTK_FUNCTION(7, "DBG_MON_B21")
+ ),
+ MTK_PIN(
+ 98, "GPIO98",
+ MTK_EINT_FUNCTION(0, 98),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO98"),
+ MTK_FUNCTION(1, "I2SOUT1_DO"),
+ MTK_FUNCTION(2, "I2SOUT4_DATA0"),
+ MTK_FUNCTION(3, "SPI6_A_MI"),
+ MTK_FUNCTION(7, "DBG_MON_B22")
+ ),
+ MTK_PIN(
+ 99, "GPIO99",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO99"),
+ MTK_FUNCTION(1, "SCL0"),
+ MTK_FUNCTION(2, "LCM2_RST"),
+ MTK_FUNCTION(3, "AUD_DAC_26M_CLK"),
+ MTK_FUNCTION(4, "SPU0_SCL"),
+ MTK_FUNCTION(7, "DBG_MON_B24")
+ ),
+ MTK_PIN(
+ 100, "GPIO100",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO100"),
+ MTK_FUNCTION(1, "SDA0"),
+ MTK_FUNCTION(2, "DSI2_TE"),
+ MTK_FUNCTION(4, "SPU0_SDA"),
+ MTK_FUNCTION(7, "DBG_MON_B25")
+ ),
+ MTK_PIN(
+ 101, "GPIO101",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO101"),
+ MTK_FUNCTION(1, "SCL10"),
+ MTK_FUNCTION(2, "SF_CS"),
+ MTK_FUNCTION(3, "SCP_DMIC1_CLK"),
+ MTK_FUNCTION(4, "I2SIN5_DATA2"),
+ MTK_FUNCTION(5, "SCP_SCL_OIS"),
+ MTK_FUNCTION(6, "TP_GPIO10_AO"),
+ MTK_FUNCTION(7, "DBG_MON_B28")
+ ),
+ MTK_PIN(
+ 102, "GPIO102",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO102"),
+ MTK_FUNCTION(1, "SDA10"),
+ MTK_FUNCTION(2, "SF_CK"),
+ MTK_FUNCTION(3, "SCP_DMIC1_DAT"),
+ MTK_FUNCTION(4, "I2SIN5_DATA3"),
+ MTK_FUNCTION(5, "SCP_SDA_OIS"),
+ MTK_FUNCTION(6, "TP_GPIO11_AO"),
+ MTK_FUNCTION(7, "DBG_MON_B29")
+ ),
+ MTK_PIN(
+ 103, "GPIO103",
+ MTK_EINT_FUNCTION(0, 103),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO103"),
+ MTK_FUNCTION(1, "DISP_PWM"),
+ MTK_FUNCTION(2, "DSI1_TE"),
+ MTK_FUNCTION(5, "I2S_MCK0"),
+ MTK_FUNCTION(7, "DBG_MON_B23")
+ ),
+ MTK_PIN(
+ 104, "GPIO104",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO104"),
+ MTK_FUNCTION(1, "SCL6"),
+ MTK_FUNCTION(2, "SPU1_SCL"),
+ MTK_FUNCTION(3, "AUD_DAC_26M_CLK"),
+ MTK_FUNCTION(4, "USB_DRVVBUS_2P"),
+ MTK_FUNCTION(5, "I2S_MCK1"),
+ MTK_FUNCTION(6, "IDDIG_2P"),
+ MTK_FUNCTION(7, "DBG_MON_B26")
+ ),
+ MTK_PIN(
+ 105, "GPIO105",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO105"),
+ MTK_FUNCTION(1, "SDA6"),
+ MTK_FUNCTION(2, "SPU1_SDA"),
+ MTK_FUNCTION(3, "DISP_PWM2"),
+ MTK_FUNCTION(4, "VBUSVALID_2P"),
+ MTK_FUNCTION(5, "I2S_MCK2"),
+ MTK_FUNCTION(6, "VBUSVALID_3P"),
+ MTK_FUNCTION(7, "DBG_MON_B27")
+ ),
+ MTK_PIN(
+ 106, "GPIO106",
+ MTK_EINT_FUNCTION(0, 106),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO106"),
+ MTK_FUNCTION(1, "SCP_SPI3_CK"),
+ MTK_FUNCTION(2, "SPI3_B_CLK"),
+ MTK_FUNCTION(3, "MD_UTXD0"),
+ MTK_FUNCTION(4, "TP_UTXD1_VLP"),
+ MTK_FUNCTION(5, "CONN_BG_GPS_MCU_UART0_TXD"),
+ MTK_FUNCTION(6, "TP_GPIO6_AO"),
+ MTK_FUNCTION(7, "DBG_MON_B0")
+ ),
+ MTK_PIN(
+ 107, "GPIO107",
+ MTK_EINT_FUNCTION(0, 107),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO107"),
+ MTK_FUNCTION(1, "SCP_SPI3_CS"),
+ MTK_FUNCTION(2, "SPI3_B_CSB"),
+ MTK_FUNCTION(3, "MD_URXD0"),
+ MTK_FUNCTION(4, "TP_URXD1_VLP"),
+ MTK_FUNCTION(5, "CONN_BG_GPS_MCU_UART0_RXD"),
+ MTK_FUNCTION(6, "TP_GPIO7_AO"),
+ MTK_FUNCTION(7, "DBG_MON_B1")
+ ),
+ MTK_PIN(
+ 108, "GPIO108",
+ MTK_EINT_FUNCTION(0, 108),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO108"),
+ MTK_FUNCTION(1, "SCP_SPI3_MO"),
+ MTK_FUNCTION(2, "SPI3_B_MO"),
+ MTK_FUNCTION(3, "MD_UTXD1"),
+ MTK_FUNCTION(4, "MD32PCM_UTXD_AO_VLP"),
+ MTK_FUNCTION(5, "CONN_BG_GPS_MCU_UART1_TXD"),
+ MTK_FUNCTION(6, "TP_GPIO8_AO"),
+ MTK_FUNCTION(7, "DBG_MON_B2")
+ ),
+ MTK_PIN(
+ 109, "GPIO109",
+ MTK_EINT_FUNCTION(0, 109),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO109"),
+ MTK_FUNCTION(1, "SCP_SPI3_MI"),
+ MTK_FUNCTION(2, "SPI3_B_MI"),
+ MTK_FUNCTION(3, "MD_URXD1"),
+ MTK_FUNCTION(4, "MD32PCM_URXD_AO_VLP"),
+ MTK_FUNCTION(5, "CONN_BG_GPS_MCU_UART1_RXD"),
+ MTK_FUNCTION(6, "TP_GPIO9_AO"),
+ MTK_FUNCTION(7, "DBG_MON_B3")
+ ),
+ MTK_PIN(
+ 110, "GPIO110",
+ MTK_EINT_FUNCTION(0, 110),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO110"),
+ MTK_FUNCTION(1, "SPI1_CLK"),
+ MTK_FUNCTION(2, "PWM_0"),
+ MTK_FUNCTION(3, "MD_UCTS0"),
+ MTK_FUNCTION(4, "TP_UCTS1_VLP"),
+ MTK_FUNCTION(6, "SPU0_GPIO_O"),
+ MTK_FUNCTION(7, "DBG_MON_B4")
+ ),
+ MTK_PIN(
+ 111, "GPIO111",
+ MTK_EINT_FUNCTION(0, 111),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO111"),
+ MTK_FUNCTION(1, "SPI1_CSB"),
+ MTK_FUNCTION(2, "PWM_1"),
+ MTK_FUNCTION(3, "MD_URTS0"),
+ MTK_FUNCTION(4, "TP_URTS1_VLP"),
+ MTK_FUNCTION(6, "SPU0_GPIO_I"),
+ MTK_FUNCTION(7, "DBG_MON_B5")
+ ),
+ MTK_PIN(
+ 112, "GPIO112",
+ MTK_EINT_FUNCTION(0, 112),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO112"),
+ MTK_FUNCTION(1, "SPI1_MO"),
+ MTK_FUNCTION(2, "PWM_2"),
+ MTK_FUNCTION(3, "MD_UCTS1"),
+ MTK_FUNCTION(6, "SPU1_GPIO_O"),
+ MTK_FUNCTION(7, "DBG_MON_B6")
+ ),
+ MTK_PIN(
+ 113, "GPIO113",
+ MTK_EINT_FUNCTION(0, 113),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO113"),
+ MTK_FUNCTION(1, "SPI1_MI"),
+ MTK_FUNCTION(2, "PWM_3"),
+ MTK_FUNCTION(3, "MD_URTS1"),
+ MTK_FUNCTION(6, "SPU1_GPIO_I"),
+ MTK_FUNCTION(7, "DBG_MON_B7")
+ ),
+ MTK_PIN(
+ 114, "GPIO114",
+ MTK_EINT_FUNCTION(0, 114),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO114"),
+ MTK_FUNCTION(1, "SPI0_SPU_CLK"),
+ MTK_FUNCTION(2, "SPI4_A_CLK"),
+ MTK_FUNCTION(5, "CONN_BG_GPS_MCU_DBG_UART_TX"),
+ MTK_FUNCTION(7, "DBG_MON_B8")
+ ),
+ MTK_PIN(
+ 115, "GPIO115",
+ MTK_EINT_FUNCTION(0, 115),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO115"),
+ MTK_FUNCTION(1, "SPI0_SPU_CSB"),
+ MTK_FUNCTION(2, "SPI4_A_CSB"),
+ MTK_FUNCTION(7, "DBG_MON_B9")
+ ),
+ MTK_PIN(
+ 116, "GPIO116",
+ MTK_EINT_FUNCTION(0, 116),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO116"),
+ MTK_FUNCTION(1, "SPI0_SPU_MO"),
+ MTK_FUNCTION(2, "SPI4_A_MO"),
+ MTK_FUNCTION(3, "LCM1_RST"),
+ MTK_FUNCTION(7, "DBG_MON_B10")
+ ),
+ MTK_PIN(
+ 117, "GPIO117",
+ MTK_EINT_FUNCTION(0, 117),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO117"),
+ MTK_FUNCTION(1, "SPI0_SPU_MI"),
+ MTK_FUNCTION(2, "SPI4_A_MI"),
+ MTK_FUNCTION(3, "DSI1_TE"),
+ MTK_FUNCTION(7, "DBG_MON_B11")
+ ),
+ MTK_PIN(
+ 118, "GPIO118",
+ MTK_EINT_FUNCTION(0, 118),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO118"),
+ MTK_FUNCTION(1, "SPI5_CLK"),
+ MTK_FUNCTION(2, "USB_DRVVBUS"),
+ MTK_FUNCTION(3, "DP_TX_HPD"),
+ MTK_FUNCTION(4, "AD_ILDO_DTEST0")
+ ),
+ MTK_PIN(
+ 119, "GPIO119",
+ MTK_EINT_FUNCTION(0, 119),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO119"),
+ MTK_FUNCTION(1, "SPI5_CSB"),
+ MTK_FUNCTION(2, "VBUSVALID"),
+ MTK_FUNCTION(3, "DP_OC_EN"),
+ MTK_FUNCTION(4, "AD_ILDO_DTEST1")
+ ),
+ MTK_PIN(
+ 120, "GPIO120",
+ MTK_EINT_FUNCTION(0, 120),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO120"),
+ MTK_FUNCTION(1, "SPI5_MO"),
+ MTK_FUNCTION(2, "LCM2_RST"),
+ MTK_FUNCTION(3, "DP_RAUX_SBU1"),
+ MTK_FUNCTION(4, "AD_ILDO_DTEST2"),
+ MTK_FUNCTION(6, "IDDIG_3P")
+ ),
+ MTK_PIN(
+ 121, "GPIO121",
+ MTK_EINT_FUNCTION(0, 121),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO121"),
+ MTK_FUNCTION(1, "SPI5_MI"),
+ MTK_FUNCTION(2, "DSI2_TE"),
+ MTK_FUNCTION(3, "DP_RAUX_SBU2"),
+ MTK_FUNCTION(4, "AD_ILDO_DTEST3"),
+ MTK_FUNCTION(6, "USB_DRVVBUS_3P"),
+ MTK_FUNCTION(7, "DBG_MON_B17")
+ ),
+ MTK_PIN(
+ 122, "GPIO122",
+ MTK_EINT_FUNCTION(0, 122),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO122"),
+ MTK_FUNCTION(1, "AP_GOOD"),
+ MTK_FUNCTION(2, "CONN_TCXOENA_REQ")
+ ),
+ MTK_PIN(
+ 123, "GPIO123",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO123"),
+ MTK_FUNCTION(1, "SCL3"),
+ MTK_FUNCTION(5, "I2SIN2_LRCK"),
+ MTK_FUNCTION(6, "TP_UTXD_MD_VCORE")
+ ),
+ MTK_PIN(
+ 124, "GPIO124",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO124"),
+ MTK_FUNCTION(1, "SDA3"),
+ MTK_FUNCTION(6, "TP_URXD_MD_VCORE")
+ ),
+ MTK_PIN(
+ 125, "GPIO125",
+ MTK_EINT_FUNCTION(0, 125),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO125"),
+ MTK_FUNCTION(1, "MSDC1_CLK"),
+ MTK_FUNCTION(2, "MD1_SIM2_SCLK"),
+ MTK_FUNCTION(3, "HFRP_JTAG0_TCK"),
+ MTK_FUNCTION(4, "UDI_TCK"),
+ MTK_FUNCTION(5, "CONN_BGF_DSP_L1_JCK"),
+ MTK_FUNCTION(6, "SCP_JTAG_LITTLE_TCK_VLP"),
+ MTK_FUNCTION(7, "JTCK2_SEL1")
+ ),
+ MTK_PIN(
+ 126, "GPIO126",
+ MTK_EINT_FUNCTION(0, 126),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO126"),
+ MTK_FUNCTION(1, "MSDC1_CMD"),
+ MTK_FUNCTION(3, "HFRP_JTAG0_TMS"),
+ MTK_FUNCTION(4, "UDI_TMS"),
+ MTK_FUNCTION(5, "CONN_BGF_DSP_L1_JMS"),
+ MTK_FUNCTION(6, "SCP_JTAG_LITTLE_TMS_VLP"),
+ MTK_FUNCTION(7, "JTMS2_SEL1")
+ ),
+ MTK_PIN(
+ 127, "GPIO127",
+ MTK_EINT_FUNCTION(0, 127),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO127"),
+ MTK_FUNCTION(1, "MSDC1_DAT0"),
+ MTK_FUNCTION(2, "MD1_SIM2_SRST"),
+ MTK_FUNCTION(3, "HFRP_JTAG0_TDI"),
+ MTK_FUNCTION(4, "UDI_TDI_0"),
+ MTK_FUNCTION(5, "CONN_BGF_DSP_L1_JDI"),
+ MTK_FUNCTION(6, "SCP_JTAG_LITTLE_TDI_VLP"),
+ MTK_FUNCTION(7, "JTDI2_SEL1")
+ ),
+ MTK_PIN(
+ 128, "GPIO128",
+ MTK_EINT_FUNCTION(0, 128),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO128"),
+ MTK_FUNCTION(1, "MSDC1_DAT1"),
+ MTK_FUNCTION(2, "MD1_SIM2_SIO"),
+ MTK_FUNCTION(3, "HFRP_JTAG0_TDO"),
+ MTK_FUNCTION(4, "UDI_TDO_0"),
+ MTK_FUNCTION(5, "CONN_BGF_DSP_L1_JDO"),
+ MTK_FUNCTION(6, "SCP_JTAG_LITTLE_TDO_VLP"),
+ MTK_FUNCTION(7, "JTDO2_SEL1")
+ ),
+ MTK_PIN(
+ 129, "GPIO129",
+ MTK_EINT_FUNCTION(0, 129),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO129"),
+ MTK_FUNCTION(1, "MSDC1_DAT2"),
+ MTK_FUNCTION(2, "DSI2_HSYNC"),
+ MTK_FUNCTION(3, "HFRP_JTAG0_TRSTN"),
+ MTK_FUNCTION(4, "UDI_NTRST"),
+ MTK_FUNCTION(6, "SCP_JTAG_LITTLE_TRSTN_VLP"),
+ MTK_FUNCTION(7, "JTRSTN2_SEL1")
+ ),
+ MTK_PIN(
+ 130, "GPIO130",
+ MTK_EINT_FUNCTION(0, 130),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO130"),
+ MTK_FUNCTION(1, "MSDC1_DAT3"),
+ MTK_FUNCTION(2, "DSI3_HSYNC"),
+ MTK_FUNCTION(5, "CONN_BGF_DSP_L1_JINTP")
+ ),
+ MTK_PIN(
+ 131, "GPIO131",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO131"),
+ MTK_FUNCTION(1, "MD1_SIM2_SCLK"),
+ MTK_FUNCTION(2, "MD1_SIM1_SCLK"),
+ MTK_FUNCTION(3, "MCUPM_JTAG_TDI"),
+ MTK_FUNCTION(4, "CLKM0_A"),
+ MTK_FUNCTION(5, "CONN_BGF_DSP_L5_JDI"),
+ MTK_FUNCTION(6, "TSFDC_SCK"),
+ MTK_FUNCTION(7, "SCP_JTAG0_TDI_VCORE")
+ ),
+ MTK_PIN(
+ 132, "GPIO132",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO132"),
+ MTK_FUNCTION(1, "MD1_SIM2_SRST"),
+ MTK_FUNCTION(2, "MD1_SIM1_SRST"),
+ MTK_FUNCTION(3, "MCUPM_JTAG_TMS"),
+ MTK_FUNCTION(4, "CLKM1_B"),
+ MTK_FUNCTION(5, "CONN_BGF_DSP_L5_JMS"),
+ MTK_FUNCTION(6, "TSFDC_SDI"),
+ MTK_FUNCTION(7, "SCP_JTAG0_TMS_VCORE")
+ ),
+ MTK_PIN(
+ 133, "GPIO133",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO133"),
+ MTK_FUNCTION(1, "MD1_SIM2_SIO"),
+ MTK_FUNCTION(2, "MD1_SIM1_SIO"),
+ MTK_FUNCTION(3, "MCUPM_JTAG_TDO"),
+ MTK_FUNCTION(5, "CONN_BGF_DSP_L5_JDO"),
+ MTK_FUNCTION(6, "TSFDC_SCF"),
+ MTK_FUNCTION(7, "SCP_JTAG0_TDO_VCORE")
+ ),
+ MTK_PIN(
+ 134, "GPIO134",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO134"),
+ MTK_FUNCTION(1, "MD1_SIM1_SCLK"),
+ MTK_FUNCTION(2, "MD1_SIM2_SCLK"),
+ MTK_FUNCTION(6, "TSFDC_26M")
+ ),
+ MTK_PIN(
+ 135, "GPIO135",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO135"),
+ MTK_FUNCTION(1, "MD1_SIM1_SRST"),
+ MTK_FUNCTION(2, "MD1_SIM2_SRST"),
+ MTK_FUNCTION(3, "MCUPM_JTAG_TCK"),
+ MTK_FUNCTION(5, "CONN_BGF_DSP_L5_JCK"),
+ MTK_FUNCTION(6, "TSFDC_SDO"),
+ MTK_FUNCTION(7, "SCP_JTAG0_TCK_VCORE")
+ ),
+ MTK_PIN(
+ 136, "GPIO136",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO136"),
+ MTK_FUNCTION(1, "MD1_SIM1_SIO"),
+ MTK_FUNCTION(2, "MD1_SIM2_SIO"),
+ MTK_FUNCTION(3, "MCUPM_JTAG_TRSTN"),
+ MTK_FUNCTION(5, "CONN_BGF_DSP_L5_JINTP"),
+ MTK_FUNCTION(6, "TSFDC_FOUT"),
+ MTK_FUNCTION(7, "SCP_JTAG0_TRSTN_VCORE")
+ ),
+ MTK_PIN(
+ 137, "GPIO137",
+ MTK_EINT_FUNCTION(0, 137),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO137"),
+ MTK_FUNCTION(1, "MIPI0_D_SCLK"),
+ MTK_FUNCTION(2, "BPI_BUS16"),
+ MTK_FUNCTION(4, "EXT_FRAME_SYNC"),
+ MTK_FUNCTION(6, "SPM_JTAG_TRSTN_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A0")
+ ),
+ MTK_PIN(
+ 138, "GPIO138",
+ MTK_EINT_FUNCTION(0, 138),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO138"),
+ MTK_FUNCTION(1, "MIPI0_D_SDATA"),
+ MTK_FUNCTION(2, "BPI_BUS17"),
+ MTK_FUNCTION(4, "PCM0_LRCK"),
+ MTK_FUNCTION(6, "SPM_JTAG_TCK_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A1")
+ ),
+ MTK_PIN(
+ 139, "GPIO139",
+ MTK_EINT_FUNCTION(0, 139),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO139"),
+ MTK_FUNCTION(1, "MIPI1_D_SCLK"),
+ MTK_FUNCTION(2, "BPI_BUS18"),
+ MTK_FUNCTION(4, "MD_GPS_BLANK"),
+ MTK_FUNCTION(6, "SPM_JTAG_TMS_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A2")
+ ),
+ MTK_PIN(
+ 140, "GPIO140",
+ MTK_EINT_FUNCTION(0, 140),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO140"),
+ MTK_FUNCTION(1, "MIPI1_D_SDATA"),
+ MTK_FUNCTION(2, "BPI_BUS19"),
+ MTK_FUNCTION(4, "MD_URXD1_CONN"),
+ MTK_FUNCTION(6, "SPM_JTAG_TDO_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A3")
+ ),
+ MTK_PIN(
+ 141, "GPIO141",
+ MTK_EINT_FUNCTION(0, 141),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO141"),
+ MTK_FUNCTION(1, "MIPI2_D_SCLK"),
+ MTK_FUNCTION(2, "BPI_BUS20"),
+ MTK_FUNCTION(4, "MD_UTXD1_CONN"),
+ MTK_FUNCTION(6, "SPM_JTAG_TDI_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A4")
+ ),
+ MTK_PIN(
+ 142, "GPIO142",
+ MTK_EINT_FUNCTION(0, 142),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO142"),
+ MTK_FUNCTION(1, "MIPI2_D_SDATA"),
+ MTK_FUNCTION(2, "BPI_BUS21"),
+ MTK_FUNCTION(6, "SSPM_JTAG_TRSTN_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A5")
+ ),
+ MTK_PIN(
+ 143, "GPIO143",
+ MTK_EINT_FUNCTION(0, 143),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO143"),
+ MTK_FUNCTION(1, "MIPI3_D_SCLK"),
+ MTK_FUNCTION(2, "BPI_BUS22"),
+ MTK_FUNCTION(4, "TP_UTXD_GNSS_VLP"),
+ MTK_FUNCTION(5, "MD_UTXD1_CONN"),
+ MTK_FUNCTION(6, "SSPM_JTAG_TCK_VCORE")
+ ),
+ MTK_PIN(
+ 144, "GPIO144",
+ MTK_EINT_FUNCTION(0, 144),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO144"),
+ MTK_FUNCTION(1, "MIPI3_D_SDATA"),
+ MTK_FUNCTION(2, "BPI_BUS23"),
+ MTK_FUNCTION(4, "TP_URXD_GNSS_VLP"),
+ MTK_FUNCTION(5, "MD_URXD1_CONN"),
+ MTK_FUNCTION(6, "SSPM_JTAG_TMS_VCORE")
+ ),
+ MTK_PIN(
+ 145, "GPIO145",
+ MTK_EINT_FUNCTION(0, 145),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO145"),
+ MTK_FUNCTION(1, "BPI_BUS0"),
+ MTK_FUNCTION(4, "PCIE_WAKEN_1P"),
+ MTK_FUNCTION(6, "SSPM_JTAG_TDO_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A10")
+ ),
+ MTK_PIN(
+ 146, "GPIO146",
+ MTK_EINT_FUNCTION(0, 146),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO146"),
+ MTK_FUNCTION(1, "BPI_BUS1"),
+ MTK_FUNCTION(4, "PCIE_PERSTN_1P"),
+ MTK_FUNCTION(6, "SSPM_JTAG_TDI_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A11")
+ ),
+ MTK_PIN(
+ 147, "GPIO147",
+ MTK_EINT_FUNCTION(0, 147),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO147"),
+ MTK_FUNCTION(1, "BPI_BUS2"),
+ MTK_FUNCTION(2, "AUD_DAC_26M_CLK"),
+ MTK_FUNCTION(4, "PCIE_CLKREQN_1P"),
+ MTK_FUNCTION(6, "SCP_JTAG_LITTLE_TRSTN_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A12")
+ ),
+ MTK_PIN(
+ 148, "GPIO148",
+ MTK_EINT_FUNCTION(0, 148),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO148"),
+ MTK_FUNCTION(1, "BPI_BUS3"),
+ MTK_FUNCTION(2, "AUD_DAC_26M_CLK"),
+ MTK_FUNCTION(4, "TP_UTXD_MD_VLP"),
+ MTK_FUNCTION(5, "TP_GPIO0_AO"),
+ MTK_FUNCTION(6, "SCP_JTAG_LITTLE_TCK_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A13")
+ ),
+ MTK_PIN(
+ 149, "GPIO149",
+ MTK_EINT_FUNCTION(0, 149),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO149"),
+ MTK_FUNCTION(1, "BPI_BUS4"),
+ MTK_FUNCTION(2, "EXT_FRAME_SYNC"),
+ MTK_FUNCTION(4, "TP_URXD_MD_VLP"),
+ MTK_FUNCTION(5, "TP_GPIO1_AO"),
+ MTK_FUNCTION(6, "SCP_JTAG_LITTLE_TMS_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A14")
+ ),
+ MTK_PIN(
+ 150, "GPIO150",
+ MTK_EINT_FUNCTION(0, 150),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO150"),
+ MTK_FUNCTION(1, "BPI_BUS5"),
+ MTK_FUNCTION(2, "GPS_PPS0"),
+ MTK_FUNCTION(5, "TP_GPIO2_AO"),
+ MTK_FUNCTION(6, "SCP_JTAG_LITTLE_TDO_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A15")
+ ),
+ MTK_PIN(
+ 151, "GPIO151",
+ MTK_EINT_FUNCTION(0, 151),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO151"),
+ MTK_FUNCTION(1, "BPI_BUS6"),
+ MTK_FUNCTION(2, "GPS_PPS1"),
+ MTK_FUNCTION(5, "TP_GPIO3_AO"),
+ MTK_FUNCTION(6, "SCP_JTAG_LITTLE_TDI_VCORE")
+ ),
+ MTK_PIN(
+ 152, "GPIO152",
+ MTK_EINT_FUNCTION(0, 152),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO152"),
+ MTK_FUNCTION(1, "BPI_BUS7"),
+ MTK_FUNCTION(2, "EDP_TX_HPD"),
+ MTK_FUNCTION(5, "AGPS_SYNC"),
+ MTK_FUNCTION(6, "SSPM_UTXD_AO_VCORE")
+ ),
+ MTK_PIN(
+ 153, "GPIO153",
+ MTK_EINT_FUNCTION(0, 153),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO153"),
+ MTK_FUNCTION(1, "MD_UCNT_A_TGL"),
+ MTK_FUNCTION(6, "TP_URTS1_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A8")
+ ),
+ MTK_PIN(
+ 154, "GPIO154",
+ MTK_EINT_FUNCTION(0, 154),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO154"),
+ MTK_FUNCTION(1, "DIGRF_IRQ"),
+ MTK_FUNCTION(6, "TP_UCTS1_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A9")
+ ),
+ MTK_PIN(
+ 155, "GPIO155",
+ MTK_EINT_FUNCTION(0, 155),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO155"),
+ MTK_FUNCTION(1, "MIPI_M_SCLK"),
+ MTK_FUNCTION(4, "UCTS2"),
+ MTK_FUNCTION(6, "TP_UTXD_CONSYS_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A6")
+ ),
+ MTK_PIN(
+ 156, "GPIO156",
+ MTK_EINT_FUNCTION(0, 156),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO156"),
+ MTK_FUNCTION(1, "MIPI_M_SDATA"),
+ MTK_FUNCTION(4, "URTS2"),
+ MTK_FUNCTION(6, "TP_URXD_CONSYS_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A7")
+ ),
+ MTK_PIN(
+ 157, "GPIO157",
+ MTK_EINT_FUNCTION(0, 157),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO157"),
+ MTK_FUNCTION(1, "BPI_BUS8"),
+ MTK_FUNCTION(4, "UTXD2"),
+ MTK_FUNCTION(5, "CLKM0_A"),
+ MTK_FUNCTION(6, "SSPM_URXD_AO_VCORE"),
+ MTK_FUNCTION(7, "DBG_MON_A16")
+ ),
+ MTK_PIN(
+ 158, "GPIO158",
+ MTK_EINT_FUNCTION(0, 158),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO158"),
+ MTK_FUNCTION(1, "BPI_BUS9"),
+ MTK_FUNCTION(4, "URXD2"),
+ MTK_FUNCTION(5, "CLKM1_A"),
+ MTK_FUNCTION(6, "TP_UTXD1_VCORE")
+ ),
+ MTK_PIN(
+ 159, "GPIO159",
+ MTK_EINT_FUNCTION(0, 159),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO159"),
+ MTK_FUNCTION(1, "BPI_BUS10"),
+ MTK_FUNCTION(2, "MD_INT0"),
+ MTK_FUNCTION(3, "SRCLKENAI1"),
+ MTK_FUNCTION(5, "CLKM2_A"),
+ MTK_FUNCTION(6, "TP_URXD1_VCORE")
+ ),
+ MTK_PIN(
+ 160, "GPIO160",
+ MTK_EINT_FUNCTION(0, 160),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO160"),
+ MTK_FUNCTION(1, "UTXD0"),
+ MTK_FUNCTION(2, "MD_UTXD1"),
+ MTK_FUNCTION(5, "MBISTREADEN_TRIGGER"),
+ MTK_FUNCTION(6, "CONN_BG_GPS_MCU_DBG_UART_TX")
+ ),
+ MTK_PIN(
+ 161, "GPIO161",
+ MTK_EINT_FUNCTION(0, 161),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO161"),
+ MTK_FUNCTION(1, "URXD0"),
+ MTK_FUNCTION(2, "MD_URXD1"),
+ MTK_FUNCTION(5, "MBISTWRITEEN_TRIGGER")
+ ),
+ MTK_PIN(
+ 162, "GPIO162",
+ MTK_EINT_FUNCTION(0, 162),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO162"),
+ MTK_FUNCTION(1, "UTXD1"),
+ MTK_FUNCTION(2, "MD_UTXD0"),
+ MTK_FUNCTION(3, "TP_UTXD1_VLP"),
+ MTK_FUNCTION(4, "ADSP_UTXD0"),
+ MTK_FUNCTION(5, "SSPM_UTXD_AO_VLP"),
+ MTK_FUNCTION(6, "HFRP_UTXD1")
+ ),
+ MTK_PIN(
+ 163, "GPIO163",
+ MTK_EINT_FUNCTION(0, 163),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO163"),
+ MTK_FUNCTION(1, "URXD1"),
+ MTK_FUNCTION(2, "MD_URXD0"),
+ MTK_FUNCTION(3, "TP_URXD1_VLP"),
+ MTK_FUNCTION(4, "ADSP_URXD0"),
+ MTK_FUNCTION(5, "SSPM_URXD_AO_VLP"),
+ MTK_FUNCTION(6, "HFRP_URXD1")
+ ),
+ MTK_PIN(
+ 164, "GPIO164",
+ MTK_EINT_FUNCTION(0, 164),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO164"),
+ MTK_FUNCTION(1, "SCP_SCL0"),
+ MTK_FUNCTION(6, "TP_GPIO0_AO"),
+ MTK_FUNCTION(7, "DBG_MON_A22")
+ ),
+ MTK_PIN(
+ 165, "GPIO165",
+ MTK_EINT_FUNCTION(0, 165),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO165"),
+ MTK_FUNCTION(1, "SCP_SDA0"),
+ MTK_FUNCTION(6, "TP_GPIO1_AO"),
+ MTK_FUNCTION(7, "DBG_MON_A23")
+ ),
+ MTK_PIN(
+ 166, "GPIO166",
+ MTK_EINT_FUNCTION(0, 166),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO166"),
+ MTK_FUNCTION(1, "SCP_SCL2"),
+ MTK_FUNCTION(6, "TP_GPIO2_AO"),
+ MTK_FUNCTION(7, "DBG_MON_A24")
+ ),
+ MTK_PIN(
+ 167, "GPIO167",
+ MTK_EINT_FUNCTION(0, 167),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO167"),
+ MTK_FUNCTION(1, "SCP_SDA2"),
+ MTK_FUNCTION(6, "TP_GPIO3_AO"),
+ MTK_FUNCTION(7, "DBG_MON_A25")
+ ),
+ MTK_PIN(
+ 168, "GPIO168",
+ MTK_EINT_FUNCTION(0, 168),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO168"),
+ MTK_FUNCTION(1, "SCP_SPI2_CK"),
+ MTK_FUNCTION(2, "SPI2_B_CLK"),
+ MTK_FUNCTION(3, "PWM_VLP"),
+ MTK_FUNCTION(4, "SCP_SCL2"),
+ MTK_FUNCTION(7, "DBG_MON_A26")
+ ),
+ MTK_PIN(
+ 169, "GPIO169",
+ MTK_EINT_FUNCTION(0, 169),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO169"),
+ MTK_FUNCTION(1, "SCP_SPI2_CS"),
+ MTK_FUNCTION(2, "SPI2_B_CSB"),
+ MTK_FUNCTION(7, "DBG_MON_A27")
+ ),
+ MTK_PIN(
+ 170, "GPIO170",
+ MTK_EINT_FUNCTION(0, 170),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO170"),
+ MTK_FUNCTION(1, "SCP_SPI2_MO"),
+ MTK_FUNCTION(2, "SPI2_B_MO"),
+ MTK_FUNCTION(4, "SCP_SDA2"),
+ MTK_FUNCTION(7, "DBG_MON_A28")
+ ),
+ MTK_PIN(
+ 171, "GPIO171",
+ MTK_EINT_FUNCTION(0, 171),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO171"),
+ MTK_FUNCTION(1, "SCP_SPI2_MI"),
+ MTK_FUNCTION(2, "SPI2_B_MI"),
+ MTK_FUNCTION(7, "DBG_MON_A29")
+ ),
+ MTK_PIN(
+ 172, "GPIO172",
+ MTK_EINT_FUNCTION(0, 172),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO172"),
+ MTK_FUNCTION(1, "CONN_TCXOENA_REQ")
+ ),
+ MTK_PIN(
+ 173, "GPIO173",
+ MTK_EINT_FUNCTION(0, 173),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO173"),
+ MTK_FUNCTION(1, "CMFLASH3"),
+ MTK_FUNCTION(2, "PWM_3"),
+ MTK_FUNCTION(3, "MD_GPS_L5_BLANK"),
+ MTK_FUNCTION(4, "CLKM1_A"),
+ MTK_FUNCTION(7, "DBG_MON_A31")
+ ),
+ MTK_PIN(
+ 174, "GPIO174",
+ MTK_EINT_FUNCTION(0, 174),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO174"),
+ MTK_FUNCTION(1, "CMFLASH0"),
+ MTK_FUNCTION(2, "PWM_0"),
+ MTK_FUNCTION(3, "VBUSVALID_1P"),
+ MTK_FUNCTION(4, "MD32_2_RXD"),
+ MTK_FUNCTION(5, "DISP_PWM3")
+ ),
+ MTK_PIN(
+ 175, "GPIO175",
+ MTK_EINT_FUNCTION(0, 175),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO175"),
+ MTK_FUNCTION(1, "CMFLASH1"),
+ MTK_FUNCTION(2, "PWM_1"),
+ MTK_FUNCTION(3, "EDP_TX_HPD"),
+ MTK_FUNCTION(4, "MD32_2_TXD"),
+ MTK_FUNCTION(5, "DISP_PWM4")
+ ),
+ MTK_PIN(
+ 176, "GPIO176",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO176"),
+ MTK_FUNCTION(1, "SCL5"),
+ MTK_FUNCTION(2, "LCM3_RST"),
+ MTK_FUNCTION(4, "MD_URXD1_CONN"),
+ MTK_FUNCTION(6, "TP_UTXD_GNSS_VCORE")
+ ),
+ MTK_PIN(
+ 177, "GPIO177",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO177"),
+ MTK_FUNCTION(1, "SDA5"),
+ MTK_FUNCTION(2, "DSI3_TE"),
+ MTK_FUNCTION(4, "MD_UTXD1_CONN"),
+ MTK_FUNCTION(6, "TP_URXD_GNSS_VCORE")
+ ),
+ MTK_PIN(
+ 178, "GPIO178",
+ MTK_EINT_FUNCTION(0, 178),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO178"),
+ MTK_FUNCTION(1, "DMIC_CLK"),
+ MTK_FUNCTION(2, "SCP_DMIC_CLK"),
+ MTK_FUNCTION(3, "SRCLKENAI0"),
+ MTK_FUNCTION(4, "CLKM2_B"),
+ MTK_FUNCTION(5, "TP_GPIO7_AO"),
+ MTK_FUNCTION(6, "SPU1_UTX"),
+ MTK_FUNCTION(7, "DAP_SONIC_SWCK")
+ ),
+ MTK_PIN(
+ 179, "GPIO179",
+ MTK_EINT_FUNCTION(0, 179),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO179"),
+ MTK_FUNCTION(1, "DMIC_DAT"),
+ MTK_FUNCTION(2, "SCP_DMIC_DAT"),
+ MTK_FUNCTION(3, "SRCLKENAI1"),
+ MTK_FUNCTION(4, "CLKM3_B"),
+ MTK_FUNCTION(5, "TP_GPIO8_AO"),
+ MTK_FUNCTION(6, "SPU1_URX"),
+ MTK_FUNCTION(7, "DAP_SONIC_SWD")
+ ),
+ MTK_PIN(
+ 180, "GPIO180",
+ MTK_EINT_FUNCTION(0, 180),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO180"),
+ MTK_FUNCTION(1, "IDDIG_1P"),
+ MTK_FUNCTION(2, "CMVREF0"),
+ MTK_FUNCTION(3, "GPS_PPS1"),
+ MTK_FUNCTION(4, "GPS_L5_ELNA_EN"),
+ MTK_FUNCTION(5, "DISP_PWM1")
+ ),
+ MTK_PIN(
+ 181, "GPIO181",
+ MTK_EINT_FUNCTION(0, 181),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO181"),
+ MTK_FUNCTION(1, "USB_DRVVBUS_1P"),
+ MTK_FUNCTION(2, "CMVREF1"),
+ MTK_FUNCTION(3, "MFG_EB_JTAG_TRSTN"),
+ MTK_FUNCTION(4, "ADSP_JTAG1_TRSTN"),
+ MTK_FUNCTION(5, "HFRP_JTAG1_TRSTN"),
+ MTK_FUNCTION(6, "SPU1_NTRST"),
+ MTK_FUNCTION(7, "CONN_BG_GPS_MCU_TRST_B")
+ ),
+ MTK_PIN(
+ 182, "GPIO182",
+ MTK_EINT_FUNCTION(0, 182),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO182"),
+ MTK_FUNCTION(1, "SCL11"),
+ MTK_FUNCTION(2, "CMVREF2"),
+ MTK_FUNCTION(3, "MFG_EB_JTAG_TCK"),
+ MTK_FUNCTION(4, "ADSP_JTAG1_TCK"),
+ MTK_FUNCTION(5, "HFRP_JTAG1_TCK"),
+ MTK_FUNCTION(6, "SPU1_TCK"),
+ MTK_FUNCTION(7, "CONN_BG_GPS_MCU_TCK")
+ ),
+ MTK_PIN(
+ 183, "GPIO183",
+ MTK_EINT_FUNCTION(0, 183),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO183"),
+ MTK_FUNCTION(1, "SDA11"),
+ MTK_FUNCTION(2, "CMVREF3"),
+ MTK_FUNCTION(3, "MFG_EB_JTAG_TMS"),
+ MTK_FUNCTION(4, "ADSP_JTAG1_TMS"),
+ MTK_FUNCTION(5, "HFRP_JTAG1_TMS"),
+ MTK_FUNCTION(6, "SPU1_TMS"),
+ MTK_FUNCTION(7, "CONN_BG_GPS_MCU_TMS")
+ ),
+ MTK_PIN(
+ 184, "GPIO184",
+ MTK_EINT_FUNCTION(0, 184),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO184"),
+ MTK_FUNCTION(1, "SCL12"),
+ MTK_FUNCTION(2, "CMVREF4"),
+ MTK_FUNCTION(3, "MFG_EB_JTAG_TDO"),
+ MTK_FUNCTION(4, "ADSP_JTAG1_TDO"),
+ MTK_FUNCTION(5, "HFRP_JTAG1_TDO"),
+ MTK_FUNCTION(6, "SPU1_TDO"),
+ MTK_FUNCTION(7, "CONN_BG_GPS_MCU_TDO")
+ ),
+ MTK_PIN(
+ 185, "GPIO185",
+ MTK_EINT_FUNCTION(0, 185),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO185"),
+ MTK_FUNCTION(1, "SDA12"),
+ MTK_FUNCTION(2, "CMVREF5"),
+ MTK_FUNCTION(3, "MFG_EB_JTAG_TDI"),
+ MTK_FUNCTION(4, "ADSP_JTAG1_TDI"),
+ MTK_FUNCTION(5, "HFRP_JTAG1_TDI"),
+ MTK_FUNCTION(6, "SPU1_TDI"),
+ MTK_FUNCTION(7, "CONN_BG_GPS_MCU_TDI")
+ ),
+ MTK_PIN(
+ 186, "GPIO186",
+ MTK_EINT_FUNCTION(0, 186),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO186"),
+ MTK_FUNCTION(1, "MD_GPS_L1_BLANK"),
+ MTK_FUNCTION(2, "PMSR_SMAP"),
+ MTK_FUNCTION(3, "TP_GPIO2_AO")
+ ),
+ MTK_PIN(
+ 187, "GPIO187",
+ MTK_EINT_FUNCTION(0, 187),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO187"),
+ MTK_FUNCTION(1, "MD_GPS_L5_BLANK"),
+ MTK_FUNCTION(3, "TP_GPIO4_AO")
+ ),
+ MTK_PIN(
+ 188, "GPIO188",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO188"),
+ MTK_FUNCTION(1, "SCL2"),
+ MTK_FUNCTION(2, "SCP_SCL8")
+ ),
+ MTK_PIN(
+ 189, "GPIO189",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO189"),
+ MTK_FUNCTION(1, "SDA2"),
+ MTK_FUNCTION(2, "SCP_SDA8")
+ ),
+ MTK_PIN(
+ 190, "GPIO190",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO190"),
+ MTK_FUNCTION(1, "SCL4"),
+ MTK_FUNCTION(2, "SCP_SCL9"),
+ MTK_FUNCTION(6, "UDI_TDI_6")
+ ),
+ MTK_PIN(
+ 191, "GPIO191",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO191"),
+ MTK_FUNCTION(1, "SDA4"),
+ MTK_FUNCTION(2, "SCP_SDA9"),
+ MTK_FUNCTION(6, "UDI_TDI_7")
+ ),
+ MTK_PIN(
+ 192, "GPIO192",
+ MTK_EINT_FUNCTION(0, 192),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO192"),
+ MTK_FUNCTION(1, "CMMCLK2"),
+ MTK_FUNCTION(4, "MD32_3_RXD")
+ ),
+ MTK_PIN(
+ 193, "GPIO193",
+ MTK_EINT_FUNCTION(0, 193),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO193"),
+ MTK_FUNCTION(3, "CLKM0_B"),
+ MTK_FUNCTION(4, "MD32_3_TXD"),
+ MTK_FUNCTION(6, "UDI_TDO_7")
+ ),
+ MTK_PIN(
+ 194, "GPIO194",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO194"),
+ MTK_FUNCTION(1, "SCL7"),
+ MTK_FUNCTION(2, "MD32_3_GPIO0"),
+ MTK_FUNCTION(3, "CLKM2_B"),
+ MTK_FUNCTION(6, "UDI_TDI_2")
+ ),
+ MTK_PIN(
+ 195, "GPIO195",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO195"),
+ MTK_FUNCTION(1, "SDA7"),
+ MTK_FUNCTION(3, "CLKM3_B"),
+ MTK_FUNCTION(6, "UDI_TDI_3")
+ ),
+ MTK_PIN(
+ 196, "GPIO196",
+ MTK_EINT_FUNCTION(0, 196),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO196"),
+ MTK_FUNCTION(1, "CMMCLK3")
+ ),
+ MTK_PIN(
+ 197, "GPIO197",
+ MTK_EINT_FUNCTION(0, 197),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO197"),
+ MTK_FUNCTION(3, "CLKM1_B"),
+ MTK_FUNCTION(6, "UDI_TDI_1")
+ ),
+ MTK_PIN(
+ 198, "GPIO198",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO198"),
+ MTK_FUNCTION(1, "SCL8"),
+ MTK_FUNCTION(6, "UDI_TDI_4")
+ ),
+ MTK_PIN(
+ 199, "GPIO199",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO199"),
+ MTK_FUNCTION(1, "SDA8"),
+ MTK_FUNCTION(6, "UDI_TDI_5")
+ ),
+ MTK_PIN(
+ 200, "GPIO200",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO200"),
+ MTK_FUNCTION(1, "SCL1")
+ ),
+ MTK_PIN(
+ 201, "GPIO201",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO201"),
+ MTK_FUNCTION(1, "SDA1"),
+ MTK_FUNCTION(7, "TSFDC_BG_COMP")
+ ),
+ MTK_PIN(
+ 202, "GPIO202",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO202"),
+ MTK_FUNCTION(1, "SCL9"),
+ MTK_FUNCTION(2, "SCP_SCL7"),
+ MTK_FUNCTION(6, "TP_GPIO15_AO")
+ ),
+ MTK_PIN(
+ 203, "GPIO203",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO203"),
+ MTK_FUNCTION(1, "SDA9"),
+ MTK_FUNCTION(2, "SCP_SDA7"),
+ MTK_FUNCTION(6, "TP_GPIO9_AO")
+ ),
+ MTK_PIN(
+ 204, "GPIO204",
+ MTK_EINT_FUNCTION(0, 204),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO204"),
+ MTK_FUNCTION(1, "SCL13"),
+ MTK_FUNCTION(2, "CMVREF6"),
+ MTK_FUNCTION(3, "GPS_L1_ELNA_EN"),
+ MTK_FUNCTION(5, "CLKM2_B"),
+ MTK_FUNCTION(6, "TP_GPIO12_AO")
+ ),
+ MTK_PIN(
+ 205, "GPIO205",
+ MTK_EINT_FUNCTION(0, 205),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO205"),
+ MTK_FUNCTION(1, "SDA13"),
+ MTK_FUNCTION(2, "CMVREF7"),
+ MTK_FUNCTION(3, "GPS_L5_ELNA_EN"),
+ MTK_FUNCTION(5, "CLKM3_B"),
+ MTK_FUNCTION(6, "TP_GPIO13_AO")
+ ),
+ MTK_PIN(
+ 206, "GPIO206",
+ MTK_EINT_FUNCTION(0, 206),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO206"),
+ MTK_FUNCTION(2, "MD32_2_GPIO0"),
+ MTK_FUNCTION(5, "VBUSVALID"),
+ MTK_FUNCTION(6, "UDI_TDO_3")
+ ),
+ MTK_PIN(
+ 207, "GPIO207",
+ MTK_EINT_FUNCTION(0, 207),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO207"),
+ MTK_FUNCTION(1, "PCIE_WAKEN_2P"),
+ MTK_FUNCTION(2, "PMSR_SMAP_MAX"),
+ MTK_FUNCTION(4, "FMI2S_A_BCK"),
+ MTK_FUNCTION(6, "UDI_TDO_4")
+ ),
+ MTK_PIN(
+ 208, "GPIO208",
+ MTK_EINT_FUNCTION(0, 208),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO208"),
+ MTK_FUNCTION(1, "PCIE_CLKREQN_2P"),
+ MTK_FUNCTION(2, "PMSR_SMAP_MAX_W"),
+ MTK_FUNCTION(4, "FMI2S_A_LRCK"),
+ MTK_FUNCTION(5, "CLKM0_B"),
+ MTK_FUNCTION(6, "UDI_TDO_5")
+ ),
+ MTK_PIN(
+ 209, "GPIO209",
+ MTK_EINT_FUNCTION(0, 209),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO209"),
+ MTK_FUNCTION(1, "PCIE_PERSTN_2P"),
+ MTK_FUNCTION(2, "PMSR_SMAP"),
+ MTK_FUNCTION(4, "FMI2S_A_DI"),
+ MTK_FUNCTION(5, "CLKM1_B"),
+ MTK_FUNCTION(6, "UDI_TDO_6")
+ ),
+ MTK_PIN(
+ 210, "GPIO210",
+ MTK_EINT_FUNCTION(0, 210),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO210"),
+ MTK_FUNCTION(1, "CMMCLK4")
+ ),
+ MTK_PIN(
+ 211, "GPIO211",
+ MTK_EINT_FUNCTION(0, 211),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO211"),
+ MTK_FUNCTION(1, "CMMCLK5"),
+ MTK_FUNCTION(2, "CONN_TCXOENA_REQ")
+ ),
+ MTK_PIN(
+ 212, "GPIO212",
+ MTK_EINT_FUNCTION(0, 212),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO212"),
+ MTK_FUNCTION(1, "CMMCLK6"),
+ MTK_FUNCTION(2, "TP_GPIO10_AO"),
+ MTK_FUNCTION(5, "IDDIG"),
+ MTK_FUNCTION(6, "UDI_TDO_1")
+ ),
+ MTK_PIN(
+ 213, "GPIO213",
+ MTK_EINT_FUNCTION(0, 213),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO213"),
+ MTK_FUNCTION(1, "CMMCLK7"),
+ MTK_FUNCTION(2, "TP_GPIO11_AO"),
+ MTK_FUNCTION(5, "USB_DRVVBUS"),
+ MTK_FUNCTION(6, "UDI_TDO_2")
+ ),
+ MTK_PIN(
+ 214, "GPIO214",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO214"),
+ MTK_FUNCTION(1, "SCP_SCL3"),
+ MTK_FUNCTION(2, "SDA14_E1_SCL14_E2"),
+ MTK_FUNCTION(6, "GBE1_MDC"),
+ MTK_FUNCTION(7, "GBE0_MDC")
+ ),
+ MTK_PIN(
+ 215, "GPIO215",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO215"),
+ MTK_FUNCTION(1, "SCP_SDA3"),
+ MTK_FUNCTION(2, "SCL14_E1_SDA14_E2"),
+ MTK_FUNCTION(6, "GBE1_MDIO"),
+ MTK_FUNCTION(7, "GBE0_MDIO")
+ ),
+ MTK_PIN(
+ 216, "GPIO216",
+ MTK_EINT_FUNCTION(0, 216),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO216"),
+ MTK_FUNCTION(1, "GPS_PPS0")
+ ),
+ MTK_PIN(
+ 217, "GPIO217",
+ MTK_EINT_FUNCTION(0, 217),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO217"),
+ MTK_FUNCTION(1, "KPROW0"),
+ MTK_FUNCTION(6, "TP_GPIO12_AO")
+ ),
+ MTK_PIN(
+ 218, "GPIO218",
+ MTK_EINT_FUNCTION(0, 218),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO218"),
+ MTK_FUNCTION(1, "KPROW1"),
+ MTK_FUNCTION(2, "SPI0_WP"),
+ MTK_FUNCTION(3, "MBISTREADEN_TRIGGER"),
+ MTK_FUNCTION(5, "GPS_L5_ELNA_EN"),
+ MTK_FUNCTION(6, "TP_GPIO14_AO")
+ ),
+ MTK_PIN(
+ 219, "GPIO219",
+ MTK_EINT_FUNCTION(0, 219),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO219"),
+ MTK_FUNCTION(1, "KPCOL1"),
+ MTK_FUNCTION(2, "SPI0_HOLD"),
+ MTK_FUNCTION(3, "MBISTWRITEEN_TRIGGER"),
+ MTK_FUNCTION(4, "SPMI_M_TRIG_FLAG"),
+ MTK_FUNCTION(5, "GPS_L1_ELNA_EN"),
+ MTK_FUNCTION(6, "SPM_JTAG_TRSTN_VLP"),
+ MTK_FUNCTION(7, "JTRSTN_SEL1")
+ ),
+ MTK_PIN(
+ 220, "GPIO220",
+ MTK_EINT_FUNCTION(0, 220),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO220"),
+ MTK_FUNCTION(1, "SPI0_CLK"),
+ MTK_FUNCTION(6, "SPM_JTAG_TCK_VLP"),
+ MTK_FUNCTION(7, "JTCK_SEL1")
+ ),
+ MTK_PIN(
+ 221, "GPIO221",
+ MTK_EINT_FUNCTION(0, 221),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO221"),
+ MTK_FUNCTION(1, "SPI0_CSB"),
+ MTK_FUNCTION(6, "SPM_JTAG_TMS_VLP"),
+ MTK_FUNCTION(7, "JTMS_SEL1")
+ ),
+ MTK_PIN(
+ 222, "GPIO222",
+ MTK_EINT_FUNCTION(0, 222),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO222"),
+ MTK_FUNCTION(1, "SPI0_MO"),
+ MTK_FUNCTION(2, "SCP_SCL7"),
+ MTK_FUNCTION(6, "SPM_JTAG_TDO_VLP"),
+ MTK_FUNCTION(7, "JTDO_SEL1")
+ ),
+ MTK_PIN(
+ 223, "GPIO223",
+ MTK_EINT_FUNCTION(0, 223),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO223"),
+ MTK_FUNCTION(1, "SPI0_MI"),
+ MTK_FUNCTION(2, "SCP_SDA7"),
+ MTK_FUNCTION(6, "SPM_JTAG_TDI_VLP"),
+ MTK_FUNCTION(7, "JTDI_SEL1")
+ ),
+ MTK_PIN(
+ 224, "GPIO224",
+ MTK_EINT_FUNCTION(0, 224),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO224"),
+ MTK_FUNCTION(1, "MSDC2_CLK"),
+ MTK_FUNCTION(2, "DMIC2_CLK"),
+ MTK_FUNCTION(3, "GBE0_AUX_PPS0"),
+ MTK_FUNCTION(4, "GBE0_TXER"),
+ MTK_FUNCTION(5, "GBE1_TXER"),
+ MTK_FUNCTION(6, "GBE1_AUX_PPS0"),
+ MTK_FUNCTION(7, "MD32_1_TXD")
+ ),
+ MTK_PIN(
+ 225, "GPIO225",
+ MTK_EINT_FUNCTION(0, 225),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO225"),
+ MTK_FUNCTION(1, "MSDC2_CMD"),
+ MTK_FUNCTION(2, "DMIC2_DAT"),
+ MTK_FUNCTION(3, "GBE0_AUX_PPS1"),
+ MTK_FUNCTION(4, "GBE0_RXER"),
+ MTK_FUNCTION(5, "GBE1_RXER"),
+ MTK_FUNCTION(6, "GBE1_AUX_PPS1"),
+ MTK_FUNCTION(7, "MD32_1_RXD")
+ ),
+ MTK_PIN(
+ 226, "GPIO226",
+ MTK_EINT_FUNCTION(0, 226),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO226"),
+ MTK_FUNCTION(1, "MSDC2_DAT0"),
+ MTK_FUNCTION(2, "I2SIN3_BCK"),
+ MTK_FUNCTION(3, "GBE0_AUX_PPS2"),
+ MTK_FUNCTION(4, "GBE0_COL"),
+ MTK_FUNCTION(5, "GBE1_COL"),
+ MTK_FUNCTION(6, "GBE1_AUX_PPS2"),
+ MTK_FUNCTION(7, "GBE1_MDC")
+ ),
+ MTK_PIN(
+ 227, "GPIO227",
+ MTK_EINT_FUNCTION(0, 227),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO227"),
+ MTK_FUNCTION(1, "MSDC2_DAT1"),
+ MTK_FUNCTION(2, "I2SIN3_LRCK"),
+ MTK_FUNCTION(3, "GBE0_AUX_PPS3"),
+ MTK_FUNCTION(4, "GBE0_INTR"),
+ MTK_FUNCTION(5, "GBE1_INTR"),
+ MTK_FUNCTION(6, "GBE1_AUX_PPS3"),
+ MTK_FUNCTION(7, "GBE1_MDIO")
+ ),
+ MTK_PIN(
+ 228, "GPIO228",
+ MTK_EINT_FUNCTION(0, 228),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO228"),
+ MTK_FUNCTION(1, "MSDC2_DAT2"),
+ MTK_FUNCTION(2, "I2SIN3_DI"),
+ MTK_FUNCTION(3, "GBE0_MDC"),
+ MTK_FUNCTION(4, "GBE1_MDC"),
+ MTK_FUNCTION(5, "CONN_BG_GPS_MCU_AICE_TCKC")
+ ),
+ MTK_PIN(
+ 229, "GPIO229",
+ MTK_EINT_FUNCTION(0, 229),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO229"),
+ MTK_FUNCTION(1, "MSDC2_DAT3"),
+ MTK_FUNCTION(2, "I2SOUT3_DO"),
+ MTK_FUNCTION(3, "GBE0_MDIO"),
+ MTK_FUNCTION(4, "GBE1_MDIO"),
+ MTK_FUNCTION(5, "CONN_BG_GPS_MCU_AICE_TMSC"),
+ MTK_FUNCTION(7, "AVB_CLK2")
+ ),
+ MTK_PIN(
+ 230, "GPIO230",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO230"),
+ MTK_FUNCTION(1, "CONN_TOP_CLK")
+ ),
+ MTK_PIN(
+ 231, "GPIO231",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO231"),
+ MTK_FUNCTION(1, "CONN_TOP_DATA")
+ ),
+ MTK_PIN(
+ 232, "GPIO232",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO232"),
+ MTK_FUNCTION(1, "CONN_HRST_B")
+ ),
+ MTK_PIN(
+ 233, "GPIO233",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO233"),
+ MTK_FUNCTION(1, "I2SIN0_BCK")
+ ),
+ MTK_PIN(
+ 234, "GPIO234",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO234"),
+ MTK_FUNCTION(1, "I2SIN0_LRCK")
+ ),
+ MTK_PIN(
+ 235, "GPIO235",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO235"),
+ MTK_FUNCTION(1, "I2SIN0_DI")
+ ),
+ MTK_PIN(
+ 236, "GPIO236",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO236"),
+ MTK_FUNCTION(1, "I2SOUT0_DO")
+ ),
+ MTK_PIN(
+ 237, "GPIO237",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO237"),
+ MTK_FUNCTION(1, "CONN_UARTHUB_UART_TX"),
+ MTK_FUNCTION(3, "UTXD3")
+ ),
+ MTK_PIN(
+ 238, "GPIO238",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO238"),
+ MTK_FUNCTION(1, "CONN_UARTHUB_UART_RX"),
+ MTK_FUNCTION(3, "URXD3")
+ ),
+ MTK_PIN(
+ 239, "GPIO239",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO239"),
+ MTK_FUNCTION(1, "TP_UTXD_CONSYS_VLP"),
+ MTK_FUNCTION(2, "TP_URXD_CONSYS_VLP")
+ ),
+ MTK_PIN(
+ 240, "GPIO240",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO240"),
+ MTK_FUNCTION(1, "TP_URXD_CONSYS_VLP"),
+ MTK_FUNCTION(2, "TP_UTXD_CONSYS_VLP")
+ ),
+ MTK_PIN(
+ 241, "GPIO241",
+ MTK_EINT_FUNCTION(0, 241),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO241"),
+ MTK_FUNCTION(1, "PCIE_PERSTN")
+ ),
+ MTK_PIN(
+ 242, "GPIO242",
+ MTK_EINT_FUNCTION(0, 242),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO242"),
+ MTK_FUNCTION(1, "PCIE_WAKEN")
+ ),
+ MTK_PIN(
+ 243, "GPIO243",
+ MTK_EINT_FUNCTION(0, 243),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO243"),
+ MTK_FUNCTION(1, "PCIE_CLKREQN")
+ ),
+ MTK_PIN(
+ 244, "GPIO244",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO244"),
+ MTK_FUNCTION(1, "CONN_RST")
+ ),
+ MTK_PIN(
+ 245, "GPIO245",
+ MTK_EINT_FUNCTION(0, 245),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO245")
+ ),
+ MTK_PIN(
+ 246, "GPIO246",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO246"),
+ MTK_FUNCTION(1, "CONN_PTA_TXD0")
+ ),
+ MTK_PIN(
+ 247, "GPIO247",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO247"),
+ MTK_FUNCTION(1, "CONN_PTA_RXD0")
+ ),
+ MTK_PIN(
+ 248, "GPIO248",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO248"),
+ MTK_FUNCTION(3, "UCTS3")
+ ),
+ MTK_PIN(
+ 249, "GPIO249",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO249"),
+ MTK_FUNCTION(3, "URTS3")
+ ),
+ MTK_PIN(
+ 250, "GPIO250",
+ MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO250")
+ ),
+ MTK_PIN(
+ 251, "GPIO251",
+ MTK_EINT_FUNCTION(0, 251),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO251"),
+ MTK_FUNCTION(1, "IDDIG_1P")
+ ),
+ MTK_PIN(
+ 252, "GPIO252",
+ MTK_EINT_FUNCTION(0, 252),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO252"),
+ MTK_FUNCTION(1, "USB_DRVVBUS_1P")
+ ),
+ MTK_PIN(
+ 253, "GPIO253",
+ MTK_EINT_FUNCTION(0, 253),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO253"),
+ MTK_FUNCTION(1, "VBUSVALID_1P")
+ ),
+ MTK_PIN(
+ 254, "GPIO254",
+ MTK_EINT_FUNCTION(0, 254),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO254"),
+ MTK_FUNCTION(1, "IDDIG_2P")
+ ),
+ MTK_PIN(
+ 255, "GPIO255",
+ MTK_EINT_FUNCTION(0, 255),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO255"),
+ MTK_FUNCTION(1, "USB_DRVVBUS_2P")
+ ),
+ MTK_PIN(
+ 256, "GPIO256",
+ MTK_EINT_FUNCTION(0, 256),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO256"),
+ MTK_FUNCTION(1, "VBUSVALID_2P")
+ ),
+ MTK_PIN(
+ 257, "GPIO257",
+ MTK_EINT_FUNCTION(0, 257),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO257"),
+ MTK_FUNCTION(1, "VBUSVALID_3P")
+ ),
+ MTK_PIN(
+ 258, "GPIO258",
+ MTK_EINT_FUNCTION(0, 258),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO258"),
+ MTK_FUNCTION(7, "AVB_CLK1")
+ ),
+ MTK_PIN(
+ 259, "GPIO259",
+ MTK_EINT_FUNCTION(0, 259),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO259"),
+ MTK_FUNCTION(1, "GBE0_TXD0"),
+ MTK_FUNCTION(2, "GBE1_TXD0")
+ ),
+ MTK_PIN(
+ 260, "GPIO260",
+ MTK_EINT_FUNCTION(0, 260),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO260"),
+ MTK_FUNCTION(1, "GBE0_TXD1"),
+ MTK_FUNCTION(2, "GBE1_TXD1")
+ ),
+ MTK_PIN(
+ 261, "GPIO261",
+ MTK_EINT_FUNCTION(0, 261),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO261"),
+ MTK_FUNCTION(1, "GBE0_TXC"),
+ MTK_FUNCTION(2, "GBE1_TXC")
+ ),
+ MTK_PIN(
+ 262, "GPIO262",
+ MTK_EINT_FUNCTION(0, 262),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO262"),
+ MTK_FUNCTION(1, "GBE0_TXEN"),
+ MTK_FUNCTION(2, "GBE1_TXEN")
+ ),
+ MTK_PIN(
+ 263, "GPIO263",
+ MTK_EINT_FUNCTION(0, 263),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO263"),
+ MTK_FUNCTION(1, "GBE0_RXD0"),
+ MTK_FUNCTION(2, "GBE1_RXD0"),
+ MTK_FUNCTION(3, "GBE0_AUX_PPS0")
+ ),
+ MTK_PIN(
+ 264, "GPIO264",
+ MTK_EINT_FUNCTION(0, 264),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO264"),
+ MTK_FUNCTION(1, "GBE0_RXD1"),
+ MTK_FUNCTION(2, "GBE1_RXD1"),
+ MTK_FUNCTION(3, "GBE0_AUX_PPS1")
+ ),
+ MTK_PIN(
+ 265, "GPIO265",
+ MTK_EINT_FUNCTION(0, 265),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO265"),
+ MTK_FUNCTION(1, "GBE0_RXC"),
+ MTK_FUNCTION(2, "GBE1_RXC"),
+ MTK_FUNCTION(3, "GBE0_AUX_PPS2")
+ ),
+ MTK_PIN(
+ 266, "GPIO266",
+ MTK_EINT_FUNCTION(0, 266),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO266"),
+ MTK_FUNCTION(1, "GBE0_RXDV"),
+ MTK_FUNCTION(2, "GBE1_RXDV"),
+ MTK_FUNCTION(3, "GBE0_AUX_PPS3")
+ ),
+ MTK_PIN(
+ 267, "GPIO267",
+ MTK_EINT_FUNCTION(0, 267),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO267"),
+ MTK_FUNCTION(1, "GBE0_TXD2"),
+ MTK_FUNCTION(2, "GBE1_TXD2"),
+ MTK_FUNCTION(3, "GBE0_RXER"),
+ MTK_FUNCTION(4, "GBE1_RXER")
+ ),
+ MTK_PIN(
+ 268, "GPIO268",
+ MTK_EINT_FUNCTION(0, 268),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO268"),
+ MTK_FUNCTION(1, "GBE0_TXD3"),
+ MTK_FUNCTION(2, "GBE1_TXD3")
+ ),
+ MTK_PIN(
+ 269, "GPIO269",
+ MTK_EINT_FUNCTION(0, 269),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO269"),
+ MTK_FUNCTION(1, "GBE0_RXD2"),
+ MTK_FUNCTION(2, "GBE1_RXD2"),
+ MTK_FUNCTION(3, "GBE0_MDC")
+ ),
+ MTK_PIN(
+ 270, "GPIO270",
+ MTK_EINT_FUNCTION(0, 270),
+ DRV_GRP4,
+ MTK_FUNCTION(0, "GPIO270"),
+ MTK_FUNCTION(1, "GBE0_RXD3"),
+ MTK_FUNCTION(2, "GBE1_RXD3"),
+ MTK_FUNCTION(3, "GBE0_MDIO")
+ ),
+ MTK_PIN(
+ 271, "veint271",
+ MTK_EINT_FUNCTION(0, 271),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 272, "veint272",
+ MTK_EINT_FUNCTION(0, 272),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 273, "veint273",
+ MTK_EINT_FUNCTION(0, 273),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 274, "veint274",
+ MTK_EINT_FUNCTION(0, 274),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 275, "veint275",
+ MTK_EINT_FUNCTION(0, 275),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 276, "veint276",
+ MTK_EINT_FUNCTION(0, 276),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 277, "veint277",
+ MTK_EINT_FUNCTION(0, 277),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 278, "veint278",
+ MTK_EINT_FUNCTION(0, 278),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 279, "veint279",
+ MTK_EINT_FUNCTION(0, 279),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 280, "veint280",
+ MTK_EINT_FUNCTION(0, 280),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 281, "veint281",
+ MTK_EINT_FUNCTION(0, 281),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 282, "veint282",
+ MTK_EINT_FUNCTION(0, 282),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 283, "veint283",
+ MTK_EINT_FUNCTION(0, 283),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 284, "veint284",
+ MTK_EINT_FUNCTION(0, 284),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 285, "veint285",
+ MTK_EINT_FUNCTION(0, 285),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 286, "veint286",
+ MTK_EINT_FUNCTION(0, 286),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 287, "veint287",
+ MTK_EINT_FUNCTION(0, 287),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 288, "veint288",
+ MTK_EINT_FUNCTION(0, 288),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 289, "veint289",
+ MTK_EINT_FUNCTION(0, 289),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 290, "veint290",
+ MTK_EINT_FUNCTION(0, 290),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 291, "veint291",
+ MTK_EINT_FUNCTION(0, 291),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ ),
+ MTK_PIN(
+ 292, "veint292",
+ MTK_EINT_FUNCTION(0, 292),
+ DRV_GRP4,
+ MTK_FUNCTION(0, NULL)
+ )
+};
+
+static struct mtk_eint_pin eint_pins_mt8196[] = {
+ MTK_EINT_PIN(0, 2, 0, 1),
+ MTK_EINT_PIN(1, 2, 1, 1),
+ MTK_EINT_PIN(2, 2, 16, 0),
+ MTK_EINT_PIN(3, 2, 17, 0),
+ MTK_EINT_PIN(4, 2, 2, 1),
+ MTK_EINT_PIN(5, 2, 3, 1),
+ MTK_EINT_PIN(6, 2, 4, 1),
+ MTK_EINT_PIN(7, 2, 5, 1),
+ MTK_EINT_PIN(8, 2, 6, 1),
+ MTK_EINT_PIN(9, 2, 18, 0),
+ MTK_EINT_PIN(10, 2, 7, 1),
+ MTK_EINT_PIN(11, 2, 8, 1),
+ MTK_EINT_PIN(12, 2, 9, 1),
+ MTK_EINT_PIN(13, 1, 4, 0),
+ MTK_EINT_PIN(14, 0, 0, 1),
+ MTK_EINT_PIN(15, 1, 5, 0),
+ MTK_EINT_PIN(16, 1, 6, 0),
+ MTK_EINT_PIN(17, 1, 7, 0),
+ MTK_EINT_PIN(18, 1, 8, 0),
+ MTK_EINT_PIN(19, 1, 9, 0),
+ MTK_EINT_PIN(20, 0, 1, 1),
+ MTK_EINT_PIN(21, 0, 10, 0),
+ MTK_EINT_PIN(22, 0, 11, 0),
+ MTK_EINT_PIN(23, 0, 12, 0),
+ MTK_EINT_PIN(24, 0, 13, 0),
+ MTK_EINT_PIN(25, 0, 14, 0),
+ MTK_EINT_PIN(26, 0, 15, 0),
+ MTK_EINT_PIN(27, 0, 2, 1),
+ MTK_EINT_PIN(28, 0, 16, 0),
+ MTK_EINT_PIN(29, 0, 17, 0),
+ MTK_EINT_PIN(30, 0, 18, 0),
+ MTK_EINT_PIN(31, 0, 3, 1),
+ MTK_EINT_PIN(32, 0, 19, 0),
+ MTK_EINT_PIN(33, 0, 20, 0),
+ MTK_EINT_PIN(34, 0, 21, 0),
+ MTK_EINT_PIN(35, 0, 22, 0),
+ MTK_EINT_PIN(36, 0, 23, 0),
+ MTK_EINT_PIN(37, 0, 24, 0),
+ MTK_EINT_PIN(38, 0, 25, 0),
+ MTK_EINT_PIN(39, 2, 10, 1),
+ MTK_EINT_PIN(40, 2, 11, 1),
+ MTK_EINT_PIN(41, 2, 12, 1),
+ MTK_EINT_PIN(42, 2, 13, 1),
+ MTK_EINT_PIN(43, 2, 14, 1),
+ MTK_EINT_PIN(44, 2, 19, 0),
+ MTK_EINT_PIN(45, 2, 20, 0),
+ MTK_EINT_PIN(46, 2, 21, 0),
+ MTK_EINT_PIN(47, 2, 22, 0),
+ MTK_EINT_PIN(48, 2, 23, 0),
+ MTK_EINT_PIN(49, 2, 24, 0),
+ MTK_EINT_PIN(50, 2, 25, 0),
+ MTK_EINT_PIN(51, 2, 26, 0),
+ MTK_EINT_PIN(52, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(53, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(54, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(55, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(56, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(57, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(58, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(59, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(60, 2, 27, 0),
+ MTK_EINT_PIN(61, 2, 28, 0),
+ MTK_EINT_PIN(62, 2, 29, 0),
+ MTK_EINT_PIN(63, 2, 30, 0),
+ MTK_EINT_PIN(64, 2, 31, 0),
+ MTK_EINT_PIN(65, 2, 32, 0),
+ MTK_EINT_PIN(66, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(67, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(68, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(69, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(70, 2, 33, 0),
+ MTK_EINT_PIN(71, 2, 34, 0),
+ MTK_EINT_PIN(72, 2, 35, 0),
+ MTK_EINT_PIN(73, 2, 36, 0),
+ MTK_EINT_PIN(74, 2, 37, 0),
+ MTK_EINT_PIN(75, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(76, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(77, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(78, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(79, 2, 38, 0),
+ MTK_EINT_PIN(80, 2, 39, 0),
+ MTK_EINT_PIN(81, 2, 40, 0),
+ MTK_EINT_PIN(82, 2, 41, 0),
+ MTK_EINT_PIN(83, 2, 42, 0),
+ MTK_EINT_PIN(84, 2, 43, 0),
+ MTK_EINT_PIN(85, 2, 44, 0),
+ MTK_EINT_PIN(86, 2, 45, 0),
+ MTK_EINT_PIN(87, 2, 46, 0),
+ MTK_EINT_PIN(88, 2, 47, 0),
+ MTK_EINT_PIN(89, 2, 48, 0),
+ MTK_EINT_PIN(90, 2, 49, 0),
+ MTK_EINT_PIN(91, 2, 50, 0),
+ MTK_EINT_PIN(92, 2, 15, 1),
+ MTK_EINT_PIN(93, 2, 51, 0),
+ MTK_EINT_PIN(94, 2, 52, 0),
+ MTK_EINT_PIN(95, 2, 53, 0),
+ MTK_EINT_PIN(96, 2, 54, 0),
+ MTK_EINT_PIN(97, 2, 55, 0),
+ MTK_EINT_PIN(98, 2, 56, 0),
+ MTK_EINT_PIN(99, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(100, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(101, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(102, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(103, 2, 57, 0),
+ MTK_EINT_PIN(104, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(105, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(106, 1, 10, 0),
+ MTK_EINT_PIN(107, 1, 11, 0),
+ MTK_EINT_PIN(108, 1, 12, 0),
+ MTK_EINT_PIN(109, 1, 13, 0),
+ MTK_EINT_PIN(110, 1, 0, 1),
+ MTK_EINT_PIN(111, 1, 1, 1),
+ MTK_EINT_PIN(112, 1, 2, 1),
+ MTK_EINT_PIN(113, 1, 3, 1),
+ MTK_EINT_PIN(114, 1, 14, 0),
+ MTK_EINT_PIN(115, 1, 15, 0),
+ MTK_EINT_PIN(116, 1, 16, 0),
+ MTK_EINT_PIN(117, 1, 17, 0),
+ MTK_EINT_PIN(118, 1, 18, 0),
+ MTK_EINT_PIN(119, 1, 19, 0),
+ MTK_EINT_PIN(120, 1, 20, 0),
+ MTK_EINT_PIN(121, 1, 21, 0),
+ MTK_EINT_PIN(122, 1, 22, 0),
+ MTK_EINT_PIN(123, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(124, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(125, 1, 23, 0),
+ MTK_EINT_PIN(126, 1, 24, 0),
+ MTK_EINT_PIN(127, 1, 25, 0),
+ MTK_EINT_PIN(128, 1, 26, 0),
+ MTK_EINT_PIN(129, 1, 27, 0),
+ MTK_EINT_PIN(130, 1, 28, 0),
+ MTK_EINT_PIN(131, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(132, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(133, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(134, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(135, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(136, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(137, 0, 26, 0),
+ MTK_EINT_PIN(138, 0, 27, 0),
+ MTK_EINT_PIN(139, 0, 28, 0),
+ MTK_EINT_PIN(140, 0, 29, 0),
+ MTK_EINT_PIN(141, 0, 30, 0),
+ MTK_EINT_PIN(142, 0, 31, 0),
+ MTK_EINT_PIN(143, 0, 32, 0),
+ MTK_EINT_PIN(144, 0, 33, 0),
+ MTK_EINT_PIN(145, 0, 34, 0),
+ MTK_EINT_PIN(146, 0, 35, 0),
+ MTK_EINT_PIN(147, 0, 36, 0),
+ MTK_EINT_PIN(148, 0, 4, 1),
+ MTK_EINT_PIN(149, 0, 37, 0),
+ MTK_EINT_PIN(150, 0, 5, 1),
+ MTK_EINT_PIN(151, 0, 38, 0),
+ MTK_EINT_PIN(152, 0, 39, 0),
+ MTK_EINT_PIN(153, 0, 40, 0),
+ MTK_EINT_PIN(154, 0, 41, 0),
+ MTK_EINT_PIN(155, 0, 42, 0),
+ MTK_EINT_PIN(156, 0, 43, 0),
+ MTK_EINT_PIN(157, 0, 44, 0),
+ MTK_EINT_PIN(158, 0, 45, 0),
+ MTK_EINT_PIN(159, 0, 46, 0),
+ MTK_EINT_PIN(160, 0, 47, 0),
+ MTK_EINT_PIN(161, 0, 48, 0),
+ MTK_EINT_PIN(162, 0, 49, 0),
+ MTK_EINT_PIN(163, 0, 50, 0),
+ MTK_EINT_PIN(164, 0, 51, 0),
+ MTK_EINT_PIN(165, 0, 52, 0),
+ MTK_EINT_PIN(166, 0, 53, 0),
+ MTK_EINT_PIN(167, 0, 54, 0),
+ MTK_EINT_PIN(168, 0, 55, 0),
+ MTK_EINT_PIN(169, 0, 56, 0),
+ MTK_EINT_PIN(170, 0, 57, 0),
+ MTK_EINT_PIN(171, 0, 58, 0),
+ MTK_EINT_PIN(172, 0, 6, 1),
+ MTK_EINT_PIN(173, 0, 7, 1),
+ MTK_EINT_PIN(174, 0, 8, 1),
+ MTK_EINT_PIN(175, 0, 9, 1),
+ MTK_EINT_PIN(176, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(177, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(178, 0, 59, 0),
+ MTK_EINT_PIN(179, 0, 60, 0),
+ MTK_EINT_PIN(180, 0, 61, 0),
+ MTK_EINT_PIN(181, 0, 62, 0),
+ MTK_EINT_PIN(182, 0, 63, 0),
+ MTK_EINT_PIN(183, 0, 64, 0),
+ MTK_EINT_PIN(184, 0, 65, 0),
+ MTK_EINT_PIN(185, 0, 66, 0),
+ MTK_EINT_PIN(186, 3, 6, 0),
+ MTK_EINT_PIN(187, 3, 7, 0),
+ MTK_EINT_PIN(188, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(189, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(190, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(191, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(192, 3, 8, 0),
+ MTK_EINT_PIN(193, 3, 9, 0),
+ MTK_EINT_PIN(194, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(195, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(196, 3, 10, 0),
+ MTK_EINT_PIN(197, 3, 11, 0),
+ MTK_EINT_PIN(198, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(199, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(200, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(201, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(202, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(203, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(204, 3, 12, 0),
+ MTK_EINT_PIN(205, 3, 13, 0),
+ MTK_EINT_PIN(206, 3, 14, 0),
+ MTK_EINT_PIN(207, 3, 0, 1),
+ MTK_EINT_PIN(208, 3, 1, 1),
+ MTK_EINT_PIN(209, 3, 2, 1),
+ MTK_EINT_PIN(210, 3, 15, 0),
+ MTK_EINT_PIN(211, 3, 3, 1),
+ MTK_EINT_PIN(212, 3, 4, 1),
+ MTK_EINT_PIN(213, 3, 5, 1),
+ MTK_EINT_PIN(214, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(215, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(216, 3, 16, 0),
+ MTK_EINT_PIN(217, 3, 17, 0),
+ MTK_EINT_PIN(218, 3, 18, 0),
+ MTK_EINT_PIN(219, 3, 19, 0),
+ MTK_EINT_PIN(220, 3, 20, 0),
+ MTK_EINT_PIN(221, 3, 21, 0),
+ MTK_EINT_PIN(222, 3, 22, 0),
+ MTK_EINT_PIN(223, 3, 23, 0),
+ MTK_EINT_PIN(224, 3, 24, 0),
+ MTK_EINT_PIN(225, 3, 25, 0),
+ MTK_EINT_PIN(226, 3, 26, 0),
+ MTK_EINT_PIN(227, 3, 27, 0),
+ MTK_EINT_PIN(228, 3, 28, 0),
+ MTK_EINT_PIN(229, 3, 29, 0),
+ MTK_EINT_PIN(230, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(231, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(232, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(233, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(234, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(235, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(236, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(237, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(238, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(239, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(240, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(241, 3, 30, 0),
+ MTK_EINT_PIN(242, 3, 31, 0),
+ MTK_EINT_PIN(243, 3, 32, 0),
+ MTK_EINT_PIN(244, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(245, 3, 45, 0),
+ MTK_EINT_PIN(246, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(247, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(248, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(249, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(250, EINT_INVALID_BASE, 0, 0),
+ MTK_EINT_PIN(251, 0, 67, 0),
+ MTK_EINT_PIN(252, 0, 68, 0),
+ MTK_EINT_PIN(253, 0, 69, 0),
+ MTK_EINT_PIN(254, 0, 70, 0),
+ MTK_EINT_PIN(255, 0, 71, 0),
+ MTK_EINT_PIN(256, 0, 72, 0),
+ MTK_EINT_PIN(257, 0, 73, 0),
+ MTK_EINT_PIN(258, 0, 74, 0),
+ MTK_EINT_PIN(259, 3, 33, 0),
+ MTK_EINT_PIN(260, 3, 34, 0),
+ MTK_EINT_PIN(261, 3, 35, 0),
+ MTK_EINT_PIN(262, 3, 36, 0),
+ MTK_EINT_PIN(263, 3, 37, 0),
+ MTK_EINT_PIN(264, 3, 38, 0),
+ MTK_EINT_PIN(265, 3, 39, 0),
+ MTK_EINT_PIN(266, 3, 40, 0),
+ MTK_EINT_PIN(267, 3, 41, 0),
+ MTK_EINT_PIN(268, 3, 42, 0),
+ MTK_EINT_PIN(269, 3, 43, 0),
+ MTK_EINT_PIN(270, 3, 44, 0),
+ MTK_EINT_PIN(271, 4, 0, 0),
+ MTK_EINT_PIN(272, 4, 1, 0),
+ MTK_EINT_PIN(273, 4, 2, 0),
+ MTK_EINT_PIN(274, 4, 3, 0),
+ MTK_EINT_PIN(275, 4, 4, 0),
+ MTK_EINT_PIN(276, 4, 5, 0),
+ MTK_EINT_PIN(277, 4, 6, 0),
+ MTK_EINT_PIN(278, 4, 7, 0),
+ MTK_EINT_PIN(279, 4, 8, 0),
+ MTK_EINT_PIN(280, 4, 9, 0),
+ MTK_EINT_PIN(281, 4, 10, 0),
+ MTK_EINT_PIN(282, 4, 11, 0),
+ MTK_EINT_PIN(283, 4, 12, 0),
+ MTK_EINT_PIN(284, 4, 13, 0),
+ MTK_EINT_PIN(285, 4, 14, 0),
+ MTK_EINT_PIN(286, 4, 15, 0),
+ MTK_EINT_PIN(287, 4, 16, 0),
+ MTK_EINT_PIN(288, 4, 17, 0),
+ MTK_EINT_PIN(289, 4, 18, 0),
+ MTK_EINT_PIN(290, 4, 19, 0),
+ MTK_EINT_PIN(291, 4, 20, 0),
+ MTK_EINT_PIN(292, 4, 21, 0),
+};
+#endif /* __PINCTRL_MTK_MT8196_H */
diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.c b/drivers/pinctrl/mediatek/pinctrl-paris.c
index 87e958d827bf..89ef4e530fcc 100644
--- a/drivers/pinctrl/mediatek/pinctrl-paris.c
+++ b/drivers/pinctrl/mediatek/pinctrl-paris.c
@@ -840,9 +840,6 @@ static int mtk_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio)
const struct mtk_pin_desc *desc;
int value, err;
- if (gpio >= hw->soc->npins)
- return -EINVAL;
-
/*
* "Virtual" GPIOs are always and only used for interrupts
* Since they are only used for interrupts, they are always inputs
@@ -868,9 +865,6 @@ static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
const struct mtk_pin_desc *desc;
int value, err;
- if (gpio >= hw->soc->npins)
- return -EINVAL;
-
desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DI, &value);
@@ -880,38 +874,29 @@ static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
return !!value;
}
-static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
+static int mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
{
struct mtk_pinctrl *hw = gpiochip_get_data(chip);
const struct mtk_pin_desc *desc;
- if (gpio >= hw->soc->npins)
- return;
-
desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
- mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
+ return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
}
static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
{
- struct mtk_pinctrl *hw = gpiochip_get_data(chip);
-
- if (gpio >= hw->soc->npins)
- return -EINVAL;
-
return pinctrl_gpio_direction_input(chip, gpio);
}
static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
int value)
{
- struct mtk_pinctrl *hw = gpiochip_get_data(chip);
-
- if (gpio >= hw->soc->npins)
- return -EINVAL;
+ int ret;
- mtk_gpio_set(chip, gpio, value);
+ ret = mtk_gpio_set(chip, gpio, value);
+ if (ret)
+ return ret;
return pinctrl_gpio_direction_output(chip, gpio);
}
@@ -964,7 +949,7 @@ static int mtk_build_gpiochip(struct mtk_pinctrl *hw)
chip->direction_input = mtk_gpio_direction_input;
chip->direction_output = mtk_gpio_direction_output;
chip->get = mtk_gpio_get;
- chip->set = mtk_gpio_set;
+ chip->set_rv = mtk_gpio_set;
chip->to_irq = mtk_gpio_to_irq;
chip->set_config = mtk_gpio_set_config;
chip->base = -1;
diff --git a/drivers/pinctrl/meson/Kconfig b/drivers/pinctrl/meson/Kconfig
index 90639bc171f6..0315e224bce6 100644
--- a/drivers/pinctrl/meson/Kconfig
+++ b/drivers/pinctrl/meson/Kconfig
@@ -3,7 +3,7 @@ menuconfig PINCTRL_MESON
tristate "Amlogic SoC pinctrl drivers"
depends on ARCH_MESON || COMPILE_TEST
depends on OF
- default y
+ default ARCH_MESON
select PINMUX
select PINCONF
select GENERIC_PINCONF
@@ -17,25 +17,25 @@ config PINCTRL_MESON8
bool "Meson 8 SoC pinctrl driver"
depends on ARM
select PINCTRL_MESON8_PMX
- default y
+ default ARCH_MESON
config PINCTRL_MESON8B
bool "Meson 8b SoC pinctrl driver"
depends on ARM
select PINCTRL_MESON8_PMX
- default y
+ default ARCH_MESON
config PINCTRL_MESON_GXBB
tristate "Meson gxbb SoC pinctrl driver"
depends on ARM64
select PINCTRL_MESON8_PMX
- default y
+ default ARCH_MESON
config PINCTRL_MESON_GXL
tristate "Meson gxl SoC pinctrl driver"
depends on ARM64
select PINCTRL_MESON8_PMX
- default y
+ default ARCH_MESON
config PINCTRL_MESON8_PMX
tristate
@@ -44,7 +44,7 @@ config PINCTRL_MESON_AXG
tristate "Meson axg Soc pinctrl driver"
depends on ARM64
select PINCTRL_MESON_AXG_PMX
- default y
+ default ARCH_MESON
config PINCTRL_MESON_AXG_PMX
tristate
@@ -53,24 +53,24 @@ config PINCTRL_MESON_G12A
tristate "Meson g12a Soc pinctrl driver"
depends on ARM64
select PINCTRL_MESON_AXG_PMX
- default y
+ default ARCH_MESON
config PINCTRL_MESON_A1
tristate "Meson a1 Soc pinctrl driver"
depends on ARM64
select PINCTRL_MESON_AXG_PMX
- default y
+ default ARCH_MESON
config PINCTRL_MESON_S4
tristate "Meson s4 Soc pinctrl driver"
depends on ARM64
select PINCTRL_MESON_AXG_PMX
- default y
+ default ARCH_MESON
config PINCTRL_AMLOGIC_A4
bool "AMLOGIC pincontrol"
depends on ARM64
- default y
+ default ARCH_MESON
help
This is the driver for the pin controller found on Amlogic SoCs.
@@ -82,12 +82,12 @@ config PINCTRL_AMLOGIC_C3
tristate "Amlogic C3 SoC pinctrl driver"
depends on ARM64
select PINCTRL_MESON_AXG_PMX
- default y
+ default ARCH_MESON
config PINCTRL_AMLOGIC_T7
tristate "Amlogic T7 SoC pinctrl driver"
depends on ARM64
select PINCTRL_MESON_AXG_PMX
- default y
+ default ARCH_MESON
endif
diff --git a/drivers/pinctrl/meson/pinctrl-amlogic-a4.c b/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
index ee7bbc72f9b3..385cc619df13 100644
--- a/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
+++ b/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
@@ -596,20 +596,6 @@ static int aml_get_group_pins(struct pinctrl_dev *pctldev,
return 0;
}
-static inline const struct aml_pctl_group *
- aml_pctl_find_group_by_name(const struct aml_pinctrl *info,
- const char *name)
-{
- int i;
-
- for (i = 0; i < info->ngroups; i++) {
- if (!strcmp(info->groups[i].name, name))
- return &info->groups[i];
- }
-
- return NULL;
-}
-
static void aml_pin_dbg_show(struct pinctrl_dev *pcdev, struct seq_file *s,
unsigned int offset)
{
@@ -806,15 +792,15 @@ static int aml_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
value ? BIT(bit) : 0);
}
-static void aml_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
+static int aml_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
{
struct aml_gpio_bank *bank = gpiochip_get_data(chip);
unsigned int bit, reg;
aml_gpio_calc_reg_and_bit(bank, AML_REG_OUT, gpio, &reg, &bit);
- regmap_update_bits(bank->reg_gpio, reg, BIT(bit),
- value ? BIT(bit) : 0);
+ return regmap_update_bits(bank->reg_gpio, reg, BIT(bit),
+ value ? BIT(bit) : 0);
}
static int aml_gpio_get(struct gpio_chip *chip, unsigned int gpio)
@@ -832,7 +818,7 @@ static const struct gpio_chip aml_gpio_template = {
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
.set_config = gpiochip_generic_config,
- .set = aml_gpio_set,
+ .set_rv = aml_gpio_set,
.get = aml_gpio_get,
.direction_input = aml_gpio_direction_input,
.direction_output = aml_gpio_direction_output,
diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
index e5a32a0532ee..f5be61f2ede4 100644
--- a/drivers/pinctrl/meson/pinctrl-meson.c
+++ b/drivers/pinctrl/meson/pinctrl-meson.c
@@ -580,9 +580,9 @@ static int meson_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
gpio, value);
}
-static void meson_gpio_set(struct gpio_chip *chip, unsigned gpio, int value)
+static int meson_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
{
- meson_pinconf_set_drive(gpiochip_get_data(chip), gpio, value);
+ return meson_pinconf_set_drive(gpiochip_get_data(chip), gpio, value);
}
static int meson_gpio_get(struct gpio_chip *chip, unsigned gpio)
@@ -616,7 +616,7 @@ static int meson_gpiolib_register(struct meson_pinctrl *pc)
pc->chip.direction_input = meson_gpio_direction_input;
pc->chip.direction_output = meson_gpio_direction_output;
pc->chip.get = meson_gpio_get;
- pc->chip.set = meson_gpio_set;
+ pc->chip.set_rv = meson_gpio_set;
pc->chip.base = -1;
pc->chip.ngpio = pc->data->num_pins;
pc->chip.can_sleep = false;
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
index 335744ac8310..a6b106984e12 100644
--- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
@@ -358,9 +358,7 @@ static int armada_37xx_pmx_set_by_name(struct pinctrl_dev *pctldev,
val = grp->val[func];
- regmap_update_bits(info->regmap, reg, mask, val);
-
- return 0;
+ return regmap_update_bits(info->regmap, reg, mask, val);
}
static int armada_37xx_pmx_set(struct pinctrl_dev *pctldev,
@@ -402,10 +400,13 @@ static int armada_37xx_gpio_get_direction(struct gpio_chip *chip,
struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
unsigned int reg = OUTPUT_EN;
unsigned int val, mask;
+ int ret;
armada_37xx_update_reg(&reg, &offset);
mask = BIT(offset);
- regmap_read(info->regmap, reg, &val);
+ ret = regmap_read(info->regmap, reg, &val);
+ if (ret)
+ return ret;
if (val & mask)
return GPIO_LINE_DIRECTION_OUT;
@@ -417,22 +418,22 @@ static int armada_37xx_gpio_direction_output(struct gpio_chip *chip,
unsigned int offset, int value)
{
struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
- unsigned int reg = OUTPUT_EN;
+ unsigned int en_offset = offset;
+ unsigned int reg = OUTPUT_VAL;
unsigned int mask, val, ret;
armada_37xx_update_reg(&reg, &offset);
mask = BIT(offset);
+ val = value ? mask : 0;
- ret = regmap_update_bits(info->regmap, reg, mask, mask);
-
+ ret = regmap_update_bits(info->regmap, reg, mask, val);
if (ret)
return ret;
- reg = OUTPUT_VAL;
- val = value ? mask : 0;
- regmap_update_bits(info->regmap, reg, mask, val);
+ reg = OUTPUT_EN;
+ armada_37xx_update_reg(&reg, &en_offset);
- return 0;
+ return regmap_update_bits(info->regmap, reg, mask, mask);
}
static int armada_37xx_gpio_get(struct gpio_chip *chip, unsigned int offset)
@@ -440,17 +441,20 @@ static int armada_37xx_gpio_get(struct gpio_chip *chip, unsigned int offset)
struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
unsigned int reg = INPUT_VAL;
unsigned int val, mask;
+ int ret;
armada_37xx_update_reg(&reg, &offset);
mask = BIT(offset);
- regmap_read(info->regmap, reg, &val);
+ ret = regmap_read(info->regmap, reg, &val);
+ if (ret)
+ return ret;
return (val & mask) != 0;
}
-static void armada_37xx_gpio_set(struct gpio_chip *chip, unsigned int offset,
- int value)
+static int armada_37xx_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
unsigned int reg = OUTPUT_VAL;
@@ -460,7 +464,7 @@ static void armada_37xx_gpio_set(struct gpio_chip *chip, unsigned int offset,
mask = BIT(offset);
val = value ? mask : 0;
- regmap_update_bits(info->regmap, reg, mask, val);
+ return regmap_update_bits(info->regmap, reg, mask, val);
}
static int armada_37xx_pmx_gpio_set_direction(struct pinctrl_dev *pctldev,
@@ -469,16 +473,17 @@ static int armada_37xx_pmx_gpio_set_direction(struct pinctrl_dev *pctldev,
{
struct armada_37xx_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
struct gpio_chip *chip = range->gc;
+ int ret;
dev_dbg(info->dev, "gpio_direction for pin %u as %s-%d to %s\n",
offset, range->name, offset, input ? "input" : "output");
if (input)
- armada_37xx_gpio_direction_input(chip, offset);
+ ret = armada_37xx_gpio_direction_input(chip, offset);
else
- armada_37xx_gpio_direction_output(chip, offset, 0);
+ ret = armada_37xx_gpio_direction_output(chip, offset, 0);
- return 0;
+ return ret;
}
static int armada_37xx_gpio_request_enable(struct pinctrl_dev *pctldev,
@@ -513,7 +518,7 @@ static const struct pinmux_ops armada_37xx_pmx_ops = {
static const struct gpio_chip armada_37xx_gpiolib_chip = {
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
- .set = armada_37xx_gpio_set,
+ .set_rv = armada_37xx_gpio_set,
.get = armada_37xx_gpio_get,
.get_direction = armada_37xx_gpio_get_direction,
.direction_input = armada_37xx_gpio_direction_input,
diff --git a/drivers/pinctrl/nomadik/Kconfig b/drivers/pinctrl/nomadik/Kconfig
index aafecf348670..1b4fe2a4c302 100644
--- a/drivers/pinctrl/nomadik/Kconfig
+++ b/drivers/pinctrl/nomadik/Kconfig
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-2.0-only
-if ARCH_U8500
+if (ARCH_U8500 || COMPILE_TEST)
config PINCTRL_ABX500
bool "ST-Ericsson ABx500 family Mixed Signal Circuit gpio functions"
@@ -10,11 +10,11 @@ config PINCTRL_ABX500
config PINCTRL_AB8500
bool "AB8500 pin controller driver"
- depends on PINCTRL_ABX500 && ARCH_U8500
+ depends on PINCTRL_ABX500 && (ARCH_U8500 || COMPILE_TEST)
config PINCTRL_AB8505
bool "AB8505 pin controller driver"
- depends on PINCTRL_ABX500 && ARCH_U8500
+ depends on PINCTRL_ABX500 && (ARCH_U8500 || COMPILE_TEST)
endif
diff --git a/drivers/pinctrl/nomadik/pinctrl-abx500.c b/drivers/pinctrl/nomadik/pinctrl-abx500.c
index 8cd4ba5cf0bd..2f55f83127cf 100644
--- a/drivers/pinctrl/nomadik/pinctrl-abx500.c
+++ b/drivers/pinctrl/nomadik/pinctrl-abx500.c
@@ -167,14 +167,10 @@ out:
return bit;
}
-static void abx500_gpio_set(struct gpio_chip *chip, unsigned offset, int val)
+static int abx500_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int val)
{
- struct abx500_pinctrl *pct = gpiochip_get_data(chip);
- int ret;
-
- ret = abx500_gpio_set_bits(chip, AB8500_GPIO_OUT1_REG, offset, val);
- if (ret < 0)
- dev_err(pct->dev, "%s write failed (%d)\n", __func__, ret);
+ return abx500_gpio_set_bits(chip, AB8500_GPIO_OUT1_REG, offset, val);
}
static int abx500_gpio_direction_output(struct gpio_chip *chip,
@@ -540,7 +536,7 @@ static const struct gpio_chip abx500gpio_chip = {
.direction_input = abx500_gpio_direction_input,
.get = abx500_gpio_get,
.direction_output = abx500_gpio_direction_output,
- .set = abx500_gpio_set,
+ .set_rv = abx500_gpio_set,
.to_irq = abx500_gpio_to_irq,
.dbg_show = abx500_gpio_dbg_show,
};
diff --git a/drivers/pinctrl/pinconf.h b/drivers/pinctrl/pinconf.h
index a171195b3615..e1ae71610526 100644
--- a/drivers/pinctrl/pinconf.h
+++ b/drivers/pinctrl/pinconf.h
@@ -142,4 +142,21 @@ int pinconf_generic_parse_dt_config(struct device_node *np,
int pinconf_generic_parse_dt_pinmux(struct device_node *np, struct device *dev,
unsigned int **pid, unsigned int **pmux,
unsigned int *npins);
+#else
+static inline int
+pinconf_generic_parse_dt_config(struct device_node *np,
+ struct pinctrl_dev *pctldev,
+ unsigned long **configs,
+ unsigned int *nconfigs)
+{
+ return -ENOTSUPP;
+}
+
+static inline int
+pinconf_generic_parse_dt_pinmux(struct device_node *np, struct device *dev,
+ unsigned int **pid, unsigned int **pmux,
+ unsigned int *npins)
+{
+ return -ENOTSUPP;
+}
#endif
diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c
index 1d7fdcdec4c8..5cf3db6d78b7 100644
--- a/drivers/pinctrl/pinctrl-amd.c
+++ b/drivers/pinctrl/pinctrl-amd.c
@@ -37,6 +37,10 @@
#include "pinctrl-utils.h"
#include "pinctrl-amd.h"
+#ifdef CONFIG_SUSPEND
+static struct amd_gpio *pinctrl_dev;
+#endif
+
static int amd_gpio_get_direction(struct gpio_chip *gc, unsigned offset)
{
unsigned long flags;
@@ -101,7 +105,8 @@ static int amd_gpio_get_value(struct gpio_chip *gc, unsigned offset)
return !!(pin_reg & BIT(PIN_STS_OFF));
}
-static void amd_gpio_set_value(struct gpio_chip *gc, unsigned offset, int value)
+static int amd_gpio_set_value(struct gpio_chip *gc, unsigned int offset,
+ int value)
{
u32 pin_reg;
unsigned long flags;
@@ -115,6 +120,8 @@ static void amd_gpio_set_value(struct gpio_chip *gc, unsigned offset, int value)
pin_reg &= ~BIT(OUTPUT_VALUE_OFF);
writel(pin_reg, gpio_dev->base + offset * 4);
raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
+
+ return 0;
}
static int amd_gpio_set_debounce(struct amd_gpio *gpio_dev, unsigned int offset,
@@ -890,6 +897,44 @@ static void amd_gpio_irq_init(struct amd_gpio *gpio_dev)
}
}
+#if defined(CONFIG_SUSPEND) && defined(CONFIG_ACPI)
+static void amd_gpio_check_pending(void)
+{
+ struct amd_gpio *gpio_dev = pinctrl_dev;
+ struct pinctrl_desc *desc = gpio_dev->pctrl->desc;
+ int i;
+
+ if (!pm_debug_messages_on)
+ return;
+
+ for (i = 0; i < desc->npins; i++) {
+ int pin = desc->pins[i].number;
+ u32 tmp;
+
+ tmp = readl(gpio_dev->base + pin * 4);
+ if (tmp & PIN_IRQ_PENDING)
+ pm_pr_dbg("%s: GPIO %d is active: 0x%x.\n", __func__, pin, tmp);
+ }
+}
+
+static struct acpi_s2idle_dev_ops pinctrl_amd_s2idle_dev_ops = {
+ .check = amd_gpio_check_pending,
+};
+
+static void amd_gpio_register_s2idle_ops(void)
+{
+ acpi_register_lps0_dev(&pinctrl_amd_s2idle_dev_ops);
+}
+
+static void amd_gpio_unregister_s2idle_ops(void)
+{
+ acpi_unregister_lps0_dev(&pinctrl_amd_s2idle_dev_ops);
+}
+#else
+static inline void amd_gpio_register_s2idle_ops(void) {}
+static inline void amd_gpio_unregister_s2idle_ops(void) {}
+#endif
+
#ifdef CONFIG_PM_SLEEP
static bool amd_gpio_should_save(struct amd_gpio *gpio_dev, unsigned int pin)
{
@@ -942,6 +987,9 @@ static int amd_gpio_suspend_hibernate_common(struct device *dev, bool is_suspend
static int amd_gpio_suspend(struct device *dev)
{
+#ifdef CONFIG_SUSPEND
+ pinctrl_dev = dev_get_drvdata(dev);
+#endif
return amd_gpio_suspend_hibernate_common(dev, true);
}
@@ -1115,7 +1163,7 @@ static int amd_gpio_probe(struct platform_device *pdev)
if (gpio_dev->irq < 0)
return gpio_dev->irq;
-#ifdef CONFIG_PM_SLEEP
+#ifdef CONFIG_SUSPEND
gpio_dev->saved_regs = devm_kcalloc(&pdev->dev, amd_pinctrl_desc.npins,
sizeof(*gpio_dev->saved_regs),
GFP_KERNEL);
@@ -1128,7 +1176,7 @@ static int amd_gpio_probe(struct platform_device *pdev)
gpio_dev->gc.direction_input = amd_gpio_direction_input;
gpio_dev->gc.direction_output = amd_gpio_direction_output;
gpio_dev->gc.get = amd_gpio_get_value;
- gpio_dev->gc.set = amd_gpio_set_value;
+ gpio_dev->gc.set_rv = amd_gpio_set_value;
gpio_dev->gc.set_config = amd_gpio_set_config;
gpio_dev->gc.dbg_show = amd_gpio_dbg_show;
@@ -1181,6 +1229,7 @@ static int amd_gpio_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, gpio_dev);
acpi_register_wakeup_handler(gpio_dev->irq, amd_gpio_check_wake, gpio_dev);
+ amd_gpio_register_s2idle_ops();
dev_dbg(&pdev->dev, "amd gpio driver loaded\n");
return ret;
@@ -1199,6 +1248,7 @@ static void amd_gpio_remove(struct platform_device *pdev)
gpiochip_remove(&gpio_dev->gc);
acpi_unregister_wakeup_handler(amd_gpio_check_wake, gpio_dev);
+ amd_gpio_unregister_s2idle_ops();
}
#ifdef CONFIG_ACPI
diff --git a/drivers/pinctrl/pinctrl-apple-gpio.c b/drivers/pinctrl/pinctrl-apple-gpio.c
index f861e63f4115..0f551d67d482 100644
--- a/drivers/pinctrl/pinctrl-apple-gpio.c
+++ b/drivers/pinctrl/pinctrl-apple-gpio.c
@@ -66,7 +66,7 @@ struct apple_gpio_pinctrl {
#define REG_GPIOx_DRIVE_STRENGTH1 GENMASK(23, 22)
#define REG_IRQ(g, x) (0x800 + 0x40 * (g) + 4 * ((x) >> 5))
-struct regmap_config regmap_config = {
+static const struct regmap_config regmap_config = {
.reg_bits = 32,
.val_bits = 32,
.reg_stride = 4,
@@ -79,13 +79,13 @@ struct regmap_config regmap_config = {
/* No locking needed to mask/unmask IRQs as the interrupt mode is per pin-register. */
static void apple_gpio_set_reg(struct apple_gpio_pinctrl *pctl,
- unsigned int pin, u32 mask, u32 value)
+ unsigned int pin, u32 mask, u32 value)
{
regmap_update_bits(pctl->map, REG_GPIO(pin), mask, value);
}
static u32 apple_gpio_get_reg(struct apple_gpio_pinctrl *pctl,
- unsigned int pin)
+ unsigned int pin)
{
int ret;
u32 val;
@@ -100,9 +100,9 @@ static u32 apple_gpio_get_reg(struct apple_gpio_pinctrl *pctl,
/* Pin controller functions */
static int apple_gpio_dt_node_to_map(struct pinctrl_dev *pctldev,
- struct device_node *node,
- struct pinctrl_map **map,
- unsigned *num_maps)
+ struct device_node *node,
+ struct pinctrl_map **map,
+ unsigned *num_maps)
{
unsigned reserved_maps;
struct apple_gpio_pinctrl *pctl;
@@ -147,8 +147,8 @@ static int apple_gpio_dt_node_to_map(struct pinctrl_dev *pctldev,
group_name = pinctrl_generic_get_group_name(pctldev, pin);
function_name = pinmux_generic_get_function_name(pctl->pctldev, func);
ret = pinctrl_utils_add_map_mux(pctl->pctldev, map,
- &reserved_maps, num_maps,
- group_name, function_name);
+ &reserved_maps, num_maps,
+ group_name, function_name);
if (ret)
goto free_map;
}
@@ -171,7 +171,7 @@ static const struct pinctrl_ops apple_gpio_pinctrl_ops = {
/* Pin multiplexer functions */
static int apple_gpio_pinmux_set(struct pinctrl_dev *pctldev, unsigned func,
- unsigned group)
+ unsigned group)
{
struct apple_gpio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
@@ -237,7 +237,7 @@ static int apple_gpio_direction_input(struct gpio_chip *chip, unsigned int offse
}
static int apple_gpio_direction_output(struct gpio_chip *chip,
- unsigned int offset, int value)
+ unsigned int offset, int value)
{
struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip);
@@ -282,7 +282,7 @@ static void apple_gpio_irq_mask(struct irq_data *data)
struct apple_gpio_pinctrl *pctl = gpiochip_get_data(gc);
apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_MODE,
- FIELD_PREP(REG_GPIOx_MODE, REG_GPIOx_IN_IRQ_OFF));
+ FIELD_PREP(REG_GPIOx_MODE, REG_GPIOx_IN_IRQ_OFF));
gpiochip_disable_irq(gc, data->hwirq);
}
@@ -294,7 +294,7 @@ static void apple_gpio_irq_unmask(struct irq_data *data)
gpiochip_enable_irq(gc, data->hwirq);
apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_MODE,
- FIELD_PREP(REG_GPIOx_MODE, irqtype));
+ FIELD_PREP(REG_GPIOx_MODE, irqtype));
}
static unsigned int apple_gpio_irq_startup(struct irq_data *data)
@@ -303,7 +303,7 @@ static unsigned int apple_gpio_irq_startup(struct irq_data *data)
struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip);
apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_GRP,
- FIELD_PREP(REG_GPIOx_GRP, 0));
+ FIELD_PREP(REG_GPIOx_GRP, 0));
apple_gpio_direction_input(chip, data->hwirq);
apple_gpio_irq_unmask(data);
@@ -320,7 +320,7 @@ static int apple_gpio_irq_set_type(struct irq_data *data, unsigned int type)
return -EINVAL;
apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_MODE,
- FIELD_PREP(REG_GPIOx_MODE, irqtype));
+ FIELD_PREP(REG_GPIOx_MODE, irqtype));
if (type & IRQ_TYPE_LEVEL_MASK)
irq_set_handler_locked(data, handle_level_irq);
@@ -429,7 +429,7 @@ static int apple_gpio_pinctrl_probe(struct platform_device *pdev)
unsigned int npins;
const char **pin_names;
unsigned int *pin_nums;
- static const char* pinmux_functions[] = {
+ static const char *pinmux_functions[] = {
"gpio", "periph1", "periph2", "periph3"
};
unsigned int i, nirqs = 0;
diff --git a/drivers/pinctrl/pinctrl-at91-pio4.c b/drivers/pinctrl/pinctrl-at91-pio4.c
index 8b01d312305a..ca8a54a43ff5 100644
--- a/drivers/pinctrl/pinctrl-at91-pio4.c
+++ b/drivers/pinctrl/pinctrl-at91-pio4.c
@@ -390,7 +390,7 @@ static int atmel_gpio_direction_output(struct gpio_chip *chip,
return 0;
}
-static void atmel_gpio_set(struct gpio_chip *chip, unsigned int offset, int val)
+static int atmel_gpio_set(struct gpio_chip *chip, unsigned int offset, int val)
{
struct atmel_pioctrl *atmel_pioctrl = gpiochip_get_data(chip);
struct atmel_pin *pin = atmel_pioctrl->pins[offset];
@@ -398,10 +398,12 @@ static void atmel_gpio_set(struct gpio_chip *chip, unsigned int offset, int val)
atmel_gpio_write(atmel_pioctrl, pin->bank,
val ? ATMEL_PIO_SODR : ATMEL_PIO_CODR,
BIT(pin->line));
+
+ return 0;
}
-static void atmel_gpio_set_multiple(struct gpio_chip *chip, unsigned long *mask,
- unsigned long *bits)
+static int atmel_gpio_set_multiple(struct gpio_chip *chip, unsigned long *mask,
+ unsigned long *bits)
{
struct atmel_pioctrl *atmel_pioctrl = gpiochip_get_data(chip);
unsigned int bank;
@@ -431,6 +433,8 @@ static void atmel_gpio_set_multiple(struct gpio_chip *chip, unsigned long *mask,
bits[word] >>= ATMEL_PIO_NPINS_PER_BANK;
#endif
}
+
+ return 0;
}
static struct gpio_chip atmel_gpio_chip = {
@@ -438,8 +442,8 @@ static struct gpio_chip atmel_gpio_chip = {
.get = atmel_gpio_get,
.get_multiple = atmel_gpio_get_multiple,
.direction_output = atmel_gpio_direction_output,
- .set = atmel_gpio_set,
- .set_multiple = atmel_gpio_set_multiple,
+ .set_rv = atmel_gpio_set,
+ .set_multiple_rv = atmel_gpio_set_multiple,
.to_irq = atmel_gpio_to_irq,
.base = 0,
};
@@ -609,8 +613,10 @@ static int atmel_pctl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
if (ret)
goto exit;
- pinctrl_utils_add_map_mux(pctldev, map, reserved_maps, num_maps,
+ ret = pinctrl_utils_add_map_mux(pctldev, map, reserved_maps, num_maps,
group, func);
+ if (ret)
+ goto exit;
if (num_configs) {
ret = pinctrl_utils_add_map_configs(pctldev, map,
@@ -1206,7 +1212,7 @@ static int atmel_pinctrl_probe(struct platform_device *pdev)
dev_dbg(dev, "bank %i: irq=%d\n", i, ret);
}
- atmel_pioctrl->irq_domain = irq_domain_add_linear(dev->of_node,
+ atmel_pioctrl->irq_domain = irq_domain_create_linear(of_fwnode_handle(dev->of_node),
atmel_pioctrl->gpio_chip->ngpio,
&irq_domain_simple_ops, NULL);
if (!atmel_pioctrl->irq_domain)
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index 93ab277d9943..6c2727bd55bc 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -1449,18 +1449,19 @@ static int at91_gpio_get(struct gpio_chip *chip, unsigned offset)
return (pdsr & mask) != 0;
}
-static void at91_gpio_set(struct gpio_chip *chip, unsigned offset,
- int val)
+static int at91_gpio_set(struct gpio_chip *chip, unsigned int offset, int val)
{
struct at91_gpio_chip *at91_gpio = gpiochip_get_data(chip);
void __iomem *pio = at91_gpio->regbase;
unsigned mask = 1 << offset;
writel_relaxed(mask, pio + (val ? PIO_SODR : PIO_CODR));
+
+ return 0;
}
-static void at91_gpio_set_multiple(struct gpio_chip *chip,
- unsigned long *mask, unsigned long *bits)
+static int at91_gpio_set_multiple(struct gpio_chip *chip,
+ unsigned long *mask, unsigned long *bits)
{
struct at91_gpio_chip *at91_gpio = gpiochip_get_data(chip);
void __iomem *pio = at91_gpio->regbase;
@@ -1472,6 +1473,8 @@ static void at91_gpio_set_multiple(struct gpio_chip *chip,
writel_relaxed(set_mask, pio + PIO_SODR);
writel_relaxed(clear_mask, pio + PIO_CODR);
+
+ return 0;
}
static int at91_gpio_direction_output(struct gpio_chip *chip, unsigned offset,
@@ -1798,8 +1801,8 @@ static const struct gpio_chip at91_gpio_template = {
.direction_input = at91_gpio_direction_input,
.get = at91_gpio_get,
.direction_output = at91_gpio_direction_output,
- .set = at91_gpio_set,
- .set_multiple = at91_gpio_set_multiple,
+ .set_rv = at91_gpio_set,
+ .set_multiple_rv = at91_gpio_set_multiple,
.dbg_show = at91_gpio_dbg_show,
.can_sleep = false,
.ngpio = MAX_NB_GPIO_PER_BANK,
@@ -1819,12 +1822,16 @@ static int at91_gpio_probe(struct platform_device *pdev)
struct at91_gpio_chip *at91_chip = NULL;
struct gpio_chip *chip;
struct pinctrl_gpio_range *range;
+ int alias_idx;
int ret = 0;
int irq, i;
- int alias_idx = of_alias_get_id(np, "gpio");
uint32_t ngpio;
char **names;
+ alias_idx = of_alias_get_id(np, "gpio");
+ if (alias_idx < 0)
+ return alias_idx;
+
BUG_ON(alias_idx >= ARRAY_SIZE(gpio_chips));
if (gpio_chips[alias_idx])
return dev_err_probe(dev, -EBUSY, "%d slot is occupied.\n", alias_idx);
diff --git a/drivers/pinctrl/pinctrl-axp209.c b/drivers/pinctrl/pinctrl-axp209.c
index 2b4805e74eed..fff408b60c4a 100644
--- a/drivers/pinctrl/pinctrl-axp209.c
+++ b/drivers/pinctrl/pinctrl-axp209.c
@@ -192,34 +192,30 @@ static int axp20x_gpio_get_direction(struct gpio_chip *chip,
static int axp20x_gpio_output(struct gpio_chip *chip, unsigned int offset,
int value)
{
- chip->set(chip, offset, value);
-
- return 0;
+ return chip->set_rv(chip, offset, value);
}
-static void axp20x_gpio_set(struct gpio_chip *chip, unsigned int offset,
- int value)
+static int axp20x_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct axp20x_pctl *pctl = gpiochip_get_data(chip);
int reg;
/* AXP209 has GPIO3 status sharing the settings register */
- if (offset == 3) {
- regmap_update_bits(pctl->regmap, AXP20X_GPIO3_CTRL,
- AXP20X_GPIO3_FUNCTIONS,
- value ? AXP20X_GPIO3_FUNCTION_OUT_HIGH :
- AXP20X_GPIO3_FUNCTION_OUT_LOW);
- return;
- }
+ if (offset == 3)
+ return regmap_update_bits(pctl->regmap, AXP20X_GPIO3_CTRL,
+ AXP20X_GPIO3_FUNCTIONS,
+ value ?
+ AXP20X_GPIO3_FUNCTION_OUT_HIGH :
+ AXP20X_GPIO3_FUNCTION_OUT_LOW);
reg = axp20x_gpio_get_reg(offset);
if (reg < 0)
- return;
+ return reg;
- regmap_update_bits(pctl->regmap, reg,
- AXP20X_GPIO_FUNCTIONS,
- value ? AXP20X_GPIO_FUNCTION_OUT_HIGH :
- AXP20X_GPIO_FUNCTION_OUT_LOW);
+ return regmap_update_bits(pctl->regmap, reg, AXP20X_GPIO_FUNCTIONS,
+ value ? AXP20X_GPIO_FUNCTION_OUT_HIGH :
+ AXP20X_GPIO_FUNCTION_OUT_LOW);
}
static int axp20x_pmx_set(struct pinctrl_dev *pctldev, unsigned int offset,
@@ -229,12 +225,11 @@ static int axp20x_pmx_set(struct pinctrl_dev *pctldev, unsigned int offset,
int reg;
/* AXP209 GPIO3 settings have a different layout */
- if (offset == 3) {
+ if (offset == 3)
return regmap_update_bits(pctl->regmap, AXP20X_GPIO3_CTRL,
AXP20X_GPIO3_FUNCTIONS,
config == AXP20X_MUX_GPIO_OUT ? AXP20X_GPIO3_FUNCTION_OUT_LOW :
AXP20X_GPIO3_FUNCTION_INPUT);
- }
reg = axp20x_gpio_get_reg(offset);
if (reg < 0)
@@ -468,7 +463,7 @@ static int axp20x_pctl_probe(struct platform_device *pdev)
pctl->chip.owner = THIS_MODULE;
pctl->chip.get = axp20x_gpio_get;
pctl->chip.get_direction = axp20x_gpio_get_direction;
- pctl->chip.set = axp20x_gpio_set;
+ pctl->chip.set_rv = axp20x_gpio_set;
pctl->chip.direction_input = pinctrl_gpio_direction_input;
pctl->chip.direction_output = axp20x_gpio_output;
diff --git a/drivers/pinctrl/pinctrl-cy8c95x0.c b/drivers/pinctrl/pinctrl-cy8c95x0.c
index 3cfbcaee9e65..8a2fd632bdd4 100644
--- a/drivers/pinctrl/pinctrl-cy8c95x0.c
+++ b/drivers/pinctrl/pinctrl-cy8c95x0.c
@@ -742,14 +742,15 @@ static int cy8c95x0_gpio_get_value(struct gpio_chip *gc, unsigned int off)
return reg_val ? 1 : 0;
}
-static void cy8c95x0_gpio_set_value(struct gpio_chip *gc, unsigned int off,
- int val)
+static int cy8c95x0_gpio_set_value(struct gpio_chip *gc, unsigned int off,
+ int val)
{
struct cy8c95x0_pinctrl *chip = gpiochip_get_data(gc);
u8 port = cypress_get_port(chip, off);
u8 bit = cypress_get_pin_mask(chip, off);
- cy8c95x0_regmap_write_bits(chip, CY8C95X0_OUTPUT, port, bit, val ? bit : 0);
+ return cy8c95x0_regmap_write_bits(chip, CY8C95X0_OUTPUT, port, bit,
+ val ? bit : 0);
}
static int cy8c95x0_gpio_get_direction(struct gpio_chip *gc, unsigned int off)
@@ -908,12 +909,12 @@ static int cy8c95x0_gpio_get_multiple(struct gpio_chip *gc,
return cy8c95x0_read_regs_mask(chip, CY8C95X0_INPUT, bits, mask);
}
-static void cy8c95x0_gpio_set_multiple(struct gpio_chip *gc,
- unsigned long *mask, unsigned long *bits)
+static int cy8c95x0_gpio_set_multiple(struct gpio_chip *gc,
+ unsigned long *mask, unsigned long *bits)
{
struct cy8c95x0_pinctrl *chip = gpiochip_get_data(gc);
- cy8c95x0_write_regs_mask(chip, CY8C95X0_OUTPUT, bits, mask);
+ return cy8c95x0_write_regs_mask(chip, CY8C95X0_OUTPUT, bits, mask);
}
static int cy8c95x0_add_pin_ranges(struct gpio_chip *gc)
@@ -938,10 +939,10 @@ static int cy8c95x0_setup_gpiochip(struct cy8c95x0_pinctrl *chip)
gc->direction_input = cy8c95x0_gpio_direction_input;
gc->direction_output = cy8c95x0_gpio_direction_output;
gc->get = cy8c95x0_gpio_get_value;
- gc->set = cy8c95x0_gpio_set_value;
+ gc->set_rv = cy8c95x0_gpio_set_value;
gc->get_direction = cy8c95x0_gpio_get_direction;
gc->get_multiple = cy8c95x0_gpio_get_multiple;
- gc->set_multiple = cy8c95x0_gpio_set_multiple;
+ gc->set_multiple_rv = cy8c95x0_gpio_set_multiple;
gc->set_config = gpiochip_generic_config;
gc->can_sleep = true;
gc->add_pin_ranges = cy8c95x0_add_pin_ranges;
diff --git a/drivers/pinctrl/pinctrl-ingenic.c b/drivers/pinctrl/pinctrl-ingenic.c
index a9e48eac15f6..3c660471ec69 100644
--- a/drivers/pinctrl/pinctrl-ingenic.c
+++ b/drivers/pinctrl/pinctrl-ingenic.c
@@ -3800,12 +3800,14 @@ static void ingenic_gpio_irq_handler(struct irq_desc *desc)
chained_irq_exit(irq_chip, desc);
}
-static void ingenic_gpio_set(struct gpio_chip *gc,
- unsigned int offset, int value)
+static int ingenic_gpio_set(struct gpio_chip *gc, unsigned int offset,
+ int value)
{
struct ingenic_gpio_chip *jzgc = gpiochip_get_data(gc);
ingenic_gpio_set_value(jzgc, offset, value);
+
+ return 0;
}
static int ingenic_gpio_get(struct gpio_chip *gc, unsigned int offset)
@@ -4449,7 +4451,7 @@ static int __init ingenic_gpio_probe(struct ingenic_pinctrl *jzpc,
jzgc->gc.fwnode = fwnode;
jzgc->gc.owner = THIS_MODULE;
- jzgc->gc.set = ingenic_gpio_set;
+ jzgc->gc.set_rv = ingenic_gpio_set;
jzgc->gc.get = ingenic_gpio_get;
jzgc->gc.direction_input = pinctrl_gpio_direction_input;
jzgc->gc.direction_output = ingenic_gpio_direction_output;
diff --git a/drivers/pinctrl/pinctrl-keembay.c b/drivers/pinctrl/pinctrl-keembay.c
index b693f4787044..0d7cc8280ea2 100644
--- a/drivers/pinctrl/pinctrl-keembay.c
+++ b/drivers/pinctrl/pinctrl-keembay.c
@@ -1268,7 +1268,7 @@ static void keembay_gpio_irq_handler(struct irq_desc *desc)
for_each_set_clump8(bit, clump, &reg, BITS_PER_TYPE(typeof(reg))) {
pin = clump & ~KEEMBAY_GPIO_IRQ_ENABLE;
val = keembay_read_pin(kpc->base0 + KEEMBAY_GPIO_DATA_IN, pin);
- kmb_irq = irq_linear_revmap(gc->irq.domain, pin);
+ kmb_irq = irq_find_mapping(gc->irq.domain, pin);
/* Checks if the interrupt is enabled */
if (val && (clump & KEEMBAY_GPIO_IRQ_ENABLE))
diff --git a/drivers/pinctrl/pinctrl-mcp23s08.c b/drivers/pinctrl/pinctrl-mcp23s08.c
index 4d1f41488017..c2f4b16f42d2 100644
--- a/drivers/pinctrl/pinctrl-mcp23s08.c
+++ b/drivers/pinctrl/pinctrl-mcp23s08.c
@@ -636,6 +636,14 @@ int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
mcp->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
+ /*
+ * Reset the chip - we don't really know what state it's in, so reset
+ * all pins to input first to prevent surprises.
+ */
+ ret = mcp_write(mcp, MCP_IODIR, mcp->chip.ngpio == 16 ? 0xFFFF : 0xFF);
+ if (ret < 0)
+ return ret;
+
/* verify MCP_IOCON.SEQOP = 0, so sequential reads work,
* and MCP_IOCON.HAEN = 1, so we work with all chips.
*/
diff --git a/drivers/pinctrl/pinctrl-microchip-sgpio.c b/drivers/pinctrl/pinctrl-microchip-sgpio.c
index a60db93b61b1..88c2f14cfc6b 100644
--- a/drivers/pinctrl/pinctrl-microchip-sgpio.c
+++ b/drivers/pinctrl/pinctrl-microchip-sgpio.c
@@ -555,10 +555,10 @@ static int microchip_sgpio_get_direction(struct gpio_chip *gc, unsigned int gpio
return bank->is_input ? GPIO_LINE_DIRECTION_IN : GPIO_LINE_DIRECTION_OUT;
}
-static void microchip_sgpio_set_value(struct gpio_chip *gc,
- unsigned int gpio, int value)
+static int microchip_sgpio_set_value(struct gpio_chip *gc, unsigned int gpio,
+ int value)
{
- microchip_sgpio_direction_output(gc, gpio, value);
+ return microchip_sgpio_direction_output(gc, gpio, value);
}
static int microchip_sgpio_get_value(struct gpio_chip *gc, unsigned int gpio)
@@ -858,7 +858,7 @@ static int microchip_sgpio_register_bank(struct device *dev,
gc->direction_input = microchip_sgpio_direction_input;
gc->direction_output = microchip_sgpio_direction_output;
gc->get = microchip_sgpio_get_value;
- gc->set = microchip_sgpio_set_value;
+ gc->set_rv = microchip_sgpio_set_value;
gc->request = gpiochip_generic_request;
gc->free = gpiochip_generic_free;
gc->of_xlate = microchip_sgpio_of_xlate;
diff --git a/drivers/pinctrl/pinctrl-ocelot.c b/drivers/pinctrl/pinctrl-ocelot.c
index 329d54b11529..fbb3d43746bb 100644
--- a/drivers/pinctrl/pinctrl-ocelot.c
+++ b/drivers/pinctrl/pinctrl-ocelot.c
@@ -1950,17 +1950,18 @@ static int ocelot_gpio_get(struct gpio_chip *chip, unsigned int offset)
return !!(val & BIT(offset % 32));
}
-static void ocelot_gpio_set(struct gpio_chip *chip, unsigned int offset,
- int value)
+static int ocelot_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct ocelot_pinctrl *info = gpiochip_get_data(chip);
if (value)
- regmap_write(info->map, REG(OCELOT_GPIO_OUT_SET, info, offset),
- BIT(offset % 32));
- else
- regmap_write(info->map, REG(OCELOT_GPIO_OUT_CLR, info, offset),
- BIT(offset % 32));
+ return regmap_write(info->map,
+ REG(OCELOT_GPIO_OUT_SET, info, offset),
+ BIT(offset % 32));
+
+ return regmap_write(info->map, REG(OCELOT_GPIO_OUT_CLR, info, offset),
+ BIT(offset % 32));
}
static int ocelot_gpio_get_direction(struct gpio_chip *chip,
@@ -1996,7 +1997,7 @@ static int ocelot_gpio_direction_output(struct gpio_chip *chip,
static const struct gpio_chip ocelot_gpiolib_chip = {
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
- .set = ocelot_gpio_set,
+ .set_rv = ocelot_gpio_set,
.get = ocelot_gpio_get,
.get_direction = ocelot_gpio_get_direction,
.direction_input = pinctrl_gpio_direction_input,
diff --git a/drivers/pinctrl/pinctrl-pistachio.c b/drivers/pinctrl/pinctrl-pistachio.c
index 8c50e0091b32..e7bf60960961 100644
--- a/drivers/pinctrl/pinctrl-pistachio.c
+++ b/drivers/pinctrl/pinctrl-pistachio.c
@@ -1186,12 +1186,14 @@ static int pistachio_gpio_get(struct gpio_chip *chip, unsigned offset)
return !!(gpio_readl(bank, reg) & BIT(offset));
}
-static void pistachio_gpio_set(struct gpio_chip *chip, unsigned offset,
- int value)
+static int pistachio_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct pistachio_gpio_bank *bank = gpiochip_get_data(chip);
gpio_mask_writel(bank, GPIO_OUTPUT, offset, !!value);
+
+ return 0;
}
static int pistachio_gpio_direction_input(struct gpio_chip *chip,
@@ -1326,7 +1328,7 @@ static void pistachio_gpio_irq_handler(struct irq_desc *desc)
.direction_input = pistachio_gpio_direction_input, \
.direction_output = pistachio_gpio_direction_output, \
.get = pistachio_gpio_get, \
- .set = pistachio_gpio_set, \
+ .set_rv = pistachio_gpio_set, \
.base = _pin_base, \
.ngpio = _npins, \
}, \
diff --git a/drivers/pinctrl/pinctrl-rk805.c b/drivers/pinctrl/pinctrl-rk805.c
index c42f1bf93404..fc0e330b1d11 100644
--- a/drivers/pinctrl/pinctrl-rk805.c
+++ b/drivers/pinctrl/pinctrl-rk805.c
@@ -325,26 +325,26 @@ static int rk805_gpio_get(struct gpio_chip *chip, unsigned int offset)
return !!(val & pci->pin_cfg[offset].val_msk);
}
-static void rk805_gpio_set(struct gpio_chip *chip,
- unsigned int offset,
- int value)
+static int rk805_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct rk805_pctrl_info *pci = gpiochip_get_data(chip);
- int ret;
- ret = regmap_update_bits(pci->rk808->regmap,
- pci->pin_cfg[offset].reg,
- pci->pin_cfg[offset].val_msk,
- value ? pci->pin_cfg[offset].val_msk : 0);
- if (ret)
- dev_err(pci->dev, "set gpio%d value %d failed\n",
- offset, value);
+ return regmap_update_bits(pci->rk808->regmap,
+ pci->pin_cfg[offset].reg,
+ pci->pin_cfg[offset].val_msk,
+ value ? pci->pin_cfg[offset].val_msk : 0);
}
static int rk805_gpio_direction_output(struct gpio_chip *chip,
unsigned int offset, int value)
{
- rk805_gpio_set(chip, offset, value);
+ int ret;
+
+ ret = rk805_gpio_set(chip, offset, value);
+ if (ret)
+ return ret;
+
return pinctrl_gpio_direction_output(chip, offset);
}
@@ -378,7 +378,7 @@ static const struct gpio_chip rk805_gpio_chip = {
.free = gpiochip_generic_free,
.get_direction = rk805_gpio_get_direction,
.get = rk805_gpio_get,
- .set = rk805_gpio_set,
+ .set_rv = rk805_gpio_set,
.direction_input = pinctrl_gpio_direction_input,
.direction_output = rk805_gpio_direction_output,
.can_sleep = true,
diff --git a/drivers/pinctrl/pinctrl-scmi.c b/drivers/pinctrl/pinctrl-scmi.c
index df4bbcd7d1d5..383681041e4c 100644
--- a/drivers/pinctrl/pinctrl-scmi.c
+++ b/drivers/pinctrl/pinctrl-scmi.c
@@ -507,6 +507,7 @@ static int pinctrl_scmi_get_pins(struct scmi_pinctrl *pmx,
static const char * const scmi_pinctrl_blocklist[] = {
"fsl,imx95",
+ "fsl,imx94",
NULL
};
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index 5be14dc979e2..5cda6201b60f 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -1611,15 +1611,16 @@ static int pcs_irq_init_chained_handler(struct pcs_device *pcs,
/*
* We can use the register offset as the hardirq
- * number as irq_domain_add_simple maps them lazily.
+ * number as irq_domain_create_simple maps them lazily.
* This way we can easily support more than one
* interrupt per function if needed.
*/
num_irqs = pcs->size;
- pcs->domain = irq_domain_add_simple(np, num_irqs, 0,
- &pcs_irqdomain_ops,
- pcs_soc);
+ pcs->domain = irq_domain_create_simple(of_fwnode_handle(np),
+ num_irqs, 0,
+ &pcs_irqdomain_ops,
+ pcs_soc);
if (!pcs->domain) {
irq_set_chained_handler(pcs_soc->irq, NULL);
return -EINVAL;
diff --git a/drivers/pinctrl/pinctrl-stmfx.c b/drivers/pinctrl/pinctrl-stmfx.c
index aae01120dc52..f4fdcaa043e6 100644
--- a/drivers/pinctrl/pinctrl-stmfx.c
+++ b/drivers/pinctrl/pinctrl-stmfx.c
@@ -115,14 +115,14 @@ static int stmfx_gpio_get(struct gpio_chip *gc, unsigned int offset)
return ret ? ret : !!(value & mask);
}
-static void stmfx_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
+static int stmfx_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
{
struct stmfx_pinctrl *pctl = gpiochip_get_data(gc);
u32 reg = value ? STMFX_REG_GPO_SET : STMFX_REG_GPO_CLR;
u32 mask = get_mask(offset);
- regmap_write_bits(pctl->stmfx->map, reg + get_reg(offset),
- mask, mask);
+ return regmap_write_bits(pctl->stmfx->map, reg + get_reg(offset),
+ mask, mask);
}
static int stmfx_gpio_get_direction(struct gpio_chip *gc, unsigned int offset)
@@ -161,8 +161,11 @@ static int stmfx_gpio_direction_output(struct gpio_chip *gc,
struct stmfx_pinctrl *pctl = gpiochip_get_data(gc);
u32 reg = STMFX_REG_GPIO_DIR + get_reg(offset);
u32 mask = get_mask(offset);
+ int ret;
- stmfx_gpio_set(gc, offset, value);
+ ret = stmfx_gpio_set(gc, offset, value);
+ if (ret)
+ return ret;
return regmap_write_bits(pctl->stmfx->map, reg, mask, mask);
}
@@ -694,7 +697,7 @@ static int stmfx_pinctrl_probe(struct platform_device *pdev)
pctl->gpio_chip.direction_input = stmfx_gpio_direction_input;
pctl->gpio_chip.direction_output = stmfx_gpio_direction_output;
pctl->gpio_chip.get = stmfx_gpio_get;
- pctl->gpio_chip.set = stmfx_gpio_set;
+ pctl->gpio_chip.set_rv = stmfx_gpio_set;
pctl->gpio_chip.set_config = gpiochip_generic_config;
pctl->gpio_chip.base = -1;
pctl->gpio_chip.ngpio = pctl->pctl_desc.npins;
diff --git a/drivers/pinctrl/pinctrl-sx150x.c b/drivers/pinctrl/pinctrl-sx150x.c
index 98262b8ce43a..d3a12c1c0de2 100644
--- a/drivers/pinctrl/pinctrl-sx150x.c
+++ b/drivers/pinctrl/pinctrl-sx150x.c
@@ -432,24 +432,25 @@ static int sx150x_gpio_oscio_set(struct sx150x_pinctrl *pctl,
(value ? 0x1f : 0x10));
}
-static void sx150x_gpio_set(struct gpio_chip *chip, unsigned int offset,
- int value)
+static int sx150x_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct sx150x_pinctrl *pctl = gpiochip_get_data(chip);
if (sx150x_pin_is_oscio(pctl, offset))
- sx150x_gpio_oscio_set(pctl, value);
- else
- __sx150x_gpio_set(pctl, offset, value);
+ return sx150x_gpio_oscio_set(pctl, value);
+
+ return __sx150x_gpio_set(pctl, offset, value);
}
-static void sx150x_gpio_set_multiple(struct gpio_chip *chip,
- unsigned long *mask,
- unsigned long *bits)
+static int sx150x_gpio_set_multiple(struct gpio_chip *chip,
+ unsigned long *mask,
+ unsigned long *bits)
{
struct sx150x_pinctrl *pctl = gpiochip_get_data(chip);
- regmap_write_bits(pctl->regmap, pctl->data->reg_data, *mask, *bits);
+ return regmap_write_bits(pctl->regmap, pctl->data->reg_data, *mask,
+ *bits);
}
static int sx150x_gpio_direction_input(struct gpio_chip *chip,
@@ -1175,7 +1176,7 @@ static int sx150x_probe(struct i2c_client *client)
pctl->gpio.direction_input = sx150x_gpio_direction_input;
pctl->gpio.direction_output = sx150x_gpio_direction_output;
pctl->gpio.get = sx150x_gpio_get;
- pctl->gpio.set = sx150x_gpio_set;
+ pctl->gpio.set_rv = sx150x_gpio_set;
pctl->gpio.set_config = gpiochip_generic_config;
pctl->gpio.parent = dev;
pctl->gpio.can_sleep = true;
@@ -1190,7 +1191,7 @@ static int sx150x_probe(struct i2c_client *client)
* would require locking that is not in place at this time.
*/
if (pctl->data->model != SX150X_789)
- pctl->gpio.set_multiple = sx150x_gpio_set_multiple;
+ pctl->gpio.set_multiple_rv = sx150x_gpio_set_multiple;
/* Add Interrupt support if an irq is specified */
if (client->irq > 0) {
diff --git a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c
index 7366aba5a199..57fefeb603f0 100644
--- a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c
+++ b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c
@@ -327,14 +327,14 @@ static int lpi_gpio_get(struct gpio_chip *chip, unsigned int pin)
LPI_GPIO_VALUE_IN_MASK;
}
-static void lpi_gpio_set(struct gpio_chip *chip, unsigned int pin, int value)
+static int lpi_gpio_set(struct gpio_chip *chip, unsigned int pin, int value)
{
struct lpi_pinctrl *state = gpiochip_get_data(chip);
unsigned long config;
config = pinconf_to_config_packed(PIN_CONFIG_OUTPUT, value);
- lpi_config_set(state->ctrl, pin, &config, 1);
+ return lpi_config_set(state->ctrl, pin, &config, 1);
}
#ifdef CONFIG_DEBUG_FS
@@ -398,7 +398,7 @@ static const struct gpio_chip lpi_gpio_template = {
.direction_input = lpi_gpio_direction_input,
.direction_output = lpi_gpio_direction_output,
.get = lpi_gpio_get,
- .set = lpi_gpio_set,
+ .set_rv = lpi_gpio_set,
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
.dbg_show = lpi_gpio_dbg_show,
diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
index 0eb816395dc6..f012ea88aa22 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -635,7 +635,7 @@ static int msm_gpio_get(struct gpio_chip *chip, unsigned offset)
return !!(val & BIT(g->in_bit));
}
-static void msm_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int msm_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
{
const struct msm_pingroup *g;
struct msm_pinctrl *pctrl = gpiochip_get_data(chip);
@@ -654,6 +654,8 @@ static void msm_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
msm_writel_io(val, pctrl, g);
raw_spin_unlock_irqrestore(&pctrl->lock, flags);
+
+ return 0;
}
#ifdef CONFIG_DEBUG_FS
@@ -790,7 +792,7 @@ static const struct gpio_chip msm_gpio_template = {
.direction_output = msm_gpio_direction_output,
.get_direction = msm_gpio_get_direction,
.get = msm_gpio_get,
- .set = msm_gpio_set,
+ .set_rv = msm_gpio_set,
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
.dbg_show = msm_gpio_dbg_show,
diff --git a/drivers/pinctrl/qcom/pinctrl-qcm2290.c b/drivers/pinctrl/qcom/pinctrl-qcm2290.c
index ba699eac9ee8..f885af571ec9 100644
--- a/drivers/pinctrl/qcom/pinctrl-qcm2290.c
+++ b/drivers/pinctrl/qcom/pinctrl-qcm2290.c
@@ -37,6 +37,8 @@
.mux_bit = 2, \
.pull_bit = 0, \
.drv_bit = 6, \
+ .egpio_enable = 12, \
+ .egpio_present = 11, \
.oe_bit = 9, \
.in_bit = 0, \
.out_bit = 1, \
@@ -387,6 +389,7 @@ enum qcm2290_functions {
msm_mux_ddr_pxi1,
msm_mux_ddr_pxi2,
msm_mux_ddr_pxi3,
+ msm_mux_egpio,
msm_mux_gcc_gp1,
msm_mux_gcc_gp2,
msm_mux_gcc_gp3,
@@ -816,6 +819,13 @@ static const char * const sd_write_groups[] = {
static const char * const jitter_bist_groups[] = {
"gpio96", "gpio97",
};
+static const char * const egpio_groups[] = {
+ "gpio98", "gpio99", "gpio100", "gpio101", "gpio102", "gpio103",
+ "gpio104", "gpio105", "gpio106", "gpio107", "gpio108", "gpio109",
+ "gpio110", "gpio111", "gpio112", "gpio113", "gpio114", "gpio115",
+ "gpio116", "gpio117", "gpio118", "gpio119", "gpio120", "gpio121",
+ "gpio122", "gpio123", "gpio124", "gpio125", "gpio126",
+};
static const char * const ddr_pxi2_groups[] = {
"gpio102", "gpio103",
};
@@ -851,6 +861,7 @@ static const struct pinfunction qcm2290_functions[] = {
MSM_PIN_FUNCTION(ddr_pxi1),
MSM_PIN_FUNCTION(ddr_pxi2),
MSM_PIN_FUNCTION(ddr_pxi3),
+ MSM_PIN_FUNCTION(egpio),
MSM_PIN_FUNCTION(gcc_gp1),
MSM_PIN_FUNCTION(gcc_gp2),
MSM_PIN_FUNCTION(gcc_gp3),
@@ -1037,35 +1048,35 @@ static const struct msm_pingroup qcm2290_groups[] = {
[95] = PINGROUP(95, nav_gpio, gp_pdm0, qdss_gpio, wlan1_adc1, _, _, _, _, _),
[96] = PINGROUP(96, qup4, nav_gpio, mdp_vsync, gp_pdm1, sd_write, jitter_bist, qdss_cti, qdss_cti, _),
[97] = PINGROUP(97, qup4, nav_gpio, mdp_vsync, gp_pdm2, jitter_bist, qdss_cti, qdss_cti, _, _),
- [98] = PINGROUP(98, _, _, _, _, _, _, _, _, _),
- [99] = PINGROUP(99, _, _, _, _, _, _, _, _, _),
- [100] = PINGROUP(100, atest, _, _, _, _, _, _, _, _),
- [101] = PINGROUP(101, atest, _, _, _, _, _, _, _, _),
- [102] = PINGROUP(102, _, phase_flag, dac_calib, ddr_pxi2, _, _, _, _, _),
- [103] = PINGROUP(103, _, phase_flag, dac_calib, ddr_pxi2, _, _, _, _, _),
- [104] = PINGROUP(104, _, phase_flag, qdss_gpio, dac_calib, ddr_pxi3, _, pwm_8, _, _),
- [105] = PINGROUP(105, _, phase_flag, qdss_gpio, dac_calib, ddr_pxi3, _, _, _, _),
- [106] = PINGROUP(106, nav_gpio, gcc_gp3, qdss_gpio, _, _, _, _, _, _),
- [107] = PINGROUP(107, nav_gpio, gcc_gp2, qdss_gpio, _, _, _, _, _, _),
- [108] = PINGROUP(108, nav_gpio, _, _, _, _, _, _, _, _),
- [109] = PINGROUP(109, _, qdss_gpio, _, _, _, _, _, _, _),
- [110] = PINGROUP(110, _, qdss_gpio, _, _, _, _, _, _, _),
- [111] = PINGROUP(111, _, _, _, _, _, _, _, _, _),
- [112] = PINGROUP(112, _, _, _, _, _, _, _, _, _),
- [113] = PINGROUP(113, _, _, _, _, _, _, _, _, _),
- [114] = PINGROUP(114, _, _, _, _, _, _, _, _, _),
- [115] = PINGROUP(115, _, pwm_9, _, _, _, _, _, _, _),
- [116] = PINGROUP(116, _, _, _, _, _, _, _, _, _),
- [117] = PINGROUP(117, _, _, _, _, _, _, _, _, _),
- [118] = PINGROUP(118, _, _, _, _, _, _, _, _, _),
- [119] = PINGROUP(119, _, _, _, _, _, _, _, _, _),
- [120] = PINGROUP(120, _, _, _, _, _, _, _, _, _),
- [121] = PINGROUP(121, _, _, _, _, _, _, _, _, _),
- [122] = PINGROUP(122, _, _, _, _, _, _, _, _, _),
- [123] = PINGROUP(123, _, _, _, _, _, _, _, _, _),
- [124] = PINGROUP(124, _, _, _, _, _, _, _, _, _),
- [125] = PINGROUP(125, _, _, _, _, _, _, _, _, _),
- [126] = PINGROUP(126, _, _, _, _, _, _, _, _, _),
+ [98] = PINGROUP(98, _, _, _, _, _, _, _, _, egpio),
+ [99] = PINGROUP(99, _, _, _, _, _, _, _, _, egpio),
+ [100] = PINGROUP(100, atest, _, _, _, _, _, _, _, egpio),
+ [101] = PINGROUP(101, atest, _, _, _, _, _, _, _, egpio),
+ [102] = PINGROUP(102, _, phase_flag, dac_calib, ddr_pxi2, _, _, _, _, egpio),
+ [103] = PINGROUP(103, _, phase_flag, dac_calib, ddr_pxi2, _, _, _, _, egpio),
+ [104] = PINGROUP(104, _, phase_flag, qdss_gpio, dac_calib, ddr_pxi3, _, pwm_8, _, egpio),
+ [105] = PINGROUP(105, _, phase_flag, qdss_gpio, dac_calib, ddr_pxi3, _, _, _, egpio),
+ [106] = PINGROUP(106, nav_gpio, gcc_gp3, qdss_gpio, _, _, _, _, _, egpio),
+ [107] = PINGROUP(107, nav_gpio, gcc_gp2, qdss_gpio, _, _, _, _, _, egpio),
+ [108] = PINGROUP(108, nav_gpio, _, _, _, _, _, _, _, egpio),
+ [109] = PINGROUP(109, _, qdss_gpio, _, _, _, _, _, _, egpio),
+ [110] = PINGROUP(110, _, qdss_gpio, _, _, _, _, _, _, egpio),
+ [111] = PINGROUP(111, _, _, _, _, _, _, _, _, egpio),
+ [112] = PINGROUP(112, _, _, _, _, _, _, _, _, egpio),
+ [113] = PINGROUP(113, _, _, _, _, _, _, _, _, egpio),
+ [114] = PINGROUP(114, _, _, _, _, _, _, _, _, egpio),
+ [115] = PINGROUP(115, _, pwm_9, _, _, _, _, _, _, egpio),
+ [116] = PINGROUP(116, _, _, _, _, _, _, _, _, egpio),
+ [117] = PINGROUP(117, _, _, _, _, _, _, _, _, egpio),
+ [118] = PINGROUP(118, _, _, _, _, _, _, _, _, egpio),
+ [119] = PINGROUP(119, _, _, _, _, _, _, _, _, egpio),
+ [120] = PINGROUP(120, _, _, _, _, _, _, _, _, egpio),
+ [121] = PINGROUP(121, _, _, _, _, _, _, _, _, egpio),
+ [122] = PINGROUP(122, _, _, _, _, _, _, _, _, egpio),
+ [123] = PINGROUP(123, _, _, _, _, _, _, _, _, egpio),
+ [124] = PINGROUP(124, _, _, _, _, _, _, _, _, egpio),
+ [125] = PINGROUP(125, _, _, _, _, _, _, _, _, egpio),
+ [126] = PINGROUP(126, _, _, _, _, _, _, _, _, egpio),
[127] = SDC_QDSD_PINGROUP(sdc1_rclk, 0x84004, 0, 0),
[128] = SDC_QDSD_PINGROUP(sdc1_clk, 0x84000, 13, 6),
[129] = SDC_QDSD_PINGROUP(sdc1_cmd, 0x84000, 11, 3),
@@ -1095,6 +1106,7 @@ static const struct msm_pinctrl_soc_data qcm2290_pinctrl = {
.ngpios = 127,
.wakeirq_map = qcm2290_mpm_map,
.nwakeirq_map = ARRAY_SIZE(qcm2290_mpm_map),
+ .egpio_func = 9,
};
static int qcm2290_pinctrl_probe(struct platform_device *pdev)
diff --git a/drivers/pinctrl/qcom/pinctrl-qcs615.c b/drivers/pinctrl/qcom/pinctrl-qcs615.c
index 23015b055f6a..17ca743c2210 100644
--- a/drivers/pinctrl/qcom/pinctrl-qcs615.c
+++ b/drivers/pinctrl/qcom/pinctrl-qcs615.c
@@ -1062,7 +1062,7 @@ static const struct msm_pinctrl_soc_data qcs615_tlmm = {
.nfunctions = ARRAY_SIZE(qcs615_functions),
.groups = qcs615_groups,
.ngroups = ARRAY_SIZE(qcs615_groups),
- .ngpios = 123,
+ .ngpios = 124,
.tiles = qcs615_tiles,
.ntiles = ARRAY_SIZE(qcs615_tiles),
.wakeirq_map = qcs615_pdc_map,
diff --git a/drivers/pinctrl/qcom/pinctrl-qcs8300.c b/drivers/pinctrl/qcom/pinctrl-qcs8300.c
index ba6de944a859..5f5f7c4ac644 100644
--- a/drivers/pinctrl/qcom/pinctrl-qcs8300.c
+++ b/drivers/pinctrl/qcom/pinctrl-qcs8300.c
@@ -1204,7 +1204,7 @@ static const struct msm_pinctrl_soc_data qcs8300_pinctrl = {
.nfunctions = ARRAY_SIZE(qcs8300_functions),
.groups = qcs8300_groups,
.ngroups = ARRAY_SIZE(qcs8300_groups),
- .ngpios = 133,
+ .ngpios = 134,
.wakeirq_map = qcs8300_pdc_map,
.nwakeirq_map = ARRAY_SIZE(qcs8300_pdc_map),
.egpio_func = 11,
diff --git a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c
index c8ce61066070..bc082bfb52ef 100644
--- a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c
+++ b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c
@@ -764,14 +764,14 @@ static int pmic_gpio_get(struct gpio_chip *chip, unsigned pin)
return !!pad->out_value;
}
-static void pmic_gpio_set(struct gpio_chip *chip, unsigned pin, int value)
+static int pmic_gpio_set(struct gpio_chip *chip, unsigned int pin, int value)
{
struct pmic_gpio_state *state = gpiochip_get_data(chip);
unsigned long config;
config = pinconf_to_config_packed(PIN_CONFIG_OUTPUT, value);
- pmic_gpio_config_set(state->ctrl, pin, &config, 1);
+ return pmic_gpio_config_set(state->ctrl, pin, &config, 1);
}
static int pmic_gpio_of_xlate(struct gpio_chip *chip,
@@ -802,7 +802,7 @@ static const struct gpio_chip pmic_gpio_gpio_template = {
.direction_input = pmic_gpio_direction_input,
.direction_output = pmic_gpio_direction_output,
.get = pmic_gpio_get,
- .set = pmic_gpio_set,
+ .set_rv = pmic_gpio_set,
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
.of_xlate = pmic_gpio_of_xlate,
diff --git a/drivers/pinctrl/qcom/pinctrl-spmi-mpp.c b/drivers/pinctrl/qcom/pinctrl-spmi-mpp.c
index 7b28c5fb2402..ba9084978f90 100644
--- a/drivers/pinctrl/qcom/pinctrl-spmi-mpp.c
+++ b/drivers/pinctrl/qcom/pinctrl-spmi-mpp.c
@@ -600,14 +600,14 @@ static int pmic_mpp_get(struct gpio_chip *chip, unsigned pin)
return !!pad->out_value;
}
-static void pmic_mpp_set(struct gpio_chip *chip, unsigned pin, int value)
+static int pmic_mpp_set(struct gpio_chip *chip, unsigned int pin, int value)
{
struct pmic_mpp_state *state = gpiochip_get_data(chip);
unsigned long config;
config = pinconf_to_config_packed(PIN_CONFIG_OUTPUT, value);
- pmic_mpp_config_set(state->ctrl, pin, &config, 1);
+ return pmic_mpp_config_set(state->ctrl, pin, &config, 1);
}
static int pmic_mpp_of_xlate(struct gpio_chip *chip,
@@ -638,7 +638,7 @@ static const struct gpio_chip pmic_mpp_gpio_template = {
.direction_input = pmic_mpp_direction_input,
.direction_output = pmic_mpp_direction_output,
.get = pmic_mpp_get,
- .set = pmic_mpp_set,
+ .set_rv = pmic_mpp_set,
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
.of_xlate = pmic_mpp_of_xlate,
diff --git a/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c b/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c
index 82679417e25f..3a8014ebf064 100644
--- a/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c
+++ b/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c
@@ -507,7 +507,8 @@ static int pm8xxx_gpio_get(struct gpio_chip *chip, unsigned offset)
return ret;
}
-static void pm8xxx_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int pm8xxx_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct pm8xxx_gpio *pctrl = gpiochip_get_data(chip);
struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
@@ -519,7 +520,7 @@ static void pm8xxx_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
val |= pin->open_drain << 1;
val |= pin->output_value;
- pm8xxx_write_bank(pctrl, pin, 1, val);
+ return pm8xxx_write_bank(pctrl, pin, 1, val);
}
static int pm8xxx_gpio_of_xlate(struct gpio_chip *chip,
@@ -596,7 +597,7 @@ static const struct gpio_chip pm8xxx_gpio_template = {
.direction_input = pm8xxx_gpio_direction_input,
.direction_output = pm8xxx_gpio_direction_output,
.get = pm8xxx_gpio_get,
- .set = pm8xxx_gpio_set,
+ .set_rv = pm8xxx_gpio_set,
.of_xlate = pm8xxx_gpio_of_xlate,
.dbg_show = pm8xxx_gpio_dbg_show,
.owner = THIS_MODULE,
diff --git a/drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c b/drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c
index 4841bbfe4864..087c37d304fc 100644
--- a/drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c
+++ b/drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c
@@ -511,14 +511,15 @@ static int pm8xxx_mpp_get(struct gpio_chip *chip, unsigned offset)
return ret;
}
-static void pm8xxx_mpp_set(struct gpio_chip *chip, unsigned offset, int value)
+static int pm8xxx_mpp_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct pm8xxx_mpp *pctrl = gpiochip_get_data(chip);
struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
pin->output_value = !!value;
- pm8xxx_mpp_update(pctrl, pin);
+ return pm8xxx_mpp_update(pctrl, pin);
}
static int pm8xxx_mpp_of_xlate(struct gpio_chip *chip,
@@ -633,7 +634,7 @@ static const struct gpio_chip pm8xxx_mpp_template = {
.direction_input = pm8xxx_mpp_direction_input,
.direction_output = pm8xxx_mpp_direction_output,
.get = pm8xxx_mpp_get,
- .set = pm8xxx_mpp_set,
+ .set_rv = pm8xxx_mpp_set,
.of_xlate = pm8xxx_mpp_of_xlate,
.dbg_show = pm8xxx_mpp_dbg_show,
.owner = THIS_MODULE,
diff --git a/drivers/pinctrl/qcom/tlmm-test.c b/drivers/pinctrl/qcom/tlmm-test.c
index fd02bf3a76cb..7b99e89e0f67 100644
--- a/drivers/pinctrl/qcom/tlmm-test.c
+++ b/drivers/pinctrl/qcom/tlmm-test.c
@@ -547,6 +547,7 @@ static int tlmm_test_init(struct kunit *test)
struct tlmm_test_priv *priv;
priv = kunit_kzalloc(test, sizeof(*priv), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv);
atomic_set(&priv->intr_count, 0);
atomic_set(&priv->thread_count, 0);
diff --git a/drivers/pinctrl/renesas/Kconfig b/drivers/pinctrl/renesas/Kconfig
index 3c18d908b21e..e16034fc1bbf 100644
--- a/drivers/pinctrl/renesas/Kconfig
+++ b/drivers/pinctrl/renesas/Kconfig
@@ -42,6 +42,7 @@ config PINCTRL_RENESAS
select PINCTRL_RZG2L if ARCH_RZG2L
select PINCTRL_RZV2M if ARCH_R9A09G011
select PINCTRL_RZG2L if ARCH_R9A09G047
+ select PINCTRL_RZG2L if ARCH_R9A09G056
select PINCTRL_RZG2L if ARCH_R9A09G057
select PINCTRL_PFC_SH7203 if CPU_SUBTYPE_SH7203
select PINCTRL_PFC_SH7264 if CPU_SUBTYPE_SH7264
diff --git a/drivers/pinctrl/renesas/pinctrl-rzg2l.c b/drivers/pinctrl/renesas/pinctrl-rzg2l.c
index c72e250f4a15..78fa08ff0faa 100644
--- a/drivers/pinctrl/renesas/pinctrl-rzg2l.c
+++ b/drivers/pinctrl/renesas/pinctrl-rzg2l.c
@@ -2230,135 +2230,146 @@ static const struct rzg2l_dedicated_configs rzg3s_dedicated_pins[] = {
PIN_CFG_IO_VMC_SD1)) },
};
-static struct rzg2l_dedicated_configs rzv2h_dedicated_pins[] = {
- { "NMI", RZG2L_SINGLE_PIN_PACK(0x1, 0, PIN_CFG_NF) },
- { "TMS_SWDIO", RZG2L_SINGLE_PIN_PACK(0x3, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN)) },
- { "TDO", RZG2L_SINGLE_PIN_PACK(0x3, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR)) },
- { "WDTUDFCA", RZG2L_SINGLE_PIN_PACK(0x5, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD | PIN_CFG_NOD)) },
- { "WDTUDFCM", RZG2L_SINGLE_PIN_PACK(0x5, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD | PIN_CFG_NOD)) },
- { "SCIF_RXD", RZG2L_SINGLE_PIN_PACK(0x6, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "SCIF_TXD", RZG2L_SINGLE_PIN_PACK(0x6, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "XSPI0_CKP", RZG2L_SINGLE_PIN_PACK(0x7, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD | PIN_CFG_OEN)) },
- { "XSPI0_CKN", RZG2L_SINGLE_PIN_PACK(0x7, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD | PIN_CFG_OEN)) },
- { "XSPI0_CS0N", RZG2L_SINGLE_PIN_PACK(0x7, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD | PIN_CFG_OEN)) },
- { "XSPI0_DS", RZG2L_SINGLE_PIN_PACK(0x7, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "XSPI0_RESET0N", RZG2L_SINGLE_PIN_PACK(0x7, 4, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD | PIN_CFG_OEN)) },
- { "XSPI0_RSTO0N", RZG2L_SINGLE_PIN_PACK(0x7, 5, (PIN_CFG_PUPD)) },
- { "XSPI0_INT0N", RZG2L_SINGLE_PIN_PACK(0x7, 6, (PIN_CFG_PUPD)) },
- { "XSPI0_ECS0N", RZG2L_SINGLE_PIN_PACK(0x7, 7, (PIN_CFG_PUPD)) },
- { "XSPI0_IO0", RZG2L_SINGLE_PIN_PACK(0x8, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "XSPI0_IO1", RZG2L_SINGLE_PIN_PACK(0x8, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "XSPI0_IO2", RZG2L_SINGLE_PIN_PACK(0x8, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "XSPI0_IO3", RZG2L_SINGLE_PIN_PACK(0x8, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "XSPI0_IO4", RZG2L_SINGLE_PIN_PACK(0x8, 4, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "XSPI0_IO5", RZG2L_SINGLE_PIN_PACK(0x8, 5, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "XSPI0_IO6", RZG2L_SINGLE_PIN_PACK(0x8, 6, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "XSPI0_IO7", RZG2L_SINGLE_PIN_PACK(0x8, 7, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "SD0CLK", RZG2L_SINGLE_PIN_PACK(0x9, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR)) },
- { "SD0CMD", RZG2L_SINGLE_PIN_PACK(0x9, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD0RSTN", RZG2L_SINGLE_PIN_PACK(0x9, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR)) },
- { "SD0DAT0", RZG2L_SINGLE_PIN_PACK(0xa, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD0DAT1", RZG2L_SINGLE_PIN_PACK(0xa, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD0DAT2", RZG2L_SINGLE_PIN_PACK(0xa, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD0DAT3", RZG2L_SINGLE_PIN_PACK(0xa, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD0DAT4", RZG2L_SINGLE_PIN_PACK(0xa, 4, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD0DAT5", RZG2L_SINGLE_PIN_PACK(0xa, 5, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD0DAT6", RZG2L_SINGLE_PIN_PACK(0xa, 6, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD0DAT7", RZG2L_SINGLE_PIN_PACK(0xa, 7, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD1CLK", RZG2L_SINGLE_PIN_PACK(0xb, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR)) },
- { "SD1CMD", RZG2L_SINGLE_PIN_PACK(0xb, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD1DAT0", RZG2L_SINGLE_PIN_PACK(0xc, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD1DAT1", RZG2L_SINGLE_PIN_PACK(0xc, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD1DAT2", RZG2L_SINGLE_PIN_PACK(0xc, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "SD1DAT3", RZG2L_SINGLE_PIN_PACK(0xc, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "PCIE0_RSTOUTB", RZG2L_SINGLE_PIN_PACK(0xe, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR)) },
- { "PCIE1_RSTOUTB", RZG2L_SINGLE_PIN_PACK(0xe, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR)) },
- { "ET0_MDIO", RZG2L_SINGLE_PIN_PACK(0xf, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "ET0_MDC", RZG2L_SINGLE_PIN_PACK(0xf, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET0_RXCTL_RXDV", RZG2L_SINGLE_PIN_PACK(0x10, 0, (PIN_CFG_PUPD)) },
- { "ET0_TXCTL_TXEN", RZG2L_SINGLE_PIN_PACK(0x10, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET0_TXER", RZG2L_SINGLE_PIN_PACK(0x10, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET0_RXER", RZG2L_SINGLE_PIN_PACK(0x10, 3, (PIN_CFG_PUPD)) },
- { "ET0_RXC_RXCLK", RZG2L_SINGLE_PIN_PACK(0x10, 4, (PIN_CFG_PUPD)) },
- { "ET0_TXC_TXCLK", RZG2L_SINGLE_PIN_PACK(0x10, 5, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD | PIN_CFG_OEN)) },
- { "ET0_CRS", RZG2L_SINGLE_PIN_PACK(0x10, 6, (PIN_CFG_PUPD)) },
- { "ET0_COL", RZG2L_SINGLE_PIN_PACK(0x10, 7, (PIN_CFG_PUPD)) },
- { "ET0_TXD0", RZG2L_SINGLE_PIN_PACK(0x11, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET0_TXD1", RZG2L_SINGLE_PIN_PACK(0x11, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET0_TXD2", RZG2L_SINGLE_PIN_PACK(0x11, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET0_TXD3", RZG2L_SINGLE_PIN_PACK(0x11, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET0_RXD0", RZG2L_SINGLE_PIN_PACK(0x11, 4, (PIN_CFG_PUPD)) },
- { "ET0_RXD1", RZG2L_SINGLE_PIN_PACK(0x11, 5, (PIN_CFG_PUPD)) },
- { "ET0_RXD2", RZG2L_SINGLE_PIN_PACK(0x11, 6, (PIN_CFG_PUPD)) },
- { "ET0_RXD3", RZG2L_SINGLE_PIN_PACK(0x11, 7, (PIN_CFG_PUPD)) },
- { "ET1_MDIO", RZG2L_SINGLE_PIN_PACK(0x12, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_IEN | PIN_CFG_PUPD)) },
- { "ET1_MDC", RZG2L_SINGLE_PIN_PACK(0x12, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET1_RXCTL_RXDV", RZG2L_SINGLE_PIN_PACK(0x13, 0, (PIN_CFG_PUPD)) },
- { "ET1_TXCTL_TXEN", RZG2L_SINGLE_PIN_PACK(0x13, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+static const struct {
+ struct rzg2l_dedicated_configs common[77];
+ struct rzg2l_dedicated_configs pcie1[1];
+} rzv2h_dedicated_pins = {
+ .common = {
+ { "NMI", RZG2L_SINGLE_PIN_PACK(0x1, 0, PIN_CFG_NF) },
+ { "TMS_SWDIO", RZG2L_SINGLE_PIN_PACK(0x3, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN)) },
+ { "TDO", RZG2L_SINGLE_PIN_PACK(0x3, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR)) },
+ { "WDTUDFCA", RZG2L_SINGLE_PIN_PACK(0x5, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD | PIN_CFG_NOD)) },
+ { "WDTUDFCM", RZG2L_SINGLE_PIN_PACK(0x5, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD | PIN_CFG_NOD)) },
+ { "SCIF_RXD", RZG2L_SINGLE_PIN_PACK(0x6, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "SCIF_TXD", RZG2L_SINGLE_PIN_PACK(0x6, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "XSPI0_CKP", RZG2L_SINGLE_PIN_PACK(0x7, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD | PIN_CFG_OEN)) },
+ { "XSPI0_CKN", RZG2L_SINGLE_PIN_PACK(0x7, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD | PIN_CFG_OEN)) },
+ { "XSPI0_CS0N", RZG2L_SINGLE_PIN_PACK(0x7, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD | PIN_CFG_OEN)) },
+ { "XSPI0_DS", RZG2L_SINGLE_PIN_PACK(0x7, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "XSPI0_RESET0N", RZG2L_SINGLE_PIN_PACK(0x7, 4, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD | PIN_CFG_OEN)) },
+ { "XSPI0_RSTO0N", RZG2L_SINGLE_PIN_PACK(0x7, 5, (PIN_CFG_PUPD)) },
+ { "XSPI0_INT0N", RZG2L_SINGLE_PIN_PACK(0x7, 6, (PIN_CFG_PUPD)) },
+ { "XSPI0_ECS0N", RZG2L_SINGLE_PIN_PACK(0x7, 7, (PIN_CFG_PUPD)) },
+ { "XSPI0_IO0", RZG2L_SINGLE_PIN_PACK(0x8, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "XSPI0_IO1", RZG2L_SINGLE_PIN_PACK(0x8, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "XSPI0_IO2", RZG2L_SINGLE_PIN_PACK(0x8, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "XSPI0_IO3", RZG2L_SINGLE_PIN_PACK(0x8, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "XSPI0_IO4", RZG2L_SINGLE_PIN_PACK(0x8, 4, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "XSPI0_IO5", RZG2L_SINGLE_PIN_PACK(0x8, 5, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "XSPI0_IO6", RZG2L_SINGLE_PIN_PACK(0x8, 6, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "XSPI0_IO7", RZG2L_SINGLE_PIN_PACK(0x8, 7, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "SD0CLK", RZG2L_SINGLE_PIN_PACK(0x9, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR)) },
+ { "SD0CMD", RZG2L_SINGLE_PIN_PACK(0x9, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD0RSTN", RZG2L_SINGLE_PIN_PACK(0x9, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR)) },
+ { "SD0DAT0", RZG2L_SINGLE_PIN_PACK(0xa, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD0DAT1", RZG2L_SINGLE_PIN_PACK(0xa, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD0DAT2", RZG2L_SINGLE_PIN_PACK(0xa, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD0DAT3", RZG2L_SINGLE_PIN_PACK(0xa, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD0DAT4", RZG2L_SINGLE_PIN_PACK(0xa, 4, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD0DAT5", RZG2L_SINGLE_PIN_PACK(0xa, 5, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD0DAT6", RZG2L_SINGLE_PIN_PACK(0xa, 6, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD0DAT7", RZG2L_SINGLE_PIN_PACK(0xa, 7, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD1CLK", RZG2L_SINGLE_PIN_PACK(0xb, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR)) },
+ { "SD1CMD", RZG2L_SINGLE_PIN_PACK(0xb, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD1DAT0", RZG2L_SINGLE_PIN_PACK(0xc, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD1DAT1", RZG2L_SINGLE_PIN_PACK(0xc, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD1DAT2", RZG2L_SINGLE_PIN_PACK(0xc, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "SD1DAT3", RZG2L_SINGLE_PIN_PACK(0xc, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "PCIE0_RSTOUTB", RZG2L_SINGLE_PIN_PACK(0xe, 0, (PIN_CFG_IOLH_RZV2H |
+ PIN_CFG_SR)) },
+ { "ET0_MDIO", RZG2L_SINGLE_PIN_PACK(0xf, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "ET0_MDC", RZG2L_SINGLE_PIN_PACK(0xf, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
PIN_CFG_PUPD)) },
- { "ET1_TXER", RZG2L_SINGLE_PIN_PACK(0x13, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET1_RXER", RZG2L_SINGLE_PIN_PACK(0x13, 3, (PIN_CFG_PUPD)) },
- { "ET1_RXC_RXCLK", RZG2L_SINGLE_PIN_PACK(0x13, 4, (PIN_CFG_PUPD)) },
- { "ET1_TXC_TXCLK", RZG2L_SINGLE_PIN_PACK(0x13, 5, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD | PIN_CFG_OEN)) },
- { "ET1_CRS", RZG2L_SINGLE_PIN_PACK(0x13, 6, (PIN_CFG_PUPD)) },
- { "ET1_COL", RZG2L_SINGLE_PIN_PACK(0x13, 7, (PIN_CFG_PUPD)) },
- { "ET1_TXD0", RZG2L_SINGLE_PIN_PACK(0x14, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET1_TXD1", RZG2L_SINGLE_PIN_PACK(0x14, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET1_TXD2", RZG2L_SINGLE_PIN_PACK(0x14, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET1_TXD3", RZG2L_SINGLE_PIN_PACK(0x14, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
- PIN_CFG_PUPD)) },
- { "ET1_RXD0", RZG2L_SINGLE_PIN_PACK(0x14, 4, (PIN_CFG_PUPD)) },
- { "ET1_RXD1", RZG2L_SINGLE_PIN_PACK(0x14, 5, (PIN_CFG_PUPD)) },
- { "ET1_RXD2", RZG2L_SINGLE_PIN_PACK(0x14, 6, (PIN_CFG_PUPD)) },
- { "ET1_RXD3", RZG2L_SINGLE_PIN_PACK(0x14, 7, (PIN_CFG_PUPD)) },
+ { "ET0_RXCTL_RXDV", RZG2L_SINGLE_PIN_PACK(0x10, 0, (PIN_CFG_PUPD)) },
+ { "ET0_TXCTL_TXEN", RZG2L_SINGLE_PIN_PACK(0x10, 1, (PIN_CFG_IOLH_RZV2H |
+ PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET0_TXER", RZG2L_SINGLE_PIN_PACK(0x10, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET0_RXER", RZG2L_SINGLE_PIN_PACK(0x10, 3, (PIN_CFG_PUPD)) },
+ { "ET0_RXC_RXCLK", RZG2L_SINGLE_PIN_PACK(0x10, 4, (PIN_CFG_PUPD)) },
+ { "ET0_TXC_TXCLK", RZG2L_SINGLE_PIN_PACK(0x10, 5, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD | PIN_CFG_OEN)) },
+ { "ET0_CRS", RZG2L_SINGLE_PIN_PACK(0x10, 6, (PIN_CFG_PUPD)) },
+ { "ET0_COL", RZG2L_SINGLE_PIN_PACK(0x10, 7, (PIN_CFG_PUPD)) },
+ { "ET0_TXD0", RZG2L_SINGLE_PIN_PACK(0x11, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET0_TXD1", RZG2L_SINGLE_PIN_PACK(0x11, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET0_TXD2", RZG2L_SINGLE_PIN_PACK(0x11, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET0_TXD3", RZG2L_SINGLE_PIN_PACK(0x11, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET0_RXD0", RZG2L_SINGLE_PIN_PACK(0x11, 4, (PIN_CFG_PUPD)) },
+ { "ET0_RXD1", RZG2L_SINGLE_PIN_PACK(0x11, 5, (PIN_CFG_PUPD)) },
+ { "ET0_RXD2", RZG2L_SINGLE_PIN_PACK(0x11, 6, (PIN_CFG_PUPD)) },
+ { "ET0_RXD3", RZG2L_SINGLE_PIN_PACK(0x11, 7, (PIN_CFG_PUPD)) },
+ { "ET1_MDIO", RZG2L_SINGLE_PIN_PACK(0x12, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_IEN | PIN_CFG_PUPD)) },
+ { "ET1_MDC", RZG2L_SINGLE_PIN_PACK(0x12, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET1_RXCTL_RXDV", RZG2L_SINGLE_PIN_PACK(0x13, 0, (PIN_CFG_PUPD)) },
+ { "ET1_TXCTL_TXEN", RZG2L_SINGLE_PIN_PACK(0x13, 1, (PIN_CFG_IOLH_RZV2H |
+ PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET1_TXER", RZG2L_SINGLE_PIN_PACK(0x13, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET1_RXER", RZG2L_SINGLE_PIN_PACK(0x13, 3, (PIN_CFG_PUPD)) },
+ { "ET1_RXC_RXCLK", RZG2L_SINGLE_PIN_PACK(0x13, 4, (PIN_CFG_PUPD)) },
+ { "ET1_TXC_TXCLK", RZG2L_SINGLE_PIN_PACK(0x13, 5, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD | PIN_CFG_OEN)) },
+ { "ET1_CRS", RZG2L_SINGLE_PIN_PACK(0x13, 6, (PIN_CFG_PUPD)) },
+ { "ET1_COL", RZG2L_SINGLE_PIN_PACK(0x13, 7, (PIN_CFG_PUPD)) },
+ { "ET1_TXD0", RZG2L_SINGLE_PIN_PACK(0x14, 0, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET1_TXD1", RZG2L_SINGLE_PIN_PACK(0x14, 1, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET1_TXD2", RZG2L_SINGLE_PIN_PACK(0x14, 2, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET1_TXD3", RZG2L_SINGLE_PIN_PACK(0x14, 3, (PIN_CFG_IOLH_RZV2H | PIN_CFG_SR |
+ PIN_CFG_PUPD)) },
+ { "ET1_RXD0", RZG2L_SINGLE_PIN_PACK(0x14, 4, (PIN_CFG_PUPD)) },
+ { "ET1_RXD1", RZG2L_SINGLE_PIN_PACK(0x14, 5, (PIN_CFG_PUPD)) },
+ { "ET1_RXD2", RZG2L_SINGLE_PIN_PACK(0x14, 6, (PIN_CFG_PUPD)) },
+ { "ET1_RXD3", RZG2L_SINGLE_PIN_PACK(0x14, 7, (PIN_CFG_PUPD)) },
+ },
+ .pcie1 = {
+ { "PCIE1_RSTOUTB", RZG2L_SINGLE_PIN_PACK(0xe, 1, (PIN_CFG_IOLH_RZV2H |
+ PIN_CFG_SR)) },
+ },
};
static struct rzg2l_dedicated_configs rzg3e_dedicated_pins[] = {
@@ -3349,13 +3360,37 @@ static struct rzg2l_pinctrl_data r9a09g047_data = {
.bias_param_to_hw = &rzv2h_bias_param_to_hw,
};
+static struct rzg2l_pinctrl_data r9a09g056_data = {
+ .port_pins = rzv2h_gpio_names,
+ .port_pin_configs = r9a09g057_gpio_configs,
+ .n_ports = ARRAY_SIZE(r9a09g057_gpio_configs),
+ .dedicated_pins = rzv2h_dedicated_pins.common,
+ .n_port_pins = ARRAY_SIZE(r9a09g057_gpio_configs) * RZG2L_PINS_PER_PORT,
+ .n_dedicated_pins = ARRAY_SIZE(rzv2h_dedicated_pins.common),
+ .hwcfg = &rzv2h_hwcfg,
+ .variable_pin_cfg = r9a09g057_variable_pin_cfg,
+ .n_variable_pin_cfg = ARRAY_SIZE(r9a09g057_variable_pin_cfg),
+ .num_custom_params = ARRAY_SIZE(renesas_rzv2h_custom_bindings),
+ .custom_params = renesas_rzv2h_custom_bindings,
+#ifdef CONFIG_DEBUG_FS
+ .custom_conf_items = renesas_rzv2h_conf_items,
+#endif
+ .pwpr_pfc_lock_unlock = &rzv2h_pwpr_pfc_lock_unlock,
+ .pmc_writeb = &rzv2h_pmc_writeb,
+ .oen_read = &rzv2h_oen_read,
+ .oen_write = &rzv2h_oen_write,
+ .hw_to_bias_param = &rzv2h_hw_to_bias_param,
+ .bias_param_to_hw = &rzv2h_bias_param_to_hw,
+};
+
static struct rzg2l_pinctrl_data r9a09g057_data = {
.port_pins = rzv2h_gpio_names,
.port_pin_configs = r9a09g057_gpio_configs,
.n_ports = ARRAY_SIZE(r9a09g057_gpio_configs),
- .dedicated_pins = rzv2h_dedicated_pins,
+ .dedicated_pins = rzv2h_dedicated_pins.common,
.n_port_pins = ARRAY_SIZE(r9a09g057_gpio_configs) * RZG2L_PINS_PER_PORT,
- .n_dedicated_pins = ARRAY_SIZE(rzv2h_dedicated_pins),
+ .n_dedicated_pins = ARRAY_SIZE(rzv2h_dedicated_pins.common) +
+ ARRAY_SIZE(rzv2h_dedicated_pins.pcie1),
.hwcfg = &rzv2h_hwcfg,
.variable_pin_cfg = r9a09g057_variable_pin_cfg,
.n_variable_pin_cfg = ARRAY_SIZE(r9a09g057_variable_pin_cfg),
@@ -3390,6 +3425,10 @@ static const struct of_device_id rzg2l_pinctrl_of_table[] = {
.data = &r9a09g047_data,
},
{
+ .compatible = "renesas,r9a09g056-pinctrl",
+ .data = &r9a09g056_data,
+ },
+ {
.compatible = "renesas,r9a09g057-pinctrl",
.data = &r9a09g057_data,
},
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c b/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c
index dd07720e32cc..9fd894729a7b 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c
@@ -1419,8 +1419,8 @@ static const struct samsung_pin_ctrl exynosautov920_pin_ctrl[] = {
.pin_banks = exynosautov920_pin_banks0,
.nr_banks = ARRAY_SIZE(exynosautov920_pin_banks0),
.eint_wkup_init = exynos_eint_wkup_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = exynosautov920_pinctrl_suspend,
+ .resume = exynosautov920_pinctrl_resume,
.retention_data = &exynosautov920_retention_data,
}, {
/* pin-controller instance 1 AUD data */
@@ -1431,43 +1431,43 @@ static const struct samsung_pin_ctrl exynosautov920_pin_ctrl[] = {
.pin_banks = exynosautov920_pin_banks2,
.nr_banks = ARRAY_SIZE(exynosautov920_pin_banks2),
.eint_gpio_init = exynos_eint_gpio_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = exynosautov920_pinctrl_suspend,
+ .resume = exynosautov920_pinctrl_resume,
}, {
/* pin-controller instance 3 HSI1 data */
.pin_banks = exynosautov920_pin_banks3,
.nr_banks = ARRAY_SIZE(exynosautov920_pin_banks3),
.eint_gpio_init = exynos_eint_gpio_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = exynosautov920_pinctrl_suspend,
+ .resume = exynosautov920_pinctrl_resume,
}, {
/* pin-controller instance 4 HSI2 data */
.pin_banks = exynosautov920_pin_banks4,
.nr_banks = ARRAY_SIZE(exynosautov920_pin_banks4),
.eint_gpio_init = exynos_eint_gpio_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = exynosautov920_pinctrl_suspend,
+ .resume = exynosautov920_pinctrl_resume,
}, {
/* pin-controller instance 5 HSI2UFS data */
.pin_banks = exynosautov920_pin_banks5,
.nr_banks = ARRAY_SIZE(exynosautov920_pin_banks5),
.eint_gpio_init = exynos_eint_gpio_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = exynosautov920_pinctrl_suspend,
+ .resume = exynosautov920_pinctrl_resume,
}, {
/* pin-controller instance 6 PERIC0 data */
.pin_banks = exynosautov920_pin_banks6,
.nr_banks = ARRAY_SIZE(exynosautov920_pin_banks6),
.eint_gpio_init = exynos_eint_gpio_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = exynosautov920_pinctrl_suspend,
+ .resume = exynosautov920_pinctrl_resume,
}, {
/* pin-controller instance 7 PERIC1 data */
.pin_banks = exynosautov920_pin_banks7,
.nr_banks = ARRAY_SIZE(exynosautov920_pin_banks7),
.eint_gpio_init = exynos_eint_gpio_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = exynosautov920_pinctrl_suspend,
+ .resume = exynosautov920_pinctrl_resume,
},
};
@@ -1762,15 +1762,15 @@ static const struct samsung_pin_ctrl gs101_pin_ctrl[] __initconst = {
.pin_banks = gs101_pin_alive,
.nr_banks = ARRAY_SIZE(gs101_pin_alive),
.eint_wkup_init = exynos_eint_wkup_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = gs101_pinctrl_suspend,
+ .resume = gs101_pinctrl_resume,
}, {
/* pin banks of gs101 pin-controller (FAR_ALIVE) */
.pin_banks = gs101_pin_far_alive,
.nr_banks = ARRAY_SIZE(gs101_pin_far_alive),
.eint_wkup_init = exynos_eint_wkup_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = gs101_pinctrl_suspend,
+ .resume = gs101_pinctrl_resume,
}, {
/* pin banks of gs101 pin-controller (GSACORE) */
.pin_banks = gs101_pin_gsacore,
@@ -1784,29 +1784,29 @@ static const struct samsung_pin_ctrl gs101_pin_ctrl[] __initconst = {
.pin_banks = gs101_pin_peric0,
.nr_banks = ARRAY_SIZE(gs101_pin_peric0),
.eint_gpio_init = exynos_eint_gpio_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = gs101_pinctrl_suspend,
+ .resume = gs101_pinctrl_resume,
}, {
/* pin banks of gs101 pin-controller (PERIC1) */
.pin_banks = gs101_pin_peric1,
.nr_banks = ARRAY_SIZE(gs101_pin_peric1),
.eint_gpio_init = exynos_eint_gpio_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = gs101_pinctrl_suspend,
+ .resume = gs101_pinctrl_resume,
}, {
/* pin banks of gs101 pin-controller (HSI1) */
.pin_banks = gs101_pin_hsi1,
.nr_banks = ARRAY_SIZE(gs101_pin_hsi1),
.eint_gpio_init = exynos_eint_gpio_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = gs101_pinctrl_suspend,
+ .resume = gs101_pinctrl_resume,
}, {
/* pin banks of gs101 pin-controller (HSI2) */
.pin_banks = gs101_pin_hsi2,
.nr_banks = ARRAY_SIZE(gs101_pin_hsi2),
.eint_gpio_init = exynos_eint_gpio_init,
- .suspend = exynos_pinctrl_suspend,
- .resume = exynos_pinctrl_resume,
+ .suspend = gs101_pinctrl_suspend,
+ .resume = gs101_pinctrl_resume,
},
};
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
index 42093bae8bb7..f3e1c11abe55 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -370,6 +370,37 @@ struct exynos_eint_gpio_save {
u32 eint_mask;
};
+static void exynos_eint_update_flt_reg(void __iomem *reg, int cnt, int con)
+{
+ unsigned int val, shift;
+ int i;
+
+ val = readl(reg);
+ for (i = 0; i < cnt; i++) {
+ shift = i * EXYNOS_FLTCON_LEN;
+ val &= ~(EXYNOS_FLTCON_DIGITAL << shift);
+ val |= con << shift;
+ }
+ writel(val, reg);
+}
+
+/*
+ * Set the desired filter (digital or analog delay) and enable it to
+ * every pin in the bank. Note the filter selection bitfield is only
+ * found on alive banks. The filter determines to what extent signal
+ * fluctuations received through the pad are considered glitches.
+ */
+static void exynos_eint_set_filter(struct samsung_pin_bank *bank, int filter)
+{
+ unsigned int off = EXYNOS_GPIO_EFLTCON_OFFSET + bank->eint_fltcon_offset;
+ void __iomem *reg = bank->drvdata->virt_base + off;
+ unsigned int con = EXYNOS_FLTCON_EN | filter;
+
+ for (int n = 0; n < bank->nr_pins; n += 4)
+ exynos_eint_update_flt_reg(reg + n,
+ min(bank->nr_pins - n, 4), con);
+}
+
/*
* exynos_eint_gpio_init() - setup handling of external gpio interrupts.
* @d: driver data of samsung pinctrl driver.
@@ -762,153 +793,190 @@ __init int exynos_eint_wkup_init(struct samsung_pinctrl_drv_data *d)
return 0;
}
-static void exynos_pinctrl_suspend_bank(
- struct samsung_pinctrl_drv_data *drvdata,
- struct samsung_pin_bank *bank)
+static void exynos_set_wakeup(struct samsung_pin_bank *bank)
{
- struct exynos_eint_gpio_save *save = bank->soc_priv;
- const void __iomem *regs = bank->eint_base;
+ struct exynos_irq_chip *irq_chip;
- if (clk_enable(bank->drvdata->pclk)) {
- dev_err(bank->gpio_chip.parent,
- "unable to enable clock for saving state\n");
- return;
+ if (bank->irq_chip) {
+ irq_chip = bank->irq_chip;
+ irq_chip->set_eint_wakeup_mask(bank->drvdata, irq_chip);
}
-
- save->eint_con = readl(regs + EXYNOS_GPIO_ECON_OFFSET
- + bank->eint_offset);
- save->eint_fltcon0 = readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET
- + 2 * bank->eint_offset);
- save->eint_fltcon1 = readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET
- + 2 * bank->eint_offset + 4);
- save->eint_mask = readl(regs + bank->irq_chip->eint_mask
- + bank->eint_offset);
-
- clk_disable(bank->drvdata->pclk);
-
- pr_debug("%s: save con %#010x\n", bank->name, save->eint_con);
- pr_debug("%s: save fltcon0 %#010x\n", bank->name, save->eint_fltcon0);
- pr_debug("%s: save fltcon1 %#010x\n", bank->name, save->eint_fltcon1);
- pr_debug("%s: save mask %#010x\n", bank->name, save->eint_mask);
}
-static void exynosauto_pinctrl_suspend_bank(struct samsung_pinctrl_drv_data *drvdata,
- struct samsung_pin_bank *bank)
+void exynos_pinctrl_suspend(struct samsung_pin_bank *bank)
{
struct exynos_eint_gpio_save *save = bank->soc_priv;
const void __iomem *regs = bank->eint_base;
- if (clk_enable(bank->drvdata->pclk)) {
- dev_err(bank->gpio_chip.parent,
- "unable to enable clock for saving state\n");
- return;
+ if (bank->eint_type == EINT_TYPE_GPIO) {
+ save->eint_con = readl(regs + EXYNOS_GPIO_ECON_OFFSET
+ + bank->eint_offset);
+ save->eint_fltcon0 = readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET
+ + 2 * bank->eint_offset);
+ save->eint_fltcon1 = readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET
+ + 2 * bank->eint_offset + 4);
+ save->eint_mask = readl(regs + bank->irq_chip->eint_mask
+ + bank->eint_offset);
+
+ pr_debug("%s: save con %#010x\n",
+ bank->name, save->eint_con);
+ pr_debug("%s: save fltcon0 %#010x\n",
+ bank->name, save->eint_fltcon0);
+ pr_debug("%s: save fltcon1 %#010x\n",
+ bank->name, save->eint_fltcon1);
+ pr_debug("%s: save mask %#010x\n",
+ bank->name, save->eint_mask);
+ } else if (bank->eint_type == EINT_TYPE_WKUP) {
+ exynos_set_wakeup(bank);
}
-
- save->eint_con = readl(regs + bank->pctl_offset + bank->eint_con_offset);
- save->eint_mask = readl(regs + bank->pctl_offset + bank->eint_mask_offset);
-
- clk_disable(bank->drvdata->pclk);
-
- pr_debug("%s: save con %#010x\n", bank->name, save->eint_con);
- pr_debug("%s: save mask %#010x\n", bank->name, save->eint_mask);
}
-void exynos_pinctrl_suspend(struct samsung_pinctrl_drv_data *drvdata)
+void gs101_pinctrl_suspend(struct samsung_pin_bank *bank)
{
- struct samsung_pin_bank *bank = drvdata->pin_banks;
- struct exynos_irq_chip *irq_chip = NULL;
- int i;
+ struct exynos_eint_gpio_save *save = bank->soc_priv;
+ const void __iomem *regs = bank->eint_base;
- for (i = 0; i < drvdata->nr_banks; ++i, ++bank) {
- if (bank->eint_type == EINT_TYPE_GPIO) {
- if (bank->eint_con_offset)
- exynosauto_pinctrl_suspend_bank(drvdata, bank);
- else
- exynos_pinctrl_suspend_bank(drvdata, bank);
- }
- else if (bank->eint_type == EINT_TYPE_WKUP) {
- if (!irq_chip) {
- irq_chip = bank->irq_chip;
- irq_chip->set_eint_wakeup_mask(drvdata,
- irq_chip);
- }
- }
+ if (bank->eint_type == EINT_TYPE_GPIO) {
+ save->eint_con = readl(regs + EXYNOS_GPIO_ECON_OFFSET
+ + bank->eint_offset);
+
+ save->eint_fltcon0 = readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET
+ + bank->eint_fltcon_offset);
+
+ /* fltcon1 register only exists for pins 4-7 */
+ if (bank->nr_pins > 4)
+ save->eint_fltcon1 = readl(regs +
+ EXYNOS_GPIO_EFLTCON_OFFSET
+ + bank->eint_fltcon_offset + 4);
+
+ save->eint_mask = readl(regs + bank->irq_chip->eint_mask
+ + bank->eint_offset);
+
+ pr_debug("%s: save con %#010x\n",
+ bank->name, save->eint_con);
+ pr_debug("%s: save fltcon0 %#010x\n",
+ bank->name, save->eint_fltcon0);
+ if (bank->nr_pins > 4)
+ pr_debug("%s: save fltcon1 %#010x\n",
+ bank->name, save->eint_fltcon1);
+ pr_debug("%s: save mask %#010x\n",
+ bank->name, save->eint_mask);
+ } else if (bank->eint_type == EINT_TYPE_WKUP) {
+ exynos_set_wakeup(bank);
+ exynos_eint_set_filter(bank, EXYNOS_FLTCON_ANALOG);
}
}
-static void exynos_pinctrl_resume_bank(
- struct samsung_pinctrl_drv_data *drvdata,
- struct samsung_pin_bank *bank)
+void exynosautov920_pinctrl_suspend(struct samsung_pin_bank *bank)
{
struct exynos_eint_gpio_save *save = bank->soc_priv;
- void __iomem *regs = bank->eint_base;
+ const void __iomem *regs = bank->eint_base;
- if (clk_enable(bank->drvdata->pclk)) {
- dev_err(bank->gpio_chip.parent,
- "unable to enable clock for restoring state\n");
- return;
+ if (bank->eint_type == EINT_TYPE_GPIO) {
+ save->eint_con = readl(regs + bank->pctl_offset +
+ bank->eint_con_offset);
+ save->eint_mask = readl(regs + bank->pctl_offset +
+ bank->eint_mask_offset);
+ pr_debug("%s: save con %#010x\n",
+ bank->name, save->eint_con);
+ pr_debug("%s: save mask %#010x\n",
+ bank->name, save->eint_mask);
+ } else if (bank->eint_type == EINT_TYPE_WKUP) {
+ exynos_set_wakeup(bank);
}
+}
- pr_debug("%s: con %#010x => %#010x\n", bank->name,
- readl(regs + EXYNOS_GPIO_ECON_OFFSET
- + bank->eint_offset), save->eint_con);
- pr_debug("%s: fltcon0 %#010x => %#010x\n", bank->name,
- readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET
- + 2 * bank->eint_offset), save->eint_fltcon0);
- pr_debug("%s: fltcon1 %#010x => %#010x\n", bank->name,
- readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET
- + 2 * bank->eint_offset + 4), save->eint_fltcon1);
- pr_debug("%s: mask %#010x => %#010x\n", bank->name,
- readl(regs + bank->irq_chip->eint_mask
- + bank->eint_offset), save->eint_mask);
-
- writel(save->eint_con, regs + EXYNOS_GPIO_ECON_OFFSET
- + bank->eint_offset);
- writel(save->eint_fltcon0, regs + EXYNOS_GPIO_EFLTCON_OFFSET
- + 2 * bank->eint_offset);
- writel(save->eint_fltcon1, regs + EXYNOS_GPIO_EFLTCON_OFFSET
- + 2 * bank->eint_offset + 4);
- writel(save->eint_mask, regs + bank->irq_chip->eint_mask
- + bank->eint_offset);
+void gs101_pinctrl_resume(struct samsung_pin_bank *bank)
+{
+ struct exynos_eint_gpio_save *save = bank->soc_priv;
- clk_disable(bank->drvdata->pclk);
+ void __iomem *regs = bank->eint_base;
+ void __iomem *eint_fltcfg0 = regs + EXYNOS_GPIO_EFLTCON_OFFSET
+ + bank->eint_fltcon_offset;
+
+ if (bank->eint_type == EINT_TYPE_GPIO) {
+ pr_debug("%s: con %#010x => %#010x\n", bank->name,
+ readl(regs + EXYNOS_GPIO_ECON_OFFSET
+ + bank->eint_offset), save->eint_con);
+
+ pr_debug("%s: fltcon0 %#010x => %#010x\n", bank->name,
+ readl(eint_fltcfg0), save->eint_fltcon0);
+
+ /* fltcon1 register only exists for pins 4-7 */
+ if (bank->nr_pins > 4)
+ pr_debug("%s: fltcon1 %#010x => %#010x\n", bank->name,
+ readl(eint_fltcfg0 + 4), save->eint_fltcon1);
+
+ pr_debug("%s: mask %#010x => %#010x\n", bank->name,
+ readl(regs + bank->irq_chip->eint_mask
+ + bank->eint_offset), save->eint_mask);
+
+ writel(save->eint_con, regs + EXYNOS_GPIO_ECON_OFFSET
+ + bank->eint_offset);
+ writel(save->eint_fltcon0, eint_fltcfg0);
+
+ if (bank->nr_pins > 4)
+ writel(save->eint_fltcon1, eint_fltcfg0 + 4);
+ writel(save->eint_mask, regs + bank->irq_chip->eint_mask
+ + bank->eint_offset);
+ } else if (bank->eint_type == EINT_TYPE_WKUP) {
+ exynos_eint_set_filter(bank, EXYNOS_FLTCON_DIGITAL);
+ }
}
-static void exynosauto_pinctrl_resume_bank(struct samsung_pinctrl_drv_data *drvdata,
- struct samsung_pin_bank *bank)
+void exynos_pinctrl_resume(struct samsung_pin_bank *bank)
{
struct exynos_eint_gpio_save *save = bank->soc_priv;
void __iomem *regs = bank->eint_base;
- if (clk_enable(bank->drvdata->pclk)) {
- dev_err(bank->gpio_chip.parent,
- "unable to enable clock for restoring state\n");
- return;
+ if (bank->eint_type == EINT_TYPE_GPIO) {
+ pr_debug("%s: con %#010x => %#010x\n", bank->name,
+ readl(regs + EXYNOS_GPIO_ECON_OFFSET
+ + bank->eint_offset), save->eint_con);
+ pr_debug("%s: fltcon0 %#010x => %#010x\n", bank->name,
+ readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET
+ + 2 * bank->eint_offset), save->eint_fltcon0);
+ pr_debug("%s: fltcon1 %#010x => %#010x\n", bank->name,
+ readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET
+ + 2 * bank->eint_offset + 4),
+ save->eint_fltcon1);
+ pr_debug("%s: mask %#010x => %#010x\n", bank->name,
+ readl(regs + bank->irq_chip->eint_mask
+ + bank->eint_offset), save->eint_mask);
+
+ writel(save->eint_con, regs + EXYNOS_GPIO_ECON_OFFSET
+ + bank->eint_offset);
+ writel(save->eint_fltcon0, regs + EXYNOS_GPIO_EFLTCON_OFFSET
+ + 2 * bank->eint_offset);
+ writel(save->eint_fltcon1, regs + EXYNOS_GPIO_EFLTCON_OFFSET
+ + 2 * bank->eint_offset + 4);
+ writel(save->eint_mask, regs + bank->irq_chip->eint_mask
+ + bank->eint_offset);
}
-
- pr_debug("%s: con %#010x => %#010x\n", bank->name,
- readl(regs + bank->pctl_offset + bank->eint_con_offset), save->eint_con);
- pr_debug("%s: mask %#010x => %#010x\n", bank->name,
- readl(regs + bank->pctl_offset + bank->eint_mask_offset), save->eint_mask);
-
- writel(save->eint_con, regs + bank->pctl_offset + bank->eint_con_offset);
- writel(save->eint_mask, regs + bank->pctl_offset + bank->eint_mask_offset);
-
- clk_disable(bank->drvdata->pclk);
}
-void exynos_pinctrl_resume(struct samsung_pinctrl_drv_data *drvdata)
+void exynosautov920_pinctrl_resume(struct samsung_pin_bank *bank)
{
- struct samsung_pin_bank *bank = drvdata->pin_banks;
- int i;
+ struct exynos_eint_gpio_save *save = bank->soc_priv;
+ void __iomem *regs = bank->eint_base;
- for (i = 0; i < drvdata->nr_banks; ++i, ++bank)
- if (bank->eint_type == EINT_TYPE_GPIO) {
- if (bank->eint_con_offset)
- exynosauto_pinctrl_resume_bank(drvdata, bank);
- else
- exynos_pinctrl_resume_bank(drvdata, bank);
- }
+ if (bank->eint_type == EINT_TYPE_GPIO) {
+ /* exynosautov920 has eint_con_offset for all but one bank */
+ if (!bank->eint_con_offset)
+ exynos_pinctrl_resume(bank);
+
+ pr_debug("%s: con %#010x => %#010x\n", bank->name,
+ readl(regs + bank->pctl_offset + bank->eint_con_offset),
+ save->eint_con);
+ pr_debug("%s: mask %#010x => %#010x\n", bank->name,
+ readl(regs + bank->pctl_offset +
+ bank->eint_mask_offset), save->eint_mask);
+
+ writel(save->eint_con,
+ regs + bank->pctl_offset + bank->eint_con_offset);
+ writel(save->eint_mask,
+ regs + bank->pctl_offset + bank->eint_mask_offset);
+ }
}
static void exynos_retention_enable(struct samsung_pinctrl_drv_data *drvdata)
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.h b/drivers/pinctrl/samsung/pinctrl-exynos.h
index b483270ddc53..362dc533186f 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos.h
+++ b/drivers/pinctrl/samsung/pinctrl-exynos.h
@@ -52,6 +52,26 @@
#define EXYNOS_EINT_MAX_PER_BANK 8
#define EXYNOS_EINT_NR_WKUP_EINT
+/*
+ * EINT filter configuration register (on alive banks) has
+ * the following layout.
+ *
+ * BitfieldName[PinNum][Bit:Bit]
+ * FLT_EN[3][31] FLT_SEL[3][30] FLT_WIDTH[3][29:24]
+ * FLT_EN[2][23] FLT_SEL[2][22] FLT_WIDTH[2][21:16]
+ * FLT_EN[1][15] FLT_SEL[1][14] FLT_WIDTH[1][13:8]
+ * FLT_EN[0][7] FLT_SEL[0][6] FLT_WIDTH[0][5:0]
+ *
+ * FLT_EN 0x0 = Disable, 0x1=Enable
+ * FLT_SEL 0x0 = Analog delay filter, 0x1 Digital filter (clock count)
+ * FLT_WIDTH Filtering width. Valid when FLT_SEL is 0x1
+ */
+
+#define EXYNOS_FLTCON_EN BIT(7)
+#define EXYNOS_FLTCON_DIGITAL BIT(6)
+#define EXYNOS_FLTCON_ANALOG (0 << 6)
+#define EXYNOS_FLTCON_LEN 8
+
#define EXYNOS_PIN_BANK_EINTN(pins, reg, id) \
{ \
.type = &bank_type_off, \
@@ -240,8 +260,12 @@ struct exynos_muxed_weint_data {
int exynos_eint_gpio_init(struct samsung_pinctrl_drv_data *d);
int exynos_eint_wkup_init(struct samsung_pinctrl_drv_data *d);
-void exynos_pinctrl_suspend(struct samsung_pinctrl_drv_data *drvdata);
-void exynos_pinctrl_resume(struct samsung_pinctrl_drv_data *drvdata);
+void exynosautov920_pinctrl_resume(struct samsung_pin_bank *bank);
+void exynosautov920_pinctrl_suspend(struct samsung_pin_bank *bank);
+void exynos_pinctrl_suspend(struct samsung_pin_bank *bank);
+void exynos_pinctrl_resume(struct samsung_pin_bank *bank);
+void gs101_pinctrl_suspend(struct samsung_pin_bank *bank);
+void gs101_pinctrl_resume(struct samsung_pin_bank *bank);
struct samsung_retention_ctrl *
exynos_retention_init(struct samsung_pinctrl_drv_data *drvdata,
const struct samsung_retention_data *data);
diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c
index 2896eb2de2c0..fe1ac82b9d79 100644
--- a/drivers/pinctrl/samsung/pinctrl-samsung.c
+++ b/drivers/pinctrl/samsung/pinctrl-samsung.c
@@ -570,15 +570,18 @@ static void samsung_gpio_set_value(struct gpio_chip *gc,
}
/* gpiolib gpio_set callback function */
-static void samsung_gpio_set(struct gpio_chip *gc, unsigned offset, int value)
+static int samsung_gpio_set(struct gpio_chip *gc, unsigned int offset,
+ int value)
{
struct samsung_pin_bank *bank = gpiochip_get_data(gc);
struct samsung_pinctrl_drv_data *drvdata = bank->drvdata;
unsigned long flags;
+ int ret;
- if (clk_enable(drvdata->pclk)) {
+ ret = clk_enable(drvdata->pclk);
+ if (ret) {
dev_err(drvdata->dev, "failed to enable clock\n");
- return;
+ return ret;
}
raw_spin_lock_irqsave(&bank->slock, flags);
@@ -586,6 +589,8 @@ static void samsung_gpio_set(struct gpio_chip *gc, unsigned offset, int value)
raw_spin_unlock_irqrestore(&bank->slock, flags);
clk_disable(drvdata->pclk);
+
+ return 0;
}
/* gpiolib gpio_get callback function */
@@ -1062,7 +1067,7 @@ static int samsung_gpio_set_config(struct gpio_chip *gc, unsigned int offset,
static const struct gpio_chip samsung_gpiolib_chip = {
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
- .set = samsung_gpio_set,
+ .set_rv = samsung_gpio_set,
.get = samsung_gpio_get,
.direction_input = samsung_gpio_direction_input,
.direction_output = samsung_gpio_direction_output,
@@ -1333,6 +1338,7 @@ err_put_banks:
static int __maybe_unused samsung_pinctrl_suspend(struct device *dev)
{
struct samsung_pinctrl_drv_data *drvdata = dev_get_drvdata(dev);
+ struct samsung_pin_bank *bank;
int i;
i = clk_enable(drvdata->pclk);
@@ -1343,7 +1349,7 @@ static int __maybe_unused samsung_pinctrl_suspend(struct device *dev)
}
for (i = 0; i < drvdata->nr_banks; i++) {
- struct samsung_pin_bank *bank = &drvdata->pin_banks[i];
+ bank = &drvdata->pin_banks[i];
const void __iomem *reg = bank->pctl_base + bank->pctl_offset;
const u8 *offs = bank->type->reg_offset;
const u8 *widths = bank->type->fld_width;
@@ -1371,10 +1377,14 @@ static int __maybe_unused samsung_pinctrl_suspend(struct device *dev)
}
}
+ for (i = 0; i < drvdata->nr_banks; i++) {
+ bank = &drvdata->pin_banks[i];
+ if (drvdata->suspend)
+ drvdata->suspend(bank);
+ }
+
clk_disable(drvdata->pclk);
- if (drvdata->suspend)
- drvdata->suspend(drvdata);
if (drvdata->retention_ctrl && drvdata->retention_ctrl->enable)
drvdata->retention_ctrl->enable(drvdata);
@@ -1392,6 +1402,7 @@ static int __maybe_unused samsung_pinctrl_suspend(struct device *dev)
static int __maybe_unused samsung_pinctrl_resume(struct device *dev)
{
struct samsung_pinctrl_drv_data *drvdata = dev_get_drvdata(dev);
+ struct samsung_pin_bank *bank;
int ret;
int i;
@@ -1406,11 +1417,14 @@ static int __maybe_unused samsung_pinctrl_resume(struct device *dev)
return ret;
}
- if (drvdata->resume)
- drvdata->resume(drvdata);
+ for (i = 0; i < drvdata->nr_banks; i++) {
+ bank = &drvdata->pin_banks[i];
+ if (drvdata->resume)
+ drvdata->resume(bank);
+ }
for (i = 0; i < drvdata->nr_banks; i++) {
- struct samsung_pin_bank *bank = &drvdata->pin_banks[i];
+ bank = &drvdata->pin_banks[i];
void __iomem *reg = bank->pctl_base + bank->pctl_offset;
const u8 *offs = bank->type->reg_offset;
const u8 *widths = bank->type->fld_width;
diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.h b/drivers/pinctrl/samsung/pinctrl-samsung.h
index 3cf758df7d69..fcc57c244d16 100644
--- a/drivers/pinctrl/samsung/pinctrl-samsung.h
+++ b/drivers/pinctrl/samsung/pinctrl-samsung.h
@@ -285,8 +285,8 @@ struct samsung_pin_ctrl {
int (*eint_gpio_init)(struct samsung_pinctrl_drv_data *);
int (*eint_wkup_init)(struct samsung_pinctrl_drv_data *);
void (*pud_value_init)(struct samsung_pinctrl_drv_data *drvdata);
- void (*suspend)(struct samsung_pinctrl_drv_data *);
- void (*resume)(struct samsung_pinctrl_drv_data *);
+ void (*suspend)(struct samsung_pin_bank *bank);
+ void (*resume)(struct samsung_pin_bank *bank);
};
/**
@@ -335,8 +335,8 @@ struct samsung_pinctrl_drv_data {
struct samsung_retention_ctrl *retention_ctrl;
- void (*suspend)(struct samsung_pinctrl_drv_data *);
- void (*resume)(struct samsung_pinctrl_drv_data *);
+ void (*suspend)(struct samsung_pin_bank *bank);
+ void (*resume)(struct samsung_pin_bank *bank);
};
/**
diff --git a/drivers/pinctrl/spacemit/pinctrl-k1.c b/drivers/pinctrl/spacemit/pinctrl-k1.c
index 67e867b04a02..9996b1c4a07e 100644
--- a/drivers/pinctrl/spacemit/pinctrl-k1.c
+++ b/drivers/pinctrl/spacemit/pinctrl-k1.c
@@ -2,6 +2,7 @@
/* Copyright (c) 2024 Yixun Lan <dlan@gentoo.org> */
#include <linux/bits.h>
+#include <linux/clk.h>
#include <linux/cleanup.h>
#include <linux/io.h>
#include <linux/of.h>
@@ -721,6 +722,7 @@ static int spacemit_pinctrl_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct spacemit_pinctrl *pctrl;
+ struct clk *func_clk, *bus_clk;
const struct spacemit_pinctrl_data *pctrl_data;
int ret;
@@ -739,6 +741,14 @@ static int spacemit_pinctrl_probe(struct platform_device *pdev)
if (IS_ERR(pctrl->regs))
return PTR_ERR(pctrl->regs);
+ func_clk = devm_clk_get_enabled(dev, "func");
+ if (IS_ERR(func_clk))
+ return dev_err_probe(dev, PTR_ERR(func_clk), "failed to get func clock\n");
+
+ bus_clk = devm_clk_get_enabled(dev, "bus");
+ if (IS_ERR(bus_clk))
+ return dev_err_probe(dev, PTR_ERR(bus_clk), "failed to get bus clock\n");
+
pctrl->pdesc.name = dev_name(dev);
pctrl->pdesc.pins = pctrl_data->pins;
pctrl->pdesc.npins = pctrl_data->npins;
diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c b/drivers/pinctrl/stm32/pinctrl-stm32.c
index cc0b4d1d7cff..ba49d48c3a1d 100644
--- a/drivers/pinctrl/stm32/pinctrl-stm32.c
+++ b/drivers/pinctrl/stm32/pinctrl-stm32.c
@@ -228,11 +228,14 @@ static int stm32_gpio_get(struct gpio_chip *chip, unsigned offset)
return !!(readl_relaxed(bank->base + STM32_GPIO_IDR) & BIT(offset));
}
-static void stm32_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int stm32_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct stm32_gpio_bank *bank = gpiochip_get_data(chip);
__stm32_gpio_set(bank, offset, value);
+
+ return 0;
}
static int stm32_gpio_direction_output(struct gpio_chip *chip,
@@ -308,7 +311,7 @@ static const struct gpio_chip stm32_gpio_template = {
.request = stm32_gpio_request,
.free = pinctrl_gpio_free,
.get = stm32_gpio_get,
- .set = stm32_gpio_set,
+ .set_rv = stm32_gpio_set,
.direction_input = pinctrl_gpio_direction_input,
.direction_output = stm32_gpio_direction_output,
.to_irq = stm32_gpio_to_irq,
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index f1c5a991cf7b..bf8612d72daa 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -1646,10 +1646,9 @@ int sunxi_pinctrl_init_with_flags(struct platform_device *pdev,
}
}
- pctl->domain = irq_domain_add_linear(node,
- pctl->desc->irq_banks * IRQ_PER_BANK,
- &sunxi_pinctrl_irq_domain_ops,
- pctl);
+ pctl->domain = irq_domain_create_linear(of_fwnode_handle(node),
+ pctl->desc->irq_banks * IRQ_PER_BANK,
+ &sunxi_pinctrl_irq_domain_ops, pctl);
if (!pctl->domain) {
dev_err(&pdev->dev, "Couldn't register IRQ domain\n");
ret = -ENOMEM;
diff --git a/drivers/pinctrl/uniphier/Kconfig b/drivers/pinctrl/uniphier/Kconfig
index b71c07d84662..5e3de0df756b 100644
--- a/drivers/pinctrl/uniphier/Kconfig
+++ b/drivers/pinctrl/uniphier/Kconfig
@@ -3,7 +3,7 @@ menuconfig PINCTRL_UNIPHIER
bool "UniPhier SoC pinctrl drivers"
depends on ARCH_UNIPHIER || COMPILE_TEST
depends on OF && MFD_SYSCON
- default y
+ default ARCH_UNIPHIER
select PINMUX
select GENERIC_PINCONF