{"id":2232226,"url":"http://patchwork.ozlabs.org/api/patches/2232226/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/patch/20260504003421.2545713-5-mikhail.kshevetskiy@iopsys.eu/","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260504003421.2545713-5-mikhail.kshevetskiy@iopsys.eu>","list_archive_url":null,"date":"2026-05-04T00:34:16","name":"[v3,4/9] pinctrl: airoha: add pin controller and gpio driver for AN7581 SoC","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"8dd60b4007564e0641b0751bbabb677b8ff71f28","submitter":{"id":84987,"url":"http://patchwork.ozlabs.org/api/people/84987/?format=json","name":"Mikhail Kshevetskiy","email":"mikhail.kshevetskiy@iopsys.eu"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260504003421.2545713-5-mikhail.kshevetskiy@iopsys.eu/mbox/","series":[{"id":502598,"url":"http://patchwork.ozlabs.org/api/series/502598/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/list/?series=502598","date":"2026-05-04T00:34:12","name":"pinctrl: add support of Airoha SoCs","version":3,"mbox":"http://patchwork.ozlabs.org/series/502598/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2232226/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2232226/checks/","tags":{},"related":[],"headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=iopsys.eu header.i=@iopsys.eu header.a=rsa-sha256\n header.s=selector1 header.b=VRlMsHVS;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=iopsys.eu","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=iopsys.eu header.i=@iopsys.eu header.b=\"VRlMsHVS\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=iopsys.eu","phobos.denx.de;\n spf=pass smtp.mailfrom=mikhail.kshevetskiy@genexis.eu","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=iopsys.eu;"],"Received":["from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g82jq67Yfz1yJ0\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 04 May 2026 10:35:27 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id AA5E584605;\n\tMon,  4 May 2026 02:34:53 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 9359F84669; Mon,  4 May 2026 02:34:52 +0200 (CEST)","from OSPPR02CU001.outbound.protection.outlook.com\n (mail-norwayeastazlp170130007.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c20f::7])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 7D1FF84374\n for <u-boot@lists.denx.de>; Mon,  4 May 2026 02:34:49 +0200 (CEST)","from VI1PR08MB10029.eurprd08.prod.outlook.com\n (2603:10a6:800:1c6::15) by DU0PR08MB8662.eurprd08.prod.outlook.com\n (2603:10a6:10:402::11) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Mon, 4 May\n 2026 00:34:47 +0000","from VI1PR08MB10029.eurprd08.prod.outlook.com\n ([fe80::5e67:2d67:644b:9681]) by VI1PR08MB10029.eurprd08.prod.outlook.com\n ([fe80::5e67:2d67:644b:9681%6]) with mapi id 15.20.9846.025; Mon, 4 May 2026\n 00:34:47 +0000"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,SPF_PASS,UPPERCASE_50_75\n autolearn=no autolearn_force=no version=3.4.2","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=qOpqMiKqEphy6is+5ac0ziVV18znnA6Frw/K84bvM36aI0ss/nz3FjRGCDzeh9H5CWjQgIMtKpQ81ZNd/la7t8FmbYZbdWk7UnZ239QvLCrsg/Avuc7TO0MznmqPJVlD6eCrRFX6ceR0H3UFL6CxBy+7CAW+j+xEZeNi/7iX+9zXT9b7uD1nfqFJb91pV4h0ZaABB0i3wYBpGKC0/W4vWa+8vjP40qriEXGt+e0o5guLu6p9Z8yaZadwUp/t6F6AMcV1T/xUWltw++9jbJo44SKiSVOvypJ5rH6aovFbsfl7084gP4kUp1Lg6tcEBi1XGTly/6l9TViUDM3O0vIAaw==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=BNDZ/JK7fiLBvtZIRohg25E7aUUcQEGexzh9C1Ih8zQ=;\n b=ygdcDweNFQ7l8e7/wsaACNRHIvGyPkpPQxuVG3GgcMZpVREu6irCz3jx9a9awK3hD54YBsBtqFMg8DL/laM+qUj8hB/ffhUILQBlUi/gugbia8JlbDGELREG6aU9FAjE0ivJ3JVSKR/Yq6neQeMgh04KeA7dDLWjKwq8AsqISg/fiDZpZUg9gCxjRBbDWy1T8PgrcQttIJXcCFNRpFzesr8jMRWFXYVNx/RIcnLHhVxW4rMiOUmgfjDamqKQmaydO/+jlWm5YDCZ33gjQv27kR3Qo0GbFmAT0Px7L5oDheBosG2N/ijtQfXxJZGYDCkiITsHZXiDyjW83fp9l5r95g==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=genexis.eu; dmarc=pass action=none header.from=iopsys.eu;\n dkim=pass header.d=iopsys.eu; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=iopsys.eu;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=BNDZ/JK7fiLBvtZIRohg25E7aUUcQEGexzh9C1Ih8zQ=;\n b=VRlMsHVSdd7uKHW9AzHefF3yxL4fLw/ChMLBI74eO8RbIGRw5VUSFVBfuP63rrdmRJgntH4KzTGs/GN0OvoeNr/uwwj+PxFkRTjQNcvcUCXUsftVz5oYPPETrwnCo0soZLPes4EZtE5nEYxiX4oalA/QmPZ+uAvvbL3oLkvr9wD3ucEdJ3rPLg4PlLkXobF72pquPRBqI/2DJ6hfymG9Oc2se3KQwDyGHlWGOrWBdEWjysF4iBH3SfLmzVhaRJxRYAvzahW1tPNNQel7Y0L30+l7qRPzxa28TJCqpLbpNOScRCHE4nYsixcpL0eLeEr7sRLd8kIll1rdhyjybKRx4Q==","From":"Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>","To":"Tom Rini <trini@konsulko.com>, Christian Marangi <ansuelsmth@gmail.com>,\n Simon Glass <sjg@chromium.org>,\n Marek Vasut <marek.vasut+renesas@mailbox.org>, Peng Fan <peng.fan@nxp.com>,\n Michael Trimarchi <michael@amarulasolutions.com>,\n Anis Chali <chalianis1@gmail.com>, Michal Simek <michal.simek@amd.com>,\n Dan Carpenter <dan.carpenter@linaro.org>,\n Sean Anderson <sean.anderson@linux.dev>, Yao Zi <me@ziyao.cc>,\n \"Yury Norov (NVIDIA)\" <yury.norov@gmail.com>,\n Geert Uytterhoeven <geert+renesas@glider.be>,\n Alexandre Belloni <alexandre.belloni@bootlin.com>,\n Crt Mori <cmo@melexis.com>, Richard Genoud <richard.genoud@bootlin.com>,\n u-boot@lists.denx.de, David Lechner <dlechner@baylibre.com>,\n Lorenzo Bianconi <lorenzo@kernel.org>,\n Markus Gothe <markus.gothe@genexis.eu>,\n Matheus Sampaio Queiroga <srherobrine20@gmail.com>,\n Benjamin Larsson <benjamin.larsson@genexis.eu>","Cc":"Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>","Subject":"[PATCH v3 4/9] pinctrl: airoha: add pin controller and gpio driver\n for AN7581 SoC","Date":"Mon,  4 May 2026 03:34:16 +0300","Message-ID":"<20260504003421.2545713-5-mikhail.kshevetskiy@iopsys.eu>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<20260504003421.2545713-1-mikhail.kshevetskiy@iopsys.eu>","References":"<20260504003421.2545713-1-mikhail.kshevetskiy@iopsys.eu>","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"GV2PEPF00023A03.SWEP280.PROD.OUTLOOK.COM\n (2603:10a6:158:400::2aa) To VI1PR08MB10029.eurprd08.prod.outlook.com\n (2603:10a6:800:1c6::15)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"VI1PR08MB10029:EE_|DU0PR08MB8662:EE_","X-MS-Office365-Filtering-Correlation-Id":"b1d56e8f-1429-43a8-5713-08dea974f1ce","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|1800799024|366016|52116014|7416014|376014|38350700014|921020|56012099003|22082099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n RzdJtkKSO7e8TvIECWPfqbm51c5Istplm/lNfDNgejZ3QAQ+81fAjkXE1rQexm86PzeXofd0fheES1hNuuqc1NBvLPgE+X5NrZa7UadVK4OuI2Th/LhfJrWsLg5yS+lfmIV0AJpSLJ5itQtKCNm5fDGDuAcSaHVHiK0S7Z+oOc7TV30i4YCOiDpqRA9psD4GTFxO8LpMzkn6/h06ELacdkDG7/zCkno8jayDfJHmdFeUwcJw1C215TRL9rkzuTIUq/VgA68tlkb5YAe4t4XBH5JWo6H+e2mxB/c3VhON4uMFrojJ3kLRbGG8iF7JTR0Q7+NsIYNlJ4gRv+MQVz2QcfPXgvsn4SbaOTidW5rUljx/5yP0QM+SF6JwIFckB6Cj6r6veO75AZ3r9mOxZCM+nmoa6K5m1niQ++arrFagYcULWdOW7wojsfKX9jeoiGKzPME49cL4tECc7S5pJy2MTzMjraeVsjcsU+N0I8A8cAb3LkOC02hRaFUWL3weqxhDwfFY2AAyQu9WuvniEdZjuYly95yNH+ttM77UqgYBlNk/Ino1XWeDAUcIkIpoLKc9Yu7x77nnwT0+rH63Vokv6ziTmqgYfVms6YaQNNNwnlDqlJsMABzpxl29M+5LeHb4XJDYVsplGO1mBenpXJI89n8T33QM6vxStqIk0T2WxGXsnPOK0uAtaQz5WetwG5tkO+aujCuJ8p5y2CSystA6u+opB+vkAfkwvr3kd2J1sj/EBPvEZarbrfcYR3CLO0rCsRVOwsmNKLKLXSd2MHd5Gg==","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:VI1PR08MB10029.eurprd08.prod.outlook.com; PTR:;\n CAT:NONE;\n SFS:(13230040)(1800799024)(366016)(52116014)(7416014)(376014)(38350700014)(921020)(56012099003)(22082099003)(18002099003);\n DIR:OUT; SFP:1102;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n QvszNddc986BJM6yojow7J1eTwbeM/Kj4zV/d4S1xOAXqTdILrwg6R/knrMYVgRpm00B2SzchGmZS5xmCd4jmUZ7n3RNwNbTGpYy+wSb8LdOZHkfPtCR4vgbPPZGrFFHkMsgAz4Eo/IbEuNRNUpazD5uzbWpUyMKxkO666nIr0dIaChJ/NFfliCdH9tLd/XixE1VgTBbb4T+bjcUtR1toEv9v1QSJfCPIK3ieufGz7OFBTeN7PQFowkBC9EmAtpJyI1EFF7XOzRb5u8kNaQf2RcW7QxZRCVsbzBXfr2LKikB1cHbR3qbPsuQ6MdRVgoHDCFJxUatJhWYCoNlztqp/vfPXikMWmrxQ7ZBzGcncJ0sH7zKH7NcvtUKBgtjcbibdFu89Ntna88fGhh3dC+C8OS6FWoEexF6b5VMN/28S8KnQJnZIbYjqj2F0NA7FSSCrq04YG9CVzp+a0eJiLcVs7Ur4Zht1Dy2nuziwNsYrw+nJB2m7uNx7d2mjr92M6fwWxI3fB168GOHAwPzMl3PhG14kBYTTND+1lwyR5Jyh7C0CctjIw7y5vJA6K0X+B8PD/3ipRLTAErpg8AeB7P/OHQbXV51FRu40iuzGPHjoQXRBMEo1AmjamYNF6NTqm/tRqpAWGNpMy4B1XtFR+wtWdgLPH3PqCaGYKM9qrrSR0BgBjS+gEYCTTrDBCs1FwPDIloui23vJ8d0+GSDkgn+fj4h8u+4AXIw20nc9OKO3v013T8LdiejMJDvXyw4isaTQXbXsN1LQ0NOZVHwN8wE65Yk5GFcJiWPVyULaxNVLQQemb4uuXY0GFyX/rWNDhwe3QmpTOz0w2VyH2yw2sDWfQIqPDJpt+FaP+DK4vZYBq1qvmQVDxi/CFhFt7lgRv6wCVufgF6TLjs6YeSqL8+SUoAT2abSVrQ6nIDgGDkAOdN8nszNFrwx+9l4EjMhKdJRBybDiXqZodrk+BukPbJMN1/DTIFEPveZmw7q2B/ooqLFSgW6yJJQ5JVeyS28WXF0dlryVI4sa2CyscdWkj9TfdV79XAygIjZWjuGXCV+0f8GjiteUqGpfZL+P/zyGuhSte309aOfi2FT4SvEQQJ+OAX5QeIdBmcKil0eCJkDFxALArav9PcVBcc9fHe7rvlSo40vboCPIU+E1cYXkGu/+HMLy/vOfRkkF8e73hWHipha1bIUmFviIEzM8rOmoYdu1adHdxMqZBlJ8wAhDlniYA6RLIDA85uG/k/0tix/ZTsZDTxwYHb95DdpdWyc85KXTYEzcgWtbRdlFmk6hM7RLAv1cW6mzscLUCGw0gj7cnU8A1XjcWR6CfHzPQDJ8fK9aB5gYYXI/d9+tT4TxaJ6aUzO9FBSFgtEHgb79JcwZFTLFYv16IiZbskWRUEFxfzuUJBVcLkLeGoLkYqPMEpEpw2ZgxkRd/vzmdtdPxhG/CB+XaPNxEDI74TfoEZlgX8zZXnXtkH4YGJ7n7e88OGAO3pwbNJfmZaHbYXtMZHZoPUrVR55rpji1b1rdhOvQcs1Hldh/Mh8WDvTODGGa3fMS4i8Q8i508Gn6IIJPOeo0GB/JrF79u07b7TSLsb2qUHM1HfoXku654FFeB8d2GEVW8YKLnumSykxNUE93zndgSYwATVyw3ube993W9dtKnxXoGtajDzyukd/Bx/KT0H0xW8vc0FlyT2O2L4NV+y9fEF/iwGxbLQXTv4rtNBDwLM9kB7hzrktxrIWWpHLX2P9jOBou6acP0KgGutxJS/2FRs=","X-OriginatorOrg":"iopsys.eu","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n b1d56e8f-1429-43a8-5713-08dea974f1ce","X-MS-Exchange-CrossTenant-AuthSource":"VI1PR08MB10029.eurprd08.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"04 May 2026 00:34:47.3080 (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"8d891be1-7bce-4216-9a99-bee9de02ba58","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"\n C9CAhkkq8EnXZQqPjjb/WNN+EYWORRWCZaIU25ixOe/pGazlkKCDU7Hddyi3fwTx+IikaCNwXLtq5tsW4MM2sJdP6ZswN5LxrG0xKEXjcmg=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DU0PR08MB8662","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"},"content":"This patch adds U-Boot pin controller and gpio driver for Airoha AN7581 SoC.\n\nSigned-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>\n---\n drivers/pinctrl/airoha/Kconfig          |    5 +\n drivers/pinctrl/airoha/Makefile         |    2 +\n drivers/pinctrl/airoha/pinctrl-an7581.c | 1074 +++++++++++++++++++++++\n 3 files changed, 1081 insertions(+)\n create mode 100644 drivers/pinctrl/airoha/pinctrl-an7581.c","diff":"diff --git a/drivers/pinctrl/airoha/Kconfig b/drivers/pinctrl/airoha/Kconfig\nindex eb87afbb374..986d23c2e3d 100644\n--- a/drivers/pinctrl/airoha/Kconfig\n+++ b/drivers/pinctrl/airoha/Kconfig\n@@ -9,3 +9,8 @@ config PINCTRL_AIROHA\n \tselect REGMAP\n \tselect SYSCON\n \tbool\n+\n+config PINCTRL_AIROHA_AN7581\n+\ttristate \"AN7581 pin controller and gpio driver\"\n+\tdepends on TARGET_AN7581\n+\tselect PINCTRL_AIROHA\ndiff --git a/drivers/pinctrl/airoha/Makefile b/drivers/pinctrl/airoha/Makefile\nindex a25b744dd7a..909bd9a04d9 100644\n--- a/drivers/pinctrl/airoha/Makefile\n+++ b/drivers/pinctrl/airoha/Makefile\n@@ -1,3 +1,5 @@\n # SPDX-License-Identifier: GPL-2.0\n \n obj-$(CONFIG_PINCTRL_AIROHA)\t\t+= pinctrl-airoha.o\n+\n+obj-$(CONFIG_PINCTRL_AIROHA_AN7581)\t+= pinctrl-an7581.o\ndiff --git a/drivers/pinctrl/airoha/pinctrl-an7581.c b/drivers/pinctrl/airoha/pinctrl-an7581.c\nnew file mode 100644\nindex 00000000000..2505818251c\n--- /dev/null\n+++ b/drivers/pinctrl/airoha/pinctrl-an7581.c\n@@ -0,0 +1,1074 @@\n+// SPDX-License-Identifier: GPL-2.0-only\n+/*\n+ * Author: Lorenzo Bianconi <lorenzo@kernel.org>\n+ * Author: Benjamin Larsson <benjamin.larsson@genexis.eu>\n+ * Author: Markus Gothe <markus.gothe@genexis.eu>\n+ */\n+#include \"airoha-common.h\"\n+\n+static const int en7581_pon_pins[] = { 49, 50, 51, 52, 53, 54 };\n+static const int en7581_pon_tod_1pps_pins[] = { 46 };\n+static const int en7581_gsw_tod_1pps_pins[] = { 46 };\n+static const int en7581_sipo_pins[] = { 16, 17 };\n+static const int en7581_sipo_rclk_pins[] = { 16, 17, 43 };\n+static const int en7581_mdio_pins[] = { 14, 15 };\n+static const int en7581_uart2_pins[] = { 48, 55 };\n+static const int en7581_uart2_cts_rts_pins[] = { 46, 47 };\n+static const int en7581_hsuart_pins[] = { 28, 29 };\n+static const int en7581_hsuart_cts_rts_pins[] = { 26, 27 };\n+static const int en7581_uart4_pins[] = { 38, 39 };\n+static const int en7581_uart5_pins[] = { 18, 19 };\n+static const int en7581_i2c0_pins[] = { 2, 3 };\n+static const int en7581_i2c1_pins[] = { 14, 15 };\n+static const int en7581_jtag_udi_pins[] = { 16, 17, 18, 19, 20 };\n+static const int en7581_jtag_dfd_pins[] = { 16, 17, 18, 19, 20 };\n+static const int en7581_i2s_pins[] = { 26, 27, 28, 29 };\n+static const int en7581_pcm1_pins[] = { 22, 23, 24, 25 };\n+static const int en7581_pcm2_pins[] = { 18, 19, 20, 21 };\n+static const int en7581_spi_quad_pins[] = { 32, 33 };\n+static const int en7581_spi_pins[] = { 4, 5, 6, 7 };\n+static const int en7581_spi_cs1_pins[] = { 34 };\n+static const int en7581_pcm_spi_pins[] = { 18, 19, 20, 21, 22, 23, 24, 25 };\n+static const int en7581_pcm_spi_int_pins[] = { 14 };\n+static const int en7581_pcm_spi_rst_pins[] = { 15 };\n+static const int en7581_pcm_spi_cs1_pins[] = { 43 };\n+static const int en7581_pcm_spi_cs2_pins[] = { 40 };\n+static const int en7581_pcm_spi_cs2_p128_pins[] = { 40 };\n+static const int en7581_pcm_spi_cs2_p156_pins[] = { 40 };\n+static const int en7581_pcm_spi_cs3_pins[] = { 41 };\n+static const int en7581_pcm_spi_cs4_pins[] = { 42 };\n+static const int en7581_emmc_pins[] = {\n+\t4, 5, 6, 30, 31, 32, 33, 34, 35, 36, 37\n+};\n+static const int en7581_pnand_pins[] = {\n+\t4, 5, 6, 7, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42\n+};\n+static const int en7581_gpio0_pins[] = { 13 };\n+static const int en7581_gpio1_pins[] = { 14 };\n+static const int en7581_gpio2_pins[] = { 15 };\n+static const int en7581_gpio3_pins[] = { 16 };\n+static const int en7581_gpio4_pins[] = { 17 };\n+static const int en7581_gpio5_pins[] = { 18 };\n+static const int en7581_gpio6_pins[] = { 19 };\n+static const int en7581_gpio7_pins[] = { 20 };\n+static const int en7581_gpio8_pins[] = { 21 };\n+static const int en7581_gpio9_pins[] = { 22 };\n+static const int en7581_gpio10_pins[] = { 23 };\n+static const int en7581_gpio11_pins[] = { 24 };\n+static const int en7581_gpio12_pins[] = { 25 };\n+static const int en7581_gpio13_pins[] = { 26 };\n+static const int en7581_gpio14_pins[] = { 27 };\n+static const int en7581_gpio15_pins[] = { 28 };\n+static const int en7581_gpio16_pins[] = { 29 };\n+static const int en7581_gpio17_pins[] = { 30 };\n+static const int en7581_gpio18_pins[] = { 31 };\n+static const int en7581_gpio19_pins[] = { 32 };\n+static const int en7581_gpio20_pins[] = { 33 };\n+static const int en7581_gpio21_pins[] = { 34 };\n+static const int en7581_gpio22_pins[] = { 35 };\n+static const int en7581_gpio23_pins[] = { 36 };\n+static const int en7581_gpio24_pins[] = { 37 };\n+static const int en7581_gpio25_pins[] = { 38 };\n+static const int en7581_gpio26_pins[] = { 39 };\n+static const int en7581_gpio27_pins[] = { 40 };\n+static const int en7581_gpio28_pins[] = { 41 };\n+static const int en7581_gpio29_pins[] = { 42 };\n+static const int en7581_gpio30_pins[] = { 43 };\n+static const int en7581_gpio31_pins[] = { 44 };\n+static const int en7581_gpio33_pins[] = { 46 };\n+static const int en7581_gpio34_pins[] = { 47 };\n+static const int en7581_gpio35_pins[] = { 48 };\n+static const int en7581_gpio36_pins[] = { 49 };\n+static const int en7581_gpio37_pins[] = { 50 };\n+static const int en7581_gpio38_pins[] = { 51 };\n+static const int en7581_gpio39_pins[] = { 52 };\n+static const int en7581_gpio40_pins[] = { 53 };\n+static const int en7581_gpio41_pins[] = { 54 };\n+static const int en7581_gpio42_pins[] = { 55 };\n+static const int en7581_gpio43_pins[] = { 56 };\n+static const int en7581_gpio44_pins[] = { 57 };\n+static const int en7581_gpio45_pins[] = { 58 };\n+static const int en7581_gpio46_pins[] = { 59 };\n+static const int en7581_pcie_reset0_pins[] = { 61 };\n+static const int en7581_pcie_reset1_pins[] = { 62 };\n+static const int en7581_pcie_reset2_pins[] = { 63 };\n+\n+static struct pinctrl_pin_desc en7581_pinctrl_pins[] = {\n+\tPINCTRL_PIN(0, \"uart1_txd\"),\n+\tPINCTRL_PIN(1, \"uart1_rxd\"),\n+\tPINCTRL_PIN(2, \"i2c_scl\"),\n+\tPINCTRL_PIN(3, \"i2c_sda\"),\n+\tPINCTRL_PIN(4, \"spi_cs0\"),\n+\tPINCTRL_PIN(5, \"spi_clk\"),\n+\tPINCTRL_PIN(6, \"spi_mosi\"),\n+\tPINCTRL_PIN(7, \"spi_miso\"),\n+\tPINCTRL_PIN(13, \"gpio0\"),\n+\tPINCTRL_PIN(14, \"gpio1\"),\n+\tPINCTRL_PIN(15, \"gpio2\"),\n+\tPINCTRL_PIN(16, \"gpio3\"),\n+\tPINCTRL_PIN(17, \"gpio4\"),\n+\tPINCTRL_PIN(18, \"gpio5\"),\n+\tPINCTRL_PIN(19, \"gpio6\"),\n+\tPINCTRL_PIN(20, \"gpio7\"),\n+\tPINCTRL_PIN(21, \"gpio8\"),\n+\tPINCTRL_PIN(22, \"gpio9\"),\n+\tPINCTRL_PIN(23, \"gpio10\"),\n+\tPINCTRL_PIN(24, \"gpio11\"),\n+\tPINCTRL_PIN(25, \"gpio12\"),\n+\tPINCTRL_PIN(26, \"gpio13\"),\n+\tPINCTRL_PIN(27, \"gpio14\"),\n+\tPINCTRL_PIN(28, \"gpio15\"),\n+\tPINCTRL_PIN(29, \"gpio16\"),\n+\tPINCTRL_PIN(30, \"gpio17\"),\n+\tPINCTRL_PIN(31, \"gpio18\"),\n+\tPINCTRL_PIN(32, \"gpio19\"),\n+\tPINCTRL_PIN(33, \"gpio20\"),\n+\tPINCTRL_PIN(34, \"gpio21\"),\n+\tPINCTRL_PIN(35, \"gpio22\"),\n+\tPINCTRL_PIN(36, \"gpio23\"),\n+\tPINCTRL_PIN(37, \"gpio24\"),\n+\tPINCTRL_PIN(38, \"gpio25\"),\n+\tPINCTRL_PIN(39, \"gpio26\"),\n+\tPINCTRL_PIN(40, \"gpio27\"),\n+\tPINCTRL_PIN(41, \"gpio28\"),\n+\tPINCTRL_PIN(42, \"gpio29\"),\n+\tPINCTRL_PIN(43, \"gpio30\"),\n+\tPINCTRL_PIN(44, \"gpio31\"),\n+\tPINCTRL_PIN(45, \"gpio32\"),\n+\tPINCTRL_PIN(46, \"gpio33\"),\n+\tPINCTRL_PIN(47, \"gpio34\"),\n+\tPINCTRL_PIN(48, \"gpio35\"),\n+\tPINCTRL_PIN(49, \"gpio36\"),\n+\tPINCTRL_PIN(50, \"gpio37\"),\n+\tPINCTRL_PIN(51, \"gpio38\"),\n+\tPINCTRL_PIN(52, \"gpio39\"),\n+\tPINCTRL_PIN(53, \"gpio40\"),\n+\tPINCTRL_PIN(54, \"gpio41\"),\n+\tPINCTRL_PIN(55, \"gpio42\"),\n+\tPINCTRL_PIN(56, \"gpio43\"),\n+\tPINCTRL_PIN(57, \"gpio44\"),\n+\tPINCTRL_PIN(58, \"gpio45\"),\n+\tPINCTRL_PIN(59, \"gpio46\"),\n+\tPINCTRL_PIN(61, \"pcie_reset0\"),\n+\tPINCTRL_PIN(62, \"pcie_reset1\"),\n+\tPINCTRL_PIN(63, \"pcie_reset2\"),\n+};\n+\n+static const char *const pon_groups[] = { \"pon\" };\n+static const char *const tod_1pps_groups[] = { \"pon_tod_1pps\", \"gsw_tod_1pps\" };\n+static const char *const sipo_groups[] = { \"sipo\", \"sipo_rclk\" };\n+static const char *const mdio_groups[] = { \"mdio\" };\n+\n+static const char *const uart_groups[] = {\n+\t\"uart2\", \"uart2_cts_rts\", \"hsuart\", \"hsuart_cts_rts\", \"uart4\", \"uart5\"\n+};\n+static const char *const i2c_groups[] = { \"i2c1\" };\n+static const char *const jtag_groups[] = { \"jtag_udi\", \"jtag_dfd\" };\n+static const char *const pcm_groups[] = { \"pcm1\", \"pcm2\" };\n+static const char *const spi_groups[] = { \"spi_quad\", \"spi_cs1\" };\n+static const char *const pcm_spi_groups[] = {\n+\t\"pcm_spi\",          \"pcm_spi_int\",      \"pcm_spi_rst\", \"pcm_spi_cs1\",\n+\t\"pcm_spi_cs2_p156\", \"pcm_spi_cs2_p128\", \"pcm_spi_cs3\", \"pcm_spi_cs4\"\n+};\n+\n+static const char *const i2s_groups[] = { \"i2s\" };\n+static const char *const emmc_groups[] = { \"emmc\" };\n+static const char *const pnand_groups[] = { \"pnand\" };\n+static const char *const pcie_reset_groups[] = {\n+\t\"pcie_reset0\", \"pcie_reset1\", \"pcie_reset2\"\n+};\n+\n+static const char *const pwm_groups[] = {\n+\t\"gpio0\",  \"gpio1\",  \"gpio2\",  \"gpio3\",  \"gpio4\",  \"gpio5\",  \"gpio6\",\n+\t\"gpio7\",  \"gpio8\",  \"gpio9\",  \"gpio10\", \"gpio11\", \"gpio12\", \"gpio13\",\n+\t\"gpio14\", \"gpio15\", \"gpio16\", \"gpio17\", \"gpio18\", \"gpio19\", \"gpio20\",\n+\t\"gpio21\", \"gpio22\", \"gpio23\", \"gpio24\", \"gpio25\", \"gpio26\", \"gpio27\",\n+\t\"gpio28\", \"gpio29\", \"gpio30\", \"gpio31\", \"gpio36\", \"gpio37\", \"gpio38\",\n+\t\"gpio39\", \"gpio40\", \"gpio41\", \"gpio42\", \"gpio43\", \"gpio44\", \"gpio45\",\n+\t\"gpio46\", \"gpio47\"\n+};\n+static const char *const phy1_led0_groups[] = {\n+\t\"gpio33\", \"gpio34\", \"gpio35\", \"gpio42\",\n+\t\"gpio43\", \"gpio44\", \"gpio45\", \"gpio46\"\n+};\n+static const char *const phy2_led0_groups[] = {\n+\t\"gpio33\", \"gpio34\", \"gpio35\", \"gpio42\",\n+\t\"gpio43\", \"gpio44\", \"gpio45\", \"gpio46\"\n+};\n+static const char *const phy3_led0_groups[] = {\n+\t\"gpio33\", \"gpio34\", \"gpio35\", \"gpio42\",\n+\t\"gpio43\", \"gpio44\", \"gpio45\", \"gpio46\"\n+};\n+static const char *const phy4_led0_groups[] = {\n+\t\"gpio33\", \"gpio34\", \"gpio35\", \"gpio42\",\n+\t\"gpio43\", \"gpio44\", \"gpio45\", \"gpio46\"\n+};\n+static const char *const phy1_led1_groups[] = {\n+\t\"gpio43\", \"gpio44\", \"gpio45\", \"gpio46\"\n+};\n+static const char *const phy2_led1_groups[] = {\n+\t\"gpio43\", \"gpio44\", \"gpio45\", \"gpio46\"\n+};\n+static const char *const phy3_led1_groups[] = {\n+\t\"gpio43\", \"gpio44\", \"gpio45\", \"gpio46\"\n+};\n+static const char *const phy4_led1_groups[] = {\n+\t\"gpio43\", \"gpio44\", \"gpio45\", \"gpio46\"\n+};\n+\n+static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e2_conf[] = {\n+\tPINCTRL_CONF_DESC(0, REG_I2C_SDA_E2, UART1_TXD_E2_MASK),\n+\tPINCTRL_CONF_DESC(1, REG_I2C_SDA_E2, UART1_RXD_E2_MASK),\n+\tPINCTRL_CONF_DESC(2, REG_I2C_SDA_E2, I2C_SDA_E2_MASK),\n+\tPINCTRL_CONF_DESC(3, REG_I2C_SDA_E2, I2C_SCL_E2_MASK),\n+\tPINCTRL_CONF_DESC(4, REG_I2C_SDA_E2, SPI_CS0_E2_MASK),\n+\tPINCTRL_CONF_DESC(5, REG_I2C_SDA_E2, SPI_CLK_E2_MASK),\n+\tPINCTRL_CONF_DESC(6, REG_I2C_SDA_E2, SPI_MOSI_E2_MASK),\n+\tPINCTRL_CONF_DESC(7, REG_I2C_SDA_E2, SPI_MISO_E2_MASK),\n+\tPINCTRL_CONF_DESC(13, REG_GPIO_L_E2, BIT(0)),\n+\tPINCTRL_CONF_DESC(14, REG_GPIO_L_E2, BIT(1)),\n+\tPINCTRL_CONF_DESC(15, REG_GPIO_L_E2, BIT(2)),\n+\tPINCTRL_CONF_DESC(16, REG_GPIO_L_E2, BIT(3)),\n+\tPINCTRL_CONF_DESC(17, REG_GPIO_L_E2, BIT(4)),\n+\tPINCTRL_CONF_DESC(18, REG_GPIO_L_E2, BIT(5)),\n+\tPINCTRL_CONF_DESC(19, REG_GPIO_L_E2, BIT(6)),\n+\tPINCTRL_CONF_DESC(20, REG_GPIO_L_E2, BIT(7)),\n+\tPINCTRL_CONF_DESC(21, REG_GPIO_L_E2, BIT(8)),\n+\tPINCTRL_CONF_DESC(22, REG_GPIO_L_E2, BIT(9)),\n+\tPINCTRL_CONF_DESC(23, REG_GPIO_L_E2, BIT(10)),\n+\tPINCTRL_CONF_DESC(24, REG_GPIO_L_E2, BIT(11)),\n+\tPINCTRL_CONF_DESC(25, REG_GPIO_L_E2, BIT(12)),\n+\tPINCTRL_CONF_DESC(26, REG_GPIO_L_E2, BIT(13)),\n+\tPINCTRL_CONF_DESC(27, REG_GPIO_L_E2, BIT(14)),\n+\tPINCTRL_CONF_DESC(28, REG_GPIO_L_E2, BIT(15)),\n+\tPINCTRL_CONF_DESC(29, REG_GPIO_L_E2, BIT(16)),\n+\tPINCTRL_CONF_DESC(30, REG_GPIO_L_E2, BIT(17)),\n+\tPINCTRL_CONF_DESC(31, REG_GPIO_L_E2, BIT(18)),\n+\tPINCTRL_CONF_DESC(32, REG_GPIO_L_E2, BIT(19)),\n+\tPINCTRL_CONF_DESC(33, REG_GPIO_L_E2, BIT(20)),\n+\tPINCTRL_CONF_DESC(34, REG_GPIO_L_E2, BIT(21)),\n+\tPINCTRL_CONF_DESC(35, REG_GPIO_L_E2, BIT(22)),\n+\tPINCTRL_CONF_DESC(36, REG_GPIO_L_E2, BIT(23)),\n+\tPINCTRL_CONF_DESC(37, REG_GPIO_L_E2, BIT(24)),\n+\tPINCTRL_CONF_DESC(38, REG_GPIO_L_E2, BIT(25)),\n+\tPINCTRL_CONF_DESC(39, REG_GPIO_L_E2, BIT(26)),\n+\tPINCTRL_CONF_DESC(40, REG_GPIO_L_E2, BIT(27)),\n+\tPINCTRL_CONF_DESC(41, REG_GPIO_L_E2, BIT(28)),\n+\tPINCTRL_CONF_DESC(42, REG_GPIO_L_E2, BIT(29)),\n+\tPINCTRL_CONF_DESC(43, REG_GPIO_L_E2, BIT(30)),\n+\tPINCTRL_CONF_DESC(44, REG_GPIO_L_E2, BIT(31)),\n+\tPINCTRL_CONF_DESC(45, REG_GPIO_H_E2, BIT(0)),\n+\tPINCTRL_CONF_DESC(46, REG_GPIO_H_E2, BIT(1)),\n+\tPINCTRL_CONF_DESC(47, REG_GPIO_H_E2, BIT(2)),\n+\tPINCTRL_CONF_DESC(48, REG_GPIO_H_E2, BIT(3)),\n+\tPINCTRL_CONF_DESC(49, REG_GPIO_H_E2, BIT(4)),\n+\tPINCTRL_CONF_DESC(50, REG_GPIO_H_E2, BIT(5)),\n+\tPINCTRL_CONF_DESC(51, REG_GPIO_H_E2, BIT(6)),\n+\tPINCTRL_CONF_DESC(52, REG_GPIO_H_E2, BIT(7)),\n+\tPINCTRL_CONF_DESC(53, REG_GPIO_H_E2, BIT(8)),\n+\tPINCTRL_CONF_DESC(54, REG_GPIO_H_E2, BIT(9)),\n+\tPINCTRL_CONF_DESC(55, REG_GPIO_H_E2, BIT(10)),\n+\tPINCTRL_CONF_DESC(56, REG_GPIO_H_E2, BIT(11)),\n+\tPINCTRL_CONF_DESC(57, REG_GPIO_H_E2, BIT(12)),\n+\tPINCTRL_CONF_DESC(58, REG_GPIO_H_E2, BIT(13)),\n+\tPINCTRL_CONF_DESC(59, REG_GPIO_H_E2, BIT(14)),\n+\tPINCTRL_CONF_DESC(61, REG_I2C_SDA_E2, PCIE0_RESET_E2_MASK),\n+\tPINCTRL_CONF_DESC(62, REG_I2C_SDA_E2, PCIE1_RESET_E2_MASK),\n+\tPINCTRL_CONF_DESC(63, REG_I2C_SDA_E2, PCIE2_RESET_E2_MASK),\n+};\n+\n+static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e4_conf[] = {\n+\tPINCTRL_CONF_DESC(0, REG_I2C_SDA_E4, UART1_TXD_E4_MASK),\n+\tPINCTRL_CONF_DESC(1, REG_I2C_SDA_E4, UART1_RXD_E4_MASK),\n+\tPINCTRL_CONF_DESC(2, REG_I2C_SDA_E4, I2C_SDA_E4_MASK),\n+\tPINCTRL_CONF_DESC(3, REG_I2C_SDA_E4, I2C_SCL_E4_MASK),\n+\tPINCTRL_CONF_DESC(4, REG_I2C_SDA_E4, SPI_CS0_E4_MASK),\n+\tPINCTRL_CONF_DESC(5, REG_I2C_SDA_E4, SPI_CLK_E4_MASK),\n+\tPINCTRL_CONF_DESC(6, REG_I2C_SDA_E4, SPI_MOSI_E4_MASK),\n+\tPINCTRL_CONF_DESC(7, REG_I2C_SDA_E4, SPI_MISO_E4_MASK),\n+\tPINCTRL_CONF_DESC(13, REG_GPIO_L_E4, BIT(0)),\n+\tPINCTRL_CONF_DESC(14, REG_GPIO_L_E4, BIT(1)),\n+\tPINCTRL_CONF_DESC(15, REG_GPIO_L_E4, BIT(2)),\n+\tPINCTRL_CONF_DESC(16, REG_GPIO_L_E4, BIT(3)),\n+\tPINCTRL_CONF_DESC(17, REG_GPIO_L_E4, BIT(4)),\n+\tPINCTRL_CONF_DESC(18, REG_GPIO_L_E4, BIT(5)),\n+\tPINCTRL_CONF_DESC(19, REG_GPIO_L_E4, BIT(6)),\n+\tPINCTRL_CONF_DESC(20, REG_GPIO_L_E4, BIT(7)),\n+\tPINCTRL_CONF_DESC(21, REG_GPIO_L_E4, BIT(8)),\n+\tPINCTRL_CONF_DESC(22, REG_GPIO_L_E4, BIT(9)),\n+\tPINCTRL_CONF_DESC(23, REG_GPIO_L_E4, BIT(10)),\n+\tPINCTRL_CONF_DESC(24, REG_GPIO_L_E4, BIT(11)),\n+\tPINCTRL_CONF_DESC(25, REG_GPIO_L_E4, BIT(12)),\n+\tPINCTRL_CONF_DESC(26, REG_GPIO_L_E4, BIT(13)),\n+\tPINCTRL_CONF_DESC(27, REG_GPIO_L_E4, BIT(14)),\n+\tPINCTRL_CONF_DESC(28, REG_GPIO_L_E4, BIT(15)),\n+\tPINCTRL_CONF_DESC(29, REG_GPIO_L_E4, BIT(16)),\n+\tPINCTRL_CONF_DESC(30, REG_GPIO_L_E4, BIT(17)),\n+\tPINCTRL_CONF_DESC(31, REG_GPIO_L_E4, BIT(18)),\n+\tPINCTRL_CONF_DESC(32, REG_GPIO_L_E4, BIT(19)),\n+\tPINCTRL_CONF_DESC(33, REG_GPIO_L_E4, BIT(20)),\n+\tPINCTRL_CONF_DESC(34, REG_GPIO_L_E4, BIT(21)),\n+\tPINCTRL_CONF_DESC(35, REG_GPIO_L_E4, BIT(22)),\n+\tPINCTRL_CONF_DESC(36, REG_GPIO_L_E4, BIT(23)),\n+\tPINCTRL_CONF_DESC(37, REG_GPIO_L_E4, BIT(24)),\n+\tPINCTRL_CONF_DESC(38, REG_GPIO_L_E4, BIT(25)),\n+\tPINCTRL_CONF_DESC(39, REG_GPIO_L_E4, BIT(26)),\n+\tPINCTRL_CONF_DESC(40, REG_GPIO_L_E4, BIT(27)),\n+\tPINCTRL_CONF_DESC(41, REG_GPIO_L_E4, BIT(28)),\n+\tPINCTRL_CONF_DESC(42, REG_GPIO_L_E4, BIT(29)),\n+\tPINCTRL_CONF_DESC(43, REG_GPIO_L_E4, BIT(30)),\n+\tPINCTRL_CONF_DESC(44, REG_GPIO_L_E4, BIT(31)),\n+\tPINCTRL_CONF_DESC(45, REG_GPIO_H_E4, BIT(0)),\n+\tPINCTRL_CONF_DESC(46, REG_GPIO_H_E4, BIT(1)),\n+\tPINCTRL_CONF_DESC(47, REG_GPIO_H_E4, BIT(2)),\n+\tPINCTRL_CONF_DESC(48, REG_GPIO_H_E4, BIT(3)),\n+\tPINCTRL_CONF_DESC(49, REG_GPIO_H_E4, BIT(4)),\n+\tPINCTRL_CONF_DESC(50, REG_GPIO_H_E4, BIT(5)),\n+\tPINCTRL_CONF_DESC(51, REG_GPIO_H_E4, BIT(6)),\n+\tPINCTRL_CONF_DESC(52, REG_GPIO_H_E4, BIT(7)),\n+\tPINCTRL_CONF_DESC(53, REG_GPIO_H_E4, BIT(8)),\n+\tPINCTRL_CONF_DESC(54, REG_GPIO_H_E4, BIT(9)),\n+\tPINCTRL_CONF_DESC(55, REG_GPIO_H_E4, BIT(10)),\n+\tPINCTRL_CONF_DESC(56, REG_GPIO_H_E4, BIT(11)),\n+\tPINCTRL_CONF_DESC(57, REG_GPIO_H_E4, BIT(12)),\n+\tPINCTRL_CONF_DESC(58, REG_GPIO_H_E4, BIT(13)),\n+\tPINCTRL_CONF_DESC(59, REG_GPIO_H_E4, BIT(14)),\n+\tPINCTRL_CONF_DESC(61, REG_I2C_SDA_E4, PCIE0_RESET_E4_MASK),\n+\tPINCTRL_CONF_DESC(62, REG_I2C_SDA_E4, PCIE1_RESET_E4_MASK),\n+\tPINCTRL_CONF_DESC(63, REG_I2C_SDA_E4, PCIE2_RESET_E4_MASK),\n+};\n+\n+static const struct airoha_pinctrl_conf en7581_pinctrl_pcie_rst_od_conf[] = {\n+\tPINCTRL_CONF_DESC(61, REG_PCIE_RESET_OD, PCIE0_RESET_OD_MASK),\n+\tPINCTRL_CONF_DESC(62, REG_PCIE_RESET_OD, PCIE1_RESET_OD_MASK),\n+\tPINCTRL_CONF_DESC(63, REG_PCIE_RESET_OD, PCIE2_RESET_OD_MASK),\n+};\n+\n+static const struct airoha_pinctrl_func_group pon_func_group[] = {\n+\t{\n+\t\t.name = \"pon\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_PON_MODE_MASK, GPIO_PON_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group tod_1pps_func_group[] = {\n+\t{\n+\t\t.name = \"pon_tod_1pps\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, AN7581_REG_GPIO_2ND_I2C_MODE,\n+\t\t\t       PON_TOD_1PPS_MODE_MASK, PON_TOD_1PPS_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"gsw_tod_1pps\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, AN7581_REG_GPIO_2ND_I2C_MODE,\n+\t\t\t       GSW_TOD_1PPS_MODE_MASK, GSW_TOD_1PPS_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group sipo_func_group[] = {\n+\t{\n+\t\t.name = \"sipo\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK,\n+\t\t\t       GPIO_SIPO_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"sipo_rclk\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK,\n+\t\t\t       GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group mdio_func_group[] = {\n+\t{\n+\t\t.name = \"mdio\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, AN7581_REG_GPIO_2ND_I2C_MODE,\n+\t\t\t       GPIO_MDC_IO_MASTER_MODE_MODE,\n+\t\t\t       GPIO_MDC_IO_MASTER_MODE_MODE },\n+\t\t.regmap[1] = { AIROHA_FUNC_MUX, REG_FORCE_GPIO_EN,\n+\t\t\t       FORCE_GPIO_EN(1) | FORCE_GPIO_EN(2),\n+\t\t\t       FORCE_GPIO_EN(1) | FORCE_GPIO_EN(2) },\n+\t\t.regmap_size = 2,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group uart_func_group[] = {\n+\t{\n+\t\t.name = \"uart2\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_UART2_MODE_MASK, GPIO_UART2_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"uart2_cts_rts\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_UART2_MODE_MASK |\n+\t\t\t\t       GPIO_UART2_CTS_RTS_MODE_MASK,\n+\t\t\t       GPIO_UART2_MODE_MASK |\n+\t\t\t\t       GPIO_UART2_CTS_RTS_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"hsuart\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_HSUART_MODE_MASK |\n+\t\t\t\t       GPIO_HSUART_CTS_RTS_MODE_MASK,\n+\t\t\t       GPIO_HSUART_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"hsuart_cts_rts\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_HSUART_MODE_MASK |\n+\t\t\t\t       GPIO_HSUART_CTS_RTS_MODE_MASK,\n+\t\t\t       GPIO_HSUART_MODE_MASK |\n+\t\t\t\t       GPIO_HSUART_CTS_RTS_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"uart4\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_UART4_MODE_MASK, GPIO_UART4_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"uart5\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_UART5_MODE_MASK, GPIO_UART5_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group i2c_func_group[] = {\n+\t{\n+\t\t.name = \"i2c1\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, AN7581_REG_GPIO_2ND_I2C_MODE,\n+\t\t\t       GPIO_2ND_I2C_MODE_MASK, GPIO_2ND_I2C_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group jtag_func_group[] = {\n+\t{\n+\t\t.name = \"jtag_udi\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_NPU_UART_EN,\n+\t\t\t       JTAG_UDI_EN_MASK, JTAG_UDI_EN_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"jtag_dfd\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_NPU_UART_EN,\n+\t\t\t       JTAG_DFD_EN_MASK, JTAG_DFD_EN_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group pcm_func_group[] = {\n+\t{\n+\t\t.name = \"pcm1\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_PCM1_MODE_MASK, GPIO_PCM1_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"pcm2\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_PCM2_MODE_MASK, GPIO_PCM2_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group spi_func_group[] = {\n+\t{\n+\t\t.name = \"spi_quad\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_SPI_QUAD_MODE_MASK,\n+\t\t\t       GPIO_SPI_QUAD_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"spi_cs1\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_SPI_CS1_MODE_MASK, GPIO_SPI_CS1_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"spi_cs2\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_SPI_CS2_MODE_MASK, GPIO_SPI_CS2_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"spi_cs3\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_SPI_CS3_MODE_MASK, GPIO_SPI_CS3_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"spi_cs4\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_SPI_CS4_MODE_MASK, GPIO_SPI_CS4_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group pcm_spi_func_group[] = {\n+\t{\n+\t\t.name = \"pcm_spi\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_PCM_SPI_MODE_MASK, GPIO_PCM_SPI_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"pcm_spi_int\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_PCM_INT_MODE_MASK, GPIO_PCM_INT_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"pcm_spi_rst\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_PCM_RESET_MODE_MASK,\n+\t\t\t       GPIO_PCM_RESET_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"pcm_spi_cs1\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_PCM_SPI_CS1_MODE_MASK,\n+\t\t\t       GPIO_PCM_SPI_CS1_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"pcm_spi_cs2_p128\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_PCM_SPI_CS2_MODE_P128_MASK,\n+\t\t\t       GPIO_PCM_SPI_CS2_MODE_P128_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"pcm_spi_cs2_p156\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_PCM_SPI_CS2_MODE_P156_MASK,\n+\t\t\t       GPIO_PCM_SPI_CS2_MODE_P156_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"pcm_spi_cs3\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_PCM_SPI_CS3_MODE_MASK,\n+\t\t\t       GPIO_PCM_SPI_CS3_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"pcm_spi_cs4\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_SPI_CS1_MODE,\n+\t\t\t       GPIO_PCM_SPI_CS4_MODE_MASK,\n+\t\t\t       GPIO_PCM_SPI_CS4_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group i2s_func_group[] = {\n+\t{\n+\t\t.name = \"i2s\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, AN7581_REG_GPIO_2ND_I2C_MODE,\n+\t\t\t       GPIO_I2S_MODE_MASK, GPIO_I2S_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group emmc_func_group[] = {\n+\t{\n+\t\t.name = \"emmc\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_EMMC_MODE_MASK, GPIO_EMMC_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group pnand_func_group[] = {\n+\t{\n+\t\t.name = \"pnand\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_PARALLEL_NAND_MODE_MASK,\n+\t\t\t       GPIO_PARALLEL_NAND_MODE_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group pcie_reset_func_group[] = {\n+\t{\n+\t\t.name = \"pcie_reset0\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_PCIE_RESET0_MASK, GPIO_PCIE_RESET0_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"pcie_reset1\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_PCIE_RESET1_MASK, GPIO_PCIE_RESET1_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+\t{\n+\t\t.name = \"pcie_reset2\",\n+\t\t.regmap[0] = { AIROHA_FUNC_MUX, REG_GPIO_PON_MODE,\n+\t\t\t       GPIO_PCIE_RESET2_MASK, GPIO_PCIE_RESET2_MASK },\n+\t\t.regmap_size = 1,\n+\t},\n+};\n+\n+static const struct airoha_pinctrl_func_group pwm_func_group[] = {\n+\tAIROHA_PINCTRL_PWM(\"gpio0\", GPIO0_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio1\", GPIO1_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio2\", GPIO2_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio3\", GPIO3_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio4\", GPIO4_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio5\", GPIO5_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio6\", GPIO6_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio7\", GPIO7_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio8\", GPIO8_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio9\", GPIO9_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio10\", GPIO10_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio11\", GPIO11_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio12\", GPIO12_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio13\", GPIO13_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio14\", GPIO14_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM(\"gpio15\", GPIO15_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio16\", GPIO16_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio17\", GPIO17_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio18\", GPIO18_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio19\", GPIO19_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio20\", GPIO20_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio21\", GPIO21_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio22\", GPIO22_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio23\", GPIO23_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio24\", GPIO24_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio25\", GPIO25_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio26\", GPIO26_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio27\", GPIO27_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio28\", GPIO28_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio29\", GPIO29_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio30\", GPIO30_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio31\", GPIO31_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio36\", GPIO36_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio37\", GPIO37_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio38\", GPIO38_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio39\", GPIO39_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio40\", GPIO40_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio41\", GPIO41_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio42\", GPIO42_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio43\", GPIO43_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio44\", GPIO44_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio45\", GPIO45_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio46\", GPIO46_FLASH_MODE_CFG),\n+\tAIROHA_PINCTRL_PWM_EXT(\"gpio47\", GPIO47_FLASH_MODE_CFG),\n+};\n+\n+static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio33\", GPIO_LAN0_LED0_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio34\", GPIO_LAN1_LED0_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio35\", GPIO_LAN2_LED0_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio42\", GPIO_LAN3_LED0_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio43\", GPIO_LAN0_LED0_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio44\", GPIO_LAN1_LED0_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio45\", GPIO_LAN2_LED0_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio46\", GPIO_LAN3_LED0_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)),\n+};\n+\n+static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio33\", GPIO_LAN0_LED0_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio34\", GPIO_LAN1_LED0_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio35\", GPIO_LAN2_LED0_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio42\", GPIO_LAN3_LED0_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio43\", GPIO_LAN0_LED0_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio44\", GPIO_LAN1_LED0_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio45\", GPIO_LAN2_LED0_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio46\", GPIO_LAN3_LED0_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)),\n+};\n+\n+static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio33\", GPIO_LAN0_LED0_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio34\", GPIO_LAN1_LED0_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio35\", GPIO_LAN2_LED0_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio42\", GPIO_LAN3_LED0_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio43\", GPIO_LAN0_LED0_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio44\", GPIO_LAN1_LED0_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio45\", GPIO_LAN2_LED0_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio46\", GPIO_LAN3_LED0_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)),\n+};\n+\n+static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio33\", GPIO_LAN0_LED0_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio34\", GPIO_LAN1_LED0_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio35\", GPIO_LAN2_LED0_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio42\", GPIO_LAN3_LED0_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio43\", GPIO_LAN0_LED0_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio44\", GPIO_LAN1_LED0_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio45\", GPIO_LAN2_LED0_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)),\n+\tAIROHA_PINCTRL_PHY_LED0(AN7581, \"gpio46\", GPIO_LAN3_LED0_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)),\n+};\n+\n+static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio43\", GPIO_LAN0_LED1_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio44\", GPIO_LAN1_LED1_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio45\", GPIO_LAN2_LED1_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio46\", GPIO_LAN3_LED1_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)),\n+};\n+\n+static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio43\", GPIO_LAN0_LED1_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio44\", GPIO_LAN1_LED1_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio45\", GPIO_LAN2_LED1_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio46\", GPIO_LAN3_LED1_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)),\n+};\n+\n+static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio43\", GPIO_LAN0_LED1_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio44\", GPIO_LAN1_LED1_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio45\", GPIO_LAN2_LED1_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio46\", GPIO_LAN3_LED1_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)),\n+};\n+\n+static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio43\", GPIO_LAN0_LED1_MODE_MASK,\n+\t\t\t\tLAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio44\", GPIO_LAN1_LED1_MODE_MASK,\n+\t\t\t\tLAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio45\", GPIO_LAN2_LED1_MODE_MASK,\n+\t\t\t\tLAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)),\n+\tAIROHA_PINCTRL_PHY_LED1(AN7581, \"gpio46\", GPIO_LAN3_LED1_MODE_MASK,\n+\t\t\t\tLAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)),\n+};\n+\n+static const struct pingroup en7581_pinctrl_groups[] = {\n+\tPINCTRL_PIN_GROUP(\"pon\", en7581_pon),\n+\tPINCTRL_PIN_GROUP(\"pon_tod_1pps\", en7581_pon_tod_1pps),\n+\tPINCTRL_PIN_GROUP(\"gsw_tod_1pps\", en7581_gsw_tod_1pps),\n+\tPINCTRL_PIN_GROUP(\"sipo\", en7581_sipo),\n+\tPINCTRL_PIN_GROUP(\"sipo_rclk\", en7581_sipo_rclk),\n+\tPINCTRL_PIN_GROUP(\"mdio\", en7581_mdio),\n+\tPINCTRL_PIN_GROUP(\"uart2\", en7581_uart2),\n+\tPINCTRL_PIN_GROUP(\"uart2_cts_rts\", en7581_uart2_cts_rts),\n+\tPINCTRL_PIN_GROUP(\"hsuart\", en7581_hsuart),\n+\tPINCTRL_PIN_GROUP(\"hsuart_cts_rts\", en7581_hsuart_cts_rts),\n+\tPINCTRL_PIN_GROUP(\"uart4\", en7581_uart4),\n+\tPINCTRL_PIN_GROUP(\"uart5\", en7581_uart5),\n+\tPINCTRL_PIN_GROUP(\"i2c0\", en7581_i2c0),\n+\tPINCTRL_PIN_GROUP(\"i2c1\", en7581_i2c1),\n+\tPINCTRL_PIN_GROUP(\"jtag_udi\", en7581_jtag_udi),\n+\tPINCTRL_PIN_GROUP(\"jtag_dfd\", en7581_jtag_dfd),\n+\tPINCTRL_PIN_GROUP(\"i2s\", en7581_i2s),\n+\tPINCTRL_PIN_GROUP(\"pcm1\", en7581_pcm1),\n+\tPINCTRL_PIN_GROUP(\"pcm2\", en7581_pcm2),\n+\tPINCTRL_PIN_GROUP(\"spi\", en7581_spi),\n+\tPINCTRL_PIN_GROUP(\"spi_quad\", en7581_spi_quad),\n+\tPINCTRL_PIN_GROUP(\"spi_cs1\", en7581_spi_cs1),\n+\tPINCTRL_PIN_GROUP(\"pcm_spi\", en7581_pcm_spi),\n+\tPINCTRL_PIN_GROUP(\"pcm_spi_int\", en7581_pcm_spi_int),\n+\tPINCTRL_PIN_GROUP(\"pcm_spi_rst\", en7581_pcm_spi_rst),\n+\tPINCTRL_PIN_GROUP(\"pcm_spi_cs1\", en7581_pcm_spi_cs1),\n+\tPINCTRL_PIN_GROUP(\"pcm_spi_cs2_p128\", en7581_pcm_spi_cs2_p128),\n+\tPINCTRL_PIN_GROUP(\"pcm_spi_cs2_p156\", en7581_pcm_spi_cs2_p156),\n+\tPINCTRL_PIN_GROUP(\"pcm_spi_cs2\", en7581_pcm_spi_cs2),\n+\tPINCTRL_PIN_GROUP(\"pcm_spi_cs3\", en7581_pcm_spi_cs3),\n+\tPINCTRL_PIN_GROUP(\"pcm_spi_cs4\", en7581_pcm_spi_cs4),\n+\tPINCTRL_PIN_GROUP(\"emmc\", en7581_emmc),\n+\tPINCTRL_PIN_GROUP(\"pnand\", en7581_pnand),\n+\tPINCTRL_PIN_GROUP(\"gpio0\", en7581_gpio0),\n+\tPINCTRL_PIN_GROUP(\"gpio1\", en7581_gpio1),\n+\tPINCTRL_PIN_GROUP(\"gpio2\", en7581_gpio2),\n+\tPINCTRL_PIN_GROUP(\"gpio3\", en7581_gpio3),\n+\tPINCTRL_PIN_GROUP(\"gpio4\", en7581_gpio4),\n+\tPINCTRL_PIN_GROUP(\"gpio5\", en7581_gpio5),\n+\tPINCTRL_PIN_GROUP(\"gpio6\", en7581_gpio6),\n+\tPINCTRL_PIN_GROUP(\"gpio7\", en7581_gpio7),\n+\tPINCTRL_PIN_GROUP(\"gpio8\", en7581_gpio8),\n+\tPINCTRL_PIN_GROUP(\"gpio9\", en7581_gpio9),\n+\tPINCTRL_PIN_GROUP(\"gpio10\", en7581_gpio10),\n+\tPINCTRL_PIN_GROUP(\"gpio11\", en7581_gpio11),\n+\tPINCTRL_PIN_GROUP(\"gpio12\", en7581_gpio12),\n+\tPINCTRL_PIN_GROUP(\"gpio13\", en7581_gpio13),\n+\tPINCTRL_PIN_GROUP(\"gpio14\", en7581_gpio14),\n+\tPINCTRL_PIN_GROUP(\"gpio15\", en7581_gpio15),\n+\tPINCTRL_PIN_GROUP(\"gpio16\", en7581_gpio16),\n+\tPINCTRL_PIN_GROUP(\"gpio17\", en7581_gpio17),\n+\tPINCTRL_PIN_GROUP(\"gpio18\", en7581_gpio18),\n+\tPINCTRL_PIN_GROUP(\"gpio19\", en7581_gpio19),\n+\tPINCTRL_PIN_GROUP(\"gpio20\", en7581_gpio20),\n+\tPINCTRL_PIN_GROUP(\"gpio21\", en7581_gpio21),\n+\tPINCTRL_PIN_GROUP(\"gpio22\", en7581_gpio22),\n+\tPINCTRL_PIN_GROUP(\"gpio23\", en7581_gpio23),\n+\tPINCTRL_PIN_GROUP(\"gpio24\", en7581_gpio24),\n+\tPINCTRL_PIN_GROUP(\"gpio25\", en7581_gpio25),\n+\tPINCTRL_PIN_GROUP(\"gpio26\", en7581_gpio26),\n+\tPINCTRL_PIN_GROUP(\"gpio27\", en7581_gpio27),\n+\tPINCTRL_PIN_GROUP(\"gpio28\", en7581_gpio28),\n+\tPINCTRL_PIN_GROUP(\"gpio29\", en7581_gpio29),\n+\tPINCTRL_PIN_GROUP(\"gpio30\", en7581_gpio30),\n+\tPINCTRL_PIN_GROUP(\"gpio31\", en7581_gpio31),\n+\tPINCTRL_PIN_GROUP(\"gpio33\", en7581_gpio33),\n+\tPINCTRL_PIN_GROUP(\"gpio34\", en7581_gpio34),\n+\tPINCTRL_PIN_GROUP(\"gpio35\", en7581_gpio35),\n+\tPINCTRL_PIN_GROUP(\"gpio36\", en7581_gpio36),\n+\tPINCTRL_PIN_GROUP(\"gpio37\", en7581_gpio37),\n+\tPINCTRL_PIN_GROUP(\"gpio38\", en7581_gpio38),\n+\tPINCTRL_PIN_GROUP(\"gpio39\", en7581_gpio39),\n+\tPINCTRL_PIN_GROUP(\"gpio40\", en7581_gpio40),\n+\tPINCTRL_PIN_GROUP(\"gpio41\", en7581_gpio41),\n+\tPINCTRL_PIN_GROUP(\"gpio42\", en7581_gpio42),\n+\tPINCTRL_PIN_GROUP(\"gpio43\", en7581_gpio43),\n+\tPINCTRL_PIN_GROUP(\"gpio44\", en7581_gpio44),\n+\tPINCTRL_PIN_GROUP(\"gpio45\", en7581_gpio45),\n+\tPINCTRL_PIN_GROUP(\"gpio46\", en7581_gpio46),\n+\tPINCTRL_PIN_GROUP(\"pcie_reset0\", en7581_pcie_reset0),\n+\tPINCTRL_PIN_GROUP(\"pcie_reset1\", en7581_pcie_reset1),\n+\tPINCTRL_PIN_GROUP(\"pcie_reset2\", en7581_pcie_reset2),\n+};\n+\n+static const struct airoha_pinctrl_func en7581_pinctrl_funcs[] = {\n+\tPINCTRL_FUNC_DESC(\"pon\", pon),\n+\tPINCTRL_FUNC_DESC(\"tod_1pps\", tod_1pps),\n+\tPINCTRL_FUNC_DESC(\"sipo\", sipo),\n+\tPINCTRL_FUNC_DESC(\"mdio\", mdio),\n+\tPINCTRL_FUNC_DESC(\"uart\", uart),\n+\tPINCTRL_FUNC_DESC(\"i2c\", i2c),\n+\tPINCTRL_FUNC_DESC(\"jtag\", jtag),\n+\tPINCTRL_FUNC_DESC(\"pcm\", pcm),\n+\tPINCTRL_FUNC_DESC(\"spi\", spi),\n+\tPINCTRL_FUNC_DESC(\"pcm_spi\", pcm_spi),\n+\tPINCTRL_FUNC_DESC(\"i2s\", i2s),\n+\tPINCTRL_FUNC_DESC(\"emmc\", emmc),\n+\tPINCTRL_FUNC_DESC(\"pnand\", pnand),\n+\tPINCTRL_FUNC_DESC(\"pcie_reset\", pcie_reset),\n+\tPINCTRL_FUNC_DESC(\"pwm\", pwm),\n+\tPINCTRL_FUNC_DESC(\"phy1_led0\", phy1_led0),\n+\tPINCTRL_FUNC_DESC(\"phy2_led0\", phy2_led0),\n+\tPINCTRL_FUNC_DESC(\"phy3_led0\", phy3_led0),\n+\tPINCTRL_FUNC_DESC(\"phy4_led0\", phy4_led0),\n+\tPINCTRL_FUNC_DESC(\"phy1_led1\", phy1_led1),\n+\tPINCTRL_FUNC_DESC(\"phy2_led1\", phy2_led1),\n+\tPINCTRL_FUNC_DESC(\"phy3_led1\", phy3_led1),\n+\tPINCTRL_FUNC_DESC(\"phy4_led1\", phy4_led1),\n+};\n+\n+static const struct airoha_pinctrl_conf en7581_pinctrl_pullup_conf[] = {\n+\tPINCTRL_CONF_DESC(0, REG_I2C_SDA_PU, UART1_TXD_PU_MASK),\n+\tPINCTRL_CONF_DESC(1, REG_I2C_SDA_PU, UART1_RXD_PU_MASK),\n+\tPINCTRL_CONF_DESC(2, REG_I2C_SDA_PU, I2C_SDA_PU_MASK),\n+\tPINCTRL_CONF_DESC(3, REG_I2C_SDA_PU, I2C_SCL_PU_MASK),\n+\tPINCTRL_CONF_DESC(4, REG_I2C_SDA_PU, SPI_CS0_PU_MASK),\n+\tPINCTRL_CONF_DESC(5, REG_I2C_SDA_PU, SPI_CLK_PU_MASK),\n+\tPINCTRL_CONF_DESC(6, REG_I2C_SDA_PU, SPI_MOSI_PU_MASK),\n+\tPINCTRL_CONF_DESC(7, REG_I2C_SDA_PU, SPI_MISO_PU_MASK),\n+\tPINCTRL_CONF_DESC(13, REG_GPIO_L_PU, BIT(0)),\n+\tPINCTRL_CONF_DESC(14, REG_GPIO_L_PU, BIT(1)),\n+\tPINCTRL_CONF_DESC(15, REG_GPIO_L_PU, BIT(2)),\n+\tPINCTRL_CONF_DESC(16, REG_GPIO_L_PU, BIT(3)),\n+\tPINCTRL_CONF_DESC(17, REG_GPIO_L_PU, BIT(4)),\n+\tPINCTRL_CONF_DESC(18, REG_GPIO_L_PU, BIT(5)),\n+\tPINCTRL_CONF_DESC(19, REG_GPIO_L_PU, BIT(6)),\n+\tPINCTRL_CONF_DESC(20, REG_GPIO_L_PU, BIT(7)),\n+\tPINCTRL_CONF_DESC(21, REG_GPIO_L_PU, BIT(8)),\n+\tPINCTRL_CONF_DESC(22, REG_GPIO_L_PU, BIT(9)),\n+\tPINCTRL_CONF_DESC(23, REG_GPIO_L_PU, BIT(10)),\n+\tPINCTRL_CONF_DESC(24, REG_GPIO_L_PU, BIT(11)),\n+\tPINCTRL_CONF_DESC(25, REG_GPIO_L_PU, BIT(12)),\n+\tPINCTRL_CONF_DESC(26, REG_GPIO_L_PU, BIT(13)),\n+\tPINCTRL_CONF_DESC(27, REG_GPIO_L_PU, BIT(14)),\n+\tPINCTRL_CONF_DESC(28, REG_GPIO_L_PU, BIT(15)),\n+\tPINCTRL_CONF_DESC(29, REG_GPIO_L_PU, BIT(16)),\n+\tPINCTRL_CONF_DESC(30, REG_GPIO_L_PU, BIT(17)),\n+\tPINCTRL_CONF_DESC(31, REG_GPIO_L_PU, BIT(18)),\n+\tPINCTRL_CONF_DESC(32, REG_GPIO_L_PU, BIT(19)),\n+\tPINCTRL_CONF_DESC(33, REG_GPIO_L_PU, BIT(20)),\n+\tPINCTRL_CONF_DESC(34, REG_GPIO_L_PU, BIT(21)),\n+\tPINCTRL_CONF_DESC(35, REG_GPIO_L_PU, BIT(22)),\n+\tPINCTRL_CONF_DESC(36, REG_GPIO_L_PU, BIT(23)),\n+\tPINCTRL_CONF_DESC(37, REG_GPIO_L_PU, BIT(24)),\n+\tPINCTRL_CONF_DESC(38, REG_GPIO_L_PU, BIT(25)),\n+\tPINCTRL_CONF_DESC(39, REG_GPIO_L_PU, BIT(26)),\n+\tPINCTRL_CONF_DESC(40, REG_GPIO_L_PU, BIT(27)),\n+\tPINCTRL_CONF_DESC(41, REG_GPIO_L_PU, BIT(28)),\n+\tPINCTRL_CONF_DESC(42, REG_GPIO_L_PU, BIT(29)),\n+\tPINCTRL_CONF_DESC(43, REG_GPIO_L_PU, BIT(30)),\n+\tPINCTRL_CONF_DESC(44, REG_GPIO_L_PU, BIT(31)),\n+\tPINCTRL_CONF_DESC(45, REG_GPIO_H_PU, BIT(0)),\n+\tPINCTRL_CONF_DESC(46, REG_GPIO_H_PU, BIT(1)),\n+\tPINCTRL_CONF_DESC(47, REG_GPIO_H_PU, BIT(2)),\n+\tPINCTRL_CONF_DESC(48, REG_GPIO_H_PU, BIT(3)),\n+\tPINCTRL_CONF_DESC(49, REG_GPIO_H_PU, BIT(4)),\n+\tPINCTRL_CONF_DESC(50, REG_GPIO_H_PU, BIT(5)),\n+\tPINCTRL_CONF_DESC(51, REG_GPIO_H_PU, BIT(6)),\n+\tPINCTRL_CONF_DESC(52, REG_GPIO_H_PU, BIT(7)),\n+\tPINCTRL_CONF_DESC(53, REG_GPIO_H_PU, BIT(8)),\n+\tPINCTRL_CONF_DESC(54, REG_GPIO_H_PU, BIT(9)),\n+\tPINCTRL_CONF_DESC(55, REG_GPIO_H_PU, BIT(10)),\n+\tPINCTRL_CONF_DESC(56, REG_GPIO_H_PU, BIT(11)),\n+\tPINCTRL_CONF_DESC(57, REG_GPIO_H_PU, BIT(12)),\n+\tPINCTRL_CONF_DESC(58, REG_GPIO_H_PU, BIT(13)),\n+\tPINCTRL_CONF_DESC(59, REG_GPIO_H_PU, BIT(14)),\n+\tPINCTRL_CONF_DESC(61, REG_I2C_SDA_PU, PCIE0_RESET_PU_MASK),\n+\tPINCTRL_CONF_DESC(62, REG_I2C_SDA_PU, PCIE1_RESET_PU_MASK),\n+\tPINCTRL_CONF_DESC(63, REG_I2C_SDA_PU, PCIE2_RESET_PU_MASK),\n+};\n+\n+static const struct airoha_pinctrl_conf en7581_pinctrl_pulldown_conf[] = {\n+\tPINCTRL_CONF_DESC(0, REG_I2C_SDA_PD, UART1_TXD_PD_MASK),\n+\tPINCTRL_CONF_DESC(1, REG_I2C_SDA_PD, UART1_RXD_PD_MASK),\n+\tPINCTRL_CONF_DESC(2, REG_I2C_SDA_PD, I2C_SDA_PD_MASK),\n+\tPINCTRL_CONF_DESC(3, REG_I2C_SDA_PD, I2C_SCL_PD_MASK),\n+\tPINCTRL_CONF_DESC(4, REG_I2C_SDA_PD, SPI_CS0_PD_MASK),\n+\tPINCTRL_CONF_DESC(5, REG_I2C_SDA_PD, SPI_CLK_PD_MASK),\n+\tPINCTRL_CONF_DESC(6, REG_I2C_SDA_PD, SPI_MOSI_PD_MASK),\n+\tPINCTRL_CONF_DESC(7, REG_I2C_SDA_PD, SPI_MISO_PD_MASK),\n+\tPINCTRL_CONF_DESC(13, REG_GPIO_L_PD, BIT(0)),\n+\tPINCTRL_CONF_DESC(14, REG_GPIO_L_PD, BIT(1)),\n+\tPINCTRL_CONF_DESC(15, REG_GPIO_L_PD, BIT(2)),\n+\tPINCTRL_CONF_DESC(16, REG_GPIO_L_PD, BIT(3)),\n+\tPINCTRL_CONF_DESC(17, REG_GPIO_L_PD, BIT(4)),\n+\tPINCTRL_CONF_DESC(18, REG_GPIO_L_PD, BIT(5)),\n+\tPINCTRL_CONF_DESC(19, REG_GPIO_L_PD, BIT(6)),\n+\tPINCTRL_CONF_DESC(20, REG_GPIO_L_PD, BIT(7)),\n+\tPINCTRL_CONF_DESC(21, REG_GPIO_L_PD, BIT(8)),\n+\tPINCTRL_CONF_DESC(22, REG_GPIO_L_PD, BIT(9)),\n+\tPINCTRL_CONF_DESC(23, REG_GPIO_L_PD, BIT(10)),\n+\tPINCTRL_CONF_DESC(24, REG_GPIO_L_PD, BIT(11)),\n+\tPINCTRL_CONF_DESC(25, REG_GPIO_L_PD, BIT(12)),\n+\tPINCTRL_CONF_DESC(26, REG_GPIO_L_PD, BIT(13)),\n+\tPINCTRL_CONF_DESC(27, REG_GPIO_L_PD, BIT(14)),\n+\tPINCTRL_CONF_DESC(28, REG_GPIO_L_PD, BIT(15)),\n+\tPINCTRL_CONF_DESC(29, REG_GPIO_L_PD, BIT(16)),\n+\tPINCTRL_CONF_DESC(30, REG_GPIO_L_PD, BIT(17)),\n+\tPINCTRL_CONF_DESC(31, REG_GPIO_L_PD, BIT(18)),\n+\tPINCTRL_CONF_DESC(32, REG_GPIO_L_PD, BIT(19)),\n+\tPINCTRL_CONF_DESC(33, REG_GPIO_L_PD, BIT(20)),\n+\tPINCTRL_CONF_DESC(34, REG_GPIO_L_PD, BIT(21)),\n+\tPINCTRL_CONF_DESC(35, REG_GPIO_L_PD, BIT(22)),\n+\tPINCTRL_CONF_DESC(36, REG_GPIO_L_PD, BIT(23)),\n+\tPINCTRL_CONF_DESC(37, REG_GPIO_L_PD, BIT(24)),\n+\tPINCTRL_CONF_DESC(38, REG_GPIO_L_PD, BIT(25)),\n+\tPINCTRL_CONF_DESC(39, REG_GPIO_L_PD, BIT(26)),\n+\tPINCTRL_CONF_DESC(40, REG_GPIO_L_PD, BIT(27)),\n+\tPINCTRL_CONF_DESC(41, REG_GPIO_L_PD, BIT(28)),\n+\tPINCTRL_CONF_DESC(42, REG_GPIO_L_PD, BIT(29)),\n+\tPINCTRL_CONF_DESC(43, REG_GPIO_L_PD, BIT(30)),\n+\tPINCTRL_CONF_DESC(44, REG_GPIO_L_PD, BIT(31)),\n+\tPINCTRL_CONF_DESC(45, REG_GPIO_H_PD, BIT(0)),\n+\tPINCTRL_CONF_DESC(46, REG_GPIO_H_PD, BIT(1)),\n+\tPINCTRL_CONF_DESC(47, REG_GPIO_H_PD, BIT(2)),\n+\tPINCTRL_CONF_DESC(48, REG_GPIO_H_PD, BIT(3)),\n+\tPINCTRL_CONF_DESC(49, REG_GPIO_H_PD, BIT(4)),\n+\tPINCTRL_CONF_DESC(50, REG_GPIO_H_PD, BIT(5)),\n+\tPINCTRL_CONF_DESC(51, REG_GPIO_H_PD, BIT(6)),\n+\tPINCTRL_CONF_DESC(52, REG_GPIO_H_PD, BIT(7)),\n+\tPINCTRL_CONF_DESC(53, REG_GPIO_H_PD, BIT(8)),\n+\tPINCTRL_CONF_DESC(54, REG_GPIO_H_PD, BIT(9)),\n+\tPINCTRL_CONF_DESC(55, REG_GPIO_H_PD, BIT(10)),\n+\tPINCTRL_CONF_DESC(56, REG_GPIO_H_PD, BIT(11)),\n+\tPINCTRL_CONF_DESC(57, REG_GPIO_H_PD, BIT(12)),\n+\tPINCTRL_CONF_DESC(58, REG_GPIO_H_PD, BIT(13)),\n+\tPINCTRL_CONF_DESC(59, REG_GPIO_H_PD, BIT(14)),\n+\tPINCTRL_CONF_DESC(61, REG_I2C_SDA_PD, PCIE0_RESET_PD_MASK),\n+\tPINCTRL_CONF_DESC(62, REG_I2C_SDA_PD, PCIE1_RESET_PD_MASK),\n+\tPINCTRL_CONF_DESC(63, REG_I2C_SDA_PD, PCIE2_RESET_PD_MASK),\n+};\n+\n+static const struct airoha_pinctrl_match_data en7581_pinctrl_match_data = {\n+\t.gpio_offs = 13,\n+\t.gpio_pin_cnt = 50,\n+\t.pins = en7581_pinctrl_pins,\n+\t.num_pins = ARRAY_SIZE(en7581_pinctrl_pins),\n+\t.grps = en7581_pinctrl_groups,\n+\t.num_grps = ARRAY_SIZE(en7581_pinctrl_groups),\n+\t.funcs = en7581_pinctrl_funcs,\n+\t.num_funcs = ARRAY_SIZE(en7581_pinctrl_funcs),\n+\t.confs_info = {\n+\t\t[AIROHA_PINCTRL_CONFS_PULLUP] = {\n+\t\t\t.confs = en7581_pinctrl_pullup_conf,\n+\t\t\t.num_confs = ARRAY_SIZE(en7581_pinctrl_pullup_conf),\n+\t\t},\n+\t\t[AIROHA_PINCTRL_CONFS_PULLDOWN] = {\n+\t\t\t.confs = en7581_pinctrl_pulldown_conf,\n+\t\t\t.num_confs = ARRAY_SIZE(en7581_pinctrl_pulldown_conf),\n+\t\t},\n+\t\t[AIROHA_PINCTRL_CONFS_DRIVE_E2] = {\n+\t\t\t.confs = en7581_pinctrl_drive_e2_conf,\n+\t\t\t.num_confs = ARRAY_SIZE(en7581_pinctrl_drive_e2_conf),\n+\t\t},\n+\t\t[AIROHA_PINCTRL_CONFS_DRIVE_E4] = {\n+\t\t\t.confs = en7581_pinctrl_drive_e4_conf,\n+\t\t\t.num_confs = ARRAY_SIZE(en7581_pinctrl_drive_e4_conf),\n+\t\t},\n+\t\t[AIROHA_PINCTRL_CONFS_PCIE_RST_OD] = {\n+\t\t\t.confs = en7581_pinctrl_pcie_rst_od_conf,\n+\t\t\t.num_confs = ARRAY_SIZE(en7581_pinctrl_pcie_rst_od_conf),\n+\t\t},\n+\t},\n+};\n+\n+static const struct udevice_id airoha_pinctrl_of_match[] = {\n+\t{ .compatible = \"airoha,en7581-pinctrl\",\n+\t  .data = (uintptr_t)&en7581_pinctrl_match_data },\n+\t{ /* sentinel */ }\n+};\n+\n+U_BOOT_DRIVER(airoha_an7581_pinctrl) = {\n+\t.name = \"airoha-an7581-pinctrl\",\n+\t.id = UCLASS_PINCTRL,\n+\t.of_match = of_match_ptr(airoha_pinctrl_of_match),\n+\t.probe = airoha_pinctrl_probe,\n+\t.bind = airoha_pinctrl_bind,\n+\t.priv_auto = sizeof(struct airoha_pinctrl),\n+\t.ops = &airoha_pinctrl_ops,\n+};\n","prefixes":["v3","4/9"]}