linux/drivers/pinctrl/mediatek/pinctrl-mt7623.c
AngeloGioacchino Del Regno e1ff91f9d2 pinctrl: mediatek: Fix EINT pins input debounce time configuration
The External Interrupt Controller (EINTC) on all of the supported
MediaTek SoCs does support input debouncing, but not all of them
index the debounce time values (DBNC_SETTING registers) the same way.

Before this change, in some cases, as an example, requesting a debounce
time of 16 milliseconds would mistakenly set the relative DBNC_SETTING
register to 0x2, resulting in a way shorter debounce time of 500uS.

To fix the aforementioned issue, define three different debounce_time
arrays, reflecting the correct register index for each value and for
each register index variant, and make sure that each SoC pinctrl
driver uses the right one.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20221111094106.18486-1-angelogioacchino.delregno@collabora.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2022-11-14 14:20:41 +01:00

1443 lines
61 KiB
C

// SPDX-License-Identifier: GPL-2.0
/*
* The MT7623 driver based on Linux generic pinctrl binding.
*
* Copyright (C) 2015 - 2018 MediaTek Inc.
* Author: Biao Huang <biao.huang@mediatek.com>
* Ryder Lee <ryder.lee@mediatek.com>
* Sean Wang <sean.wang@mediatek.com>
*/
#include "pinctrl-moore.h"
#define PIN_BOND_REG0 0xb10
#define PIN_BOND_REG1 0xf20
#define PIN_BOND_REG2 0xef0
#define BOND_PCIE_CLR (0x77 << 3)
#define BOND_I2S_CLR 0x3
#define BOND_MSDC0E_CLR 0x1
#define PIN_FIELD15(_s_pin, _e_pin, _s_addr, _x_addrs, _s_bit, _x_bits) \
PIN_FIELD_CALC(_s_pin, _e_pin, 0, _s_addr, _x_addrs, _s_bit, \
_x_bits, 15, false)
#define PIN_FIELD16(_s_pin, _e_pin, _s_addr, _x_addrs, _s_bit, _x_bits) \
PIN_FIELD_CALC(_s_pin, _e_pin, 0, _s_addr, _x_addrs, _s_bit, \
_x_bits, 16, 0)
#define PINS_FIELD16(_s_pin, _e_pin, _s_addr, _x_addrs, _s_bit, _x_bits) \
PIN_FIELD_CALC(_s_pin, _e_pin, 0, _s_addr, _x_addrs, _s_bit, \
_x_bits, 16, 1)
#define MT7623_PIN(_number, _name, _eint_n, _drv_grp) \
MTK_PIN(_number, _name, 0, _eint_n, _drv_grp)
static const struct mtk_pin_field_calc mt7623_pin_mode_range[] = {
PIN_FIELD15(0, 278, 0x760, 0x10, 0, 3),
};
static const struct mtk_pin_field_calc mt7623_pin_dir_range[] = {
PIN_FIELD16(0, 175, 0x0, 0x10, 0, 1),
PIN_FIELD16(176, 278, 0xc0, 0x10, 0, 1),
};
static const struct mtk_pin_field_calc mt7623_pin_di_range[] = {
PIN_FIELD16(0, 278, 0x630, 0x10, 0, 1),
};
static const struct mtk_pin_field_calc mt7623_pin_do_range[] = {
PIN_FIELD16(0, 278, 0x500, 0x10, 0, 1),
};
static const struct mtk_pin_field_calc mt7623_pin_ies_range[] = {
PINS_FIELD16(0, 6, 0xb20, 0x10, 0, 1),
PINS_FIELD16(7, 9, 0xb20, 0x10, 1, 1),
PINS_FIELD16(10, 13, 0xb30, 0x10, 3, 1),
PINS_FIELD16(14, 15, 0xb30, 0x10, 13, 1),
PINS_FIELD16(16, 17, 0xb40, 0x10, 7, 1),
PINS_FIELD16(18, 29, 0xb40, 0x10, 13, 1),
PINS_FIELD16(30, 32, 0xb40, 0x10, 7, 1),
PINS_FIELD16(33, 37, 0xb40, 0x10, 13, 1),
PIN_FIELD16(38, 38, 0xb20, 0x10, 13, 1),
PINS_FIELD16(39, 42, 0xb40, 0x10, 13, 1),
PINS_FIELD16(43, 45, 0xb20, 0x10, 10, 1),
PINS_FIELD16(47, 48, 0xb20, 0x10, 11, 1),
PIN_FIELD16(49, 49, 0xb20, 0x10, 12, 1),
PINS_FIELD16(50, 52, 0xb20, 0x10, 13, 1),
PINS_FIELD16(53, 56, 0xb20, 0x10, 14, 1),
PINS_FIELD16(57, 58, 0xb20, 0x10, 15, 1),
PIN_FIELD16(59, 59, 0xb30, 0x10, 10, 1),
PINS_FIELD16(60, 62, 0xb30, 0x10, 0, 1),
PINS_FIELD16(63, 65, 0xb30, 0x10, 1, 1),
PINS_FIELD16(66, 71, 0xb30, 0x10, 2, 1),
PINS_FIELD16(72, 74, 0xb20, 0x10, 12, 1),
PINS_FIELD16(75, 76, 0xb30, 0x10, 3, 1),
PINS_FIELD16(77, 78, 0xb30, 0x10, 4, 1),
PINS_FIELD16(79, 82, 0xb30, 0x10, 5, 1),
PINS_FIELD16(83, 84, 0xb30, 0x10, 2, 1),
PIN_FIELD16(85, 85, 0xda0, 0x10, 4, 1),
PIN_FIELD16(86, 86, 0xd90, 0x10, 4, 1),
PINS_FIELD16(87, 90, 0xdb0, 0x10, 4, 1),
PINS_FIELD16(101, 104, 0xb30, 0x10, 6, 1),
PIN_FIELD16(105, 105, 0xd40, 0x10, 4, 1),
PIN_FIELD16(106, 106, 0xd30, 0x10, 4, 1),
PINS_FIELD16(107, 110, 0xd50, 0x10, 4, 1),
PINS_FIELD16(111, 115, 0xce0, 0x10, 4, 1),
PIN_FIELD16(116, 116, 0xcd0, 0x10, 4, 1),
PIN_FIELD16(117, 117, 0xcc0, 0x10, 4, 1),
PINS_FIELD16(118, 121, 0xce0, 0x10, 4, 1),
PINS_FIELD16(122, 125, 0xb30, 0x10, 7, 1),
PIN_FIELD16(126, 126, 0xb20, 0x10, 12, 1),
PINS_FIELD16(127, 142, 0xb30, 0x10, 9, 1),
PINS_FIELD16(143, 160, 0xb30, 0x10, 10, 1),
PINS_FIELD16(161, 168, 0xb30, 0x10, 12, 1),
PINS_FIELD16(169, 183, 0xb30, 0x10, 10, 1),
PINS_FIELD16(184, 186, 0xb30, 0x10, 9, 1),
PIN_FIELD16(187, 187, 0xb30, 0x10, 14, 1),
PIN_FIELD16(188, 188, 0xb20, 0x10, 13, 1),
PINS_FIELD16(189, 193, 0xb30, 0x10, 15, 1),
PINS_FIELD16(194, 198, 0xb40, 0x10, 0, 1),
PIN_FIELD16(199, 199, 0xb20, 0x10, 1, 1),
PINS_FIELD16(200, 202, 0xb40, 0x10, 1, 1),
PINS_FIELD16(203, 207, 0xb40, 0x10, 2, 1),
PINS_FIELD16(208, 209, 0xb40, 0x10, 3, 1),
PIN_FIELD16(210, 210, 0xb40, 0x10, 4, 1),
PINS_FIELD16(211, 235, 0xb40, 0x10, 5, 1),
PINS_FIELD16(236, 241, 0xb40, 0x10, 6, 1),
PINS_FIELD16(242, 243, 0xb40, 0x10, 7, 1),
PINS_FIELD16(244, 247, 0xb40, 0x10, 8, 1),
PIN_FIELD16(248, 248, 0xb40, 0x10, 9, 1),
PINS_FIELD16(249, 257, 0xfc0, 0x10, 4, 1),
PIN_FIELD16(258, 258, 0xcb0, 0x10, 4, 1),
PIN_FIELD16(259, 259, 0xc90, 0x10, 4, 1),
PIN_FIELD16(260, 260, 0x3a0, 0x10, 4, 1),
PIN_FIELD16(261, 261, 0xd50, 0x10, 4, 1),
PINS_FIELD16(262, 277, 0xb40, 0x10, 12, 1),
PIN_FIELD16(278, 278, 0xb40, 0x10, 13, 1),
};
static const struct mtk_pin_field_calc mt7623_pin_smt_range[] = {
PINS_FIELD16(0, 6, 0xb50, 0x10, 0, 1),
PINS_FIELD16(7, 9, 0xb50, 0x10, 1, 1),
PINS_FIELD16(10, 13, 0xb60, 0x10, 3, 1),
PINS_FIELD16(14, 15, 0xb60, 0x10, 13, 1),
PINS_FIELD16(16, 17, 0xb70, 0x10, 7, 1),
PINS_FIELD16(18, 29, 0xb70, 0x10, 13, 1),
PINS_FIELD16(30, 32, 0xb70, 0x10, 7, 1),
PINS_FIELD16(33, 37, 0xb70, 0x10, 13, 1),
PIN_FIELD16(38, 38, 0xb50, 0x10, 13, 1),
PINS_FIELD16(39, 42, 0xb70, 0x10, 13, 1),
PINS_FIELD16(43, 45, 0xb50, 0x10, 10, 1),
PINS_FIELD16(47, 48, 0xb50, 0x10, 11, 1),
PIN_FIELD16(49, 49, 0xb50, 0x10, 12, 1),
PINS_FIELD16(50, 52, 0xb50, 0x10, 13, 1),
PINS_FIELD16(53, 56, 0xb50, 0x10, 14, 1),
PINS_FIELD16(57, 58, 0xb50, 0x10, 15, 1),
PIN_FIELD16(59, 59, 0xb60, 0x10, 10, 1),
PINS_FIELD16(60, 62, 0xb60, 0x10, 0, 1),
PINS_FIELD16(63, 65, 0xb60, 0x10, 1, 1),
PINS_FIELD16(66, 71, 0xb60, 0x10, 2, 1),
PINS_FIELD16(72, 74, 0xb50, 0x10, 12, 1),
PINS_FIELD16(75, 76, 0xb60, 0x10, 3, 1),
PINS_FIELD16(77, 78, 0xb60, 0x10, 4, 1),
PINS_FIELD16(79, 82, 0xb60, 0x10, 5, 1),
PINS_FIELD16(83, 84, 0xb60, 0x10, 2, 1),
PIN_FIELD16(85, 85, 0xda0, 0x10, 11, 1),
PIN_FIELD16(86, 86, 0xd90, 0x10, 11, 1),
PIN_FIELD16(87, 87, 0xdc0, 0x10, 3, 1),
PIN_FIELD16(88, 88, 0xdc0, 0x10, 7, 1),
PIN_FIELD16(89, 89, 0xdc0, 0x10, 11, 1),
PIN_FIELD16(90, 90, 0xdc0, 0x10, 15, 1),
PINS_FIELD16(101, 104, 0xb60, 0x10, 6, 1),
PIN_FIELD16(105, 105, 0xd40, 0x10, 11, 1),
PIN_FIELD16(106, 106, 0xd30, 0x10, 11, 1),
PIN_FIELD16(107, 107, 0xd60, 0x10, 3, 1),
PIN_FIELD16(108, 108, 0xd60, 0x10, 7, 1),
PIN_FIELD16(109, 109, 0xd60, 0x10, 11, 1),
PIN_FIELD16(110, 110, 0xd60, 0x10, 15, 1),
PIN_FIELD16(111, 111, 0xd00, 0x10, 15, 1),
PIN_FIELD16(112, 112, 0xd00, 0x10, 11, 1),
PIN_FIELD16(113, 113, 0xd00, 0x10, 7, 1),
PIN_FIELD16(114, 114, 0xd00, 0x10, 3, 1),
PIN_FIELD16(115, 115, 0xd10, 0x10, 3, 1),
PIN_FIELD16(116, 116, 0xcd0, 0x10, 11, 1),
PIN_FIELD16(117, 117, 0xcc0, 0x10, 11, 1),
PIN_FIELD16(118, 118, 0xcf0, 0x10, 15, 1),
PIN_FIELD16(119, 119, 0xcf0, 0x10, 7, 1),
PIN_FIELD16(120, 120, 0xcf0, 0x10, 3, 1),
PIN_FIELD16(121, 121, 0xcf0, 0x10, 7, 1),
PINS_FIELD16(122, 125, 0xb60, 0x10, 7, 1),
PIN_FIELD16(126, 126, 0xb50, 0x10, 12, 1),
PINS_FIELD16(127, 142, 0xb60, 0x10, 9, 1),
PINS_FIELD16(143, 160, 0xb60, 0x10, 10, 1),
PINS_FIELD16(161, 168, 0xb60, 0x10, 12, 1),
PINS_FIELD16(169, 183, 0xb60, 0x10, 10, 1),
PINS_FIELD16(184, 186, 0xb60, 0x10, 9, 1),
PIN_FIELD16(187, 187, 0xb60, 0x10, 14, 1),
PIN_FIELD16(188, 188, 0xb50, 0x10, 13, 1),
PINS_FIELD16(189, 193, 0xb60, 0x10, 15, 1),
PINS_FIELD16(194, 198, 0xb70, 0x10, 0, 1),
PIN_FIELD16(199, 199, 0xb50, 0x10, 1, 1),
PINS_FIELD16(200, 202, 0xb70, 0x10, 1, 1),
PINS_FIELD16(203, 207, 0xb70, 0x10, 2, 1),
PINS_FIELD16(208, 209, 0xb70, 0x10, 3, 1),
PIN_FIELD16(210, 210, 0xb70, 0x10, 4, 1),
PINS_FIELD16(211, 235, 0xb70, 0x10, 5, 1),
PINS_FIELD16(236, 241, 0xb70, 0x10, 6, 1),
PINS_FIELD16(242, 243, 0xb70, 0x10, 7, 1),
PINS_FIELD16(244, 247, 0xb70, 0x10, 8, 1),
PIN_FIELD16(248, 248, 0xb70, 0x10, 9, 10),
PIN_FIELD16(249, 249, 0x140, 0x10, 3, 1),
PIN_FIELD16(250, 250, 0x130, 0x10, 15, 1),
PIN_FIELD16(251, 251, 0x130, 0x10, 11, 1),
PIN_FIELD16(252, 252, 0x130, 0x10, 7, 1),
PIN_FIELD16(253, 253, 0x130, 0x10, 3, 1),
PIN_FIELD16(254, 254, 0xf40, 0x10, 15, 1),
PIN_FIELD16(255, 255, 0xf40, 0x10, 11, 1),
PIN_FIELD16(256, 256, 0xf40, 0x10, 7, 1),
PIN_FIELD16(257, 257, 0xf40, 0x10, 3, 1),
PIN_FIELD16(258, 258, 0xcb0, 0x10, 11, 1),
PIN_FIELD16(259, 259, 0xc90, 0x10, 11, 1),
PIN_FIELD16(260, 260, 0x3a0, 0x10, 11, 1),
PIN_FIELD16(261, 261, 0x0b0, 0x10, 3, 1),
PINS_FIELD16(262, 277, 0xb70, 0x10, 12, 1),
PIN_FIELD16(278, 278, 0xb70, 0x10, 13, 1),
};
static const struct mtk_pin_field_calc mt7623_pin_pullen_range[] = {
PIN_FIELD16(0, 278, 0x150, 0x10, 0, 1),
};
static const struct mtk_pin_field_calc mt7623_pin_pullsel_range[] = {
PIN_FIELD16(0, 278, 0x280, 0x10, 0, 1),
};
static const struct mtk_pin_field_calc mt7623_pin_drv_range[] = {
PINS_FIELD16(0, 6, 0xf50, 0x10, 0, 4),
PINS_FIELD16(7, 9, 0xf50, 0x10, 4, 4),
PINS_FIELD16(10, 13, 0xf50, 0x10, 4, 4),
PINS_FIELD16(14, 15, 0xf50, 0x10, 12, 4),
PINS_FIELD16(16, 17, 0xf60, 0x10, 0, 4),
PINS_FIELD16(18, 21, 0xf60, 0x10, 0, 4),
PINS_FIELD16(22, 26, 0xf60, 0x10, 8, 4),
PINS_FIELD16(27, 29, 0xf60, 0x10, 12, 4),
PINS_FIELD16(30, 32, 0xf60, 0x10, 0, 4),
PINS_FIELD16(33, 37, 0xf70, 0x10, 0, 4),
PIN_FIELD16(38, 38, 0xf70, 0x10, 4, 4),
PINS_FIELD16(39, 42, 0xf70, 0x10, 8, 4),
PINS_FIELD16(43, 45, 0xf70, 0x10, 12, 4),
PINS_FIELD16(47, 48, 0xf80, 0x10, 0, 4),
PIN_FIELD16(49, 49, 0xf80, 0x10, 4, 4),
PINS_FIELD16(50, 52, 0xf70, 0x10, 4, 4),
PINS_FIELD16(53, 56, 0xf80, 0x10, 12, 4),
PINS_FIELD16(60, 62, 0xf90, 0x10, 8, 4),
PINS_FIELD16(63, 65, 0xf90, 0x10, 12, 4),
PINS_FIELD16(66, 71, 0xfa0, 0x10, 0, 4),
PINS_FIELD16(72, 74, 0xf80, 0x10, 4, 4),
PIN_FIELD16(85, 85, 0xda0, 0x10, 0, 4),
PIN_FIELD16(86, 86, 0xd90, 0x10, 0, 4),
PINS_FIELD16(87, 90, 0xdb0, 0x10, 0, 4),
PIN_FIELD16(105, 105, 0xd40, 0x10, 0, 4),
PIN_FIELD16(106, 106, 0xd30, 0x10, 0, 4),
PINS_FIELD16(107, 110, 0xd50, 0x10, 0, 4),
PINS_FIELD16(111, 115, 0xce0, 0x10, 0, 4),
PIN_FIELD16(116, 116, 0xcd0, 0x10, 0, 4),
PIN_FIELD16(117, 117, 0xcc0, 0x10, 0, 4),
PINS_FIELD16(118, 121, 0xce0, 0x10, 0, 4),
PIN_FIELD16(126, 126, 0xf80, 0x10, 4, 4),
PIN_FIELD16(188, 188, 0xf70, 0x10, 4, 4),
PINS_FIELD16(189, 193, 0xfe0, 0x10, 8, 4),
PINS_FIELD16(194, 198, 0xfe0, 0x10, 12, 4),
PIN_FIELD16(199, 199, 0xf50, 0x10, 4, 4),
PINS_FIELD16(200, 202, 0xfd0, 0x10, 0, 4),
PINS_FIELD16(203, 207, 0xfd0, 0x10, 4, 4),
PINS_FIELD16(208, 209, 0xfd0, 0x10, 8, 4),
PIN_FIELD16(210, 210, 0xfd0, 0x10, 12, 4),
PINS_FIELD16(211, 235, 0xff0, 0x10, 0, 4),
PINS_FIELD16(236, 241, 0xff0, 0x10, 4, 4),
PINS_FIELD16(242, 243, 0xff0, 0x10, 8, 4),
PIN_FIELD16(248, 248, 0xf00, 0x10, 0, 4),
PINS_FIELD16(249, 256, 0xfc0, 0x10, 0, 4),
PIN_FIELD16(257, 257, 0xce0, 0x10, 0, 4),
PIN_FIELD16(258, 258, 0xcb0, 0x10, 0, 4),
PIN_FIELD16(259, 259, 0xc90, 0x10, 0, 4),
PIN_FIELD16(260, 260, 0x3a0, 0x10, 0, 4),
PIN_FIELD16(261, 261, 0xd50, 0x10, 0, 4),
PINS_FIELD16(262, 277, 0xf00, 0x10, 8, 4),
PIN_FIELD16(278, 278, 0xf70, 0x10, 8, 4),
};
static const struct mtk_pin_field_calc mt7623_pin_tdsel_range[] = {
PINS_FIELD16(262, 276, 0x4c0, 0x10, 0, 4),
};
static const struct mtk_pin_field_calc mt7623_pin_pupd_range[] = {
/* MSDC0 */
PIN_FIELD16(111, 111, 0xd00, 0x10, 12, 1),
PIN_FIELD16(112, 112, 0xd00, 0x10, 8, 1),
PIN_FIELD16(113, 113, 0xd00, 0x10, 4, 1),
PIN_FIELD16(114, 114, 0xd00, 0x10, 0, 1),
PIN_FIELD16(115, 115, 0xd10, 0x10, 0, 1),
PIN_FIELD16(116, 116, 0xcd0, 0x10, 8, 1),
PIN_FIELD16(117, 117, 0xcc0, 0x10, 8, 1),
PIN_FIELD16(118, 118, 0xcf0, 0x10, 12, 1),
PIN_FIELD16(119, 119, 0xcf0, 0x10, 8, 1),
PIN_FIELD16(120, 120, 0xcf0, 0x10, 4, 1),
PIN_FIELD16(121, 121, 0xcf0, 0x10, 0, 1),
/* MSDC1 */
PIN_FIELD16(105, 105, 0xd40, 0x10, 8, 1),
PIN_FIELD16(106, 106, 0xd30, 0x10, 8, 1),
PIN_FIELD16(107, 107, 0xd60, 0x10, 0, 1),
PIN_FIELD16(108, 108, 0xd60, 0x10, 10, 1),
PIN_FIELD16(109, 109, 0xd60, 0x10, 4, 1),
PIN_FIELD16(110, 110, 0xc60, 0x10, 12, 1),
/* MSDC1 */
PIN_FIELD16(85, 85, 0xda0, 0x10, 8, 1),
PIN_FIELD16(86, 86, 0xd90, 0x10, 8, 1),
PIN_FIELD16(87, 87, 0xdc0, 0x10, 0, 1),
PIN_FIELD16(88, 88, 0xdc0, 0x10, 10, 1),
PIN_FIELD16(89, 89, 0xdc0, 0x10, 4, 1),
PIN_FIELD16(90, 90, 0xdc0, 0x10, 12, 1),
/* MSDC0E */
PIN_FIELD16(249, 249, 0x140, 0x10, 0, 1),
PIN_FIELD16(250, 250, 0x130, 0x10, 12, 1),
PIN_FIELD16(251, 251, 0x130, 0x10, 8, 1),
PIN_FIELD16(252, 252, 0x130, 0x10, 4, 1),
PIN_FIELD16(253, 253, 0x130, 0x10, 0, 1),
PIN_FIELD16(254, 254, 0xf40, 0x10, 12, 1),
PIN_FIELD16(255, 255, 0xf40, 0x10, 8, 1),
PIN_FIELD16(256, 256, 0xf40, 0x10, 4, 1),
PIN_FIELD16(257, 257, 0xf40, 0x10, 0, 1),
PIN_FIELD16(258, 258, 0xcb0, 0x10, 8, 1),
PIN_FIELD16(259, 259, 0xc90, 0x10, 8, 1),
PIN_FIELD16(261, 261, 0x140, 0x10, 8, 1),
};
static const struct mtk_pin_field_calc mt7623_pin_r1_range[] = {
/* MSDC0 */
PIN_FIELD16(111, 111, 0xd00, 0x10, 13, 1),
PIN_FIELD16(112, 112, 0xd00, 0x10, 9, 1),
PIN_FIELD16(113, 113, 0xd00, 0x10, 5, 1),
PIN_FIELD16(114, 114, 0xd00, 0x10, 1, 1),
PIN_FIELD16(115, 115, 0xd10, 0x10, 1, 1),
PIN_FIELD16(116, 116, 0xcd0, 0x10, 9, 1),
PIN_FIELD16(117, 117, 0xcc0, 0x10, 9, 1),
PIN_FIELD16(118, 118, 0xcf0, 0x10, 13, 1),
PIN_FIELD16(119, 119, 0xcf0, 0x10, 9, 1),
PIN_FIELD16(120, 120, 0xcf0, 0x10, 5, 1),
PIN_FIELD16(121, 121, 0xcf0, 0x10, 1, 1),
/* MSDC1 */
PIN_FIELD16(105, 105, 0xd40, 0x10, 9, 1),
PIN_FIELD16(106, 106, 0xd30, 0x10, 9, 1),
PIN_FIELD16(107, 107, 0xd60, 0x10, 1, 1),
PIN_FIELD16(108, 108, 0xd60, 0x10, 9, 1),
PIN_FIELD16(109, 109, 0xd60, 0x10, 5, 1),
PIN_FIELD16(110, 110, 0xc60, 0x10, 13, 1),
/* MSDC2 */
PIN_FIELD16(85, 85, 0xda0, 0x10, 9, 1),
PIN_FIELD16(86, 86, 0xd90, 0x10, 9, 1),
PIN_FIELD16(87, 87, 0xdc0, 0x10, 1, 1),
PIN_FIELD16(88, 88, 0xdc0, 0x10, 9, 1),
PIN_FIELD16(89, 89, 0xdc0, 0x10, 5, 1),
PIN_FIELD16(90, 90, 0xdc0, 0x10, 13, 1),
/* MSDC0E */
PIN_FIELD16(249, 249, 0x140, 0x10, 1, 1),
PIN_FIELD16(250, 250, 0x130, 0x10, 13, 1),
PIN_FIELD16(251, 251, 0x130, 0x10, 9, 1),
PIN_FIELD16(252, 252, 0x130, 0x10, 5, 1),
PIN_FIELD16(253, 253, 0x130, 0x10, 1, 1),
PIN_FIELD16(254, 254, 0xf40, 0x10, 13, 1),
PIN_FIELD16(255, 255, 0xf40, 0x10, 9, 1),
PIN_FIELD16(256, 256, 0xf40, 0x10, 5, 1),
PIN_FIELD16(257, 257, 0xf40, 0x10, 1, 1),
PIN_FIELD16(258, 258, 0xcb0, 0x10, 9, 1),
PIN_FIELD16(259, 259, 0xc90, 0x10, 9, 1),
PIN_FIELD16(261, 261, 0x140, 0x10, 9, 1),
};
static const struct mtk_pin_field_calc mt7623_pin_r0_range[] = {
/* MSDC0 */
PIN_FIELD16(111, 111, 0xd00, 0x10, 14, 1),
PIN_FIELD16(112, 112, 0xd00, 0x10, 10, 1),
PIN_FIELD16(113, 113, 0xd00, 0x10, 6, 1),
PIN_FIELD16(114, 114, 0xd00, 0x10, 2, 1),
PIN_FIELD16(115, 115, 0xd10, 0x10, 2, 1),
PIN_FIELD16(116, 116, 0xcd0, 0x10, 10, 1),
PIN_FIELD16(117, 117, 0xcc0, 0x10, 10, 1),
PIN_FIELD16(118, 118, 0xcf0, 0x10, 14, 1),
PIN_FIELD16(119, 119, 0xcf0, 0x10, 10, 1),
PIN_FIELD16(120, 120, 0xcf0, 0x10, 6, 1),
PIN_FIELD16(121, 121, 0xcf0, 0x10, 2, 1),
/* MSDC1 */
PIN_FIELD16(105, 105, 0xd40, 0x10, 10, 1),
PIN_FIELD16(106, 106, 0xd30, 0x10, 10, 1),
PIN_FIELD16(107, 107, 0xd60, 0x10, 2, 1),
PIN_FIELD16(108, 108, 0xd60, 0x10, 8, 1),
PIN_FIELD16(109, 109, 0xd60, 0x10, 6, 1),
PIN_FIELD16(110, 110, 0xc60, 0x10, 14, 1),
/* MSDC2 */
PIN_FIELD16(85, 85, 0xda0, 0x10, 10, 1),
PIN_FIELD16(86, 86, 0xd90, 0x10, 10, 1),
PIN_FIELD16(87, 87, 0xdc0, 0x10, 2, 1),
PIN_FIELD16(88, 88, 0xdc0, 0x10, 8, 1),
PIN_FIELD16(89, 89, 0xdc0, 0x10, 6, 1),
PIN_FIELD16(90, 90, 0xdc0, 0x10, 14, 1),
/* MSDC0E */
PIN_FIELD16(249, 249, 0x140, 0x10, 2, 1),
PIN_FIELD16(250, 250, 0x130, 0x10, 14, 1),
PIN_FIELD16(251, 251, 0x130, 0x10, 10, 1),
PIN_FIELD16(252, 252, 0x130, 0x10, 6, 1),
PIN_FIELD16(253, 253, 0x130, 0x10, 2, 1),
PIN_FIELD16(254, 254, 0xf40, 0x10, 14, 1),
PIN_FIELD16(255, 255, 0xf40, 0x10, 10, 1),
PIN_FIELD16(256, 256, 0xf40, 0x10, 6, 1),
PIN_FIELD16(257, 257, 0xf40, 0x10, 5, 1),
PIN_FIELD16(258, 258, 0xcb0, 0x10, 10, 1),
PIN_FIELD16(259, 259, 0xc90, 0x10, 10, 1),
PIN_FIELD16(261, 261, 0x140, 0x10, 10, 1),
};
static const struct mtk_pin_reg_calc mt7623_reg_cals[] = {
[PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt7623_pin_mode_range),
[PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt7623_pin_dir_range),
[PINCTRL_PIN_REG_DI] = MTK_RANGE(mt7623_pin_di_range),
[PINCTRL_PIN_REG_DO] = MTK_RANGE(mt7623_pin_do_range),
[PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt7623_pin_smt_range),
[PINCTRL_PIN_REG_PULLSEL] = MTK_RANGE(mt7623_pin_pullsel_range),
[PINCTRL_PIN_REG_PULLEN] = MTK_RANGE(mt7623_pin_pullen_range),
[PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt7623_pin_drv_range),
[PINCTRL_PIN_REG_TDSEL] = MTK_RANGE(mt7623_pin_tdsel_range),
[PINCTRL_PIN_REG_IES] = MTK_RANGE(mt7623_pin_ies_range),
[PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt7623_pin_pupd_range),
[PINCTRL_PIN_REG_R0] = MTK_RANGE(mt7623_pin_r0_range),
[PINCTRL_PIN_REG_R1] = MTK_RANGE(mt7623_pin_r1_range),
};
static const struct mtk_pin_desc mt7623_pins[] = {
MT7623_PIN(0, "PWRAP_SPI0_MI", 148, DRV_GRP3),
MT7623_PIN(1, "PWRAP_SPI0_MO", 149, DRV_GRP3),
MT7623_PIN(2, "PWRAP_INT", 150, DRV_GRP3),
MT7623_PIN(3, "PWRAP_SPI0_CK", 151, DRV_GRP3),
MT7623_PIN(4, "PWRAP_SPI0_CSN", 152, DRV_GRP3),
MT7623_PIN(5, "PWRAP_SPI0_CK2", 153, DRV_GRP3),
MT7623_PIN(6, "PWRAP_SPI0_CSN2", 154, DRV_GRP3),
MT7623_PIN(7, "SPI1_CSN", 155, DRV_GRP3),
MT7623_PIN(8, "SPI1_MI", 156, DRV_GRP3),
MT7623_PIN(9, "SPI1_MO", 157, DRV_GRP3),
MT7623_PIN(10, "RTC32K_CK", 158, DRV_GRP3),
MT7623_PIN(11, "WATCHDOG", 159, DRV_GRP3),
MT7623_PIN(12, "SRCLKENA", 160, DRV_GRP3),
MT7623_PIN(13, "SRCLKENAI", 161, DRV_GRP3),
MT7623_PIN(14, "URXD2", 162, DRV_GRP1),
MT7623_PIN(15, "UTXD2", 163, DRV_GRP1),
MT7623_PIN(16, "I2S5_DATA_IN", 164, DRV_GRP1),
MT7623_PIN(17, "I2S5_BCK", 165, DRV_GRP1),
MT7623_PIN(18, "PCM_CLK", 166, DRV_GRP1),
MT7623_PIN(19, "PCM_SYNC", 167, DRV_GRP1),
MT7623_PIN(20, "PCM_RX", EINT_NA, DRV_GRP1),
MT7623_PIN(21, "PCM_TX", EINT_NA, DRV_GRP1),
MT7623_PIN(22, "EINT0", 0, DRV_GRP1),
MT7623_PIN(23, "EINT1", 1, DRV_GRP1),
MT7623_PIN(24, "EINT2", 2, DRV_GRP1),
MT7623_PIN(25, "EINT3", 3, DRV_GRP1),
MT7623_PIN(26, "EINT4", 4, DRV_GRP1),
MT7623_PIN(27, "EINT5", 5, DRV_GRP1),
MT7623_PIN(28, "EINT6", 6, DRV_GRP1),
MT7623_PIN(29, "EINT7", 7, DRV_GRP1),
MT7623_PIN(30, "I2S5_LRCK", 12, DRV_GRP1),
MT7623_PIN(31, "I2S5_MCLK", 13, DRV_GRP1),
MT7623_PIN(32, "I2S5_DATA", 14, DRV_GRP1),
MT7623_PIN(33, "I2S1_DATA", 15, DRV_GRP1),
MT7623_PIN(34, "I2S1_DATA_IN", 16, DRV_GRP1),
MT7623_PIN(35, "I2S1_BCK", 17, DRV_GRP1),
MT7623_PIN(36, "I2S1_LRCK", 18, DRV_GRP1),
MT7623_PIN(37, "I2S1_MCLK", 19, DRV_GRP1),
MT7623_PIN(38, "I2S2_DATA", 20, DRV_GRP1),
MT7623_PIN(39, "JTMS", 21, DRV_GRP3),
MT7623_PIN(40, "JTCK", 22, DRV_GRP3),
MT7623_PIN(41, "JTDI", 23, DRV_GRP3),
MT7623_PIN(42, "JTDO", 24, DRV_GRP3),
MT7623_PIN(43, "NCLE", 25, DRV_GRP1),
MT7623_PIN(44, "NCEB1", 26, DRV_GRP1),
MT7623_PIN(45, "NCEB0", 27, DRV_GRP1),
MT7623_PIN(46, "IR", 28, DRV_FIXED),
MT7623_PIN(47, "NREB", 29, DRV_GRP1),
MT7623_PIN(48, "NRNB", 30, DRV_GRP1),
MT7623_PIN(49, "I2S0_DATA", 31, DRV_GRP1),
MT7623_PIN(50, "I2S2_BCK", 32, DRV_GRP1),
MT7623_PIN(51, "I2S2_DATA_IN", 33, DRV_GRP1),
MT7623_PIN(52, "I2S2_LRCK", 34, DRV_GRP1),
MT7623_PIN(53, "SPI0_CSN", 35, DRV_GRP1),
MT7623_PIN(54, "SPI0_CK", 36, DRV_GRP1),
MT7623_PIN(55, "SPI0_MI", 37, DRV_GRP1),
MT7623_PIN(56, "SPI0_MO", 38, DRV_GRP1),
MT7623_PIN(57, "SDA1", 39, DRV_FIXED),
MT7623_PIN(58, "SCL1", 40, DRV_FIXED),
MT7623_PIN(59, "RAMBUF_I_CLK", EINT_NA, DRV_FIXED),
MT7623_PIN(60, "WB_RSTB", 41, DRV_GRP3),
MT7623_PIN(61, "F2W_DATA", 42, DRV_GRP3),
MT7623_PIN(62, "F2W_CLK", 43, DRV_GRP3),
MT7623_PIN(63, "WB_SCLK", 44, DRV_GRP3),
MT7623_PIN(64, "WB_SDATA", 45, DRV_GRP3),
MT7623_PIN(65, "WB_SEN", 46, DRV_GRP3),
MT7623_PIN(66, "WB_CRTL0", 47, DRV_GRP3),
MT7623_PIN(67, "WB_CRTL1", 48, DRV_GRP3),
MT7623_PIN(68, "WB_CRTL2", 49, DRV_GRP3),
MT7623_PIN(69, "WB_CRTL3", 50, DRV_GRP3),
MT7623_PIN(70, "WB_CRTL4", 51, DRV_GRP3),
MT7623_PIN(71, "WB_CRTL5", 52, DRV_GRP3),
MT7623_PIN(72, "I2S0_DATA_IN", 53, DRV_GRP1),
MT7623_PIN(73, "I2S0_LRCK", 54, DRV_GRP1),
MT7623_PIN(74, "I2S0_BCK", 55, DRV_GRP1),
MT7623_PIN(75, "SDA0", 56, DRV_FIXED),
MT7623_PIN(76, "SCL0", 57, DRV_FIXED),
MT7623_PIN(77, "SDA2", 58, DRV_FIXED),
MT7623_PIN(78, "SCL2", 59, DRV_FIXED),
MT7623_PIN(79, "URXD0", 60, DRV_FIXED),
MT7623_PIN(80, "UTXD0", 61, DRV_FIXED),
MT7623_PIN(81, "URXD1", 62, DRV_FIXED),
MT7623_PIN(82, "UTXD1", 63, DRV_FIXED),
MT7623_PIN(83, "LCM_RST", 64, DRV_FIXED),
MT7623_PIN(84, "DSI_TE", 65, DRV_FIXED),
MT7623_PIN(85, "MSDC2_CMD", 66, DRV_GRP4),
MT7623_PIN(86, "MSDC2_CLK", 67, DRV_GRP4),
MT7623_PIN(87, "MSDC2_DAT0", 68, DRV_GRP4),
MT7623_PIN(88, "MSDC2_DAT1", 69, DRV_GRP4),
MT7623_PIN(89, "MSDC2_DAT2", 70, DRV_GRP4),
MT7623_PIN(90, "MSDC2_DAT3", 71, DRV_GRP4),
MT7623_PIN(91, "TDN3", EINT_NA, DRV_FIXED),
MT7623_PIN(92, "TDP3", EINT_NA, DRV_FIXED),
MT7623_PIN(93, "TDN2", EINT_NA, DRV_FIXED),
MT7623_PIN(94, "TDP2", EINT_NA, DRV_FIXED),
MT7623_PIN(95, "TCN", EINT_NA, DRV_FIXED),
MT7623_PIN(96, "TCP", EINT_NA, DRV_FIXED),
MT7623_PIN(97, "TDN1", EINT_NA, DRV_FIXED),
MT7623_PIN(98, "TDP1", EINT_NA, DRV_FIXED),
MT7623_PIN(99, "TDN0", EINT_NA, DRV_FIXED),
MT7623_PIN(100, "TDP0", EINT_NA, DRV_FIXED),
MT7623_PIN(101, "SPI2_CSN", 74, DRV_FIXED),
MT7623_PIN(102, "SPI2_MI", 75, DRV_FIXED),
MT7623_PIN(103, "SPI2_MO", 76, DRV_FIXED),
MT7623_PIN(104, "SPI2_CLK", 77, DRV_FIXED),
MT7623_PIN(105, "MSDC1_CMD", 78, DRV_GRP4),
MT7623_PIN(106, "MSDC1_CLK", 79, DRV_GRP4),
MT7623_PIN(107, "MSDC1_DAT0", 80, DRV_GRP4),
MT7623_PIN(108, "MSDC1_DAT1", 81, DRV_GRP4),
MT7623_PIN(109, "MSDC1_DAT2", 82, DRV_GRP4),
MT7623_PIN(110, "MSDC1_DAT3", 83, DRV_GRP4),
MT7623_PIN(111, "MSDC0_DAT7", 84, DRV_GRP4),
MT7623_PIN(112, "MSDC0_DAT6", 85, DRV_GRP4),
MT7623_PIN(113, "MSDC0_DAT5", 86, DRV_GRP4),
MT7623_PIN(114, "MSDC0_DAT4", 87, DRV_GRP4),
MT7623_PIN(115, "MSDC0_RSTB", 88, DRV_GRP4),
MT7623_PIN(116, "MSDC0_CMD", 89, DRV_GRP4),
MT7623_PIN(117, "MSDC0_CLK", 90, DRV_GRP4),
MT7623_PIN(118, "MSDC0_DAT3", 91, DRV_GRP4),
MT7623_PIN(119, "MSDC0_DAT2", 92, DRV_GRP4),
MT7623_PIN(120, "MSDC0_DAT1", 93, DRV_GRP4),
MT7623_PIN(121, "MSDC0_DAT0", 94, DRV_GRP4),
MT7623_PIN(122, "CEC", 95, DRV_FIXED),
MT7623_PIN(123, "HTPLG", 96, DRV_FIXED),
MT7623_PIN(124, "HDMISCK", 97, DRV_FIXED),
MT7623_PIN(125, "HDMISD", 98, DRV_FIXED),
MT7623_PIN(126, "I2S0_MCLK", 99, DRV_GRP1),
MT7623_PIN(127, "RAMBUF_IDATA0", EINT_NA, DRV_FIXED),
MT7623_PIN(128, "RAMBUF_IDATA1", EINT_NA, DRV_FIXED),
MT7623_PIN(129, "RAMBUF_IDATA2", EINT_NA, DRV_FIXED),
MT7623_PIN(130, "RAMBUF_IDATA3", EINT_NA, DRV_FIXED),
MT7623_PIN(131, "RAMBUF_IDATA4", EINT_NA, DRV_FIXED),
MT7623_PIN(132, "RAMBUF_IDATA5", EINT_NA, DRV_FIXED),
MT7623_PIN(133, "RAMBUF_IDATA6", EINT_NA, DRV_FIXED),
MT7623_PIN(134, "RAMBUF_IDATA7", EINT_NA, DRV_FIXED),
MT7623_PIN(135, "RAMBUF_IDATA8", EINT_NA, DRV_FIXED),
MT7623_PIN(136, "RAMBUF_IDATA9", EINT_NA, DRV_FIXED),
MT7623_PIN(137, "RAMBUF_IDATA10", EINT_NA, DRV_FIXED),
MT7623_PIN(138, "RAMBUF_IDATA11", EINT_NA, DRV_FIXED),
MT7623_PIN(139, "RAMBUF_IDATA12", EINT_NA, DRV_FIXED),
MT7623_PIN(140, "RAMBUF_IDATA13", EINT_NA, DRV_FIXED),
MT7623_PIN(141, "RAMBUF_IDATA14", EINT_NA, DRV_FIXED),
MT7623_PIN(142, "RAMBUF_IDATA15", EINT_NA, DRV_FIXED),
MT7623_PIN(143, "RAMBUF_ODATA0", EINT_NA, DRV_FIXED),
MT7623_PIN(144, "RAMBUF_ODATA1", EINT_NA, DRV_FIXED),
MT7623_PIN(145, "RAMBUF_ODATA2", EINT_NA, DRV_FIXED),
MT7623_PIN(146, "RAMBUF_ODATA3", EINT_NA, DRV_FIXED),
MT7623_PIN(147, "RAMBUF_ODATA4", EINT_NA, DRV_FIXED),
MT7623_PIN(148, "RAMBUF_ODATA5", EINT_NA, DRV_FIXED),
MT7623_PIN(149, "RAMBUF_ODATA6", EINT_NA, DRV_FIXED),
MT7623_PIN(150, "RAMBUF_ODATA7", EINT_NA, DRV_FIXED),
MT7623_PIN(151, "RAMBUF_ODATA8", EINT_NA, DRV_FIXED),
MT7623_PIN(152, "RAMBUF_ODATA9", EINT_NA, DRV_FIXED),
MT7623_PIN(153, "RAMBUF_ODATA10", EINT_NA, DRV_FIXED),
MT7623_PIN(154, "RAMBUF_ODATA11", EINT_NA, DRV_FIXED),
MT7623_PIN(155, "RAMBUF_ODATA12", EINT_NA, DRV_FIXED),
MT7623_PIN(156, "RAMBUF_ODATA13", EINT_NA, DRV_FIXED),
MT7623_PIN(157, "RAMBUF_ODATA14", EINT_NA, DRV_FIXED),
MT7623_PIN(158, "RAMBUF_ODATA15", EINT_NA, DRV_FIXED),
MT7623_PIN(159, "RAMBUF_BE0", EINT_NA, DRV_FIXED),
MT7623_PIN(160, "RAMBUF_BE1", EINT_NA, DRV_FIXED),
MT7623_PIN(161, "AP2PT_INT", EINT_NA, DRV_FIXED),
MT7623_PIN(162, "AP2PT_INT_CLR", EINT_NA, DRV_FIXED),
MT7623_PIN(163, "PT2AP_INT", EINT_NA, DRV_FIXED),
MT7623_PIN(164, "PT2AP_INT_CLR", EINT_NA, DRV_FIXED),
MT7623_PIN(165, "AP2UP_INT", EINT_NA, DRV_FIXED),
MT7623_PIN(166, "AP2UP_INT_CLR", EINT_NA, DRV_FIXED),
MT7623_PIN(167, "UP2AP_INT", EINT_NA, DRV_FIXED),
MT7623_PIN(168, "UP2AP_INT_CLR", EINT_NA, DRV_FIXED),
MT7623_PIN(169, "RAMBUF_ADDR0", EINT_NA, DRV_FIXED),
MT7623_PIN(170, "RAMBUF_ADDR1", EINT_NA, DRV_FIXED),
MT7623_PIN(171, "RAMBUF_ADDR2", EINT_NA, DRV_FIXED),
MT7623_PIN(172, "RAMBUF_ADDR3", EINT_NA, DRV_FIXED),
MT7623_PIN(173, "RAMBUF_ADDR4", EINT_NA, DRV_FIXED),
MT7623_PIN(174, "RAMBUF_ADDR5", EINT_NA, DRV_FIXED),
MT7623_PIN(175, "RAMBUF_ADDR6", EINT_NA, DRV_FIXED),
MT7623_PIN(176, "RAMBUF_ADDR7", EINT_NA, DRV_FIXED),
MT7623_PIN(177, "RAMBUF_ADDR8", EINT_NA, DRV_FIXED),
MT7623_PIN(178, "RAMBUF_ADDR9", EINT_NA, DRV_FIXED),
MT7623_PIN(179, "RAMBUF_ADDR10", EINT_NA, DRV_FIXED),
MT7623_PIN(180, "RAMBUF_RW", EINT_NA, DRV_FIXED),
MT7623_PIN(181, "RAMBUF_LAST", EINT_NA, DRV_FIXED),
MT7623_PIN(182, "RAMBUF_HP", EINT_NA, DRV_FIXED),
MT7623_PIN(183, "RAMBUF_REQ", EINT_NA, DRV_FIXED),
MT7623_PIN(184, "RAMBUF_ALE", EINT_NA, DRV_FIXED),
MT7623_PIN(185, "RAMBUF_DLE", EINT_NA, DRV_FIXED),
MT7623_PIN(186, "RAMBUF_WDLE", EINT_NA, DRV_FIXED),
MT7623_PIN(187, "RAMBUF_O_CLK", EINT_NA, DRV_FIXED),
MT7623_PIN(188, "I2S2_MCLK", 100, DRV_GRP1),
MT7623_PIN(189, "I2S3_DATA", 101, DRV_GRP1),
MT7623_PIN(190, "I2S3_DATA_IN", 102, DRV_GRP1),
MT7623_PIN(191, "I2S3_BCK", 103, DRV_GRP1),
MT7623_PIN(192, "I2S3_LRCK", 104, DRV_GRP1),
MT7623_PIN(193, "I2S3_MCLK", 105, DRV_GRP1),
MT7623_PIN(194, "I2S4_DATA", 106, DRV_GRP1),
MT7623_PIN(195, "I2S4_DATA_IN", 107, DRV_GRP1),
MT7623_PIN(196, "I2S4_BCK", 108, DRV_GRP1),
MT7623_PIN(197, "I2S4_LRCK", 109, DRV_GRP1),
MT7623_PIN(198, "I2S4_MCLK", 110, DRV_GRP1),
MT7623_PIN(199, "SPI1_CLK", 111, DRV_GRP3),
MT7623_PIN(200, "SPDIF_OUT", 112, DRV_GRP1),
MT7623_PIN(201, "SPDIF_IN0", 113, DRV_GRP1),
MT7623_PIN(202, "SPDIF_IN1", 114, DRV_GRP1),
MT7623_PIN(203, "PWM0", 115, DRV_GRP1),
MT7623_PIN(204, "PWM1", 116, DRV_GRP1),
MT7623_PIN(205, "PWM2", 117, DRV_GRP1),
MT7623_PIN(206, "PWM3", 118, DRV_GRP1),
MT7623_PIN(207, "PWM4", 119, DRV_GRP1),
MT7623_PIN(208, "AUD_EXT_CK1", 120, DRV_GRP1),
MT7623_PIN(209, "AUD_EXT_CK2", 121, DRV_GRP1),
MT7623_PIN(210, "AUD_CLOCK", EINT_NA, DRV_GRP3),
MT7623_PIN(211, "DVP_RESET", EINT_NA, DRV_GRP3),
MT7623_PIN(212, "DVP_CLOCK", EINT_NA, DRV_GRP3),
MT7623_PIN(213, "DVP_CS", EINT_NA, DRV_GRP3),
MT7623_PIN(214, "DVP_CK", EINT_NA, DRV_GRP3),
MT7623_PIN(215, "DVP_DI", EINT_NA, DRV_GRP3),
MT7623_PIN(216, "DVP_DO", EINT_NA, DRV_GRP3),
MT7623_PIN(217, "AP_CS", EINT_NA, DRV_GRP3),
MT7623_PIN(218, "AP_CK", EINT_NA, DRV_GRP3),
MT7623_PIN(219, "AP_DI", EINT_NA, DRV_GRP3),
MT7623_PIN(220, "AP_DO", EINT_NA, DRV_GRP3),
MT7623_PIN(221, "DVD_BCLK", EINT_NA, DRV_GRP3),
MT7623_PIN(222, "T8032_CLK", EINT_NA, DRV_GRP3),
MT7623_PIN(223, "AP_BCLK", EINT_NA, DRV_GRP3),
MT7623_PIN(224, "HOST_CS", EINT_NA, DRV_GRP3),
MT7623_PIN(225, "HOST_CK", EINT_NA, DRV_GRP3),
MT7623_PIN(226, "HOST_DO0", EINT_NA, DRV_GRP3),
MT7623_PIN(227, "HOST_DO1", EINT_NA, DRV_GRP3),
MT7623_PIN(228, "SLV_CS", EINT_NA, DRV_GRP3),
MT7623_PIN(229, "SLV_CK", EINT_NA, DRV_GRP3),
MT7623_PIN(230, "SLV_DI0", EINT_NA, DRV_GRP3),
MT7623_PIN(231, "SLV_DI1", EINT_NA, DRV_GRP3),
MT7623_PIN(232, "AP2DSP_INT", EINT_NA, DRV_GRP3),
MT7623_PIN(233, "AP2DSP_INT_CLR", EINT_NA, DRV_GRP3),
MT7623_PIN(234, "DSP2AP_INT", EINT_NA, DRV_GRP3),
MT7623_PIN(235, "DSP2AP_INT_CLR", EINT_NA, DRV_GRP3),
MT7623_PIN(236, "EXT_SDIO3", 122, DRV_GRP1),
MT7623_PIN(237, "EXT_SDIO2", 123, DRV_GRP1),
MT7623_PIN(238, "EXT_SDIO1", 124, DRV_GRP1),
MT7623_PIN(239, "EXT_SDIO0", 125, DRV_GRP1),
MT7623_PIN(240, "EXT_XCS", 126, DRV_GRP1),
MT7623_PIN(241, "EXT_SCK", 127, DRV_GRP1),
MT7623_PIN(242, "URTS2", 128, DRV_GRP1),
MT7623_PIN(243, "UCTS2", 129, DRV_GRP1),
MT7623_PIN(244, "HDMI_SDA_RX", 130, DRV_FIXED),
MT7623_PIN(245, "HDMI_SCL_RX", 131, DRV_FIXED),
MT7623_PIN(246, "MHL_SENCE", 132, DRV_FIXED),
MT7623_PIN(247, "HDMI_HPD_CBUS_RX", 69, DRV_FIXED),
MT7623_PIN(248, "HDMI_TESTOUTP_RX", 133, DRV_GRP1),
MT7623_PIN(249, "MSDC0E_RSTB", 134, DRV_GRP4),
MT7623_PIN(250, "MSDC0E_DAT7", 135, DRV_GRP4),
MT7623_PIN(251, "MSDC0E_DAT6", 136, DRV_GRP4),
MT7623_PIN(252, "MSDC0E_DAT5", 137, DRV_GRP4),
MT7623_PIN(253, "MSDC0E_DAT4", 138, DRV_GRP4),
MT7623_PIN(254, "MSDC0E_DAT3", 139, DRV_GRP4),
MT7623_PIN(255, "MSDC0E_DAT2", 140, DRV_GRP4),
MT7623_PIN(256, "MSDC0E_DAT1", 141, DRV_GRP4),
MT7623_PIN(257, "MSDC0E_DAT0", 142, DRV_GRP4),
MT7623_PIN(258, "MSDC0E_CMD", 143, DRV_GRP4),
MT7623_PIN(259, "MSDC0E_CLK", 144, DRV_GRP4),
MT7623_PIN(260, "MSDC0E_DSL", 145, DRV_GRP4),
MT7623_PIN(261, "MSDC1_INS", 146, DRV_GRP4),
MT7623_PIN(262, "G2_TXEN", 8, DRV_GRP1),
MT7623_PIN(263, "G2_TXD3", 9, DRV_GRP1),
MT7623_PIN(264, "G2_TXD2", 10, DRV_GRP1),
MT7623_PIN(265, "G2_TXD1", 11, DRV_GRP1),
MT7623_PIN(266, "G2_TXD0", EINT_NA, DRV_GRP1),
MT7623_PIN(267, "G2_TXC", EINT_NA, DRV_GRP1),
MT7623_PIN(268, "G2_RXC", EINT_NA, DRV_GRP1),
MT7623_PIN(269, "G2_RXD0", EINT_NA, DRV_GRP1),
MT7623_PIN(270, "G2_RXD1", EINT_NA, DRV_GRP1),
MT7623_PIN(271, "G2_RXD2", EINT_NA, DRV_GRP1),
MT7623_PIN(272, "G2_RXD3", EINT_NA, DRV_GRP1),
MT7623_PIN(273, "ESW_INT", 168, DRV_GRP1),
MT7623_PIN(274, "G2_RXDV", EINT_NA, DRV_GRP1),
MT7623_PIN(275, "MDC", EINT_NA, DRV_GRP1),
MT7623_PIN(276, "MDIO", EINT_NA, DRV_GRP1),
MT7623_PIN(277, "ESW_RST", EINT_NA, DRV_GRP1),
MT7623_PIN(278, "JTAG_RESET", 147, DRV_GRP3),
MT7623_PIN(279, "USB3_RES_BOND", EINT_NA, DRV_GRP1),
};
/* List all groups consisting of these pins dedicated to the enablement of
* certain hardware block and the corresponding mode for all of the pins.
* The hardware probably has multiple combinations of these pinouts.
*/
/* AUDIO EXT CLK */
static int mt7623_aud_ext_clk0_pins[] = { 208, };
static int mt7623_aud_ext_clk0_funcs[] = { 1, };
static int mt7623_aud_ext_clk1_pins[] = { 209, };
static int mt7623_aud_ext_clk1_funcs[] = { 1, };
/* DISP PWM */
static int mt7623_disp_pwm_0_pins[] = { 72, };
static int mt7623_disp_pwm_0_funcs[] = { 5, };
static int mt7623_disp_pwm_1_pins[] = { 203, };
static int mt7623_disp_pwm_1_funcs[] = { 2, };
static int mt7623_disp_pwm_2_pins[] = { 208, };
static int mt7623_disp_pwm_2_funcs[] = { 5, };
/* ESW */
static int mt7623_esw_int_pins[] = { 273, };
static int mt7623_esw_int_funcs[] = { 1, };
static int mt7623_esw_rst_pins[] = { 277, };
static int mt7623_esw_rst_funcs[] = { 1, };
/* EPHY */
static int mt7623_ephy_pins[] = { 262, 263, 264, 265, 266, 267, 268,
269, 270, 271, 272, 274, };
static int mt7623_ephy_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
/* EXT_SDIO */
static int mt7623_ext_sdio_pins[] = { 236, 237, 238, 239, 240, 241, };
static int mt7623_ext_sdio_funcs[] = { 1, 1, 1, 1, 1, 1, };
/* HDMI RX */
static int mt7623_hdmi_rx_pins[] = { 247, 248, };
static int mt7623_hdmi_rx_funcs[] = { 1, 1 };
static int mt7623_hdmi_rx_i2c_pins[] = { 244, 245, };
static int mt7623_hdmi_rx_i2c_funcs[] = { 1, 1 };
/* HDMI TX */
static int mt7623_hdmi_cec_pins[] = { 122, };
static int mt7623_hdmi_cec_funcs[] = { 1, };
static int mt7623_hdmi_htplg_pins[] = { 123, };
static int mt7623_hdmi_htplg_funcs[] = { 1, };
static int mt7623_hdmi_i2c_pins[] = { 124, 125, };
static int mt7623_hdmi_i2c_funcs[] = { 1, 1 };
/* I2C */
static int mt7623_i2c0_pins[] = { 75, 76, };
static int mt7623_i2c0_funcs[] = { 1, 1, };
static int mt7623_i2c1_0_pins[] = { 57, 58, };
static int mt7623_i2c1_0_funcs[] = { 1, 1, };
static int mt7623_i2c1_1_pins[] = { 242, 243, };
static int mt7623_i2c1_1_funcs[] = { 4, 4, };
static int mt7623_i2c1_2_pins[] = { 85, 86, };
static int mt7623_i2c1_2_funcs[] = { 3, 3, };
static int mt7623_i2c1_3_pins[] = { 105, 106, };
static int mt7623_i2c1_3_funcs[] = { 3, 3, };
static int mt7623_i2c1_4_pins[] = { 124, 125, };
static int mt7623_i2c1_4_funcs[] = { 4, 4, };
static int mt7623_i2c2_0_pins[] = { 77, 78, };
static int mt7623_i2c2_0_funcs[] = { 1, 1, };
static int mt7623_i2c2_1_pins[] = { 89, 90, };
static int mt7623_i2c2_1_funcs[] = { 3, 3, };
static int mt7623_i2c2_2_pins[] = { 109, 110, };
static int mt7623_i2c2_2_funcs[] = { 3, 3, };
static int mt7623_i2c2_3_pins[] = { 122, 123, };
static int mt7623_i2c2_3_funcs[] = { 4, 4, };
/* I2S */
static int mt7623_i2s0_pins[] = { 49, 72, 73, 74, 126, };
static int mt7623_i2s0_funcs[] = { 1, 1, 1, 1, 1, };
static int mt7623_i2s1_pins[] = { 33, 34, 35, 36, 37, };
static int mt7623_i2s1_funcs[] = { 1, 1, 1, 1, 1, };
static int mt7623_i2s2_bclk_lrclk_mclk_pins[] = { 50, 52, 188, };
static int mt7623_i2s2_bclk_lrclk_mclk_funcs[] = { 1, 1, 1, };
static int mt7623_i2s2_data_in_pins[] = { 51, };
static int mt7623_i2s2_data_in_funcs[] = { 1, };
static int mt7623_i2s2_data_0_pins[] = { 203, };
static int mt7623_i2s2_data_0_funcs[] = { 9, };
static int mt7623_i2s2_data_1_pins[] = { 38, };
static int mt7623_i2s2_data_1_funcs[] = { 4, };
static int mt7623_i2s3_bclk_lrclk_mclk_pins[] = { 191, 192, 193, };
static int mt7623_i2s3_bclk_lrclk_mclk_funcs[] = { 1, 1, 1, };
static int mt7623_i2s3_data_in_pins[] = { 190, };
static int mt7623_i2s3_data_in_funcs[] = { 1, };
static int mt7623_i2s3_data_0_pins[] = { 204, };
static int mt7623_i2s3_data_0_funcs[] = { 9, };
static int mt7623_i2s3_data_1_pins[] = { 2, };
static int mt7623_i2s3_data_1_funcs[] = { 0, };
static int mt7623_i2s4_pins[] = { 194, 195, 196, 197, 198, };
static int mt7623_i2s4_funcs[] = { 1, 1, 1, 1, 1, };
static int mt7623_i2s5_pins[] = { 16, 17, 30, 31, 32, };
static int mt7623_i2s5_funcs[] = { 1, 1, 1, 1, 1, };
/* IR */
static int mt7623_ir_pins[] = { 46, };
static int mt7623_ir_funcs[] = { 1, };
/* LCD */
static int mt7623_mipi_tx_pins[] = { 91, 92, 93, 94, 95, 96, 97, 98,
99, 100, };
static int mt7623_mipi_tx_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
static int mt7623_dsi_te_pins[] = { 84, };
static int mt7623_dsi_te_funcs[] = { 1, };
static int mt7623_lcm_rst_pins[] = { 83, };
static int mt7623_lcm_rst_funcs[] = { 1, };
/* MDC/MDIO */
static int mt7623_mdc_mdio_pins[] = { 275, 276, };
static int mt7623_mdc_mdio_funcs[] = { 1, 1, };
/* MSDC */
static int mt7623_msdc0_pins[] = { 111, 112, 113, 114, 115, 116, 117, 118,
119, 120, 121, };
static int mt7623_msdc0_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
static int mt7623_msdc1_pins[] = { 105, 106, 107, 108, 109, 110, };
static int mt7623_msdc1_funcs[] = { 1, 1, 1, 1, 1, 1, };
static int mt7623_msdc1_ins_pins[] = { 261, };
static int mt7623_msdc1_ins_funcs[] = { 1, };
static int mt7623_msdc1_wp_0_pins[] = { 29, };
static int mt7623_msdc1_wp_0_funcs[] = { 1, };
static int mt7623_msdc1_wp_1_pins[] = { 55, };
static int mt7623_msdc1_wp_1_funcs[] = { 3, };
static int mt7623_msdc1_wp_2_pins[] = { 209, };
static int mt7623_msdc1_wp_2_funcs[] = { 2, };
static int mt7623_msdc2_pins[] = { 85, 86, 87, 88, 89, 90, };
static int mt7623_msdc2_funcs[] = { 1, 1, 1, 1, 1, 1, };
static int mt7623_msdc3_pins[] = { 249, 250, 251, 252, 253, 254, 255, 256,
257, 258, 259, 260, };
static int mt7623_msdc3_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
/* NAND */
static int mt7623_nandc_pins[] = { 43, 47, 48, 111, 112, 113, 114, 115,
116, 117, 118, 119, 120, 121, };
static int mt7623_nandc_funcs[] = { 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, };
static int mt7623_nandc_ceb0_pins[] = { 45, };
static int mt7623_nandc_ceb0_funcs[] = { 1, };
static int mt7623_nandc_ceb1_pins[] = { 44, };
static int mt7623_nandc_ceb1_funcs[] = { 1, };
/* RTC */
static int mt7623_rtc_pins[] = { 10, };
static int mt7623_rtc_funcs[] = { 1, };
/* OTG */
static int mt7623_otg_iddig0_0_pins[] = { 29, };
static int mt7623_otg_iddig0_0_funcs[] = { 1, };
static int mt7623_otg_iddig0_1_pins[] = { 44, };
static int mt7623_otg_iddig0_1_funcs[] = { 2, };
static int mt7623_otg_iddig0_2_pins[] = { 236, };
static int mt7623_otg_iddig0_2_funcs[] = { 2, };
static int mt7623_otg_iddig1_0_pins[] = { 27, };
static int mt7623_otg_iddig1_0_funcs[] = { 2, };
static int mt7623_otg_iddig1_1_pins[] = { 47, };
static int mt7623_otg_iddig1_1_funcs[] = { 2, };
static int mt7623_otg_iddig1_2_pins[] = { 238, };
static int mt7623_otg_iddig1_2_funcs[] = { 2, };
static int mt7623_otg_drv_vbus0_0_pins[] = { 28, };
static int mt7623_otg_drv_vbus0_0_funcs[] = { 1, };
static int mt7623_otg_drv_vbus0_1_pins[] = { 45, };
static int mt7623_otg_drv_vbus0_1_funcs[] = { 2, };
static int mt7623_otg_drv_vbus0_2_pins[] = { 237, };
static int mt7623_otg_drv_vbus0_2_funcs[] = { 2, };
static int mt7623_otg_drv_vbus1_0_pins[] = { 26, };
static int mt7623_otg_drv_vbus1_0_funcs[] = { 2, };
static int mt7623_otg_drv_vbus1_1_pins[] = { 48, };
static int mt7623_otg_drv_vbus1_1_funcs[] = { 2, };
static int mt7623_otg_drv_vbus1_2_pins[] = { 239, };
static int mt7623_otg_drv_vbus1_2_funcs[] = { 2, };
/* PCIE */
static int mt7623_pcie0_0_perst_pins[] = { 208, };
static int mt7623_pcie0_0_perst_funcs[] = { 3, };
static int mt7623_pcie0_1_perst_pins[] = { 22, };
static int mt7623_pcie0_1_perst_funcs[] = { 2, };
static int mt7623_pcie1_0_perst_pins[] = { 209, };
static int mt7623_pcie1_0_perst_funcs[] = { 3, };
static int mt7623_pcie1_1_perst_pins[] = { 23, };
static int mt7623_pcie1_1_perst_funcs[] = { 2, };
static int mt7623_pcie2_0_perst_pins[] = { 24, };
static int mt7623_pcie2_0_perst_funcs[] = { 2, };
static int mt7623_pcie2_1_perst_pins[] = { 29, };
static int mt7623_pcie2_1_perst_funcs[] = { 6, };
static int mt7623_pcie0_0_wake_pins[] = { 28, };
static int mt7623_pcie0_0_wake_funcs[] = { 6, };
static int mt7623_pcie0_1_wake_pins[] = { 251, };
static int mt7623_pcie0_1_wake_funcs[] = { 6, };
static int mt7623_pcie1_0_wake_pins[] = { 27, };
static int mt7623_pcie1_0_wake_funcs[] = { 6, };
static int mt7623_pcie1_1_wake_pins[] = { 253, };
static int mt7623_pcie1_1_wake_funcs[] = { 6, };
static int mt7623_pcie2_0_wake_pins[] = { 26, };
static int mt7623_pcie2_0_wake_funcs[] = { 6, };
static int mt7623_pcie2_1_wake_pins[] = { 255, };
static int mt7623_pcie2_1_wake_funcs[] = { 6, };
static int mt7623_pcie0_clkreq_pins[] = { 250, };
static int mt7623_pcie0_clkreq_funcs[] = { 6, };
static int mt7623_pcie1_clkreq_pins[] = { 252, };
static int mt7623_pcie1_clkreq_funcs[] = { 6, };
static int mt7623_pcie2_clkreq_pins[] = { 254, };
static int mt7623_pcie2_clkreq_funcs[] = { 6, };
/* the pcie_*_rev are only used for MT7623 */
static int mt7623_pcie0_0_rev_perst_pins[] = { 208, };
static int mt7623_pcie0_0_rev_perst_funcs[] = { 11, };
static int mt7623_pcie0_1_rev_perst_pins[] = { 22, };
static int mt7623_pcie0_1_rev_perst_funcs[] = { 10, };
static int mt7623_pcie1_0_rev_perst_pins[] = { 209, };
static int mt7623_pcie1_0_rev_perst_funcs[] = { 11, };
static int mt7623_pcie1_1_rev_perst_pins[] = { 23, };
static int mt7623_pcie1_1_rev_perst_funcs[] = { 10, };
static int mt7623_pcie2_0_rev_perst_pins[] = { 24, };
static int mt7623_pcie2_0_rev_perst_funcs[] = { 11, };
static int mt7623_pcie2_1_rev_perst_pins[] = { 29, };
static int mt7623_pcie2_1_rev_perst_funcs[] = { 14, };
/* PCM */
static int mt7623_pcm_clk_0_pins[] = { 18, };
static int mt7623_pcm_clk_0_funcs[] = { 1, };
static int mt7623_pcm_clk_1_pins[] = { 17, };
static int mt7623_pcm_clk_1_funcs[] = { 3, };
static int mt7623_pcm_clk_2_pins[] = { 35, };
static int mt7623_pcm_clk_2_funcs[] = { 3, };
static int mt7623_pcm_clk_3_pins[] = { 50, };
static int mt7623_pcm_clk_3_funcs[] = { 3, };
static int mt7623_pcm_clk_4_pins[] = { 74, };
static int mt7623_pcm_clk_4_funcs[] = { 3, };
static int mt7623_pcm_clk_5_pins[] = { 191, };
static int mt7623_pcm_clk_5_funcs[] = { 3, };
static int mt7623_pcm_clk_6_pins[] = { 196, };
static int mt7623_pcm_clk_6_funcs[] = { 3, };
static int mt7623_pcm_sync_0_pins[] = { 19, };
static int mt7623_pcm_sync_0_funcs[] = { 1, };
static int mt7623_pcm_sync_1_pins[] = { 30, };
static int mt7623_pcm_sync_1_funcs[] = { 3, };
static int mt7623_pcm_sync_2_pins[] = { 36, };
static int mt7623_pcm_sync_2_funcs[] = { 3, };
static int mt7623_pcm_sync_3_pins[] = { 52, };
static int mt7623_pcm_sync_3_funcs[] = { 31, };
static int mt7623_pcm_sync_4_pins[] = { 73, };
static int mt7623_pcm_sync_4_funcs[] = { 3, };
static int mt7623_pcm_sync_5_pins[] = { 192, };
static int mt7623_pcm_sync_5_funcs[] = { 3, };
static int mt7623_pcm_sync_6_pins[] = { 197, };
static int mt7623_pcm_sync_6_funcs[] = { 3, };
static int mt7623_pcm_rx_0_pins[] = { 20, };
static int mt7623_pcm_rx_0_funcs[] = { 1, };
static int mt7623_pcm_rx_1_pins[] = { 16, };
static int mt7623_pcm_rx_1_funcs[] = { 3, };
static int mt7623_pcm_rx_2_pins[] = { 34, };
static int mt7623_pcm_rx_2_funcs[] = { 3, };
static int mt7623_pcm_rx_3_pins[] = { 51, };
static int mt7623_pcm_rx_3_funcs[] = { 3, };
static int mt7623_pcm_rx_4_pins[] = { 72, };
static int mt7623_pcm_rx_4_funcs[] = { 3, };
static int mt7623_pcm_rx_5_pins[] = { 190, };
static int mt7623_pcm_rx_5_funcs[] = { 3, };
static int mt7623_pcm_rx_6_pins[] = { 195, };
static int mt7623_pcm_rx_6_funcs[] = { 3, };
static int mt7623_pcm_tx_0_pins[] = { 21, };
static int mt7623_pcm_tx_0_funcs[] = { 1, };
static int mt7623_pcm_tx_1_pins[] = { 32, };
static int mt7623_pcm_tx_1_funcs[] = { 3, };
static int mt7623_pcm_tx_2_pins[] = { 33, };
static int mt7623_pcm_tx_2_funcs[] = { 3, };
static int mt7623_pcm_tx_3_pins[] = { 38, };
static int mt7623_pcm_tx_3_funcs[] = { 3, };
static int mt7623_pcm_tx_4_pins[] = { 49, };
static int mt7623_pcm_tx_4_funcs[] = { 3, };
static int mt7623_pcm_tx_5_pins[] = { 189, };
static int mt7623_pcm_tx_5_funcs[] = { 3, };
static int mt7623_pcm_tx_6_pins[] = { 194, };
static int mt7623_pcm_tx_6_funcs[] = { 3, };
/* PWM */
static int mt7623_pwm_ch1_0_pins[] = { 203, };
static int mt7623_pwm_ch1_0_funcs[] = { 1, };
static int mt7623_pwm_ch1_1_pins[] = { 208, };
static int mt7623_pwm_ch1_1_funcs[] = { 2, };
static int mt7623_pwm_ch1_2_pins[] = { 72, };
static int mt7623_pwm_ch1_2_funcs[] = { 4, };
static int mt7623_pwm_ch1_3_pins[] = { 88, };
static int mt7623_pwm_ch1_3_funcs[] = { 3, };
static int mt7623_pwm_ch1_4_pins[] = { 108, };
static int mt7623_pwm_ch1_4_funcs[] = { 3, };
static int mt7623_pwm_ch2_0_pins[] = { 204, };
static int mt7623_pwm_ch2_0_funcs[] = { 1, };
static int mt7623_pwm_ch2_1_pins[] = { 53, };
static int mt7623_pwm_ch2_1_funcs[] = { 5, };
static int mt7623_pwm_ch2_2_pins[] = { 88, };
static int mt7623_pwm_ch2_2_funcs[] = { 6, };
static int mt7623_pwm_ch2_3_pins[] = { 108, };
static int mt7623_pwm_ch2_3_funcs[] = { 6, };
static int mt7623_pwm_ch2_4_pins[] = { 209, };
static int mt7623_pwm_ch2_4_funcs[] = { 5, };
static int mt7623_pwm_ch3_0_pins[] = { 205, };
static int mt7623_pwm_ch3_0_funcs[] = { 1, };
static int mt7623_pwm_ch3_1_pins[] = { 55, };
static int mt7623_pwm_ch3_1_funcs[] = { 5, };
static int mt7623_pwm_ch3_2_pins[] = { 89, };
static int mt7623_pwm_ch3_2_funcs[] = { 6, };
static int mt7623_pwm_ch3_3_pins[] = { 109, };
static int mt7623_pwm_ch3_3_funcs[] = { 6, };
static int mt7623_pwm_ch4_0_pins[] = { 206, };
static int mt7623_pwm_ch4_0_funcs[] = { 1, };
static int mt7623_pwm_ch4_1_pins[] = { 90, };
static int mt7623_pwm_ch4_1_funcs[] = { 6, };
static int mt7623_pwm_ch4_2_pins[] = { 110, };
static int mt7623_pwm_ch4_2_funcs[] = { 6, };
static int mt7623_pwm_ch4_3_pins[] = { 124, };
static int mt7623_pwm_ch4_3_funcs[] = { 5, };
static int mt7623_pwm_ch5_0_pins[] = { 207, };
static int mt7623_pwm_ch5_0_funcs[] = { 1, };
static int mt7623_pwm_ch5_1_pins[] = { 125, };
static int mt7623_pwm_ch5_1_funcs[] = { 5, };
/* PWRAP */
static int mt7623_pwrap_pins[] = { 0, 1, 2, 3, 4, 5, 6, };
static int mt7623_pwrap_funcs[] = { 1, 1, 1, 1, 1, 1, 1, };
/* SPDIF */
static int mt7623_spdif_in0_0_pins[] = { 56, };
static int mt7623_spdif_in0_0_funcs[] = { 3, };
static int mt7623_spdif_in0_1_pins[] = { 201, };
static int mt7623_spdif_in0_1_funcs[] = { 1, };
static int mt7623_spdif_in1_0_pins[] = { 54, };
static int mt7623_spdif_in1_0_funcs[] = { 3, };
static int mt7623_spdif_in1_1_pins[] = { 202, };
static int mt7623_spdif_in1_1_funcs[] = { 1, };
static int mt7623_spdif_out_pins[] = { 202, };
static int mt7623_spdif_out_funcs[] = { 1, };
/* SPI */
static int mt7623_spi0_pins[] = { 53, 54, 55, 56, };
static int mt7623_spi0_funcs[] = { 1, 1, 1, 1, };
static int mt7623_spi1_pins[] = { 7, 199, 8, 9, };
static int mt7623_spi1_funcs[] = { 1, 1, 1, 1, };
static int mt7623_spi2_pins[] = { 101, 104, 102, 103, };
static int mt7623_spi2_funcs[] = { 1, 1, 1, 1, };
/* UART */
static int mt7623_uart0_0_txd_rxd_pins[] = { 79, 80, };
static int mt7623_uart0_0_txd_rxd_funcs[] = { 1, 1, };
static int mt7623_uart0_1_txd_rxd_pins[] = { 87, 88, };
static int mt7623_uart0_1_txd_rxd_funcs[] = { 5, 5, };
static int mt7623_uart0_2_txd_rxd_pins[] = { 107, 108, };
static int mt7623_uart0_2_txd_rxd_funcs[] = { 5, 5, };
static int mt7623_uart0_3_txd_rxd_pins[] = { 123, 122, };
static int mt7623_uart0_3_txd_rxd_funcs[] = { 5, 5, };
static int mt7623_uart0_rts_cts_pins[] = { 22, 23, };
static int mt7623_uart0_rts_cts_funcs[] = { 1, 1, };
static int mt7623_uart1_0_txd_rxd_pins[] = { 81, 82, };
static int mt7623_uart1_0_txd_rxd_funcs[] = { 1, 1, };
static int mt7623_uart1_1_txd_rxd_pins[] = { 89, 90, };
static int mt7623_uart1_1_txd_rxd_funcs[] = { 5, 5, };
static int mt7623_uart1_2_txd_rxd_pins[] = { 109, 110, };
static int mt7623_uart1_2_txd_rxd_funcs[] = { 5, 5, };
static int mt7623_uart1_rts_cts_pins[] = { 24, 25, };
static int mt7623_uart1_rts_cts_funcs[] = { 1, 1, };
static int mt7623_uart2_0_txd_rxd_pins[] = { 14, 15, };
static int mt7623_uart2_0_txd_rxd_funcs[] = { 1, 1, };
static int mt7623_uart2_1_txd_rxd_pins[] = { 200, 201, };
static int mt7623_uart2_1_txd_rxd_funcs[] = { 6, 6, };
static int mt7623_uart2_rts_cts_pins[] = { 242, 243, };
static int mt7623_uart2_rts_cts_funcs[] = { 1, 1, };
static int mt7623_uart3_txd_rxd_pins[] = { 242, 243, };
static int mt7623_uart3_txd_rxd_funcs[] = { 2, 2, };
static int mt7623_uart3_rts_cts_pins[] = { 26, 27, };
static int mt7623_uart3_rts_cts_funcs[] = { 1, 1, };
/* Watchdog */
static int mt7623_watchdog_0_pins[] = { 11, };
static int mt7623_watchdog_0_funcs[] = { 1, };
static int mt7623_watchdog_1_pins[] = { 121, };
static int mt7623_watchdog_1_funcs[] = { 5, };
static const struct group_desc mt7623_groups[] = {
PINCTRL_PIN_GROUP("aud_ext_clk0", mt7623_aud_ext_clk0),
PINCTRL_PIN_GROUP("aud_ext_clk1", mt7623_aud_ext_clk1),
PINCTRL_PIN_GROUP("dsi_te", mt7623_dsi_te),
PINCTRL_PIN_GROUP("disp_pwm_0", mt7623_disp_pwm_0),
PINCTRL_PIN_GROUP("disp_pwm_1", mt7623_disp_pwm_1),
PINCTRL_PIN_GROUP("disp_pwm_2", mt7623_disp_pwm_2),
PINCTRL_PIN_GROUP("ephy", mt7623_ephy),
PINCTRL_PIN_GROUP("esw_int", mt7623_esw_int),
PINCTRL_PIN_GROUP("esw_rst", mt7623_esw_rst),
PINCTRL_PIN_GROUP("ext_sdio", mt7623_ext_sdio),
PINCTRL_PIN_GROUP("hdmi_cec", mt7623_hdmi_cec),
PINCTRL_PIN_GROUP("hdmi_htplg", mt7623_hdmi_htplg),
PINCTRL_PIN_GROUP("hdmi_i2c", mt7623_hdmi_i2c),
PINCTRL_PIN_GROUP("hdmi_rx", mt7623_hdmi_rx),
PINCTRL_PIN_GROUP("hdmi_rx_i2c", mt7623_hdmi_rx_i2c),
PINCTRL_PIN_GROUP("i2c0", mt7623_i2c0),
PINCTRL_PIN_GROUP("i2c1_0", mt7623_i2c1_0),
PINCTRL_PIN_GROUP("i2c1_1", mt7623_i2c1_1),
PINCTRL_PIN_GROUP("i2c1_2", mt7623_i2c1_2),
PINCTRL_PIN_GROUP("i2c1_3", mt7623_i2c1_3),
PINCTRL_PIN_GROUP("i2c1_4", mt7623_i2c1_4),
PINCTRL_PIN_GROUP("i2c2_0", mt7623_i2c2_0),
PINCTRL_PIN_GROUP("i2c2_1", mt7623_i2c2_1),
PINCTRL_PIN_GROUP("i2c2_2", mt7623_i2c2_2),
PINCTRL_PIN_GROUP("i2c2_3", mt7623_i2c2_3),
PINCTRL_PIN_GROUP("i2s0", mt7623_i2s0),
PINCTRL_PIN_GROUP("i2s1", mt7623_i2s1),
PINCTRL_PIN_GROUP("i2s4", mt7623_i2s4),
PINCTRL_PIN_GROUP("i2s5", mt7623_i2s5),
PINCTRL_PIN_GROUP("i2s2_bclk_lrclk_mclk", mt7623_i2s2_bclk_lrclk_mclk),
PINCTRL_PIN_GROUP("i2s3_bclk_lrclk_mclk", mt7623_i2s3_bclk_lrclk_mclk),
PINCTRL_PIN_GROUP("i2s2_data_in", mt7623_i2s2_data_in),
PINCTRL_PIN_GROUP("i2s3_data_in", mt7623_i2s3_data_in),
PINCTRL_PIN_GROUP("i2s2_data_0", mt7623_i2s2_data_0),
PINCTRL_PIN_GROUP("i2s2_data_1", mt7623_i2s2_data_1),
PINCTRL_PIN_GROUP("i2s3_data_0", mt7623_i2s3_data_0),
PINCTRL_PIN_GROUP("i2s3_data_1", mt7623_i2s3_data_1),
PINCTRL_PIN_GROUP("ir", mt7623_ir),
PINCTRL_PIN_GROUP("lcm_rst", mt7623_lcm_rst),
PINCTRL_PIN_GROUP("mdc_mdio", mt7623_mdc_mdio),
PINCTRL_PIN_GROUP("mipi_tx", mt7623_mipi_tx),
PINCTRL_PIN_GROUP("msdc0", mt7623_msdc0),
PINCTRL_PIN_GROUP("msdc1", mt7623_msdc1),
PINCTRL_PIN_GROUP("msdc1_ins", mt7623_msdc1_ins),
PINCTRL_PIN_GROUP("msdc1_wp_0", mt7623_msdc1_wp_0),
PINCTRL_PIN_GROUP("msdc1_wp_1", mt7623_msdc1_wp_1),
PINCTRL_PIN_GROUP("msdc1_wp_2", mt7623_msdc1_wp_2),
PINCTRL_PIN_GROUP("msdc2", mt7623_msdc2),
PINCTRL_PIN_GROUP("msdc3", mt7623_msdc3),
PINCTRL_PIN_GROUP("nandc", mt7623_nandc),
PINCTRL_PIN_GROUP("nandc_ceb0", mt7623_nandc_ceb0),
PINCTRL_PIN_GROUP("nandc_ceb1", mt7623_nandc_ceb1),
PINCTRL_PIN_GROUP("otg_iddig0_0", mt7623_otg_iddig0_0),
PINCTRL_PIN_GROUP("otg_iddig0_1", mt7623_otg_iddig0_1),
PINCTRL_PIN_GROUP("otg_iddig0_2", mt7623_otg_iddig0_2),
PINCTRL_PIN_GROUP("otg_iddig1_0", mt7623_otg_iddig1_0),
PINCTRL_PIN_GROUP("otg_iddig1_1", mt7623_otg_iddig1_1),
PINCTRL_PIN_GROUP("otg_iddig1_2", mt7623_otg_iddig1_2),
PINCTRL_PIN_GROUP("otg_drv_vbus0_0", mt7623_otg_drv_vbus0_0),
PINCTRL_PIN_GROUP("otg_drv_vbus0_1", mt7623_otg_drv_vbus0_1),
PINCTRL_PIN_GROUP("otg_drv_vbus0_2", mt7623_otg_drv_vbus0_2),
PINCTRL_PIN_GROUP("otg_drv_vbus1_0", mt7623_otg_drv_vbus1_0),
PINCTRL_PIN_GROUP("otg_drv_vbus1_1", mt7623_otg_drv_vbus1_1),
PINCTRL_PIN_GROUP("otg_drv_vbus1_2", mt7623_otg_drv_vbus1_2),
PINCTRL_PIN_GROUP("pcie0_0_perst", mt7623_pcie0_0_perst),
PINCTRL_PIN_GROUP("pcie0_1_perst", mt7623_pcie0_1_perst),
PINCTRL_PIN_GROUP("pcie1_0_perst", mt7623_pcie1_0_perst),
PINCTRL_PIN_GROUP("pcie1_1_perst", mt7623_pcie1_1_perst),
PINCTRL_PIN_GROUP("pcie1_1_perst", mt7623_pcie1_1_perst),
PINCTRL_PIN_GROUP("pcie0_0_rev_perst", mt7623_pcie0_0_rev_perst),
PINCTRL_PIN_GROUP("pcie0_1_rev_perst", mt7623_pcie0_1_rev_perst),
PINCTRL_PIN_GROUP("pcie1_0_rev_perst", mt7623_pcie1_0_rev_perst),
PINCTRL_PIN_GROUP("pcie1_1_rev_perst", mt7623_pcie1_1_rev_perst),
PINCTRL_PIN_GROUP("pcie2_0_rev_perst", mt7623_pcie2_0_rev_perst),
PINCTRL_PIN_GROUP("pcie2_1_rev_perst", mt7623_pcie2_1_rev_perst),
PINCTRL_PIN_GROUP("pcie2_0_perst", mt7623_pcie2_0_perst),
PINCTRL_PIN_GROUP("pcie2_1_perst", mt7623_pcie2_1_perst),
PINCTRL_PIN_GROUP("pcie0_0_wake", mt7623_pcie0_0_wake),
PINCTRL_PIN_GROUP("pcie0_1_wake", mt7623_pcie0_1_wake),
PINCTRL_PIN_GROUP("pcie1_0_wake", mt7623_pcie1_0_wake),
PINCTRL_PIN_GROUP("pcie1_1_wake", mt7623_pcie1_1_wake),
PINCTRL_PIN_GROUP("pcie2_0_wake", mt7623_pcie2_0_wake),
PINCTRL_PIN_GROUP("pcie2_1_wake", mt7623_pcie2_1_wake),
PINCTRL_PIN_GROUP("pcie0_clkreq", mt7623_pcie0_clkreq),
PINCTRL_PIN_GROUP("pcie1_clkreq", mt7623_pcie1_clkreq),
PINCTRL_PIN_GROUP("pcie2_clkreq", mt7623_pcie2_clkreq),
PINCTRL_PIN_GROUP("pcm_clk_0", mt7623_pcm_clk_0),
PINCTRL_PIN_GROUP("pcm_clk_1", mt7623_pcm_clk_1),
PINCTRL_PIN_GROUP("pcm_clk_2", mt7623_pcm_clk_2),
PINCTRL_PIN_GROUP("pcm_clk_3", mt7623_pcm_clk_3),
PINCTRL_PIN_GROUP("pcm_clk_4", mt7623_pcm_clk_4),
PINCTRL_PIN_GROUP("pcm_clk_5", mt7623_pcm_clk_5),
PINCTRL_PIN_GROUP("pcm_clk_6", mt7623_pcm_clk_6),
PINCTRL_PIN_GROUP("pcm_sync_0", mt7623_pcm_sync_0),
PINCTRL_PIN_GROUP("pcm_sync_1", mt7623_pcm_sync_1),
PINCTRL_PIN_GROUP("pcm_sync_2", mt7623_pcm_sync_2),
PINCTRL_PIN_GROUP("pcm_sync_3", mt7623_pcm_sync_3),
PINCTRL_PIN_GROUP("pcm_sync_4", mt7623_pcm_sync_4),
PINCTRL_PIN_GROUP("pcm_sync_5", mt7623_pcm_sync_5),
PINCTRL_PIN_GROUP("pcm_sync_6", mt7623_pcm_sync_6),
PINCTRL_PIN_GROUP("pcm_rx_0", mt7623_pcm_rx_0),
PINCTRL_PIN_GROUP("pcm_rx_1", mt7623_pcm_rx_1),
PINCTRL_PIN_GROUP("pcm_rx_2", mt7623_pcm_rx_2),
PINCTRL_PIN_GROUP("pcm_rx_3", mt7623_pcm_rx_3),
PINCTRL_PIN_GROUP("pcm_rx_4", mt7623_pcm_rx_4),
PINCTRL_PIN_GROUP("pcm_rx_5", mt7623_pcm_rx_5),
PINCTRL_PIN_GROUP("pcm_rx_6", mt7623_pcm_rx_6),
PINCTRL_PIN_GROUP("pcm_tx_0", mt7623_pcm_tx_0),
PINCTRL_PIN_GROUP("pcm_tx_1", mt7623_pcm_tx_1),
PINCTRL_PIN_GROUP("pcm_tx_2", mt7623_pcm_tx_2),
PINCTRL_PIN_GROUP("pcm_tx_3", mt7623_pcm_tx_3),
PINCTRL_PIN_GROUP("pcm_tx_4", mt7623_pcm_tx_4),
PINCTRL_PIN_GROUP("pcm_tx_5", mt7623_pcm_tx_5),
PINCTRL_PIN_GROUP("pcm_tx_6", mt7623_pcm_tx_6),
PINCTRL_PIN_GROUP("pwm_ch1_0", mt7623_pwm_ch1_0),
PINCTRL_PIN_GROUP("pwm_ch1_1", mt7623_pwm_ch1_1),
PINCTRL_PIN_GROUP("pwm_ch1_2", mt7623_pwm_ch1_2),
PINCTRL_PIN_GROUP("pwm_ch1_3", mt7623_pwm_ch1_3),
PINCTRL_PIN_GROUP("pwm_ch1_4", mt7623_pwm_ch1_4),
PINCTRL_PIN_GROUP("pwm_ch2_0", mt7623_pwm_ch2_0),
PINCTRL_PIN_GROUP("pwm_ch2_1", mt7623_pwm_ch2_1),
PINCTRL_PIN_GROUP("pwm_ch2_2", mt7623_pwm_ch2_2),
PINCTRL_PIN_GROUP("pwm_ch2_3", mt7623_pwm_ch2_3),
PINCTRL_PIN_GROUP("pwm_ch2_4", mt7623_pwm_ch2_4),
PINCTRL_PIN_GROUP("pwm_ch3_0", mt7623_pwm_ch3_0),
PINCTRL_PIN_GROUP("pwm_ch3_1", mt7623_pwm_ch3_1),
PINCTRL_PIN_GROUP("pwm_ch3_2", mt7623_pwm_ch3_2),
PINCTRL_PIN_GROUP("pwm_ch3_3", mt7623_pwm_ch3_3),
PINCTRL_PIN_GROUP("pwm_ch4_0", mt7623_pwm_ch4_0),
PINCTRL_PIN_GROUP("pwm_ch4_1", mt7623_pwm_ch4_1),
PINCTRL_PIN_GROUP("pwm_ch4_2", mt7623_pwm_ch4_2),
PINCTRL_PIN_GROUP("pwm_ch4_3", mt7623_pwm_ch4_3),
PINCTRL_PIN_GROUP("pwm_ch5_0", mt7623_pwm_ch5_0),
PINCTRL_PIN_GROUP("pwm_ch5_1", mt7623_pwm_ch5_1),
PINCTRL_PIN_GROUP("pwrap", mt7623_pwrap),
PINCTRL_PIN_GROUP("rtc", mt7623_rtc),
PINCTRL_PIN_GROUP("spdif_in0_0", mt7623_spdif_in0_0),
PINCTRL_PIN_GROUP("spdif_in0_1", mt7623_spdif_in0_1),
PINCTRL_PIN_GROUP("spdif_in1_0", mt7623_spdif_in1_0),
PINCTRL_PIN_GROUP("spdif_in1_1", mt7623_spdif_in1_1),
PINCTRL_PIN_GROUP("spdif_out", mt7623_spdif_out),
PINCTRL_PIN_GROUP("spi0", mt7623_spi0),
PINCTRL_PIN_GROUP("spi1", mt7623_spi1),
PINCTRL_PIN_GROUP("spi2", mt7623_spi2),
PINCTRL_PIN_GROUP("uart0_0_txd_rxd", mt7623_uart0_0_txd_rxd),
PINCTRL_PIN_GROUP("uart0_1_txd_rxd", mt7623_uart0_1_txd_rxd),
PINCTRL_PIN_GROUP("uart0_2_txd_rxd", mt7623_uart0_2_txd_rxd),
PINCTRL_PIN_GROUP("uart0_3_txd_rxd", mt7623_uart0_3_txd_rxd),
PINCTRL_PIN_GROUP("uart1_0_txd_rxd", mt7623_uart1_0_txd_rxd),
PINCTRL_PIN_GROUP("uart1_1_txd_rxd", mt7623_uart1_1_txd_rxd),
PINCTRL_PIN_GROUP("uart1_2_txd_rxd", mt7623_uart1_2_txd_rxd),
PINCTRL_PIN_GROUP("uart2_0_txd_rxd", mt7623_uart2_0_txd_rxd),
PINCTRL_PIN_GROUP("uart2_1_txd_rxd", mt7623_uart2_1_txd_rxd),
PINCTRL_PIN_GROUP("uart3_txd_rxd", mt7623_uart3_txd_rxd),
PINCTRL_PIN_GROUP("uart0_rts_cts", mt7623_uart0_rts_cts),
PINCTRL_PIN_GROUP("uart1_rts_cts", mt7623_uart1_rts_cts),
PINCTRL_PIN_GROUP("uart2_rts_cts", mt7623_uart2_rts_cts),
PINCTRL_PIN_GROUP("uart3_rts_cts", mt7623_uart3_rts_cts),
PINCTRL_PIN_GROUP("watchdog_0", mt7623_watchdog_0),
PINCTRL_PIN_GROUP("watchdog_1", mt7623_watchdog_1),
};
/* Joint those groups owning the same capability in user point of view which
* allows that people tend to use through the device tree.
*/
static const char *mt7623_aud_clk_groups[] = { "aud_ext_clk0",
"aud_ext_clk1", };
static const char *mt7623_disp_pwm_groups[] = { "disp_pwm_0", "disp_pwm_1",
"disp_pwm_2", };
static const char *mt7623_ethernet_groups[] = { "esw_int", "esw_rst",
"ephy", "mdc_mdio", };
static const char *mt7623_ext_sdio_groups[] = { "ext_sdio", };
static const char *mt7623_hdmi_groups[] = { "hdmi_cec", "hdmi_htplg",
"hdmi_i2c", "hdmi_rx",
"hdmi_rx_i2c", };
static const char *mt7623_i2c_groups[] = { "i2c0", "i2c1_0", "i2c1_1",
"i2c1_2", "i2c1_3", "i2c1_4",
"i2c2_0", "i2c2_1", "i2c2_2",
"i2c2_3", };
static const char *mt7623_i2s_groups[] = { "i2s0", "i2s1",
"i2s2_bclk_lrclk_mclk",
"i2s3_bclk_lrclk_mclk",
"i2s4", "i2s5",
"i2s2_data_in", "i2s3_data_in",
"i2s2_data_0", "i2s2_data_1",
"i2s3_data_0", "i2s3_data_1", };
static const char *mt7623_ir_groups[] = { "ir", };
static const char *mt7623_lcd_groups[] = { "dsi_te", "lcm_rst", "mipi_tx", };
static const char *mt7623_msdc_groups[] = { "msdc0", "msdc1", "msdc1_ins",
"msdc1_wp_0", "msdc1_wp_1",
"msdc1_wp_2", "msdc2",
"msdc3", };
static const char *mt7623_nandc_groups[] = { "nandc", "nandc_ceb0",
"nandc_ceb1", };
static const char *mt7623_otg_groups[] = { "otg_iddig0_0", "otg_iddig0_1",
"otg_iddig0_2", "otg_iddig1_0",
"otg_iddig1_1", "otg_iddig1_2",
"otg_drv_vbus0_0",
"otg_drv_vbus0_1",
"otg_drv_vbus0_2",
"otg_drv_vbus1_0",
"otg_drv_vbus1_1",
"otg_drv_vbus1_2", };
static const char *mt7623_pcie_groups[] = { "pcie0_0_perst", "pcie0_1_perst",
"pcie1_0_perst", "pcie1_1_perst",
"pcie2_0_perst", "pcie2_1_perst",
"pcie0_0_rev_perst",
"pcie0_1_rev_perst",
"pcie1_0_rev_perst",
"pcie1_1_rev_perst",
"pcie2_0_rev_perst",
"pcie2_1_rev_perst",
"pcie0_0_wake", "pcie0_1_wake",
"pcie2_0_wake", "pcie2_1_wake",
"pcie0_clkreq", "pcie1_clkreq",
"pcie2_clkreq", };
static const char *mt7623_pcm_groups[] = { "pcm_clk_0", "pcm_clk_1",
"pcm_clk_2", "pcm_clk_3",
"pcm_clk_4", "pcm_clk_5",
"pcm_clk_6", "pcm_sync_0",
"pcm_sync_1", "pcm_sync_2",
"pcm_sync_3", "pcm_sync_4",
"pcm_sync_5", "pcm_sync_6",
"pcm_rx_0", "pcm_rx_1",
"pcm_rx_2", "pcm_rx_3",
"pcm_rx_4", "pcm_rx_5",
"pcm_rx_6", "pcm_tx_0",
"pcm_tx_1", "pcm_tx_2",
"pcm_tx_3", "pcm_tx_4",
"pcm_tx_5", "pcm_tx_6", };
static const char *mt7623_pwm_groups[] = { "pwm_ch1_0", "pwm_ch1_1",
"pwm_ch1_2", "pwm_ch2_0",
"pwm_ch2_1", "pwm_ch2_2",
"pwm_ch3_0", "pwm_ch3_1",
"pwm_ch3_2", "pwm_ch4_0",
"pwm_ch4_1", "pwm_ch4_2",
"pwm_ch4_3", "pwm_ch5_0",
"pwm_ch5_1", "pwm_ch5_2",
"pwm_ch6_0", "pwm_ch6_1",
"pwm_ch6_2", "pwm_ch6_3",
"pwm_ch7_0", "pwm_ch7_1",
"pwm_ch7_2", };
static const char *mt7623_pwrap_groups[] = { "pwrap", };
static const char *mt7623_rtc_groups[] = { "rtc", };
static const char *mt7623_spi_groups[] = { "spi0", "spi2", "spi2", };
static const char *mt7623_spdif_groups[] = { "spdif_in0_0", "spdif_in0_1",
"spdif_in1_0", "spdif_in1_1",
"spdif_out", };
static const char *mt7623_uart_groups[] = { "uart0_0_txd_rxd",
"uart0_1_txd_rxd",
"uart0_2_txd_rxd",
"uart0_3_txd_rxd",
"uart1_0_txd_rxd",
"uart1_1_txd_rxd",
"uart1_2_txd_rxd",
"uart2_0_txd_rxd",
"uart2_1_txd_rxd",
"uart3_txd_rxd",
"uart0_rts_cts",
"uart1_rts_cts",
"uart2_rts_cts",
"uart3_rts_cts", };
static const char *mt7623_wdt_groups[] = { "watchdog_0", "watchdog_1", };
static const struct function_desc mt7623_functions[] = {
{"audck", mt7623_aud_clk_groups, ARRAY_SIZE(mt7623_aud_clk_groups)},
{"disp", mt7623_disp_pwm_groups, ARRAY_SIZE(mt7623_disp_pwm_groups)},
{"eth", mt7623_ethernet_groups, ARRAY_SIZE(mt7623_ethernet_groups)},
{"sdio", mt7623_ext_sdio_groups, ARRAY_SIZE(mt7623_ext_sdio_groups)},
{"hdmi", mt7623_hdmi_groups, ARRAY_SIZE(mt7623_hdmi_groups)},
{"i2c", mt7623_i2c_groups, ARRAY_SIZE(mt7623_i2c_groups)},
{"i2s", mt7623_i2s_groups, ARRAY_SIZE(mt7623_i2s_groups)},
{"ir", mt7623_ir_groups, ARRAY_SIZE(mt7623_ir_groups)},
{"lcd", mt7623_lcd_groups, ARRAY_SIZE(mt7623_lcd_groups)},
{"msdc", mt7623_msdc_groups, ARRAY_SIZE(mt7623_msdc_groups)},
{"nand", mt7623_nandc_groups, ARRAY_SIZE(mt7623_nandc_groups)},
{"otg", mt7623_otg_groups, ARRAY_SIZE(mt7623_otg_groups)},
{"pcie", mt7623_pcie_groups, ARRAY_SIZE(mt7623_pcie_groups)},
{"pcm", mt7623_pcm_groups, ARRAY_SIZE(mt7623_pcm_groups)},
{"pwm", mt7623_pwm_groups, ARRAY_SIZE(mt7623_pwm_groups)},
{"pwrap", mt7623_pwrap_groups, ARRAY_SIZE(mt7623_pwrap_groups)},
{"rtc", mt7623_rtc_groups, ARRAY_SIZE(mt7623_rtc_groups)},
{"spi", mt7623_spi_groups, ARRAY_SIZE(mt7623_spi_groups)},
{"spdif", mt7623_spdif_groups, ARRAY_SIZE(mt7623_spdif_groups)},
{"uart", mt7623_uart_groups, ARRAY_SIZE(mt7623_uart_groups)},
{"watchdog", mt7623_wdt_groups, ARRAY_SIZE(mt7623_wdt_groups)},
};
static const struct mtk_eint_hw mt7623_eint_hw = {
.port_mask = 6,
.ports = 6,
.ap_num = 169,
.db_cnt = 20,
.db_time = debounce_time_mt2701,
};
static struct mtk_pin_soc mt7623_data = {
.reg_cal = mt7623_reg_cals,
.pins = mt7623_pins,
.npins = ARRAY_SIZE(mt7623_pins),
.grps = mt7623_groups,
.ngrps = ARRAY_SIZE(mt7623_groups),
.funcs = mt7623_functions,
.nfuncs = ARRAY_SIZE(mt7623_functions),
.eint_hw = &mt7623_eint_hw,
.gpio_m = 0,
.ies_present = true,
.base_names = mtk_default_register_base_names,
.nbase_names = ARRAY_SIZE(mtk_default_register_base_names),
.bias_disable_set = mtk_pinconf_bias_disable_set_rev1,
.bias_disable_get = mtk_pinconf_bias_disable_get_rev1,
.bias_set = mtk_pinconf_bias_set_rev1,
.bias_get = mtk_pinconf_bias_get_rev1,
.drive_set = mtk_pinconf_drive_set_rev1,
.drive_get = mtk_pinconf_drive_get_rev1,
.adv_pull_get = mtk_pinconf_adv_pull_get,
.adv_pull_set = mtk_pinconf_adv_pull_set,
};
/*
* There are some specific pins have mux functions greater than 8,
* and if we want to switch thees high modes we need to disable
* bonding constraints firstly.
*/
static void mt7623_bonding_disable(struct platform_device *pdev)
{
struct mtk_pinctrl *hw = platform_get_drvdata(pdev);
mtk_rmw(hw, 0, PIN_BOND_REG0, BOND_PCIE_CLR, BOND_PCIE_CLR);
mtk_rmw(hw, 0, PIN_BOND_REG1, BOND_I2S_CLR, BOND_I2S_CLR);
mtk_rmw(hw, 0, PIN_BOND_REG2, BOND_MSDC0E_CLR, BOND_MSDC0E_CLR);
}
static const struct of_device_id mt7623_pctrl_match[] = {
{ .compatible = "mediatek,mt7623-moore-pinctrl", },
{}
};
static int mt7623_pinctrl_probe(struct platform_device *pdev)
{
int err;
err = mtk_moore_pinctrl_probe(pdev, &mt7623_data);
if (err)
return err;
mt7623_bonding_disable(pdev);
return 0;
}
static struct platform_driver mtk_pinctrl_driver = {
.probe = mt7623_pinctrl_probe,
.driver = {
.name = "mt7623-moore-pinctrl",
.of_match_table = mt7623_pctrl_match,
},
};
static int __init mtk_pinctrl_init(void)
{
return platform_driver_register(&mtk_pinctrl_driver);
}
arch_initcall(mtk_pinctrl_init);