From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2134.outbound.protection.partner.outlook.cn [139.219.146.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 15E3737998C; Thu, 14 May 2026 11:12:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757169; cv=fail; b=IsyrF1TgW1nGY/JjjxJxe+ZX5xny/nhTCa+55cIx+3uw8lk0scrgdqqAJWVXJEuNgZu8x4AsRocMdax3Aeb/S0iXIp3/BB8lrCO42+Y+P7mgxiy09SlWkTOymmh/FWO1Fb2VtDNFNGbIA5zxtzfHGRXG4IoFTVJDGz91/afdfm0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757169; c=relaxed/simple; bh=qsGCB760mgFFhTFIeD69WJUpr+5psmHpD0Vs/zNa3UY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=uwjyJX1cJeXJZgxAYqY9KeUuePJWeSk85oFCcoFFfdNvP+nHACr5bQk1G5oCXircsTwXV0qcQ4W/qWN0/157+QszinPi+l4sM66cOWfR1NS7m3iNeS9u9GgnASc7/XOOjrJsZNSapUqnUuuj9CVjcfbFMU7KKmLZkzoHiN4jKEM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O3ZEs2mjgEe3bezVBu+Cuo+fpbw4GAAGvfS0yLWY3+HscevagJx/DSi9BU/9aAEDRoDGkqMR11AnnDA3ARWIQ/ibW3mMCz+mnzuWl4PQylxX0gQZ3Qj4FPSZDEG7UZ/AfiqgWpzvbqMLOws439ua0lkYI+ls7BIoO5/lJSaK1nc6Gge0vJ7qSv/S4+hj9Pa4sO9f2e9dR1fENdE/HmIsKocHzX2ZSPuIQP0whz3tB77FOZSqw2RgVHzoHX21uw+SC2+MKLAfbg2wUxxHgCsfdp0+saJr7gJK2hPsUpb7vj3nrXUTFNFb/0ifoiTl0u4BGOrD1soF/7Ka3JzHnSjv8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=UmxKQpXMRSuKAe84Y1lpFVAaXf4q4PiNCBlu997kHfg=; b=NqmVEy3PbWmKsZlzyYLVW7DBCrVqcLO2vu1tExDuvNmihyN7CU5f4hcZMkXlGo/OxbcVeyW57gcun3OrXdbHIjm3i0u8lFUw5IiTJOa3R8flr+fQ7Z/Oxdzrpf+FpzVYOO7WikzQJ0JC00tzCA8IsaazgpzramGHF5hngUf4tRwfa6AvfzsoHU9ybXFSog0+trbFsK3T24kmbHox6lAL0M/NVZCO4SWAke7vst8xInCxBAzxJ/dZULmQDh7j4l8fnmjAiPNUvyuKitSfZaAqMPbd/UjbMvCW74tey7dOY5pPJ+1kJWBkBhoCHZ5DMYs+C16ZC0qo8xAlpFTW9Z/XyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:33 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:33 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 01/22] dt-bindings: pincfg-node: Add property 'input-debounce-nanoseconds' Date: Thu, 14 May 2026 04:11:57 -0700 Message-Id: <20260514111218.94519-2-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: 192abae9-2406-4a2c-42df-08deb1a9b224 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: UubFojR8cbNnJZYgNzj7rg3L5qFxXyKHDjsPNb8oCHSYOZ+xlW+IjGLevzj6mfnG9vbEuF+k+91Ixe9WoZ4nSfy0QadS3DQ0eozZvV35F9+UihCG7U44zqAUQOV20ocHmm222lhyPu8GqoXF7mI+EWPtMje2H61aawh3UYN/JtW/JyBlh/a8Q2/RjBnyQex9NxIDTRvfB2NZN0XSyku2IjV5tPVWNyRaYgrT9S1WzIoFlT+M7IJ5g8ywY8zxarSgB0D0eWA3RTgdH882IfVypz+mcE/n7Zx/ao3R7GpTsGyblcCiUtUN+GpVIgmc5+8f8JFboHFhp/nU+WGQkKy9MATgYZXN/pT8zfsKa5X0Y+Ow6WnLu5GLuQzacDJnt8lSWN1dj7aERjWd8VU86DBt3cAphtWjX1+9xWgR0e5gCtbZ/SxVW1vZoSu+/lnz6JOfCM/uSLQqK39u0GVO+Hs0XdQ9QlLdocPUv+Fbzjd3giPgp2C5uNm1UHdJYcE+Zw6JX8dip5kZ1K4UON19J8t8zV1mBB89uisTpV/Vwdrvr1f3bpCc/+TDBYjeZ8IdOoCm8psIsd6oGF09lqj70ZgWaA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4mVvU+hf3xthepRFHCLOu58027W6rhtan097heGTKbsrHGq72/3NNSrF2+qM?= =?us-ascii?Q?MNN5362sWHyZ47iXuHhsvIkqofEgQzaU2bdLlmnlhZYCDNKkNHRG4h7ylEYL?= =?us-ascii?Q?Dd/zdLABeurX42gomh0AhKOuboao5r0JesYo32kDhXuPbfRgjzNb2xSe2gDE?= =?us-ascii?Q?mZPQLxNbvSipQSpMLjEihEiIO7L27Cb3Z/hYBIyDLQEzRNVSOKJma8/gcDDn?= =?us-ascii?Q?F0XMFALyofTme6N/+YLm5DSdvg5RNOPpkWziyIeQ2AOEtXtDP1YzMAUCJTgU?= =?us-ascii?Q?NcxXTDFRyrFCEyvvv83UH6Azjz6Qce6VkIKN23hHZjjyQQUD5uv+d9hl0goX?= =?us-ascii?Q?FZq8SmuHxtbl+oGwU10i3bZIU6krjt57gdmbesjC8I9IMb7GT/JQu97pK5R3?= =?us-ascii?Q?VxUpchILzW6/388HqDHdXaBueV6KptO4aiJxrmy7spqlXfHl0pVOlbTpjLi9?= =?us-ascii?Q?5I9zh+eMQjn2BLUlHqU2ctHpE39yWDHO4aEuiEC5Mk83HjVriLOooc6QsAcs?= =?us-ascii?Q?re+V3dDHIKGuDmyJCF1L/4z3lGOOBkhWkIPjVUwVP6OSiahpRCBL9ISzMO+W?= =?us-ascii?Q?X86ecgwiBmufIvWhpgQn9TmT/GCEZ/qfyN2O+0t03QOy2zZM1HgFfj10uYn+?= =?us-ascii?Q?KMYKlVkWCVC+Py5oj404BrmyoAJcefpLTYq2YQFG7bHwj7hjlfp1cFEJKYGZ?= =?us-ascii?Q?OpgKmU+ncGCcPXM0ItY1xKk+5yMg2+XJefWLnxH2W0rYwNYqNyD7MCgMfulv?= =?us-ascii?Q?W+b8rWrkeaopG/O6gAXXRkWxkNQoVQsMCw1n73zuhtiYD66+G5XGIKbNqR6N?= =?us-ascii?Q?Bm+gH4nWE819kNaBmsuExLyLQ2xnQuzO29XkjbznQJB/vwPlsKDfatHJA2yY?= =?us-ascii?Q?/mDJ0XMr3ABFj5YU/icfqO886uKpE3R72U64SVK++wAu05l5OfhYWMbUg/cC?= =?us-ascii?Q?xTuLAIPFDHTwCNiJ1YugYFvNIrWZsWVOBzzBca/w1oXvBeq1A0fSVOb1FXkr?= =?us-ascii?Q?tzJ+IePl/VXUzpItKvno33hV/YqyJiG+DUBY//v42vD6K3JVSkGomSxIuxh/?= =?us-ascii?Q?y6pruSefy2iIK2vCk9+De+h9Js4tU/C8LbQhGn0IrCjZSKRF2lYxuL6//ki7?= =?us-ascii?Q?tZmJFT00Iiw1tNnkncRZYT8LEyUoqlhCUJfOPHybZm/7qOUeJi5gCi7iiTAW?= =?us-ascii?Q?T8KtULhNpLmz16nuNMaQfuq8Ttz/sR1xKFY+5lh3BdJlX4O8Od7TornXRt1P?= =?us-ascii?Q?18ZwZiaql3tw3FOyqRSGmqkNw97X/1nPDo3gue4+9ArRWM1+cOtqAFPZBmnL?= =?us-ascii?Q?5Ip5PEq4cw+r7SufG/r4RNF8py8OhBzeqBUziQGwCYmDqB8ApONC/g02G9Lt?= =?us-ascii?Q?lSOKhrrvtKScSNnrLDE7DwxBPalnjG3aAqV00AFG7d/XH1hv2DFpY7dT9UWo?= =?us-ascii?Q?62egNWrdMEhdlwtkH4CuyzOBmukUiS0Qs2qd2pUl0XNyaMIhL+1ZTrg4KJye?= =?us-ascii?Q?RthzXeVrcZuqJTuux1PwBcPoddNu+3JAp/a+Yz+jkb55M/LyTI/F7HNXPpi7?= =?us-ascii?Q?ZTAFC5GRIxbe0g5sFYFvadMum0QZcxR03Riy7l0ARmFG2BjOvxI7nTXDN87X?= =?us-ascii?Q?B2HFwWd+UtYpCG2npBooz177GRMdZSGd/G9IEZf/XexeUuFAcVkekg5NKTBV?= =?us-ascii?Q?+6QuLk0bf3HwpNsw61kl+Xg0gU7U2YZUzz6Xy3fkW4ja3ph3NRbireFdVSVO?= =?us-ascii?Q?aVhHvNUC6Tb/DHi9NuV/FJmXpxLkTyn01cdbHMyBCxeOH9iHdnRa?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 192abae9-2406-4a2c-42df-08deb1a9b224 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:33.0673 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GrWq7JYeqrpWA/ZkU0hSJU/BFB8TOvpm/cNA08ZxmHs+kAq0RuQoLNUZLADzOnwMV7kqzuFRwjw1mzroW9GgJ+snSaDlC15PmpzBCaibwaDHnj6rt+hW5AN/bms7N2AY X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add the property 'input-debounce-nanoseconds' to specify debounce time in nanoseconds as an alternative to the existing 'input-debounce' which uses microseconds. Make the new property unavailable when the existing property 'input-debounce' is selected to prevent conflicting definitions. Signed-off-by: Changhuang Liang --- .../devicetree/bindings/pinctrl/pincfg-node.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml b/D= ocumentation/devicetree/bindings/pinctrl/pincfg-node.yaml index 97dbce8a261f..4db66cdf438c 100644 --- a/Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml +++ b/Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml @@ -104,6 +104,11 @@ properties: description: Takes the debounce time in usec as argument or 0 to disab= le debouncing =20 + input-debounce-nanoseconds: + $ref: /schemas/types.yaml#/definitions/uint32-array + description: Takes the debounce time in nsec as argument or 0 to disab= le + debouncing + power-source: $ref: /schemas/types.yaml#/definitions/uint32 description: select between different power supplies @@ -214,6 +219,13 @@ allOf: input-schmitt-enable: false input-schmitt-microvolt: false =20 + - if: + required: + - input-debounce + then: + properties: + input-debounce-nanoseconds: false + - if: required: - drive-strength --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2134.outbound.protection.partner.outlook.cn [139.219.146.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 63A123B9D98; Thu, 14 May 2026 11:12:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757171; cv=fail; b=iKsjYUL6SfJBUUZtDB+oCKUAQodP7DC+Nz9QQ2SaQQmA+tbTIhYUBU2mY+MIiVdKcerJhQNoR9X9kDvMe9kQ9sEkbLZYPgPeojl6MoiTFCPY8YSnA0BqMPGtfRbjeoZLJaWseVt3wKQcSvyLdSadVkMlQxbTQW4Bz+Z4FpFFJN8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757171; c=relaxed/simple; bh=Y9+GOORsMh6cooEdyS1LHqCehXG7oBXTX82oZj7Qfko=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=MVKpHmtR/+GXiviLz4gy+PHA3FzDiLHOVjH8x5xS84pDrdm23oBJ+N/bixrd3GmPG+Mr2TaK5H0kbws1YH+JD8i8DOE5BqwRzoyHwEJSrNucbTLcULUWCVLEVaIq9JymToeil20pwtZjYn/Lml8mbqNeh+wKfCZ0LjJ9jfOTE+4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mwTD0SGMujxUY2Ua0xfY4MM+ARswO5QGH+bmG7i67fmeoAJTAFncSaLUCLNPsFQ8azwnSfpxqy/VBdYtcQ+F5bIavD7GZdqMHAy8loAkBiHRicQgCf9MttyFhH8o87GrOtQKp9BD2rU+WV5zkVfl0dc8DzkpjpKkkmD3Mg1QJTeHc5TWre0GeazVsRJLKqIlQq6JvRrVNB3Y8grFN6tqVqYUJvOIbzX/8uxMtLsCTxouJOLw3AHG9i3DYLN+WWkYxZZL6a2E2EIJ+j+SFvYnM89F0nL39wZQQbvlM96VmidiNmfUla/Qi/2uhC6BDkLV7tSESW/c2LceGu0XyMr0xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=cS9Uf/UB6PdSA8gmV+7juzfQUdWhCJh9x0Dgw1H9wvU=; b=kiS7j6i/zrKgHxGa+fejyZ19xlEcHkb+Gu1pzzBYFFgGkX5SkXOceuwy+2fCLKZuVEVYpeMfnCUe7P9RVq459QmJa9F5Y7/MwN6iR7DRXBGt4GzXqOlYM7gJToTpikqiFiGVc5cCldEoqjcTt6bMf7pUHGKB8BxFq6l9j+HYVfv194kiUhWB1vMyQUPtbK63vuQiD8sTUhquKxaRzxyKtfENI4JN0ReKxnbs2YNXcHn07JNR91CNwa1aIeuhsvX7tWoADv8h50a1IbSom7DNTJiLPCll8y9hN/4w31lWoPrw8ep9XCGB8fF3eO94Dhrtm5zkChd3H+q0XTF/b/svEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:34 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:34 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 02/22] pinctrl: pinconf-generic: Add property 'input-debounce-nanoseconds' Date: Thu, 14 May 2026 04:11:58 -0700 Message-Id: <20260514111218.94519-3-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: 1644fa38-eba8-4909-7fa1-08deb1a9b2c8 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: EzGVa5244xnekF1RkK2z1jUGuzBJ+/rWiXtVrB1YE/4Gq4jBfAOvVXICFVfhkjuK+eKtGD8JbpVsADIPYotXC+b23Xcx5ELO6XLTtzdQYOMknYAGG7kum8GccOcdo0B/j0dVYQTSbjNb6s9u0z6s0ucQ3CHd/qHh3E4N/SAZ/PfDaEhS98zE3lepK+F1crcGPqRhKw/T14hSaVYxEw0LQgDym9GPr+uPYMtOA7jGC5jHJUEGBl47E2XKQxRDAjz03c4K3wPu2F4ykfkNu9GmpCF/s+ksarbsBueHFh8ZpU9Lk67stsHMrgAQAma6IoSqYP10jsKddM4jVBlhmtPfthGSdWdPCQxYIeN5tX4VYsuSHlvhsjJzF5cEqDV4U9cgHr7rnvt/1hj8dsyEZKQiJwjdheXDOFDP9/m/7p/tmc0iKiUSTwiPeoBauc8e+fONBBc2sfvXdsdWcEV+Yx465wWWES1Zv0VtbuchH+LgKL5XOlA+IhVERMI/ndVJ/1sdBDvsLyq1sQkVUoaxKbht8McXct8YGMQJS1sacZPA8cqUsZDGEP/ouXmzWf0FSpJheiZX0RVNbc3tgR4Ddqn45g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HYtGOHeWHj9dnRGuQ4QRv3960uSa+oSqOXCqoJasavlXIl+wBnmuQ6I41U61?= =?us-ascii?Q?xA+SB3OlnGtymVb2FGtDY3NhD7Z0Y3foQr4t6CJHqr6+14KHZGAbIViwkGzK?= =?us-ascii?Q?SGs/Np7jnzoP0E8Aq/7HFzdZIY/v2b6MfGJQQWUZ1nt20QsWT/BElQ/p8xom?= =?us-ascii?Q?0bcTuWjFUdY5QYcO/H04MbI812yi8de97sPRFl1wVwkP3IqET2+7ZAiQk8nU?= =?us-ascii?Q?RcqyJ1T5x+5RaJ4rEaQC3Zg2Bm0qYxM/z1eDMTeMHar2bLqzom5QZHbwnDOI?= =?us-ascii?Q?947GqQZ+NcBAx3VjEt8qP5b3kFTtWK941N//Y8a4RdQumSG36jcuExoLlTNm?= =?us-ascii?Q?1UxGQ0zrcAAK1kYw+MIxbiuoxjmA8QjlTyFr+NIBLatkxyngc8n/tnsSYjC3?= =?us-ascii?Q?VjGpU6lCr+pYwfGNoFY5faJy07H/2RvfQz2YZKUNPR332lGb+K3Y3CMw8+Cs?= =?us-ascii?Q?+HxfmBHoXW2Mh30Mr+T8NgoIoEND6EJ+H6mAf9OaHMenU+iI0mmYifH0KQL/?= =?us-ascii?Q?uYswkzsBlufvNfo3+RO51Svth4HucBItDHFl8ssWEUageGx7fkTrXn2FmaJZ?= =?us-ascii?Q?iKYsDCdmp+b6xhpmEJdOLNMrTyx+kCjA4uEhSrijr48k9Gd8bZF6BsxpMXKM?= =?us-ascii?Q?orFgiGce5I/M0mlM1M3ZLLQtALh+O4vfxA7Rg3bLDpVd6k0c5f9LOcPGXKX+?= =?us-ascii?Q?85IL+yR3y5d6ei4RI0XzPbR0XFocQF+CWUuRVd5VTglkvXQlgDVQHo/e/eB9?= =?us-ascii?Q?TUdu45fAR/rZ72Z4z8BZ8STaUlkKzO2azGjadTG8A74hQkkwKXIIYFnHrVUm?= =?us-ascii?Q?Os4P0JwwF+cWj7faDCHejL3dndDUpmVm4ugb1sOzSUcy+KAxhBZpG/p+zTuY?= =?us-ascii?Q?IUxLlp4t3UFkd/ly5tqgYV6ljxbnpZsuIpEFakOswC9kmvzOM4W2XC7KcrsA?= =?us-ascii?Q?ArZKaK30l8xChLUhDnTBdELeyqFv9suAUgItlQLSALplL0NjHgIRgsCK1JDw?= =?us-ascii?Q?ZOZrB8XFFhtyPqbE7D8Mtt9frLL8/zpKC8XMT43UCV9VtYIuxMH8dgImGhBR?= =?us-ascii?Q?P4g6ywEvpByV45DPUFahs+P22TKGNxUDtwT6MAv2boU5iUQILULQVhQ23ZQV?= =?us-ascii?Q?kozw8cASnAHwMw1wMmvbiPdXHgFpKi0xKXT56N7yMRFQRS3Q9p1HCqIcmdN9?= =?us-ascii?Q?X/nsmFekt3IJnEMdqxULJofY+7cnd7UoB1q4HH/ABC58SJTozQRFdT8il1O7?= =?us-ascii?Q?5e7jJdB+N88PXv0q0HF1if+cpE6J+aO7bzxTclKHEIrrsMhA6+RfAqX8UsUO?= =?us-ascii?Q?FPbwhF8ObfR+zPjsUUZknfVS//qJhT8tPmuv2nIEGSxEwbX8viW3Phds1ca+?= =?us-ascii?Q?NX77cC8BgEI1oi8VL8JivzJMYG3+mMOUbsbuaK4oRvbPI8IHwqaQDMkRIzw2?= =?us-ascii?Q?h0DCrgQyCaN7bd6P2JSM0nZtm63b7o+aNfmpq1pD+HR4qVURyxtM2mEtBsQU?= =?us-ascii?Q?hIcqiLSZUa2lf9lxqj9iN56jWJ4UYtkp2vGx47U/v07PlQnObzr59zaddm4w?= =?us-ascii?Q?Zxl7sQblpeaizSCFOwfSGlTtXVCmylimtVfdRjTgqSOsptw8risnQJVnnxf5?= =?us-ascii?Q?egeoqMQzgrl+wpJrcCemk12r2x/wXA7wSUTVsevChxpLRcEqM06W0zN50Y1u?= =?us-ascii?Q?lefvdkwFVDWH5/JY5kcjzsHU/QXHgXxv8MliNtVoBVCqx5TgLejWrqopk7dY?= =?us-ascii?Q?w3PP5joqf5jyKWfdoiO2UJK3AGlp84m4sQRntArlQGKd/lS7cBUg?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1644fa38-eba8-4909-7fa1-08deb1a9b2c8 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:34.1359 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: DHC2cBe2vTnTq968cDdXy2MC97BT/1em2/n8VHsnUhLXzVWnXDVhlkXBQ8foS4tdlgOvMcP1CtbtrPLA6WUBIiiGdEn5L2JIvewfLLHokSXs0Mk2n2DojIVV+9//V7F0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add 'input-debounce-nanoseconds' to the generic parameters used for parsing DT files, along with the corresponding configuration parameter PIN_CONFIG_INPUT_DEBOUNCE_NS. This allows debounce time to be specified in nanoseconds as an alternative to the existing 'input-debounce' property which uses microseconds Signed-off-by: Changhuang Liang --- drivers/pinctrl/pinconf-generic.c | 2 ++ include/linux/pinctrl/pinconf-generic.h | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/drivers/pinctrl/pinconf-generic.c b/drivers/pinctrl/pinconf-ge= neric.c index 64ed28309788..02f88b2b8120 100644 --- a/drivers/pinctrl/pinconf-generic.c +++ b/drivers/pinctrl/pinconf-generic.c @@ -43,6 +43,7 @@ static const struct pin_config_item conf_items[] =3D { PCONFDUMP(PIN_CONFIG_DRIVE_STRENGTH, "output drive strength", "mA", true), PCONFDUMP(PIN_CONFIG_DRIVE_STRENGTH_UA, "output drive strength", "uA", tr= ue), PCONFDUMP(PIN_CONFIG_INPUT_DEBOUNCE, "input debounce", "usec", true), + PCONFDUMP(PIN_CONFIG_INPUT_DEBOUNCE_NS, "input debounce", "nsec", true), PCONFDUMP(PIN_CONFIG_INPUT_ENABLE, "input enabled", NULL, false), PCONFDUMP(PIN_CONFIG_INPUT_SCHMITT, "input schmitt trigger", NULL, false), PCONFDUMP(PIN_CONFIG_INPUT_SCHMITT_UV, "input schmitt threshold", "uV", t= rue), @@ -185,6 +186,7 @@ static const struct pinconf_generic_params dt_params[] = =3D { { "drive-strength", PIN_CONFIG_DRIVE_STRENGTH, 0 }, { "drive-strength-microamp", PIN_CONFIG_DRIVE_STRENGTH_UA, 0 }, { "input-debounce", PIN_CONFIG_INPUT_DEBOUNCE, 0 }, + { "input-debounce-nanoseconds", PIN_CONFIG_INPUT_DEBOUNCE_NS, 0 }, { "input-disable", PIN_CONFIG_INPUT_ENABLE, 0 }, { "input-enable", PIN_CONFIG_INPUT_ENABLE, 1 }, { "input-schmitt", PIN_CONFIG_INPUT_SCHMITT, 0 }, diff --git a/include/linux/pinctrl/pinconf-generic.h b/include/linux/pinctr= l/pinconf-generic.h index a5d4b2d8633a..1df63c732b99 100644 --- a/include/linux/pinctrl/pinconf-generic.h +++ b/include/linux/pinctrl/pinconf-generic.h @@ -71,6 +71,10 @@ struct pinctrl_map; * which means it will wait for signals to settle when reading inputs. The * argument gives the debounce time in usecs. Setting the * argument to zero turns debouncing off. + * @PIN_CONFIG_INPUT_DEBOUNCE_NS: this will configure the pin to debounce = mode, + * which means it will wait for signals to settle when reading inputs. The + * argument gives the debounce time in nsecs. Setting the + * argument to zero turns debouncing off. * @PIN_CONFIG_INPUT_ENABLE: enable the pin's input. Note that this does = not * affect the pin's ability to drive output. 1 enables input, 0 disables * input. @@ -143,6 +147,7 @@ enum pin_config_param { PIN_CONFIG_DRIVE_STRENGTH, PIN_CONFIG_DRIVE_STRENGTH_UA, PIN_CONFIG_INPUT_DEBOUNCE, + PIN_CONFIG_INPUT_DEBOUNCE_NS, PIN_CONFIG_INPUT_ENABLE, PIN_CONFIG_INPUT_SCHMITT, PIN_CONFIG_INPUT_SCHMITT_ENABLE, --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2094.outbound.protection.partner.outlook.cn [139.219.146.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A9C53B5F59; Thu, 14 May 2026 11:12:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757181; cv=fail; b=VlgzPEF5iBm9GV4mhxbhRwbFR9hKRJqxgjPxJjpGQXyaVIX3kdk9Q1Wmxl8gC0KHMgXW0r45t+oHyqmzGiCnnDgH2Oh48ZurHFXpdV8dFx/f3hz0RMjZ9YaUN4hbmMz1udNlFmcPLoG4lwa82Qm7dmh8pVSsJNIdw5Ef4+emQz4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757181; c=relaxed/simple; bh=VmywJN2wldiO7LZeSSU7RSY8Z4eIUzTHODNbSOZGfI8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=QBxml7mmlqYJ7deS2ijdFJSYHa4ILyYYkdkXxCY3BYEmOKP6b4Js3pU1u0fghgeu2YpZtxZbjeklg1iVC2Im7YvKGM2o61R08gz46O/IuaydVKsWP7yrJCtv00p+4hCeLfhERbUTzDPR+TpkuR4vxRUFN2KmAqUxUPRNSeznc+Y= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Va9M2lrsOaveF77PTtA3A9iZYQM+aneHlQRDvd/WswWpxNu1hjAl1WqVI3XCrAUC+dCKg7lMUpQeIM42H0rM6j6pApuzlwfrSmdDSyOeI71mF8I+f83pi1Q5wQLAViSaSRUdf886PTRMUJJw4LZnIcBHCYgGdmqHJaslicuQTvz07/bNO49elDtMhhU3dg7CB8yTCpvPVoyOgJt5bAWDwBdv0JvGwpvjv39arPR9bT69Nh2l+9eIAeZXDaENsWsiyrN+s4mdIGrkFuMEXd2GGh/QdOWjDSi+8lw+NPv/N4EDs0S9zwR2LiCvjA/4sZHxf0ztHxn1ZS/hg+RSM7ON2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=6qm8lAXKmRIo4j43PA66w3oSdXDbQeqmjEFJw4hdmaU=; b=WNJYSLnDbOIm2/4V27KMgxwEw76YPMunFKchMorNQaOOlpT6DU70bBLggBwt1JTsFIxQaszA2dK88xbAnwMi5CBFF8eHIiUiPuhi0gtqYwjhibh6VLeAxOYjMtWXtDvw5voszqOGYPYKknJozIEwnNdFmNH8dAfaatxmQuzNyrgt6pjIagB+4xCuRyv6c2LVsIugOgqbRbT0YKR5F9WzIl9TebvxTj+46SYYxrAxcOBz+mC1raRPQRsmhckk8Q60UqJLhCudD83HP1lWoxxDdiB9Z+FywE1yMJGwLWk+eQxRxB7tknmO7sZNBEBS4FuBxzFZ32znjA+MBnPb7Bw+pQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:35 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:35 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 03/22] pinctrl: pinctrl-generic: Make the "function" property optional Date: Thu, 14 May 2026 04:11:59 -0700 Message-Id: <20260514111218.94519-4-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: e9939af0-b592-4ad2-1eb8-08deb1a9b388 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: 99/hZ9e4YDGqPeeZk4lyHSArYZcOoRembS95ieazLaeSUXPBxtUAsfpGCBrjiwPGcFf+yEfG4f3dP9q8KgCIXXUfCG1lDLDhdtL6FKRRHBIm7bAWm468nv6LsVGSBxaWM8Iobz3Q0eZj2HnFGt4d70A+Yh1073dUb060wPQ4Zhfl45XLPJ8MoM/5MM3N6U6vE1r/X+X/czU3IG157msVFO+ZLz8Ejl8oZpaWguNaVFm9Y8qjL3NnYsaEs/LRhEOk/anNKBbQr6kM2F7dBLLLOqwWwapWOm+T0iveOYUmbyolwoeWfvuQS6D4vKz//mFE9hVq0omXqcSyBEbh5aMw/BKJpOkdTUAN+teLcG0bMHXMuc0YOJC71ub2MyDLycIJTRE9nOrKZ4KL9s43ddDrgLdUrq3IJwbg4/8HaSaH1QPDiT4rbgL9wNeJrZMAXeAeLrg52f9OtVpRiG9VjHPAvGPuquSxrxTUm1dEyboow7KvoDVLt7RsDICGvIIyjHSj569/ILCrG/bi+WfGnqYojhNiiWML3AI1VKSp43j1VCO/0CsglfaN26V84U7yPbnoTy0zX6aetF529b6+IGq7Vw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?g0PR0t38zbOtRzBN9wxc6PgXP54y059vEb5yEINk34hJ4DYdF92hRq1U60mv?= =?us-ascii?Q?5qlHGDI6pv4uNp2q3OfXGQyf9XVhz+5BtS69MzMRNW8DP5N/Lfg8nRAvL7yD?= =?us-ascii?Q?vQXZDDQ0rjLWtS5SH48VQ8rIowhtGkNyAZsazLMcot9MMPzDJ+ZiZYJkiDMH?= =?us-ascii?Q?LZFRHapMJ056za7hpkW6m8lHY41i5mgZ+C+CG97ep4B4HSUHMCm5Mgtwi7ii?= =?us-ascii?Q?7vs2u5biU3EaSBESm0S2FvjRlY/f3VrMljvyf04ryUdh6ByAj3I925HT6YQq?= =?us-ascii?Q?xbFUpqOEAWdTCbX4pGbrOLB1/7EiROp9+xILj8BBDCz3/3KEo5WPqps0ipQc?= =?us-ascii?Q?oamsyO7Rp5SbxzP3U0ZtHjZfvfhRHIitkDn5hMA13Jl8IRNBNiV1RX7US8F0?= =?us-ascii?Q?Y0QV5wC62ssRTahnDBI/Q077a1DgIGFmcs90gg8Ebzwf/uCUeYuRUztIF7g2?= =?us-ascii?Q?+hsE6FM73JP0Leu7JbFqPTfOu6LAAmoPqps4cpmltLrn0dP7GOSretugoad/?= =?us-ascii?Q?cIbwhc7dAk3Oh4mXiqcBcW+szoJLFT+drqXt/Ne7z4SSYBEUmGr+gbn9G8w4?= =?us-ascii?Q?28vXVxfSwa02IQmmlR6w6WDXQ3iM27A5wGeKkuFCnW2N6qk+XvCObVAgySV2?= =?us-ascii?Q?qiH1fPPLnP+B9lDAgIqWW0TWs13Iliq9iS+yzJ+iZByx3Y26UxR0GFR4ycuL?= =?us-ascii?Q?zqrtWvTGL47DhLkmWP/K0WV7oy2jM/gAhejEC3SlxCyeJMqZSdtaOZj4whFI?= =?us-ascii?Q?YssAS33PzXE7aySRzWsUyEathZ/6tZIy0ZiQ9MUTvqqdwqBgIMlaehROECjd?= =?us-ascii?Q?0RFoPc9XGVmGJkqLH9f3Ya0BOz+oN6OSq+XpuyxxhJdfwFNs8EFEIe+7QWEy?= =?us-ascii?Q?Q4Q8MNmnbrwUNCwcslgyH1Wg7qEp/jzB7rRajn7ZxkJpDNRGjJuwS+L8P964?= =?us-ascii?Q?VQpSN8jBBoZ4ikoPhiwc0jgMa+pqawhk3a+xVKQLeMojuvgOU/9OvykkUFDR?= =?us-ascii?Q?Uxq+sF0vBjPgUgBZea33GUWWTleyEzr2STj2A8x2aO8mVIFBDYyxkxZsOnkI?= =?us-ascii?Q?J+MydLT3WMOBorU1gzkqNMYgFWEZSrg5mB+IphsjjRSmn3XHHMiq2WcKID8T?= =?us-ascii?Q?xmqfyadT3w4OwLxPgE7QuwwZ++R6VaUZvDik1LNoVfAEbaM+NdJ9FuIW4MQm?= =?us-ascii?Q?CTwCJaJn4GbVkRYZKKCOqmQjQcV67M2vV0jdwg5QNeI9YoqdXjamcSg/RPp3?= =?us-ascii?Q?ltJD8vycqz5LmhNr6JAXy25yiNmIsmPxbTBKUSHm4Dy3+2QzwSiuT9Qmk4NI?= =?us-ascii?Q?WBdARix0Qg9VTglV6oBYvPnXIpYMtMTdcHFX5Uw9OICzdA81u+VfScXpJ+FL?= =?us-ascii?Q?u2DJ0pZkDgw93xmueFFYwHPLF1KJOUMw+5LwCFkpoVbyOC2LpEf8a+3xg5ez?= =?us-ascii?Q?FY1+IoqmWub8lL5nKG39vOYVFF1k2SPDQpHe1FulT5akGoHKOH4v0QeqNwHa?= =?us-ascii?Q?vHrS+jiIB5E0CJdNpmZlnSQKWmcn7dkQM5ETPzst/QPFjgfjwxwUxjrUneyZ?= =?us-ascii?Q?D6tvAwONqJciB4GJgTcIXVPbuBNg+l66OpuWqKBN0ZL8prYqSXIC4PUh1vjq?= =?us-ascii?Q?PLtvqZf1PM2PeDgChmO1KV7cRXgj2FpbY79UNfbnMQxBfo2Whq03qqC6+oTi?= =?us-ascii?Q?zsajHuouUtWQumtIS7EWILF5s+DzccYRKFBmHhCca+4cLu2c6aL+nh2t8Yj0?= =?us-ascii?Q?ZctvfOvcFB6Lmakg7xTvhjtDIK/ShNum3YBsPSUGDZ9dcPVC+HK2?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9939af0-b592-4ad2-1eb8-08deb1a9b388 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:35.3992 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FC0fp9Z/fJO9/OB/PjrK3W5bnWbKfQnVeIV2QW3M8ijzzTuoAbzT2JD/sYceaJadaIQvKN3ohieqb0hmRFAZF5xa5Sj7WYT85FBAzIr8YXgJSaYwRX2MCAHrdEyJ2Tse X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Some pinctrl subnodes only need to configure pin properties (e.g., power-source, bias, drive strength) without assigning any mux function. Currently, the driver requires a valid "function" property for all pinctrl subnodes. This forces the addition of dummy or redundant "function" entries when only pin configuration is needed. Example use case: gpios-configs { config { pins =3D <0 1 2 3>; power-source =3D <0>; }; }; Make the "function" property optional. If it is missing, skip adding the mux map and only process the pin configuration. Signed-off-by: Changhuang Liang --- drivers/pinctrl/pinctrl-generic.c | 37 ++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/drivers/pinctrl/pinctrl-generic.c b/drivers/pinctrl/pinctrl-ge= neric.c index efb39c6a6703..c7dd0924aa0e 100644 --- a/drivers/pinctrl/pinctrl-generic.c +++ b/drivers/pinctrl/pinctrl-generic.c @@ -62,19 +62,36 @@ static int pinctrl_generic_pins_function_dt_subnode_to_= map(struct pinctrl_dev *p =20 pins[i] =3D pin; =20 - ret =3D of_property_read_string(np, "function", &functions[i]); - if (ret) - return ret; + if (functions) { + ret =3D of_property_read_string(np, "function", &functions[i]); + if (ret < 0) { + /* EINVAL =3D missing, which is fine since it's optional */ + if (ret !=3D -EINVAL) { + dev_err(dev, "%pOF: could not parse property function\n", + np); + return ret; + } + + devm_kfree(dev, functions); + functions =3D NULL; + + /* Continue parsing all pins */ + continue; + } + } } =20 - ret =3D pinctrl_utils_reserve_map(pctldev, maps, num_reserved_maps, num_m= aps, reserve); - if (ret) - return ret; + if (functions) { + ret =3D pinctrl_utils_reserve_map(pctldev, maps, num_reserved_maps, + num_maps, reserve); + if (ret) + return ret; =20 - ret =3D pinctrl_utils_add_map_mux(pctldev, maps, num_reserved_maps, num_m= aps, group_name, - parent->name); - if (ret < 0) - return ret; + ret =3D pinctrl_utils_add_map_mux(pctldev, maps, num_reserved_maps, + num_maps, group_name, parent->name); + if (ret < 0) + return ret; + } =20 ret =3D pinctrl_generic_add_group(pctldev, group_name, pins, npins, funct= ions); if (ret < 0) --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2096.outbound.protection.partner.outlook.cn [139.219.17.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D9723BF69D; Thu, 14 May 2026 11:28:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.96 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758131; cv=fail; b=pnCRdpliL9hDjuBUFs+di/dezLtxczFF18QWkjsf3SvhzU/9KD1KU3B2dvJL4bZ2It+0zeyeO2cCRXJQ+UD0K+MmRLOYiw8Zjb1UTC3ZacS6QtA2a+PD7kYhoMSoEHeKZ+MZXobnrxCx4uniiSKPLmYeBQUHhsGB55C6BgPitUM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758131; c=relaxed/simple; bh=q4QbNw8GD98e50vvHIDoLrXbx9nHWAu9o3/M+gtM23o=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=CtxhjiqF93K/oF/WLKRiyW1E0IjeHRTnCqotOqmI+MPjmIvOKKzB2YK+9XqthX0c464ZfWFMbabKpgPAQ2islznO8EeDY7ZjJNsRxagUAx1KXuDXt4TJ/1eljhpYJHmEqKvwXL80L5XT9CUczhPCo5XDmzq/KpMdjp+p/tT/p5k= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.17.96 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hRLlPQ5JVLeHprGJfy9CrJ5Rw48ie/YtQWBqpUmu6UvEWuFNTF3zsy2FV00VN2cQYAlFXylAG/iOVS/qq1AcD++mn0g+1NajUMbGY7U2mAlka9BEZykpB5RW0AUNViA8vJo7gDR/qIeaG/nUo0bBCPMCsC2LtWwJgror706zGneXYho+9bgCV4s0WegaMDSPLWs5lI91udiEbUzmlWsyBkbeKLdSX48y+x/W1SWEs7+hR2tE5IdIwyKvEAIaFdle8mUtv4RfmEH6vaX0rcsn0f3QnBjFMjpjZv9+xDVsG3ktX0CxFVmcvOMAd5l7uL0KYaY24hL3Db5X6pcCHg3pBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=LNjZfvzTN9rWPtYcvGwqlDQAc0hM3DIewUD5L1sZ+Qk=; b=aR3/p95JpBO3sLnj6+bLpBk0CCDEAoXbbF1iQt99C33zSUrJ+LLLCm6VHv5hYDzNIjSXIPqk3CjErwE6C5zooNUZfkratUj5CvtrdA9YKmEiqEGX9+xowi6O4asdBAUKZIZEbFDXWAZ3UFqIPyGksQO0MHZ15FNk/3YvrDLa73yFGOu7Xf+DPtkDmjLR90niFacyWYypAqU61EYTktC1/0zl44WEFokkdqZBGlFuKxrq4/ylSeNcPXewoUcXQ1Paesim5HFxDM8twpxwNX8XBBHjywiMFCA/ZmMK/ldLLcWyKJ0pNGoQ7RXFiycXs3PinP7skfuMyeX7Tcf75cH9/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:36 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:36 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 04/22] dt-bindings: pinctrl: Add starfive,jhb100-sys0-pinctrl Date: Thu, 14 May 2026 04:12:00 -0700 Message-Id: <20260514111218.94519-5-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: c7e3034f-b89e-4a6f-cfdf-08deb1a9b42b X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: rcyr7SWmLlaOxKj7y2cnwOJFvzBdS+iNGFAya80vpblWH3gwkvdyS3wtwlCnIRZTGu2u+kWsvkd+U21HpZtTE28xiR40T72U9N1uUXzdIOg1sJdZ9Ke2hFQGxBHhstZMpqo35MnqZLOHTXj6kicibRUWbU287MyB7ngYlHNxy96LxF15txRtETj6E7vFNqk5n/U4jr2b0G0KCc5IonoBf3iXGEc5fxo+BulwND1+nSnaLq0p7mrJexxEwtBUAz8lTgvfjAFfTCQ+ATf0SES5hiY4t79Z0Am5QYbiaDIxaZLOGkwdcVhfG1ftP3nR4xP9zrIaYCpbENTd75gk7n2nLIOH4TBxUTWdqgjndVWpRYjuwXee3hJRU4sVFPgooLcvJFkrwdpv8LSZQWe60G39xd8E7/ivmarpU5gFOh/oGkydRLRv6EKxMHvRGufAJ/De5ttXww+sxECw3AmXwHvlHN3fHLU0MJtJUds3IkYBc1BbSgraP6CV8jZ0Qsnfi063GOR379CarKPhK0Ndk56ipL/mPcE9QcUtuhsolqU2DHWzyStK9rpaOZ1luyqgDrgtgrdEIRaRlQ2XXUKZJjN9Bw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4u8b3D+H5h6xCJEizbkJ/ONLSSl5zTgMTlXXO5Mf5mv4PtS7IZR8XlQfiprh?= =?us-ascii?Q?IrvtduM31SlZ3L6t0fPKFlZBBOAK12bm0oS/13E0watXCCaQa4NtvYskh/o1?= =?us-ascii?Q?wN3Ek2bL0EXkqAXt9kthYTNFaX1fGUIJz//nyKFBZHl3/b1UMrYfEDxGNshi?= =?us-ascii?Q?ormEY016Ko1WWlSz0DO0YuA/fHmMwAZkwFh8dDztJknuUNHB2C2NFQrEgUOj?= =?us-ascii?Q?BSt0wrD1uBcfrEjtV78BWkDDUiq3eM0Lun6ZXEVTAtV2USV5UMRlNKmwNs5O?= =?us-ascii?Q?9TuhNyz3zF6aTvCkdXGqPV2Vi/GDERqpj2qUcpler1gC5EJ/McK0QCk3M1jC?= =?us-ascii?Q?VOUeURgXU0m83n0BdLuVcrLcqsJOqfpr7tqR1LgWNilE/3c/k3yRGYRE3EYr?= =?us-ascii?Q?am8TL80yeiitOunTvfJXS+YzmEZDsFBd/QJNHLmm8drJjkdVPrE3VXjVtcKc?= =?us-ascii?Q?H7AK3L8CifCbHw//n9C4yg7DOPGExNIc2fEGpvHk1L1as1RLY+9d69P1bdy+?= =?us-ascii?Q?QlIx4UoY76OblLL110yAiFD0oSDY3B/P09jAmxW4mGGnQG6duVtlRQmdFveh?= =?us-ascii?Q?Ntra3siBolCA/jBNQDBdVyKdcTqFHotz8Qy7uUmXRKZICIo3dQum3gt/y4zZ?= =?us-ascii?Q?4SoxOD/dER35jXk8LehT2GNBj+f1MqsCPXb9Inh3bE0O8HyDA/MyoORYAqUK?= =?us-ascii?Q?2Sl+t8F4dMvk/fbErScr3GKnQUaQc2YKZov0R620rQhut4POoPglRMOep1C2?= =?us-ascii?Q?Mhql5MbJNwg/l1elE0UyfeHNkAdO/tupE57SkrGsiPjiCXt9uW0oEVIehFpJ?= =?us-ascii?Q?/Je7RWQUvCXkJNhq/jghl3hdTuSda5ppEALSQSE10oXt4RbuU3Ut3mtCOcon?= =?us-ascii?Q?mQLPFmm30nUoe+buGxAmOZon1A2gn4zM067TxCqfHM/MYP24r/7H7hG9FzvP?= =?us-ascii?Q?vUZqDAS4DT6pGxYjBlGUH6V7V0XX6ZCafoIK5RZEJWPcriYwNLTTFphk+QjI?= =?us-ascii?Q?X1JmUjEMdN+NE0Zkkl4BNHnjcXAzLQr0Lfc44f8KjO/KvulMVnaiJGxMBwZ1?= =?us-ascii?Q?KV8WZf45PDtotSdHrnECVxfh1G3YOYfnhxRkw3QO0qsLmZUj+MfHBAZL4mx9?= =?us-ascii?Q?n3KPyztzVsqRMwNeVGRlEBMMjeeIkaBzHsbsm0sRyruKaHwxAmrqkJsHLxBm?= =?us-ascii?Q?3ziGTDtQiuEuTaC6R0qcLPk4z8++OX6Pt0nxHMraLCSzS0Q9wN78ubltXg/Y?= =?us-ascii?Q?Fgku4RwfsvbYaU+iM1BBdPBDn56t8BXpzM1F4eodZ+XocYj/IYhwCpq1ubLG?= =?us-ascii?Q?t2pDltz208VKV7qZLBq8bQcC0CdpVPbrqrGkCuEgp80IP3os2w6/of8pOw4l?= =?us-ascii?Q?TKE9amGvrM8+t8wIQef22VT7hpiveyM3nEdmBc8jIY1KPHjEOEXKn7agOVG1?= =?us-ascii?Q?CmER4Nuu8nBLGCbH2BExJDEvyYY+Mx88q64OU5zIp1nbMNb9pXE/FOx17MqV?= =?us-ascii?Q?YexR/HePmuSMjSVpLXkAjdLIT4RmKs8Kq/4cJ7HkgHDECbO9JyxgPk+bIyzz?= =?us-ascii?Q?0NKObz/qgsKaT800hc33In8KW4ZRmOd8DBO8UVa40oEQWXuc/RYycZoWRMeA?= =?us-ascii?Q?JqcBHR6oQys/F4OIsQArrsxQESqJCybAkQBHRtigPGrELv4gJuFQSKO1xWiC?= =?us-ascii?Q?DgWvyHFw82wjfzh+D96GHQuVUWTRXkz1R6Eh7ZKOfNhKQEg/OcpMlhD+hMTe?= =?us-ascii?Q?6cAWnWKiMjlf4VRJo7XtRsyWMRIaWA5uu/x2UYM/5ufnvd3Peixb?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: c7e3034f-b89e-4a6f-cfdf-08deb1a9b42b X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:36.4697 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: c21vHba/K59TNC++u7gWEbCvR/Sickhq0Q2TjPbUWxvUOwkIZDC9toWSr/0b+h/FYNUsJ3EG2aUpvgO9hXz5nmHu53ms4EngvbWjDSaFHvbv6sHTihG4qY1jMbhM7Ky3 X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl bindings for StarFive JHB100 SoC System-0(sys0) pinctrl controller. Signed-off-by: Changhuang Liang --- .../pinctrl/starfive,jhb100-sys0-pinctrl.yaml | 175 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 17 ++ 2 files changed, 192 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb1= 00-sys0-pinctrl.yaml create mode 100644 include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h diff --git a/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys0= -pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-s= ys0-pinctrl.yaml new file mode 100644 index 000000000000..21d3693587fd --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys0-pinctr= l.yaml @@ -0,0 +1,175 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jhb100-sys0-pinctrl.ya= ml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JHB100 System-0 Pin Controller + +description: | + Pinctrl bindings for JHB100 RISC-V SoC from StarFive Technology Ltd. + + The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, p= er1, + per2, per2pok, per3, adc0, adc1, emmc, and vga. + This document provides an overview of the "sys0" pinctrl domain. + + The "sys0" domain has a pin controller which provides + - function selection for GPIO pads. + - GPIO pad configuration. + - GPIO interrupt handling. + + In the SYS0 Pin Controller, there are 4 multi-function GPIO_PADs. Each of + them can be multiplexed to different hardware blocks through function + selection and each iopad has a maximum of up to 2 functions - 0 and 1. + Function 0 is the default function which is generally the GPIO function + (or occasionally, it can be a peripheral signal). + Function 1 is the alternate function or peripheral signal that can be + routed to the iopad. The function selection is carried out by writing + the function number to the iopad function select register. + + Each iopad is configurable with parameters such as input-enable, internal + pull-up/pull-down bias, drive strength, schmitt trigger, slew rate, inp= ut + debounce nanoseconds, power source and drive type (open-drain or push-p= ull). + +maintainers: + - Alex Soo + +properties: + compatible: + items: + - const: starfive,jhb100-sys0-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 3 + + gpio-controller: true + + '#gpio-cells': + const: 3 + + gpio-ranges: true + + gpio-line-names: true + +patternProperties: + '-grp$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing = the + pinctrl groups available in the domain. Each subnode will list t= he + pins it needs, and how they should be configured, with regard to + function selection, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate, input debounce nanoseconds, + drive-open-drain, drive-push-pull, power-source and drive-streng= th. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + unevaluatedProperties: false + + properties: + pins: + description: + The list of IOs that properties in the pincfg node apply to. + + function: + description: + A string containing the name of the function to mux for these + pins. + enum: [ auxpwrgood, gpio, hbled, pe2rst_out ] + + bias-disable: true + + bias-pull-down: + type: boolean + + bias-pull-up: + oneOf: + - type: boolean + - enum: [ 600, 900, 1200, 2000 ] + description: Pull up RSEL type resistance values (in ohms) + description: + For normal pull up type there is no need to specify a resist= ance + value, hence this can be specified as a boolean property. + For RSEL pull up type a resistance value (in ohms) can be ad= ded. + + drive-open-drain: true + + drive-push-pull: true + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-nanoseconds: + minimum: 0 + maximum: 4294967295 + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 0, 1, 2 ] + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow (half frequency) + 1: fast + +required: + - compatible + - reg + - resets + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + - gpio-ranges + +additionalProperties: false + +examples: + - | + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + pinctrl_sys0: pinctrl@13080000 { + compatible =3D "starfive,jhb100-sys0-pinctrl"; + reg =3D <0x0 0x13080000 0x0 0x800>; + resets =3D <&sys0crg 2>; + interrupts =3D <56>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_sys0 0 0 0 4>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h new file mode 100644 index 000000000000..6d8f5516a178 --- /dev/null +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * + * Author: Changhuang Liang + */ + +#ifndef __DT_BINDINGS_PINCTRL_STARFIVE_JHB100_H__ +#define __DT_BINDINGS_PINCTRL_STARFIVE_JHB100_H__ + +/* sys0 pad numbers */ +#define PADNUM_SYS0_GPIO_A0 0 +#define PADNUM_SYS0_GPIO_A1 1 +#define PADNUM_SYS0_GPIO_A2 2 +#define PADNUM_SYS0_GPIO_A3 3 + +#endif --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2106.outbound.protection.partner.outlook.cn [139.219.17.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AAEBD38B15B; Thu, 14 May 2026 11:27:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.106 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758029; cv=fail; b=qsFIWSnhbeSZZKC/HGMZ3SeiA1VQsg4fezq83gI+iNhFt0IoRTMSXOR7q/FShFgeNIwJ8ifdRuBMmrvTUDMhuSLajvStBVsYnVCk2zcm4Css4YqSDu5Pib8oMOheimBfLA2cUZH/C6iSIbWGzOipzDfdTNkictCj4tZZVmOvduA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758029; c=relaxed/simple; bh=054Y7W0UnUZRszGt4ls6M9QrWTVYlI5pQior/cRFg8g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=HEiquUu3fXGrGkC26rJN61rDeNaWUe+NGukoCV4EgPiz/laiajUAt49e3huseWe12OkC0wGTfYBYvywbjC+5JBlnqe5gh0spLQy4AvGGbtG+kV22AtCyvenr/yLDSkT3HBlGeBYwDfhv1xnRtXUdhSwuj8gJSjL0K7RluK3gtyo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.17.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TRxCwSD+pwh3GRxeqxsAtStJxkJJRb6LEOMfLH8DmmI/LHB0dAZ9d4QfzfT1kZAa5/YyvHstslWV2IQtVxNiD9bjwVr7UR1sDno0uWUXWIQgdWrprZ1SBXSBn0PaAmV/KSyElDFWqJJ3yesbUuJaZYmvVUIQTFrXqw9ez1/+g5dA5J9xk+gytIcnWvmDdl/RHn9/3KhN9ZJrg1Mbo+JO/RfUInx9piDpPmj0Hi9xiQQ3wTlFZRKKpB0/HGUdlow/WJb1iP9nXdrd5WlQgE0L6BHFqdEO9LZi4fAzHSIWPdzYYODcoxEBQ9D6zUq2d8BT8YjUBlSDyLOqqSFjc+hsTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=+LYl2Vn/1WamAYIJ11ENoJZC9XnYI0KfD7kK5y1N9u8=; b=U9TnWwdekjJuj48aSusBfUhAEZZY+AyleA0waSTndKU3uOus4oaG7M5P56t76qIPACYAEkoVa/WqLUWdii9jqMd58zb4pLDzH54400MIb+1kU0XeORRvDc4lr4d2F8zHeNVAKK33w8eeFauDJBXfPUexOEO2wkyygL6P3ZXW6I/CJVk+J4RqVrjiqzFfD8+d7P2fiIpVqKnWN0Z0srSE+EchtEVesZbWDtrum7AFidJ8QPxIsW/JvGQluKHJwMVklj/YOaNcYzxTZISG1R99DAHCqRlmQBKqjNIwuj2A18iYbnVehrDbGp1jm04MqBtYpD1qc3xaYtkgE8VuWlR16w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:37 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:37 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 05/22] pinctrl: starfive: Add StarFive JHB100 sys0 controller driver Date: Thu, 14 May 2026 04:12:01 -0700 Message-Id: <20260514111218.94519-6-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: dd63519a-4716-4265-a6d1-08deb1a9b4ce X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: UGlb+OwPuMoZB5CKtMzUKWR8ceWMsE1k8xAkgk0jb782rxwV+CIW1WwhDITcXbKe4H9VQkBBzUqBvC8YtpP6W7jnc2HFM3e2821jWnkfYNVINae4q3OAv6Jllt/NHwv+NSEX+NLDAaZVW+ieYBC++AsGRsQHwinhDbb6vdHEARwWYJTbWdm6UtfvoyLqVo5ujX7Qrnia8pRBmJEkMkeyyGwEG6cG+k+pqqEeOb7luYJ5A/ScLVvbVGRcRAnSAtZThzvVZ03zEf6DyZkjTyifpsfUhyoeww1SZfMiWRwt/cjOvxFRe6yR35lK34KdKtmCxtI+mDEsJP1pZiX2gNhHvPoha6RpviB5poPwH2JNx9rGXnzF8S2AAVEr14nU8yWP8eA0XVAkfOgdq/RCDUaKLr7z/T/aYsCjPg+1PcsxQAgHxSrDvkPjz/L0y8KqZ3kyS3O17yrlWjpPlieNnpGROrJ5EN7i+eP1hj7Ufq/6qltQ7t7cio/MqKG+/YokY+bzrN+xUpLvkxghPIh01ezpV9n7obBlqxT1cHi9ZdYK2Vj6ziWGs2wl4oE9iboCpJ8hiaC9vnkjw41oxNucpsqlZw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ifygcMCQAMqNlFr24EvgXz3+xufFWnPujx7QfCiLrCXwlxehYY1v4VYeEZQU?= =?us-ascii?Q?V82qH78woU77J4QDoRG6yRPJl4W83Tq/LYC6T4I+awZg+kuuHDgzawZEXUuV?= =?us-ascii?Q?QRphcrIQGBxLC+yVHk4Le8eEjMlXtzsbKKUDWvdclLVnez7sRgqHrrpxEHU/?= =?us-ascii?Q?afrD/n95QullnNIvhXy615azeQ/cgWo4r2zDnCIPnG5rolhIAWn9qRkvgakb?= =?us-ascii?Q?fukjkphkUW/AfprT1rLZVqXjI5c2zHJn4g8ASunSGgd9uJ+hlpYqA31U2r8+?= =?us-ascii?Q?3z5aIGXvGWNr//uqyBTM/HMJ73gHwfy+d5sPW1kYn9xfenLRWjpkNrgv8t3G?= =?us-ascii?Q?ssUoZzWbLv/01/jwL/KcUSCUVO7Cf8c0M96Kq2DKf62tbQcdVIm+9vHSeQe2?= =?us-ascii?Q?U4l6Ghakjl9IaFAdlBNAt1ervj3e8q9xHF1aJ7K8K+FZ7BxUVtqts11Cq/m4?= =?us-ascii?Q?KSZnnfFYIqzoKiCsEIi/spCT4y7Sojo9tYbeQ4Cjw9e/jA8Juzt/yNCo2yVc?= =?us-ascii?Q?vR+hzZPIcVFUKFxxcqPd8drkuF2t9q268Y2I1n/RjfiW5x1hk6L8qBcy866G?= =?us-ascii?Q?p64UeLbsgTd6UKwrqQokmxDH4egjrOrAbCeeNJCAmtfjBssbF2nSF62XWoJE?= =?us-ascii?Q?jcLg5N7yXDhwR1DmvVb9kFppbqZCiQ79ru36hEobSoH5WV+4XD2/Y/d0TgvV?= =?us-ascii?Q?E95gNQK7OBWoY4bOAtUA/1kJPKtaPmRgfrIHU63EQh5EZa7c5J1qNFX0f77Y?= =?us-ascii?Q?fwiSMX9ucCWN2/9uhkHx8UuCJYbaGpHzveRtynQ70z1UA2FjdTbyKK+y6bhV?= =?us-ascii?Q?+BLOfC5Fcaen33ZRSClF+KhhhB72eccv2DdxfBaIr9GTtIYf9UWYPVDH6jY1?= =?us-ascii?Q?dnxQ2CZODIsXeFXtMCVmFU8Rep5P1fwKIu9YIA/TfTNaUPlwReIJpBuPENJg?= =?us-ascii?Q?r59wdLhhXTpDYXoetc4IlwKvjVka+WYpWfceeNt9vhkQdAxSthHMcdCBJf+/?= =?us-ascii?Q?EG7pZzUWdbWCGU7Ea2KtnJwvsNqIW/+noQtfgPJmHId/ZMYKQr3lLPlTUZbv?= =?us-ascii?Q?EmNOg2oery0ogkdwLCx55Qqeg+rO+zKrjSk/yEY2vp29g5/ceHyWyhzaOL15?= =?us-ascii?Q?bIJdEW06UCUErn3iz23QuQBPcCyX4GWUBnjLsVClMCpw5kR8/pKoU8+nSxw8?= =?us-ascii?Q?ylIG0CiPRPT/Sk5rOLUBCQeiq88uOfc0IpI6C9O/q/vhK/1tdhXGYtVakKSF?= =?us-ascii?Q?UFJS1NkFrr4dPhvhUb9PDFS6q4tNbhpUKCuUqDTcpVbjMZG7I6haTtXVeatJ?= =?us-ascii?Q?pu0rkx2Io9aipGDNwKsDP5Nfijhz5Q79jKjedwEbWSurU30mmP8kUIIVTHrr?= =?us-ascii?Q?4EkLCJlKvYXMf/pXGcw+4xGH/Kp3gBjuJxD7/e6QIqqiaV6dbEGGefpCnocv?= =?us-ascii?Q?FOw0k3ICb3Fri6n6y2ECDqEo6CPEiSJi2C9gJD6LpEszJLQPQpr4TiXF1uVz?= =?us-ascii?Q?R7DxyZWZGL0LAyQlDSIytLCOElp7pZJ+WPAZphcVow4TJs36zXi+/6ML8Xzh?= =?us-ascii?Q?KlaAwYEwj5UDPUXZP0x7vAq4sZWUE/jKavn3JfrVqt9GenAzYAv6TuKQyFCJ?= =?us-ascii?Q?6+lFB24lPHkJ/V9ToxgGitP0KOMOX6WEXXGAOAySji87NtLA5pzG3RrrWyvL?= =?us-ascii?Q?ZW6FgdmnquyZu7qtVpcOiHORAyiCvz5CKuMx2wobWT5d34tlp7yk3yjGsepc?= =?us-ascii?Q?nPuQVdjrHcLB1ZKZPqPQNQQdXAhsL6FIHa1WUKlGhrLyo/qicCcI?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd63519a-4716-4265-a6d1-08deb1a9b4ce X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:37.6408 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /PxShU0dNWoRfefH8SU+EdlOK2o8+mZ8c3SOnINe/xPrnbOT5fwmTqSCI9t7ZGEOYRIW5hQh7Eg2c7L4pGWtrgoJMNTb4JYgM43JDoQPtiExIzAjcbuX2H1pXHI1Ru+L X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl driver for StarFive JHB100 SoC System-0(sys0) pinctrl controller. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Changhuang Liang --- MAINTAINERS | 9 + drivers/pinctrl/starfive/Kconfig | 19 + drivers/pinctrl/starfive/Makefile | 3 + .../starfive/pinctrl-starfive-jhb100-sys0.c | 123 ++ .../starfive/pinctrl-starfive-jhb100.c | 1579 +++++++++++++++++ .../starfive/pinctrl-starfive-jhb100.h | 152 ++ 6 files changed, 1885 insertions(+) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0.c create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100.c create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100.h diff --git a/MAINTAINERS b/MAINTAINERS index 47e4b368347f..f56721b4cbd1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -25607,6 +25607,15 @@ S: Supported F: Documentation/devicetree/bindings/interrupt-controller/starfive,jhb100-= intc.yaml F: drivers/irqchip/irq-starfive-jhb100-intc.c =20 +STARFIVE JHB100 PINCTRL DRIVERS +M: Changhuang Liang +M: Lianfeng Ouyang +L: linux-gpio@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/pinctrl/starfive,jhb1*.yaml +F: drivers/pinctrl/starfive/pinctrl-starfive-jhb1* +F: include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h + STARFIVE JHB100 RESET CONTROLLER DRIVERS M: Changhuang Liang S: Maintained diff --git a/drivers/pinctrl/starfive/Kconfig b/drivers/pinctrl/starfive/Kc= onfig index a9a7cb101684..548a1b133f81 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -47,3 +47,22 @@ config PINCTRL_STARFIVE_JH7110_AON This also provides an interface to the GPIO pins not used by other peripherals supporting inputs, outputs, configuring pull-up/pull-down and interrupts on input changes. + +config PINCTRL_STARFIVE_JHB100 + bool + select GENERIC_PINCTRL + select GPIOLIB + select GPIOLIB_IRQCHIP + select OF_GPIO + +config PINCTRL_STARFIVE_JHB100_SYS0 + tristate "StarFive JHB100 SoC System-0 pinctrl and GPIO driver" + depends on ARCH_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JHB100 + default ARCH_STARFIVE + help + Say yes here to support system-0 pin control on the StarFive JHB100 SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes. diff --git a/drivers/pinctrl/starfive/Makefile b/drivers/pinctrl/starfive/M= akefile index ee0d32d085cb..c0d368f413bc 100644 --- a/drivers/pinctrl/starfive/Makefile +++ b/drivers/pinctrl/starfive/Makefile @@ -5,3 +5,6 @@ obj-$(CONFIG_PINCTRL_STARFIVE_JH7100) +=3D pinctrl-starfive= -jh7100.o obj-$(CONFIG_PINCTRL_STARFIVE_JH7110) +=3D pinctrl-starfive-jh7110.o obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_SYS) +=3D pinctrl-starfive-jh7110-sys= .o obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_AON) +=3D pinctrl-starfive-jh7110-aon= .o + +obj-$(CONFIG_PINCTRL_STARFIVE_JHB100) +=3D pinctrl-starfive-jhb100.o +obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0) +=3D pinctrl-starfive-jhb100-sy= s0.o diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0.c b/driv= ers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0.c new file mode 100644 index 000000000000..d86a82eb5e05 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0.c @@ -0,0 +1,123 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC System-0 domain + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#include +#include +#include + +#include "pinctrl-starfive-jhb100.h" + +static const struct jhb100_pin_layout_desc jhb100_sys0_pl_desc[] =3D { + { .pin_start =3D 0, .pin_cnt =3D 3, .name =3D "gpio", .gpio_func_sel =3D = 0, }, + { .pin_start =3D 3, .pin_cnt =3D 1, .name =3D "bmcpcierp_pe2rst_out", .gp= io_func_sel =3D 1, }, + { .pin_start =3D 4, .pin_cnt =3D 1, .name =3D "testen", .gpio_func_sel = =3D -1, }, + { .pin_start =3D 5, .pin_cnt =3D 1, .name =3D "syspok_in", .gpio_func_sel= =3D -1, }, + { .pin_start =3D 6, .pin_cnt =3D 1, .name =3D "sysrstn_in", .gpio_func_se= l =3D -1, }, + { .pin_start =3D 7, .pin_cnt =3D 1, .name =3D "perstn0_in", .gpio_func_se= l =3D -1, }, + { .pin_start =3D 8, .pin_cnt =3D 1, .name =3D "perstn1_in", .gpio_func_se= l =3D -1, }, + { .pin_start =3D 9, .pin_cnt =3D 1, .name =3D "aprstn_out", .gpio_func_se= l =3D -1, }, + { .pin_start =3D 10, .pin_cnt =3D 1, .name =3D "pcierp_wake", .gpio_func_= sel =3D -1, }, + { 0xff }, +}; + +static struct config_reg_layout_desc jhb100_sys0_pinctrl_crl_desc[] =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 4, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .input_enable =3D { .shift =3D 2, .width =3D 1 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .slew_rate =3D { .shift =3D 5, .width =3D 1 }, + .schmitt_trigger_select =3D { .shift =3D 6, .width =3D 1 }, + .reserved =3D { .shift =3D 7, .width =3D 8 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { + .pin_start =3D 4, + .pin_cnt =3D 5, + .schmitt_trigger_select =3D { .shift =3D 0, .width =3D 1 }, + .reserved =3D { .shift =3D 1, .width =3D 31 }, + }, + { + .pin_start =3D 9, + .pin_cnt =3D 1, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .slew_rate =3D { .shift =3D 2, .width =3D 1 }, + .reserved =3D { .shift =3D 3, .width =3D 29 }, + }, + { + .pin_start =3D 10, + .pin_cnt =3D 1, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .input_enable =3D { .shift =3D 2, .width =3D 1 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .slew_rate =3D { .shift =3D 5, .width =3D 1 }, + .schmitt_trigger_select =3D { .shift =3D 6, .width =3D 1 }, + .reserved =3D { .shift =3D 7, .width =3D 25 }, + }, + { 0xff }, +}; + +struct starfive_pinctrl_regs jhb100_sys0_pinctrl_regs =3D { + .func_sel =3D { .reg =3D 0x44, .width_per_pin =3D 2 }, + .config =3D 0x0c, + .output =3D 0x38, + .output_en =3D 0x3c, + .gpio_status =3D 0x40, + .irq_en =3D 0x48, + .irq_status =3D 0x4c, + .irq_clr =3D 0x50, + .irq_trigger =3D 0x54, + .irq_level =3D 0x58, + .irq_both_edge =3D 0x5c, + .irq_edge =3D 0x60, +}; + +static const struct jhb100_pinctrl_func_maps jhb100_func_maps_sys0[] =3D { + { .func =3D "auxpwrgood", .val =3D 1 }, + { .func =3D "gpio", .val =3D 0, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_PER3_GPIO_E2) }, + { .func =3D "gpio", .val =3D 1, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_PER3_GPIO_E3) }, + { .func =3D "hbled", .val =3D 1 }, + { .func =3D "pe2rst_out", .val =3D 0 }, +}; + +static const struct jhb100_pinctrl_domain_info jhb100_sys0_pinctrl_info = =3D { + .name =3D "jhb100-sys0", + .pl_desc =3D jhb100_sys0_pl_desc, + .crl_desc =3D jhb100_sys0_pinctrl_crl_desc, + .regs =3D &jhb100_sys0_pinctrl_regs, + .fmaps =3D jhb100_func_maps_sys0, + .num_maps =3D ARRAY_SIZE(jhb100_func_maps_sys0), +}; + +static const struct of_device_id jhb100_sys0_pinctrl_of_match[] =3D { + { + .compatible =3D "starfive,jhb100-sys0-pinctrl", + .data =3D &jhb100_sys0_pinctrl_info, + }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jhb100_sys0_pinctrl_of_match); + +static struct platform_driver jhb100_sys0_pinctrl_driver =3D { + .probe =3D jhb100_pinctrl_probe, + .driver =3D { + .name =3D "starfive-jhb100-sys0-pinctrl", + .of_match_table =3D jhb100_sys0_pinctrl_of_match, + }, +}; +module_platform_driver(jhb100_sys0_pinctrl_driver); + +MODULE_DESCRIPTION("Pinctrl driver for StarFive JHB100 SoC System-0 domain= "); +MODULE_AUTHOR("Alex Soo "); +MODULE_LICENSE("GPL"); diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100.c b/drivers/p= inctrl/starfive/pinctrl-starfive-jhb100.c new file mode 100644 index 000000000000..e928cc9e4c80 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100.c @@ -0,0 +1,1579 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "../core.h" +#include "../pinconf.h" +#include "../pinctrl-utils.h" +#include "../pinmux.h" +#include "pinctrl-starfive-jhb100.h" + +#define GPOUT_LOW 0 +#define GPOUT_HIGH 1 + +#define GPOEN_ENABLE 0 +#define GPOEN_DISABLE 1 + +#define JHB100_DEBOUNCE_WIDTH_STAGES_MAX 0x1FFFFU +#define JHB100_DEBOUNCE_WIDTH_STAGE_NS 80 + +/* mode select */ +#define JHB100_PUSH_PULL 0 +#define JHB100_OPEN_DRAIN 1 +#define JHB100_LEGACY_FAST_MODE_PLUS 2 +#define JHB100_LEGACY_FAST_MODE 3 + +/* i2c open-drain pull-up select */ +#define JHB100_I2C_OPEN_DRAIN_PU_600_OHMS 0 +#define JHB100_I2C_OPEN_DRAIN_PU_900_OHMS 1 +#define JHB100_I2C_OPEN_DRAIN_PU_1200_OHMS 2 +#define JHB100_I2C_OPEN_DRAIN_PU_2000_OHMS 3 + +#define JHB100_NR_GPIOS_PER_BANK 32 + +struct field_info { + const char *name; + unsigned int shift; + unsigned int width; + unsigned int end; +}; + +static int jhb100_map_get_func_val(struct jhb100_pinctrl *sfp, const char = *function, + unsigned int pin) +{ + const struct jhb100_pinctrl_func_maps *fmaps =3D sfp->info->fmaps; + size_t num =3D sfp->info->num_maps; + + for (int i =3D 0; i < num; i++) { + if (!strcmp(function, fmaps[i].func)) { + if (!fmaps[i].max_pin) + return fmaps[i].val; + + if (pin < fmaps[i].max_pin) + return fmaps[i].val; + + continue; + } + } + + return -EINVAL; +} + +static struct config_reg_layout_desc *get_crl_desc_by_pin(struct jhb100_pi= nctrl *sfp, + unsigned int pin) +{ + struct config_reg_layout_desc *crl_desc =3D sfp->info->crl_desc; + unsigned int i =3D 0; + + do { + if (pin >=3D crl_desc[i].pin_start && + pin < crl_desc[i].pin_start + crl_desc[i].pin_cnt) + return &crl_desc[i]; + } while (crl_desc[i++].pin_start !=3D 0xff); + + return NULL; +} + +static inline struct jhb100_gpio_bank *jhb100_gc_to_bank(struct gpio_chip = *gc) +{ + return container_of(gc, struct jhb100_gpio_bank, gc); +} + +static unsigned int jhb100_gpio_to_pin(struct gpio_chip *gc, unsigned int = gpio) +{ + struct jhb100_gpio_bank *bank =3D jhb100_gc_to_bank(gc); + + return bank->id * JHB100_NR_GPIOS_PER_BANK + gpio; +} + +static const struct pinctrl_ops jhb100_pinctrl_ops =3D { + .get_groups_count =3D pinctrl_generic_get_group_count, + .get_group_name =3D pinctrl_generic_get_group_name, + .get_group_pins =3D pinctrl_generic_get_group_pins, + .dt_node_to_map =3D pinctrl_generic_pins_function_dt_node_to_map, + .dt_free_map =3D pinctrl_utils_free_map, +}; + +static void jhb100_set_gpioval(struct jhb100_pinctrl *sfp, unsigned int pi= n, + unsigned int val) +{ + const struct jhb100_pinctrl_domain_info *info =3D sfp->info; + unsigned int offset =3D 4 * (pin / 32); + unsigned int shift =3D 1 * (pin % 32); + unsigned int fs_offset =3D 4 * (pin / 16); + unsigned int fs_shift =3D 2 * (pin % 16); + u32 func_sel_mask; + u32 dout, doen, fs; + void __iomem *reg_gpio_o; + void __iomem *reg_gpio_oen; + void __iomem *reg_gpio_func_sel; + unsigned long flags; + + reg_gpio_o =3D sfp->base + info->regs->output + offset; + reg_gpio_oen =3D sfp->base + info->regs->output_en + offset; + reg_gpio_func_sel =3D sfp->base + info->regs->func_sel.reg + fs_offset; + + func_sel_mask =3D GENMASK(info->regs->func_sel.width_per_pin - 1, 0) << f= s_shift; + dout =3D val << shift; + doen =3D 0; + + raw_spin_lock_irqsave(&sfp->lock, flags); + fs =3D readl_relaxed(reg_gpio_func_sel); + if (fs & func_sel_mask) { + fs &=3D ~func_sel_mask; + writel_relaxed(fs, reg_gpio_func_sel); + } + dout |=3D readl_relaxed(reg_gpio_o) & ~BIT(shift); + writel_relaxed(dout, reg_gpio_o); + doen |=3D readl_relaxed(reg_gpio_oen) & ~BIT(shift); + writel_relaxed(doen, reg_gpio_oen); + raw_spin_unlock_irqrestore(&sfp->lock, flags); +} + +static void jhb100_set_function(struct jhb100_pinctrl *sfp, + unsigned int pin, u8 func) +{ + struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + void __iomem *func_sel_reg; + unsigned long flags; + u32 func_sel_mask; + u32 func_sel_val; + unsigned int offset =3D 4 * (pin / (32 / pinctrl_regs->func_sel.width_per= _pin)); + unsigned int shift =3D pinctrl_regs->func_sel.width_per_pin * + (pin % (32 / pinctrl_regs->func_sel.width_per_pin)); + + if (!pinctrl_regs->func_sel.reg || !pinctrl_regs->func_sel.width_per_pin) + return; + + func_sel_reg =3D sfp->base + pinctrl_regs->func_sel.reg + offset; + func_sel_mask =3D GENMASK(pinctrl_regs->func_sel.width_per_pin - 1, 0) <<= shift; + func_sel_val =3D func << shift; + + raw_spin_lock_irqsave(&sfp->lock, flags); + func_sel_val |=3D readl_relaxed(func_sel_reg) & ~func_sel_mask; + writel_relaxed(func_sel_val, func_sel_reg); + raw_spin_unlock_irqrestore(&sfp->lock, flags); +} + +static int jhb100_set_one_pin_mux(struct jhb100_pinctrl *sfp, + unsigned int pin, + u8 func, + int val) +{ + const struct pinctrl_pin_desc *desc =3D &sfp->pins[pin]; + struct device *dev =3D sfp->dev; + s8 gpio_func_sel =3D sfp->gpio_func_sel_arr[pin]; + + jhb100_set_function(sfp, pin, func); + + if (pin < sfp->ngpios && (val =3D=3D 0 || val =3D=3D 1)) { + if (func =3D=3D gpio_func_sel) + jhb100_set_gpioval(sfp, pin, val); + else + dev_err(dev, "pin (%s) is not a GPIO. func=3D%d/%d\n", + desc->name, func, gpio_func_sel); + } + + return 0; +} + +static int jhb100_set_mux(struct pinctrl_dev *pctldev, + unsigned int fsel, unsigned int gsel) +{ + struct jhb100_pinctrl *sfp =3D pinctrl_dev_get_drvdata(pctldev); + const struct group_desc *group; + unsigned int i; + const char **functions; + + group =3D pinctrl_generic_get_group(pctldev, gsel); + if (!group) + return -EINVAL; + + functions =3D group->data; + + for (i =3D 0; i < group->grp.npins; i++) { + int function; + + function =3D jhb100_map_get_func_val(sfp, functions[i], group->grp.pins[= i]); + if (function < 0) { + dev_err(pctldev->dev, "invalid function %s\n", functions[i]); + return function; + } + + jhb100_set_one_pin_mux(sfp, group->grp.pins[i], function, -1); + } + + return 0; +} + +static const struct pinmux_ops jhb100_pinmux_ops =3D { + .get_functions_count =3D pinmux_generic_get_function_count, + .get_function_name =3D pinmux_generic_get_function_name, + .get_function_groups =3D pinmux_generic_get_function_groups, + .set_mux =3D jhb100_set_mux, +}; + +static const u8 jhb100_drive_strength_ma[4] =3D { 2, 4, 8, 12 }; + +static const u8 jhb100_drive_strength_ma_3bit[8] =3D { 2, 5, 8, 10, 14, 16= , 18, 20 }; + +static u32 jhb100_padcfg_ds_to_mA(u32 padcfg) +{ + return jhb100_drive_strength_ma[padcfg]; +} + +static u32 jhb100_padcfg_ds_to_mA_3bit(u32 padcfg) +{ + return jhb100_drive_strength_ma_3bit[padcfg]; +} + +static u32 jhb100_padcfg_ds_to_uA(u32 padcfg) +{ + return (jhb100_drive_strength_ma[padcfg] * 1000); +} + +static u32 jhb100_padcfg_ds_to_uA_3bit(u32 padcfg) +{ + return (jhb100_drive_strength_ma_3bit[padcfg] * 1000); +} + +static u32 jhb100_padcfg_ds_from_mA(u32 v) +{ + int i; + + for (i =3D 0; i < ARRAY_SIZE(jhb100_drive_strength_ma); i++) { + if (v <=3D jhb100_drive_strength_ma[i]) + break; + } + return i; +} + +static u32 jhb100_padcfg_ds_from_mA_3bit(u32 v) +{ + int i; + + for (i =3D 0; i < ARRAY_SIZE(jhb100_drive_strength_ma_3bit); i++) { + if (v <=3D jhb100_drive_strength_ma_3bit[i]) + break; + } + return i; +} + +static u32 jhb100_padcfg_ds_from_uA(u32 v) +{ + /* Convert from uA to mA */ + v /=3D 1000; + + return jhb100_padcfg_ds_from_mA(v); +} + +static u32 jhb100_padcfg_ds_from_uA_3bit(u32 v) +{ + /* Convert from uA to mA */ + v /=3D 1000; + + return jhb100_padcfg_ds_from_mA_3bit(v); +} + +static void jhb100_padcfg_rmw(struct jhb100_pinctrl *sfp, + unsigned int pin, u32 mask, u32 value) +{ + void __iomem *reg; + unsigned int offset; + unsigned long flags; + int padcfg_base; + + padcfg_base =3D sfp->info->regs->config; + + offset =3D 4 * pin; + + reg =3D sfp->base + padcfg_base + offset; + + value &=3D mask; + raw_spin_lock_irqsave(&sfp->lock, flags); + value |=3D readl_relaxed(reg) & ~mask; + writel_relaxed(value, reg); + raw_spin_unlock_irqrestore(&sfp->lock, flags); +} + +static int jhb100_pinconf_get(struct pinctrl_dev *pctldev, + unsigned int pin, unsigned long *config) +{ + struct jhb100_pinctrl *sfp =3D pinctrl_dev_get_drvdata(pctldev); + int param =3D pinconf_to_config_param(*config); + struct device *dev =3D sfp->dev; + struct config_reg_layout_desc *crl_desc; + unsigned int offset; + u32 padcfg, arg; + bool enabled; + int padcfg_base; + + padcfg_base =3D sfp->info->regs->config; + + offset =3D 4 * pin; + + if (pin <=3D sfp->npins) + padcfg =3D readl_relaxed(sfp->base + padcfg_base + offset); + else + return -EINVAL; + + crl_desc =3D get_crl_desc_by_pin(sfp, pin); + if (!crl_desc) { + dev_err(dev, "pin %d can't not found reg layout descriptor\n", pin); + return -EINVAL; + } + + switch (param) { + case PIN_CONFIG_BIAS_DISABLE: + arg =3D 0; + + if (!RL_DESC_SUPPORTED(crl_desc, pull_down) || + !RL_DESC_SUPPORTED(crl_desc, pull_up)) + return -EOPNOTSUPP; + + enabled =3D !(padcfg & (RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up))); + break; + case PIN_CONFIG_BIAS_PULL_DOWN: + arg =3D 1; + + if (!RL_DESC_SUPPORTED(crl_desc, pull_down)) + return -EOPNOTSUPP; + + enabled =3D (padcfg & RL_DESC_GENMASK(crl_desc, pull_down)) + >> RL_DESC_SHIFT(crl_desc, pull_down); + break; + case PIN_CONFIG_BIAS_PULL_UP: + arg =3D 1; + + if (!RL_DESC_SUPPORTED(crl_desc, pull_up)) + return -EOPNOTSUPP; + + enabled =3D (padcfg & RL_DESC_GENMASK(crl_desc, pull_up)) + >> RL_DESC_SHIFT(crl_desc, pull_up); + break; + case PIN_CONFIG_DRIVE_STRENGTH: + enabled =3D true; + + if (RL_DESC_SUPPORTED(crl_desc, drive_strength_2bit)) + arg =3D jhb100_padcfg_ds_to_mA(padcfg << + RL_DESC_SHIFT(crl_desc, + drive_strength_2bit)); + else if (RL_DESC_SUPPORTED(crl_desc, drive_strength_3bit)) + arg =3D jhb100_padcfg_ds_to_mA_3bit(padcfg << + RL_DESC_SHIFT(crl_desc, + drive_strength_3bit)); + else + return -EOPNOTSUPP; + break; + case PIN_CONFIG_DRIVE_STRENGTH_UA: + enabled =3D true; + + if (RL_DESC_SUPPORTED(crl_desc, drive_strength_2bit)) + arg =3D jhb100_padcfg_ds_to_uA(padcfg + << RL_DESC_SHIFT(crl_desc, drive_strength_2bit)); + else if (RL_DESC_SUPPORTED(crl_desc, drive_strength_3bit)) + arg =3D jhb100_padcfg_ds_to_uA_3bit(padcfg + << RL_DESC_SHIFT(crl_desc, drive_strength_3bit)); + else + return -EOPNOTSUPP; + break; + case PIN_CONFIG_INPUT_ENABLE: + if (!RL_DESC_SUPPORTED(crl_desc, input_enable)) + return -EOPNOTSUPP; + + enabled =3D (padcfg & RL_DESC_GENMASK(crl_desc, input_enable)) + >> RL_DESC_SHIFT(crl_desc, input_enable); + arg =3D enabled; + break; + case PIN_CONFIG_INPUT_SCHMITT_ENABLE: + if (!RL_DESC_SUPPORTED(crl_desc, schmitt_trigger_select)) + return -EOPNOTSUPP; + + enabled =3D (padcfg & RL_DESC_GENMASK(crl_desc, schmitt_trigger_select)) + >> RL_DESC_SHIFT(crl_desc, schmitt_trigger_select); + arg =3D enabled; + break; + case PIN_CONFIG_SLEW_RATE: + enabled =3D true; + + if (!RL_DESC_SUPPORTED(crl_desc, slew_rate)) + return -EOPNOTSUPP; + + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, slew_rate)) + >> RL_DESC_SHIFT(crl_desc, slew_rate); + break; + default: + return -ENOTSUPP; + } + + *config =3D pinconf_to_config_packed(param, arg); + return enabled ? 0 : -EINVAL; +} + +static int jhb100_pinconf_set(struct pinctrl_dev *pctldev, + unsigned int gpio, unsigned long *config, + unsigned int num_configs) +{ + struct jhb100_pinctrl *sfp =3D pinctrl_dev_get_drvdata(pctldev); + struct device *dev =3D sfp->dev; + struct config_reg_layout_desc *crl_desc; + u32 param; + u32 arg; + u32 value; + u32 mask; + int i; + + crl_desc =3D get_crl_desc_by_pin(sfp, gpio); + if (!crl_desc) { + dev_err(dev, "pin %d can't not found reg layout descriptor\n", gpio); + return -EINVAL; + } + + for (i =3D 0; i < num_configs; i++) { + param =3D pinconf_to_config_param(config[i]); + arg =3D pinconf_to_config_argument(config[i]); + switch (param) { + case PIN_CONFIG_BIAS_DISABLE: + if (!RL_DESC_SUPPORTED(crl_desc, pull_down) || + !RL_DESC_SUPPORTED(crl_desc, pull_up)) + return -EOPNOTSUPP; + + mask =3D RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up); + value =3D 0; + break; + case PIN_CONFIG_BIAS_PULL_DOWN: + if (!RL_DESC_SUPPORTED(crl_desc, pull_down) || + !RL_DESC_SUPPORTED(crl_desc, pull_up)) + return -EOPNOTSUPP; + + mask =3D RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up); + value =3D RL_DESC_GENMASK(crl_desc, pull_down); + break; + case PIN_CONFIG_BIAS_PULL_UP: + if (!RL_DESC_SUPPORTED(crl_desc, pull_down) || + !RL_DESC_SUPPORTED(crl_desc, pull_up)) + return -EOPNOTSUPP; + + mask =3D RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up); + value =3D RL_DESC_GENMASK(crl_desc, pull_up); + break; + case PIN_CONFIG_DRIVE_PUSH_PULL: + return 0; + case PIN_CONFIG_INPUT_ENABLE: + if (!RL_DESC_SUPPORTED(crl_desc, input_enable)) + return -EOPNOTSUPP; + + mask =3D RL_DESC_GENMASK(crl_desc, input_enable); + value =3D arg ? RL_DESC_GENMASK(crl_desc, input_enable) : 0; + break; + case PIN_CONFIG_INPUT_SCHMITT_ENABLE: + if (!RL_DESC_SUPPORTED(crl_desc, schmitt_trigger_select)) + return -EOPNOTSUPP; + + mask =3D RL_DESC_GENMASK(crl_desc, schmitt_trigger_select); + value =3D arg ? RL_DESC_GENMASK(crl_desc, schmitt_trigger_select) : 0; + break; + case PIN_CONFIG_INPUT_DEBOUNCE_NS: + u32 debounce_stage; + + if (!RL_DESC_SUPPORTED(crl_desc, debounce_width)) + return -EOPNOTSUPP; + + mask =3D RL_DESC_GENMASK(crl_desc, debounce_width); + + debounce_stage =3D arg ? arg / JHB100_DEBOUNCE_WIDTH_STAGE_NS : 0; + debounce_stage =3D umin(debounce_stage, JHB100_DEBOUNCE_WIDTH_STAGES_MA= X); + + value =3D (debounce_stage << RL_DESC_SHIFT(crl_desc, debounce_width)); + break; + case PIN_CONFIG_POWER_SOURCE: + if (!RL_DESC_SUPPORTED(crl_desc, vsel)) + return -EOPNOTSUPP; + + mask =3D RL_DESC_GENMASK(crl_desc, vsel); + value =3D arg ? arg << RL_DESC_SHIFT(crl_desc, vsel) : 0; + break; + default: + return -ENOTSUPP; + } + + jhb100_padcfg_rmw(sfp, gpio, mask, value); + } + + return 0; +} + +static int jhb100_pinconf_group_get(struct pinctrl_dev *pctldev, + unsigned int gsel, + unsigned long *config) +{ + const struct group_desc *group; + + group =3D pinctrl_generic_get_group(pctldev, gsel); + if (!group) + return -EINVAL; + + return jhb100_pinconf_get(pctldev, group->grp.pins[0], config); +} + +static int jhb100_pincfg_group_vref(const struct group_desc *group, struct= jhb100_pinctrl *sfp, + u32 arg) +{ + struct pinvref_reg *vref =3D &sfp->info->regs->vref; + u32 i =3D 0, pin; + + while (vref->pv_desc[i].name) { + if (!strstr(group->grp.name, vref->pv_desc[i].name)) { + i++; + continue; + } + + if (group->grp.npins !=3D vref->pv_desc[i].num_pins) + return -EOPNOTSUPP; + + for (pin =3D 0; pin < group->grp.npins; pin++) { + if (group->grp.pins[pin] !=3D vref->pv_desc[i].pin_grp[pin]) + return -EOPNOTSUPP; + } + + if (vref->pv_desc[pin].range & BIT(arg)) + writel(arg, sfp->base + vref->reg + i * 4); + + break; + } + + return 0; +} + +static int jhb100_pinconf_group_set(struct pinctrl_dev *pctldev, + unsigned int gsel, + unsigned long *configs, + unsigned int num_configs) +{ + struct jhb100_pinctrl *sfp =3D pinctrl_dev_get_drvdata(pctldev); + struct device *dev =3D sfp->dev; + struct config_reg_layout_desc *crl_desc; + const struct group_desc *group; + u32 mask, value; + int i; + + group =3D pinctrl_generic_get_group(pctldev, gsel); + if (!group) + return -EINVAL; + + mask =3D 0; + value =3D 0; + for (i =3D 0; i < num_configs; i++) { + int param =3D pinconf_to_config_param(configs[i]); + u32 arg =3D pinconf_to_config_argument(configs[i]); + + crl_desc =3D get_crl_desc_by_pin(sfp, group->grp.pins[0]); + if (!crl_desc) { + dev_err(dev, "pin %d can't not found reg layout descriptor\n", + group->grp.pins[i]); + return -EINVAL; + } + + switch (param) { + case PIN_CONFIG_BIAS_DISABLE: + if (!RL_DESC_SUPPORTED(crl_desc, pull_down) || + !RL_DESC_SUPPORTED(crl_desc, pull_up)) + return -EOPNOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up); + value &=3D ~(RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up)); + break; + case PIN_CONFIG_BIAS_PULL_DOWN: + if (!arg || !RL_DESC_SUPPORTED(crl_desc, pull_down) || + !RL_DESC_SUPPORTED(crl_desc, pull_up)) + return -EOPNOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up); + value &=3D ~(RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up)); + value |=3D RL_DESC_GENMASK(crl_desc, pull_down); + break; + case PIN_CONFIG_BIAS_PULL_UP: + if (!arg || !RL_DESC_SUPPORTED(crl_desc, pull_down) || + !RL_DESC_SUPPORTED(crl_desc, pull_up) || + !RL_DESC_SUPPORTED(crl_desc, open_drain_pull_up_sel)) + return -EOPNOTSUPP; + + if (RL_DESC_SUPPORTED(crl_desc, pull_up)) { + mask |=3D RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up); + value &=3D ~(RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up)); + value |=3D RL_DESC_GENMASK(crl_desc, pull_up); + } else if (RL_DESC_SUPPORTED(crl_desc, open_drain_pull_up_sel)) { + mask |=3D RL_DESC_GENMASK(crl_desc, open_drain_pull_up_sel); + value &=3D ~RL_DESC_GENMASK(crl_desc, open_drain_pull_up_sel); + switch (arg) { + case 600: + value |=3D JHB100_I2C_OPEN_DRAIN_PU_600_OHMS << + RL_DESC_SHIFT(crl_desc, open_drain_pull_up_sel); + break; + case 900: + value |=3D JHB100_I2C_OPEN_DRAIN_PU_900_OHMS << + RL_DESC_SHIFT(crl_desc, open_drain_pull_up_sel); + break; + case 1200: + value |=3D JHB100_I2C_OPEN_DRAIN_PU_1200_OHMS << + RL_DESC_SHIFT(crl_desc, open_drain_pull_up_sel); + break; + case 2000: + value |=3D JHB100_I2C_OPEN_DRAIN_PU_2000_OHMS << + RL_DESC_SHIFT(crl_desc, open_drain_pull_up_sel); + break; + default: + return -EOPNOTSUPP; + } + } else { + return -EOPNOTSUPP; + } + + break; + case PIN_CONFIG_DRIVE_STRENGTH: + if (RL_DESC_SUPPORTED(crl_desc, drive_strength_2bit)) { + mask |=3D RL_DESC_GENMASK(crl_desc, drive_strength_2bit); + value &=3D ~RL_DESC_GENMASK(crl_desc, drive_strength_2bit); + value |=3D jhb100_padcfg_ds_from_mA(arg) << + RL_DESC_SHIFT(crl_desc, drive_strength_2bit); + } else if (RL_DESC_SUPPORTED(crl_desc, drive_strength_3bit)) { + mask |=3D RL_DESC_GENMASK(crl_desc, drive_strength_3bit); + value &=3D ~RL_DESC_GENMASK(crl_desc, drive_strength_3bit); + value |=3D jhb100_padcfg_ds_from_mA_3bit(arg) << + RL_DESC_SHIFT(crl_desc, drive_strength_3bit); + } else { + return -EOPNOTSUPP; + } + break; + case PIN_CONFIG_DRIVE_STRENGTH_UA: + if (RL_DESC_SUPPORTED(crl_desc, drive_strength_2bit)) { + mask |=3D RL_DESC_GENMASK(crl_desc, drive_strength_2bit); + value &=3D ~RL_DESC_GENMASK(crl_desc, drive_strength_2bit); + value |=3D jhb100_padcfg_ds_from_uA(arg) << + RL_DESC_SHIFT(crl_desc, drive_strength_2bit); + } else if (RL_DESC_SUPPORTED(crl_desc, drive_strength_3bit)) { + mask |=3D RL_DESC_GENMASK(crl_desc, drive_strength_3bit); + value &=3D ~RL_DESC_GENMASK(crl_desc, drive_strength_3bit); + value |=3D jhb100_padcfg_ds_from_uA_3bit(arg) << + RL_DESC_SHIFT(crl_desc, drive_strength_3bit); + } else { + return -EOPNOTSUPP; + } + break; + case PIN_CONFIG_INPUT_ENABLE: + if (!RL_DESC_SUPPORTED(crl_desc, input_enable)) + return -EOPNOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, input_enable); + value =3D arg ? (value | RL_DESC_GENMASK(crl_desc, input_enable)) + : value; + break; + case PIN_CONFIG_INPUT_SCHMITT_ENABLE: + if (!RL_DESC_SUPPORTED(crl_desc, schmitt_trigger_select)) + return -EOPNOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, schmitt_trigger_select); + value =3D arg + ? (value | RL_DESC_GENMASK(crl_desc, schmitt_trigger_select)) + : value; + break; + case PIN_CONFIG_SLEW_RATE: + if (RL_DESC_SUPPORTED(crl_desc, slew_rate)) { + mask |=3D RL_DESC_GENMASK(crl_desc, slew_rate); + value =3D arg ? + (value | RL_DESC_GENMASK(crl_desc, slew_rate)) : + value; + } else if (RL_DESC_SUPPORTED(crl_desc, mode_select)) { + mask |=3D RL_DESC_GENMASK(crl_desc, mode_select); + value &=3D ~RL_DESC_GENMASK(crl_desc, mode_select); + value |=3D arg ? + JHB100_LEGACY_FAST_MODE_PLUS << + RL_DESC_SHIFT(crl_desc, mode_select) : + JHB100_LEGACY_FAST_MODE << + RL_DESC_SHIFT(crl_desc, mode_select); + } else { + return -EOPNOTSUPP; + } + + break; + case PIN_CONFIG_DRIVE_PUSH_PULL: + if (!RL_DESC_SUPPORTED(crl_desc, mode_select)) + return -EOPNOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, mode_select); + value &=3D ~RL_DESC_GENMASK(crl_desc, mode_select); + value |=3D JHB100_PUSH_PULL << + RL_DESC_SHIFT(crl_desc, mode_select); + break; + case PIN_CONFIG_DRIVE_OPEN_DRAIN: + if (!RL_DESC_SUPPORTED(crl_desc, mode_select)) + return -EOPNOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, mode_select); + value &=3D ~RL_DESC_GENMASK(crl_desc, mode_select); + value |=3D JHB100_OPEN_DRAIN << + RL_DESC_SHIFT(crl_desc, mode_select); + break; + case PIN_CONFIG_INPUT_DEBOUNCE_NS: + u32 debounce_stage; + + if (!RL_DESC_SUPPORTED(crl_desc, debounce_width)) + return -EOPNOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, debounce_width); + value &=3D ~RL_DESC_GENMASK(crl_desc, debounce_width); + + debounce_stage =3D arg ? arg / JHB100_DEBOUNCE_WIDTH_STAGE_NS : 0; + debounce_stage =3D umin(debounce_stage, JHB100_DEBOUNCE_WIDTH_STAGES_MA= X); + + value |=3D (debounce_stage << RL_DESC_SHIFT(crl_desc, debounce_width)); + + break; + case PIN_CONFIG_POWER_SOURCE: + if (&sfp->info->regs->vref) { + return jhb100_pincfg_group_vref(group, sfp, arg); + } else if (RL_DESC_SUPPORTED(crl_desc, vsel)) { + mask |=3D RL_DESC_GENMASK(crl_desc, vsel); + value &=3D ~RL_DESC_GENMASK(crl_desc, vsel); + value =3D arg ? + (value | (arg << RL_DESC_SHIFT(crl_desc, vsel))) : + value; + } else { + return -EOPNOTSUPP; + } + break; + default: + return -ENOTSUPP; + } + } + + for (i =3D 0; i < group->grp.npins; i++) + jhb100_padcfg_rmw(sfp, group->grp.pins[i], mask, value); + + return 0; +} + +static const struct pinconf_ops jhb100_pinconf_ops =3D { + .pin_config_get =3D jhb100_pinconf_get, + .pin_config_set =3D jhb100_pinconf_set, + .pin_config_group_get =3D jhb100_pinconf_group_get, + .pin_config_group_set =3D jhb100_pinconf_group_set, + .is_generic =3D true, +}; + +static int jhb100_gpio_get_direction(struct gpio_chip *gc, + unsigned int gpio) +{ + struct jhb100_gpio_bank *bank =3D jhb100_gc_to_bank(gc); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct jhb100_pinctrl_domain_info *info =3D sfp->info; + unsigned int offset =3D 4 * bank->id; + u32 doen; + void __iomem *reg_gpio_oen; + + reg_gpio_oen =3D sfp->base + info->regs->output_en + offset; + + doen =3D (readl_relaxed(reg_gpio_oen) & BIT(gpio)) >> gpio; + + return doen =3D=3D GPOEN_ENABLE ? GPIO_LINE_DIRECTION_OUT : GPIO_LINE_DIR= ECTION_IN; +} + +static int jhb100_gpio_direction_input(struct gpio_chip *gc, + unsigned int gpio) +{ + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + struct device *dev =3D sfp->dev; + struct config_reg_layout_desc *crl_desc; + unsigned int pin =3D jhb100_gpio_to_pin(gc, gpio); + + crl_desc =3D get_crl_desc_by_pin(sfp, pin); + if (!crl_desc) { + dev_err(dev, "pin %d can't not found reg layout descriptor\n", + pin); + return -EINVAL; + } + + jhb100_padcfg_rmw(sfp, pin, + RL_DESC_GENMASK(crl_desc, input_enable) | + RL_DESC_GENMASK(crl_desc, schmitt_trigger_select), + RL_DESC_GENMASK(crl_desc, input_enable) | + RL_DESC_GENMASK(crl_desc, schmitt_trigger_select)); + + jhb100_set_one_pin_mux(sfp, pin, 0, -1); + + return 0; +} + +static int jhb100_gpio_direction_output(struct gpio_chip *gc, + unsigned int gpio, int value) +{ + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + struct device *dev =3D sfp->dev; + struct config_reg_layout_desc *crl_desc; + unsigned int pin =3D jhb100_gpio_to_pin(gc, gpio); + + jhb100_set_one_pin_mux(sfp, pin, 0, + value ? GPOUT_HIGH : GPOUT_LOW); + + crl_desc =3D get_crl_desc_by_pin(sfp, pin); + if (!crl_desc) { + dev_err(dev, "pin %d can't not found reg layout descriptor\n", + pin); + return -EINVAL; + } + + jhb100_padcfg_rmw(sfp, pin, + RL_DESC_GENMASK(crl_desc, input_enable) | + RL_DESC_GENMASK(crl_desc, schmitt_trigger_select) | + RL_DESC_GENMASK(crl_desc, pull_down) | + RL_DESC_GENMASK(crl_desc, pull_up), + 0); + + return 0; +} + +static int jhb100_gpio_get(struct gpio_chip *gc, unsigned int gpio) +{ + struct jhb100_gpio_bank *bank =3D jhb100_gc_to_bank(gc); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct jhb100_pinctrl_domain_info *info =3D sfp->info; + unsigned int offset =3D 4 * bank->id; + u32 doen =3D 0; + void __iomem *reg_gpio_oen; + void __iomem *reg; + unsigned long flags; + + reg_gpio_oen =3D sfp->base + info->regs->output_en + offset; + reg =3D sfp->base + info->regs->gpio_status + offset; + + raw_spin_lock_irqsave(&sfp->lock, flags); + doen =3D readl_relaxed(reg_gpio_oen) | BIT(gpio); + writel_relaxed(doen, reg_gpio_oen); + raw_spin_unlock_irqrestore(&sfp->lock, flags); + + return !!(readl_relaxed(reg) & BIT(gpio % 32)); +} + +static int jhb100_gpio_set(struct gpio_chip *gc, unsigned int gpio, int va= lue) +{ + struct jhb100_gpio_bank *bank =3D jhb100_gc_to_bank(gc); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct jhb100_pinctrl_domain_info *info =3D sfp->info; + unsigned int offset =3D 4 * bank->id; + void __iomem *reg_dout; + u32 dout; + unsigned long flags; + + reg_dout =3D sfp->base + info->regs->output + offset; + dout =3D (value ? GPOUT_HIGH : GPOUT_LOW) << gpio; + + raw_spin_lock_irqsave(&sfp->lock, flags); + dout |=3D readl_relaxed(reg_dout) & ~BIT(gpio); + writel_relaxed(dout, reg_dout); + raw_spin_unlock_irqrestore(&sfp->lock, flags); + + return 0; +} + +static void jhb100_irq_ack(struct irq_data *d) +{ + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct jhb100_gpio_bank *bank =3D jhb100_gc_to_bank(gc); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irq_hw_number_t gpio =3D irqd_to_hwirq(d); + unsigned int offset =3D 4 * bank->id; + void __iomem *ic; + unsigned long flags; + u32 value; + u32 mask; + + ic =3D sfp->base + pinctrl_regs->irq_clr + offset; + mask =3D BIT(gpio); + + raw_spin_lock_irqsave(&sfp->lock, flags); + value =3D readl_relaxed(ic) & ~mask; + writel_relaxed(value | mask, ic); + value =3D readl_relaxed(ic) & ~mask; + writel_relaxed(value, ic); + raw_spin_unlock_irqrestore(&sfp->lock, flags); +} + +static void jhb100_irq_mask(struct irq_data *d) +{ + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct jhb100_gpio_bank *bank =3D jhb100_gc_to_bank(gc); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irq_hw_number_t gpio =3D irqd_to_hwirq(d); + unsigned int offset =3D 4 * bank->id; + void __iomem *ien; + unsigned long flags; + u32 value; + u32 mask; + + ien =3D sfp->base + pinctrl_regs->irq_en + offset; + mask =3D BIT(gpio); + + raw_spin_lock_irqsave(&sfp->lock, flags); + value =3D readl_relaxed(ien) & ~mask; + writel_relaxed(value, ien); + raw_spin_unlock_irqrestore(&sfp->lock, flags); + + gpiochip_disable_irq(gc, d->hwirq); +} + +static void jhb100_irq_mask_ack(struct irq_data *d) +{ + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct jhb100_gpio_bank *bank =3D jhb100_gc_to_bank(gc); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irq_hw_number_t gpio =3D irqd_to_hwirq(d); + unsigned int offset =3D 4 * bank->id; + void __iomem *ien; + void __iomem *ic; + unsigned long flags; + u32 value; + u32 mask; + + ien =3D sfp->base + pinctrl_regs->irq_en + offset; + ic =3D sfp->base + pinctrl_regs->irq_clr + offset; + mask =3D BIT(gpio); + + raw_spin_lock_irqsave(&sfp->lock, flags); + value =3D readl_relaxed(ien) & ~mask; + writel_relaxed(value, ien); + + value =3D readl_relaxed(ic) & ~mask; + writel_relaxed(value | mask, ic); + value =3D readl_relaxed(ic) & ~mask; + writel_relaxed(value, ic); + raw_spin_unlock_irqrestore(&sfp->lock, flags); +} + +static void jhb100_irq_unmask(struct irq_data *d) +{ + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct jhb100_gpio_bank *bank =3D jhb100_gc_to_bank(gc); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irq_hw_number_t gpio =3D irqd_to_hwirq(d); + unsigned int offset =3D 4 * bank->id; + void __iomem *ien; + unsigned long flags; + u32 value; + u32 mask; + + ien =3D sfp->base + pinctrl_regs->irq_en + offset; + mask =3D BIT(gpio); + + gpiochip_enable_irq(gc, d->hwirq); + + raw_spin_lock_irqsave(&sfp->lock, flags); + value =3D readl_relaxed(ien) | mask; + writel_relaxed(value, ien); + raw_spin_unlock_irqrestore(&sfp->lock, flags); +} + +static int jhb100_irq_set_type(struct irq_data *d, unsigned int trigger) +{ + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct jhb100_gpio_bank *bank =3D jhb100_gc_to_bank(gc); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irq_hw_number_t gpio =3D irqd_to_hwirq(d); + unsigned int offset =3D 4 * bank->id; + void __iomem *base; + u32 irq_type, edge_both, polarity, mask; + unsigned long flags; + + base =3D sfp->base + offset; + mask =3D BIT(gpio); + + switch (trigger) { + case IRQ_TYPE_EDGE_RISING: + irq_type =3D mask; /* 1: edge triggered */ + edge_both =3D 0; /* 0: single edge */ + polarity =3D mask; /* 1: rising edge */ + break; + case IRQ_TYPE_EDGE_FALLING: + irq_type =3D mask; /* 1: edge triggered */ + edge_both =3D 0; /* 0: single edge */ + polarity =3D 0; /* 0: falling edge */ + break; + case IRQ_TYPE_EDGE_BOTH: + irq_type =3D mask; /* 1: edge triggered */ + edge_both =3D mask; /* 1: both edges */ + polarity =3D 0; /* 0: ignored */ + break; + case IRQ_TYPE_LEVEL_HIGH: + irq_type =3D 0; /* 0: level triggered */ + edge_both =3D 0; /* 0: ignored */ + polarity =3D mask; /* 1: high level */ + break; + case IRQ_TYPE_LEVEL_LOW: + irq_type =3D 0; /* 0: level triggered */ + edge_both =3D 0; /* 0: ignored */ + polarity =3D 0; /* 0: low level */ + break; + default: + return -EINVAL; + } + + if (trigger & IRQ_TYPE_EDGE_BOTH) + irq_set_handler_locked(d, handle_edge_irq); + else + irq_set_handler_locked(d, handle_level_irq); + + raw_spin_lock_irqsave(&sfp->lock, flags); + irq_type |=3D readl_relaxed(base + pinctrl_regs->irq_trigger) & ~mask; + writel_relaxed(irq_type, base + pinctrl_regs->irq_trigger); + + edge_both |=3D readl_relaxed(base + pinctrl_regs->irq_both_edge) & ~mask; + writel_relaxed(edge_both, base + pinctrl_regs->irq_both_edge); + + if (irq_type & mask) { /* edge polarity */ + polarity |=3D readl_relaxed(base + pinctrl_regs->irq_edge) & ~mask; + writel_relaxed(polarity, base + pinctrl_regs->irq_edge); + } else if (irq_type =3D=3D 0) { /* level polarity */ + polarity |=3D readl_relaxed(base + pinctrl_regs->irq_level) & ~mask; + writel_relaxed(polarity, base + pinctrl_regs->irq_level); + } + raw_spin_unlock_irqrestore(&sfp->lock, flags); + return 0; +} + +static int jhb100_irq_set_wake(struct irq_data *d, unsigned int enable) +{ + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + int ret =3D 0; + + if (enable) + ret =3D enable_irq_wake(sfp->wakeup_irq); + else + ret =3D disable_irq_wake(sfp->wakeup_irq); + if (ret) + dev_err(sfp->dev, "failed to %s wake-up interrupt\n", + enable ? "enable" : "disable"); + + return ret; +} + +static void jhb100_irq_print_chip(struct irq_data *d, struct seq_file *p) +{ + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct jhb100_gpio_bank *bank =3D jhb100_gc_to_bank(gc); + + seq_printf(p, "%s-%d", gc->label, bank->id); +} + +static const struct irq_chip jhb100_irq_chip =3D { + .irq_ack =3D jhb100_irq_ack, + .irq_mask =3D jhb100_irq_mask, + .irq_mask_ack =3D jhb100_irq_mask_ack, + .irq_unmask =3D jhb100_irq_unmask, + .irq_set_type =3D jhb100_irq_set_type, + .irq_set_wake =3D jhb100_irq_set_wake, + .irq_print_chip =3D jhb100_irq_print_chip, + .flags =3D IRQCHIP_SET_TYPE_MASKED | + IRQCHIP_IMMUTABLE | + IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND | + IRQCHIP_MASK_ON_SUSPEND | + IRQCHIP_SKIP_SET_WAKE, + GPIOCHIP_IRQ_RESOURCE_HELPERS, +}; + +static irqreturn_t jhb100_gpio_irq_handler(int irq, void *dev_id) +{ + struct jhb100_gpio_bank *bank =3D dev_id; + struct gpio_chip *gc =3D &bank->gc; + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + struct gpio_irq_chip *girq =3D &gc->irq; + struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + unsigned int irq_status =3D pinctrl_regs->irq_status + bank->id * 4; + unsigned long is; + unsigned int gpio; + + is =3D readl_relaxed(sfp->base + irq_status); + if (!is) + return IRQ_NONE; + + for_each_set_bit(gpio, &is, gc->ngpio) + generic_handle_domain_irq(girq->domain, gpio); + + return IRQ_HANDLED; +} + +static int field_compare(const void *a, const void *b) +{ + const struct field_info *fa =3D (const struct field_info *)a; + const struct field_info *fb =3D (const struct field_info *)b; + + if (fa->shift < fb->shift) + return -1; + + if (fa->shift > fb->shift) + return 1; + + return 0; +} + +static int check_crl_desc(struct jhb100_pinctrl *sfp, unsigned int index, + const struct config_reg_layout_desc *desc) +{ + struct device *dev =3D sfp->dev; + struct field_info *fields; + int field_cnt =3D 0; + int num, i; + + num =3D sizeof(struct config_reg_layout_desc) / sizeof(struct reg_layout_= field); + + fields =3D kcalloc(num, sizeof(struct field_info), GFP_KERNEL); + if (!fields) + return -ENOMEM; + + #define COLLECT_FIELD(field) \ + do { \ + if (desc->field.width > 0) { \ + fields[field_cnt].name =3D #field; \ + fields[field_cnt].shift =3D desc->field.shift; \ + fields[field_cnt].width =3D desc->field.width; \ + fields[field_cnt].end =3D desc->field.shift + desc->field.width; \ + field_cnt++; \ + } \ + } while (0) + + /* same as struct config_reg_layout_desc filed except for pin_start and p= in_cnt */ + COLLECT_FIELD(debounce_width); + COLLECT_FIELD(drive_strength_2bit); + COLLECT_FIELD(drive_strength_3bit); + COLLECT_FIELD(function); + COLLECT_FIELD(input_enable); + COLLECT_FIELD(vsel); + COLLECT_FIELD(mode_select); + COLLECT_FIELD(open_drain_pull_up_sel); + COLLECT_FIELD(pull_down); + COLLECT_FIELD(pull_up); + COLLECT_FIELD(reserved); + COLLECT_FIELD(retention_signal_bus); + COLLECT_FIELD(schmitt_trigger_select); + COLLECT_FIELD(slew_rate); + + #undef COLLECT_FIELD + + sort(fields, field_cnt, sizeof(struct field_info), field_compare, NULL); + + for (i =3D 0; i < field_cnt; i++) { + if (fields[i].end > 32) { + dev_err(dev, + "layout %d: field %s exceeds 32bit [shift=3D%u, width=3D%u, end=3D%u]\= n", + index, fields[i].name, + fields[i].shift, fields[i].width, fields[i].end); + goto failed; + } + + if (i < field_cnt - 1) { + if (fields[i].end > fields[i + 1].shift) { + dev_err(dev, + "layout %d: field overlap: %s[%u:%u] with %s[%u:%u]\n", + index, fields[i].name, fields[i].end - 1, + fields[i].shift, fields[i + 1].name, + fields[i + 1].end - 1, fields[i + 1].shift); + goto failed; + } + } + } + + if (desc->reserved.width > 0) { + unsigned int used_mask =3D 0; + unsigned int reserved_mask =3D 0; + + for (i =3D 0; i < field_cnt; i++) { + if (strcmp(fields[i].name, "reserved")) + used_mask |=3D GENMASK(fields[i].end - 1, fields[i].shift); + else + reserved_mask |=3D GENMASK(fields[i].end - 1, fields[i].shift); + } + + if ((used_mask | reserved_mask) !=3D 0xFFFFFFFF) { + dev_err(dev, + "layout %d: reserved field not cover all unused bits\n", + index); + dev_err(dev, + "used mask: 0x%08X, reserved mask: 0x%08X, combined: 0x%08X\n", + used_mask, reserved_mask, used_mask | reserved_mask); + } + } + + kfree(fields); + return 0; + +failed: + kfree(fields); + return -EINVAL; +} + +static int check_layout_pin_range(struct jhb100_pinctrl *sfp, + const struct config_reg_layout_desc *descs, + unsigned int num_desc) +{ + struct device *dev =3D sfp->dev; + + if (descs[num_desc - 1].pin_start + descs[num_desc - 1].pin_cnt > sfp->np= ins) { + dev_err(dev, "layout %u pin_start[%u] + pin_cnt[%u] exceeds pin number[%= u]\n", + num_desc - 1, descs[num_desc - 1].pin_start, + descs[num_desc - 1].pin_cnt, sfp->npins); + return -EINVAL; + } + + for (int i =3D 0; i < num_desc; i++) { + if (descs[i].pin_start =3D=3D 0xff) + break; + + if (i < num_desc - 1) { + if (descs[i].pin_start + descs[i].pin_cnt > descs[i + 1].pin_start) { + dev_err(dev, "pin range: [%u-%u] overlaps with [%u-%u]\n", + descs[i].pin_start, descs[i].pin_cnt, + descs[i + 1].pin_start, descs[i + 1].pin_cnt); + return -EINVAL; + } + + if (descs[i].pin_start + descs[i].pin_cnt < descs[i + 1].pin_start) { + dev_err(dev, "pin range: [%u-%u] -> [%u-%u] has gap\n", + descs[i].pin_start, descs[i].pin_cnt, + descs[i + 1].pin_start, descs[i + 1].pin_cnt); + return -EINVAL; + } + } + } + + return 0; +} + +static int check_pinctrl_layouts(struct jhb100_pinctrl *sfp, + const struct config_reg_layout_desc *layouts) +{ + struct device *dev =3D sfp->dev; + int i =3D 0, err_cnt =3D 0, ret; + + if (!layouts) { + dev_err(dev, "layout pointer is NULL\n"); + return -EINVAL; + } + + while (layouts[i].pin_start !=3D 0xff) { + ret =3D check_crl_desc(sfp, i, &layouts[i]); + if (ret) { + dev_err(dev, "layout %d check failed\n", i); + err_cnt++; + } + + if (++i > 100) { + dev_err(dev, "too many layouts or missing 0xff for end\n"); + return -EINVAL; + } + } + + if (!err_cnt) { + ret =3D check_layout_pin_range(sfp, layouts, i); + if (ret) + err_cnt++; + } + + if (err_cnt) { + dev_err(dev, "pinctrl layout check finish with %d error(s)\n", err_cnt); + return -EINVAL; + } + + dev_info(dev, "pinctrl layout check completed!\n"); + return 0; +} + +static +struct pinctrl_pin_desc *devm_create_pins_from_pld(struct device *dev, + const struct jhb100_pin_layout_desc *desc, + const char *prefix, + unsigned int *total_pins, + unsigned int *total_gpios, + s8 **gpio_func_sel_arr) +{ + struct pinctrl_pin_desc *pins =3D NULL; + unsigned int i, j, ngpios =3D 0, npins =3D 0, pin_index =3D 0; + unsigned int same_name_found =3D 0; + s8 *arr; + + if (!dev || !desc || !prefix) { + dev_err(dev, "Invalid parameters: desc=3D%p, prefix=3D%s\n", + desc, prefix); + return ERR_PTR(-EINVAL); + } + + for (i =3D 0; desc[i].pin_start !=3D 0xff; i++) { + if (!desc[i].pin_cnt) { + dev_err(dev, "Invalid pin cnt\n"); + return ERR_PTR(-EINVAL); + } + + npins +=3D desc[i].pin_cnt; + } + + if (npins =3D=3D 0) { + dev_err(dev, "No pins defined\n"); + return ERR_PTR(-EINVAL); + } + + dev_dbg(dev, "Total pins to create: %d\n", npins); + + pins =3D devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL); + if (!pins) + return ERR_PTR(-ENOMEM); + + arr =3D devm_kzalloc(dev, npins, GFP_KERNEL); + if (!arr) + return ERR_PTR(-ENOMEM); + + for (i =3D 0; desc[i].pin_start !=3D 0xff; i++) { + same_name_found =3D 0; + + for (j =3D 0; j < i; j++) { + if (!strcmp(desc[j].name, desc[i].name)) { + same_name_found =3D 1; + break; + } + } + + for (j =3D 0; j < desc[i].pin_cnt; j++) { + char *name =3D NULL; + int pin_num =3D desc[i].pin_start + j; + + pins[pin_index].number =3D pin_num; + if (same_name_found) { + name =3D devm_kasprintf(dev, GFP_KERNEL, "%s_%s_%d", + prefix, desc[i].name, + desc[i].pin_start + j); + } else { + if (desc[i].pin_cnt > 1) + name =3D devm_kasprintf(dev, GFP_KERNEL, "%s_%s_%d", + prefix, desc[i].name, j); + else + name =3D devm_kasprintf(dev, GFP_KERNEL, "%s_%s", + prefix, desc[i].name); + } + + if (!name) { + dev_err(dev, "Failed to allocate pin name for pin %d\n", + pin_num); + return ERR_PTR(-ENOMEM); + } + + if (!strcmp(desc[i].name, "gpio") || desc[i].gpio_func_sel !=3D -1) + ngpios++; + + pins[pin_index].name =3D name; + arr[pin_index] =3D desc[i].gpio_func_sel; + pin_index++; + } + } + + *total_pins =3D npins; + *total_gpios =3D ngpios; + *gpio_func_sel_arr =3D arr; + + return pins; +} + +static bool starfive_of_node_instance_match(struct gpio_chip *gc, unsigned= int i) +{ + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + + if (i >=3D sfp->num_banks) + return false; + + return (gc =3D=3D &sfp->banks[i].gc); +} + +int jhb100_pinctrl_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct gpio_irq_chip *girq; + const struct jhb100_pinctrl_domain_info *info; + struct jhb100_pinctrl *sfp; + struct pinctrl_desc *jhb100_pinctrl_desc; + struct starfive_pinctrl_regs *pinctrl_regs; + struct reset_control *rst; + struct clk *clk; + int ret; + int irq; + + info =3D of_device_get_match_data(&pdev->dev); + if (!info) + return -ENODEV; + + pinctrl_regs =3D info->regs; + + sfp =3D devm_kzalloc(dev, sizeof(*sfp), GFP_KERNEL); + if (!sfp) + return -ENOMEM; + + sfp->base =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(sfp->base)) + return PTR_ERR(sfp->base); + + clk =3D devm_clk_get_optional_enabled(dev, NULL); + if (IS_ERR(clk)) + return dev_err_probe(dev, PTR_ERR(clk), "could not get & enable clock\n"= ); + + rst =3D devm_reset_control_array_get_optional_shared(dev); + if (IS_ERR(rst)) + return dev_err_probe(dev, PTR_ERR(rst), "could not get reset control\n"); + + /* + * we don't want to assert reset and risk undoing pin muxing for the + * early boot serial console, but let's make sure the reset line is + * deasserted in case someone runs a really minimal bootloader. + */ + ret =3D reset_control_deassert(rst); + if (ret) + return dev_err_probe(dev, ret, "could not deassert reset\n"); + + irq =3D platform_get_irq(pdev, 0); + if (irq < 0) + return irq; + + sfp->pins =3D devm_create_pins_from_pld(dev, info->pl_desc, info->name, + &sfp->npins, &sfp->ngpios, + &sfp->gpio_func_sel_arr); + if (IS_ERR(sfp->pins)) + return PTR_ERR(sfp->pins); + + jhb100_pinctrl_desc =3D devm_kzalloc(&pdev->dev, + sizeof(*jhb100_pinctrl_desc), + GFP_KERNEL); + if (!jhb100_pinctrl_desc) + return -ENOMEM; + + jhb100_pinctrl_desc->name =3D dev_name(dev); + jhb100_pinctrl_desc->pctlops =3D &jhb100_pinctrl_ops; + jhb100_pinctrl_desc->pmxops =3D &jhb100_pinmux_ops; + jhb100_pinctrl_desc->confops =3D &jhb100_pinconf_ops; + jhb100_pinctrl_desc->owner =3D THIS_MODULE; + jhb100_pinctrl_desc->pins =3D sfp->pins; + jhb100_pinctrl_desc->npins =3D sfp->npins; + + sfp->info =3D info; + sfp->dev =3D dev; + platform_set_drvdata(pdev, sfp); + + raw_spin_lock_init(&sfp->lock); + mutex_init(&sfp->mutex); + + ret =3D devm_pinctrl_register_and_init(dev, jhb100_pinctrl_desc, + sfp, &sfp->pctl); + if (ret) + return dev_err_probe(dev, ret, + "could not register pinctrl driver\n"); + + ret =3D pinctrl_enable(sfp->pctl); + if (ret) + return ret; + + sfp->num_banks =3D DIV_ROUND_UP(sfp->ngpios, JHB100_NR_GPIOS_PER_BANK); + + for (unsigned int i =3D 0; i < sfp->num_banks; i++) { + if (sfp->ngpios > (i + 1) * JHB100_NR_GPIOS_PER_BANK) + sfp->banks[i].gc.ngpio =3D (i + 1) * JHB100_NR_GPIOS_PER_BANK; + else + sfp->banks[i].gc.ngpio =3D sfp->ngpios - i * JHB100_NR_GPIOS_PER_BANK; + + sfp->banks[i].id =3D i; + + sfp->banks[i].gc.parent =3D dev; + sfp->banks[i].gc.label =3D dev_name(dev); + sfp->banks[i].gc.owner =3D THIS_MODULE; + sfp->banks[i].gc.request =3D pinctrl_gpio_request; + sfp->banks[i].gc.free =3D pinctrl_gpio_free; + sfp->banks[i].gc.get_direction =3D jhb100_gpio_get_direction; + sfp->banks[i].gc.direction_input =3D jhb100_gpio_direction_input; + sfp->banks[i].gc.direction_output =3D jhb100_gpio_direction_output; + sfp->banks[i].gc.get =3D jhb100_gpio_get; + sfp->banks[i].gc.set =3D jhb100_gpio_set; + sfp->banks[i].gc.set_config =3D gpiochip_generic_config; + sfp->banks[i].gc.base =3D -1; + sfp->banks[i].gc.of_gpio_n_cells =3D 3; + sfp->banks[i].gc.of_node_instance_match =3D starfive_of_node_instance_ma= tch; + + girq =3D &sfp->banks[i].gc.irq; + girq->handler =3D handle_simple_irq; + + gpio_irq_chip_set_chip(girq, &jhb100_irq_chip); + + /* mask all GPIO interrupts */ + writel_relaxed(0U, sfp->base + pinctrl_regs->irq_en + 4 * i); + /* clear all interrupts */ + writel_relaxed(~0U, sfp->base + pinctrl_regs->irq_clr + 4 * i); + writel_relaxed(0U, sfp->base + pinctrl_regs->irq_clr + 4 * i); + + ret =3D devm_request_irq(dev, irq, jhb100_gpio_irq_handler, IRQF_SHARED, + sfp->banks[i].gc.label, &sfp->banks[i]); + if (ret < 0) + return dev_err_probe(dev, ret, "failed to register IRQ\n"); + + ret =3D devm_gpiochip_add_data(dev, &sfp->banks[i].gc, sfp); + if (ret) + return dev_err_probe(dev, ret, "could not register gpiochip\n"); + } + + dev_info(dev, "StarFive JHB100 GPIO chip registered %d GPIOs\n", + sfp->ngpios); + + ret =3D check_pinctrl_layouts(sfp, info->crl_desc); + if (ret) + return ret; + + return 0; +} +EXPORT_SYMBOL_GPL(jhb100_pinctrl_probe); + +MODULE_DESCRIPTION("Pinctrl driver for the StarFive JHB100 SoC"); +MODULE_AUTHOR("Alex Soo "); +MODULE_LICENSE("GPL"); diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100.h b/drivers/p= inctrl/starfive/pinctrl-starfive-jhb100.h new file mode 100644 index 000000000000..0fc45b445c6d --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100.h @@ -0,0 +1,152 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#ifndef __PINCTRL_STARFIVE_JHB100_H__ +#define __PINCTRL_STARFIVE_JHB100_H__ + +#include +#include +#include + +#define JHB100_MAX_BANKS 2 + +struct jhb100_pin_layout_desc { + unsigned int pin_start; + unsigned int pin_cnt; + const char *name; + s8 gpio_func_sel; +}; + +struct jhb100_gpio_bank { + struct gpio_chip gc; + unsigned int id; +}; + +struct jhb100_pinctrl { + struct device *dev; + struct jhb100_gpio_bank banks[JHB100_MAX_BANKS]; + unsigned int num_banks; + struct pinctrl_gpio_range gpios; + raw_spinlock_t lock; + const char *iodomain_name; + void __iomem *base; + struct pinctrl_dev *pctl; + /* register read/write mutex */ + struct mutex mutex; + const struct jhb100_pinctrl_domain_info *info; + /* wakeup */ + int wakeup_irq; + struct irq_domain *irq_domain; + const struct pinctrl_pin_desc *pins; + unsigned int npins; + unsigned int ngpios; + s8 *gpio_func_sel_arr; +}; + +struct pinvref_desc { + const char *name; + unsigned int range; + u32 pin_grp[32]; + u32 num_pins; +}; + +struct pinvref_reg { + unsigned int reg; + const struct pinvref_desc *pv_desc; +}; + +struct gpio_irq_reg { + unsigned int reg; + unsigned int width_per_pin; +}; + +struct starfive_pinctrl_regs { + struct pinvref_reg vref; + struct gpio_irq_reg func_sel; + unsigned int config; + unsigned int output; + unsigned int output_en; + unsigned int gpio_status; + unsigned int irq_en; + unsigned int irq_status; + unsigned int irq_clr; + unsigned int irq_trigger; + unsigned int irq_level; + unsigned int irq_both_edge; + unsigned int irq_edge; +}; + +struct reg_layout_field { + unsigned char shift; + unsigned char width; +}; + +#define RL_DESC_SUPPORTED(crl_desc, field) ({ \ + typeof(crl_desc) _desc =3D (crl_desc); \ + (_desc && _desc->field.width > 0); \ +}) + +#define RL_DESC_SHIFT(crl_desc, field) ({ \ + typeof(crl_desc) __desc =3D (crl_desc); \ + __desc->field.shift; \ +}) + +#define RL_DESC_GENMASK(crl_desc, field) ({ \ + typeof(crl_desc) __desc =3D (crl_desc); \ + RL_DESC_SUPPORTED(__desc, field) ? \ + GENMASK(__desc->field.shift + __desc->field.width - 1, __desc->field.shif= t) : 0; \ +}) + +struct config_reg_layout_desc { + unsigned int pin_start; + unsigned int pin_cnt; + + struct reg_layout_field debounce_width; + struct reg_layout_field drive_strength_2bit; + struct reg_layout_field drive_strength_3bit; + struct reg_layout_field function; + struct reg_layout_field input_enable; + struct reg_layout_field vsel; + struct reg_layout_field mode_select; + struct reg_layout_field open_drain_pull_up_sel; + struct reg_layout_field pull_down; + struct reg_layout_field pull_up; + struct reg_layout_field reserved; + struct reg_layout_field retention_signal_bus; + struct reg_layout_field schmitt_trigger_select; + struct reg_layout_field slew_rate; +}; + +struct funcsel_reg_layout_desc { + unsigned int pin_start; + unsigned int pin_cnt; + unsigned int width; +}; + +#define JHB100_FUNC_MAPS_MAX_PIN(n) ((n) + 1) + +struct jhb100_pinctrl_func_maps { + char *func; + unsigned char val; + u32 max_pin; +}; + +struct jhb100_pinctrl_domain_info { + const char *name; + const struct pinctrl_pin_desc *pins; + const struct jhb100_pin_layout_desc *pl_desc; + const struct jhb100_pinctrl_func_maps *fmaps; + u32 num_maps; + struct config_reg_layout_desc *crl_desc; + struct starfive_pinctrl_regs *regs; +}; + +int jhb100_pinctrl_probe(struct platform_device *pdev); + +#endif /* __PINCTRL_STARFIVE_JHB100_H__ */ --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2134.outbound.protection.partner.outlook.cn [139.219.146.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01D443BFACE; Thu, 14 May 2026 11:12:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757173; cv=fail; b=FvsiHxTK/qDbPhS3DnDIw7bx5Y6Tm36MAfht7nWUHx35MM6Oyto+cygx2ewny1jzHPQvKeVg0fOQI/3iTWvN7JvGf0f1K7u3hh72ob00ATtkbU8b+uVCWOFhqRNOXfs2rtf09hsVmtn5LeP6eCFGEq2bz2HnpBhmCPiH2AAPQxY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757173; c=relaxed/simple; bh=VC6JEyO4fY9t7O/bt0PdYnnXZdw0qYQP02GWUgoEs58=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=OVVd5k0I4edZ/+cyrp/XffANzQ2zQwqa3CoVpk2Z3MuxpSD4a/jWAzzqzFyshcrKFCZIf/TSFq+pvOeUsUHoM21/ppTk8+TAT7qp4OwLLN2zIGlvSp8JkP7aosHIEHZpYk9hjIhYfgh/uqzBn+5BprsI0QE3hNw6DfEHB2TvE20= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lrjwChs57BR+1ap82aJxP73UoRfr2ON66xWPa47ub7hcGr8XFFNUniM1AsIFYO818f6/cr38vn05DyuZOOK0G6BbpzyUxzYcodw8u9aziqHJElIRblDR+KyhfcFcFIRhApagbrZR+CWiOBXl4QULXYTngeq8zJPZZ10lR6Wcc+MEVix4Uib+ert2uk9tg94s3LsrxVLaKjwzuFzenmt5R5odwOsLZldXucXfasVGxR0JbmLO775u39euTzAJ0Id7e/fgxKCQYIG0u6dWoqNupaqgY8vOdfmqWUGJZCCRjBOMmdGObUM3gDbZvQHaSJk8+7Ibk/ICoy+yDZmbEBDMrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=JGa20s0BGR9JxKzc4tqs+isqiS09I+sFe4/JMdE5zm4=; b=kLPM+Nbc880dAZJwgHNdBeVznmLi+kPaHFFF+gufHttW9FB1g5+rPNgw8MWRTDyk0wsvibw/bQI0d595Qtd5QJLjcP3fVmtHJRBMm9+uN/8qrrKrG3U4E8x0h2/v562VVAGud3FAiEI5jxmAgGZuHiYFZkIDnpN87oyhMRyNs31Z5xHyZ2bKs2XFy4TpGoETMxN/HEbZyZwAAEnTMGDE/jScv0JoQRnI/DWLF9WP8IP5M9BpcyI+CNciqQ9GOiIp0C/L3gPE7GhDFJsvATZXnAXgVagBZq5CRKLutSSs6yCGGEwswdQ+x4r0OJgAwXP9vHF36giKDw+iAx7ULUnSxg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:39 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:39 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 06/22] dt-bindings: pinctrl: Add starfive,jhb100-sys0h-pinctrl Date: Thu, 14 May 2026 04:12:02 -0700 Message-Id: <20260514111218.94519-7-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: 618b5080-4869-4497-7562-08deb1a9b59b X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: XKuLGIcaKF7NQo8HO5rEnhdQYpa67h4Gt5+9B4cduxegsfTrPUtYF8//8PV8xlp/B/HwXQwfNk2yX3SvJfDOF5S9j8b2YTd7tgEGD4hBrM8gf/v8AVvqB3d7OH7CAwTUkPpsP1EeEyhUKXdpgO1vka8/zJOpx4hdSmSKQxMFD2f+JlO0tfQprYcDPhj0i58HQJv8gTq4nZyyiUJiogtYFqr2vaNqQfIzqkbYt0ZkZeDj0zBYRh+xe+8NDObYqG0+Xp1EVuP5kIGgL2U51bED8U0uhMYWbkwWfiHMft36ka0WiPx5CJnLt3i8QF4u8HJTkyIgqvzZGXpNjaKn1pX3pD3NgSZhPAOY8QxcPR5xg7sMT6T37R395mI19A3iL4W6LJo9DZPJAYqchco+tybPY65me5SEfecaHDGsZb3UCoFzYAs4J4upP3CiH43zO8mwqjhZUYS1unmIo7RkWTIqAUgXh76myJE8VtI+RYz/BM8SBR4w2Zji3RXjSHwgW0NYIr7cc6YNz3M46Q9dabjv254Bt7xnn6KPSTKFBINZxFzPK50Hth8Wplvb6SOL+jp3kdf8QaU0T8SLppoeXPkgdg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Bc/uzGbTEQNfHDmAhZX0M/hHXvV0FfmRkZnU9Z140mcr5UgApZXSvciJExsJ?= =?us-ascii?Q?D+BabvADXDJYC2CH/jevEV6uO676z2qb/cnObL9rJxO1HwWlES13IJzmy1jH?= =?us-ascii?Q?UqMWwsPdoyQvUvQL/KGO/zgX+O23NAZQ2EOeiDc0O+tRGoiWRE8WlA61Ni4o?= =?us-ascii?Q?Mfa9w8N6LBvZLpJkLNtun+aKP1xnEP8JxDlWU8RDG1MwWrngEGlGZb4WapZZ?= =?us-ascii?Q?R9NtglBfJyz62WR/eJmy+8nPGf9RcOu3cCh1TtNEmCwXR3ztF+HmeYSP9+0c?= =?us-ascii?Q?FBcCTG2aIOrQpGBglY6X3UJAz3Cp4uCNhX7815vYE9z7kofoMBQFO+ic4m4m?= =?us-ascii?Q?XbZZWjvwwK5rxH1EOSOAdQUq1tWjpd6GTCWQZdWxvxRPMaMV2J/40s4dsNIP?= =?us-ascii?Q?NaAcjxi8gCNtWnhkOqbWzaWu1bZ7lI9GirpjE1tmtxF/ldAPGNOTXQcTpfLh?= =?us-ascii?Q?N36DCuV2X38AijK4Pmv7a+GenIKMmA075QfxZLWqvGE/F38Y2VVI6+l2ElYS?= =?us-ascii?Q?g1UfjXDcCDNjAvOOG2GEQcuI02PqfV4QtyW9hiGnQ0As62Haq9bcmULIFtbZ?= =?us-ascii?Q?29jR5/EL73SadZ9zsbAXM7UCllwv94xfCdTZ0lCLLBakA8raFrxPdaeb/9pV?= =?us-ascii?Q?cXvARHu+G4bStTu6UQOuPABNkLD3cqhXRSbp40OJ15KhV1JJ6sfbBt1ALqzp?= =?us-ascii?Q?Vl/tB4AmwDSEkq19wU2k/WpuGy2eyLtHf0Q8XCPvfe9QBdfS55AD5evriWWr?= =?us-ascii?Q?SEgWDBkLxKSMF85PZL8DPe+sO/bxjY1Y4wo+mjN33+Ahkh749jsdSoCSTXZU?= =?us-ascii?Q?LjYT3FPfUXB10mrzGN5gintJuHTMktd9iJL/u/BbKO0bk5VZwYGJ4BSOs0uM?= =?us-ascii?Q?LMhwnbQqGncIg/G1mbV2IWKpB5UXfjpr875hqZtw4pGLgadrtub5OA9TxLJe?= =?us-ascii?Q?jxIC/JsZriuL/Da7aaz2rt3qNAiIhEJ5sc9W2yHCVPFQKtAXX3Xb8QiBvIt5?= =?us-ascii?Q?LIEyE37L7fz9BoCsN/a7LDXxrxAoXi/4AfX8+FFKAsGKHR72tEe4n9bgSvbq?= =?us-ascii?Q?0pSlSxI0cr49mWv/aos+WqYbOd5RFTdz/+4cF/6dmbd04LxNamY67Cezfa1a?= =?us-ascii?Q?hXlU3SsS/khxSsO0xtT6KJH1Ik7IxkuOJRe+2GKdDyrZzT2JFZVS0SVf0A0I?= =?us-ascii?Q?8psSnbiw3mktImn1aQK8PUaLznoDsMWy4U7FZd3yTScBNCOJygvIzebfhMlK?= =?us-ascii?Q?QhKLlk/YXxIjLu9zFgCY4vkR+UZn4oU7mgBxwfA5YTPYKlJwlfeJKwcpXdWy?= =?us-ascii?Q?fmoCAUdf6cjK9A2KPIq8xYdMAZ+73MAA+ZYF6tGD1iU8YqGQDxdnzbKyjt17?= =?us-ascii?Q?jkF0LhI4SSNhR4525adHBtO9/95IRGe6Po1LdMK2Ho9JHw56CsfU4y9bUwLW?= =?us-ascii?Q?z9X7sssrxPxH/csrjaXT3M+VdOIIn8H2lxGHYmSY7PCoxxTTrffFQisFA7SU?= =?us-ascii?Q?9rchCyZPey0wYvB4xhKWYGPpZgB3RbLJw0UIQ83aCPRhFDAGxUfwxEvzQ+6B?= =?us-ascii?Q?kEEwggWfdV+rhdMBHbh4RXb4bvM/E7mYngXJTq6z2vwriXZkSZqdVgcCcTZF?= =?us-ascii?Q?phk942uuD3W3N3Kv8YcT6klzPHF8BAz+5o6gtm1fYQf3kM7oWiAah7QIrYKG?= =?us-ascii?Q?5rmp6jwBABbI8UWNEBAj49E6MjQEx07fPJ4vb826+8yfNRVO+Xli9O1Svi1h?= =?us-ascii?Q?+OLo9f4jZcq6379qB6gZNzezawxZ5SJue76F9c5GV23UfAgHM0MQ?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 618b5080-4869-4497-7562-08deb1a9b59b X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:38.8856 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: DCdN/kxuuEQ3qhIZQuTbb7cbSAg1tFJuoWfIJK2x8KRC5ccQ1z66hyKWySK9jAD502Fk4zcPF+DZwXtkLk8RJyH/lYIBdMhedX70fw6REbsoM/BhViSfl17NaUr+U3yk X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl bindings for StarFive JHB100 SoC System-0 host(sys0h) pinctrl controller. Signed-off-by: Changhuang Liang --- .../starfive,jhb100-sys0h-pinctrl.yaml | 174 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 14 ++ 2 files changed, 188 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb1= 00-sys0h-pinctrl.yaml diff --git a/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys0= h-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-= sys0h-pinctrl.yaml new file mode 100644 index 000000000000..cace3fdd00ec --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys0h-pinct= rl.yaml @@ -0,0 +1,174 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jhb100-sys0h-pinctrl.y= aml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JHB100 System-0 Host Pin Controller + +description: | + Pinctrl bindings for JHB100 RISC-V SoC from StarFive Technology Ltd. + + The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, p= er1, + per2, per2pok, per3, adc0, adc1, emmc, and vga. + This document provides an overview of the "sys0h" pinctrl domain. + + The "sys0h" domain has a pin controller which provides + - function selection for GPIO pads. + - GPIO pad configuration. + - GPIO interrupt handling. + + In the SYS0H Pin Controller, there are 12 multi-function GPIO_PADs. Each= of + them can be multiplexed to different hardware blocks through function + selection. Each iopad has a maximum of up to 3 functions - 0, 1, 2, and = 3. + Function 0 is the default function which is generally the GPIO function + (or occasionally, it can be a peripheral signal). + Functions 1, 2, and 3 are the alternate functions or peripheral signals = that + can be routed to the iopad. The function selection can be carried out by + writing the function number to the iopad function select register. + + Each iopad is configurable with parameters such as input-enable, internal + pull-up/pull-down bias, drive strength, schmitt trigger, slew rate, inp= ut + debounce nanoseconds, power source and drive type (open-drain or push-p= ull). + +maintainers: + - Alex Soo + +properties: + compatible: + items: + - const: starfive,jhb100-sys0h-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 3 + + gpio-controller: true + + '#gpio-cells': + const: 3 + + gpio-ranges: true + + gpio-line-names: true + +patternProperties: + '-grp$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing = the + pinctrl groups available in the domain. Each subnode will list t= he + pins it needs, and how they should be configured, with regard to + function selection, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate, input debounce nanoseconds, + drive-open-drain, drive-push-pull, power-source and drive-streng= th. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + unevaluatedProperties: false + + properties: + pins: + description: + The list of IOs that properties in the pincfg node apply to. + + function: + description: + A string containing the name of the function to mux for these + pins. + enum: [ espi, espi_reset, espi0_vw, espi0_vw1, gpio, scap_trig= ger ] + + bias-disable: true + + bias-pull-down: + type: boolean + + bias-pull-up: + oneOf: + - type: boolean + - enum: [ 600, 900, 1200, 2000 ] + description: Pull up RSEL type resistance values (in ohms) + description: + For normal pull up type there is no need to specify a resist= ance + value, hence this can be specified as a boolean property. + For RSEL pull up type a resistance value (in ohms) can be ad= ded. + + drive-open-drain: true + + drive-push-pull: true + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-nanoseconds: + minimum: 0 + maximum: 4294967295 + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 0, 1, 2 ] + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow (half frequency) + 1: fast +required: + - compatible + - reg + - resets + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + - gpio-ranges + +additionalProperties: false + +examples: + - | + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + pinctrl_sys0h: pinctrl@13080800 { + compatible =3D "starfive,jhb100-sys0h-pinctrl"; + reg =3D <0x0 0x13080800 0x0 0x800>; + resets =3D <&sys0crg 3>; + interrupts =3D <57>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_sys0h 0 0 0 12>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index 6d8f5516a178..38d5a94e92e3 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -14,4 +14,18 @@ #define PADNUM_SYS0_GPIO_A2 2 #define PADNUM_SYS0_GPIO_A3 3 =20 +/* sys0h pad numbers */ +#define PADNUM_SYS0H_GPIO_A4 0 +#define PADNUM_SYS0H_GPIO_A5 1 +#define PADNUM_SYS0H_GPIO_A6 2 +#define PADNUM_SYS0H_GPIO_A7 3 +#define PADNUM_SYS0H_GPIO_A8 4 +#define PADNUM_SYS0H_GPIO_A9 5 +#define PADNUM_SYS0H_GPIO_A10 6 +#define PADNUM_SYS0H_GPIO_A11 7 +#define PADNUM_SYS0H_GPIO_A12 8 +#define PADNUM_SYS0H_GPIO_A13 9 +#define PADNUM_SYS0H_GPIO_A14 10 +#define PADNUM_SYS0H_GPIO_A15 11 + #endif --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2125.outbound.protection.partner.outlook.cn [139.219.146.125]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B36CE3BB69F; Thu, 14 May 2026 11:28:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.125 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758091; cv=fail; b=HnuvQC3v8NME/kBDxLgxTVfslU3Dj391+ElTva0vU2y+uqGfWS1vSfi4Ef9iwqb0w930NrZqrcsaOavT5DxCTsLl9ngGVGyQXwFjxxBvB8iGaYBRaISHpNxOXBJcvqUW18sEHgSWIcUm3E5hHUBpMEdPUR99rGwi/OZbCJqz08w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758091; c=relaxed/simple; bh=md29tVv4vRLLBQsnYuOXar90il4HPZ+i/NrWElOuQWc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=orci2x4s5fHigirsqRIomwLGl2XYOeGaffhpkToJ17UJ5ieECgl8R0N/NZHapCM2fY0w2XGoSHtjwOrIPwDZ0OsO7BNKjrJnpdpmLUE/zpjpwIkLRnQQYUX/abYD4FxNSWl/NtskhC1uHd9l4H0QZDXNNBaeMFvDz006RctQ4m4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.125 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ly5gRABBrLLl3Xgdg+730nwjMjRBZ1w53oQ++nGwqB/XEkFUb4LaGU0CyAnu7ZpesTKhV6uq0KJs7SG880SiV/O4HsP4BDry/TNahUpU3p4Ac2BrvT7TG9XBFlN6aMK0H3UKzCcpAB2JzEfC7WFNXNtaKqSellIWlC8EekzX1kEINvUoPgklmfo3J/uO9SwZNboufuJWGfCqMfBYs5TBNLAS524YYb2u6fKNr1ZOBrtXoOpsAIxeqyNQk47J3LmK0odF4e3uH5Z3ye00RFwQpRnrGMslqu3y6Tdyi7bPKYtaV7t+4urloH7dy8HGml8/JblxP/YMJJW7GI6ujBFUEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=29ZgbLHy/2gAn69JEEWbm0PmDO9AP9/w56jCKRRe/Wc=; b=cybm6aFNJ7FMe0yCDp8ylxw7Q45pwnaXr5I6nWYMh7h+kMXPybnKysBvtfQsvFqIBUPAgurQOc7H86MMJB0cm+hwhel2z4Z0lYn8h1SW/CDSgTlhBczwkZ3c2FHP6oxfY460psr3zM2AdWb/UhYwGXr5C2ijSvDyHswL1tf8Z7uYDrjpF5oLK+eYA4+vgqYuiwM/Za2eYtTnr5r7id+D4VGNjWbcXpF11WLtqTMV4DL+GCshalNEuQHgZ7yssuTR207Jhj80S1TAnUZvsFTjoB0uFhcDOKYTg+R0rpv5AKlVC4Tmgn1fzkl6k/JE+CSpzVxQUJares6piW6dcm0KJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1267.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.12; Thu, 14 May 2026 11:12:40 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:40 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 07/22] pinctrl: starfive: Add StarFive JHB100 sys0h controller driver Date: Thu, 14 May 2026 04:12:03 -0700 Message-Id: <20260514111218.94519-8-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1267:EE_ X-MS-Office365-Filtering-Correlation-Id: 982bd526-5e2a-46ec-77e4-08deb1a9b641 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|52116014|366016|38350700014|921020|18002099003|22082099003|56012099003|3023799003; X-Microsoft-Antispam-Message-Info: BdHCO4IxX5SrGRxEGlM+7kX7sGZvlQsT6nhvA9hiqPsfLpNj87L+dGC/RbSIhr8hyd8FmuZ3jT6w6h8jVtGQfIo/ott+Yu2z/2oCV+UA5FxabAbijziyVpo0VRpoM3K7FYk7zC2Dct5OCaMh3SWVKtBzURN58+MlXQfEJGuWzvBDA/QeccM42veZIXJ6aulTi6J2W1GG/zkyogbmTgeO/bx1qvrLXHva6xKLq7fQj/Rk5rs6rkbQn0n0TsLOr4VcQPB4E9Ybs5q9ABN55ZLZHlf8OkqjYi8anIxxjHtZH4toaURuK1nNwkeJUiECF7aEzwTIUwUF2qcnAMZUQvE3ebMB2V5AHTbiIc1hcDbT3bo39c6PHQCmoFwtn9nhXaemoiZ4aPahhgD5ZOE9FQQG1Yt98D0dH2KWW3jyjilI9vsMbUZbh+Kk7QHotpSGbkesNexpgMDsKDFyqUEVRZz8NAxJBS7vdDePh1/GYKjq0ohIOCI0XABLV2+8Wk1jmzL+A6LSek98q1OSMISXidXrrQL5JM6tvZpyhX+LRl1Z4ksn4Otp3TK6MS5o6o7JYvezOv3kcNmflYx5gFy7lwmKfg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(52116014)(366016)(38350700014)(921020)(18002099003)(22082099003)(56012099003)(3023799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7fK1CP8Syz0d1e3DWlr4KSzKCYrIveIQO+Bdz7Sthg4c9Qf0nEdjURR6JP4m?= =?us-ascii?Q?RDvo0etXvbBMoCvu8ytBpwXzAmY/ycbIJPGPIJPxDQGAqWsMNHB8sdbR/rr0?= =?us-ascii?Q?I4CaNQx+liUwgLnBLjesI8D0tpTkg3FXg/TUgDBFR4vzbb6luJIdXvLMIFSn?= =?us-ascii?Q?pay7Q9WjVYtnZUFai/8txKD5oyaJspFU/UPSN+Wr1laYmFVvGFa9InATZ5j2?= =?us-ascii?Q?lKMGrZNmHKEoQwJxdAyZpVUbDi7qJQEXGDHwwCv+5s9E6cKcBYCkx0Nam36p?= =?us-ascii?Q?Pm2YMhBUSyzFkNUpwt6ah6GWyet2LhUcfavRzPhxNkbfjBfyet/+dpGWs48I?= =?us-ascii?Q?GI4swAo0IK9CBduVaTzFqkMfBJgb3OMOlm+Gms0l+Ya0N0cv3qKNzREcLbXZ?= =?us-ascii?Q?+JqAuEKQtQGSWToe4x7n5QaG83lPA35JSK/4NfFIpyMQ/lv0dhvuJ6nggx+m?= =?us-ascii?Q?jldD9LHzOgBGoORwuAaWRZXzix+D7Z5nSpQ+efUS4VxiE8D94pHIimxfLtOF?= =?us-ascii?Q?XMDPV6OJoQmVLBNRzHJU9oyt8TrkIMyzd/SuIrGPzp6RPl9BMQey5l3za2m7?= =?us-ascii?Q?oRu6ZbnyKwN9UXB6Ejws13zJa8yqzrpCao3RCdPmGxakItzBqtO6jxxSLDlI?= =?us-ascii?Q?MfTI9IzWFiduAtyAF819i/LZZ2IdYCbS90CKsijCkPUpYgbRdVSaBzNpyjM8?= =?us-ascii?Q?2hh/TduqpJI+t2kvNGswvhpCDHk6HiiZASdloncL4HHYbRPF6Q7OKxoX/f/k?= =?us-ascii?Q?kEqEfjliMBxE6DEbXY4u0C/Hox9N1Mbj/LclzjfLuYeY2UZnITIxUs28bB67?= =?us-ascii?Q?Nb+MDjyiQfuCRmtO+Nd4Lt1T3sqA3NS8mBXRs3RvUeWh/9dlhVSygW1ultHp?= =?us-ascii?Q?ZpRyfNbeejC1REy5QzEbGtk2JEK4QYUHPeuX7xGs8HkZj4jpgFXCk5b08lvl?= =?us-ascii?Q?ocs8GmtOH73J4blG4O2Xk6K+tfGr/Lmd4Dw6AuHvDKrTMeSkda4zUuoie9Xb?= =?us-ascii?Q?qgp8di9+h7mABiefCn6D0FClCg59BszKPx4rU0pFOmncKj0gOwInBJoJWqF0?= =?us-ascii?Q?b3/k55s0uiDCOPzHDcPi7TiYCB7lzxy0kIMydvbnL3btDd1fhKfHdz0PpSKm?= =?us-ascii?Q?aUzuy7RMisSOLrmmA7caYu2AOuiPxfQKD5G/MbAo9BmqELB0Ev3nA7MXg76h?= =?us-ascii?Q?NUpD/nq2KUzpvACHzsAGt1AahtSLGS6ysIDE/5BpdGkC+6Zxfndfqk6Ble1p?= =?us-ascii?Q?T6vY4lejLx00baEdYIvLWf392nRQohcHe31iAn+LU+NUC0avWa6xo1oaR0RT?= =?us-ascii?Q?TzhHNMVBo80Vp35XiGLuGIVXxnxt0207+n1l25IrNPe8Zrb9X8x7P5Po1IUF?= =?us-ascii?Q?M81NWJFmWaMF8JEUc1bLBXw6Zc/Acnfk1pw/Bb1chuEmIQXXes2xgC8xAySP?= =?us-ascii?Q?0TUt7Rq0gW463hRWAsSHF54Xk5fOJMuaTx9fiiovQWcak8rXFf0Ue3dBLYX4?= =?us-ascii?Q?ZO1uZAT6/SnbDvxSHIU1vymgpsq3ae0N+NEyTMKiXC207H4oRVo0+pQ6YUT6?= =?us-ascii?Q?qKhMW6oEgHb1OT4dgPrboSmzLVYyGOazoBoEF4aVt3qewwcoWRwMtL+Sso3L?= =?us-ascii?Q?BvfhHix1Kh5JQcQoqfKFb5Uqqb3+aLqotfDqOa1oF43wUOyBg/hSclLvkJER?= =?us-ascii?Q?4JG4g+EDd+MgVPmHQOb0K8KIV+wYphLNAF/C/yL+vrgYYbsQdlhuJ2gJtn8u?= =?us-ascii?Q?mZO7jbUa5qYmKEINOx63DIUfEjUAsjBjrrKavNOZLI893jqzX34K?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 982bd526-5e2a-46ec-77e4-08deb1a9b641 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:39.9729 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Xfikt30SbcQ7WxYpEjzBfoNLwPjgdOaZVzt8Ajh4hpJcz3XhyHtb3MewSLCNAa1bb1SvB95MJyFeD5BnqPiVy/TWasL+lRZqvLrvVAHRcNi5lz5yZTg0QWOLJ8KXh7lz X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1267 Content-Type: text/plain; charset="utf-8" Add pinctrl driver for StarFive JHB100 SoC System-0 Host(sys0h) pinctrl controller. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 12 +++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-sys0h.c | 97 +++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0h.c diff --git a/drivers/pinctrl/starfive/Kconfig b/drivers/pinctrl/starfive/Kc= onfig index 548a1b133f81..1c87f64830ed 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -66,3 +66,15 @@ config PINCTRL_STARFIVE_JHB100_SYS0 This also provides an interface to the GPIO pins not used by other peripherals supporting inputs, outputs, configuring pull-up/pull-down and interrupts on input changes. + +config PINCTRL_STARFIVE_JHB100_SYS0H + tristate "StarFive JHB100 SoC System-0 Host pinctrl and GPIO drive= r" + depends on ARCH_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JHB100 + default ARCH_STARFIVE + help + Say yes here to support System-0 Host pin control on the StarFiv= e JHB100 SoC. + This also provides an interface to the GPIO pins not used by oth= er + peripherals supporting inputs, outputs, configuring pull-up/pull= -down + and interrupts on input changes. diff --git a/drivers/pinctrl/starfive/Makefile b/drivers/pinctrl/starfive/M= akefile index c0d368f413bc..b26156a6d0eb 100644 --- a/drivers/pinctrl/starfive/Makefile +++ b/drivers/pinctrl/starfive/Makefile @@ -8,3 +8,4 @@ obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_AON) +=3D pinctrl-star= five-jh7110-aon.o =20 obj-$(CONFIG_PINCTRL_STARFIVE_JHB100) +=3D pinctrl-starfive-jhb100.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0) +=3D pinctrl-starfive-jhb100-sy= s0.o +obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0H) +=3D pinctrl-starfive-jhb100-s= ys0h.o diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0h.c b/dri= vers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0h.c new file mode 100644 index 000000000000..80dc35321a95 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0h.c @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC System-0 host domain + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#include +#include +#include + +#include "pinctrl-starfive-jhb100.h" + +static const struct jhb100_pin_layout_desc jhb100_sys0h_pl_desc[] =3D { + { .pin_start =3D 0, .pin_cnt =3D 7, .name =3D "gpio", .gpio_func_sel =3D = 0 }, + { .pin_start =3D 7, .pin_cnt =3D 1, .name =3D "espi0_reset", .gpio_func_s= el =3D 1 }, + { .pin_start =3D 8, .pin_cnt =3D 4, .name =3D "gpio", .gpio_func_sel =3D = 0 }, + { 0xff }, +}; + +static struct config_reg_layout_desc jhb100_sys0h_pinctrl_rl_desc[] =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 12, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .input_enable =3D { .shift =3D 2, .width =3D 1 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .slew_rate =3D { .shift =3D 5, .width =3D 1 }, + .schmitt_trigger_select =3D { .shift =3D 6, .width =3D 1 }, + .reserved =3D { .shift =3D 7, .width =3D 8 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +struct starfive_pinctrl_regs jhb100_sys0h_pinctrl_regs =3D { + .func_sel =3D { .reg =3D 0x40, .width_per_pin =3D 2 }, + .config =3D 0x04, + .output =3D 0x34, + .output_en =3D 0x38, + .gpio_status =3D 0x3c, + .irq_en =3D 0x44, + .irq_status =3D 0x48, + .irq_clr =3D 0x4c, + .irq_trigger =3D 0x50, + .irq_level =3D 0x54, + .irq_both_edge =3D 0x58, + .irq_edge =3D 0x5c, +}; + +static const struct jhb100_pinctrl_func_maps jhb100_func_maps_sys0h[] =3D { + { .func =3D "espi", .val =3D 1 }, + { .func =3D "espi_reset", .val =3D 0 }, + { .func =3D "espi0_vw", .val =3D 1 }, + { .func =3D "espi1_vw", .val =3D 2 }, + { .func =3D "gpio", .val =3D 0, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_SYS0H_GPIO_A10) }, + { .func =3D "gpio", .val =3D 1, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_SYS0H_GPIO_A11) }, + { .func =3D "gpio", .val =3D 0, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_SYS0H_GPIO_A15) }, + { .func =3D "scap_trigger", .val =3D 3 }, +}; + +static struct jhb100_pinctrl_domain_info jhb100_sys0h_pinctrl_info =3D { + .name =3D "jhb100-sys0h", + .pl_desc =3D jhb100_sys0h_pl_desc, + .crl_desc =3D jhb100_sys0h_pinctrl_rl_desc, + .regs =3D &jhb100_sys0h_pinctrl_regs, + .fmaps =3D jhb100_func_maps_sys0h, + .num_maps =3D ARRAY_SIZE(jhb100_func_maps_sys0h), +}; + +static const struct of_device_id jhb100_sys0h_pinctrl_of_match[] =3D { + { + .compatible =3D "starfive,jhb100-sys0h-pinctrl", + .data =3D &jhb100_sys0h_pinctrl_info, + }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jhb100_sys0h_pinctrl_of_match); + +static struct platform_driver jhb100_sys0h_pinctrl_driver =3D { + .probe =3D jhb100_pinctrl_probe, + .driver =3D { + .name =3D "starfive-jhb100-sys0h-pinctrl", + .of_match_table =3D jhb100_sys0h_pinctrl_of_match, + }, +}; +module_platform_driver(jhb100_sys0h_pinctrl_driver); + +MODULE_DESCRIPTION("Pinctrl driver for StarFive JHB100 SoC System-0 host d= omain"); +MODULE_AUTHOR("Alex Soo "); +MODULE_LICENSE("GPL"); --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2103.outbound.protection.partner.outlook.cn [139.219.17.103]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1277A3A5E7C; Thu, 14 May 2026 11:27:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.103 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758064; cv=fail; b=CnEidXQ6XmP/wQHuS1AU1vWJjpm+mEHgwClcs4ZIvubAcEU4w8rPvMEFVW58AZyQjZi9YR481xX6PlrPHZEn2IjJ/GwumCBUnMvcI9kaBSGOzhDBGmhy99f3/VCM9mMf1adaQ8qlt8oI/v4nfR8HOuFtbDqbGJFnHErDi/jlEoo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758064; c=relaxed/simple; bh=Hf88o0mCBwYm4pYNk97QY+fw6AnF7nEyG/ICXNS9icA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=IZ/KBjTecUY5iRH8sb+sGD+48YHSRpKVUz4V7dw4NzZM6fcYRurL41/h1ZwwMqSm3Qm8YC2fhc74CWNszwOfdrlv/d1SrH0DPefSHDNv7UQT/cZBHXBVN+bwAe19KumqfUnSKP+qgChuf73h+X4RQVCwzm56nbEqUrNqyfo6umU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.17.103 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cchObIolGhlDJVJOG6yWyRw8bdTRbpy932xjQ5JiV/iS0KDktMMLNjW+SJWvgGI0xdg9Pnu0PKTjCeYu5m/fe0FRHEjpJSzO8PaAvczcvh+lvPFIY7SqRgumK2PnJXj89CHLMsyLeZF80sIJ4QQA7d6PUaRs8WPo+Y/2IiJ95pawaXlRDVcK5E+Xz3Vz1+iZ8SPJOVG9XikDo83HU11msXBb7MmeJa4rhEJPDSft9uZJQIzvNpSj2fWabITYdKhCyBCnpusWh6KiwDFT3IzBPSJXQFmIo+F37yd1tbnM8f1RfR0ydWnDubdUc9JINGPLpZbWtPPP7lvzfGGQ9uAAng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=UOKeqgSC4ctTAMPWhq7q/BVl+QwZSoQZEByuZC9ACSI=; b=MgMw6Vm8kCrR8EHh9P8SFj96AK3JTTHDukAHTWC2Bq2u5NDSUnDKIfO8Vq6OLTX9qhigDkOeit7C5HnJNGmrzqac89bksH0bB0sANflsir6RilNb5tEWFTPbci6bhfzAaN087wV82xs6UAfJfuKNlcQPULpRUUDDe00NeLMENTUFcuHCUcxybqXvxLk+s9gQ3s6l/4yGe/knx0yf5fuBGhApQG3WYZ4HYthlCikllTTryTLzLbrsfXHyJf1v7LxRmByPRmoTQOAfR0E/Cxrudv4/GtfXgWuiXoPGl4Uq0aHIQhLQ0B8aSkChG06rpO0kS13aBR8/ji7wmyTh5XPUtg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1267.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.12; Thu, 14 May 2026 11:12:41 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:41 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 08/22] dt-bindings: pinctrl: Add starfive,jhb100-sys1-pinctrl Date: Thu, 14 May 2026 04:12:04 -0700 Message-Id: <20260514111218.94519-9-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1267:EE_ X-MS-Office365-Filtering-Correlation-Id: d91ee286-b81d-4f53-c855-08deb1a9b6e6 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|52116014|366016|38350700014|921020|18002099003|22082099003|56012099003|3023799003; X-Microsoft-Antispam-Message-Info: iRVVjEMtRg5P+y6+A09bX9td0HE2NC4oCSySCkKYn69glx7CSy1Zkx9nOHcOFAzlLvT7e7pkDP0rP8FstDlTv2pEO5Mbmb6X2vzapL7pQraqciHIfT8GtW+HHKP+TBMJOokM8ODstadt6insJtENel2NSiSrw1ErZbqQbjfcqtpMgvpWEctDuYB9e9QXebnTiFx5lWJHf9OTKWShFuKXLnA9Kuf931ih0fqkdstNq6Ah8b79PpmugJqCRSvjysUhUA+6iFdExYf//7wXSNEaOULfjio3qMfgDZydkFTxEimr6/9cJE3l/9dKLvhpDM81sq7hT8gYcj97whZDwK3Q+kAEyvNETl9M1teY7U5C/IPqyO08QFoECjXF6G30xxY46ZtoxysZqYRtrj9D4v6idLgCuyxKp/B5HtTOmkpDQCZ9BARzO4ummF+jt0n+sUt9pHy6Jq4fIu+gMY+XT3liwVFBXqdy0WYuEvlBXLLsA93NYHVluj+qoPh+TARBBozpIdABuSxcsfVhrOX5lLGbhr6/oXAfH1lJaru1+XNaWQVrIkIdcJ9Hg7J3fXIyX2kCKYovPGvdPnt2z5mfWIcmZg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(52116014)(366016)(38350700014)(921020)(18002099003)(22082099003)(56012099003)(3023799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GVJwOfljs+KDkO19sOtPp0Y/PPgkpCUWUPdFPERqBH0zKo2csTrRZWrW06jd?= =?us-ascii?Q?w3AoA5FmrbBj5SgPSxtLeOG7Ib/0/iqS2i2sdFvCpBeRhIkrbfPjvhwXW/Rt?= =?us-ascii?Q?SZoj/EwQGjA6r8mUvQqFa2gyZVdFG6i5uAdJ1FZLDyMMcY0+4U4Khwul5ru5?= =?us-ascii?Q?6/ckwblJws4D5yuB5wn5w9DaLgMcG9uomhNf8udYXUXzoO5YMsm9XzDrjjhj?= =?us-ascii?Q?0efVIJfp0+VFUnvRC9+zGD4nXuGK4C/DpZ79wWOwFU/wS22SCC1i5HkMrq7a?= =?us-ascii?Q?Sh1HUWTHs34+EofNdBZmECJdcYZRn7yPxcuIGiGbbloYh6A065ls3nFQdy5+?= =?us-ascii?Q?wW76aF9dvilN55qyLe2ynaw/9jPHPz0d8LvBe3axtvCkwwphWGw7tXZrjWHj?= =?us-ascii?Q?N1/n9yL6Wz5mlMTXphf1w/xVJt8xFyQe1MSeT5Ftxg3dYYZgrfOwoYh7evoH?= =?us-ascii?Q?n3jt8aH44YlPjfGr4PwLezvIPvBwheKAJruMkyg4RkzAyQFLbucXQhGX/7q/?= =?us-ascii?Q?J/o0urpvoW5OiC3CGmctRQYnxvlbSbzTxox4v6AT2hJ9pEO/W4e9PZAgPRCH?= =?us-ascii?Q?eNwvpDh1fknMqLgoab/JVOOWCsjjg0RT1/JcLwQZ5R5nkMLtXP1yb7L4f8tb?= =?us-ascii?Q?lGWk2yMwUgueP7MjyMK/Qar37B/B1Fq899WWAchWSMN2ZKkuZCJ3AP2BiQYW?= =?us-ascii?Q?Wh/ONXXielkFTl/WhOUrqS72TZ/IrbK+z0XhHCSr/gB7cg9KxU27f3On4U0J?= =?us-ascii?Q?ueI3VasiupU3+vfxWxMrMuCflHTW9QTrJNyw06wFTSWk3K2Jdhz2ie+LILz/?= =?us-ascii?Q?p1oXXFDY2DVaXi041OFXQ2y4haMU91ztRU6+Lsdx9p25ZEtvlcYA7QfrPd6e?= =?us-ascii?Q?sIN2GRkySlWHfVwwVT+o+gvupZdZtgGtO7aqN/2opYsmx/KlGmJjNBl5mlju?= =?us-ascii?Q?gRiA8nJFWb7W0zG/FgwkgP3MWj2T7DUqbZAb39X9Pkn1Bn2LHQVev67o/gDQ?= =?us-ascii?Q?dks6TVkbkM+Jwkmyp+TFVZUI/TEukSK0SACeRZBVqm+VMuIP0nSauCzVCs4P?= =?us-ascii?Q?Lz0Krd2pQ5yeRTh8tAImxGJ98m9HRdow8u3Al6Wnw7XcJF3+0HMsHigmGfo8?= =?us-ascii?Q?mVcNmAqNApkqFluK6GRjxhmxSl2HRhVdow0r1/2xCjzQtZ0KML7NXYJeZ81e?= =?us-ascii?Q?mnvn6UWNdtbtZc87mVMQorf/UzmoonuGhElkxg+Z2jz0wxamx7InD+cmGLqv?= =?us-ascii?Q?cd9W9ImFrpYXNFN4L853agVs9H3fvYIubonEErYcKIzsPAcZqFMNKS+XSYx7?= =?us-ascii?Q?FHWWFw+JErCeXBilbnZy2Nr2Rb5RGp/Q59jtSl9CgWxUuFp8gIpG7waKg1QQ?= =?us-ascii?Q?8O6gqPKXEq5kE8qQQAvzYC27ePn7cnWCe/Y3XU0DGLgvzJ1yvkyCpC+O2gqK?= =?us-ascii?Q?MRxqalSfRWsr2NfivypZkKeUFg1TMmETlU+9Whc8dPZNcursV3ebJH+mkHok?= =?us-ascii?Q?M2KkHZTm+CEYRE0sqDbubZnSTi28G0bYJtKaaUJBzcwZEw3/Kq4HIQ/gDWbI?= =?us-ascii?Q?SD3Mkmy/zKjFr/EFd6+RjExCXwuBBS2uFCifn0tl0DzWT0QNWIwdNGtY9XdD?= =?us-ascii?Q?SImHmamVisOQcLupHQIXpwwV2vAJiQffDcbhCMaeq/VbDuVUbLk7ZHJje9Gr?= =?us-ascii?Q?SEUKhvOOGs6ukguH+C5k/JeQwZAfcVDg0wGlUDVUrvi5pE6NRu5caledeTCc?= =?us-ascii?Q?XdQteFdqIHoRCGHyvBXuZxaR8htzlU3HubEtO4VN8zjZsD3Qax/q?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: d91ee286-b81d-4f53-c855-08deb1a9b6e6 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:41.0604 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: AlxiHy/pJzxv75WP2Bi9/CdINyBltc4rPft+Xlq8XSMJuggjRURLijzfXiV+dnFFrtTHpRUkYfUfkSEAlaplseW+UInSHLpm+CGKlAMFnto+pw5O586dVZ5LSzlhoQoS X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1267 Content-Type: text/plain; charset="utf-8" Add pinctrl bindings for StarFive JHB100 SoC System-1(sys1) pinctrl controller. Signed-off-by: Changhuang Liang --- .../pinctrl/starfive,jhb100-sys1-pinctrl.yaml | 175 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 10 + 2 files changed, 185 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb1= 00-sys1-pinctrl.yaml diff --git a/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys1= -pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-s= ys1-pinctrl.yaml new file mode 100644 index 000000000000..f9a7998d11cb --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys1-pinctr= l.yaml @@ -0,0 +1,175 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jhb100-sys1-pinctrl.ya= ml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JHB100 System-1 Pin Controller + +description: | + Pinctrl bindings for JHB100 RISC-V SoC from StarFive Technology Ltd. + + The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, p= er1, + per2, per2pok, per3, adc0, adc1, emmc, and vga. + This document provides an overview of the "sys1" pinctrl domain. + + The "sys1" domain has a pin controller which provides + - function selection for GPIO pads. + - GPIO pad configuration. + - GPIO interrupt handling. + + In the SYS1 Pin Controller, there are 8 multi-function GPIO_PADs. Each of + them can be multiplexed to different hardware blocks through function + selection. Each iopad has a maximum of up to 4 functions - 0, 1, 2, and = 3. + Function 0 is the default function which is generally the GPIO function + (or occasionally, it can be a peripheral signal). + Function 1, 2, and 3 are the alternate functions or peripheral signals t= hat + can be routed to the iopad. The function selection can be carried out by + writing the function number to the iopad function select register. + + Each iopad is configurable with parameters such as input-enable, internal + pull-up/pull-down bias, drive strength, schmitt trigger, slew rate, inp= ut + debounce nanoseconds, power source and drive type (open-drain or push-p= ull). + +maintainers: + - Alex Soo + +properties: + compatible: + items: + - const: starfive,jhb100-sys1-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 3 + + gpio-controller: true + + '#gpio-cells': + const: 3 + + gpio-ranges: true + + gpio-line-names: true + +patternProperties: + '-grp$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing = the + pinctrl groups available in the domain. Each subnode will list t= he + pins it needs, and how they should be configured, with regard to + function selection, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate, input debounce nanoseconds, + drive-open-drain, drive-push-pull, power-source and drive-streng= th. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + unevaluatedProperties: false + + properties: + pins: + description: + The list of IOs that properties in the pincfg node apply to. + + function: + description: + A string containing the name of the function to mux for these + pins. + enum: [ espi, espi_reset, gpio, host0_port80, host1_port80 ] + + bias-disable: true + + bias-pull-down: + type: boolean + + bias-pull-up: + oneOf: + - type: boolean + - enum: [ 600, 900, 1200, 2000 ] + description: Pull up RSEL type resistance values (in ohms) + description: + For normal pull up type there is no need to specify a resist= ance + value, hence this can be specified as a boolean property. + For RSEL pull up type a resistance value (in ohms) can be ad= ded. + + drive-open-drain: true + + drive-push-pull: true + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-nanoseconds: + minimum: 0 + maximum: 4294967295 + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 0, 1, 2 ] + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow (half frequency) + 1: fast + +required: + - compatible + - reg + - resets + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + - gpio-ranges + +additionalProperties: false + +examples: + - | + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + pinctrl_sys1: pinctrl@13081000 { + compatible =3D "starfive,jhb100-sys1-pinctrl"; + reg =3D <0x0 0x13081000 0x0 0x1000>; + resets =3D <&sys1crg 2>; + interrupts =3D <58>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_sys1 0 0 0 8>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index 38d5a94e92e3..30704a5a3418 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -28,4 +28,14 @@ #define PADNUM_SYS0H_GPIO_A14 10 #define PADNUM_SYS0H_GPIO_A15 11 =20 +/* sys1 pad numbers */ +#define PADNUM_SYS1_GPIO_A16 0 +#define PADNUM_SYS1_GPIO_A17 1 +#define PADNUM_SYS1_GPIO_A18 2 +#define PADNUM_SYS1_GPIO_A19 3 +#define PADNUM_SYS1_GPIO_A20 4 +#define PADNUM_SYS1_GPIO_A21 5 +#define PADNUM_SYS1_GPIO_A22 6 +#define PADNUM_SYS1_GPIO_A23 7 + #endif --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2134.outbound.protection.partner.outlook.cn [139.219.146.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 144E83BF69C; Thu, 14 May 2026 11:12:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757180; cv=fail; b=CPilY13wvyRCqElIpjpLQsEgUxB33TFAYMKETzaeGSfWRr8evddz7yjVzyYdOfLOO86t15T4dfR5VmO0viVRaV2vxWTqfGnfqiQafpWT1HmEiW5qMAhXZHJMqwDTQmbChn2zJrbdUmHSx7q5OUFMLoc/F0OfpMGKlZFrtKXAud0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757180; c=relaxed/simple; bh=F4vbJY2+YJoKdPGbx1nMzDrjyICIBLzk32IR3peYn5w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=N+d4fTZvT3/QnqIFzCgoHBl8iGdrxAQgJpvY3fGbrgj3nvsoI2By5EBYq/8ZfHRVZI/ERmeZpAqdpw5n+oPQjFPGjxn7EJzhDcMks2zeqH0MdDexJG1V491MtsbeyDdD2vPwtugoykBI9Q7s0fs0pRTSrwTAUjv8I8Netm7fgUM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hU2Wa94HZ24kRSYfjd2ujImEGBqMBPy66wqRxXdWTwPoSQqdsp1nBBOVK2epXA0XzuV/e/cfypoZPw6k3GKL2Xzgl99a5m66U/BExK+cN22tMtO8j9ErIT4slH+MXyaDSee+4hNo2DDOkjwluJ4IHb4fvnn0Coj2dD+299Z2snNLAKJ2Qdz8xgnyzNCkA02DDjsA91M09E4qvXUpfHFNWRhDWUGOBnld589iNsU8eFktQrMGnzJ4vgiEk7am6AI7ackjEDBa0lmpDxbuyDcSZ+ju5/qAN7niBjeS61kx/3xEmjOz70SzdVgHrepUC+Kb4BXzm/71qF9/kPiK5h2WlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=TaiK0NzSTsBPYbh5UO1oKYlNcqAfuenMhYOrL1wMAWQ=; b=MOjNYJSGnpO8sf5kxWEK4H0uZ9UB+W9woJVr8WGW/vqptLF/nLgs9EXLpVTrCSsix2MXd/6HOYPv6UVT0FYMsPZkwHMuRxni5ecWvuWEnDPLA9j8EJdEI/4Wt8e2Ymxj6ZrxwkNVJ351Gfyz8XXsIyvXU75XHGFPsby6tapHZEAU/LGLw8N2LpFM+1zkTABVhn2gH5/DQOlGys/r7YZFjP80+H3nd+qcPwXMaOizG60cpmujQEUlIhu6ct073UFdCvQAJisPHeZck34rk6KNFp3m2YqRpp6YgO/uk+XXGbLl0/JHtmw3O+UDyQB751L84pPU0AAyC9JfH7rtmoFmNw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:42 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:42 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 09/22] pinctrl: starfive: Add StarFive JHB100 sys1 controller driver Date: Thu, 14 May 2026 04:12:05 -0700 Message-Id: <20260514111218.94519-10-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: 6473026b-f116-4936-d00d-08deb1a9b78b X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: qWeN7rhxFuLAQMWn/ABPklJuZAjP2MDXhavYQFTMQ4rDKXzZB3Uf92DA/jtQitFUmRVX9fnTIr4Pfw8vs4+/SutSMpDoPYS1xNRddEB9Q+ajQOV09BDk1HPE9A1vacEHUsJfwUyE8y/5ZfW410uY90EI/MOOjoOknpbcdVuTCWMPeQQVACwzQGcj52wvePEwnn/9OKSXJLqkJ+UorKgPcUppi4t3ntS5blVFW6D/MtAE4mhkChVO6TqOzG61nw2KdpJKJoJBp5OroyVicKc7bqKr8u5P4Egs/kqwyAjsHfzqjo6p2xxUWp5//4y/4o2yjxLcZMS2cE+wLXpDmDQ1CPs7iqKHI9OGoUyv3F+JNsR7ccgqSFjJx0AAsQXE4trAFLRVlOQtu8OZ42dcey1OXLlOOFhhpVGKQjTLJFx94mOcIL+QUQo7bRNCYBR1wyGotErMNvNC7tHrqKmqhpBrremjaodGUcS7WCgaZgozvtytBR0Cqo2BPhtYaNjVNBsZg2k07f5Hq72MbTQMg0UI+PrYwQY84vzaXkU2L5Ff6caQT5qCiAWD3++Nl7Qnr9fFbeoa1z3PYB2wTz5tZvu+jA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fNiB575KsSJM9JR73hOdR56eDBxPuSbGyLJnfoZM88V8oOvXVUjLhj3dW0gk?= =?us-ascii?Q?XxmjIRBU/GpbtooydY+WO/4XAfQyl5OCxwbvvFIMsplx9jqpOlKmKmzGEpHO?= =?us-ascii?Q?SRF+orK+WhfY0Ekqaao3XJThyg9wDfoJQA2i7yzDdjsbITmFlurdLZ7mHC8p?= =?us-ascii?Q?KGsqBwX+TmS9cI6Oe3eOthd+6bm8VPuEGBjGZnBI8pJPZZsfGgEF+9AW1Ilq?= =?us-ascii?Q?zu7047a/eSj2Z8g9AtbhXSEwGcDFfWS5QOdEbG+Tkz1JXfKMy9V+7GI/2ytr?= =?us-ascii?Q?M8WIcidge1Adgwec/MOVREHHuQNI7gxYo1O+j3gZ11C5RvMaclUtoZ/zi02d?= =?us-ascii?Q?CjvabkFU/lp4VuggtiXxm6MgCtM37YnkuSTKoQ5A1A2zvDB8HWbrsBeNYYDi?= =?us-ascii?Q?zMUO+7lJOh6WWDMFaXY0OcafYm+15dd9UVO+9VHLkGZA83ce03U09dyuvuVh?= =?us-ascii?Q?MnL4Xa4SbV+pHaVPwueQZVFxgAQAVudwM2W30DQgsnFVFJZDP62pxXAcM7x3?= =?us-ascii?Q?Tv7Y3RtZqUi0o/sCVLd3V1Fg3B15+0vaHi1nNtUbSa63feER5j4GYfn+2uww?= =?us-ascii?Q?yA+Wj1XMKcn01hAlCjK1tPFz4Qgz8hmvuVhZrWD/+v/yNZoLU3LijMRVlqiC?= =?us-ascii?Q?SdlVhtlZVkZlIWOgzMjHx2KH/HA+RxD6F4QwVh4I0BZGXzvhLAt/2vhvqcW3?= =?us-ascii?Q?6x7C7Tugg6b/3lejGvKCqHDv7dUbA+159oqyTTSxpoqtxd9T3IX0m43dX9J8?= =?us-ascii?Q?cmygecapmPbIePQ8hvYU7GCKDqgGWifaLwv34IHfIDCwsFkOPABn3XxlgokV?= =?us-ascii?Q?dq1mCM8jgSdfJfgDMb2F4NVUTfZKBRkKz5bGAPQn+wYz5ASxjqGhwu/DMdCn?= =?us-ascii?Q?0n64HE/WmQRBoqQpUlq3DVoSkhyr2yFnG0fDrm84r7q6UR0s6BdBpEAknZO6?= =?us-ascii?Q?D4+3nm0chZWf/hyBTQL+K3HTD7aYTjLEIit/KtmTweopuFAd0o6JiyGr/v2c?= =?us-ascii?Q?SlPHI25PJzDDSug9U+huMfQyRCnI+Zoaab2/X/nNY9sovC8lEB3JKEXJTDwZ?= =?us-ascii?Q?GGoK3zOQfI+/iMg+EZ0DY4EEZGgMA19qWBSh/mh4ZTESNRzKB8CRUHc36B6o?= =?us-ascii?Q?uSyKPGlluhovsR5rBo+o0RNEwB3sOSOCKMsNWK5Arad8VNU4AnhrXlG1fnyP?= =?us-ascii?Q?7nSIyRn3EQIm1L9KLX+m0ngRiBFvVmXDts9IebUhVK3ERmVlB78sdGd3bQjF?= =?us-ascii?Q?mTclZDPBOOex5PM7L/jmLswSQrJAeVZmqSrwmpx4Rt/sd5ToxeqP3l7h0avR?= =?us-ascii?Q?KOOfqgrDF0wgSerpBfjPTyl958knCxXghYyOLE9B0fwhNWYvJ4nFd2ZkdJbp?= =?us-ascii?Q?Pbu8Dgh54kdSkblUUM1fip6P/Us4kFjCwAby4C9hx9aHAB4mJWQ9Y0+3DaYU?= =?us-ascii?Q?c2uGLSc3apWurMUHZZVxNIvLinojLL5gG3G2LqFUD/sTvM5fq67/K4QkaBV3?= =?us-ascii?Q?0Sf16ZFzPfNT2kkfj5fbpbcON6A3FcB79tEgb56oAxEDXpsR6aW8GLDLNBf1?= =?us-ascii?Q?3vEu5Wf5YXujng4O8bAHLR6xBv7fM8Xr3LgS5mF1ALxiW3kU2gyCFx5JwMLF?= =?us-ascii?Q?23h0viCiTMl92k4n5n2oheJjLtZNjl9JpDEXcn9/YQV6D+w94Z2JB5cL1Q+d?= =?us-ascii?Q?Pecx3Ja9EZKZebcHnoC6qvyD46QQCRKLN3cPoFbNuV+SjSScCXQehD1Lqn86?= =?us-ascii?Q?+tSjzh/30QcTKdZjDFMUdPxTd56K/RdrianrkDZVWB/qbGQjecYt?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6473026b-f116-4936-d00d-08deb1a9b78b X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:42.1313 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0kgTVGQ2s+Ss8P6DERAIqIH+3C6eBEj/oP1qnDktvmAeRmU8YMBK9DAPigH/WTwf2TELypojpTl0uay2NTzieJJKsuiF3yvkc/NDLflJG+6GDBjMoeS91OEX2l+heiMh X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl driver for StarFive JHB100 SoC System-1(sys1) pinctrl controller. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 12 +++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-sys1.c | 93 +++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys1.c diff --git a/drivers/pinctrl/starfive/Kconfig b/drivers/pinctrl/starfive/Kc= onfig index 1c87f64830ed..882d621eaf57 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -78,3 +78,15 @@ config PINCTRL_STARFIVE_JHB100_SYS0H This also provides an interface to the GPIO pins not used by oth= er peripherals supporting inputs, outputs, configuring pull-up/pull= -down and interrupts on input changes. + +config PINCTRL_STARFIVE_JHB100_SYS1 + tristate "StarFive JHB100 SoC System-1 pinctrl and GPIO driver" + depends on ARCH_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JHB100 + default ARCH_STARFIVE + help + Say yes here to support System-1 pin control on the StarFive JHB100 SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes. diff --git a/drivers/pinctrl/starfive/Makefile b/drivers/pinctrl/starfive/M= akefile index b26156a6d0eb..8d96cf80d377 100644 --- a/drivers/pinctrl/starfive/Makefile +++ b/drivers/pinctrl/starfive/Makefile @@ -9,3 +9,4 @@ obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_AON) +=3D pinctrl-star= five-jh7110-aon.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100) +=3D pinctrl-starfive-jhb100.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0) +=3D pinctrl-starfive-jhb100-sy= s0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0H) +=3D pinctrl-starfive-jhb100-s= ys0h.o +obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS1) +=3D pinctrl-starfive-jhb100-sy= s1.o diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys1.c b/driv= ers/pinctrl/starfive/pinctrl-starfive-jhb100-sys1.c new file mode 100644 index 000000000000..84ca7b33a5a4 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys1.c @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC System-1 domain + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#include +#include +#include + +#include "pinctrl-starfive-jhb100.h" + +static const struct jhb100_pin_layout_desc jhb100_sys1_pl_desc[] =3D { + { .pin_start =3D 0, .pin_cnt =3D 7, .name =3D "gpio", .gpio_func_sel =3D = 0 }, + { .pin_start =3D 7, .pin_cnt =3D 1, .name =3D "espi1_reset", .gpio_func_s= el =3D 1 }, + { 0xff }, +}; + +static struct config_reg_layout_desc jhb100_sys1_pinctrl_rl_desc[] =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 8, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .input_enable =3D { .shift =3D 2, .width =3D 1 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .slew_rate =3D { .shift =3D 5, .width =3D 1 }, + .schmitt_trigger_select =3D { .shift =3D 6, .width =3D 1 }, + .reserved =3D { .shift =3D 7, .width =3D 8 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +struct starfive_pinctrl_regs jhb100_sys1_pinctrl_regs =3D { + .func_sel =3D { .reg =3D 0x30, .width_per_pin =3D 2 }, + .config =3D 0x04, + .output =3D 0x24, + .output_en =3D 0x28, + .gpio_status =3D 0x2c, + .irq_en =3D 0x34, + .irq_status =3D 0x38, + .irq_clr =3D 0x3c, + .irq_trigger =3D 0x40, + .irq_level =3D 0x44, + .irq_both_edge =3D 0x48, + .irq_edge =3D 0x4c, +}; + +static const struct jhb100_pinctrl_func_maps jhb100_func_maps_sys1[] =3D { + { .func =3D "espi", .val =3D 1 }, + { .func =3D "espi_reset", .val =3D 0 }, + { .func =3D "gpio", .val =3D 0, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_SYS1_GPIO_A22) }, + { .func =3D "gpio", .val =3D 1, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_SYS1_GPIO_A23) }, + { .func =3D "host0_port80", .val =3D 2 }, + { .func =3D "host1_port80", .val =3D 3 }, +}; + +static const struct jhb100_pinctrl_domain_info jhb100_sys1_pinctrl_info = =3D { + .name =3D "jhb100-sys1", + .pl_desc =3D jhb100_sys1_pl_desc, + .crl_desc =3D jhb100_sys1_pinctrl_rl_desc, + .regs =3D &jhb100_sys1_pinctrl_regs, + .fmaps =3D jhb100_func_maps_sys1, + .num_maps =3D ARRAY_SIZE(jhb100_func_maps_sys1), +}; + +static const struct of_device_id jhb100_sys1_pinctrl_of_match[] =3D { + { + .compatible =3D "starfive,jhb100-sys1-pinctrl", + .data =3D &jhb100_sys1_pinctrl_info, + }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jhb100_sys1_pinctrl_of_match); + +static struct platform_driver jhb100_sys1_pinctrl_driver =3D { + .probe =3D jhb100_pinctrl_probe, + .driver =3D { + .name =3D "starfive-jhb100-sys1-pinctrl", + .of_match_table =3D jhb100_sys1_pinctrl_of_match, + }, +}; +module_platform_driver(jhb100_sys1_pinctrl_driver); + +MODULE_DESCRIPTION("Pinctrl driver for StarFive JHB100 SoC System-1 domain= "); +MODULE_AUTHOR("Alex Soo "); +MODULE_LICENSE("GPL"); --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2101.outbound.protection.partner.outlook.cn [139.219.17.101]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9C4343BF68F; Thu, 14 May 2026 11:28:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.101 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758090; cv=fail; b=NK4pJw2aC+LBfnk6fOLTGdEQHtvyzTozT9IMjWdmbMipJniRtrGWDxFMfA7XYVnwRowuK4jkNPQkJxuWjGx9iep8uM/EgXE8MjSl4VFWk4hQdduQG2moMXudER3uWsa6AtmJ+KBh4ZYeAMmmT4x/Z6nTocETXtkbxgE2FRij46c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758090; c=relaxed/simple; bh=+YerRuu3dGxzHAq32Moch4tsbNQLMeeqREnxhZNFCK0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=VW7WIkECZcREGMPFtpxDkAymcKUneKzVUThNfGVdjJ1g7ach0M4EAj/1/HmtGegbQDYqFo7ECtB0y9r/sHRH5vjnSnORbnirua4HUXrtGIGywYGtLqQ2jYJUupQngtvGxBXbbiHDO/x8oQsKBUeUqX+7nNfl8k1tOIdvxgkMNoo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.17.101 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m7lyuNrKUNGTZ/rCiFjt7yFtddfmlqnghfQ9EwSHxE5zlL/uZoVX4034xf0M3g8ru8Za26hf+NwAGsWhjbl5incTxy7OZyYBuTnfcMY0at4PFpLxccYtxIaS68w4ewWOeZ7ylMwk3h2B34KSbZTgJRUdzKxLqnUfDcT1Hd5uLYHM3ijQISTDjpOFOgbihrbuq0p0bpDEg2uH/sGAvUy7NesASd69gktUN2hc3EHPTKd5CQambl998w+ypbI4MfrIUUAL8t107VTRzcvwZ5FT7UVEVw62dSWxdq+qKogA3R+9p7aMDK1TKfiEVjK01Fnxk+wc9hS8q9WjTx63j5xBMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=TpYcufGRsCgnPbicm0PrzUBN+cLX277dFFtVW3Tldgs=; b=I2JUY6Gy8Wndc6DHqlLYE3mM4eBfsCF82kyjMoIeueXCMs8qolkVojUDsFsltH80GGHi3QzUJd2fBc53Q6HHde/Ul7PSvFpaQzQbyPR1qG1ESqyP/6KrSfu4EbDx5j0Z2pMM/zbYr2AWLbh2ifTUm4B/K+sbBQOXO9sMr1BhRv/6wKPwU4SwHv3fpJqx+paYDXJqoov11WRZhQP6iqecAIBMrl0c6MiQtVvP79+77dRU8ehYwDE/7wtrPMEa7LRudMvAWnsnYA9FZECfVgUQgvH148dt7O7xcyMqeLklLbhiYL+PgQ/Z+RIWBVVALEz6cwADQj63phj+ZBk/AxUAmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:43 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:43 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 10/22] dt-bindings: pinctrl: Add starfive,jhb100-sys2-pinctrl Date: Thu, 14 May 2026 04:12:06 -0700 Message-Id: <20260514111218.94519-11-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: a9c89d04-e36b-45d9-102d-08deb1a9b831 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: OC4n2cLhkqZ0RvS+cZAKrG3JEcknEj8SUyegC9vxGFoHUSoRIPhxt9baoUjZxXUtpEVmQIb5oZhdQtthJu8hRDIYyzq9wm16kQWRCIQEGozybATEegvKB8hEH1LTNw/L0eHHLhmSfDKIHnDGPKBdyKN53Z+5wsFcRQjmp2kXzl9rYinY9RTG0Roog3ZGTn4oFX8jfjYhQ5ogd9Aoob6r99uSXupnPZPSYeOJSo2Ea4joxevttk3BLe/ECyLIuMyXGodaG/NSryWmN/DP7QKclwUm/auLW05NdfOO6xAB7gTNh9R/B4jndel568Wf9puu1GUB3zjBWAl3oDAmdg/YK4wuVYmSd+YavrlDWkVIJ90KlGCyksC7GZsA0OaFEZ5gqgSlRfAjFLe5TLHnD0yHrtcEN9GChW5GEZ1DyM8sVVsdbhprrchHfIx+ZUMJ2HFV1S3rXsaItNnl7OKwZKqORhrVHjD8IJ6DmiSScXKS9Xk3GIkEgmzNl+bsJav4G3uG5jaiS21JIWsAA5RtJwPH/4tgTkH6KdWmpnd5i3/uGjl2SiivSBES/yzFKhzGY26veMd6EOPWSwKplpXCEP1PUQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?l2hIaj0YqQcTrZvcAm0vnQQ+Sl5iHrzBUpamN4cYiGxkMVz/JcM6JTm0JVCY?= =?us-ascii?Q?b6wGPaXwZy34fIA+zyP2g6aVN+lUhm6OE8ScWIkOpLyTieE/h7y8dtp2crjD?= =?us-ascii?Q?8nseIDtKHwF/9ZdvejLX+ULSlqOsJUBSLQIBPxDSiLmSVsLDEC4NrbAlZUXz?= =?us-ascii?Q?xE8GkJJCt1uDtpksiPi4XkzA4xHZPn7meOCEtJ9pgifwdJnvPVF7varXkIg+?= =?us-ascii?Q?9VK4GYfERY3VBBfNh1wIlEELxkeMCaVCb0Z0TZLRZi0MGiX4lrzrfNmvRg1c?= =?us-ascii?Q?nSOZYcePmliYUjPthiWvyXnVPWaljnBWsOby6GhI27EjbZYzFSo4svEBO9Dw?= =?us-ascii?Q?L8uXq7LBGIQyS/XoCnPSoQztEinAAYW5shS0RDdkuD40bn5dF5MQtM/f3OGG?= =?us-ascii?Q?J8eUnSOsPyqjtaxycFaeXn/o4j9vjfgxdvPGbuZayVEjaiPFrvMZhjxivvO3?= =?us-ascii?Q?TcVNJqFOh7guOu4gh7T0O/+/0qUQHk4ObuqDU/x0YmcIPEy4N2Vp/SQETn6w?= =?us-ascii?Q?4ByroNT3kTaEd7DQ5LmMI+QfoQHxjx+rqAGXJI/Bn2o1FYzF6o60aGoYojxa?= =?us-ascii?Q?dDsiF5pQhgyvNyQb38rR+d1gyeCF5VN+11SrX1cAHVIhKC+jzXerkykTWsVY?= =?us-ascii?Q?whu/dIl7NL8PD/W9vLU7QOqMOgzXzbGux7/UPpe5dhaoEdZtwHDjYm42Os0U?= =?us-ascii?Q?NpGFwVePfuFy/UC0Ioovo0Gnd6oWBTNJzY+a8zwj3cRUyFtCcjHWLnmd66aJ?= =?us-ascii?Q?CSktrmUZWe22KAbPKJg/MuCGJMCCSazX0BB+dADEesOqPs8+dH2es4l4/2qN?= =?us-ascii?Q?EUX95RwZZf2IC4y0r4UNQgIhepxHzUhm69QmTuzv60Dtptb7acXulD+pgMQv?= =?us-ascii?Q?5bBanK38vHzVpKDGka/N/HtE60IBDQ2JafHVHvQUBJF0hx6Q7cLvIDBcFr/7?= =?us-ascii?Q?XXKbiwvQTUWBOeo8L0vXz/YSQFI5pCU3wl5NYtzC2XrQ5G32/r0zy5i+aXSR?= =?us-ascii?Q?10d55P2mWWFEPBy24ibS/CARXKuXlRcfWzKH6vIQ7kwyw0CuDy8N+niz1DW4?= =?us-ascii?Q?Yubd5LaOZJulhiAebTJSdcUanOyCm3Qf6O9BPVD7m88uai9JUy/OoVWvYOH5?= =?us-ascii?Q?s0rnMOVpyb80FK/+SGIvE+/WpD1025C6FbdkENO2ZTHsloD6OCBoXr9gVp8k?= =?us-ascii?Q?uWu8UUw8wwAqf0I3rK75fivOtmHihmbI5Y8D2F42s6gWqrsx9S4Rm7unJC66?= =?us-ascii?Q?sHgTHIvcPvH+8KTYI/g0WCJ55vUakcazmyLs3ioihshg7/WZJ552GTIhUJFt?= =?us-ascii?Q?5fwUjgH66Tdf36Ss0AqDe1MSVQCpiJVcGPJsd6EmQ1hnzynFyzFUFICHtf/7?= =?us-ascii?Q?PMXKc837jF5z3aO14P/kheEIsGnodMuIlZFme/gYHrHLJbjKNtabfkQLEXEg?= =?us-ascii?Q?RKiWTl39+j8q/QqdObnN3jGcOFchGQlRxIdUI5yh+R0W4zTLfQzskn27uB7k?= =?us-ascii?Q?vrvFwyfBCvNiXw4zdETnvSrREwc/vMLF5/l+kJ0wk2LRXpn104H5Atreg0Kc?= =?us-ascii?Q?QWNNcRxgsy/OyiHtBmb4+HACwh35oFBFqXM+omZhjtcpU9ziAX9bCPsQNEPK?= =?us-ascii?Q?VEUp3iydVSMgzGmXolzlkCZz0jupuo8FmqhQC8up5+4lgHlCr7KVFL8AEKch?= =?us-ascii?Q?CQsWdGMG+orcDsstHHu6kblIAOQ1liF+RjkxWoaVC5tmqXkEBA/KpIK1c2Ui?= =?us-ascii?Q?5LK2X5bE3Kd5XCDSXEVNYeTXmi+tQIv1NJlTjKHI1LVxayBNitOC?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9c89d04-e36b-45d9-102d-08deb1a9b831 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:43.2278 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: uZAfw7Yer2KUH15mEcma9zVzmw+WQR0NMo/cLeriHI7fDXV5kPfSefNkZK9haehhVOr8D0IIGfsUn+4Mzz4IRtRQ8HoCkh4CYrFrikAnyU94FzmGnvqhpPhT22zVKosE X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl bindings for StarFive JHB100 SoC System-2(sys2) pinctrl controller. System-2 domain also supports configuring the pin group voltage. Add relevant definitions for power-source configuration. Signed-off-by: Changhuang Liang --- .../pinctrl/starfive,jhb100-sys2-pinctrl.yaml | 173 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 44 +++++ 2 files changed, 217 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb1= 00-sys2-pinctrl.yaml diff --git a/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys2= -pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-s= ys2-pinctrl.yaml new file mode 100644 index 000000000000..3281c9433281 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys2-pinctr= l.yaml @@ -0,0 +1,173 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jhb100-sys2-pinctrl.ya= ml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JHB100 System-2 Pin Controller + +description: | + Pinctrl bindings for JHB100 RISC-V SoC from StarFive Technology Ltd. + + The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, p= er1, + per2, per2pok, per3, adc0, adc1, emmc, and vga. + This document provides an overview of the "sys2" pinctrl domain. + + The "sys2" domain has a pin controller which provides + - function selection for GPIO pads. + - GPIO pad configuration. + - GPIO interrupt handling. + + In the SYS2 Pin Controller, there are 37 multi-function GPIO_PADs. Each = of + them can be multiplexed to different hardware blocks through function + selection. Each iopad has a maximum of up to 4 functions - 0, 1, 2, and = 3. + Function 0 is the default function which is the GPIO function. + Function 1, 2, and 3 are the alternate functions or peripheral signals t= hat + can be routed to the iopad. The function selection can be carried out by + writing the function number to the iopad function select register. + + Each iopad is configurable with parameters such as input-enable, internal + pull-up/pull-down bias, drive strength, schmitt trigger, slew rate, inp= ut + debounce nanoseconds, power source and drive type (open-drain or push-p= ull). + +maintainers: + - Alex Soo + +properties: + compatible: + items: + - const: starfive,jhb100-sys2-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 3 + + gpio-controller: true + + '#gpio-cells': + const: 3 + + gpio-ranges: true + + gpio-line-names: true + +patternProperties: + '-grp$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing = the + pinctrl groups available in the domain. Each subnode will list t= he + pins it needs, and how they should be configured, with regard to + function selection, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate, input debounce nanoseconds, + drive-open-drain, drive-push-pull, power-source and drive-streng= th. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + unevaluatedProperties: false + + properties: + pins: + description: + The list of IOs that properties in the pincfg node apply to. + + function: + description: + A string containing the name of the function to mux for these + pins. + enum: [ gpio, host0_port80, host1_port80, jtag, smbalert, uart= ] + + bias-disable: true + + bias-pull-down: + type: boolean + + bias-pull-up: + oneOf: + - type: boolean + - enum: [ 600, 900, 1200, 2000 ] + description: Pull up RSEL type resistance values (in ohms) + description: + For normal pull up type there is no need to specify a resist= ance + value, hence this can be specified as a boolean property. + For RSEL pull up type a resistance value (in ohms) can be ad= ded. + + drive-open-drain: true + + drive-push-pull: true + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-nanoseconds: + minimum: 0 + maximum: 4294967295 + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 0, 1, 2 ] + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow (half frequency) + 1: fast + +required: + - compatible + - reg + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + - gpio-ranges + +additionalProperties: false + +examples: + - | + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + pinctrl_sys2: pinctrl@13082000 { + compatible =3D "starfive,jhb100-sys2-pinctrl"; + reg =3D <0x0 0x13082000 0x0 0x1000>; + interrupts =3D <59>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_sys2 0 0 0 32>, + <&pinctrl_sys2 1 0 32 5>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index 30704a5a3418..89d344763540 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -38,4 +38,48 @@ #define PADNUM_SYS1_GPIO_A22 6 #define PADNUM_SYS1_GPIO_A23 7 =20 +/* sys2 pad numbers */ +#define PADNUM_SYS2_GPIO_A24 0 +#define PADNUM_SYS2_GPIO_A25 1 +#define PADNUM_SYS2_GPIO_A26 2 +#define PADNUM_SYS2_GPIO_A27 3 +#define PADNUM_SYS2_GPIO_A28 4 +#define PADNUM_SYS2_GPIO_A29 5 +#define PADNUM_SYS2_GPIO_A30 6 +#define PADNUM_SYS2_GPIO_A31 7 +#define PADNUM_SYS2_GPIO_A32 8 +#define PADNUM_SYS2_GPIO_A33 9 +#define PADNUM_SYS2_GPIO_A34 10 +#define PADNUM_SYS2_GPIO_A35 11 +#define PADNUM_SYS2_GPIO_A36 12 +#define PADNUM_SYS2_GPIO_A37 13 +#define PADNUM_SYS2_GPIO_A38 14 +#define PADNUM_SYS2_GPIO_A39 15 +#define PADNUM_SYS2_GPIO_A40 16 +#define PADNUM_SYS2_GPIO_A41 17 +#define PADNUM_SYS2_GPIO_A42 18 +#define PADNUM_SYS2_GPIO_A43 19 +#define PADNUM_SYS2_GPIO_A44 20 +#define PADNUM_SYS2_GPIO_A45 21 +#define PADNUM_SYS2_GPIO_A46 22 +#define PADNUM_SYS2_GPIO_A47 23 +#define PADNUM_SYS2_GPIO_A48 24 +#define PADNUM_SYS2_GPIO_A49 25 +#define PADNUM_SYS2_GPIO_A50 26 +#define PADNUM_SYS2_GPIO_A51 27 +#define PADNUM_SYS2_GPIO_A52 28 +#define PADNUM_SYS2_GPIO_A53 29 +#define PADNUM_SYS2_GPIO_A54 30 +#define PADNUM_SYS2_GPIO_A55 31 +#define PADNUM_SYS2_GPIO_A56 32 +#define PADNUM_SYS2_GPIO_A57 33 +#define PADNUM_SYS2_GPIO_A58 34 +#define PADNUM_SYS2_GPIO_A59 35 +#define PADNUM_SYS2_GPIO_A60 36 + +/* pinctrl hog power-source value */ +#define JHB100_PINVREF_3_3V 0 +#define JHB100_PINVREF_2_5V 1 +#define JHB100_PINVREF_1_8V 2 + #endif --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2134.outbound.protection.partner.outlook.cn [139.219.146.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC6403BED38; Thu, 14 May 2026 11:13:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757182; cv=fail; b=lkuRPXZaMw8Dd5bS6Nv/mTsHbghuMZHLDEn9ODLlMlf0ymtV55BGytxSKHi3omHLVnn39zT1c0pIjKZ6s62FzPIbeXlYCOu+MIP0eKDlLpn/j1MtgOTMW1TqJwzLE6AN1H44OgQlmvp/v9uX7j+eqi7zZ2LCQ8WaBIg8lZlya+E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757182; c=relaxed/simple; bh=EQslP4+51FSdPe2ZMrQ4oYja2+l2/PMIRE/clavUeuk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=RisTJ4nyQNc9NzuuT/ySzy284J9XwuKxRjQXsktpHXQFyaQg4bz3kGWutj2LyJ+AVgIyzfNgnYXvdl8Ay1ag/vW1imYCDgBePn9OpcNUOL8HgrP1JJtJthL1Z3YVW7kE5ox4eBeRQnTpzBwo7kZnWTVJKcBEWBWjICdeHCbcX0E= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PTxEogrrbkPvXP4ylkBbLEiKzViSSBx5sugsJselu8nfEOxjn7Koaind6eYPQiwhztK1++lBeF9D/W3AnBc1A9AeBOyoSIzxaINn8IpiLFoi+IcmzXfLU5jlbC2w4MRvYnPkbGImRh/SmDaEm15+JHuH33svQa/C1Zxij3octOaNPzb00WuVncgC1eTtbWHNuQrU6LerXNEYfgGhJB3AxpvWLyKbPZTyY6hY4KE7mFho/cdRV4QSdWymTeRX/tpb7eklhirYksigyBpfdReE+asQHie4iEJgDzd/ss8AqJ9Qi1F73Sd5KRXfdQbPZe8qOL/oS4feeEjQw+TH/YpToA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=gzCdxDveibJoneAAyYovZTh4NteFJgWZ/9bdrxdhaY8=; b=QzJuiTLMXdBsTWqZzz45fx0ndlbVIieiL8Xf33UQda0otaX1ht22tO/rwAkZdFlm1NyatEkFcMznd2OwoO+lVhfPxqhUC/9P7FC0kC2UVt+gif8KVg2CK8IGlKb+LGVR3psaJl0tL3cvkPbUPPggMWGTAwVWkaHLWSQZknDhIOf/iykIbQCdqHzZ/I204k3Gl6v8sC7mpVfS9K4W/d4btWnRjKuSUK1wxMlNvFwNjrhAWPKtSxZ5Y4/GVzZrwggn+GP0UXSREdBMmu4rwtRbNMasFURjX6ValEyNNlBYX7rznuLLDN1RlCfJOdDfhoLnXvVKqEtabDh2A6UJAnq0mA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:44 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:44 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 11/22] pinctrl: starfive: Add StarFive JHB100 sys2 controller driver Date: Thu, 14 May 2026 04:12:07 -0700 Message-Id: <20260514111218.94519-12-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: bcba40be-f906-4a1e-424f-08deb1a9b8ee X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: 6bXEho5Up+xSSPG7Hq8V5EEvfmTAYnUPy7xGf42M1wWVPGLdc6WJ9kcSljUb66ExdccEy/maJByHO4EztFKoImR6bMVgCjPmCOF5y+wsZoXywMp4VKHy5ZQyyx+NS4s+g0cQ1Yf29+EMCBbpxs2sNsxSZRNupTRqeuhmDxkSRZToU6yg5Z9sM+vaQClt9BTNciaiQzA9ti21sOQb2qmuA16RIbNCMToI+nrwo02aYNSCWrt4ks4sMZXULEAcpyIfxfhBDNo0/FTQVAV3/+Ygjq6cQ1YfkpiyUahKJAA4iHoQlBc+IAwUPzDyJYgPKvjS+qrBZZjUYCsETnnOgJznu8cmx8vYYKYKGRqt/luG76ZZvBxmWM+U+xDr8EQhoeNsaWqIHKj/bCOzrapHnSf7JJBpfS13LGoi3m8AgsvJ0Hy5P/QR9OTFtdHOKcgODUeAqIDrLw6bHpeNj6vm0t96qwX/2pzVy38u3ZZ3eQUqPes6eatUV+mZPmxTSIPKvWV7ms2VhVMvj4/iTVkaW8DAEPw91K9zvv7YtIwnQN5OAXu8uqE0cS3ZSDZje7rwEn1PMqbLYaQrrs4Wtx7rnzXlZA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IwQX91V+yNvCpe/CxidXE8eKFjB0th0pqCzilKPiQWQ2E9ks3Y7EEU4c6LL5?= =?us-ascii?Q?H5WIiWRziylyVv6UKlxvI5eZ6hRsKBlTnc5gzieaQ2hS9WfJzRj6VxqtF8eO?= =?us-ascii?Q?E1kckLZ6IhLj/T+ACv8Jgc7lZvnOx74TkoCmvMcHmO2EaCeqHAvP6D1MPTk8?= =?us-ascii?Q?sdML9Thp0d6Myw5KUKzhnywalaLTU+eHIp6SWZxsbsfr/VUEYlD5khxF/LKt?= =?us-ascii?Q?9fzkGXAPUj03YqjdSGwB4xJfGxg4weKwwEB2rRQxGnuXHgMZ37+FGKrDL8E0?= =?us-ascii?Q?79ZoNbyMK8O+sb93qBb/APnkIYJy37w5oyzxksC8RH2w36pdANyhj7A6t0id?= =?us-ascii?Q?KfqF3vdnVPuLuAeRs8dMzwKxfkLn5vk07keSr0xrA7JAPKC4/XH44fw4yOsH?= =?us-ascii?Q?vXkF1+eS1hXJg77bWT5LL8Ai1ZUyKPE/i/h4hVkRWotsx7KTrrbzg2mtrify?= =?us-ascii?Q?uaIbyS4MaUfMWxTlc/bjkK1chciDA94ktD6WYo+Ut21tPo3MVggFypWOzDGf?= =?us-ascii?Q?ZgcvhW1KiUs5RBhP3KcG7oMtvDz3i8Mr11b4k4yiKpXGAe+hhso1Ze/VYQRm?= =?us-ascii?Q?Aqx2HdMC90Vj58kcnv0rciZlp+dOnaYwTa8OTvPAijBIjC6GI1FGnGCPHh2h?= =?us-ascii?Q?5nlposOLXH2yb1cirYypxXmazK+EupdsQ5ZpOwBTjCOFsvFDAQ8yZ6UrSAte?= =?us-ascii?Q?RttnLxlFrqS1fbXTGtrlIcPbpi9XLvTpS6and2/i98p/2lLUAjKStoGtysUK?= =?us-ascii?Q?UJlLWjqdCb/ZnlH06N/86Z5X7Tnms9CMB99nCEtd3aHRVZnPRI2JGhOZkiwL?= =?us-ascii?Q?cp5Wn9MUUaPlleq2xW/BNENRtvbnW2twI+XLE/0/DMNcPHUbkOQWj32earD1?= =?us-ascii?Q?2SerFnOiZYcH2oQsZsw0sL2TlPBTclU0BsBw5Ko6QyAwCJ9p4U8QiOx6VXhl?= =?us-ascii?Q?/sGIKqPcKRs2nNmR2Maa/ga5nnGqJpNZZXvIz0Qaxl9IiiCYrpZTlMVVWCz+?= =?us-ascii?Q?pB82gIDGVqNDF5CnjKWqnNvFk4Ohsw3JgMhCb9JrV8MCoAnJIXl7ko+CWZUH?= =?us-ascii?Q?nFGKbpxvvshZg5HwvW3hA1OQ4joMysLPZd9kiPL37kE0oHtmqCj6WJkGJlaT?= =?us-ascii?Q?5lcW6yngK+dbJA14pE/dGT17iWJk+Yd8NOmY2gB8mqZ4qGcWxxFRfc/Kwzgt?= =?us-ascii?Q?+Ccs/GB97cxPla+fgdJm6v93Y7IKkfth2gld166CjQmvnjiJRQuQM1JOrJBz?= =?us-ascii?Q?1MZ6JfqKLd2+KFAu49mxmo/+2M2zkTfbHPvepjHddIEWtez2TIsUWS05D2xF?= =?us-ascii?Q?UAOE+HZPWOmkcr5p668m6IPkLq1zBeTeGGfJEY3JrC6Lba0PoL/hETYwmL9S?= =?us-ascii?Q?U7owrd8Eb59F96USt8eqnG6TBFhWSxUKAaZGNHINSjAZeyZ5ykEuxPzvamdT?= =?us-ascii?Q?qLzAVHclkOqikNAQObH4PnukxPD6snt5TJxa8iTx3N8D9XuYNuuikkyKXwq+?= =?us-ascii?Q?JAKemuMPC2pvhsA6spySsb//EK9+bPrxkfEo4V9/Mf8UZG4wsH47zjAra0VJ?= =?us-ascii?Q?JW4kcOuJXZ9K3gCKMuC5bnnGs25wAcqJDvsLLedQK04dxenDqCuVLg1YCaHo?= =?us-ascii?Q?bE4ucxyWg4Lau66aBfcE8TpD3vEPsatD46pLXU+nLTVos9gdsUKmBuZ+5xOb?= =?us-ascii?Q?DwcyOk6TGBWlw9D40IFEH113ma5TG/0+d4zuj1yJIp0CUlzecX/XDtmWslbz?= =?us-ascii?Q?14SrBH+0jwEkvHyoJX/mG+1CnQD/YPNmRmf3hrTn4y5noMee+Sum?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: bcba40be-f906-4a1e-424f-08deb1a9b8ee X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:44.4455 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: J1tmDsTbKPlkI8d2vVgu0xB8vyN0eBAZolUOrvGEb/6JajJ6UgL8Hug/Z1LvJFvSK68LIxN1zM23NZ3/45N1A+ddv6KAqFObDHxKKDFUmknNKNK6NDUlr79gO8v3yD7o X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl driver for StarFive JHB100 SoC System-2(sys2) pinctrl controller. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 12 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-sys2.c | 134 ++++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys2.c diff --git a/drivers/pinctrl/starfive/Kconfig b/drivers/pinctrl/starfive/Kc= onfig index 882d621eaf57..da11d486779a 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -90,3 +90,15 @@ config PINCTRL_STARFIVE_JHB100_SYS1 This also provides an interface to the GPIO pins not used by other peripherals supporting inputs, outputs, configuring pull-up/pull-down and interrupts on input changes. + +config PINCTRL_STARFIVE_JHB100_SYS2 + tristate "StarFive JHB100 SoC System-2 pinctrl and GPIO driver" + depends on ARCH_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JHB100 + default ARCH_STARFIVE + help + Say yes here to support System-2 pin control on the StarFive JHB100 SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes. diff --git a/drivers/pinctrl/starfive/Makefile b/drivers/pinctrl/starfive/M= akefile index 8d96cf80d377..b817ad93b91d 100644 --- a/drivers/pinctrl/starfive/Makefile +++ b/drivers/pinctrl/starfive/Makefile @@ -10,3 +10,4 @@ obj-$(CONFIG_PINCTRL_STARFIVE_JHB100) +=3D pinctrl-starf= ive-jhb100.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0) +=3D pinctrl-starfive-jhb100-sy= s0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0H) +=3D pinctrl-starfive-jhb100-s= ys0h.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS1) +=3D pinctrl-starfive-jhb100-sy= s1.o +obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS2) +=3D pinctrl-starfive-jhb100-sy= s2.o diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys2.c b/driv= ers/pinctrl/starfive/pinctrl-starfive-jhb100-sys2.c new file mode 100644 index 000000000000..2601eb7b5b59 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys2.c @@ -0,0 +1,134 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC System-2 domain + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#include +#include +#include + +#include "pinctrl-starfive-jhb100.h" + +static const struct jhb100_pin_layout_desc jhb100_sys2_pl_desc[] =3D { + { .pin_start =3D 0, .pin_cnt =3D 37, .name =3D "gpio", .gpio_func_sel =3D= 0 }, + { .pin_start =3D 37, .pin_cnt =3D 1, .name =3D "jtag_tck", .gpio_func_sel= =3D -1 }, + { .pin_start =3D 38, .pin_cnt =3D 1, .name =3D "jtag_tresetn", .gpio_func= _sel =3D -1 }, + { .pin_start =3D 39, .pin_cnt =3D 1, .name =3D "jtag_tmc", .gpio_func_sel= =3D -1 }, + { .pin_start =3D 40, .pin_cnt =3D 1, .name =3D "jtag_tdi", .gpio_func_sel= =3D -1 }, + { .pin_start =3D 41, .pin_cnt =3D 1, .name =3D "jtag_tdo", .gpio_func_sel= =3D -1 }, + { .pin_start =3D 42, .pin_cnt =3D 1, .name =3D "jtag_hpd", .gpio_func_sel= =3D -1 }, + { 0xff }, +}; + +static struct config_reg_layout_desc jhb100_sys2_pinctrl_rl_desc[] =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 37, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .input_enable =3D { .shift =3D 2, .width =3D 1 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .slew_rate =3D { .shift =3D 5, .width =3D 1 }, + .schmitt_trigger_select =3D { .shift =3D 6, .width =3D 1 }, + .reserved =3D { .shift =3D 7, .width =3D 8 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { + .pin_start =3D 37, + .pin_cnt =3D 5, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .input_enable =3D { .shift =3D 2, .width =3D 1 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .slew_rate =3D { .shift =3D 5, .width =3D 1 }, + .schmitt_trigger_select =3D { .shift =3D 6, .width =3D 1 }, + .reserved =3D { .shift =3D 7, .width =3D 25 }, + }, + { 0xff }, +}; + +static const struct pinvref_desc pinvref_desc_sys2[] =3D { + { + .name =3D "gpiow0", + .pin_grp =3D { + PADNUM_SYS2_GPIO_A36, + PADNUM_SYS2_GPIO_A37, + PADNUM_SYS2_GPIO_A38, + PADNUM_SYS2_GPIO_A39 + }, + .num_pins =3D 4, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { + .name =3D "gpiow-inner", + .pin_grp =3D { + PADNUM_SYS2_GPIO_A40, + PADNUM_SYS2_GPIO_A41, + PADNUM_SYS2_GPIO_A42, + PADNUM_SYS2_GPIO_A43 + }, + .num_pins =3D 4, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { NULL }, +}; + +struct starfive_pinctrl_regs jhb100_sys2_pinctrl_regs =3D { + .vref =3D { .reg =3D 0x000, .pv_desc =3D pinvref_desc_sys2 }, + .func_sel =3D { .reg =3D 0x0d4, .width_per_pin =3D 2 }, + .config =3D 0x010, + .output =3D 0x0bc, + .output_en =3D 0x0c4, + .gpio_status =3D 0x0cc, + .irq_en =3D 0x0e0, + .irq_status =3D 0x0e8, + .irq_clr =3D 0x0f0, + .irq_trigger =3D 0x0f8, + .irq_level =3D 0x100, + .irq_both_edge =3D 0x108, + .irq_edge =3D 0x110, +}; + +static const struct jhb100_pinctrl_func_maps jhb100_func_maps_sys2[] =3D { + { .func =3D "gpio", .val =3D 0 }, + { .func =3D "host0_port80", .val =3D 2 }, + { .func =3D "host1_port80", .val =3D 3 }, + { .func =3D "jtag", .val =3D 2 }, + { .func =3D "smbalert", .val =3D 2 }, + { .func =3D "uart", .val =3D 1 }, +}; + +static const struct jhb100_pinctrl_domain_info jhb100_sys2_pinctrl_info = =3D { + .name =3D "jhb100-sys2", + .pl_desc =3D jhb100_sys2_pl_desc, + .crl_desc =3D jhb100_sys2_pinctrl_rl_desc, + .regs =3D &jhb100_sys2_pinctrl_regs, + .fmaps =3D jhb100_func_maps_sys2, + .num_maps =3D ARRAY_SIZE(jhb100_func_maps_sys2), +}; + +static const struct of_device_id jhb100_sys2_pinctrl_of_match[] =3D { + { + .compatible =3D "starfive,jhb100-sys2-pinctrl", + .data =3D &jhb100_sys2_pinctrl_info, + }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jhb100_sys2_pinctrl_of_match); + +static struct platform_driver jhb100_sys2_pinctrl_driver =3D { + .probe =3D jhb100_pinctrl_probe, + .driver =3D { + .name =3D "starfive-jhb100-sys2-pinctrl", + .of_match_table =3D jhb100_sys2_pinctrl_of_match, + }, +}; +module_platform_driver(jhb100_sys2_pinctrl_driver); + +MODULE_DESCRIPTION("Pinctrl driver for StarFive JHB100 SoC System-2 domain= "); +MODULE_AUTHOR("Alex Soo "); +MODULE_LICENSE("GPL"); --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2094.outbound.protection.partner.outlook.cn [139.219.146.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 60B313BFAEB; Thu, 14 May 2026 11:13:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757183; cv=fail; b=AWwjUZIxFi1q1rn8bRRnSs/9DMk7MGUVX5vdBcxeSsyDlmB3Gg3V7ukG7MvquL7/y65j06JZQeARO74rANsqTDUkHOkRJkp2cIkPJl70W9I+QE/RliROBbCzqcT092g0QKO2NO4s2jGDyrv4aOXbcnZSf+yDvUOftH4nmmQn0Ho= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757183; c=relaxed/simple; bh=4SxkxRGtAbdVLVCQggM9s2y2TyUIOQa0cL6y+kbNj14=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=NSiP4B2miszUBcGQKmNKFulEn461hjUUQ02i7ysYUeJPnk9QF3XPePOMrdwdi1GtPwW9wcv6wS1x/tvF9bFoPGt34ZpnP6o5NLZ+pQQ34U2K7r0LXWIjJWVkk3u0sPw35ThEm6EQuqsJauvRSmZiNxZgn+Weodv+DqUB2WYaj9k= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NkGB3rA+eNn+IJ/saix6i/RukcrGqVpVT+GCq5AqoWUB7Ci5ZwzzzNaR6qmwUzuPWRw1w6jgU4gFfAqYbyC7UYvwFZMwNrW/2Xi5SB628DblEqV7kCnCIjw765bd+dwidTkzotrOpku0UALdxoriNeITZ8HF8IyqE52zLD6YWdgi6dflmH1J/krQG/iTo3if7gW/FPkkiYlkNF1AXhNTtmXKMESDGBcQEWlGE0GLV0kBTc2dRQmMMZD9HtwAk4H3vaEmkyibRirMkd6lm/ZXwwj8AW2nPRyEFL9WswxaT4mHVIvv6it8m1yUH/5eGhOgIhbJRY1w+okwXk/bxsOYNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=OdXSi17cp/7j6yCBKlD0XbhBPl1ZGVvv60Zpk7B0H4A=; b=QeDooa5Fqmf5hBRc55rnqTB43a079h3w5bdLnhWi/Q6TyuM+LVfh5fkWKynVRvg9gCMv7s/vu9wkpljhWf1YcenK5eSss6VP3REujxpbGQg+apSpTWhGaUVkLR6BboAGXTM6dLSj/xt5JFHXzTzSs7DqeWCxkjmyMWMC5lpmlxBQZJ8bI2Nt8DtFsH5R53C54mWs70V55RjUTiOm0V7h90Dh5xb0Z7/zyDp5l5aICiJRJGVyUX7MTypXIBJPg87tM7Z2cag5tgYfGc33+lzja8IQpRJSW3y1SEVEBDYJ9TjYh8kVOqqEUpFDAUhEq/ZMCs76OTrIS6mY0J1xp6C+LQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:45 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:45 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 12/22] dt-bindings: pinctrl: Add starfive,jhb100-per0-pinctrl Date: Thu, 14 May 2026 04:12:08 -0700 Message-Id: <20260514111218.94519-13-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: a6ddb197-d708-41bb-12c9-08deb1a9b9aa X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: Qft4KA4y9GJdA2Ndw2fwt8PZbEiZciFGC1i9imbmS+b0T6Xb977m+QXP1q7ZI+NJSUtJUgDilizSmo4a5y2VMW9G459xYRKrepWwpar8jJdIWaCmLFadZ0oyFJzl/7bGlBBw2pV1IVrEK7s1RyRddqH2j9rs5R8+DnpyZSa2sQvguA8lyw4lXaELRI6YzDQ+LYEzDXSkMRliof0Ksfjel8Ttlufy8F0nQfy69t2qWx48eNJA5Ix3DeT5lkKOwoYL/alnAD2FqzNsgukJmaAZrkWGrizJlhTxOkswNceDnLIRctprqKeTW9M7XGRnO7bBQ2C2vG/va+qpd6TAlbdWC73nWyPMrhuYa4lIiu3UMEhK559q5aJXIquZnzFaMFBI/kbv/UudbRbpxmG5CK8vuat9aAz26oRHIEJi4ysyKZXY4u2LP6BKCnpwf7SrIxmk1jm8s1MdJuaUbTFjCkeKcvofgd2Q065hQn6asQLwqv5B+a4nytHe6kst9ol37X1fkuRHf2lywoZDu1/b33kC1xZg1QwckEmELp04+lDQEO2xheY99yiiNHCeWNSlTaz9L5DU8xgCWWxouty7nmopXw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5d7jw7VT0mmH7fwCEH/wrjdj200xhokpF4R2WvBKUFGZbmpzF7UJhYmDgGyR?= =?us-ascii?Q?x7qk3oWyFZHiP7dcZeusAIWDct4aBWiMnafopEvdh6M5U7LquIeNsh3bG4bF?= =?us-ascii?Q?PhoXsN5x41+Z2lQNalQYrLeINHjN/HlczAryvwJRnYqge6fZS9A6V96O0vNG?= =?us-ascii?Q?17oidxf+UwF1qwc+4yoCDGorGlwRz8ZuuM+N1SqP1NRxb42Wg48ghsRfOxf9?= =?us-ascii?Q?6snh83urh1ojh8yvpNGQWNGVTSCqpas/rPnsZXMxL/eyjA3i2tIyDkuKIH7v?= =?us-ascii?Q?9oQD9j+Jb9AEsPyeCmAUgsKz0JkB3L7hvJsXiykeXUigdLmDBjXLRmcKTYG4?= =?us-ascii?Q?SC7l+tFO0RhVPRhoB3OwHq58mtU3fI2mqwy91UKJiiG95gB/tQkeQ4mI66WC?= =?us-ascii?Q?JDfkU4uOHfy7lSoPJKoKojTYp3+cjKZTWZRgWbIb/cmJr4mfveHeyH73a5/S?= =?us-ascii?Q?fkpZv3c36PmdpbFOaoxacHKj9N/NkFONDdftdORVs6rQm0ZS+8ElBFX7XEBb?= =?us-ascii?Q?6tTkSF+MvabpPg+PezDeewC+s6UKXFYZmd4txQqINa2mCtUlKvRZQ7IeHfKN?= =?us-ascii?Q?3etGbC1ypyqxNuLCv5cwCswSn8wGzdt8+5PQPStX1Ad2ACqSf+FsD4KuQyEl?= =?us-ascii?Q?FTwnaCtxNQJRQI35f6JIke1Q1LDGBqX9UQYiS7RcEBVzt5jjP17gbpGYqLFN?= =?us-ascii?Q?dn6qIPDKh+Zyzv9cebTITYUhcjVdD+X1dOQXVO1Yv9zK6hakA9+ToY8fLyiB?= =?us-ascii?Q?y2mj0AOjtOD+edb1chmghdbCUWxd4qs3JTis5iinpMp/yA+pZvGf10FNzejA?= =?us-ascii?Q?quker9e3x1EZQsCvQwNIu9/w78pi3yoKLZBnCeXnrA/qEgXJBRyRPHWu3lxG?= =?us-ascii?Q?fTk4YfFjMYeIWYlhvF3fLCKwgLxZRQMCxvJoqAW+YbqKVLH49v38aIHgEgdV?= =?us-ascii?Q?mPl2ylzRfA4K7XQWh4XSzwrR4dCFXzJI4lXvjrNtoFTWOfqXKYkZf6BnMWrq?= =?us-ascii?Q?oCekSr3itJB3hh9DPdo1xOiukrQHBBC1gnwc2AUWHCjc+nqLOE5o+gR/FftN?= =?us-ascii?Q?9PA/mvWVInEqm3wSqHC65ss5QPK9cPBf6bsHqpflH83cxLlgMLy3fyDUL5HU?= =?us-ascii?Q?tYnQhe4p9p574m3hS8anYTwsmpqDwWuLx/EQwK+TWZb/MA5uCDAV137JpwMZ?= =?us-ascii?Q?EuFByxtm1qB82cgdeGUGi5/R+QHp7pIyOKx7hK4Le9lO+7Sr2Zz76RqyJ7to?= =?us-ascii?Q?fHtfE1VotlMBEMjH319GwJJG6jTFtDFj0x+76nzCMLxeKtQKzkmI5fSicEBH?= =?us-ascii?Q?ENRGDKdGUeHJ4qh6cjkIXAu8EzyO01JbNs5me4S4ByvM7lnncbJJsbJ9svV5?= =?us-ascii?Q?GdrnFXeMnZRR+3VbqYcprm/ldI5b2a9b700RS8jKvZR2DJe/elFjuKXTDq8J?= =?us-ascii?Q?KG6uidKRQeXLYDlWupxyihwJE6ww0TYzwRJggOEpmIWIxbWPPP0iIKOMJi3X?= =?us-ascii?Q?fabiF3DIba9Fe04cP5AQSNE/rRVvjDUL2zx8f29xVkLPvz8r69WGtEZox5Gq?= =?us-ascii?Q?vaxM39pCv8HnZSqaPYUHu+jRcsoG+J2X/th3N1pR86S8pvLjtSr5QC0gbnV1?= =?us-ascii?Q?V48Swc1h++kNf/e7CdSDrN1KD3G8ciiSZ4DnfehPiA1cgwJ4IFCt7oiNNvH6?= =?us-ascii?Q?yXpuRFjAVfPDW87PU31pkbq/229JWvcIVPq8jsVxP7dvEI+QR5WDZyCotKvG?= =?us-ascii?Q?zvv0KM/a2bh5mgnvyRWaxGZR+V9RkYm2S89tb+HoFnmnQjI5El4Y?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: a6ddb197-d708-41bb-12c9-08deb1a9b9aa X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:45.6785 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EkZ4kbEgMQjsLWpVVnXE4DRIUBEwByr4Y+vPtyE8R8K/s3KvJQ50MeZKCisHLYvBKzmytQdZDt8lpEW8IMrPGKzqY4JGtLn475ewmDqATO1AFpzgkIooK9Eex9dUJbqA X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl bindings for StarFive JHB100 SoC Peripheral-0(per0) pinctrl controller. Signed-off-by: Changhuang Liang --- .../pinctrl/starfive,jhb100-per0-pinctrl.yaml | 176 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 62 ++++++ 2 files changed, 238 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb1= 00-per0-pinctrl.yaml diff --git a/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per0= -pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-p= er0-pinctrl.yaml new file mode 100644 index 000000000000..9f2144c55844 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per0-pinctr= l.yaml @@ -0,0 +1,176 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jhb100-per0-pinctrl.ya= ml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JHB100 Peripheral-0 Pin Controller + +description: | + Pinctrl bindings for JHB100 RISC-V SoC from StarFive Technology Ltd. + + The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, p= er1, + per2, per2pok, per3, adc0, adc1, emmc, and vga. + This document provides an overview of the "per0" pinctrl domain. + + The "per0" domain has a pin controller which provides + - function selection for GPIO pads. + - GPIO pad configuration. + - GPIO interrupt handling. + + In the Peripheral-0 Pin Controller, there are 60 multi-function GPIO_PA= Ds. + Each of them can be multiplexed to several hardware blocks through funct= ion + selection. Each iopad has a maximum of up to 3 functions - 0, 1, and 2. + Function 0 is the default function which is generally the GPIO function. + Function 1 and 2 are the alternate function or signal of an iopad. The + function 1 and function 2 are other optional functions or peripheral + signals that can be routed to an iopad. The function selection can be ca= rried + out by writing the function number to the iopad function select register. + + Each iopad is configurable with parameters such as input-enable, internal + pull-up/pull-down bias, drive strength, schmitt trigger, slew rate, inp= ut + debounce nanoseconds, power source and drive type (open-drain or push-p= ull). + +maintainers: + - Alex Soo + +properties: + compatible: + items: + - const: starfive,jhb100-per0-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 3 + + gpio-controller: true + + '#gpio-cells': + const: 3 + + gpio-ranges: true + + gpio-line-names: true + +patternProperties: + '-grp$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing = the + pinctrl groups available in the domain. Each subnode will list t= he + pins it needs, and how they should be configured, with regard to + function selection, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate, input debounce nanoseconds, + drive-open-drain, drive-push-pull, power-source and drive-streng= th. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + unevaluatedProperties: false + + properties: + pins: + description: + The list of IOs that properties in the pincfg node apply to. + + function: + description: + A string containing the name of the function to mux for these + pins. + enum: [ gmac_mdio, gpio, i2c, i3c, smbalert, wdt ] + + bias-disable: true + + bias-pull-down: + type: boolean + + bias-pull-up: + oneOf: + - type: boolean + - enum: [ 600, 900, 1200, 2000 ] + description: Pull up RSEL type resistance values (in ohms) + description: + For normal pull up type there is no need to specify a resist= ance + value, hence this can be specified as a boolean property. + For RSEL pull up type a resistance value (in ohms) can be ad= ded. + + drive-open-drain: true + + drive-push-pull: true + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-nanoseconds: + minimum: 0 + maximum: 4294967295 + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 0, 1, 2 ] + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow (half frequency) + 1: fast + +required: + - compatible + - reg + - resets + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + - gpio-ranges + +additionalProperties: false + +examples: + - | + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + pinctrl_per0: pinctrl@11a0a000 { + compatible =3D "starfive,jhb100-per0-pinctrl"; + reg =3D <0x0 0x11a0a000 0x0 0x1000>; + resets =3D <&per0crg 0>; + interrupts =3D <60>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_per0 0 0 0 32>, + <&pinctrl_per0 1 0 32 28>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index 89d344763540..0a8494b577e0 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -77,6 +77,68 @@ #define PADNUM_SYS2_GPIO_A59 35 #define PADNUM_SYS2_GPIO_A60 36 =20 +/* per0 pad numbers */ +#define PADNUM_PER0_GPIO_B0 0 +#define PADNUM_PER0_GPIO_B1 1 +#define PADNUM_PER0_GPIO_B2 2 +#define PADNUM_PER0_GPIO_B3 3 +#define PADNUM_PER0_GPIO_B4 4 +#define PADNUM_PER0_GPIO_B5 5 +#define PADNUM_PER0_GPIO_B6 6 +#define PADNUM_PER0_GPIO_B7 7 +#define PADNUM_PER0_GPIO_B8 8 +#define PADNUM_PER0_GPIO_B9 9 +#define PADNUM_PER0_GPIO_B10 10 +#define PADNUM_PER0_GPIO_B11 11 +#define PADNUM_PER0_GPIO_B12 12 +#define PADNUM_PER0_GPIO_B13 13 +#define PADNUM_PER0_GPIO_B14 14 +#define PADNUM_PER0_GPIO_B15 15 +#define PADNUM_PER0_GPIO_B16 16 +#define PADNUM_PER0_GPIO_B17 17 +#define PADNUM_PER0_GPIO_B18 18 +#define PADNUM_PER0_GPIO_B19 19 +#define PADNUM_PER0_GPIO_B20 20 +#define PADNUM_PER0_GPIO_B21 21 +#define PADNUM_PER0_GPIO_B22 22 +#define PADNUM_PER0_GPIO_B23 23 +#define PADNUM_PER0_GPIO_B24 24 +#define PADNUM_PER0_GPIO_B25 25 +#define PADNUM_PER0_GPIO_B26 26 +#define PADNUM_PER0_GPIO_B27 27 +#define PADNUM_PER0_GPIO_B28 28 +#define PADNUM_PER0_GPIO_B29 29 +#define PADNUM_PER0_GPIO_B30 30 +#define PADNUM_PER0_GPIO_B31 31 +#define PADNUM_PER0_GPIO_B32 32 +#define PADNUM_PER0_GPIO_B33 33 +#define PADNUM_PER0_GPIO_B34 34 +#define PADNUM_PER0_GPIO_B35 35 +#define PADNUM_PER0_GPIO_B36 36 +#define PADNUM_PER0_GPIO_B37 37 +#define PADNUM_PER0_GPIO_B38 38 +#define PADNUM_PER0_GPIO_B39 39 +#define PADNUM_PER0_GPIO_B40 40 +#define PADNUM_PER0_GPIO_B41 41 +#define PADNUM_PER0_GPIO_B42 42 +#define PADNUM_PER0_GPIO_B43 43 +#define PADNUM_PER0_GPIO_B44 44 +#define PADNUM_PER0_GPIO_B45 45 +#define PADNUM_PER0_GPIO_B46 46 +#define PADNUM_PER0_GPIO_B47 47 +#define PADNUM_PER0_GPIO_B48 48 +#define PADNUM_PER0_GPIO_B49 49 +#define PADNUM_PER0_GPIO_B50 50 +#define PADNUM_PER0_GPIO_B51 51 +#define PADNUM_PER0_GPIO_B52 52 +#define PADNUM_PER0_GPIO_B53 53 +#define PADNUM_PER0_GPIO_B54 54 +#define PADNUM_PER0_GPIO_B55 55 +#define PADNUM_PER0_GPIO_B56 56 +#define PADNUM_PER0_GPIO_B57 57 +#define PADNUM_PER0_GPIO_B58 58 +#define PADNUM_PER0_GPIO_B59 59 + /* pinctrl hog power-source value */ #define JHB100_PINVREF_3_3V 0 #define JHB100_PINVREF_2_5V 1 --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2134.outbound.protection.partner.outlook.cn [139.219.146.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CDB083C09F1; Thu, 14 May 2026 11:13:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757185; cv=fail; b=HTbhFt6nEubdtsnN9NYg3DKKdgpH4eAmGLhwo2JViItFKm6aADBhCT1Sw6PhtoW3SjFFSI55Uzy1yfGM4ZI0olXZ2KH4gtZo2T7/K8nlC1SaFoIgaW/lijUGnlYT8uNpb1hfdfSPmoNSUwrhGWzKOUcMhc+LGvyCJMBSreY4kow= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757185; c=relaxed/simple; bh=S7UDaeG3c+aIcvqyAWCTXVVzpxQV9HVysBwrUH6pI0k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=qaj2S+5zZdtxEPlIyXzY1AyEGv5CofSX0JX+HFzKLAyL1W+woyeDcsYft+Oe4cu1vwjnrqch+tcxfoSJNdjE1rWhK4rzENv4ctDN3Qc0zPvuKKv4tZySiWd5uZwrPiGNkb7yeDcPJPpt5nqe8/GjEkJeWsUBXbiziHeKuPHQKCA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JJn4DXsyg0sQwhEF57jjYSFFQ3w+/HV2GEj9yf1gNt0br+qdrWj2/jPPMTjYu4YrOJ6ghsaKXPjaRCpoHuxJwZnmHiCchVfDkj1GmYfWHuZBcgPqWnWoaG/DX6v3SxNyP95pnYH0D59uC8eiXgsnCH6FNn/JuJ8078xUUAjTmBzrRB642W1qfLt4e5B3zfMJW66YBlMuwq/1ew+/LdQCYLtYQLXhr9JK157RacGis2VLH9+8Y3CKt3BTHNAO79tt8s6qolmdtBSMV1iLe/SyNhqTsvq+JuBVg0HacWiOCyly7jYDUvRWWXxDczjOEwA1+Mgir45/CDiWyVmFKb5qpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=RlVmeUZKZDC0rCXbkPoaPhZMg3lS/RfNoNBkJaeFSls=; b=UaW7Xs1++41JUcKKTOZKG03CjRwIYQOa72yAFpc5jvkRAuPIgz0EXUu4kwt0U8JWgFaKGIQ5+xKYh03skrqte5PH+iTGCo7GBjl+EnulWGV+mrtXWQjT8XJbEoZvdacAE5y1KOya94Iahkm7fsmDmQsLbqBbY4nd438Rad295LTLEN3wAB6My1195F3I3e5itCTFNx9/icCrZsGMRMRskzcEJJ+wvgf0C/ToDvKqXj8J3ovuUplkHYiVwwWsbwr/ogXmtw5l8eisEpPtpelcLv+/yKuln8UG7FpHLFVfkm5/V6mDw/UNYQU5fNcjG7EiH+QQYqxcG/COhkZvicaOOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:46 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:46 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 13/22] pinctrl: starfive: Add StarFive JHB100 per0 controller driver Date: Thu, 14 May 2026 04:12:09 -0700 Message-Id: <20260514111218.94519-14-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: 35ee8ad4-beca-4495-16b3-08deb1a9ba61 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: Kbrba0mgznH3Oh8RjU0j1Z4v9sKU9ad6C95ZTEPGmnkFZgO0Jirik5hG/eeyFDfPAaf/B6K3FLJgq47tt3aMJM64fh6a9gWC7rAyC5JYDEnRi379Bc7XDpG5E0xo82D8cCA6aEMWqTnusjJlwU313enbg9SbXlX1WUV0j8FlrNGdNpFg/RyhiLffU69ClOqdevD8Ewgz17h+ZrJT+Zsf2+wnm7RMNbeMfD2c/jLYmDVpCfU68upItG+R1rfyM+Z6JY8goSfyBtsjZWasQ9MIYm3uhAQEEloe3s/A6veMNq0u7QtRWNFYDCshlEBGkocGIDtgxbAlIVFQX/0//wb9IbE1U/fnUU58tYfUT5T6upTUChBKIqhurr7bblbghjDTi5tBNQc69PNBdZWYiBAmBn+f0XBjBnoYQp13Ao8FPrmJADKOLQlWwRVgZFysF83+azuVvSMD+UTVNhXEZBl1xpIE+5Ot1iN6UbX+xrmxb8trvnMbmIJdV/vs2oOJ2IvjSK7F06HnjUiPgCvK1fOYgBQU5S0iKJdBmMFJh7QpN/0JQnhQrKsHXupSSyXJgk6Dk3aGdnkS4pYt0YzDtvk7fA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tvQ7RBhR/XEshMrwYCM4stfCfoGUMow0qJS02KzXj2xPPjJMB5aNalpYUtFH?= =?us-ascii?Q?hTq/J/tDzuE6jKwWT8/TB5TWmYL0meZlyVGAzbJ6YOn/7nwRijX87UVanGh8?= =?us-ascii?Q?zl1biJeWnhfFTzl68Zom6EVXi7oRkdWhDBOyo9tnutX2hnCa4xrMRZl+glT1?= =?us-ascii?Q?8YOvT2LT7ltej+PDFmgmrD3NdXyCXMwup8rQwlnGVZx4csvDW4RsRgDv2PQ6?= =?us-ascii?Q?9XWr9wS5JDsuNCmoI8C9LjwgFTM7SxCJ63NMhmYNZ5w3vYHFdbDgGOJKe+nk?= =?us-ascii?Q?qArc3TbAEXeVKp4bqHD9ciXi6L7UZEtoSGjg4lPx+/quVSsB/VikPERybCUK?= =?us-ascii?Q?5pDc3Tc7gNwCDcV/D9cioLw4/nKCBQnYz46Hc13UBT9ECXD2ufDjQCWBuCd8?= =?us-ascii?Q?wrla6JCHDgKIv/gmAwSZG7q17TY0gxzQqqLFh/qU1BK9iQgYUtNXYqTCsx0P?= =?us-ascii?Q?UdS5hkIFjBk0bGApS2xd6YCZNUKhbnWuzc5NuOzA/kYlmsJob3/+jt10waLB?= =?us-ascii?Q?XydzmQ72aLmHN1/FNCOTwhe5tL6/vlMi6HS1qLex/9lMX+ZDZu+p58bpNt1x?= =?us-ascii?Q?+IGlvXfFui3HHu6mGk1Cl6rEl3A6jAo8Yifx7k2dXe2bxBR4Bw3fKwMyKFL9?= =?us-ascii?Q?lOvcBelNRob5pBzP/hZmgg2KOMh3aS/gaUsOi6Jdx1RMgRc7gzOhMgg14Q2x?= =?us-ascii?Q?AEdClypWpwuJ0e/w9LfsdxI/0lqlFwK87g64LpELm/mu2rALR9MCZ47YrPt/?= =?us-ascii?Q?iD3zff1XrTSWMpyQpwTd7DG85aAILMbjOAkkbEklqDpJbnMxAC+845H+j1Qu?= =?us-ascii?Q?3q1B6bvTkMA5BTIBF7tGfXXvGV1Av6MMHLWDz5EKrfQ2DJbd5qD4nY3f31yV?= =?us-ascii?Q?mGwNBMnerwTAABnFhYLSidnph0UrNggY9calPWQ8f2d0PdW24Yzvf5ivRiPQ?= =?us-ascii?Q?pjGKOMKDIqqgiwmrLwtLZP7/QnFLzIe4fpkrvovddW0NpCGA0hu7Anf2Z1Zb?= =?us-ascii?Q?6wwXw7yc0/iOwUOSoQQy5TrpW0yF7XpY//ETZXf6BM0QesLdQYMrgBHgW28a?= =?us-ascii?Q?98VEooJwQNGQDT1ftIP2AxwUJciBTgDXiYRqGUWrrnSUJX1biSPQn0KN79Es?= =?us-ascii?Q?a8atE3+iAtI3J7HvpQs4rNsRXMV3fljAwUtjtr3gD3p1SiHfcsPwgh+3Dzkk?= =?us-ascii?Q?54Kx+XV+6Viae1Rn4PEq7xZbzCOMxRHl1V8VcxD/zwTp8Kkmh/TGGXWZyg2K?= =?us-ascii?Q?VtLyqkEFdpi/XcW6Q33JLQ29Gfni3tKeAy2pb8Oy9QzCC85SPCK1btsJs5lo?= =?us-ascii?Q?SDx9uIBSE+actFT+2VKJdITl6q4Nz6UMM+AKq/sVoyDYsG+PjGmX90SnkSI3?= =?us-ascii?Q?1rbK1SVa6NBOhQYuKNQicAzosD5neFcfP6Zq5sfYU5b5aAeNePDa4nfq3/IZ?= =?us-ascii?Q?m4ilIlQWBcMBwjmYFXMxHpvrFsfxma/4nO2dMP4U0YVDH9t/2quoT4Pg+dub?= =?us-ascii?Q?J2j84aRmydh7LeBCckpu3+g0JfOhknncs3CZTvmdt91kAm5fsfhYUPZdO/LK?= =?us-ascii?Q?4nvNGd36qgXH3LMcxuLH2/h8OHpLDoP8gNqU9U6vbv36yMyJ6b34voaARZ6p?= =?us-ascii?Q?vPmqEA0Poo6FcXp4rd2n4vZoxX347/7Z+VHhas8m0Lr0ic9c4Hdaek1ZhdAH?= =?us-ascii?Q?2OZ3ELp9Pp1PGOuaIJOwFpjkuA3XL0wm0UtX4aH33wmU+XPEsOotCRiuOHiF?= =?us-ascii?Q?dSkiCogcBT7eGtr4kbp5BrqW54P3xsMmc8O6GMvTLKrs7PZe0R1b?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 35ee8ad4-beca-4495-16b3-08deb1a9ba61 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:46.8720 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xu/ePF8pmKNfDpqEBi0a8XqUR6pMHz7GxqPTfWVLdWMYZ/2K8qx1pxlrzDSx0TcqYzo+o5aqCRPiMpZJazvcvZ9aVICPIRHZcuaoI9mIrZS2LJO3rRCLc2G5oXpxROId X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl driver for StarFive JHB100 SoC Peripheral-0(per0) pinctrl controller. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 12 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-per0.c | 154 ++++++++++++++++++ 3 files changed, 167 insertions(+) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per0.c diff --git a/drivers/pinctrl/starfive/Kconfig b/drivers/pinctrl/starfive/Kc= onfig index da11d486779a..1e1bfdf87c31 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -55,6 +55,18 @@ config PINCTRL_STARFIVE_JHB100 select GPIOLIB_IRQCHIP select OF_GPIO =20 +config PINCTRL_STARFIVE_JHB100_PER0 + tristate "StarFive JHB100 SoC Peripheral-0 pinctrl and GPIO driver" + depends on ARCH_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JHB100 + default ARCH_STARFIVE + help + Say yes here to support Peripheral-0 pin control on the StarFive JHB100= SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes. + config PINCTRL_STARFIVE_JHB100_SYS0 tristate "StarFive JHB100 SoC System-0 pinctrl and GPIO driver" depends on ARCH_STARFIVE || COMPILE_TEST diff --git a/drivers/pinctrl/starfive/Makefile b/drivers/pinctrl/starfive/M= akefile index b817ad93b91d..f2bb0c35a2a0 100644 --- a/drivers/pinctrl/starfive/Makefile +++ b/drivers/pinctrl/starfive/Makefile @@ -7,6 +7,7 @@ obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_SYS) +=3D pinctrl-star= five-jh7110-sys.o obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_AON) +=3D pinctrl-starfive-jh7110-aon= .o =20 obj-$(CONFIG_PINCTRL_STARFIVE_JHB100) +=3D pinctrl-starfive-jhb100.o +obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER0) +=3D pinctrl-starfive-jhb100-pe= r0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0) +=3D pinctrl-starfive-jhb100-sy= s0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0H) +=3D pinctrl-starfive-jhb100-s= ys0h.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS1) +=3D pinctrl-starfive-jhb100-sy= s1.o diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per0.c b/driv= ers/pinctrl/starfive/pinctrl-starfive-jhb100-per0.c new file mode 100644 index 000000000000..3d8fe612b1bf --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per0.c @@ -0,0 +1,154 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC Peripheral-0 domain + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#include +#include +#include + +#include "pinctrl-starfive-jhb100.h" + +static const struct jhb100_pin_layout_desc jhb100_per0_pl_desc[] =3D { + { .pin_start =3D 0, .pin_cnt =3D 60, .name =3D "gpio", .gpio_func_sel =3D= 0 }, + { 0xff }, +}; + +static struct config_reg_layout_desc jhb100_per0_pinctrl_rl_desc[] =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 60, + .input_enable =3D { .shift =3D 0, .width =3D 1 }, + .mode_select =3D { .shift =3D 1, .width =3D 2 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .open_drain_pull_up_sel =3D { .shift =3D 5, .width =3D 2 }, + .schmitt_trigger_select =3D { .shift =3D 7, .width =3D 1 }, + .reserved =3D { .shift =3D 8, .width =3D 7 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const struct pinvref_desc pinvref_desc_per0[] =3D { + { + .name =3D "gpioe-i3c0", + .pin_grp =3D { + PADNUM_PER0_GPIO_B8, + PADNUM_PER0_GPIO_B9, + PADNUM_PER0_GPIO_B10, + PADNUM_PER0_GPIO_B11, + PADNUM_PER0_GPIO_B32, + PADNUM_PER0_GPIO_B33 + }, + .num_pins =3D 6, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { + .name =3D "gpioe-i3c1", + .pin_grp =3D { + PADNUM_PER0_GPIO_B12, + PADNUM_PER0_GPIO_B13, + PADNUM_PER0_GPIO_B14, + PADNUM_PER0_GPIO_B15, + PADNUM_PER0_GPIO_B34, + PADNUM_PER0_GPIO_B35 + }, + .num_pins =3D 6, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { + .name =3D "gpioe-i3c2", + .pin_grp =3D { + PADNUM_PER0_GPIO_B16, + PADNUM_PER0_GPIO_B17, + PADNUM_PER0_GPIO_B18, + PADNUM_PER0_GPIO_B19, + PADNUM_PER0_GPIO_B20, + PADNUM_PER0_GPIO_B21, + PADNUM_PER0_GPIO_B22, + PADNUM_PER0_GPIO_B23 + }, + .num_pins =3D 8, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { + .name =3D "gpioe-i3c4", + .pin_grp =3D { + PADNUM_PER0_GPIO_B36, + PADNUM_PER0_GPIO_B37, + PADNUM_PER0_GPIO_B38, + PADNUM_PER0_GPIO_B39, + PADNUM_PER0_GPIO_B40, + PADNUM_PER0_GPIO_B41, + PADNUM_PER0_GPIO_B42, + PADNUM_PER0_GPIO_B43 + }, + .num_pins =3D 8, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { NULL }, +}; + +struct starfive_pinctrl_regs jhb100_per0_pinctrl_regs =3D { + .vref =3D { .reg =3D 0x004, .pv_desc =3D pinvref_desc_per0 }, + .func_sel =3D { .reg =3D 0x11c, .width_per_pin =3D 2 }, + .config =3D 0x014, + .output =3D 0x104, + .output_en =3D 0x10c, + .gpio_status =3D 0x114, + .irq_en =3D 0x12c, + .irq_status =3D 0x134, + .irq_clr =3D 0x13c, + .irq_trigger =3D 0x144, + .irq_level =3D 0x14c, + .irq_both_edge =3D 0x154, + .irq_edge =3D 0x15c, +}; + +static const struct jhb100_pinctrl_func_maps jhb100_func_maps_per0[] =3D { + { .func =3D "gmac_mdio", .val =3D 2 }, + { .func =3D "gpio", .val =3D 0 }, + { .func =3D "i2c", .val =3D 1 }, + { .func =3D "i3c", .val =3D 2, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_PER0_GPIO_B23) }, + { .func =3D "i3c", .val =3D 1, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_PER0_GPIO_B59) }, + { .func =3D "smbalert", .val =3D 1 }, + { .func =3D "wdt", .val =3D 2 }, +}; + +static const struct jhb100_pinctrl_domain_info jhb100_per0_pinctrl_info = =3D { + .name =3D "jhb100-per0", + .pl_desc =3D jhb100_per0_pl_desc, + .crl_desc =3D jhb100_per0_pinctrl_rl_desc, + .regs =3D &jhb100_per0_pinctrl_regs, + .fmaps =3D jhb100_func_maps_per0, + .num_maps =3D ARRAY_SIZE(jhb100_func_maps_per0), +}; + +static const struct of_device_id jhb100_per0_pinctrl_of_match[] =3D { + { + .compatible =3D "starfive,jhb100-per0-pinctrl", + .data =3D &jhb100_per0_pinctrl_info, + }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jhb100_per0_pinctrl_of_match); + +static struct platform_driver jhb100_per0_pinctrl_driver =3D { + .probe =3D jhb100_pinctrl_probe, + .driver =3D { + .name =3D "starfive-jhb100-per0-pinctrl", + .of_match_table =3D jhb100_per0_pinctrl_of_match, + }, +}; +module_platform_driver(jhb100_per0_pinctrl_driver); + +MODULE_DESCRIPTION("Pinctrl driver for StarFive JHB100 SoC Peripheral-0 do= main"); +MODULE_AUTHOR("Alex Soo "); +MODULE_LICENSE("GPL"); --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2094.outbound.protection.partner.outlook.cn [139.219.146.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 73EC33C09FE; Thu, 14 May 2026 11:13:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757185; cv=fail; b=c8sjPwEw63SNFNJVN5yL5c2ytdVxyjUCfav0cUk/7SAs9ZOUYXekNOEpz+rPlxk4hKSeQp9lUTydEBOcGrhjPYGbTOJJrn59FiNV7JaDwqm3fS6ji9QYfUH3+GJyzmvP6sNhw8OJMd3MK9m2nrtipUeXv3NU6t24bkiyEw6GD7o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757185; c=relaxed/simple; bh=iFa/EKg/B/IxIEEDsOrnoElvEwk3lU526HXeilpEJ3c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=uFyhxUk23UpiWPbPf12H/1KSM6EbpSO6hYzWYhL9D2sGVZgsKC+bKA0Dm47dQhyTGhwkg7vTGEMjX5F2c544OM0OCS7np+Fb8A6R5gpThejQMKm1ykcfLIJtiV7zYDTxX8AteJpyNQvtdT10CEunLeM2QxkdTinYolGRWfOa2D0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jGyGJQnL0pIVjtinV8CqoPs8knTk3t4lK+Q7Z2S1/OsiC8Jja9X+GsYYV3TTPTO1zU5A67yJp8aYK82S4ORCEyDr3fxqrAK0hAsZ0mVOkCdoIXS1/8FDr8/UjZDRjqm2E2yQ6IcFQQ0NIxs78gxTd6G6gpM+sUwywzCn4z+svw1xUPEtt6bpWR+TjriFeGLGfe91ioGT6217DSBLHB8ahZooYKECmUS8YT/HPYpH62GO+qRubvX2fNj6nYRRPpDSGb+YikUuX9xHH7M9wQ5DovaAa/JMbnJzXXHlI/okAmp+0Y/2uqQE8bJOcmeyb239tomPeyWX8b5nMTVdkJgbrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=Cf2pCUKCilvbHZSy/c+I745lu/8BpsCgOttaCzH2c0Q=; b=KmD9YY1CGlLV+QyxPjZib10Rsu681BSDKxJgrtDQquMOfUalsAISBQ02s49yg8D8vnbjVJDzdvJH6CzGgEFie9gn95NtHYs83CJEvNz1youyMgE3JyEH5xoisktkA0OcMRo/Z9kO3L/SRsxAiU2ARGFh72dJEQzBikJS4ZFhMBQbzuHHHCGFZHGm5gfXzea2UgwFDmbz9U0F/7DAJ4WDquANSn+JsgAAR14WtqDOiBBv/ibPyniM9AlnKmRT/iefyfbU+0JUTs4deseTKNFYk19E1p0usYXK4PvxXcOTGgWhLIkyqbpkcpnTgvtqwMKh0f/Pgh2cDKACZC+EfL2WEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:47 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:47 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 14/22] dt-bindings: pinctrl: Add starfive,jhb100-per1-pinctrl Date: Thu, 14 May 2026 04:12:10 -0700 Message-Id: <20260514111218.94519-15-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: 3896c4f2-3f7c-4d9c-67a6-08deb1a9bb01 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: wI1cgr9eSuQjNFEwH5IXEk/UH4Qj10BwIpnYRc529sCX6qXz41aw9Iu/e4CSBhFFjN/QmxBzWQx52KeOGSLQRY3UjzyY25Z+CftoLXioyVs4PnMcQOFjTAJTg2HPS8p90c2cT4kowSckoGrKSgbx84HsewayLWn8YyDt5IVcpA7Tkj63rktGZe/C5zVsDum9qTXI/htAqW2F+b8dnJpRM22SYjlNyhZQogXyiMV1rlxvRYSvDBQkpAZUnq7t3ha3DJ1cFQIlThbGpRjay0oUNYLAcyM+JETzklZC5rFsqa0eTotpTYRVjJ93fglcXeJu3PAoHhAHLbeSDg8XZlePUMo/WTK+oWEiI3z+tspk/Lqf0Z/TSJgUJ+vJ2TafHaziQ6sMdDYQAI2Wu8EwQaMaeXaUzd1mc6Q94+Qco6HS1C2h/Z7YeOmvvUbnaROdYbWilwKM62skxoXzm9DZRrIC3x8wCpXxrMkqMIamTGT9lH4h+H46EJ9ht187ELqpIf6mLejcxbD1jgRGycSDL7LFMyn81R5Rkh1+0m9ccIVyKvp5b6kURuwDcipB29AHOz2UWAp9e5niUZ9lSg9yDs6knQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?L8JWrP4jvx5GQwBRQgccsp9asU5qpOFquI7+TWscqLLfKOXPeZr0q67KK3Jn?= =?us-ascii?Q?rMRdfrMToNQ4XKHN9LinccjHulipFww+TVDhQJjNiEevE1yNGhjZCkdmXYRY?= =?us-ascii?Q?ytOqUdsgSB7zcA2xgua+wpvIVAU0AbnGkz5NYPigVdU+KIss/5oC+GdR0Y5C?= =?us-ascii?Q?OvSgKC2FCERLhxgnz59yNX3nXEa5lTuF8O/A0qknfmg+uqWeOMmmD0TviukX?= =?us-ascii?Q?nhiZ0IrtiiU+3lwq4PZFQBtFKSkw35YOlHXKbu0FtB7N1QChhbrzeULP+qUb?= =?us-ascii?Q?quT+LV9vBzBOpaKysIU93VkjDIjJczI0GZOYrbZLuv2V0yiGtLFxMwYET2IZ?= =?us-ascii?Q?tmL7mRdl0j3D0chqTEsMmwOCcLODOIbqttwp72MswAoAt4shRZCWP0wUOqLu?= =?us-ascii?Q?5l85KREEkPb4mFUBgdP0m02ObDuD214Z7Z/oEXVZT64afs3tzgUlARtlXEs0?= =?us-ascii?Q?xWmy8Qw/lCU6C4QfKzltT+mvdSapDC/teigdjAD9c5/MQ7y6IzF8IE1tflPU?= =?us-ascii?Q?V58ENK2f+7RW+pLlHu8URMYTIEo1Pd4fuThpw+rHB9+fsvhQP576WEXqlZUp?= =?us-ascii?Q?62jmJ2dE0Vxcyj1dXJjoVkX+oqG6lezqgGVyT6CRvIv+U9wHDtHos9hqtaIf?= =?us-ascii?Q?/kiZph+yZsBQ/yqEQoNRi1r5IqvOu4P1En3T8oAvOXtxq39Bs27MHXcV1OBC?= =?us-ascii?Q?BABCIFQ18FXZyFRz0mBWGQAHfXDmNYVuf9sUPrfYpwwCs6HufFfPBTC83X+D?= =?us-ascii?Q?5b0lzpdsIV5f6/iQ5RFtiIGQrhQHeTHLKpInF3kCJKPooja/WcJkW3/zk1lf?= =?us-ascii?Q?MMxhd0nnvAeiao3gK+zuua/rHBXUMNr1BMl82MuQMgIMf3VLzcncFn1sPpJP?= =?us-ascii?Q?gDSXy47ROaTmK2RkOPOXgfRriLDg8l1i/4wBW9t9Vp5chTAYoT7C6NZBP3Z1?= =?us-ascii?Q?JSOQaFWi+VS4ibX4CvdYOZfnSsidKBtJ4FAn5kJLcRlHtWKccDxrDmOdzQFW?= =?us-ascii?Q?262gOjP741PJslAfkHrT1xGaOizjGDP2quBm8I6SokW8aHjujDGAEhxkJ7Yq?= =?us-ascii?Q?59Qx1luLeKmNcRDBOWs9TJJ6J1QXljk3gtystPOmCDXm+lxlWoKfjODKG3P9?= =?us-ascii?Q?2YOQKPCwxTkEwrGVCy1dE5CA7LgKcs/wsWXq4lwmA5vzibm/mhVHwgv5mC9d?= =?us-ascii?Q?jnnKC5SdWstomykwAMunGWyffvRazwtXTvs0d3LJX4ag1fsyY7LuOVIgwmRU?= =?us-ascii?Q?lXA28GPa5AJ21/Xk0mInNWeSkHacFQWvf6EzEkTkqaOA5bKBXDseVQ6IvCwZ?= =?us-ascii?Q?xuYXKS8WX9D1VdU/+BDcgCvqh6sQKeAi7/v3tzEqJPdWxkgkrlO2FeOK8u2Y?= =?us-ascii?Q?hra/kJvBjXe17LyXOfFmajsmZqTEe+P+oSVWAZnEVxkEJiZ3GZkr6cf+6d/D?= =?us-ascii?Q?+MKJyLWxYNnkpjpRhxiw3dBSXiT01QY3QOplnCWpst8TdYUplyLg0v2jml7C?= =?us-ascii?Q?s59Rcycq8z+wodptSa2g/XYL5qLsO/zCm1GncIVbw0pAQvI2ENYTmtn+rVvh?= =?us-ascii?Q?8Rl/A72VLg+xbqaVdH2UsnBG+zFTeaTnjQRPxFMSMYNOaII30tmQtvY0ZeDm?= =?us-ascii?Q?QGQqgfGciCYFxUCtqGmlN5LJDcCtYD5SRNSoZT2MdpOYe+fY3LgGg8sBPHJZ?= =?us-ascii?Q?jrgRsZlgt0CLpqSBcx+aqgpqIdUVqRTJTiQ4J5fUrwFacykDIR6vGYDjUq7v?= =?us-ascii?Q?wCpuu+MaUzLnxlgQZBP2NSiy+/6sfaBs7KRIbvBsVxnB8bf+vPYH?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3896c4f2-3f7c-4d9c-67a6-08deb1a9bb01 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:47.9334 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jW65BDTm+N5HIWRFv0Mif56sac6Q4+5XJjW64N5MmWbuaW3Ldjy1+KiuZmzw8I3Ladi8NPCd+PCQZUw2dZKsQ7kZSjpvswQH+fa3I5uPAQX9gjvfl9/B9OYyYwMIP72Z X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl bindings for StarFive JHB100 SoC Peripheral-1(per1) pinctrl controller. Signed-off-by: Changhuang Liang --- .../pinctrl/starfive,jhb100-per1-pinctrl.yaml | 175 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 38 ++++ 2 files changed, 213 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb1= 00-per1-pinctrl.yaml diff --git a/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per1= -pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-p= er1-pinctrl.yaml new file mode 100644 index 000000000000..c97dbf674975 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per1-pinctr= l.yaml @@ -0,0 +1,175 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jhb100-per1-pinctrl.ya= ml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JHB100 Peripheral-1 Pin Controller + +description: | + Pinctrl bindings for JHB100 RISC-V SoC from StarFive Technology Ltd. + + The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, p= er1, + per2, per2pok, per3, adc0, adc1, emmc, and vga. + This document provides an overview of the "per1" pinctrl domain. + + The "per1" domain has a pin controller which provides + - function selection for GPIO pads. + - GPIO pad configuration. + - GPIO interrupt handling. + + In the Peripheral-1 Pin Controller, there are 36 multi-function GPIO_PAD= s. + Each of them can be multiplexed to several peripherals through function + selection. Each iopad has a maximum of up to 3 functions - 0, 1, and 2. + Function 0 is the default function which is generally the GPIO function. + Function 1 and 2 are the alternate functions or peripheral signals that + can be routed to the iopad. The function selection can be carried out by + writing the function number to the iopad function select register. + + Each iopad is configurable with parameters such as input-enable, internal + pull-up/pull-down bias, drive strength, schmitt trigger, slew rate, inp= ut + debounce nanoseconds, power source and drive type (open-drain or push-p= ull). + +maintainers: + - Alex Soo + +properties: + compatible: + items: + - const: starfive,jhb100-per1-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 3 + + gpio-controller: true + + '#gpio-cells': + const: 3 + + gpio-ranges: true + + gpio-line-names: true + +patternProperties: + '-grp$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing = the + pinctrl groups available in the domain. Each subnode will list t= he + pins it needs, and how they should be configured, with regard to + function selection, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate, input debounce nanoseconds, + drive-open-drain, drive-push-pull, power-source and drive-streng= th. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + unevaluatedProperties: false + + properties: + pins: + description: + The list of IOs that properties in the pincfg node apply to. + + function: + description: + A string containing the name of the function to mux for these + pins. + enum: [ gpio, i2c, sfc, sgpio, spi ] + + bias-disable: true + + bias-pull-down: + type: boolean + + bias-pull-up: + oneOf: + - type: boolean + - enum: [ 600, 900, 1200, 2000 ] + description: Pull up RSEL type resistance values (in ohms) + description: + For normal pull up type there is no need to specify a resist= ance + value, hence this can be specified as a boolean property. + For RSEL pull up type a resistance value (in ohms) can be ad= ded. + + drive-open-drain: true + + drive-push-pull: true + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-nanoseconds: + minimum: 0 + maximum: 4294967295 + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 0, 1, 2 ] + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow (half frequency) + 1: fast + +required: + - compatible + - reg + - resets + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + - gpio-ranges + +additionalProperties: false + +examples: + - | + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + pinctrl_per1: pinctrl@11b42000 { + compatible =3D "starfive,jhb100-per1-pinctrl"; + reg =3D <0x0 0x11b42000 0x0 0x800>; + resets =3D <&per1crg 0>; + interrupts =3D <61>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_per1 0 0 0 32>, + <&pinctrl_per1 1 0 32 4>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index 0a8494b577e0..ab3b678dfd4b 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -139,6 +139,44 @@ #define PADNUM_PER0_GPIO_B58 58 #define PADNUM_PER0_GPIO_B59 59 =20 +/* per1 pad numbers */ +#define PADNUM_PER1_GPIO_C0 0 +#define PADNUM_PER1_GPIO_C1 1 +#define PADNUM_PER1_GPIO_C2 2 +#define PADNUM_PER1_GPIO_C3 3 +#define PADNUM_PER1_GPIO_C4 4 +#define PADNUM_PER1_GPIO_C5 5 +#define PADNUM_PER1_GPIO_C6 6 +#define PADNUM_PER1_GPIO_C7 7 +#define PADNUM_PER1_GPIO_C8 8 +#define PADNUM_PER1_GPIO_C9 9 +#define PADNUM_PER1_GPIO_C10 10 +#define PADNUM_PER1_GPIO_C11 11 +#define PADNUM_PER1_GPIO_C12 12 +#define PADNUM_PER1_GPIO_C13 13 +#define PADNUM_PER1_GPIO_C14 14 +#define PADNUM_PER1_GPIO_C15 15 +#define PADNUM_PER1_GPIO_C16 16 +#define PADNUM_PER1_GPIO_C17 17 +#define PADNUM_PER1_GPIO_C18 18 +#define PADNUM_PER1_GPIO_C19 19 +#define PADNUM_PER1_GPIO_C20 20 +#define PADNUM_PER1_GPIO_C21 21 +#define PADNUM_PER1_GPIO_C22 22 +#define PADNUM_PER1_GPIO_C23 23 +#define PADNUM_PER1_GPIO_C24 24 +#define PADNUM_PER1_GPIO_C25 25 +#define PADNUM_PER1_GPIO_C26 26 +#define PADNUM_PER1_GPIO_C27 27 +#define PADNUM_PER1_GPIO_C28 28 +#define PADNUM_PER1_GPIO_C29 29 +#define PADNUM_PER1_GPIO_C30 30 +#define PADNUM_PER1_GPIO_C31 31 +#define PADNUM_PER1_GPIO_C32 32 +#define PADNUM_PER1_GPIO_C33 33 +#define PADNUM_PER1_GPIO_C34 34 +#define PADNUM_PER1_GPIO_C35 35 + /* pinctrl hog power-source value */ #define JHB100_PINVREF_3_3V 0 #define JHB100_PINVREF_2_5V 1 --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2102.outbound.protection.partner.outlook.cn [139.219.146.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 09B733C2782; Thu, 14 May 2026 12:44:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.102 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778762684; cv=fail; b=KoDxpBNP+KKd1/idg/Iz58gAJotNW+g946q0D/TrWFeIxzze7EGcnG3uMJuaXN2q3JrTr8AnxzCqvOHVO84WjV3p/Kaxe7/7wVWInyooQS+nrX8IYdHUFrtmd3qaU0865WCauPQJti+YOmb7LPvQtpccrqq11HQRCK8AqRR0pXo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778762684; c=relaxed/simple; bh=Qn0ZQGlJgREFd5W4tWGo76T1raRXkDUXgxpetApS5Qo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ZoA5r/1haPPOAU33apE30j7b3eBMpx6779OynQPa2oa3lEfiCGNR6w76I5NKLLnAPv9ic8eu5vKxxRXJc9AB4Jd1+XFc+gua1pjzVUgMLv74i3Bvbt63dy2IVEDkrmu9xINGf8sTgwk/nGz+r5KuDvKoTAAixdfxM2LQbknZ4CQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.102 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XKQvfG7fYYbpYupgs9LLd0zG9HX/lPrm+vuUuz8i7dtddKJ9hUC49QrBaIi7LyAf6vwXELgplI1jSYrp3i/925xNGz6BMdVMxSH5X+Tc5vKXvtyrOeoON4cqdY7i+rLi7G/s3l3DthLToZUJq6xPlMZqzouBLfuFXX3SaQmje3p629y7rR5W+b6VRHWN+C9blJqZ3rirReppakv6ynq6aHW/hU7Ao0usuiBFn/lgWNMM/q7rksIonxdnq6obntOQqyEtkI7AbqksuC1Ytl3b125NBlJob+G1h+hZ9ebtbEppT7/Y+NRZoCc3N1dqF9cEAfDWVte4b90BTBRmEEc0tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=yJp7C+4xUdxX/qRbm9G2JNGxkNWVctGqsWIx+5YvXDA=; b=PbLB+4fd1G4oV0cccFr6F8xwYkKXqSJhB5CIPQFFG4K4OJE8bQilXYxaEg4Hill0g1eI8+ceipo3zIFfMGeQ9I699otjFo91UjJqhSLhOqPB8AawVWwy3nnSFx+vIxlg2vd9xBPEj4fYgOJ6Uy0F8ZSs5JBXqZ3JWin0t34EqiCeb9CwnKhXtUyRAo16TaZVryUrv6+ksGezzttJ2f0NGOFVqBZnQibylbE9GIuHvJ6eeSzhRh2UfDSoxNIYJxdCuhHryfvZikpKtAQCG44lED7hPunyWYn77mLYJ4ZfSf+YHJ2vLrcPNMK+OPVOhFld9NlO+/sayqtd0Kd25CbZFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:49 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:49 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 15/22] pinctrl: starfive: Add StarFive JHB100 per1 controller driver Date: Thu, 14 May 2026 04:12:11 -0700 Message-Id: <20260514111218.94519-16-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: f48b731b-351b-4a59-5088-08deb1a9bbbc X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: dBy7+H8hMc9ZHdK3gfF3e001qctFV1jC/S7yGYOK02lDotY5PwomM+aVvQApAKK9dvQFRWcwv68FYyvFV96hi16qZKnqfT1B6ofcilbUzWMR+pduV9lKZK/HBdvKJIRuWhYfRSDdgiJ+3n9tu4yQ/WNuxpE9JVOsFMIaZEiz4diu9n4kqLxEY+7SWJaq5Yh+2Cc27vruAr1e4I/xuMF4FzOChwpcTKrX+lacPMjBhrymy15ah6yAlKpao+mxsRZUw9fPOAlqGNLYWYTtOjZGkNzb++ap0GXhZkduV/wbWaLw/gNaEGT1EHEt33pa/6/WWUREn1jACRqlohnPWLLfeQm59YnfUVjElg8f8i/nxl1CHG5g6ObziR5HF+XEJywaIXH+atfXdl5WhvI7HuL+nUr0mBPUNG0MrbIbsERjDpgx36NDFw2mdSFoFX4pnYi/rNXj/zFhELHYyOwavTg3jcYPtzRR/mf1hM9m+6i5MsNZPwf5ZsHC2XSQ0s+YviOx/Lux97YwPrITTgQ+YnA7zT5HhwKUW534HqPTZAJc8vPo9EW+oIZFwY+3poYVn9L4dv9dn7h2PDl81R4IZjGLVw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?L9hRUtwzi52G7HQEaTr1dJ/hoL84uwwfVTLZnLQfrp2hyfwK+50pnaTz5yM4?= =?us-ascii?Q?3xj2dGbSpbaDYf85MAQzSN05b5ifzIa/xa1/hY1n8TNUC6R78Uep6ThFrEnL?= =?us-ascii?Q?SgCdTOxG/0sdynjH5mt/E3+dUXl7oYGzagEk64cGbNNmlzLUtxhabFlaY4J4?= =?us-ascii?Q?3kcw00zl7lURUA5rcSRjfyB4CM79biycc/PVO2L+u6Cqj6tA5UhFTpQYI5oN?= =?us-ascii?Q?lY0hN/1146aJ9eZxZod6x2/0MJA/wnRLa2wREWlXs1HrRDGrrNlV4v86ttAW?= =?us-ascii?Q?LHUKSaS/mMrBJ3wadGq32YPoyElmLouxgRlyYUJYanvr/hYS1RlObasSCu7K?= =?us-ascii?Q?iNgRRqgJqhHfjqZUe5y3xedEDbYR2h2Y3Pu9XYWxxz0yFk2pdtQt7/W4xfuM?= =?us-ascii?Q?t/h7f2018SlJi526kCs30qGeqAVzRuBz1f97LNxyGL8DTCGU4KaQ8BGbCfyx?= =?us-ascii?Q?TsVkMtwz53j4p79lxE6IHREFnIxtawSrjtJPruIHXw/FtaimxeJQtkojgep5?= =?us-ascii?Q?OO8uEcZyG/Z61VPqneGIjHuAaGMcKktErerqBUQnHTpUYtgKo4unSPdGsOCh?= =?us-ascii?Q?qRxRHzIez9iRhZIhIQc5MiKf7Ubbei4ILfu/vvR61CfGJDN6X4dhytVPmsIN?= =?us-ascii?Q?P4ndxcnrw78fdRIIETcRl7Tr+Cn2f6+YO0pRrzba6LQx4fZE6mH19PaWCwGf?= =?us-ascii?Q?gKVyI58hhU+GptfEzNnUGVsqdz9dCuWUmS/I6JfJz3XQha3GvoGKhui9wxHj?= =?us-ascii?Q?S/o0FeKOAyLbraYRRw8Y0fTdlwk46oDNHpAiUn7Im/fiT2nCPOwO4cC+78y1?= =?us-ascii?Q?cqRoodBJbZhNI+DdotvCcbQ6nbhyJwzXLZjuSPnNkuYoDv5bvOneoo0iNmqs?= =?us-ascii?Q?gaeu9XBihK/8wSQWk+4gf4O7rVQeo3bunrcHU+VAHZJbOdIQoeNnv9Efa8dB?= =?us-ascii?Q?0wJb/J8d8FFKaRoNHQhG+89xlWz+bgLMn7gg5m9EzAWFK5YOgX6qxcddyV2R?= =?us-ascii?Q?tY2+IDmHZfibTLh9TIuhIRuKSt6MveMpQbnMObTvPrmTbJ8XNmpRjKUbvsVG?= =?us-ascii?Q?t/4t7X8D/zveHlLCmbTXs/69IwkpmRvvVtLAT8P2oXzAH66jpKruHDH0DT3G?= =?us-ascii?Q?+c4ieWvNJoyrLOF8YXF37owxp7imMfxAkqv69DtsF2Ei3RVO8gAFoJomSANJ?= =?us-ascii?Q?ZgNSg3Vv5QXZtkBhQ+2oQBlY06eEbpe+F4toYC7tkLuBFt8Q8OOpTnUkp68d?= =?us-ascii?Q?/ZMGoLNP3snUH/N/LKR9sgnneDeCZ0EJ51J6yukUFkm7TxSWz5/AqYz4Qsgk?= =?us-ascii?Q?ov4dS7qQgbtv00pLDGuB69/swGg+KOwtWz5ohTJd+eRhPHRSmHWHmhAsVwXG?= =?us-ascii?Q?VAR1xLeEELR7iFRTmho9fFotSyKoqGs2GpAqRg44SSjvqWCRyTJ2ZNnIPpbr?= =?us-ascii?Q?Q6nnjG0rZGCjKDNL4hf8vnEJJZgyEoNte/bsi8aeSEU+rc2UbssrgCg8EwRs?= =?us-ascii?Q?kVZ2igxLsCJlCxxtx/F44BijWP8ffYe3hIIAxE7u5NJq+LnGE3KOhGE7raWQ?= =?us-ascii?Q?ihRDikyxORUkRRdtgnnLa2uOh2WbGBpQNVmY/8Imkejc2t9ekbT2EmzI6JOB?= =?us-ascii?Q?MQuy84Gg2Mdt6CKfHQ6NL2AGa0nYyGUvHAhA9OX6xsluRYhUxvOnQMjDYBw+?= =?us-ascii?Q?l7NkqfEfQTFieVNfP7hPT6lZuY/tKUo3aHnL8peY3y4UF4rLEDo2ese35LoH?= =?us-ascii?Q?pUpCXJYTiFxbdwpmSOSNp2fmw8YydaBqNRm7u45REXGfBG3oTLSq?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: f48b731b-351b-4a59-5088-08deb1a9bbbc X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:49.1558 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CuGh0CscS/0hl181TfrmfNLa4DMVVysRFeZA3xGT8kuN9oxiiDY0tFSdYHHMICtRO6nv8Oyl2MkiJ2p6MdfzfZxy0RSjWyekqE8Yr8dIw6YM2MOuncyCEvQREMFWNYvO X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl driver for StarFive JHB100 SoC Peripheral-1(per1) pinctrl controller. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 12 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-per1.c | 165 ++++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per1.c diff --git a/drivers/pinctrl/starfive/Kconfig b/drivers/pinctrl/starfive/Kc= onfig index 1e1bfdf87c31..c3889a152f6c 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -67,6 +67,18 @@ config PINCTRL_STARFIVE_JHB100_PER0 peripherals supporting inputs, outputs, configuring pull-up/pull-down and interrupts on input changes. =20 +config PINCTRL_STARFIVE_JHB100_PER1 + tristate "StarFive JHB100 SoC Peripheral-1 pinctrl and GPIO driver" + depends on ARCH_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JHB100 + default ARCH_STARFIVE + help + Say yes here to support Peripheral-1 pin control on the StarFive JHB100= SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes. + config PINCTRL_STARFIVE_JHB100_SYS0 tristate "StarFive JHB100 SoC System-0 pinctrl and GPIO driver" depends on ARCH_STARFIVE || COMPILE_TEST diff --git a/drivers/pinctrl/starfive/Makefile b/drivers/pinctrl/starfive/M= akefile index f2bb0c35a2a0..6beef7e313ef 100644 --- a/drivers/pinctrl/starfive/Makefile +++ b/drivers/pinctrl/starfive/Makefile @@ -8,6 +8,7 @@ obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_AON) +=3D pinctrl-star= five-jh7110-aon.o =20 obj-$(CONFIG_PINCTRL_STARFIVE_JHB100) +=3D pinctrl-starfive-jhb100.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER0) +=3D pinctrl-starfive-jhb100-pe= r0.o +obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER1) +=3D pinctrl-starfive-jhb100-pe= r1.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0) +=3D pinctrl-starfive-jhb100-sy= s0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0H) +=3D pinctrl-starfive-jhb100-s= ys0h.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS1) +=3D pinctrl-starfive-jhb100-sy= s1.o diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per1.c b/driv= ers/pinctrl/starfive/pinctrl-starfive-jhb100-per1.c new file mode 100644 index 000000000000..91dfa113ca06 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per1.c @@ -0,0 +1,165 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC Peripheral-1 domain + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#include +#include +#include + +#include "pinctrl-starfive-jhb100.h" + +static const struct jhb100_pin_layout_desc jhb100_per1_pl_desc[] =3D { + { .pin_start =3D 0, .pin_cnt =3D 36, .name =3D "gpio", .gpio_func_sel =3D= 0 }, + { 0xff }, +}; + +static struct config_reg_layout_desc jhb100_per1_pinctr_rldesc[] =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 32, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .input_enable =3D { .shift =3D 2, .width =3D 1 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .slew_rate =3D { .shift =3D 5, .width =3D 1 }, + .schmitt_trigger_select =3D { .shift =3D 6, .width =3D 1 }, + .reserved =3D { .shift =3D 7, .width =3D 8 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { + .pin_start =3D 32, + .pin_cnt =3D 4, + .input_enable =3D { .shift =3D 0, .width =3D 1 }, + .mode_select =3D { .shift =3D 1, .width =3D 2 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .open_drain_pull_up_sel =3D { .shift =3D 5, .width =3D 2 }, + .schmitt_trigger_select =3D { .shift =3D 7, .width =3D 1 }, + .reserved =3D { .shift =3D 8, .width =3D 7 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const struct pinvref_desc pinvref_desc_per1[] =3D { + { + .name =3D "gpioe-spi", + .pin_grp =3D { + PADNUM_PER1_GPIO_C0, + PADNUM_PER1_GPIO_C1, + PADNUM_PER1_GPIO_C2, + PADNUM_PER1_GPIO_C3, + PADNUM_PER1_GPIO_C4 + }, + .num_pins =3D 5, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { + .name =3D "gpioe-qspi0", + .pin_grp =3D { + PADNUM_PER1_GPIO_C5, + PADNUM_PER1_GPIO_C6, + PADNUM_PER1_GPIO_C7, + PADNUM_PER1_GPIO_C8, + PADNUM_PER1_GPIO_C9, + PADNUM_PER1_GPIO_C10, + PADNUM_PER1_GPIO_C11 + }, + .num_pins =3D 7, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { + .name =3D "gpioe-qspi1", + .pin_grp =3D { + PADNUM_PER1_GPIO_C12, + PADNUM_PER1_GPIO_C13, + PADNUM_PER1_GPIO_C14, + PADNUM_PER1_GPIO_C15, + PADNUM_PER1_GPIO_C16, + PADNUM_PER1_GPIO_C17, + PADNUM_PER1_GPIO_C18, + PADNUM_PER1_GPIO_C19 + }, + .num_pins =3D 8, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { + .name =3D "gpioe-qspi2", + .pin_grp =3D { + PADNUM_PER1_GPIO_C20, + PADNUM_PER1_GPIO_C21, + PADNUM_PER1_GPIO_C22, + PADNUM_PER1_GPIO_C23, + PADNUM_PER1_GPIO_C24, + PADNUM_PER1_GPIO_C25, + PADNUM_PER1_GPIO_C26, + PADNUM_PER1_GPIO_C27 + }, + .num_pins =3D 8, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { NULL }, +}; + +struct starfive_pinctrl_regs jhb100_per1_pinctrl_regs =3D { + .vref =3D { .reg =3D 0x00, .pv_desc =3D pinvref_desc_per1 }, + .func_sel =3D { .reg =3D 0xbc, .width_per_pin =3D 2 }, + .config =3D 0x14, + .output =3D 0xa4, + .output_en =3D 0xac, + .gpio_status =3D 0xb4, + .irq_en =3D 0xc8, + .irq_status =3D 0xd0, + .irq_clr =3D 0xd8, + .irq_trigger =3D 0xe0, + .irq_level =3D 0xe8, + .irq_both_edge =3D 0xf0, + .irq_edge =3D 0xf8, +}; + +static const struct jhb100_pinctrl_func_maps jhb100_func_maps_per1[] =3D { + { .func =3D "gpio", .val =3D 0 }, + { .func =3D "i2c", .val =3D 1 }, + { .func =3D "sfc", .val =3D 1 }, + { .func =3D "sgpio", .val =3D 1, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_PER1_GPIO_C31) }, + { .func =3D "sgpio", .val =3D 2, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_PER1_GPIO_C35) }, + { .func =3D "spi", .val =3D 1 }, +}; + +static const struct jhb100_pinctrl_domain_info jhb100_per1_pinctrl_info = =3D { + .name =3D "jhb100-per1", + .pl_desc =3D jhb100_per1_pl_desc, + .crl_desc =3D jhb100_per1_pinctr_rldesc, + .regs =3D &jhb100_per1_pinctrl_regs, + .fmaps =3D jhb100_func_maps_per1, + .num_maps =3D ARRAY_SIZE(jhb100_func_maps_per1), +}; + +static const struct of_device_id jhb100_per1_pinctrl_of_match[] =3D { + { + .compatible =3D "starfive,jhb100-per1-pinctrl", + .data =3D &jhb100_per1_pinctrl_info, + }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jhb100_per1_pinctrl_of_match); + +static struct platform_driver jhb100_per1_pinctrl_driver =3D { + .probe =3D jhb100_pinctrl_probe, + .driver =3D { + .name =3D "starfive-jhb100-per1-pinctrl", + .of_match_table =3D jhb100_per1_pinctrl_of_match, + }, +}; +module_platform_driver(jhb100_per1_pinctrl_driver); + +MODULE_DESCRIPTION("Pinctrl driver for StarFive JHB100 SoC Peripheral-1 do= main"); +MODULE_AUTHOR("Alex Soo "); +MODULE_LICENSE("GPL"); --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2138.outbound.protection.partner.outlook.cn [139.219.17.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 818903BF68F; Thu, 14 May 2026 11:27:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.138 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758043; cv=fail; b=N14BWMbo2s4s7o8TTIvJKPqdok7MWnWDaZeFshsQ2wRCNQG16Pvyu1jkAgDQBWYo87JcC7MlKQEy8aUkB/PF05Og/dYbpcQvTxril9Njru8QCLKzxzwuZkxi0Nf55JqqE5/2v6GKSAYuPHn/ZnovIAm/QgM5xG1KoSPuvc6xdHI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758043; c=relaxed/simple; bh=qkWfs73RD/cdbBuVIsdBxueNzfnHi13iptbAQMbWDhk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ucCflz6T7eWOFDsRNzI4/u+7TA2hs9B17GwaWUaDJmjlvKtN7En81wKYk8J75LjrVzlpTlMh11Gp87TUHeUL9cXZtx/C2dhxH9FMY9F2MydSqoX45cGXwhepFA6MLFTuMYwejuIjQA3vwawsorMdmcH2VvgeiIMLs064/CN/tAk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.17.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MQ3Z1NHogYY+wIiDxa3xyvFjLobHfqIDFd1B7EVxNBagy5R0T5CvJggLUDDXsIkQZB82enCyOgpY+sR6+fAIZYE+9M5o2U9WGVOXDtusHoQvfDxYsy/xsZLCtN45ACMlwFvzSlgjz7XO+A4W4/KNOOb1aqH7MehsgONsv081Afv+G8G7SKaOE5N8bYMIK6/xxnJu86Yow1KAp0VC1cAbOR+Fqd0i6xzqzbZBDgZ9jatOZ3+YMYvexFjRFySdrtOV4NF8C1JmCd6NkZnie4hTAtMsCGRd5UrpUTotqDFXumna3z9KwVn5PvAmyWVK0ujJnQ/hR7PQM78o7lhuOX6Kng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=WLh6tEgCCKpphtiwDjH9fQfwNF0xR02sPhE1yXsz2/I=; b=KpH+vGMk6dZhi0N2rNdw6Nt45VLQU054pCIwqg1qDmjnjC+nq/EwnbI404UVracD04/jY+o1biUD3TY5nkhiQI7buFNxWHHFRYzUcDY3fQA5utvvf5ONDgofLRIjzOw00wkeX9ja5y4rQQgs0lge/vVCMp8M6y30Ki3N6/fSIH8RnMKInoiVMz+ny5RrXmedeYOd26oIBiqpLYQ9il3hza7RlYDqWUdcdli6x+bAMfnzOVAtEvE1iONtsLhRKqTEFXQezJEY7vDdXdJVVYs5x3wMWFZTU/oLJoYagOP/3StNqHcgxj74hv6J+6wztlW9IJkgIDQrVd+VzJSxtxfDlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:50 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:50 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 16/22] dt-bindings: pinctrl: Add starfive,jhb100-per2-pinctrl Date: Thu, 14 May 2026 04:12:12 -0700 Message-Id: <20260514111218.94519-17-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: be83480e-62dc-4818-5758-08deb1a9bc62 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: eNsPN7I6454dkNaNcA5y031SL1Tmx9ByAyEw3AmqqcKKZsbdoQuf4eYfb9JHvRvqNnDMn/TVzTlB8h2YmAEqtzpHGcoqcijEaPeNReLT6twaRSz0RsR3D4Y2InH7CY2uS+zvlb0nSC3LsUhEWQSpHewvsh0qWmeuA2CXDozB9Ful51+f43Fb+G264fZJVwVaI6sSu/CvBSJ4VAWkCbhA/uzo8C32WeMg+QgygmuGUeMb7BemYRbpFCWjrwQ93Nh1l2+uJYzEU6Z6nKXFNXwPdtDh0LchBnKn4NQE6VbYZirW+lxEI8ykBu1IDMDU321jmRviMdtaTrpCZHRVQR8JQXLdicwEr3hAs+A4i+3rDB/4CP98VOMTZ0ef6zvzvf5SoLHJlw4bVGArYRDmSIJK1yQ2aWQ2/VCGd0i2YCXDFgMwlV+a1k6GiTmM1zOm1eGXe5CMi6UjUyBr773jnn9B5jRzOkKJYgz3tXNh6qGLdA8WOSFqJiHaZlrWX3zBpGZJ06C+1FbkZow8ZaK+e85QCqKYqwQTnIN9uSqM0vZYRl0Ah1w3Q/tNG/SNulhsoCgmp/ht48KpweLCQl4oL0w2LA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iZi8JO5S7rzxDaY4NvONIZvyRb4Bqm4+DOgpCzZXDl7bWG+l50SnCWYokAVL?= =?us-ascii?Q?zF+loEF2goNNUb/aXbi0fz8OteV6yIB3obfmypucPW2jPGRQm9vMnR1sP8XO?= =?us-ascii?Q?3+oXLGMB/e8Y+dwIvKCO0TyjJTkL1kY0Y2DDMxdp9fgaeurMwI9xkBYfC/Zk?= =?us-ascii?Q?g5mYCDnfjaj6Z31u8/HBJhFeDfkyNKvbD8thCLPAKzbHvpFUDBibWRg/bH5N?= =?us-ascii?Q?wlu32FnhacTbjhbVfAwyX3Mamm9ATSrVWuSgBJcEEvP7ouEEP4q/X8jXrpXZ?= =?us-ascii?Q?PRc47Q8gdm/XTFF9ZuNDriQt3Z+LS6vaRXWtt17rrKhV56/ZYEQQT4toxFeW?= =?us-ascii?Q?WoTauKkKhBqg3nFFpSYIzCva8lApXoDFDS4WjGBLgqK3gHJuYDWATRQrEmWn?= =?us-ascii?Q?qrU0QCHdil1J+XOGSFete003Gr1Yba+/OoxGB4rKdquckaovyYDmBk3a6Eaz?= =?us-ascii?Q?L/F5yYn7b7SBMLdrVEPZamiceTbHkBoxxZz6q/c/NdlAN/Zj3mUMNWN2cXNL?= =?us-ascii?Q?fmMoTFtTuY9eF0XXzviWayIwRtVnTsFCe+4BhS3MxYbn6tdIrG7nUrk1mNte?= =?us-ascii?Q?WlK7ucHPdGBzWtphdG2cULKZin4x4MQpR1CU82ln0fzKAbk/gtJOEBY+6Xgq?= =?us-ascii?Q?keoKD1cKdIsnP9yccztsqXmUqAUNPcfv2FbmlB4gGoZEHhMBS6/lA7/mKpCq?= =?us-ascii?Q?Lt2UK9Uc2ncz9d6o9sE7saS3OsOfxP6jS2DXXy0xiM0fZEf2IsDAD91B9hbd?= =?us-ascii?Q?bH6vtKTa/zRELvB1H1FHl07217+O6GdnsGnREYRpZGa4+eFs9npq1zAPvvMD?= =?us-ascii?Q?30Fl91W4lpfSTjVbcmbppDCbApMSJ2M+JkJCx/w0z0jV2EJ14FYaz4aQGmr+?= =?us-ascii?Q?IMgtELg93FddlBnrKqJcVZJ/3kvkajju8Rb80GcHGTmA0kbtFLsAhCJ2iOXS?= =?us-ascii?Q?jz7hoDyWsJgaLRyWQItWxTCr9+p0/NG4gAs3wnX+9bQ4tTVkAA1NFDIhiK2r?= =?us-ascii?Q?j5pZ8iHLkhmrGT9GHuEWrZIVWtGb+73fsBcYOARIbA5kYJzTmpnkURWz55jC?= =?us-ascii?Q?aXKHED4d9qSn2+UMFf0nBhYI78dAdQduZ+CJ9vinMawxhKs1MCcVZ0E4rJk9?= =?us-ascii?Q?SHB/F+lp1qYT5hveLyn6QzFnv7N3KAGhkFZtj7wxzuRqzxP0Fx2R2RuX8h9V?= =?us-ascii?Q?AhOxEbKDi4VlLGvlyuAhb1wq+QVaPT7EC3hJsN7+avP9LiOF4rqtpj8N4tj/?= =?us-ascii?Q?mI4IX3foHYlqEpcozbxu3AlIKzOsGakE2kHcGNeyMdwq+sddK65KQN6n5lZt?= =?us-ascii?Q?ZkQvnybFYqWccfRpz7njCkA6aya7/ruDBSiNYyF1KjA6/oy/cUKtzEyQaJZ0?= =?us-ascii?Q?uFqW2ra28xu+9hBV+Htqj9L4dd1qS97b5yLLb8NM78j0Y+35TZ7Fm/VeveFe?= =?us-ascii?Q?sRdmcGMQgfMiWBbSqeEapaBQP7s3RnSQky70Rc2hoCMAyso90pYgCd3j9RUx?= =?us-ascii?Q?4um5AaXY6jOY39D1dX/9tRe2aJ3r14miIJ3Pj5ojHMSq5oFeJ8o5dSnfgP2V?= =?us-ascii?Q?v2AHqaIsn/LxBpZ6yCRllKPj6zSV1DViuCixBRdFsi2jy65lOMHohVgDly+Y?= =?us-ascii?Q?UbfBfWkRIvtV09wFXSezbygWeA2wnbSD+p8+QiRv/r6ozn0bxwJCnr5tEeFn?= =?us-ascii?Q?tSxyj2GaPfi+0mBD5wei8hwoqUJAa/zsjkSgXdFb3zARLk0FHo7YrMF6XWxM?= =?us-ascii?Q?D6/ILTl8K9gcwPC+IvKbvrsOqAcVZVOxzxKSiGz2NP36oOUjgCwP?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: be83480e-62dc-4818-5758-08deb1a9bc62 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:50.2489 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7ztGBNzmc/ZR0m/J+I4jMg5i7s1tBkl3xuT2Uz832A3NzS3X3njYyYjMOV7rpgGJ2w8YBFVNQrlUTlsvaRPWxSzKvqWqXdy9+NwqCBFTcWjmXE2NuNVLM5jBoNzWfu+l X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl bindings for StarFive JHB100 SoC Peripheral-2(per2) pinctrl controller. Signed-off-by: Changhuang Liang --- .../pinctrl/starfive,jhb100-per2-pinctrl.yaml | 175 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 33 ++++ 2 files changed, 208 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb1= 00-per2-pinctrl.yaml diff --git a/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per2= -pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-p= er2-pinctrl.yaml new file mode 100644 index 000000000000..86684fed69d5 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per2-pinctr= l.yaml @@ -0,0 +1,175 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jhb100-per2-pinctrl.ya= ml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JHB100 Peripheral-2 Pin Controller + +description: | + Pinctrl bindings for JHB100 RISC-V SoC from StarFive Technology Ltd. + + The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, p= er1, + per2, per2pok, per3, adc0, adc1, emmc, and vga. + This document provides an overview of the "per2" pinctrl domain. + + The "per2" domain has a pin controller which provides + - function selection for GPIO pads. + - GPIO pad configuration. + - GPIO interrupt handling. + + In the Peripheral-2 Pin Controller, there are 31 multi-function GPIO_PAD= s. + Each of them can be multiplexed to several peripherals through function + selection. Each iopad has a maximum of up to 4 functions - 0, 1, 2, and = 3. + Function 0 is the default function which is generally the GPIO function. + Function 1, 2, and 3 are the alternate functions or peripheral signals + that can be routed to an iopad. The function selection can be carried + out by writing the function number to the iopad function select register. + + Each iopad is configurable with parameters such as input-enable, internal + pull-up/pull-down bias, drive strength, schmitt trigger, slew rate, inp= ut + debounce nanoseconds, power source and drive type (open-drain or push-p= ull). + +maintainers: + - Alex Soo + +properties: + compatible: + items: + - const: starfive,jhb100-per2-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 3 + + gpio-controller: true + + '#gpio-cells': + const: 3 + + gpio-ranges: true + + gpio-line-names: true + +patternProperties: + '-grp$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing = the + pinctrl groups available in the domain. Each subnode will list t= he + pins it needs, and how they should be configured, with regard to + function selection, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate, input debounce nanoseconds, + drive-open-drain, drive-push-pull, power-source and drive-streng= th. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + unevaluatedProperties: false + + properties: + pins: + description: + The list of IOs that properties in the pincfg node apply to. + + function: + description: + A string containing the name of the function to mux for these + pins. + enum: [ fan_tach, gmac_rgmii, gmac_rmii, gpio, host0_port80, + host1_port80 ] + + bias-disable: true + + bias-pull-down: + type: boolean + + bias-pull-up: + oneOf: + - type: boolean + - enum: [ 600, 900, 1200, 2000 ] + description: Pull up RSEL type resistance values (in ohms) + description: + For normal pull up type there is no need to specify a resist= ance + value, hence this can be specified as a boolean property. + For RSEL pull up type a resistance value (in ohms) can be ad= ded. + + drive-open-drain: true + + drive-push-pull: true + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-nanoseconds: + minimum: 0 + maximum: 4294967295 + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 0, 1, 2 ] + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow (half frequency) + 1: fast + +required: + - compatible + - reg + - resets + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + - gpio-ranges + +additionalProperties: false + +examples: + - | + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + pinctrl_per2: pinctrl@11bc2000 { + compatible =3D "starfive,jhb100-per2-pinctrl"; + reg =3D <0x0 0x11bc2000 0x0 0x400>; + resets =3D <&per2crg 0>; + interrupts =3D <62>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_per2 0 0 0 31>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index ab3b678dfd4b..6a80c56304e8 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -177,6 +177,39 @@ #define PADNUM_PER1_GPIO_C34 34 #define PADNUM_PER1_GPIO_C35 35 =20 +/* per2 pad numbers */ +#define PADNUM_PER2_GPIO_D0 0 +#define PADNUM_PER2_GPIO_D1 1 +#define PADNUM_PER2_GPIO_D2 2 +#define PADNUM_PER2_GPIO_D3 3 +#define PADNUM_PER2_GPIO_D4 4 +#define PADNUM_PER2_GPIO_D5 5 +#define PADNUM_PER2_GPIO_D6 6 +#define PADNUM_PER2_GPIO_D7 7 +#define PADNUM_PER2_GPIO_D8 8 +#define PADNUM_PER2_GPIO_D9 9 +#define PADNUM_PER2_GPIO_D10 10 +#define PADNUM_PER2_GPIO_D11 11 +#define PADNUM_PER2_GPIO_D12 12 +#define PADNUM_PER2_GPIO_D13 13 +#define PADNUM_PER2_GPIO_D14 14 +#define PADNUM_PER2_GPIO_D15 15 +#define PADNUM_PER2_GPIO_D16 16 +#define PADNUM_PER2_GPIO_D17 17 +#define PADNUM_PER2_GPIO_D18 18 +#define PADNUM_PER2_GPIO_D19 19 +#define PADNUM_PER2_GPIO_D20 20 +#define PADNUM_PER2_GPIO_D21 21 +#define PADNUM_PER2_GPIO_D22 22 +#define PADNUM_PER2_GPIO_D23 23 +#define PADNUM_PER2_GPIO_D24 24 +#define PADNUM_PER2_GPIO_D25 25 +#define PADNUM_PER2_GPIO_D26 26 +#define PADNUM_PER2_GPIO_D27 27 +#define PADNUM_PER2_GPIO_D28 28 +#define PADNUM_PER2_GPIO_D29 29 +#define PADNUM_PER2_GPIO_D30 30 + /* pinctrl hog power-source value */ #define JHB100_PINVREF_3_3V 0 #define JHB100_PINVREF_2_5V 1 --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2134.outbound.protection.partner.outlook.cn [139.219.146.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5AAB33C13EF; Thu, 14 May 2026 11:13:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757187; cv=fail; b=UIUVCKr0F/v2fS1wahNH1y9Koy8Pw8HE1TFvF+aoDN76B0/qw5WAgUESq5Irq4NwNNgbAZ++UJepXj0mSgJs6vh0jHpAWjqZM/zwWQ8BS0f/TlKXmli90f5oZ9jM2zLckhxGCsyLL1wxga+InnJ+656DDZW8YAlehlQDckznA9M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757187; c=relaxed/simple; bh=noMozoAewIGGQZ0X6ukTpqne9N0siyO+EEHYcUuqSRc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=PSQLxV7OX1Xx4mkn9ebKD3TI77z3azEpzlYDr0rTf14NfzOwZ2B104s/K6CoPr/BzbyzV34DpA8w1Id9u8SpkUAWd8q8Fq0xXubKUGPpyhs9AZRErU65b/NHJr4XaF96nrvDDfO//RWjftGxMgPO/jC2gzQInDoSsLEw9dMedrA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MFj3WalBBKblCewTlONFTQaeTZfD7nZ21OP36KI+tEevhqcwZAKI1pjOZn3zXQh/oWSKjztaQWf/q2h2GEzmIs32jYrpQ/30R+bIMKdmXXOPY/Cm6TDLIa65aNLCTnrCrM1eqAFJfLSuc2OTBfwulwKolgucsRCCVL8M/S2rKMJJVzTA5CW/lIoPOq/Zi7DyhcpFhEX8JnVyzEO3S7ue4eWs3ORokyQL9Q6CvNjFf5HZbogleXtIYxDtzuHMTWvW2cNhb8/d2D2wvx4xvpqCBl7xJMYlbAB57DsShdNMPRt56gywKFEsr3fAH3WGW4VqKMoQBFBOa1He+dYvDyopQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=5BuJpWowvLwqTfDYZUfXpozkcUxnDT2v6C9YPVoGtIo=; b=mT0JiLICFk4sU3pEd+By+DUWF9LhWHLnV4KB9jGWkzAEA+1Ta+mvXREdhgmvN9Vt8PXMDlQuICTV8TQM204DT6AgAcfRfyCNiRg9c624H4KXZZGc0oLeFKPEenT4ynDhlcaiWZ4QlaCv4aWbk+DoDiMxLlkG280TUdJlwoEyi/UL4U8Qgvs26oQJPrGTuREBVUNeu1AWO1SOoL3JI7GboMSK+mdMrr5Pw2Aff/qiTmn2GQpWc/zQw0CpKUdhv04qOcoiQHxOe6vY2EjPDh4SXVN8ZLazQBkD0T+zE+ZprxzqTp4QxVBxC5t5pRIudTyCRVB50p2bS1X6Rw6p8plTPw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:51 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:51 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 17/22] pinctrl: starfive: Add StarFive JHB100 per2 controller driver Date: Thu, 14 May 2026 04:12:13 -0700 Message-Id: <20260514111218.94519-18-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: aa6aca7c-45ef-4172-b992-08deb1a9bd1b X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: KYo9ZbzFWMmGx0x769ZAjbofjStLoJ1oWVt+JsDBw8lOVM3CxsLOSkpb1aqjc6C7FVBVkc9R1Aka73WbDp1PK/sl9DShqtojmB8muW6tdUpOcWnduRI+7f6bA90QSjNAg5qvwbWGLg5R5iSy682R5UK5+VDwDyacgQ8YhYHpRuPpdxjLG28dJVekyjXYAQoQnZi4H0LIp2kadQkycqq326KHtf1803cCTfz+8jK7E3GVCtDiIK9W27O+VxOYQ0sHKCqGSNfJyOCs4C7EE9fkkc6kf/HYZl5ZL5+ps119jbqunpYTxFt143Kax0PXE5h/TOOloynyNthGe6f8FO+wYxRUuYZzHAQx4rm6v6Ip8WzoFQ70dqjlHcsVBlX3S6ppWRQzXSDq0558ncL0i8n37+8/tV0dYF80zzMzZdrlhJOnKD6xj/jWrRMFbpM6mLJICT/kYtLLdF+0seKjdqkd5oRPoZCwcBDW7/KGfQ/ii8K+c9FbxtgyeYtsHENhjeiqpgMcKE+SPJcGKrLmBMxkm9jQ2qVou1ahHtjD2r9bo2WgXGugFVwQp1qha54og6F6CnhPbHnhbrMPykuxcUSevQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ncn+WQKTtD4vRffxuLPzatPWStiVhmRtkm3G2BYWP8iwq5KnjRdt0CF//77G?= =?us-ascii?Q?ZzWJDpJ3/wKEa7O1k0Kzr/RidHJkbFZ50n8XLvMW78W0RwHSJ9cFuNdfh/mw?= =?us-ascii?Q?l1eD8T/Rr/5sIyPgf2H83WV47WZxQb3uv77Y1hogGfPTI8IuhV6YFBC4pOQD?= =?us-ascii?Q?bEDAExwdXPDoQaXFwMMKj9E+kWblWu1XJa+RIJihD1VZMflbCxLvMXvbxKU6?= =?us-ascii?Q?YDPLmk8/+G5Zh/AjxS6TGJPJvCffF3E7igGBUF/iJjxbTsE/7Y0y9TfL/GBu?= =?us-ascii?Q?dIJHSUbC7cCnrUxtiJjk7tANkVglG+sGxFpVqrKulIUtzYJqU5WBaZT7PaXF?= =?us-ascii?Q?gdhhdYkMHdXVisO2BC3cqlDQ9ymMxJ6CugQUpcWpy5BVXIhnMm5nnBKmIq99?= =?us-ascii?Q?U45976hmrERBciAu6JvB6Omd3EHwb3b5YXvHqueRsukPbkqOR56DWsg4f2Go?= =?us-ascii?Q?5Sg9LkQL/Dg/dHMQEQcSxZNUVdCVM/PjZxVYdMpBK/cSv7oIYaihzPm9zk3p?= =?us-ascii?Q?nm8OvEIpeV+R8ZdL7i9OXBygOgqptliletsHfKdnv8n5ygt107OiD0P7s5BK?= =?us-ascii?Q?/dmm8CS4S7XfoPg0PMpRo75XtnYmMD0583e/hqv7MxFVzrsjI9OI34Svb2Ex?= =?us-ascii?Q?NrNZyGDxW/Itr9eD5ZRme39WvHFrXuq1OC3eKBAaz0L1Qw5C5D42gQas5y26?= =?us-ascii?Q?x94McRrqfNp35gaAfv7XrlYcDElW7huH5/K8oia4xcZDRO6pY9QxjLqPUJyw?= =?us-ascii?Q?sXymDRNOFWcktrNiHGMoPpryWPAip55idCzpIcCliT6UgxqTQIqLYoqXGeju?= =?us-ascii?Q?VvMmrAPHzu3dYGhWkG+o1KOSkWVfPTV24DiUs66Xe5zmdIhDsIzYKQOl1o9X?= =?us-ascii?Q?yuaEQM/5bEoVE1iaqzW+3nGlHXktP3cEY+hFr3E0waPrKxyt5PUCDoKHTyg7?= =?us-ascii?Q?jezOzXn2JAve9oCtJoadgBm6tbUKDJ/RncEe+k+xlHwsiQNfTWEjbMjYgq1i?= =?us-ascii?Q?gWk28KlfYX/OeNG9Em+41xb05knG6C081a65bJqRPE1pcJR4V1IAi50+qOvs?= =?us-ascii?Q?QftLjBQSZ2pPfakmzmM0pqz8MTS6j2e+SHOnpnToaI8bIb7beoqy2To+bMJb?= =?us-ascii?Q?u+8yZlJYNArwWuR+U+ucRZ3jW8RunQcM7Ok5iAdcETtnmtkM8s/HXuSMNyeO?= =?us-ascii?Q?3oySt2eli7pC/TOUrqzulvY2FTIF53rxb+nRWMqJG5M0GSX/YeeOMffOLbBP?= =?us-ascii?Q?zJjH1+dMDLcHW6egatUhW3lh/hW8Pc/uLabci/94Ny7nBzRnubBkfbod9i6H?= =?us-ascii?Q?QSMtYPJ1sx5vFtIdpdmEBInMWjNfE7rv8xkWBFaI8GAaApviWrY66GS6I9N8?= =?us-ascii?Q?wLIu48gW59MCF2ncmrFYddcP51DhM5o1NDENMLfa3cisI3ksS1AFIenxETN8?= =?us-ascii?Q?MsHapRwK3U9iE4QVSfS/ykJzLOlXLQeGBqx0HqZiwiuaOns206C3G9pwTNKG?= =?us-ascii?Q?jlXdP35znBKYoGHyMLzunAofJ2NRKOL78Hx4gOlFK+zZ5o1tCeafAomrBcIZ?= =?us-ascii?Q?N+IUb9HPgxX8j1GXMZ1RsMMAtlTa5dbGfydT4GJdo1ZgxGzgjqLHxItEap/O?= =?us-ascii?Q?Y89DSEkX+OKp0YMV1YYaK8pyvo6Bc9MJtB2IAXaOk1MxfjkkVHKaCN1HOUZJ?= =?us-ascii?Q?t+YlrsU1zDsBBom1pP0nu4HmxxCPar6bHGCzdFpheYkAx3HU9jRD8aoS8oTz?= =?us-ascii?Q?OuZ+daxBtagxcRko4Bf5uRR3J8oOJtQrMr1dUJohMyu7AfSvm8x0?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa6aca7c-45ef-4172-b992-08deb1a9bd1b X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:51.4605 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: K/BJvuRVx4slgT98rf1kkFl0LGt4JYk1gpqtgmxTquycDJlNaCoCBHtF0eY0OXafohuXYD72hg7t/f6ekWivuSuSN8i2NH05b00fVtVDrF0pmohBKdaNRjQj2EqtA8/a X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl driver for StarFive JHB100 SoC Peripheral-2(per2) pinctrl controller. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 12 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-per2.c | 126 ++++++++++++++++++ 3 files changed, 139 insertions(+) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2.c diff --git a/drivers/pinctrl/starfive/Kconfig b/drivers/pinctrl/starfive/Kc= onfig index c3889a152f6c..edc3b6d9c8d7 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -79,6 +79,18 @@ config PINCTRL_STARFIVE_JHB100_PER1 peripherals supporting inputs, outputs, configuring pull-up/pull-down and interrupts on input changes. =20 +config PINCTRL_STARFIVE_JHB100_PER2 + tristate "StarFive JHB100 SoC Peripheral-2 pinctrl and GPIO driver" + depends on ARCH_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JHB100 + default ARCH_STARFIVE + help + Say yes here to support Peripheral-2 pin control on the StarFive JHB100= SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes. + config PINCTRL_STARFIVE_JHB100_SYS0 tristate "StarFive JHB100 SoC System-0 pinctrl and GPIO driver" depends on ARCH_STARFIVE || COMPILE_TEST diff --git a/drivers/pinctrl/starfive/Makefile b/drivers/pinctrl/starfive/M= akefile index 6beef7e313ef..33213bd1919f 100644 --- a/drivers/pinctrl/starfive/Makefile +++ b/drivers/pinctrl/starfive/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_AON) +=3D pinctrl-star= five-jh7110-aon.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100) +=3D pinctrl-starfive-jhb100.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER0) +=3D pinctrl-starfive-jhb100-pe= r0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER1) +=3D pinctrl-starfive-jhb100-pe= r1.o +obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER2) +=3D pinctrl-starfive-jhb100-pe= r2.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0) +=3D pinctrl-starfive-jhb100-sy= s0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0H) +=3D pinctrl-starfive-jhb100-s= ys0h.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS1) +=3D pinctrl-starfive-jhb100-sy= s1.o diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2.c b/driv= ers/pinctrl/starfive/pinctrl-starfive-jhb100-per2.c new file mode 100644 index 000000000000..b3af13abcffa --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2.c @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC Peripheral-2 domain + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#include +#include +#include + +#include "pinctrl-starfive-jhb100.h" + +static const struct jhb100_pin_layout_desc jhb100_per2_pl_desc[] =3D { + { .pin_start =3D 0, .pin_cnt =3D 15, .name =3D "gpio", .gpio_func_sel =3D= 0 }, + { .pin_start =3D 15, .pin_cnt =3D 1, .name =3D "gpio", .gpio_func_sel =3D= -1 }, + { .pin_start =3D 16, .pin_cnt =3D 15, .name =3D "gpio", .gpio_func_sel = =3D 0 }, + { 0xff }, +}; + +static struct config_reg_layout_desc jhb100_per2_pinctrl_rl_desc[] =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 19, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .input_enable =3D { .shift =3D 2, .width =3D 1 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .slew_rate =3D { .shift =3D 5, .width =3D 1 }, + .schmitt_trigger_select =3D { .shift =3D 6, .width =3D 1 }, + .reserved =3D { .shift =3D 7, .width =3D 8 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { + .pin_start =3D 19, + .pin_cnt =3D 12, + .input_enable =3D { .shift =3D 0, .width =3D 1 }, + .slew_rate =3D { .shift =3D 1, .width =3D 1 }, + .vsel =3D { .shift =3D 2, .width =3D 2 }, + .reserved =3D { .shift =3D 4, .width =3D 11 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const struct pinvref_desc pinvref_desc_per2[] =3D { + { + .name =3D "gpionw", + .pin_grp =3D { + PADNUM_PER2_GPIO_D19, + PADNUM_PER2_GPIO_D20, + PADNUM_PER2_GPIO_D21, + PADNUM_PER2_GPIO_D22, + PADNUM_PER2_GPIO_D23, + PADNUM_PER2_GPIO_D24, + PADNUM_PER2_GPIO_D25, + PADNUM_PER2_GPIO_D26, + PADNUM_PER2_GPIO_D27, + PADNUM_PER2_GPIO_D28, + PADNUM_PER2_GPIO_D29, + PADNUM_PER2_GPIO_D30 + }, + .num_pins =3D 12, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_2_5V) | + BIT(JHB100_PINVREF_3_3V) + }, + { NULL }, +}; + +struct starfive_pinctrl_regs jhb100_per2_pinctrl_regs =3D { + .vref =3D { .reg =3D 0x00, .pv_desc =3D pinvref_desc_per2 }, + .func_sel =3D { .reg =3D 0x8c, .width_per_pin =3D 2 }, + .config =3D 0x04, + .output =3D 0x80, + .output_en =3D 0x84, + .gpio_status =3D 0x88, + .irq_en =3D 0x94, + .irq_status =3D 0x98, + .irq_clr =3D 0x9c, + .irq_trigger =3D 0xa0, + .irq_level =3D 0xa4, + .irq_both_edge =3D 0xa8, + .irq_edge =3D 0xac, +}; + +static const struct jhb100_pinctrl_func_maps jhb100_func_maps_per2[] =3D { + { .func =3D "fan_tach", .val =3D 1 }, + { .func =3D "gmac_rgmii", .val =3D 1 }, + { .func =3D "gmac_rmii", .val =3D 2 }, + { .func =3D "gpio", .val =3D 0 }, + { .func =3D "host0_port80", .val =3D 2 }, + { .func =3D "host1_port80", .val =3D 3 }, +}; + +static const struct jhb100_pinctrl_domain_info jhb100_per2_pinctrl_info = =3D { + .name =3D "jhb100-per2", + .pl_desc =3D jhb100_per2_pl_desc, + .crl_desc =3D jhb100_per2_pinctrl_rl_desc, + .regs =3D &jhb100_per2_pinctrl_regs, + .fmaps =3D jhb100_func_maps_per2, + .num_maps =3D ARRAY_SIZE(jhb100_func_maps_per2), +}; + +static const struct of_device_id jhb100_per2_pinctrl_of_match[] =3D { + { + .compatible =3D "starfive,jhb100-per2-pinctrl", + .data =3D &jhb100_per2_pinctrl_info, + }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jhb100_per2_pinctrl_of_match); + +static struct platform_driver jhb100_per2_pinctrl_driver =3D { + .probe =3D jhb100_pinctrl_probe, + .driver =3D { + .name =3D "starfive-jhb100-per2-pinctrl", + .of_match_table =3D jhb100_per2_pinctrl_of_match, + }, +}; +module_platform_driver(jhb100_per2_pinctrl_driver); + +MODULE_DESCRIPTION("Pinctrl driver for StarFive JHB100 SoC Peripheral-2 do= main"); +MODULE_AUTHOR("Alex Soo "); +MODULE_LICENSE("GPL"); --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2134.outbound.protection.partner.outlook.cn [139.219.146.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 02D713C3421; Thu, 14 May 2026 11:13:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757190; cv=fail; b=FdIJlNhGX053gL/qL3zZMxxOW1x1xxAI9oMyt+4coa11zemkL07M4TKJ+C/OZMoVs7zsz+J9hu9E9Xuu9u198GZzUenglhlixqLjfi706MiLXm3zc/Xwuq3JxdfxL7/EWKJtO6hRiMfx+m8Gw+18wCWinqEnZ7lEjE8WhTcn+w8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757190; c=relaxed/simple; bh=bsfZAceMGPbMpVi0+x9UXYijYxl0KJkrj7KEQofSaEo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=bMQPnumtjuE66vyS4MZS6SRGUShApb2R9FEdjNS5pI3Z7uOxTcvkjouFJ0s3iUYLsgQUkBroqiJguXSSkQc/SRiAE/E6lQxeeXQcJD8LbTDT8hZd1v2yE7H0ebAj4Qge+N77DaZoy+Jsy4FAfwmbvs+89QVuwFKa+pPwu6DWiDQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R86psCVezcSIP1lKUO/Rig7iYKrCogI9Jgn6RmSLPY3mj/uyB7OSsA1hpsnqoD7AxYGJH0jG/8inz5Ej9QSfGZUwxkDUlWUfJuC4tQMS0nNKEfz1haG3MBqG+7CjgP05vWjqfgEV0dNahSvO0A4ftHS/5hefJPJRZjJwHmy1ChG+5FshGtKL+Cx1WkYULaRP4Vubvji9QMozBb+ilUWSYWQ9Er5ONWMuxzqJEm2msXD7kLwnyafTm234quSHkgyCSvY/7A64zTxN7+UBGbhIarhPF4KVdYQ2uxu+ebvEQ0rmjZ/ZBCxvyQmJs1wKx1r9v2wG1JOtCZMqy8mhIjF1Yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=F9pDVrydxquEowDgVENPEodx9Jq6uySds0RAgEWfEjM=; b=j5AEGwXNIonkMsUf5qMyYoieoq3l4fEq5Kxfmt5lt1rdkFwc2BHEziUF2s6gvSZiJ30K/zm90yIuPjON4u/aSDFHRT2a09iI2pccjL+V/2Q8j7tEpPcgikbCzEbeeghs9HdTKWoaUx2eJ6lgC9HXKKWsBC5Yx/Ua9Gp0dHLVQyE5X31pVh8pN5mx8dor2+DwAa3dbvyXc/xMWH2ZuQq9xk+VDT6GYEJ36i/Oulm74/Z0LmA7ugosLMrw324bC6fuBbM52kgbwEmYw+FvYHn8JKj2x8Cek8WGeLq/M5vHbRnZ9kW+CYVm6ib27MgWFOoahyvlGdbwPvc/o0LpsFIYTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:52 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:52 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 18/22] dt-bindings: pinctrl: Add starfive,jhb100-per2pok-pinctrl Date: Thu, 14 May 2026 04:12:14 -0700 Message-Id: <20260514111218.94519-19-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: 67c31cf9-6c40-483d-21f1-08deb1a9bdd5 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: wHZdCHxcmwc+ZPHL0a6+r9QxTXcM4JvlWr0F6abuSjbc0i79cMxeYyeLXbR8ssLJhjzGrozV1Urtu9dMNHt2cIUAk1uxQEFPsHkYP9qxVcKCwBjXHRlUC1jNple3/ngLgvVaPAa56VXUXDL7eBpy8ajIEW+wtNbDrr7JFetvQZ/8NoLu9tjoYdUxlFCFrDTfoggWqa0HWnZ1TigvAz9ruBb5tmjXGY3wUb3wFpEUCcIlsXCIbdWbzls6NHeoJfg4YoMlahdkcobtNUnck/JeVtEYOqmfG+3VX9FFHaJQcZZBbvIZ0wfWZKD9Gh3+9DCYNyA6dUWtVjjXwsB3LDTXL8oQYKOyEVexvMvAxFM4I5b/kdGesITbXXhh9BeAS321oHF+LmoPmIGPhZ8kduLMGxCVF8W8/YjKK6rkEbwu5QDHAdKXJdy7zfqoHWuXoo20arvQWZIspb0iG4pgjox2/9WyFRXwxlgXKFLLSD3cTE7Sg1FKcFOl146hT1CWJGnptJN7COShR9SujPyZMJ0Jw4Xoa2I5JUcjw6vEUwba67DLP2ME1H9Y5LG3AqouaM5Hf2ezkMZhepn/iOHhzxmsfA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iYk/7yn/B55yolIlmVroJHbecjKbCsMZu3Sj7FgneCrZ8esLTwbeFZCb7Gdi?= =?us-ascii?Q?+HX4MzWUEGj2lL/c7onynIhL4wKNxHy83QXlblma90rbR6v+7d/XnACoRX9L?= =?us-ascii?Q?pXrAYzCAd0zsEeNavzIiqOD7DucrFSRChlWvBoSYxJEgGt7v1PUMmSGrCoxM?= =?us-ascii?Q?lsckFrx7QX4ZMmYqApC7ZfpMiZfVdEyjIE0nDfFYcplOEWNYGfqSWrw3ZLY0?= =?us-ascii?Q?+aGy+TGCt3bn4/jDDY7QtsdDpPEBSRU8UF1UcgAUCmtOR2IvjrAYd2dVXMNH?= =?us-ascii?Q?hYYg6ANITMUKppHLVfUWtfB/8HNrsbuanzIFj3awax9nn49hAPhMY+OQoowV?= =?us-ascii?Q?Vul0K8b2vhWKC2a2HceX2pYeTzBi49dNyUVAFvFHvpf9Ydykhed6B4s1zJJa?= =?us-ascii?Q?sKqHZF8WA9Y2vBbqZdLgpIZTJhy7wY+8Fb9GXbNvGz9IDqagbHupBn+sUAIP?= =?us-ascii?Q?Q0B3xr3jtns6RxsMM4RI5zgMUHwMiHt7zGxAKinDE+2qae1mp6MqW6tg9d1/?= =?us-ascii?Q?94GtmG2b8WIJS290LOe6CzmKbVgY//Jk6hTfZWj5/AMMSaz9P/o/s6PLsFOp?= =?us-ascii?Q?8iDViWaeaHK4jqKWgO00ckB+cRktxAB6Kr4RmcL7MzmI46uq631lAsTYAZ5n?= =?us-ascii?Q?36JOyhkBFwVm7FtMTc85YNSAPhfndnQz2Zaiz1k4sygHPcjbogv8jCevfTFy?= =?us-ascii?Q?9UQZHWFvocVFP9MgrsxtiCqRAZExiP+FsqAiDow8WqQTCA5YDHI1EPCEYv4Z?= =?us-ascii?Q?WO2n0Yu3Y6fhSw+g7TjLoybabB8ZiSfxlByPDNwGFvo9+TXXsOs9RrOmBSRT?= =?us-ascii?Q?HNYIYl00GORacJerZ9nssCCTz3DfQZJlnEXpukJzimi2vdVqt/+CGAvlFsM7?= =?us-ascii?Q?ANlKdH+f84F22d4/hMr7GFM1kPsoBma5uMxgq/PE0aFWceuTJD7NWI0mprVm?= =?us-ascii?Q?vT6YgtSJ2Q7itPg+Wq0zg2oJie2pxM369i4rZ5I1YWrmMhvi6G6XdidNUevT?= =?us-ascii?Q?EqY0xztiU6pSYXLGDvvyeIvgFOj+lgZJa8l7xNW366YxiDIqOn/lz9+1c+pi?= =?us-ascii?Q?Cz0YQ+jkg0bVvpZYcB/hgub/F1jwa+YboG/42X9wQKuJ2vbuBbJICdSAiPnt?= =?us-ascii?Q?k0AWnAaIamzJsmclNEiD3dE+YXpkXw3WJo09vX2Fph8IM0y7HKvV3iRShDaZ?= =?us-ascii?Q?u0+bSvcwjby7aQ6B+jdGxzdxZbA8Ty/X0M0myw3tcZ0j8dx1mxTGWk0Xo0bq?= =?us-ascii?Q?13rUfdy/xXBYjxvvSWVXNwjbAidzdHHRDfuq/kIuwtK5/oDeoS2xnV2gDmxv?= =?us-ascii?Q?orBG2XUZYW5HD83p3d2oSmQDxVhVpqa4nZrBvTaHhpHhClkF7lVg1nhtH2IA?= =?us-ascii?Q?0qZ5ZQQnGxdkoR5wy4ozIvL5q97St4xPDeZpFF7lf7OT5vi4w3IiiOYL1YPh?= =?us-ascii?Q?zVm5Xgt0Yh6iaCvhU5ZT8kFnlEwvCbjk9k8PR5fdxWI8ug7FnFjw5bUr4jeT?= =?us-ascii?Q?uUMaNIiaHgAzbbxmWYrVHzGVIirGOWsrkGgs5LTCWx79qp6OLui14kbD1alY?= =?us-ascii?Q?39DDhWrSVHA7ySzJBw/4DXfB3pZ6+y/RA+6jhZwfrv+J0fDCgH0PC7NWjk/r?= =?us-ascii?Q?abmAAXxfcKU6aIRJWoXIKJXvIqlaExtbrPDjO2eLeYxqzbmSuSb98fFykR+H?= =?us-ascii?Q?d/0tOUBpM7eS8TPoe0xsa0cQ1ZgzpB8vJy68SBq3c686VXkvqgVJpNLrSRmr?= =?us-ascii?Q?cOg4l07bfvlcaxQYWhXTwLvTqK7BMMX5f8l3HhUZZ9hS76dWKBMb?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 67c31cf9-6c40-483d-21f1-08deb1a9bdd5 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:52.6904 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: F0fTUP6IwcBVCWvLfQnHJREYQ/rAVumONg4OdjU+MExP2iijKJCHJP/QkkLdNUV217o+gI/LpQVQatjKleUqZ3Hu6/jfocQS+bWtWMgXWZ2ffiDvnIEdfesEStTQO1U8 X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl bindings for StarFive JHB100 SoC Peripheral-2 Power OK (per2pok) pinctrl controller. Signed-off-by: Changhuang Liang --- .../starfive,jhb100-per2pok-pinctrl.yaml | 173 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 20 ++ 2 files changed, 193 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb1= 00-per2pok-pinctrl.yaml diff --git a/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per2= pok-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/starfive,jhb10= 0-per2pok-pinctrl.yaml new file mode 100644 index 000000000000..7ffebf6b1bcc --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per2pok-pin= ctrl.yaml @@ -0,0 +1,173 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jhb100-per2pok-pinctrl= .yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JHB100 Peripheral-2 Power OK Pin Controller + +description: | + Pinctrl bindings for JHB100 RISC-V SoC from StarFive Technology Ltd. + + The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, p= er1, + per2, per2pok, per3, adc0, adc1, emmc, and vga. + This document provides an overview of the "bper2pok" pinctrl domain. + + The "per2pok" domain has a pin controller which provides + - function selection for GPIO pads. + - GPIO interrupt handling. + + In the Peripheral-2 Power OK Pin Controller, there are 18 multi-function + GPIO_PADs. Each can be multiplexed to several peripherals through functi= on + selection. Each iopad has a maximum of up to 4 functions - 0, 1, 2, and = 3. + Function 0 is the default function or generally the GPIO function. + Function 1, 2, and 3 are alternate functions or peripheral signals that = can + routed to an iopad. The function selection can be carried out by writing + the function number to the iopad function select register. + + Each iopad is configurable with parameters such as input-enable, internal + pull-up/pull-down bias, drive strength, schmitt trigger, slew rate, inp= ut + debounce nanoseconds, power source and drive type (open-drain or push-p= ull). + +maintainers: + - Alex Soo + +properties: + compatible: + items: + - const: starfive,jhb100-per2pok-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 3 + + gpio-controller: true + + '#gpio-cells': + const: 3 + + gpio-ranges: true + + gpio-line-names: true + +patternProperties: + '-grp$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing = the + pinctrl groups available in the domain. Each subnode will list t= he + pins it needs, and how they should be configured, with regard to + function selection, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate, input debounce nanoseconds, + drive-open-drain, drive-push-pull, power-source and drive-streng= th. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + unevaluatedProperties: false + + properties: + pins: + description: + The list of IOs that properties in the pincfg node apply to. + + function: + description: + A string containing the name of the function to mux for these + pins. + enum: [ can, gpio, host0_port80, host1_port80, passthru, pwm ] + + bias-disable: true + + bias-pull-down: + type: boolean + + bias-pull-up: + oneOf: + - type: boolean + - enum: [ 600, 900, 1200, 2000 ] + description: Pull up RSEL type resistance values (in ohms) + description: + For normal pull up type there is no need to specify a resist= ance + value, hence this can be specified as a boolean property. + For RSEL pull up type a resistance value (in ohms) can be ad= ded. + + drive-open-drain: true + + drive-push-pull: true + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-nanoseconds: + minimum: 0 + maximum: 4294967295 + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 0, 1, 2 ] + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow (half frequency) + 1: fast + +required: + - compatible + - reg + - resets + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + - gpio-ranges + +additionalProperties: false + +examples: + - | + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + pinctrl_per2pok: pinctrl@11bc2400 { + compatible =3D "starfive,jhb100-per2pok-pinctrl"; + reg =3D <0x0 0x11bc2400 0x0 0x400>; + resets =3D <&per2crg 1>; + interrupts =3D <63>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_per2pok 0 0 0 18>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index 6a80c56304e8..5573b5b0420b 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -210,6 +210,26 @@ #define PADNUM_PER2_GPIO_D29 29 #define PADNUM_PER2_GPIO_D30 30 =20 +/* per2pok pad numbers */ +#define PADNUM_PER2POK_GPIO_D31 0 +#define PADNUM_PER2POK_GPIO_D32 1 +#define PADNUM_PER2POK_GPIO_D33 2 +#define PADNUM_PER2POK_GPIO_D34 3 +#define PADNUM_PER2POK_GPIO_D35 4 +#define PADNUM_PER2POK_GPIO_D36 5 +#define PADNUM_PER2POK_GPIO_D37 6 +#define PADNUM_PER2POK_GPIO_D38 7 +#define PADNUM_PER2POK_GPIO_D39 8 +#define PADNUM_PER2POK_GPIO_D40 9 +#define PADNUM_PER2POK_GPIO_D41 10 +#define PADNUM_PER2POK_GPIO_D42 11 +#define PADNUM_PER2POK_GPIO_D43 12 +#define PADNUM_PER2POK_GPIO_D44 13 +#define PADNUM_PER2POK_GPIO_D45 14 +#define PADNUM_PER2POK_GPIO_D46 15 +#define PADNUM_PER2POK_GPIO_D47 16 +#define PADNUM_PER2POK_GPIO_D48 17 + /* pinctrl hog power-source value */ #define JHB100_PINVREF_3_3V 0 #define JHB100_PINVREF_2_5V 1 --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2094.outbound.protection.partner.outlook.cn [139.219.146.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EECD23C09E3; Thu, 14 May 2026 11:13:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757189; cv=fail; b=tkRrJibWbAVj3+LGyenIuFF0Nn7WwOwo9Ae9eyeXV1BbgJ2IQ0PJRxsFAQu7TVkZ2AyUzVjlxX7ejZLkOXOtlUIC/eYxMx16tps52MKqECNR0yVmkpIl9ylQbUy0sBOd/lwedCCTVdyT24Z92mlSZK2AuOjndaWl0DfS3q0UtqI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778757189; c=relaxed/simple; bh=VhMjsyauWsWta9QHsGBm9/U40FDRow5CvXV2Fo3MenQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=JQ3pERKvJS2NNxBe77+Natonmq7WJJ3hnKANuckZGNYTV8V7OpP4+1fRLLE2kYlgpRZcbEE71cMsm9gAIT+dw4nIeFtB7ZmB2Cl9HweDfuF7CTHBg5Tb1c9gkKHJP3sgePnZrY54t6xUXzVrBOjolGBCUBAyr+KOYuZ7cMqgt5c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gVRulTr9ml8XfJEcx63A4mTgfC8Wc8TN+lugV4Br/7CdHlp64ekrjgtQnYj+Z2P/M8zyPjkgUsDr5OAJYQ8+S599loX1/qHAxxCDCrUwbRHnJMJ/qaLp2V5s2fEjiW7Hav1p5lLDFLMFyEjpC6v+mHjhUI2SDyUbts1RAWOkk6Vz5vicOpjVCJy/25yMbDh0PvAsDxiothP+dmI/izJQB4/SpsWhd7DR4GEipqpPP6K9t1Xeu2ngfRZzx3+we16TKXs4+/2Qgyq/aaCj2cc7NPosixC4hxIR9LbnMG2OkA13ohG0hvHUJcI24LHOBtB8/BhjVYTxbPXr0L7BpSF8Vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=+y664snwcNOdRJMs9N6HdldGQYkJVBWduxyJc3itTuM=; b=RqBMv+iksHcujpN2YIBn9jdkUFGYI+EjdEQkE3b1j7y31YrWzGaRNF6ed0c6Ax43u65rASsCb6LJilCqIeg0We059MfIrLw2KrGFWIReBS8YjL20lIoVzWvo9U9wDYBfNGFgLCpTR8qRXllI18JwO1j8g2tEny98M0XvOnZopLBQQ6aDtTFaz6YflqCj54bMJoVURsJGU8SR0AjPjsMbIwmC8bLVkZ7vlT8J8dNpu4WShBqOQ1Vqr9eMU498bmOTMycI/fFegCgljcCeV3pKtsZPcH1nERKn9CeWBwtXSXpS8DjJeIV/eHNuT3oKDd7KY7Yv2Wf6OECRVoO1LVGcvQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1139.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:15::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.25; Thu, 14 May 2026 11:12:53 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:53 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 19/22] pinctrl: starfive: Add StarFive JHB100 per2pok controller driver Date: Thu, 14 May 2026 04:12:15 -0700 Message-Id: <20260514111218.94519-20-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1139:EE_ X-MS-Office365-Filtering-Correlation-Id: be14a0b7-5046-4cb8-adbb-08deb1a9be7e X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|921020|38350700014|3023799003|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: s8GejrVabmgJtLbSlUshlrakeyl+MrIgxbmjCb2Wy3gD80+6+RlhZOKsRbFBp9csqZYCQ7bGS1OkvDIz4BGud7AfI3zI3ezpaPku9Jbbns2puYNjR6XvU9t89N7tG8KQcAMob9S0U7zxHTL0+4MxVu1srR1dBrDsQF2xW7R4qZGxzRQnEpZ7xbUZL9Wp69T100M+hbg4W9OdVdROKizpeqnSbo0m/E4d6koa3HhSn2oJKFKqgq6Bf871KtxSYnQkGPBtspnM01xw8dkztqEhEs0QyeQXzTQqouWl0tCxILiDQhuybQqRtSBZGIODQ+xhRjE83TQklZlWy/8McK765ifPYK1B8L26AfrRVf59u9FeJa3nuVPhQ4A960zcImapNXMMb4NRc0jnuuDp65K8Hn9bmEiKpS4tH52zr2ueonwwmxsm1slI4C8NmNdlDho81VAOZD4uilMfFJMZC7AaWEsbMBX6ZguC6/hIZYzTyLAFLNwQsX4Xisy69TxM6kqqK8wXyf2PAr+EMiq0FVClQ0emSw4o/oLtitJeOa0pocOX3cVHfBumaQOi7hW/Npp09aNMPKKtM+4PhZXE62kVPA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(921020)(38350700014)(3023799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o0Au2PBjzpWug/Az+KQOhwlWWLzuyyYu7ogIGqsLRdJJKsfi4thXS5o47u/l?= =?us-ascii?Q?XPJgk9JjsfB+ScRbgHXt3Q5mLI6d6Fl8FJGOBt3muSVupMrO1cOs6emW034d?= =?us-ascii?Q?Uq7hM7n3mnrQ8WRp5utHGRCx6tQRLBLgoIXvevMmPSrY34rMDV9IvvT+Fz4c?= =?us-ascii?Q?de0t8bRe46To2jFV8hU/fcTZt6BgKeh2Et1jgkWhmsPpF1TAMrju0VAssfqZ?= =?us-ascii?Q?LmPOfNs6Fby4QQS5uULZXcBOc8M/jHtDD9EyHFjGG3hhS6ajOLyTuZf7aCqi?= =?us-ascii?Q?FxRYpvRXRFUsIpCmXnpaqgPf3mLlGmQ0OmOgrpN4sQedOkQFbH8G5qxmYdcY?= =?us-ascii?Q?HyjVpAkofmYfoT/8jDm4DG6CGaU1lgYTqRYd+WdzZClzcog4fMTR34NGkB97?= =?us-ascii?Q?P0ok9T8HffkMeRY0wfktdJLkBbF64vbm4WtvaA3GjdEgFLOKzV1/Cyq/3Gr+?= =?us-ascii?Q?PZfCVJFcZQvk28gXRH/ocDX41ZDzIGzoy91Ow9VQxQb4WNblpZxkAUGzmBKG?= =?us-ascii?Q?odmYYFeBrMG3XPUcuYDwgN3tsvKAVXSt5ih5mXdBsE9G6nZw68OgK1XjinOq?= =?us-ascii?Q?9ubgTqg2TBlD9JUNRDTDzW2j8fW/MyFL/+6GkYFXnAF3XgLe1BhB7x0nSpDX?= =?us-ascii?Q?3a4j7xURW77/WQpEV/EQEppFYm17sxq/ha7tKkS1OwU7CPmaPThocyXvH31l?= =?us-ascii?Q?YI6x2oUooeg5KVBXF3KDDU2gsl4oTVxfTsOainQ9b2eHdyYmJSeRBxgd0XTN?= =?us-ascii?Q?pjkfsKTE8ZRMZhx0Fm+KfANk8Q6bHQf5331WM2bzft4iovEJOwzF1LaKTsug?= =?us-ascii?Q?xP4i7ejU8elAkuIudQwtBtfPKdHMRj8J4W6UeUIywkzV4WxfnW1sZ73A8VU7?= =?us-ascii?Q?7D6zWRG055Ae04v28+ksMh3yRKqKTYz69u783CaC/lms4obMdnLVudQfKDL4?= =?us-ascii?Q?p0rAqYzBUAShNyN8aXoRZKfVOvoHRz+TQzyKzJjfiOiy4pZcNkYr51te0pHq?= =?us-ascii?Q?jFS90djGZoSAVFxr0DB3+ztlkqbhVHnyqo/9443HyjEdRWOufizqYoh6w8r9?= =?us-ascii?Q?bFxOuLGcgrdm1Ad4swLyfQpaHCH0sij90S0UMW+ltzEGIGoiaKt3JMKuAAdY?= =?us-ascii?Q?k2Ai82G0KqAsn63d2f5LvRJJcYvwxY4VyMHNyaFgQUWU06gvXLUJMNC3y/zy?= =?us-ascii?Q?z1Zi8N5DLdc3y9juT6PvoMDnFjjQy17NDqsh6yvAyHcs95JppViK/4KEe5KO?= =?us-ascii?Q?OfFmzTIUN21OUgkFRyo3gUrXDVgR8WqF6TRnXEJtFmwv1P0VUfcGdLZev8dR?= =?us-ascii?Q?Ly7X6P11F2vODWqpQPEdM1m/y+W+sCRXivaadvyLqh1fj6vvP5R4C0ez1Mc/?= =?us-ascii?Q?wQXcPX+HnM10J+mK+CG3XfG4UctXadIFwQAzfAVmkjtqo1qGkk0Z6Vx6ZhQc?= =?us-ascii?Q?8i1Gx2vSIKwNR69H5ohFeaSdMsl+6TBshnQgigYlsWP73FU6ylwltlr4MVLX?= =?us-ascii?Q?4X/KmWeNG57PNQjfECrcjWNQqWYP/b47PkIcaARH7dJcRewdFpLja96dHIXi?= =?us-ascii?Q?XA1yD07OvyTetWom+qwzJ3YAtb0xANKPhFTq+YOujyIvgs/AZUEo8v6iz4vI?= =?us-ascii?Q?9ty82BIt1Ht7hPzp4PCZgd7SfDHEDVNRPpF3l44er97UVGvjkyKz84/hK1SZ?= =?us-ascii?Q?/mPVUFD3uN3+MLfzMUFrIrrSBA2kwal8SP+/OM/cIhM3QsHJO0Jpfo2gIubz?= =?us-ascii?Q?s6e5H2qB+3KmcGSsFLLEOSFf47rpxepR62WeAUecf1/CXS5Yyr5Q?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: be14a0b7-5046-4cb8-adbb-08deb1a9be7e X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:53.7919 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gCN5rqDPY3emxhh34yUQ3Z2qNwVV3EjoYRRmm0+dbToqVgZJpl3VmEz/YnkOj7Zz/7q7TMmYJHolEbMruqZ7POR2NAmeOdrtPHkF/ewcYjOrduMdRkYM2H9p9ZU9ZzCJ X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1139 Content-Type: text/plain; charset="utf-8" Add pinctrl driver for StarFive JHB100 SoC Peripheral-2 Power OK (per2pok) pinctrl controller. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 12 +++ drivers/pinctrl/starfive/Makefile | 1 + .../pinctrl-starfive-jhb100-per2pok.c | 97 +++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2po= k.c diff --git a/drivers/pinctrl/starfive/Kconfig b/drivers/pinctrl/starfive/Kc= onfig index edc3b6d9c8d7..bf5915e0a5f2 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -91,6 +91,18 @@ config PINCTRL_STARFIVE_JHB100_PER2 peripherals supporting inputs, outputs, configuring pull-up/pull-down and interrupts on input changes. =20 +config PINCTRL_STARFIVE_JHB100_PER2POK + tristate "StarFive JHB100 SoC Peripheral-2 Power OK pinctrl and GPIO driv= er" + depends on ARCH_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JHB100 + default ARCH_STARFIVE + help + Say yes here to support Peripheral-2 Power OK pin control on the StarFi= ve JHB100 SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes. + config PINCTRL_STARFIVE_JHB100_SYS0 tristate "StarFive JHB100 SoC System-0 pinctrl and GPIO driver" depends on ARCH_STARFIVE || COMPILE_TEST diff --git a/drivers/pinctrl/starfive/Makefile b/drivers/pinctrl/starfive/M= akefile index 33213bd1919f..213002da9cdd 100644 --- a/drivers/pinctrl/starfive/Makefile +++ b/drivers/pinctrl/starfive/Makefile @@ -10,6 +10,7 @@ obj-$(CONFIG_PINCTRL_STARFIVE_JHB100) +=3D pinctrl-starf= ive-jhb100.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER0) +=3D pinctrl-starfive-jhb100-pe= r0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER1) +=3D pinctrl-starfive-jhb100-pe= r1.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER2) +=3D pinctrl-starfive-jhb100-pe= r2.o +obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER2POK) +=3D pinctrl-starfive-jhb100= -per2pok.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0) +=3D pinctrl-starfive-jhb100-sy= s0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0H) +=3D pinctrl-starfive-jhb100-s= ys0h.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS1) +=3D pinctrl-starfive-jhb100-sy= s1.o diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2pok.c b/d= rivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2pok.c new file mode 100644 index 000000000000..abeeee2e7a00 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2pok.c @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC Peripheral-2 Power OK dom= ain + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#include +#include +#include + +#include "pinctrl-starfive-jhb100.h" + +static const struct jhb100_pin_layout_desc jhb100_per2pok_pl_desc[] =3D { + { .pin_start =3D 0, .pin_cnt =3D 10, .name =3D "gpio", .gpio_func_sel =3D= 0 }, + { .pin_start =3D 10, .pin_cnt =3D 8, .name =3D "pwm_channel", .gpio_func_= sel =3D 1 }, + { 0xff }, +}; + +static struct config_reg_layout_desc jhb100_per2pok_pinctrl_rl_desc[] =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 18, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .input_enable =3D { .shift =3D 2, .width =3D 1 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .slew_rate =3D { .shift =3D 5, .width =3D 1 }, + .schmitt_trigger_select =3D { .shift =3D 6, .width =3D 1 }, + .reserved =3D { .shift =3D 7, .width =3D 8 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +struct starfive_pinctrl_regs jhb100_per2pok_pinctrl_regs =3D { + .func_sel =3D { .reg =3D 0x58, .width_per_pin =3D 2 }, + .config =3D 0x04, + .output =3D 0x4c, + .output_en =3D 0x50, + .gpio_status =3D 0x54, + .irq_en =3D 0x60, + .irq_status =3D 0x64, + .irq_clr =3D 0x68, + .irq_trigger =3D 0x6c, + .irq_level =3D 0x70, + .irq_both_edge =3D 0x74, + .irq_edge =3D 0x78, +}; + +static const struct jhb100_pinctrl_func_maps jhb100_func_maps_per2pok[] = =3D { + { .func =3D "can", .val =3D 1 }, + { .func =3D "gpio", .val =3D 0, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_PER2POK_GPIO_D40) }, + { .func =3D "gpio", .val =3D 1, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_PER2POK_GPIO_D48) }, + { .func =3D "host0_port80", .val =3D 2 }, + { .func =3D "host1_port80", .val =3D 3 }, + { .func =3D "passthru", .val =3D 2, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_PER2POK_GPIO_D36) }, + { .func =3D "passthru", .val =3D 1, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_PER2POK_GPIO_D40) }, + { .func =3D "pwm", .val =3D 0 }, +}; + +static const struct jhb100_pinctrl_domain_info jhb100_per2pok_pinctrl_info= =3D { + .name =3D "jhb100-per2pok", + .pl_desc =3D jhb100_per2pok_pl_desc, + .crl_desc =3D jhb100_per2pok_pinctrl_rl_desc, + .regs =3D &jhb100_per2pok_pinctrl_regs, + .fmaps =3D jhb100_func_maps_per2pok, + .num_maps =3D ARRAY_SIZE(jhb100_func_maps_per2pok), +}; + +static const struct of_device_id jhb100_per2pok_pinctrl_of_match[] =3D { + { + .compatible =3D "starfive,jhb100-per2pok-pinctrl", + .data =3D &jhb100_per2pok_pinctrl_info, + }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jhb100_per2pok_pinctrl_of_match); + +static struct platform_driver jhb100_per2pok_pinctrl_driver =3D { + .probe =3D jhb100_pinctrl_probe, + .driver =3D { + .name =3D "starfive-jhb100-per2pok-pinctrl", + .of_match_table =3D jhb100_per2pok_pinctrl_of_match, + }, +}; +module_platform_driver(jhb100_per2pok_pinctrl_driver); + +MODULE_DESCRIPTION("Pinctrl driver for StarFive JHB100 SoC Peripheral-2 Po= wer OK domain"); +MODULE_AUTHOR("Alex Soo "); +MODULE_LICENSE("GPL"); --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2123.outbound.protection.partner.outlook.cn [139.219.146.123]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07C403BF69D; Thu, 14 May 2026 11:28:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.123 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758140; cv=fail; b=oC5ZEY8AczXzHi08hckG7ZQEWYk/YI/SRbMl+nfKl/JWWwC2kDwBhT4hNt6jumd2sEryp5NEdCwyBCzP2Y7eeqLWylRnqzLafv5UqTQWavvNB3tVM8gYv36WuQFH5IwaAOp2KMz4tV6kM7K+hMXIMnag4pv/1EH7dytxBLs/GEk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758140; c=relaxed/simple; bh=qC+fhM2BQWxfCTZNwy5hubclzHGMU+8PKY5yyBW9RW8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=onrvpIqnNWaAfbq9tCO70l79Fm3RtCpUs+I3967lCtJ0W4ww+I5vMUhpjkc2CJAhI7zbgXRUSolK4Nc+fiTeqAQbEiQ1YzmK0eaGJwmCetKf/PPlkUMtqfM8zlCMcY+rnlMaCGAQ1TEr8Fc1Xx0bk4MHyRxL05yZAErmt5a2SH8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aBvmm1bscSjiwwK/9yWbQIwpUYih+kDGa0NjPYO5Yi5BCxrHX4xijO/2i9Re5wTcoHTEaK/qt2EpTD0CSNeijcII9Ov3J7mpTedIYBehEe37qbWeUkErtBjzDGqZKgfBhgXv8/UyabygkaejJWzCPgjjQZ9zV8G4gMUM7fmroHCBeg07nF5FlcYdfLDdX3VjJ1nV4m45yhA9PWxy+MZhq5AbB2yBMosM8+j8g8/4ReGzS3OPB7ZYWGdIiMhQ7UxKWDqrAYA547FJEsSFrgrXli1BnxGsXvkIoyR4c9AdMPVMB+M4fB5qorBJJAcSIB1cXob5/qxRR+lJtIl2cX8Nqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=hamHcuoI77Fdf5mGHuQsPXg31kLNjBAo3lpP5G++Hog=; b=lGe0qzb9nhd7IK9Lh7ryNssFLpYSjc1vxXuhw8VB6gSNOSki/G8BHl0b2UObCeqCLesWMuq0oo2S+4t19UY5szDxxkA9oSo4hqNCgplHMJwugUl26htzIfbx1OJ/nRTPlytKjnORRPplq69j8YVxyo2o+JcInFRepiehmgcTxh8iYGs/bzRl5FZtOk6KJarIJzSBSnCW9g3BcW8q/A1dqwU5nhxrTkRIBZXsNw+HnYocPTGoRGwmBknBoRjoTzDwVww/okMrfpA0xu2+1Y/t+8BxnyPlXMOPwjrUOzpVwvhhSqthRo9nT0tSJSXjYdycbLV4q7zGg3iTKNIZ6tJrTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1267.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.12; Thu, 14 May 2026 11:12:54 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:54 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 20/22] dt-bindings: pinctrl: Add starfive,jhb100-per3-pinctrl Date: Thu, 14 May 2026 04:12:16 -0700 Message-Id: <20260514111218.94519-21-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1267:EE_ X-MS-Office365-Filtering-Correlation-Id: 14099480-fc4e-40af-4345-08deb1a9bf25 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|52116014|366016|38350700014|921020|18002099003|22082099003|56012099003|3023799003; X-Microsoft-Antispam-Message-Info: H7XI1nk0wpJ4aWGExZ2SqjMSN9E7Ptt1Z0THesxKoHhNVzo4T6Gnab2yBFg1S9ApLYPw0mzPoSkTshk6iwv5aF06C9nvC7e3KP/nSKM2fUTE7iIbyVyIpCU6SLJfYXsVFSKa9/qmRnFk14akNXAv19kygJXElmG2hcG975NEsOJ22sFIjd0hXaQpkDj40mUQs1YO9LDFLjVGuwjzWmxhThuCuObUDcB7Mx8fcG9Vlo2m2uCETv0OWVIKMY1xer0rkcjNe3z+z06MoDY8pwUoxRAkGZDTyHkwaU0bl9oSUxhccU44X6Znf4oaP8Nn/9F/Jf3mmn1k3kWIZFuy/V7s8Y47of0qjG4I7tBFBCmIkCGPGKhqY//iOnurfdUjaNzXXyMV3HuPZIkSrrOFbfYAGOIZ8h+io0pA7V6TktcUKqcDjkflcyoD46w841OHUapzc7fyYN7qPF4qtWqaTjBZFRimWXx6Zc43K+TYZ9A9eU9J4r+3esHkdJLyuNw0GanhKGuW+MSsvn+7N3PAXHzLxs4tQyJjIjPfQHbV93QuO7SXclJhTGhrRW4HkCr8uXmxMLMC67D+4wrFVNXvkwO62w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(52116014)(366016)(38350700014)(921020)(18002099003)(22082099003)(56012099003)(3023799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RMbocLscELM3shqQ56tFWhmMFWYWcJtkNcf9D8cj9avMEP3SM9XphRGOb2yO?= =?us-ascii?Q?XF+6ZRj0hMbZYCsLzwbsdtYjrZXZrv/nqr5feL6M3rQMnzRzOfI8oNCcELnA?= =?us-ascii?Q?z64dTdZZ55M4U20flptLcbkqJU5X09pGoC8G/pDJ46t3QVXoWIM9ZUrI1pbI?= =?us-ascii?Q?tNBBo57VWwipqOqDScClNQaXZnFR+SL5CFdOFZ75t8mqElz7cwKCAw2UGGHF?= =?us-ascii?Q?wiYTc/ptJdPJ7xNbqdff+uD/2Nk8Ef85M+wK0VSbvRtcS0wGvMUB5nVZaWO8?= =?us-ascii?Q?ozU0zb3VdmfCqH+VuLt4C2MO3sp+SElOvmpqAwMe4WHCIKxaMOuFo1CsanKv?= =?us-ascii?Q?1WtHDwNEnMFnZUNZm1fNCB0uyFJoVro53WgGTTZNnxxEt/pfBxnItCCQuD00?= =?us-ascii?Q?WZneDoRA5Ub+aMVMVyB1T+05uiF/8XT1f96dqCmm355y7kHERnJUxHMBNfXU?= =?us-ascii?Q?BTVGme2Fd4j/HKDOAxOOwNmJ8JDdYu+APjyvg0ppReRxN1LGi/AZ+7ID8Ehr?= =?us-ascii?Q?jwU45lmMSQpX/seR0eLmCpK4AdFnmMa0HacIdGTOAOtSRPQKuLY71ijn5ZkC?= =?us-ascii?Q?KpK4E5OeXxLz7D9XLZ8WkYghy3Mp1AghgOCV48BKlgIf7sIy9GuLCNMNNXL3?= =?us-ascii?Q?bhO8UV9RSyc9B+Ci6924OWa17ifgxs+JY/kGvHpBDcVo7OE1v4XYj6u+ujqF?= =?us-ascii?Q?/VULratypbBMJI45mQtxStQa4JDRdv94PB/T5N8ihcyWUqi9MQHlyXiH4W5b?= =?us-ascii?Q?eb/juqO86idFeFulvcXiEFvT6AWaT/dW56xxfQxSgjOI6Cy7azzofkRakYFo?= =?us-ascii?Q?7P6POW52i89aOYsEcqE/UrBlo2suvVmGpqm4rFLhBsl7czAvGFXfExSpMo92?= =?us-ascii?Q?xaP981fbKQTH+DbrPzyNE7TC2ZLzSWsyQegP0y1cFkVRUgXyxtywqKlhA4AJ?= =?us-ascii?Q?6ERydusZG88tfUQTmewxlTKyiypqko+AwlYY3Js8cLdKYVqoYokQi+pm7bKf?= =?us-ascii?Q?4v4W1Y0DXpjAge6xB88ShAXXvT0fNip8I/JLPzYOKa6MiDtObIpyyiRaiEPj?= =?us-ascii?Q?02bl1rSIvMQZX9pPRgi1dZe+5F5rNVuTKr6vN6puCCtPMp9k5+10BAzHlMlM?= =?us-ascii?Q?lRANje0yyTB2+wrsC11NEnZbvdyY6OKNHTeXXjATggS/m1bUcc2Q7mWhGsBB?= =?us-ascii?Q?DKgOQwtu8N0XRF/gjzt1inBJE04gwMPpPgQ3Tzajj6mQpi9Tq1bDpY44IAEI?= =?us-ascii?Q?Etr9KOEynK7TXmCF+qBhNCe5/+79LkTWrQipHqwZ7pT9cBQoUJN/rDR7rArV?= =?us-ascii?Q?ojRFvE2IFmBPYApfiiCYJyebM4cD7q6TiVBi+HIImyQuFZSeVctqisUqa/xf?= =?us-ascii?Q?UPd0ppdUoAwpjkd92Dwd48Rb72PyKH+o4WYuNFykNy8YsydTbsOYZXoYksQd?= =?us-ascii?Q?+7ntEnDoLmJptwvXBfZZc88Any6tBwczph5JMsP6AEcwRtxO8U0L/eFPY6dn?= =?us-ascii?Q?xxNgIBD14c7dWGfovW67DzLW74jsacbygP3wz9kjOy9ooORiCHdHC9IbjmQa?= =?us-ascii?Q?a3A6UcLkjGDVCZ+LYSe0R6REG45eZ20ytFeJuBFlmVI/xxRePjfcx5v74U0T?= =?us-ascii?Q?f7Zoo8og/p0OQ2kAfCfR32UIxySkTKCn4HCvTRJoSjwhsRYMXf52ntPvNUL9?= =?us-ascii?Q?BQ0uye90hBXKW1FPnTMf3OS+ApGfrHc2DXvhbbx/ibM4ARTz0K0qYxAxBZtb?= =?us-ascii?Q?wD9FLgOhOc+TXQpe5IT5bbZ4NPq1VugnwXrQX9R00nomV9d78sOQ?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 14099480-fc4e-40af-4345-08deb1a9bf25 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:54.8759 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /sN6cl9aljB/bwDWqb2WoFIoZ3VbS/L8CndU6BEJA7GIvuMkd0+3Nietso71jhyLQ21756MijmsB1Dy7xaQGvFyh20/23qcjk0buZf39USs3t8rj3cmtCPv03PIBlbx2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1267 Content-Type: text/plain; charset="utf-8" Add pinctrl bindings for StarFive JHB100 SoC Peripheral-3(per3) pinctrl controller. Signed-off-by: Changhuang Liang --- .../pinctrl/starfive,jhb100-per3-pinctrl.yaml | 173 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 14 ++ 2 files changed, 187 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb1= 00-per3-pinctrl.yaml diff --git a/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per3= -pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-p= er3-pinctrl.yaml new file mode 100644 index 000000000000..a1e5e09c06b2 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per3-pinctr= l.yaml @@ -0,0 +1,173 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jhb100-per3-pinctrl.ya= ml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JHB100 Peripheral-3 Pin Controller + +description: | + Pinctrl bindings for JHB100 RISC-V SoC from StarFive Technology Ltd. + + The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, p= er1, + per2, per2pok, per3, adc0, adc1, emmc, and vga. + This document provides an overview of the "per3" pinctrl domain. + + The "per3" domain has a pin controller which provides + - function selection for GPIO pads. + - GPIO interrupt handling. + + In the Peripheral-3 Pin Controller, there are 11 multi-function GPIO_PAD= s. + Each of them can be multiplexed to several peripherals through function + selection. Each iopad has a maximum of up to 2 functions - 0 and 1. + Function 0 is the default function which is generally the GPIO function. + Function 1 is the alternate function or peripheral signal that can be + routed to an iopad. The function selection can be carried out by writing + the function number to the iopad function select register. + + Each iopad is configurable with parameters such as input-enable, internal + pull-up/pull-down bias, drive strength, schmitt trigger, slew rate, inp= ut + debounce nanoseconds, power source and drive type (open-drain or push-p= ull). + +maintainers: + - Alex Soo + +properties: + compatible: + items: + - const: starfive,jhb100-per3-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 3 + + gpio-controller: true + + '#gpio-cells': + const: 3 + + gpio-ranges: true + + gpio-line-names: true + +patternProperties: + '-grp$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing = the + pinctrl groups available in the domain. Each subnode will list t= he + pins it needs, and how they should be configured, with regard to + function selection, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate, input debounce nanoseconds, + drive-open-drain, drive-push-pull, power-source and drive-streng= th. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + unevaluatedProperties: false + + properties: + pins: + description: + The list of IOs that properties in the pincfg node apply to. + + function: + description: + A string containing the name of the function to mux for these + pins. + enum: [ gmac_mdio, gmac_rmii, gpio ] + + bias-disable: true + + bias-pull-down: + type: boolean + + bias-pull-up: + oneOf: + - type: boolean + - enum: [ 600, 900, 1200, 2000 ] + description: Pull up RSEL type resistance values (in ohms) + description: + For normal pull up type there is no need to specify a resist= ance + value, hence this can be specified as a boolean property. + For RSEL pull up type a resistance value (in ohms) can be ad= ded. + + drive-open-drain: true + + drive-push-pull: true + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-nanoseconds: + minimum: 0 + maximum: 4294967295 + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 0, 1, 2 ] + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow (half frequency) + 1: fast + +required: + - compatible + - reg + - resets + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + - gpio-ranges + +additionalProperties: false + +examples: + - | + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + pinctrl_per3: pinctrl@11c42000 { + compatible =3D "starfive,jhb100-per3-pinctrl"; + reg =3D <0x0 0x11c42000 0x0 0x1000>; + resets =3D <&per3crg 6>; + interrupts =3D <64>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_per3 0 0 0 11>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index 5573b5b0420b..05fbb8e0343c 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -230,6 +230,20 @@ #define PADNUM_PER2POK_GPIO_D47 16 #define PADNUM_PER2POK_GPIO_D48 17 =20 +/* per3 pad numbers */ +#define PADNUM_PER3_GPIO_E0 0 +#define PADNUM_PER3_GPIO_E1 1 +#define PADNUM_PER3_GPIO_E2 2 +#define PADNUM_PER3_GPIO_E3 3 +#define PADNUM_PER3_GPIO_E4 4 +#define PADNUM_PER3_GPIO_E5 5 +#define PADNUM_PER3_GPIO_E6 6 +#define PADNUM_PER3_GPIO_E7 7 +#define PADNUM_PER3_GPIO_E8 8 +#define PADNUM_PER3_GPIO_E9 9 +#define PADNUM_PER3_GPIO_E10 10 +#define PADNUM_PER3_GPIO_E11 11 + /* pinctrl hog power-source value */ #define JHB100_PINVREF_3_3V 0 #define JHB100_PINVREF_2_5V 1 --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2122.outbound.protection.partner.outlook.cn [139.219.17.122]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD21E3AE197; Thu, 14 May 2026 11:27:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.122 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758039; cv=fail; b=QR3LvwCxFUw5//RZ++ny+cPmcpf3q165Df11QAF3SeChkxJrLXE0IPD1GNqKT+ZG5ifAQ3Gqcx/+SOltENyjsNs9hDtBOuF+QT3FKtwslXAIEceP89DBkzTIr+MRuRh7GrNpSs/EIJwq93uJE/neUk+nURDfHFSjj35TTEBEg1Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778758039; c=relaxed/simple; bh=0ZLoT1J7e+kJmAAkCdjgvMAjgZ7R8GJr+ekUOOZfllI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=GuGa4IZgcSdd6mTcHmhCnNe2B4alKCojdBu/xM3u3VqKsF33hkThNaHOHWjM1VYq3HpOYVlF7dgswOUc+9G7qvd6QE0fzHhdzLXy47saX5Ip5dZMdd6QdbiZxlgLcU8W7lwUEgXTiqOTiDltKxeHufTCgzzgFfMnwmw5sdcHhwo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.17.122 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ncrOQulEkwI7OQFSq0CCumvp7Wh7zfz8XvBKHKNpRQoLWKGaYkUYRQINjIzq+8d5UCdbBIlRLoLCGwAuLb89FcNNQr4ije15MzSKqFjEB0QXKzX1nOJ9TfkVeMr/oMsQf4o/ZWlsMWItVkbDg1/L/KpfilZwRwpfiOxf94D8OArl4UsEHI6u52r8qNOZEzC9s5ZJOtggnN0mlEv8ILg9XnypoqG/zi4R1GUp1KKhHJH4kWHutVj41jRaDOV3k5a9rnu9IiQXXxvz3RGt5v1rI6diekh9/2NPQs96l/mbRY8FbmfJXLSYgFKaza/xuN55bTyz/wbZLtyYmgJI3FT9wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=A4djdK8sd4BSo6unuq6a4V8+N/ZeB5VIFE/MpVC80Ts=; b=flBO5BnkVtj4x9WfIXFEwfs1WqP6tiJPfmMnerjXCeYTVB3/v/iNedK8MDIQgwMCHIdfZq0RwZNSCJIA5HPpB6RBMfOY8u50GHxWpsJnAZ/kEISuEz6aIhAyfldzOXzx1QRtr/XkSxnT97HnTAu7V7TmeNNEDz/bdv0xzT29XZsMdwkBvKLwPTo1vFIElFWkxzNKJmWwybmyg/oHWVnu1yrYtEnP+/3rg9X6zzzLqPXp7RhRG+lrSpQ+zOGAWrvoto1FgU3B91QrptIie5kMSlpz07cIhB2NlF07+BNHgVPO8th4lOeTg06M4PWbdV2eLWNKLRRcAcMUcwquZPvJrw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1267.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.12; Thu, 14 May 2026 11:12:55 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:55 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 21/22] pinctrl: starfive: Add StarFive JHB100 per3 controller driver Date: Thu, 14 May 2026 04:12:17 -0700 Message-Id: <20260514111218.94519-22-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1267:EE_ X-MS-Office365-Filtering-Correlation-Id: f00795e6-4868-40c0-aa8d-08deb1a9bfc5 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|52116014|366016|38350700014|921020|18002099003|22082099003|56012099003|3023799003; X-Microsoft-Antispam-Message-Info: HXf4uJ06Tot6aekF6aKnau7qbecT4bNMfV39PTQUcgrUgLIdkQb82IxZT4xHI3HKXgHVz6KnrvE0uslgdOdAU6Xd/dzV2Tfjif2fyIAX/NN9tPTQ3+oZqjxy+KtZCnl75E0V/NdASDJHzW3TuNkstuwSLHvptxZVrSydLjIZT248rbtBu2rzTS9b/fTkxg5H7f2oC0b2LdBi3nr/iSlL1PM5YDX590FG0qkT6o0YQb41+AOaR4gNboIjzradSI16/0uhBI1Ad8BdkA0c0bWG5YOqorZ8KXH3Y1ZppjU2OxO/YWXz3fisBc1ei+jy4pVXMDrs5g6jkNqcpT0bBT3IWcxjasBGplmN4aR+ehcSjcmgVCAvypU7ko6gzWRn9kjCnD/IRYZOSYGYb8OdSJQDJMH0RQn0T83gllWsEO1NGf/TPJboNd/3vnd2IfWnxJuebvgcnR1xSBFqr0s0pxFHOry03YSblrHPRftLK+AgriiWyAer1E96u6B2WWy891EH4l0EmUpPAATMRVoCwTNMVaVi6R7G/20vdu+7jFHF0w4giSINrBwWGKnQYbQhW0spM7nx3xj4nk7NNnloZJaSXg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(52116014)(366016)(38350700014)(921020)(18002099003)(22082099003)(56012099003)(3023799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pnk7QYjWIT5baVkFxsl8I65gJJRqL6UQxBI02/3vq03uTcqf0sHeNBWJjVxZ?= =?us-ascii?Q?9n9KdtA6jj5taEL8Sz20L12ZucoLkK4gni6OnRUrsBBvegXk+g+PlskOy3iH?= =?us-ascii?Q?1rZMZS+eI9xeowRVaYXFSy6ayZELMEmizTyRm/YTrm+HYkLbGNzUeK4ZIG+v?= =?us-ascii?Q?+be8hm4SmYbAlaNoBUTvVhTSuLETGuonPDPLLkLc7BfCLHWyfMNE6UaAu2zE?= =?us-ascii?Q?GCw7ha/muYraHeB8wu/rzJXy0EZdC+5KQ70o1CusD6V5VW6HS/bFq/1RLsBH?= =?us-ascii?Q?MCD7ECxQEp34Zl7k3kJ0iBKhAhm0RTQ8sJJJd35ONYI8/J/22iQdIdI7RzFI?= =?us-ascii?Q?EJ+nIX++Bx23kh9VAGqUPjJtX8vns6bvTyUlz77g3zu8111E2kBfAD9+o8mv?= =?us-ascii?Q?G5te35gja/vxrfBobrv4QYhAE3UsUEo6orWFUbRMvL98jt91FZo05eB8qoQp?= =?us-ascii?Q?KMzh/xJGcHXgMpdTDnv61iP663Jsgt/36EM9VFR/QQZFaHKyT/coyqIy6k58?= =?us-ascii?Q?slczJGrpdVvnOT6vhwIbHOaD3/mv+taWzc/rAp71yuQAHERc/RB/MZAWFw//?= =?us-ascii?Q?mZ2khh0czN7ORJw5Bwdm2Z1M78K7bEBoCs6okp9SM6ypokwi8kPNcnJMo3is?= =?us-ascii?Q?Sqobf+Qjb1Rz8+ygH78kRuZHc8oJyjwcolLBjQksDkeggr/Dy/P7ZrjLOYbl?= =?us-ascii?Q?DMtSN4BZBXPMSdn/2cdSG9MKVR4lTyTeqXE9ciufN0MyI2K3WJzQfMyu9DAt?= =?us-ascii?Q?TS0YCc9k7TssPCX0U/52W9cIe7VIG4+XBvoZieA1X60zlGGuLsl6Sl3jyBzA?= =?us-ascii?Q?R4GoPRKP8LAIHgHpsmkNX5CqoSHC/1Wu9c7NEjF443t+cGRTYqV9fmk6U2YY?= =?us-ascii?Q?GhwHIrKnRL5LE4zZGd+2QpHU+m2Yn0alopcYVGGtnAHpQ4rztAa74BdXOo51?= =?us-ascii?Q?EZLJQMmnxC0uXl8yZTRo9PejOX6UBmI7jiKcuKpms5NVoRPu2iyrGceIh8Hz?= =?us-ascii?Q?t05xZMMVbCtxYa/7IjEaTPxpVvUn2SYBGhoUbZZt7O+DsDWv5oTAvWFdBa++?= =?us-ascii?Q?xUiR5kv1iWrtYVsGL2hb4AdfIDNQyx5LKUgfwaUn53mlTWJaZ8vGcqJ5869p?= =?us-ascii?Q?+EpGn59lBAqobbtXsV9RVsXxeoBl5TB6jkgpFQrRQ4kO03qFoM/n8Oweqnls?= =?us-ascii?Q?imUBhAf8RhVx/3lv6gCYW5qbnU87Sq2FXD7UDu/M2TG2ZoHtUplzRC3CFZcJ?= =?us-ascii?Q?gn4AV4oREMU7ZPZ4axqqPBF61xHAfjoEVYkQR5VUOR8Y7mn0qNSk72lcgzkQ?= =?us-ascii?Q?mJYzccG3TyiYgKUYz5M+NnTE2AY8f/dCebyVPiVy50kGApcNsjZ61GpKaLCn?= =?us-ascii?Q?OXPTNboHvzS+PmEuhBsYv3+3CEh/2xPnkM/7qr3aZLJABOejBU5sQWPFw7zy?= =?us-ascii?Q?ZmMs5ue+t74We1RWXdfHJG24nz0o3UXJ3q1OWkB/37yFUunT/oRdRFnDiW9M?= =?us-ascii?Q?h1XJVAwAC15v44nIT7roXDJHLbLxkrnj0AJiis+cySdYz8algNLYwTtJH1fK?= =?us-ascii?Q?Nn3O1372ZV7St8AR8U2TZYvAuF6jNtVXmDepWDGRWFrcHgOfdKiT4Uu5QVoF?= =?us-ascii?Q?punnuV03ReYuFz2W2H55UgGRofd8h1HZl6QvMV5NOP7Zrv+hy+kRmcAKRvFM?= =?us-ascii?Q?U60cZOR3yD/CO7JvQ4xhmlAitan4HqpEYy4fr5LNwZVsZgp6tZBOd7dveqDr?= =?us-ascii?Q?FeEnWrViqi5/0ACqMwI2/W+Uczep6JfW/Z7XWNFMFEP35krT+rKw?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: f00795e6-4868-40c0-aa8d-08deb1a9bfc5 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:55.9255 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 1jMYovL5q2UW0AC+wbyOHnH3cSby+wkTJ05DF1MyAR8WQCxw+RUBm0vZ7Z7GlMhFs65QhSNIKYIjkqGr5lB2Y8zWO8rZ7njRmWnjmn9/qs1jLL92/jU8P0BH4KnPocst X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1267 Content-Type: text/plain; charset="utf-8" Add pinctrl driver for StarFive JHB100 SoC Peripheral-3(per3) pinctrl controller. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 12 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-per3.c | 121 ++++++++++++++++++ 3 files changed, 134 insertions(+) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per3.c diff --git a/drivers/pinctrl/starfive/Kconfig b/drivers/pinctrl/starfive/Kc= onfig index bf5915e0a5f2..da1dcdcc4140 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -103,6 +103,18 @@ config PINCTRL_STARFIVE_JHB100_PER2POK peripherals supporting inputs, outputs, configuring pull-up/pull-down and interrupts on input changes. =20 +config PINCTRL_STARFIVE_JHB100_PER3 + tristate "StarFive JHB100 SoC Peripheral-3 pinctrl and GPIO driver" + depends on ARCH_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JHB100 + default ARCH_STARFIVE + help + Say yes here to support Peripheral-3 pin control on the StarFive JHB100= SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes. + config PINCTRL_STARFIVE_JHB100_SYS0 tristate "StarFive JHB100 SoC System-0 pinctrl and GPIO driver" depends on ARCH_STARFIVE || COMPILE_TEST diff --git a/drivers/pinctrl/starfive/Makefile b/drivers/pinctrl/starfive/M= akefile index 213002da9cdd..351fce524fec 100644 --- a/drivers/pinctrl/starfive/Makefile +++ b/drivers/pinctrl/starfive/Makefile @@ -11,6 +11,7 @@ obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER0) +=3D pinctrl-s= tarfive-jhb100-per0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER1) +=3D pinctrl-starfive-jhb100-pe= r1.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER2) +=3D pinctrl-starfive-jhb100-pe= r2.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER2POK) +=3D pinctrl-starfive-jhb100= -per2pok.o +obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_PER3) +=3D pinctrl-starfive-jhb100-pe= r3.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0) +=3D pinctrl-starfive-jhb100-sy= s0.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS0H) +=3D pinctrl-starfive-jhb100-s= ys0h.o obj-$(CONFIG_PINCTRL_STARFIVE_JHB100_SYS1) +=3D pinctrl-starfive-jhb100-sy= s1.o diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per3.c b/driv= ers/pinctrl/starfive/pinctrl-starfive-jhb100-per3.c new file mode 100644 index 000000000000..cacbed03a123 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per3.c @@ -0,0 +1,121 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Pinctrl / GPIO driver for StarFive JHB100 SoC Peripheral-3 domain + * + * Copyright (C) 2024 StarFive Technology Co., Ltd. + * Author: Alex Soo + * + */ + +#include +#include +#include + +#include "pinctrl-starfive-jhb100.h" + +static const struct jhb100_pin_layout_desc jhb100_per3_pl_desc[] =3D { + { .pin_start =3D 0, .pin_cnt =3D 11, .name =3D "gpio", .gpio_func_sel =3D= 0 }, + { .pin_start =3D 11, .pin_cnt =3D 1, .name =3D "peci1_out", .gpio_func_se= l =3D -1 }, + { .pin_start =3D 12, .pin_cnt =3D 1, .name =3D "peci2_out", .gpio_func_se= l =3D -1 }, + { 0xff }, +}; + +static struct config_reg_layout_desc jhb100_per3_pinctrl_rl_desc[] =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 2, + .drive_strength_2bit =3D { .shift =3D 0, .width =3D 2 }, + .input_enable =3D { .shift =3D 2, .width =3D 1 }, + .pull_down =3D { .shift =3D 3, .width =3D 1 }, + .pull_up =3D { .shift =3D 4, .width =3D 1 }, + .slew_rate =3D { .shift =3D 5, .width =3D 1 }, + .schmitt_trigger_select =3D { .shift =3D 6, .width =3D 1 }, + .reserved =3D { .shift =3D 7, .width =3D 8 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { + .pin_start =3D 2, + .pin_cnt =3D 9, + .input_enable =3D { .shift =3D 0, .width =3D 1 }, + .slew_rate =3D { .shift =3D 1, .width =3D 1 }, + .vsel =3D { .shift =3D 2, .width =3D 2 }, + .reserved =3D { .shift =3D 4, .width =3D 11 }, + .debounce_width =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const struct pinvref_desc pinvref_desc_per3[] =3D { + { + .name =3D "gpios", + .pin_grp =3D { + PADNUM_PER3_GPIO_E0, + PADNUM_PER3_GPIO_E1, + PADNUM_PER3_GPIO_E2, + PADNUM_PER3_GPIO_E3, + PADNUM_PER3_GPIO_E4, + PADNUM_PER3_GPIO_E5, + PADNUM_PER3_GPIO_E6, + PADNUM_PER3_GPIO_E7, + PADNUM_PER3_GPIO_E8, + PADNUM_PER3_GPIO_E9, + PADNUM_PER3_GPIO_E10 + }, + .num_pins =3D 11, + .range =3D BIT(JHB100_PINVREF_1_8V) | BIT(JHB100_PINVREF_3_3V) + }, + { NULL }, +}; + +struct starfive_pinctrl_regs jhb100_per3_pinctrl_regs =3D { + .vref =3D { .reg =3D 0x00, .pv_desc =3D pinvref_desc_per3 }, + .func_sel =3D { .reg =3D 0x3c, .width_per_pin =3D 2 }, + .config =3D 0x04, + .output =3D 0x30, + .output_en =3D 0x34, + .gpio_status =3D 0x38, + .irq_en =3D 0x40, + .irq_status =3D 0x44, + .irq_clr =3D 0x48, + .irq_trigger =3D 0x4c, + .irq_level =3D 0x50, + .irq_both_edge =3D 0x54, + .irq_edge =3D 0x58, +}; + +static const struct jhb100_pinctrl_func_maps jhb100_func_maps_per3[] =3D { + { .func =3D "gmac_mdio", .val =3D 1 }, + { .func =3D "gmac_rmii", .val =3D 1 }, + { .func =3D "gpio", .val =3D 0 }, +}; + +static const struct jhb100_pinctrl_domain_info jhb100_per3_pinctrl_info = =3D { + .name =3D "jhb100-per3", + .pl_desc =3D jhb100_per3_pl_desc, + .crl_desc =3D jhb100_per3_pinctrl_rl_desc, + .regs =3D &jhb100_per3_pinctrl_regs, + .fmaps =3D jhb100_func_maps_per3, + .num_maps =3D ARRAY_SIZE(jhb100_func_maps_per3), +}; + +static const struct of_device_id jhb100_per3_pinctrl_of_match[] =3D { + { + .compatible =3D "starfive,jhb100-per3-pinctrl", + .data =3D &jhb100_per3_pinctrl_info, + }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jhb100_per3_pinctrl_of_match); + +static struct platform_driver jhb100_per3_pinctrl_driver =3D { + .probe =3D jhb100_pinctrl_probe, + .driver =3D { + .name =3D "starfive-jhb100-per3-pinctrl", + .of_match_table =3D jhb100_per3_pinctrl_of_match, + }, +}; +module_platform_driver(jhb100_per3_pinctrl_driver); + +MODULE_DESCRIPTION("Pinctrl driver for StarFive JHB100 SoC Peripheral-3 do= main"); +MODULE_AUTHOR("Alex Soo "); +MODULE_LICENSE("GPL"); --=20 2.25.1 From nobody Fri Jun 12 14:18:14 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2096.outbound.protection.partner.outlook.cn [139.219.17.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF5391548C; Thu, 14 May 2026 12:46:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.96 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778762774; cv=fail; b=TfamcggznZ46/VdU+zpaAsRK8Cu4CCoHN4dDNu4rEh1j0BPt0PGxvw6vdMNa71QR83qa60TTvN/VTps4t8vtPzNCi05c4ZMPnttYOvHcgDsXeubhgM8K4mBYXBZldHgsexB9bqy5zlv+JXVxBQz7YnVqE3+fimudG06R3Blu4/8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778762774; c=relaxed/simple; bh=V4H3/QVPpB6EingwX1pohCAWaa0aHySv90BOusjV6t0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=TjEkywiXeeKfpWcdCgG82X44tGzFTxG2jJJEMcSRwvYFyWiWWMegHN1ZZC0gIvK33d1guOuOb7ABxEC4DXeNrrqaWyLB8mz9naXi6tFhrhgWO5M1f6KgOJJ86TygKmYIEgNuWIf/eJSqIZJfvEVT15krl3KK/mq/mn16uzsx34s= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.17.96 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RgK0zSAGxbTUmZHVYE1Yod/tj/yqXbOQzFYCoFPdKXtw2zcejYY91/gp4WiuQpVDzq8dSpIq95jyxF3pHtLcHac31uMammr1ivKcWFDFcKEZXZKICwvBMtcUVC7zdlHk30TbFEVFGSjAgKXKPGqgIh//HPemK6oHTeNzpmN/im5mAFOHuefK1gVoVkuFQRcapIdxtZmbDHxurjH9uxb49URbsdDiShcVShchBX1lReVWpsg1wwUq0qCrPIhDG9gFpscLABfPi/wahNGHbnzhzddhM9gNbkikrTXwk3MjP2FylO+DGULBO/dQl8kwmXU5Pdhsht/A54nGbMzsiibeDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=ssb5WdvoAB+AVngwfT1O8Xi9CMcQiWrrChN0T0By6ls=; b=crQ6OB97YZ48hFCZchHq/6t7fW7rjFEr4aKl3+ebP2uv/VNG2AqWBtvjUYE1inWlzgQQWpX3LFr2FnrhMcqDCALpqdciN7Kdx5pJnQzI8a1jZLavhtEJ7lj/hTv1DgYu5INOkdDv9nn2rZlqXIJHFYlnMXVe71tp0UYMc6XEmMGmRYekACcvdHS0yHk687f8ZeJ8pjI3BJvZaGHMqMmxGl87ak9d2ehbHivRfw0SCgAazbKUR+lkKGz9dbvD4crgigk6V8zTEy04YaP0CDKVSZUbn87bEKH51GWoJMfbXs1GWlV1M3RdG3naOKgWlPkZK6fw3SG9iVN8aJ+zwgFVaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) by ZQ4PR01MB1267.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9913.12; Thu, 14 May 2026 11:12:57 +0000 Received: from ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d]) by ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn ([fe80::e7d4:256c:b066:850d%5]) with mapi id 15.20.9913.009; Thu, 14 May 2026 11:12:57 +0000 From: Changhuang Liang To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing , Paul Walmsley , Albert Ou , Palmer Dabbelt , Alexandre Ghiti , Philipp Zabel , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Lianfeng Ouyang , Changhuang Liang Subject: [PATCH v2 22/22] riscv: dts: starfive: jhb100: Add pinctrl nodes Date: Thu, 14 May 2026 04:12:18 -0700 Message-Id: <20260514111218.94519-23-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260514111218.94519-1-changhuang.liang@starfivetech.com> References: <20260514111218.94519-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0028.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:2::18) To ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:17::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ4PR01MB1202:EE_|ZQ4PR01MB1267:EE_ X-MS-Office365-Filtering-Correlation-Id: ef15a97e-85a4-478b-03f6-08deb1a9c068 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|52116014|366016|38350700014|921020|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: qmwFvdYkKXngZMJ6yTVcHc0kCivROoUBfFQOqzY0PTJTgdV+KR2WQZkTYc9VMXLV5bqq2vrvflBkXWS0HSYkGj2325z3hA6FBrUrcvmDTd4vWbzef8NvSh0e35fF08zQ8i/2EU7DNwa/U8zbrw4KUZSCWofexKnIdR5CLqKz1D7XhpdAKt3qXMSLH4fFGbTFWCnuyTy7S91VOqhffJrTBjjy0M1KlYDRCOh8YTctFeI+3VAi+DNPgg+2a+kxBuhrWUZYk7UDjIH9mnF6HWW/xP6/LxXei3lYiHftn4ajKmAcbFKfi8IDKajjkqhaj06vkz1UX/SEnzIHKX2L262DQTBuJ8ZgFANAyjOJDtKAgGiTgKW/B0L2BJQ10TZ3p8bq52j/Wz/MROrRQEts/Ly4T7/5i2xg2kG5Jl8AhbbbxQPistiMLz5DmR3EkKnWQpCnw6+uz7JAwxskY6pU8MQzbc/jOBQljPeodivhJhRoZl2mOpK0/20BzwzN3ZljiTXAMbbSGS+8fl1TcNc6XoSE/qFF1NTUP3eB7D4n+FtbLiwCQeVkzTWL5Q74PCB1iiAA46JN2AdqKom0oWvUf0rJJQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(52116014)(366016)(38350700014)(921020)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kNyxjof9+EFQorx07ItbXXbh2cbo4WZWeP9u0TK4ezimvNOlQlxu+2tyoaDt?= =?us-ascii?Q?UFB5D/lZmQTI27F53CV347oX6GezHeo099GfXaDkGbKmy9U4X8A2PwyfDYUL?= =?us-ascii?Q?9VSw7Evok6W+XkpSt9k5q5X337OamOgFuwQWEQKzxCV4hvc+FZi+2fN8H3tu?= =?us-ascii?Q?Mgnbdq5OmrdHrRxELYQ9xdWn4BKMYqEIlHoL/qjbLRPskMEGJTxDFe2GnO1s?= =?us-ascii?Q?dNRC+UHdF+WRlgAhu5O6MHibwi29XCASWSFmzpJy3FXv1DHfX7U3h1b5HzFY?= =?us-ascii?Q?rvibcUTIOwRR+qbepmzClKcvcVkJvXMDwvkV7jMZsmZUMZwQO0wF58zesx/I?= =?us-ascii?Q?nION/a56mzLERqoqBq1EQxi+aB8J2EtgV/MS6BIvWwzXA8JFPbBKuj1moVut?= =?us-ascii?Q?w29wB6zy3DH81yVOuRoq54JTPtmj7fGxguXj+3uFb5RH6lgxuZs/YcmhsItP?= =?us-ascii?Q?Yhdy8ch7lgHpUiQDWGyJgmzFqSkHs77zh9HZPsCOs9VmDFcN9jO23AoeJc9x?= =?us-ascii?Q?ALaukBfvxNTuHT5pzUuduR1CWRrmIE3sZGAwJs887lCxdPcm42yd6k4RnkEC?= =?us-ascii?Q?GFVZuROUspybfgp20P0dVPQS8Zy/hHkKkEPNeHZkjaviY0sMJDjr71DkfVnf?= =?us-ascii?Q?OfVJSchdejTmClQ+c3ibTytESl5hC4lGA0f9O6HWIyMSTJOiSPy2r27ZNKWl?= =?us-ascii?Q?5jrFeEJ1x1MTkXmIh15VfmMMZcP358gfMRSyhuWFPPvrXHJkAMNSzDgr0vGw?= =?us-ascii?Q?dP5QH7EzL7UtXy9lIbqC/t6HXS5IghJCkm6OYaoHGVRRmZXrLaMKx/MqJSSH?= =?us-ascii?Q?X8t+47c6vcfJi0oAALdmpMlZryiBRCCwPqBkTjvT1PIYS1WVj30rD/KQjVPj?= =?us-ascii?Q?lAULArBlI8dpFGndGdsoq8d7v48Ih5qOoD/qQRgBqee5+oikWzK3a5Ybcap+?= =?us-ascii?Q?Hi+sLQKnQowPsApmZrUnBLievY2cdPLl8QxNsNMePPvPJXb3rGjwpAjbRQyk?= =?us-ascii?Q?1lStzY3fGSPM3qkTUCr2z47YnKwy9gzpXJuDobZKDSozvQrFLHEI3SmNo/Sp?= =?us-ascii?Q?3s8v3OLY8UCdy4c9SsSvoAWNUjLBZCHt6JgUr+NPr6/9dKrfV/wb/jh9593s?= =?us-ascii?Q?0zBIdReopX+xVh+572jMh+Avxkn4DfswKibSxnK5ZUF4PDpU45X6aCtzwLs6?= =?us-ascii?Q?xRfkbWVoKlG74RsWT1OxcpdixZOCln9E8aecVJ+jFoKBCl6TEeRJJ5IBj5/f?= =?us-ascii?Q?raECmUFAAoXNf6QQmKmA2urfzpW6KHSOsfa3+6zm+v9cWVIiFnL3I2kpYgM7?= =?us-ascii?Q?x88Vy4AIxFRtTaYHSOoRCYXQo6qCvaGYm4vaUrjaHdq4E0whD83FAeIIR5x9?= =?us-ascii?Q?3O7XyP3yBeCndkkhV6NNzml/kNnSNqqpQQ2sajrkdd1r0kChKUE8Bp+dJQ1z?= =?us-ascii?Q?k7aH39IlUPnXiDFhH/Eq7JfG+JX0QsZBYL/eu5tIiy+g+L2lShs7nhQ0OseU?= =?us-ascii?Q?mYHlR2t4i5RJP2/Jty4KQ5FptjCJDnZ+uJIuuzjBynfW6BmTH+OR7ULkTntO?= =?us-ascii?Q?YUHpJorl1iQ84iNUa1ragNvkheztEFIQ8OA7gamvsPjTbdjZJQ+uZmX52HCu?= =?us-ascii?Q?pEPOO8Xkjtmv8Q4fNzBFF15r/DjXGaSAJhVqx+Vk0S9ulPqfw5r6El6s9gon?= =?us-ascii?Q?BuOI0VpeibqbGKqLItXW0OSYFSfpna6M7CcGtcLS1bpxiNiehu7NcVCBqiZD?= =?us-ascii?Q?SVeHDulavYo5/HfEh89FLkputePaiPYt0F7XEy+aEAvdGcyp/M3j?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef15a97e-85a4-478b-03f6-08deb1a9c068 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2026 11:12:56.9897 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: MujG6DoranN/ko3XMsk9cdfoKRs7Wn3qzfHNpgRmAqxW6yvD5pvQUyFYHFq9Y1v44vXxRFumC47s4tfgDZAJAoj///U7i46GL5h6wXdnkB48YcplL2RcnBcmE6DYebDo X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1267 Content-Type: text/plain; charset="utf-8" Add pinctrl nodes for starfive JHB100 SoC. They contain pinctrl_per0/pinctrl_per1/pinctrl_per2/pinctrl_per2pok/pinctrl_per3/ pinctrl_sys0/pinctrl_sys0h/pinctrl_sys1/pinctrl_sys2. Simultaneously initialize the pinctrl hog configuration and add a pinctrl reference for uart6. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Changhuang Liang --- arch/riscv/boot/dts/starfive/jhb100-evb1.dts | 35 ++++ .../boot/dts/starfive/jhb100-pinctrl.dtsi | 188 ++++++++++++++++++ arch/riscv/boot/dts/starfive/jhb100.dtsi | 110 ++++++++++ 3 files changed, 333 insertions(+) create mode 100644 arch/riscv/boot/dts/starfive/jhb100-pinctrl.dtsi diff --git a/arch/riscv/boot/dts/starfive/jhb100-evb1.dts b/arch/riscv/boot= /dts/starfive/jhb100-evb1.dts index 462b6fb7953b..bffecc986b30 100644 --- a/arch/riscv/boot/dts/starfive/jhb100-evb1.dts +++ b/arch/riscv/boot/dts/starfive/jhb100-evb1.dts @@ -4,6 +4,7 @@ */ =20 #include "jhb100.dtsi" +#include "jhb100-pinctrl.dtsi" =20 / { model =3D "StarFive JHB100 EVB-1"; @@ -27,6 +28,40 @@ memory@40000000 { }; }; =20 +&pinctrl_per0 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&gpioe_i3c0_configs + &gpioe_i3c1_configs + &gpioe_i3c2_configs + &gpioe_i3c4_configs>; +}; + +&pinctrl_per1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&gpioe_spi_configs + &gpioe_qspi0_configs + &gpioe_qspi1_configs + &gpioe_qspi2_configs>; +}; + +&pinctrl_per2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&gpionw_configs>; +}; + +&pinctrl_per3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&gpios_configs>; +}; + +&pinctrl_sys2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&gpiow0_configs + &gpiow_inner_configs>; +}; + &uart6 { status =3D "okay"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&uart6_pins>; }; diff --git a/arch/riscv/boot/dts/starfive/jhb100-pinctrl.dtsi b/arch/riscv/= boot/dts/starfive/jhb100-pinctrl.dtsi new file mode 100644 index 000000000000..926e018165fe --- /dev/null +++ b/arch/riscv/boot/dts/starfive/jhb100-pinctrl.dtsi @@ -0,0 +1,188 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (c) 2025-2026 StarFive Technology Co., Ltd. + */ + +#include + +&pinctrl_per0 { + gpioe_i3c0_configs: gpioe-i3c0-hog-grp { + gpioe-i3c0-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; + + gpioe_i3c1_configs: gpioe-i3c1-hog-grp { + gpioe-i3c1-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; + + gpioe_i3c2_configs: gpioe-i3c2-hog-grp { + gpioe-i3c2-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; + + gpioe_i3c4_configs: gpioe-i3c4-hog-grp { + gpioe-i3c4-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; +}; + +&pinctrl_per1 { + gpioe_spi_configs: gpioe-spi-hog-grp { + gpioe-spi-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; + + gpioe_qspi0_configs: gpioe-qspi0-hog-grp { + gpioe-qspi0-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; + + gpioe_qspi1_configs: gpioe-qspi1-hog-grp { + gpioe-qspi1-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; + + gpioe_qspi2_configs: gpioe-qspi2-hog-grp { + gpioe-qspi2-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; +}; + +&pinctrl_per2 { + gpionw_configs: gpionw-hog-grp { + gpionw-hog-pins { + pins =3D ; + power-source =3D <2>; + }; + }; +}; + +&pinctrl_per3 { + gpios_configs: gpios-hog-grp { + gpios-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; +}; + +&pinctrl_sys2 { + gpiow0_configs: gpiow0-hog-grp { + gpiow0-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; + + gpiow_inner_configs: gpiow-inner-hog-grp { + gpiow-inner-hog-pins { + pins =3D ; + power-source =3D ; + }; + }; + + uart6_pins: uart6-grp { + uart6-tx-pins { + pins =3D ; + function =3D "uart"; + }; + + uart6-rx-pins { + pins =3D ; + function =3D "uart"; + input-enable; + }; + }; +}; diff --git a/arch/riscv/boot/dts/starfive/jhb100.dtsi b/arch/riscv/boot/dts= /starfive/jhb100.dtsi index 943324b3b2fd..f9a7fa9d37e3 100644 --- a/arch/riscv/boot/dts/starfive/jhb100.dtsi +++ b/arch/riscv/boot/dts/starfive/jhb100.dtsi @@ -428,6 +428,19 @@ per0crg: clock-controller@11a08000 { #reset-cells =3D <1>; }; =20 + pinctrl_per0: pinctrl@11a0a000 { + compatible =3D "starfive,jhb100-per0-pinctrl"; + reg =3D <0x0 0x11a0a000 0x0 0x1000>; + resets =3D <&per0crg JHB100_PER0RST_GPIO_IOMUX_PRESETN>; + interrupts =3D <60>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_per0 0 0 0 32>, + <&pinctrl_per0 1 0 32 28>; + }; + per1crg: clock-controller@11b40000 { compatible =3D "starfive,jhb100-per1crg"; reg =3D <0x0 0x11b40000 0x0 0x1000>; @@ -443,6 +456,19 @@ per1crg: clock-controller@11b40000 { #reset-cells =3D <1>; }; =20 + pinctrl_per1: pinctrl@11b42000 { + compatible =3D "starfive,jhb100-per1-pinctrl"; + reg =3D <0x0 0x11b42000 0x0 0x800>; + resets =3D <&per1crg JHB100_PER1RST_IOMUX_PRESETN>; + interrupts =3D <61>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_per1 0 0 0 32>, + <&pinctrl_per1 1 0 32 4>; + }; + per2crg: clock-controller@11bc0000 { compatible =3D "starfive,jhb100-per2crg"; reg =3D <0x0 0x11bc0000 0x0 0x1000>; @@ -464,6 +490,30 @@ per2crg: clock-controller@11bc0000 { #reset-cells =3D <1>; }; =20 + pinctrl_per2: pinctrl@11bc2000 { + compatible =3D "starfive,jhb100-per2-pinctrl"; + reg =3D <0x0 0x11bc2000 0x0 0x400>; + resets =3D <&per2crg JHB100_PER2RST_IOMUX_PRESETN>; + interrupts =3D <62>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_per2 0 0 0 31>; + }; + + pinctrl_per2pok: pinctrl@11bc2400 { + compatible =3D "starfive,jhb100-per2pok-pinctrl"; + reg =3D <0x0 0x11bc2400 0x0 0x400>; + resets =3D <&per2crg JHB100_PER2RST_POK_IOMUX_PRESETN>; + interrupts =3D <63>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_per2pok 0 0 0 18>; + }; + per3crg: clock-controller@11c40000 { compatible =3D "starfive,jhb100-per3crg"; reg =3D <0x0 0x11c40000 0x0 0x1000>; @@ -483,6 +533,18 @@ per3crg: clock-controller@11c40000 { #reset-cells =3D <1>; }; =20 + pinctrl_per3: pinctrl@11c42000 { + compatible =3D "starfive,jhb100-per3-pinctrl"; + reg =3D <0x0 0x11c42000 0x0 0x1000>; + resets =3D <&per3crg JHB100_PER3RST_IOMUX_PRESETN>; + interrupts =3D <64>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_per3 0 0 0 11>; + }; + sys0crg: clock-controller@13000000 { compatible =3D "starfive,jhb100-sys0crg"; reg =3D <0x0 0x13000000 0x0 0x4000>; @@ -517,6 +579,54 @@ sys2crg: clock-controller@13008000 { #reset-cells =3D <1>; }; =20 + pinctrl_sys0: pinctrl@13080000 { + compatible =3D "starfive,jhb100-sys0-pinctrl"; + reg =3D <0x0 0x13080000 0x0 0x800>; + resets =3D <&sys0crg JHB100_SYS0RST_SYS0_IOMUX_PRESETN>; + interrupts =3D <56>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_sys0 0 0 0 4>; + }; + + pinctrl_sys0h: pinctrl@13080800 { + compatible =3D "starfive,jhb100-sys0h-pinctrl"; + reg =3D <0x0 0x13080800 0x0 0x800>; + resets =3D <&sys0crg JHB100_SYS0RST_SYS0H_IOMUX_PRESETN>; + interrupts =3D <57>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_sys0h 0 0 0 12>; + }; + + pinctrl_sys1: pinctrl@13081000 { + compatible =3D "starfive,jhb100-sys1-pinctrl"; + reg =3D <0x0 0x13081000 0x0 0x1000>; + resets =3D <&sys1crg JHB100_SYS1RST_SYS1_IOMUX_PRESETN>; + interrupts =3D <58>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_sys1 0 0 0 8>; + }; + + pinctrl_sys2: pinctrl@13082000 { + compatible =3D "starfive,jhb100-sys2-pinctrl"; + reg =3D <0x0 0x13082000 0x0 0x1000>; + interrupts =3D <59>; + interrupt-controller; + #interrupt-cells =3D <3>; + gpio-controller; + #gpio-cells =3D <3>; + gpio-ranges =3D <&pinctrl_sys2 0 0 0 32>, + <&pinctrl_sys2 1 0 32 5>; + }; + intc: interrupt-controller@13220000 { compatible =3D "starfive,jhb100-intc"; reg =3D <0x0 0x13220000 0x0 0x80>; --=20 2.25.1