From nobody Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2102.outbound.protection.partner.outlook.cn [139.219.17.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 796FF3B14B8; Mon, 31 Aug 2026 11:35:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.102 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176142; cv=fail; b=cJJOilOxuGFvf2bBxFv2EVeFbMvBLZRn0WuxYviH+1AUQ/lt3PXdSAxwdLr5gVZ+nch3zuMMAbwtDIYXQ5QrBAe/+iO6+UB3BASCS/Lwh4ze6CIlIiOf1+DK2Ztucfj2l8pwco0E7YRWcz/STOamJJuL8ddZ4rgI1vhP89Akblo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176142; c=relaxed/simple; bh=t28L1oUTsZ9XD6sIT2YdGl+zE3QrFsAYrzOna7rTNqs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=eOD4ZVg4IOx4zZeBledm+1rN1dk8z/rhesVucBQHC4n17L8T7Hj+1bbzBF7JPR1BhcDfk2uJQgN2nYd4fuXwik8dhafDNVQtCMGzTNcQO96oRZCnFnHabzDQEWC1uswCjOyoqquQ8BjnbY/Rs4TNmwisK/niwcQCMmBGyVBabi4= 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.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=OwkYdD1NczABdMI2Enugqw25m6jJqbSH1RYD0lyE354vYVd/q8iXbuHrEdzNHYJ78K/2TW9VBpF5VSAvFO0VKqjY1td1bPnmXxDXSo0UOmo+RQ+EXpgTFY7GGG06dVatsUy64CCYxGbMuL1mzRL0TwQdz+u+7IV1/LVcjL1pQcWxqhUiWJqGtqMsrZOQGjFZ4pc9O+GMEVBKnNtVVBkLUvjxGMtRHjScsvpG4w41KudlvUVZUA3zt+l4n9fkLD3hx/LQtfyQQ8/S3zn9e+dOhFFtpSJdQCFJMrSKUaa8vPHRBfklQm++xux4s8435xembvZtXs1JTXdt3okE/GDISg== 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=KtsTRBD5By9lnAKnAtnF+WiK4mH+R20oalbMwPvliys=; b=b77n8/77Qm8VkBKR6BThoz9hHH5COSKtvH34vN0Kza/MuIzW3nMVl/CxCgnTkzaj7aoKIyDl/FMS+siuED/96ls9TZMSbMj5aZFvne0hcMib/y7OqmWsR2SEVXR9Jwlc4HhHqj4iiB3LkCXpthYBadIguC9FMCUURO42U5aEDKlPlNhfD61stxTKeXg9rgJcBMevDLahTBKGrzjYxfSrodkjIfdqOgvn+8GZZvszttJuGRnwjZAsTTzneAp5e5O8MVahLEd9SB5nxCjzJSrMIM+FtKbKevl46s0mDeQA9KfjPGIkaN1pUw2Wf/kGt/EtI9H1sjtM6EF7qVgw48JJ7w== 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 ZQ4PR01MB1252.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.19; Mon, 31 Aug 2026 11:35:26 +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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35:26 +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 v7 01/21] dt-bindings: pincfg-node: Add property 'input-debounce-ns' Date: Mon, 31 Aug 2026 04:34:54 -0700 Message-Id: <20260831113514.66382-2-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1252:EE_ X-MS-Office365-Filtering-Correlation-Id: 59cf89c9-023d-4f00-d037-08df0753f36b X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|7416014|52116014|376014|38350700014|921020|6133799003|10067099003|56012099006|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: UxXYAA9DH3GEaruFAlaU3ptg+UV71Om7BjM4OycY+Hf5RN2rZjjxMUlaooJhhceIxjztitKOszWFMLFHPFb1itDFpu4hK2aEyNTaAoSlFVFwVJofmjO0Aj9tMcKrS1crbtTFurLGJqv1xP/M3AgfgiKYH2qcym7XieulGmq/5my54KEW6GLEtZtDAjj5FrrE+UAMJLFtKTLaUUYp3dCWESd2rzG0S+KeJedB5IYpoTSJA/7fRDmPP/kiN4p6bk7D5nhphZPN84QVuiIi2jHxBfHXG7Zfslq1UhjkhN/bM9FUK32rSWVCHUZy9D9+1BmUbuBnzzXWN6pBzyc2rw6OgaZBEAxyPkfYDWemI4b2luoTSBzYeHVa49MUrvaEwMBJZ85U65AGO17sA0EyB54vOr2PN7FYgSYi27e2NYkbh6nL+xY7w/umxnN5wtVpPMb3geuDVwYcTZWdC2q5Gr9681PexkAHUxhnvB8vWNB1WNJ49QYkI75NhHhJ/dZdPxo8ISUzqWjMGSh5bSVSuJDeOyYpI163WUq1VjwvnemEdjHtCP3RvP544oSE1aHn+KJ2RKpNAkNPXliOqScXCyFc8w== 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)(23010399003)(1800799024)(7416014)(52116014)(376014)(38350700014)(921020)(6133799003)(10067099003)(56012099006)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lGQq+KxeqL1Btongt5kqvlW3KsG0Mq/7wFUG8mLKipKSPrc+PIVD5YEOs3BI?= =?us-ascii?Q?h2qKEUw7VS/9JMGWCIVeOLWIqcWYqu+ptUZauaj+3adeiyq7eqzXCQRPDY8A?= =?us-ascii?Q?nqXiTaDodSFpZcuB+cu+DOJK3RslGg7xUJelUy3Ge+kKanXekFcLFZ8XqvAn?= =?us-ascii?Q?BTS8N66htXY83aiEROhFsZJntjHcRk5qM3TlPgd9Fri7wVKqQWumdChdWf+a?= =?us-ascii?Q?CiavNGstH17g1NeulyPk7zdy1megghKmClXDtnWn4yr1IXhlaG1GV2jKQMnm?= =?us-ascii?Q?xCZbzct4Hnn4IRkeYoExXUJZ1ypkAA369fW9PyNoVGldFM5toXMvgFLvw1EZ?= =?us-ascii?Q?LL882dyS386rZzHuYosGmmplLUkqegMJwdFjRkkO1siDdUmGlAjjjK+M6Chy?= =?us-ascii?Q?cQ+vza2eoGHf6VIFyRICDY0Wi2wcl4RfIKd+hF2CmM0WEUco0I0FNjxVvMy9?= =?us-ascii?Q?lOL63d1uVItlMQNBXaVWP7vM9FBDLxWJqPxOkkLykXI3qF2YuepzdoG87d/f?= =?us-ascii?Q?wBjlAQEC/peIHIXNKSrmzRynvRJ+ZSCfF5evNY0UafnQIC4iVVVMr18l10Ug?= =?us-ascii?Q?PSFKCW+xc97B8sjFjzPdu0t6OQP4uLJzGNJFebxO555j8xL4eqrr1CBLj/2i?= =?us-ascii?Q?IHJFuiics1P3blGrwFBmMQ82ppkbIURE5Vqy4IPsUaFUVBuaIcfR0/yodFLE?= =?us-ascii?Q?TVTHffoQDmVm7cXSvrrfsOR22W7gEej4R2wDaAOCS7Nyl2TDZZjHiayeqHxg?= =?us-ascii?Q?tl6PWmfPQlmoj5ccKnBBKiDuUtlETf0/PAM+4rEySdQviRdEhieW51p/Bn6F?= =?us-ascii?Q?65m8j8hSHS0/0glV3SBzdsOcY4txVjFVDNp6K6z0QQoJ1FuGEXTKHWjypj5t?= =?us-ascii?Q?NHayftA64IIfDh04BOY1HAoOH118wqdmpTiQyjPTCn0v/7LIE6uxaXGNcgmz?= =?us-ascii?Q?xjl9loy/L1xVe9/oSGol9NB2Zivc/qCW8pQFYfhwwzMrmIeR/VVhU9E1g8rI?= =?us-ascii?Q?PZcEilnNlTyjKtvVoONibGbd60nk1tboqnNhGFHvbqbDQtsSGL0Lc9mFwWyR?= =?us-ascii?Q?Eg+tsCfzuHQKfaL1ZWzsW6rER3CT9fvjo1SnDCE8XakbSwymSlOWBSuxfLSX?= =?us-ascii?Q?72JCdyeZS2SDXvG4esgODTQ+opmRPl2e/y+tjGVu3eZILk7qTgHmE4grHd7A?= =?us-ascii?Q?IZiYt5Q+Igr1hUfEbb2xDxnuphHNvLUmlakcNByFNmgxPUgX716GhlP9svHy?= =?us-ascii?Q?2h+Q9wfjZayv/RnhHP5H1t7N7wQ+SuyXQPctlmkYk7Gpk2aRi5ei2PdOtNgv?= =?us-ascii?Q?LRbHunZLHKXqnQWqUNk+0YPy+bBwKfoJu1FTzSMAXZRSxvmVe+zkstBI1+Ws?= =?us-ascii?Q?7BJLq2TCaNn9IkDFPktdu7Lq77yWqDpXXwrR+nMLIkDSUFxVYsLfVacYJMsk?= =?us-ascii?Q?f461diLHG+Q9USNjNRmeR801z4TTeR/B7RJab4iotcG2N+eKDjtYREVShcCa?= =?us-ascii?Q?wuYdNB+tVq96Fl1+vbCM2E4EUMqIk98te9WTcMc5GSBhZSRzq7fd6tj7sZrW?= =?us-ascii?Q?/Ulhlht9iYEFuxo/Lhe1NHK5nNWl4oD//CpPvtVRQmDCj9+cMP11ZWcqdLlb?= =?us-ascii?Q?fVfUprP9kj+hzgmWAsEoNhqLMGtFdT2Xb4zfa5nHPqyUKLJJndM+Z+UlJzi+?= =?us-ascii?Q?OpBOldq2A3SwztbdeHyPNfKdTwwY04CCSlqrfNiNp7lHi/1HQTk1me5ov7X0?= =?us-ascii?Q?KfIggzkzs5jXDT2eUj4sr24PXJCwIQM9OzJi7scaFfKFA3F4VZwQ?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59cf89c9-023d-4f00-d037-08df0753f36b X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:25.9139 (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: r224jSva9MfH7gN6Y4KH+2dw3CMirKSjsfTLBR6n8oo785kKObWcv18S0ByUEBVDXpQAClT7wqVCq31vvtUZN24YpZkuE6+sgt6KMYEaSy5ndbKeo8Cb0ti2g2MwfG1R X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1252 Content-Type: text/plain; charset="utf-8" The StarFive JHB100 SoC hardware supports debounce time configuration with nanosecond granularity. The existing 'input-debounce' property uses microseconds, which is insufficient to accurately represent the hardware's finer timing steps. Add the property 'input-debounce-ns' 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 Acked-by: Conor Dooley --- .../devicetree/bindings/pinctrl/pincfg-node.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml b/D= ocumentation/devicetree/bindings/pinctrl/pincfg-node.yaml index 97dbce8a261f..17a6270dce31 100644 --- a/Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml +++ b/Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml @@ -104,6 +104,10 @@ properties: description: Takes the debounce time in usec as argument or 0 to disab= le debouncing =20 + input-debounce-ns: + 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 +218,13 @@ allOf: input-schmitt-enable: false input-schmitt-microvolt: false =20 + - if: + required: + - input-debounce + then: + properties: + input-debounce-ns: false + - if: required: - drive-strength --=20 2.25.1 From nobody Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2102.outbound.protection.partner.outlook.cn [139.219.17.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 67EAA3E44EB; Mon, 31 Aug 2026 11:35:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.102 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176149; cv=fail; b=fa2QyR4RBYZpF3J3um10Jz5goehGvE4B7cSV3z2WMxFsUgba7hT6w5Zjra0qrDbbuYD4Al8OCuX7FqgK6F9kHH+havcX57yp6CRotHeASUEQdZf8oBLKfztLYW16PlDQFAujIZYp+TAi5XUAFSy+iryUe5IlP3/3n0zhkf85Pus= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176149; c=relaxed/simple; bh=DrE5eE+dbobAXP0+q1BbQLbq61sM9oOA8w6L8FF6LcE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=e+DvaFX6PyTGmHSYWTI7lDb15w7gJHGnzgnJLW1DkBIdn12ZRiezsoTgEuA3F3aO+D95jWRlZgDxj2NnH2pHLd1npDUYXmtkPsn+ro6oUJyMKrvXinnw9B5vMayDLD3bmaXClYSfkk5CGcEYbRtISQu2KHbJ2/UwEaYnUpDDj10= 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.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=mn1BBeSBQ4WK1GqF0V43dlMueomk1Dyg8wbtLgTXQ8Phc76xseifCRsTdHcpBpGnPPLsWVwN2PhUuIYFvtTU8139C0euA3TiKpFH2HqSRStz9UlS1KSzpWHSkfGyh2mraDPR4w4+BT8SXpr/MGj7QM3172tNePX6OxGho1LOETpX28h7WU01T6yWaySqrnReN/6Mla9gh+WZxBEpG33a62oGazrWocWodDS/3Sv3x5miGaCZu/B6ohexdLS2J9CZ+0VJdEhfvO0tLzqY6Ke3zb3wQiVdjBzReLLow2EadUAr7EGyEJfs2bm0MBxE4C5PxFhktBFLEyz/ydm8w5UP3g== 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=Mh6OYA8GxBZMq/6N0w3OLTCjyP1UVt+l7FUZr1HRbSk=; b=excHzHS0ZL3I5/rkUpcahBruxggJRmTW4mJEel7wbsjDyQpVfmnZo7oYTvZICLQsyzdbMgO0GiirNrg/Hh+YMyleZQ1AZ27np9CVUh/prrBX6Alq0T4MjX7H7f8Km8q20Nl9GLdknethRfe5EhUEpQokJ1M7KivcKE4izj00J0OVrGKDz0/WOpEQdioSgVyBX9LWvlnJXT8JWTKl8RxkzKeSfLb5Y0rsOiL+EHx5ayyjRZ0tDZMlgEjKIdTleiJ6h/EUWMaK6ppEHEAkSJDQSpORapGFe3as0a0mTPuC493rIC6ez26wk8Ay0PYSkt2MpJ4dLNqdqXH0iApSRplcHw== 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 ZQ4PR01MB1252.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.19; Mon, 31 Aug 2026 11:35:27 +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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35:27 +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 v7 02/21] pinctrl: pinconf-generic: Add property 'input-debounce-ns' Date: Mon, 31 Aug 2026 04:34:55 -0700 Message-Id: <20260831113514.66382-3-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1252:EE_ X-MS-Office365-Filtering-Correlation-Id: cd89dfbb-60a9-4fb1-ad94-08df0753f421 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|7416014|52116014|376014|38350700014|921020|6133799003|10067099003|56012099006|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: XmRC6+A4SrUvGIX/ecJ1gL+r35TG2CxmhcxNHL1uwKRwVQiJ79HrUuLRA45BgPdf8ibErsSxvPJ1iImSx0uNfXsNDGyxz7oB4242o2afqV/G5rMeACFdkVgn0v+sxHw0Zi7blnvIhN+vnE/BXe9ueOZlna3tpsza9bdZLw3/K4Ci877E5znz99uxNK/l8FHGPpV4OPpvhBuyq307ntnzU/q3dpDyGXHLGKsyCdFGkXtR2qJ3LhTxxw1+6smH8Udq31LsbESnLFHvgyuumQ2vmOQFyYGArUiXgEbXlaP25C/jqFvPKheQww/QO+/vPrpCdX+Bd+WkIJiX1eDVd+agn/PpK/BbtRy45uXkR5MxdYykSzJv/kM9wH+cSzlY5pJZ0m6ppO3aJUdwWAU4AcUSo15bkg8Gok0yJgNjxsMFEv42Wp9C0mKDAgLWmKJYZCxhqcmXL6UBxVinbccZW76pPcnx6JzjwBLsziVb8o3XCxeq36gpyxoLvRX8AG3Y0r3X7sMBYmYcfk9xgP4sRHrz0vdAreJE2AteKtTsZexPoC0rJ35udUJWOAWOWj+483Nk4OFbP6suGeYOyk67xLoNIg== 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)(23010399003)(1800799024)(7416014)(52116014)(376014)(38350700014)(921020)(6133799003)(10067099003)(56012099006)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?w2eCWyIrvt0WD6Umu0s8a/Pqms9zmABmoJLN/VnwGRM6c/zla2Z3BxNjlUOb?= =?us-ascii?Q?5yEz+YnNjjwUpH1texH+5RqJiHJGkfn0VPM/LtkfVj57zB+la8mIA6NHnW8E?= =?us-ascii?Q?Zd6yuwEeWWNs2NNaVUwzY0aq/lEPsXiUpFMONw329vIZa9TaOBL1hEYTFteD?= =?us-ascii?Q?xogzFpO604cZxYLO44lU8LsbXAn1Qu7tYzc8vX8r/dgHCz8H/hqaxX9tda8E?= =?us-ascii?Q?6IaNWTU7C/vOOXgC69KLlicHj/efv4nEKJBolxcDmDbRBLDFWhtW9GTnvPeI?= =?us-ascii?Q?QWtdJZycP+BfgQ0hWOw3chTHVuEyWujtg7ZtPGIiG4Q7Mks8UURXRvSTvvu2?= =?us-ascii?Q?E9gO0crUzwM0BC9dLCsT7jHtVqHPSpI57N592N0GTIwAkY/GWdRjUcJIO0hz?= =?us-ascii?Q?BbovrIY/MZaOvPW91wrnBGFWvuZBo11X8VFFsAp0YXPGqktqgUvmOvLEo5X+?= =?us-ascii?Q?nYQWgAOKx/49Tzaei5rNGHMUc1X3FQbOhjRlXfC9mkKgkTgmQfr22rNr0EPP?= =?us-ascii?Q?mkwK8w/kmwBIOr+RxVLjyfQecjvGTrDUp0eXjvmuJg2EgxhEnENd722VLRgL?= =?us-ascii?Q?kD7BjsSOzJTfXLn7vkmyI2lv2uVPvpju4lWqE+LcSP/NSjw+SnzMuLO9sWDF?= =?us-ascii?Q?kWwY3anLr/lcU4Q/ydbLkMrwB9f83gGKmZIdngueNLlgY7Khjbbczvc4YM5D?= =?us-ascii?Q?0KGBYfgXD2h+W8bQFD2msZdoueG3ahVFLZRDh07ALfW/xIyIYbO4TzecZ/H0?= =?us-ascii?Q?ig55SkPw7ivIurACK294PiB7+53sOyD7uNn8ousgTgNzM+mEGG2WGfqOVTSE?= =?us-ascii?Q?cb3Btxi1MloYWwWUgIshwwbYTSa7Z9sqqIh0N58sQCCTFM+shHOG7NAdeXYc?= =?us-ascii?Q?8+eFyUjDhhMVGBWQ5n3Y7wxCs3mffX93PolrykMtm340XXEXRN9keG5kLdGb?= =?us-ascii?Q?2C+vHBeE3NuXcnSeSWxGZKHD5M72ch994FsqYGpT/eQXCo+xg8S/wdBamXTN?= =?us-ascii?Q?BVzmatdRJizTCNou0ZZbMJ2DGZ56KJ5otwH1h8EwqxemV1RhDFe8uxfZBr4K?= =?us-ascii?Q?wM2P5RbTWUX4YTi9u4bjVneSaX/DPQTTQZFAysxTlEuK5meCwntDj5Yt5lbA?= =?us-ascii?Q?Fxv/9I+SnXwSGLxhj/MSh+JMFLM3UsEsitP9A3mCaUnsVgm57fe/OuTDIJcb?= =?us-ascii?Q?J4ZY29IF2N2xtSqd0PF4in6azg60tJd2vyXJO+Vpf4mX8N/Sc8ET8DldRgEP?= =?us-ascii?Q?Ke19j0M9mnFOb5JZaadaV7Vs2BH44sSZW7Uhdr+aGkeSxo2Uaf54mmx9I7rb?= =?us-ascii?Q?jJHKoqduaz02sMmGRLNO5Lg6OpNUUSKWQC4n15ryptUgoGiMNhRzbn4uVpMi?= =?us-ascii?Q?3+IZSbK2AQbMCKzrSM4mm0Pj5F70AX1BLtjINIE/xZADEmMdOO69eUx9kzh6?= =?us-ascii?Q?/zb4QKBUtHqTebcrR5xQfEWbLKHQCTyQeWAHOrmvQuvUsSbyy5gvwJDZ5XpD?= =?us-ascii?Q?bbyV0EEvnIskHWfGahr7F7ouoXRVdWwi9+Ayj4DVM3WH81o0w3ta2NyN7UK2?= =?us-ascii?Q?+yCfvYwhndGHFTUyRapXQALJtuz17xdxb7yUVXHsmxbtE4UX81u/PMspokmL?= =?us-ascii?Q?JwM6odIwhtlW2PpJjHGfrpukSthBr4vxyMfvasUoR2BUi2E9Wl4JA6tLvCZ4?= =?us-ascii?Q?vrqm4MkqO7rKL3IRlATfwDt5o9U4kBoowJPCRbhLzOoM06wsgFvLk5selvVn?= =?us-ascii?Q?ARHxbUbImqz2unmNmU+3vPHHh19MZmndYz2TTE34dgyGgTYYO/pQ?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: cd89dfbb-60a9-4fb1-ad94-08df0753f421 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:27.1137 (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: uRdW+sGln5YZ2a5/GHQzYHA8Z6maQD25UrlQDQg7JPmV7n9IwsJIJpALhPnfwKzKSA6SrAY7IJgcAbVofu5+WFxO5msIgE0w5uBFdfwGKVJI3DVuEv9EFmY4GoaPqpuw X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1252 Content-Type: text/plain; charset="utf-8" Add 'input-debounce-ns' 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 95c803c40a7d..36845517984e 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-ns", 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 Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2102.outbound.protection.partner.outlook.cn [139.219.17.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 556FD3E92B5; Mon, 31 Aug 2026 11:35:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.102 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176151; cv=fail; b=m99oncx7QBjh5egxgW+dfghlrkDT5ZIyIDIrqkdX9PBW+XyAeHCokdBzwPQSboKIc7Gzj6X2zgqmkrkJx8+MuhmTjdsE2fBi342FwgyE1/ulk4RhfAjEwPIjq0jrq6yYpYrOuauIzkoUpvoldbi11AUiYlObvSj3Pv579ECnEZM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176151; c=relaxed/simple; bh=eV6XTVKl9mzx/WBc1rctyJQMavhs3z21/jkkI4lhIOk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=CxEXVDt7q/x9huzpg+vYFe03zs3AH8bZxChxTXQ7H4vz2o3nyQNMWqB91muc4MjBlGILZXlT5BeyBHF1BZxtAtMDyZAJz0nIAJzMtvAxURUken4sAUwPUhaM7Fp8krz2Wx7+XsHJ4Bw5sdxqq653QshIM3P+49QZ7XcUWOagoQw= 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.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=YYADMj9RmJWLOsX2fUBO/59QJMO0tuDpDcwVFaXSQnskxs8ZtL1siUiSPNgHe2Hw8tONIQom/klC80ZIWsXwokxSQu14rB8aRYEsBVPi7vPc6Eyp9l00Znfbt28nJ1Yv5E3tT2XV1V/DZwlTEFUPXMDUu3n+TUqszfiZ25ke1rkAf+j1JWDf8KUMQWdzW23o5/6PgCM8RKyplajYYjRzFPLwfT00qPfcEmBSKKLvQYXx7ZJut0fGL0Fdwoi1aveuNiShY6djr0IMk+DB4RAu7GuGr0wbPQoNgXvsYXxdDsWCMLCKJZIBJj54lwnPV7cS+cHiMx+5LctV175duketWg== 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=f+pdCJQr7+FVb2ZqUJ13twKcJMaYpm1y8wHifhsaXNg=; b=S8kEs7HAWFtwVm7rv8EylxZtl/WATX4s/L0lHB52W5RyXcWi7PsDqnvfBw1uHKJGGArumZw2/AnzgV6l35f9/F6gxicKiM/RCQVODt1+ouRwsmnL8mMxZv9GiM4+iyLThZxoxojwIiua1o6M4Hz1xxwHsLW/mAB4reoGZZ6cDYVvjBjXOGIs1q6tIXygt1FK7CIDu6S8c8HTrR4kV+QTuNRFPIbbG9aNCs5NWI+FWyly7h79ao2W+NmRrTkD8pxsLzRFnrHPLRoEfMAKAoaen5mLyJGNgsvAdht4/pseOGK2iu2BvtxvwuYoG+F+5qGG75lpIMC4YpmJHrSxrmhfKQ== 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 ZQ4PR01MB1252.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.19; Mon, 31 Aug 2026 11:35:28 +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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35:28 +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 v7 03/21] dt-bindings: pinctrl: Add starfive,jhb100-sys0-pinctrl Date: Mon, 31 Aug 2026 04:34:56 -0700 Message-Id: <20260831113514.66382-4-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1252:EE_ X-MS-Office365-Filtering-Correlation-Id: 1de445e2-f22c-46ec-0c3b-08df0753f4dd X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|7416014|52116014|376014|38350700014|921020|6133799003|10067099003|56012099006|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: RfuRgXDr3YTnaGtePFl3yvr3Z5z/LvOhYwF0UPg0VZ7BYxc7I3yHjUm5MqwPPL1CmFTAmUpy4OK/Y3W5qKl6ofB0mP00zUUpicodxYplhO8t1G70sZJXfUSgzItS3J6T9vfk6tYqysU2YG6FkQl2MHBzXLuj6SHhOhGHZj8BKMjVLRXNJOdWaZ+YoQ2MPtEAPoB5fyu6MzHUvN1HGbEndTG2LgDamVjXgZjw4B0rD+keg4SrKKO9wFFFcna9ATyUDWffeCeU/st7BGYLbU02BZj4I3QF+MPAwwADF2rMHaHzFG5CiuIiH7ELeqM9RQYLBpS+juvROj5ZSAeioPMg6TyiyIEnPMOzA4v4K985IswgEx3UtVqmVHuP0RnUWdSxOewUP9XKonKL7PKuvZ+jgTepjW5c3IA5dvEzFiADDuwNg7n9NhY2A8xEc9WlDcmVFNQWYlxIEo5sxG7nNLxswAAqKhOoQW6o/bAfuvju0ceIidim3GzSsodKIOrVnyeuFDrP6oEAwIVSBivXqx7wHITsMxJjKQuI4+0Jnd3bSbz2/hwDdfKPjzY7VT5Q+/5D2XmQ9xstMrKYj0NjMrCZFA== 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)(23010399003)(1800799024)(7416014)(52116014)(376014)(38350700014)(921020)(6133799003)(10067099003)(56012099006)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XeghJMcEutn/pi4y1iEsuMj49MTIA0mrAMYlqOk6kYFC3zqFb7Kjj98xWE9E?= =?us-ascii?Q?z/FBJEor2Xo7IGBqpLPP2S38qgbLrWhHhY4OfAktZNrDOxXWtrqB80HZMK3Z?= =?us-ascii?Q?2bRfuO8a3ChArcGXZZRZ9V6snbiMr/wCt5B/mYB1ev6GucwrrSdS4IcF0TGm?= =?us-ascii?Q?KNfliW3j0Orn9IXQ5RWPT+7eJjykYbf+DzI6gUU9epS3xzaaMsUkzF2IMt5y?= =?us-ascii?Q?DVM5pcen4UkPliukrXS0fX3hR20giYxp9TqULGOUyHAkXW21r5iaMn8pVPcI?= =?us-ascii?Q?nqF81GVh1F1hkO9+ooQR+C0iCvSPysr3vDJaFksM5ieg9no2AWH7z2Kgh1jp?= =?us-ascii?Q?djwXcyqb9Ns3Ob1Z1eEj0FaLeaVb+FsYkL5vIZPA0cWu8L51GH1b1oinvaww?= =?us-ascii?Q?C+QMlAvoj40CfVl8hBccm53MFFXVRXb3fqogtaDyRtQ4AhlPblhE9Oz2XCe2?= =?us-ascii?Q?QCc26bJFwrlMyKLiU45MUxw1i934wOUiJoMPShS9u8tAuJfAXrXUQad7jbN6?= =?us-ascii?Q?byZp5oqdoNAb2gkC7AUgfRLzzQIE5U/+9tjI2HxIWGXMWZO57vMr3OYsb2Fv?= =?us-ascii?Q?0npCwuYLXb8bHAeTi+Ru0/cdfD2+iRmQ80qObUy5mCZVR24xawFc9znLMuCi?= =?us-ascii?Q?UtkL9Z6WeIwYl1l5yhLWj5C+r73CmfJScRqBXAN4QUhW4ltYjrk/PR1u+OwF?= =?us-ascii?Q?V7VXm80HGoGLUe0Hbcc21t4G2pfCiPEdayfsMigET29ZcNmJvJgXwtwakv/I?= =?us-ascii?Q?gu+h5A7xEZwAUK50vhCpEjqWFwMDmPrgqmZYpwm9crZaKmjb39DYpNd65A/1?= =?us-ascii?Q?Awll5yqioc/onxfkiqKF3fqmVKfzl1crfnPLiQXTwQnlhnqknygCMzbbIaqd?= =?us-ascii?Q?KTPCppPJ9fjzwr3U95/EuZmw+mg1Cz89A1VyHsm756HnBHxSRZ5xHcyNqtEZ?= =?us-ascii?Q?2ppfmgOijfXGecQoF4EfzwPe0PKK5iLKSMEk5ckQomlvy5tUnduBKTfp/mpk?= =?us-ascii?Q?UmWemvY4G3frGN/94vZop710zP5+UWi8Jq1u/B4N5lWz7cW05l1rV4y3Qpwn?= =?us-ascii?Q?zkMkhbjWZ/ke5qEHFad2jYefYK6WkNdlByQi6raKpgRYkhkJLKRz1MawvI3t?= =?us-ascii?Q?J3OaHxEVGNT7xAMPxoDXNhcdffBPpSdec7z4TohNrUatpcFoPxdUlv2iDoZJ?= =?us-ascii?Q?eUE/hdAZowCu0JtFkfTB9xAfBO1JcBwaux2wCAOXrzpHtXjsKE70Ko+YEVBf?= =?us-ascii?Q?b3Sqr6hu9N602PLbUFhAmVA9bJGG9SXsGjKpeWAk+hT0fNVkhzQHyRKXG7qj?= =?us-ascii?Q?0nlX14L9qUENfkbfseUTZ76qo2rFT+ktUOYm8sWzNk7nBt763eF6nVhCX5sv?= =?us-ascii?Q?UmPoTFbfz0eszCm+TCvWEcYPZD+54mS891KgPIEV2zkKeRl6cc1Te5VSr4Dj?= =?us-ascii?Q?szO23rWlcE+ZWar0KNQsAbSGvTXgiXgIu803GX9CxIBnb4Bzc6p2FbwFHlv4?= =?us-ascii?Q?cOkB40HoDHKBzau02sMQu7zsQuNKzbGK3zQsSmw7A/nRmW6AQolyjlHcOpFA?= =?us-ascii?Q?B5zZpru4JblCRGY5wN6eY43mLFsB5UADWYAxnTrq6LaiBcHa51vjJzLVF4je?= =?us-ascii?Q?eKgRRQk20QquqOi/qBl+cH/O8z+7oNKzZj95qsX9tnQLVY0UhuceVFkfhfH8?= =?us-ascii?Q?+lpixeB6/duha/3ppzOMPm8MhRwsoYQAiw9dpkaL/tLGEXP95xTAQv3rGOmN?= =?us-ascii?Q?Fyu6S6ZFFLCnJ+ENzK0OjqrVU77C1brXFcJMmaK4Qj6r4NAZ4omO?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1de445e2-f22c-46ec-0c3b-08df0753f4dd X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:28.2904 (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: PJsa2DZ6I0q93toHFBViu5XofLnICx8YgznZ3gzxXu898lZZfW3caFaTKjCruLS7+Q3T0s/9Klwgwm/j1PquE7mU5gcBfPob+eY4JOI4fn1BBelhr1Kni8qBJ113mwFS X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1252 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 | 164 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 17 ++ 2 files changed, 181 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..a6f8d1b5c459 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys0-pinctr= l.yaml @@ -0,0 +1,164 @@ +# 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, input + debounce nanoseconds. + +maintainers: + - Changhuang Liang + +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: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + + 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 and + drive-strength. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + additionalProperties: 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: + type: boolean + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-ns: + minimum: 0 + maximum: 10485680 + description: + Debounce time in nanoseconds. The hardware counts in 80 ns + stages with a 17-bit counter, so the maximum is 10485680 ns. + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow + 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_sys0 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 Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2102.outbound.protection.partner.outlook.cn [139.219.17.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 CF28C3E49FC; Mon, 31 Aug 2026 11:35:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.102 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176160; cv=fail; b=Dk48DRZtCRz18P7lZDBFw/5grdtCfg3F6eOWQvCefundUG0hajVPQJzWVbPK6pACToCF2DG2m2/7K2ZhPkjfjpewX11if/+qgi+omv+gNrNmaGRH1YnYzW11aXwy1iuvNSdXFzxG12SJDMh23mcuXoWr9dpecfF+kHWPUh6BIEU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176160; c=relaxed/simple; bh=ZfWKgRqtKPeNyisT+LdBAyWn9ue7N8zNOCGXfhOTAKw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=mf+VowWCkG3PS6vD6o7mjfHdyzqYS4FdIeH/Kuap9g8/SJBo0bs2sT1+T4FYCQRtqBZxrrw9gJ4qUJ7+Pzeo0uNLVWgafGNm40gf/OdbQCW9845pRS09Dvbobpm4MeXPRWzXE/C8MogQGa/eRSv39t9aykxm2K5fCANlxvRXksQ= 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.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=NnRODMPN8wxrF08GuBQ6OeBRGEAhO10fgWiu8uGnBadqPiuj/ajRIaQs7BOoRcNuXRCQ0MtcYBfMtJb4d3dVhFVOeSTKZYdjomXHfbnzZNcUayHUyFnbNICYPgycvdxc69RWzEJCnre5S6+O40MXM/AB84hQXL/g00id/gFT31yE1itgwxbJ0CnQl+WzyUv/qQ/hpXIYS2cwrs4/AaknXkpTJHv5lK+Jg8i/yuZUQlt2wUx4H7RBllSIb/vnZRdN0m4MJaOHEgVbi0F5/e5DpbirH2JQfh1LeRYyBUjWTeLWBW7PkT5O8ssJQmShNDevfBxg8QbmF1EPmPWr18EXSw== 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=yiWDvhTFEK90Q7LanVTP+PX8CF54oXuKKpRE9y36kQs=; b=g4TuQPBSj8op5RxD7UoKJysU0Ea9fnFPlBbGnpX81ElW7xHBG3/VQsHQx2XETKyvnueeCKmcjdWdRpdY5Z4zQ7DDeLHUp3yiJvOXv6W8+73d+ZjuTwSRAKLBLNhOupWVLWY9YIpkBZQ7R2WSIv5U0jMh0DWBPnAFs3e4y+V+PkcAGsCshZpcZ/wH/kP3Xy6g6LmJDGjJcYB6OjH7KTS4fhNk9/S4AjW5aTXUegfzcKGkCHOhgODjupw5irddJkNjSMRLonA7UYPhHu3CoHgbmqzDb4BNVsE5vnJI18WEm11wKV1L3lGlHgjbnuwxDhAeg7DBbztUtCFc/JfxhSd5NA== 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 ZQ4PR01MB1252.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.19; Mon, 31 Aug 2026 11:35:29 +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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35:29 +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 v7 04/21] pinctrl: starfive: Add StarFive JHB100 sys0 controller driver Date: Mon, 31 Aug 2026 04:34:57 -0700 Message-Id: <20260831113514.66382-5-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1252:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d65235f-d49a-42e5-b97a-08df0753f58b X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|7416014|52116014|376014|38350700014|921020|6133799003|10067099003|5023799004|56012099006|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: szU5Vpg21aAYKrssNMbLCvEFDQAp0vsIFrbmkFNBpVVg/+XXspYPsT7RW/+FB+IGyM7SntWHsVvDYoKfrEqGgNQX3EuzG1wDLTZv3y1S0HDaKqHItNwV0sU2JDcptPepylayAWqW7mnbFiGA4cnyywyk0coxvGgUm+V3vZMjZPWewYgcS5C2hmIX1M0av/D8qT4hj3lmXFKWewrFYGkX2gERoDoAohDPNbqey1RtWld1XU+9FWbjyw4prnnyelsxMLQuOA3a1zoMYUYK16T6wDuhJzyTLXAxFCA6j85QlHFKpvbHuxNqGxUMFouSajUuEYzmQn3nR033eeAueqgQ5RoV/sHnx5iIpitkoxD3Epc+PxgDjyjP9sYe6dXDmC0JdmDN+hLFFRFUTmkqK7dMAIE2Lud1VMDpVlC5T4xcM9i1ZmTMiOFyZQhopid6YVWlLiq6zcYaa2RP/39iC1o6J853ulMY7MRu5uBh+ko+bT8dqDFn5xdOExPOwVTNezA8/X2Emz57jmat4QqVgWeGiWMG6R6QFsCnHU89LLaC55+mpm0NPBTdCLKqV8WgzMfprFXUbEK2FAitaxLAdC+h7g== 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)(23010399003)(1800799024)(7416014)(52116014)(376014)(38350700014)(921020)(6133799003)(10067099003)(5023799004)(56012099006)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?z1i6lR2DxhOn+SZytep6Ik10bdiTtY7hYjNRKfRBvGXzJqJqCFqewE5wFLkz?= =?us-ascii?Q?1glUYpvk2lPhq7FrfiwEvaKmtjCU8S/0yNkgGW2f0HPJSBMzWY4qa7WR7jTj?= =?us-ascii?Q?ENxdiWa53wzgyFNAKcIip3+4SaJtvGOAzDOh1I1EpqsisDzBSy4UV+vnLvGk?= =?us-ascii?Q?Sr5qQE7w1BhZKZcYps+ji7zIKiK2wBCoArOe3Ym9BgoXEz1ipql8CYbgSEVM?= =?us-ascii?Q?kzR6rM7SGjZBnpWPptyfblNrr6zFoMBo5EMRW0Q8B95o7dtvpmKSICKxYzfj?= =?us-ascii?Q?igxMfroOPKYb/cWQQUPtAG3wp9R4SdAa7JytaiEvXvVJYJkS430Isew44JAU?= =?us-ascii?Q?mb5A9krNBuLW8z8KRKNWx3q3TGZXiUie9ekY7Fl7mPGTumJ4qtX2xLcmu5w5?= =?us-ascii?Q?lPYYiFfnGjz0Fc7+mPpKg6dObi/aoHYvk6C3c7wznzSnwIwV4NnxSq8DpGLZ?= =?us-ascii?Q?xLETcQeGMXpnEBLCucB88MxOUm0egx3PdgV8IOIzLEnsMbtfnwfcqEw61rHp?= =?us-ascii?Q?gGTUu1ogFlBQ6HSJn9bwMoh3BT6tNz+1TEL8zTrmodVzFBN7Lz1TIUWzcbIP?= =?us-ascii?Q?qXFh9aqN0vmRWADG65sTQdNzYSjFm54sXZbUSjvLrD9bUCGBUflIN3FKYdOW?= =?us-ascii?Q?W06u+4OD1B63cfWaXsVKZQA+G2gG5vI0pLExtLQ/sUiCdjTA7dVRKXTJ7Clp?= =?us-ascii?Q?yAZXQALfUDAbYSGfhDFhCCxW3ZWTCqd621c7300QfX+a4f4PJsXJX0hZnuz0?= =?us-ascii?Q?vw687wV3jSF2AWTGX4rlLO6xhsJ3C73lDXkxQIRYYyo1YXNqC/x71FnmJdH+?= =?us-ascii?Q?43doD4wMVmyPIn3w6Vy8xQ+HrFbX9CtW6nqvSzOVpCBN4KTp1iEoMjvRt/AW?= =?us-ascii?Q?vkgI0mRbYaVI/fHNTiTO5dcvw5wDolBd2+UM1pFhwN6M/zidAuesPdmEXmxO?= =?us-ascii?Q?E6echkbci/+JF+ajpH6r6uysCwYE8uc4eUrzXIuddsz7J/LVxYIohTwRftdS?= =?us-ascii?Q?6PRWA07yxCVdUUsUqD4liX3qnpozUYWpWECjZ6tq610SaTG1TMHZ6pbXPkP6?= =?us-ascii?Q?9xKK9wkVHRCtwHJJodF6Xu0FuQY/pAg+PmnJH0m0h7Ed9kiQgi/pbQrk9l8A?= =?us-ascii?Q?eCGcOvLLuADjEdSeTqxMjcg0GZrjEDmflaSiqxGb3G5BD638w5FfATCBG45Z?= =?us-ascii?Q?wNKtC8yG1WfMr1/oNjDO0wqy5bYcRXWoa6Nu9FCihw3M4TqKFCODDYaEu0py?= =?us-ascii?Q?ChsSI0AUVMUicbZYFb1dXnfMK/g9jfyrjdUkxqGCMaOyNs1uNiSjQCL6kXxA?= =?us-ascii?Q?qqRdLDr1SqTty46sY5whcKWDNFB5ebUXGFjX6v2n7HLiAU0cpykadnwjKvao?= =?us-ascii?Q?GxhVSyO+8ZG6HxU1VWqxUVK10eDQ6PnmWDqKskN0Qk9R5A1usa6ZPv6F8p5K?= =?us-ascii?Q?2QadcNdqPIT/gp/xNB8SShLLEGIMrayr29NB6HshF47NqQMDLUIRl1qi2gGI?= =?us-ascii?Q?YGst2+qUQ9orisdln33+6KIOfBntUI/mkJYUWJFDpI+QHTzQYHmKsFFobkUt?= =?us-ascii?Q?+fjMeCcwPKCduFG6foG/F67pRul7pyUR/GsCnmaawbVdXNBQ0RI7O5fziRID?= =?us-ascii?Q?l6Am3/scFNKisALzkNe8RIPziGkl1ABJEJx3ey1mwJsaRFmCUAvNt2KXoEkv?= =?us-ascii?Q?Qh8u5E9OoVa6+Y0xnmZmO4xo6i9wte0Hnp42ktf/JSX1ydghxnAc88tQn0n8?= =?us-ascii?Q?8HIyEEweAr/ekF7RL5ufuqBjtjpXn35O2o5wTQP+OTatQgvDf1yj?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d65235f-d49a-42e5-b97a-08df0753f58b X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:29.5306 (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: EhZkMHEdMx6zBkZf2Sot6IVMwpBYAbA6RSBkCMwqjOvjV7OsU4S837mS2fBjMTkhVH85vO6eFCYkPeATqXwXjc8BstbFcgwtyyNbnROO4Wr8g5YhUarGsgFU26mv4sDr X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1252 Content-Type: text/plain; charset="utf-8" Add pinctrl driver for StarFive JHB100 SoC System-0(sys0) pinctrl controller. Simultaneously add a generic pinctrl driver framework for registering the pinctrl of other domains (sys1, sys2, and so on) in the JHB100 SoC. Co-developed-by: Lianfeng Ouyang Signed-off-by: Lianfeng Ouyang Signed-off-by: Alex Soo Signed-off-by: Changhuang Liang --- MAINTAINERS | 9 + drivers/pinctrl/starfive/Kconfig | 19 + drivers/pinctrl/starfive/Makefile | 3 + .../starfive/pinctrl-starfive-jhb100-sys0.c | 118 ++ .../starfive/pinctrl-starfive-jhb100.c | 1446 +++++++++++++++++ .../starfive/pinctrl-starfive-jhb100.h | 153 ++ 6 files changed, 1748 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 e2b317c57a49..198c88b907a0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -25910,6 +25910,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..b3cb513c23de 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 + depends on OF + 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 + 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..3ed6a7b63064 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0.c @@ -0,0 +1,118 @@ +// 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 "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 const struct config_reg_layout_desc jhb100_sys0_pinctrl_crl_desc[] = =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 4, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 2, .width =3D 1 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 5, .width =3D 1 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 6, .width =3D = 1 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { + .pin_start =3D 4, + .pin_cnt =3D 5, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 0, .width =3D = 1 }, + }, + { + .pin_start =3D 9, + .pin_cnt =3D 1, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 2, .width =3D 1 }, + }, + { + .pin_start =3D 10, + .pin_cnt =3D 1, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 2, .width =3D 1 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 5, .width =3D 1 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 6, .width =3D = 1 }, + }, + { 0xff }, +}; + +static const 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_SYS0_GPIO_A2) }, + { .func =3D "gpio", .val =3D 1, + .max_pin =3D JHB100_FUNC_MAPS_MAX_PIN(PADNUM_SYS0_GPIO_A3) }, + { .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..462a26697b88 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100.c @@ -0,0 +1,1446 @@ +// 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 "../core.h" +#include "../pinconf.h" +#include "../pinctrl-utils.h" +#include "../pinmux.h" +#include "pinctrl-starfive-jhb100.h" + +#define GPOEN_ENABLE 0 +#define GPOEN_DISABLE 1 + +#define JHB100_DEBOUNCE_WIDTH_STAGES_MAX GENMASK(16, 0) +#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 + +/* + * On the StarFive JHB100 SoC, every 32 GPIOs correspond to one register a= ddress. The + * driver abstracts every 32 GPIOs into one GPIO bank to simplify code imp= lementation. + */ +#define JHB100_NR_GPIOS_PER_BANK 32 +#define JHB100_BANK_OFFSET(n) ((n) * 4) +#define JHB100_GPIO_BANK(gpio) ((gpio) / JHB100_NR_GPIOS_PER_BANK) +#define JHB100_GPIO_MASK(gpio) BIT((gpio) % JHB100_NR_GPIOS_PER_BANK) +#define JHB100_GPIO_REG_OFFSET(gpio) JHB100_BANK_OFFSET(JHB100_GPIO_BANK(= gpio)) + +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 const struct config_reg_layout_desc *get_crl_desc_by_pin(struct jhb= 100_pinctrl *sfp, + unsigned int pin) +{ + const 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 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_function(struct jhb100_pinctrl *sfp, + unsigned int pin, u8 func) +{ + const struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + unsigned int pins_per_reg, offset, shift; + void __iomem *func_sel_reg; + u32 func_sel_mask; + u32 func_sel_val; + + if (!pinctrl_regs->func_sel.reg || !pinctrl_regs->func_sel.width_per_pin) + return; + + pins_per_reg =3D 32 / pinctrl_regs->func_sel.width_per_pin; + offset =3D 4 * (pin / pins_per_reg); + shift =3D pinctrl_regs->func_sel.width_per_pin * (pin % pins_per_reg); + + 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; + + guard(raw_spinlock_irqsave)(&sfp->lock); + + func_sel_val |=3D readl_relaxed(func_sel_reg) & ~func_sel_mask; + writel_relaxed(func_sel_val, func_sel_reg); +} + +static int jhb100_set_one_pin_mux(struct jhb100_pinctrl *sfp, + unsigned int pin, + u8 func) +{ + jhb100_set_function(sfp, pin, func); + + 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); + } + + return 0; +} + +static int jhb100_gpio_request_enable(struct pinctrl_dev *pctldev, + struct pinctrl_gpio_range *range, + unsigned int pin) +{ + struct jhb100_pinctrl *sfp =3D pinctrl_dev_get_drvdata(pctldev); + const struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + const struct jhb100_pinctrl_domain_info *info =3D sfp->info; + unsigned int pins_per_reg, offset, shift; + u32 func_sel_mask, fs; + void __iomem *reg_gpio_func_sel; + s8 gpio_func_sel =3D sfp->gpio_func_sel_arr[pin]; + + if (!pinctrl_regs->func_sel.reg || !pinctrl_regs->func_sel.width_per_pin) + return -EINVAL; + + pins_per_reg =3D 32 / pinctrl_regs->func_sel.width_per_pin; + offset =3D 4 * (pin / pins_per_reg); + shift =3D pinctrl_regs->func_sel.width_per_pin * (pin % pins_per_reg); + + reg_gpio_func_sel =3D sfp->base + info->regs->func_sel.reg + offset; + func_sel_mask =3D GENMASK(info->regs->func_sel.width_per_pin - 1, 0) << s= hift; + + if (gpio_func_sel < 0) + return -EINVAL; + + guard(raw_spinlock_irqsave)(&sfp->lock); + + fs =3D readl_relaxed(reg_gpio_func_sel); + fs &=3D ~func_sel_mask; + fs |=3D (gpio_func_sel << shift); + writel_relaxed(fs, reg_gpio_func_sel); + + return 0; +} + +static void jhb100_padcfg_rmw(struct jhb100_pinctrl *sfp, + unsigned int pin, u32 mask, u32 value) +{ + void __iomem *reg; + unsigned int offset; + int padcfg_base; + + padcfg_base =3D sfp->info->regs->config; + + offset =3D 4 * pin; + + reg =3D sfp->base + padcfg_base + offset; + + value &=3D mask; + + guard(raw_spinlock_irqsave)(&sfp->lock); + + value |=3D readl_relaxed(reg) & ~mask; + writel_relaxed(value, reg); +} + +static int jhb100_gpio_direction_input(struct gpio_chip *gc, + unsigned int gpio) +{ + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct jhb100_pinctrl_domain_info *info =3D sfp->info; + const struct config_reg_layout_desc *crl_desc; + unsigned int offset =3D JHB100_GPIO_REG_OFFSET(gpio); + void __iomem *reg_gpio_oen; + u32 doen =3D 0; + + crl_desc =3D get_crl_desc_by_pin(sfp, gpio); + if (!crl_desc) { + dev_err(sfp->dev, "pin %d can't not found reg layout descriptor\n", + gpio); + return -EINVAL; + } + + jhb100_padcfg_rmw(sfp, gpio, + RL_DESC_GENMASK(crl_desc, PAD_CFG_INPUT_ENABLE) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_SCHMITT_TRIGGER_SELECT), + RL_DESC_GENMASK(crl_desc, PAD_CFG_INPUT_ENABLE) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_SCHMITT_TRIGGER_SELECT)); + + reg_gpio_oen =3D sfp->base + info->regs->output_en + offset; + + guard(raw_spinlock_irqsave)(&sfp->lock); + doen =3D readl_relaxed(reg_gpio_oen) | JHB100_GPIO_MASK(gpio); + writel_relaxed(doen, reg_gpio_oen); + + return 0; +} + +static int jhb100_gpio_direction_output(struct gpio_chip *gc, unsigned int= gpio) +{ + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct jhb100_pinctrl_domain_info *info =3D sfp->info; + const struct config_reg_layout_desc *crl_desc; + unsigned int offset =3D JHB100_GPIO_REG_OFFSET(gpio); + void __iomem *reg_gpio_oen; + u32 doen =3D 0; + + crl_desc =3D get_crl_desc_by_pin(sfp, gpio); + if (!crl_desc) { + dev_err(sfp->dev, "pin %d can't not found reg layout descriptor\n", + gpio); + return -EINVAL; + } + + jhb100_padcfg_rmw(sfp, gpio, + RL_DESC_GENMASK(crl_desc, PAD_CFG_INPUT_ENABLE) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_SCHMITT_TRIGGER_SELECT) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_DOWN) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_UP), + 0); + + reg_gpio_oen =3D sfp->base + info->regs->output_en + offset; + + guard(raw_spinlock_irqsave)(&sfp->lock); + doen =3D readl_relaxed(reg_gpio_oen) & ~JHB100_GPIO_MASK(gpio); + writel_relaxed(doen, reg_gpio_oen); + + return 0; +} + +static int jhb100_gpio_set_direction(struct pinctrl_dev *pctldev, + struct pinctrl_gpio_range *range, + unsigned int pin, + bool input) +{ + struct jhb100_pinctrl *sfp =3D pinctrl_dev_get_drvdata(pctldev); + + if (input) + return jhb100_gpio_direction_input(&sfp->gc, pin); + + return jhb100_gpio_direction_output(&sfp->gc, pin); +} + +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, + .gpio_request_enable =3D jhb100_gpio_request_enable, + .gpio_set_direction =3D jhb100_gpio_set_direction, +}; + +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) +{ + unsigned 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) +{ + unsigned 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 u32 jhb100_padcfg_vsel_to_reg(u32 val) +{ + switch (val) { + case 3300: + case 1800: + return 0; + case 2500: + return 1; + default: + return 0; + } +} + +static int jhb100_pincfg_reg_to_vref(u32 val) +{ + const int vref_table[JHB100_PINVREF_NUM] =3D { 3300, 2500, 1800 }; + + return (val < JHB100_PINVREF_NUM) ? vref_table[val] : -ENOTSUPP; +} + +static u32 jhb100_pincfg_vref_to_reg(u32 val) +{ + switch (val) { + case 3300: + return JHB100_PINVREF_3_3V; + case 2500: + return JHB100_PINVREF_2_5V; + case 1800: + return JHB100_PINVREF_1_8V; + default: + return JHB100_PINVREF_3_3V; + } +} + +static int jhb100_pincfg_pin_vref_get(struct jhb100_pinctrl *sfp, unsigned= int pin) +{ + const struct pinvref_reg *vref =3D &sfp->info->regs->vref; + u32 grp =3D 0, i; + int val; + + while (grp < vref->num_pv) { + for (i =3D 0; i < vref->pv_desc[grp].num_pins; i++) { + if (pin !=3D vref->pv_desc[grp].pin_grp[i]) + continue; + + val =3D readl(sfp->base + vref->reg + grp * 4); + + return jhb100_pincfg_reg_to_vref(val); + } + + grp++; + } + + return -ENOTSUPP; +} + +static void jhb100_pincfg_pin_vref_set(struct jhb100_pinctrl *sfp, unsigne= d int pin, + u32 arg) +{ + const struct pinvref_reg *vref =3D &sfp->info->regs->vref; + u32 grp =3D 0, i; + + while (grp < vref->num_pv) { + for (i =3D 0; i < vref->pv_desc[grp].num_pins; i++) { + if (pin !=3D vref->pv_desc[grp].pin_grp[i]) + continue; + + arg =3D jhb100_pincfg_vref_to_reg(arg); + + if (!(vref->pv_desc[grp].range & BIT(arg))) + return; + + guard(raw_spinlock_irqsave)(&sfp->lock); + writel(arg, sfp->base + vref->reg + grp * 4); + return; + } + + grp++; + } +} + +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); + const struct config_reg_layout_desc *crl_desc; + unsigned int padcfg_base, offset; + bool enabled =3D false; + u32 padcfg, arg; + int ret; + + padcfg_base =3D sfp->info->regs->config; + offset =3D 4 * pin; + + if (pin >=3D sfp->npins) + return -EINVAL; + + padcfg =3D readl_relaxed(sfp->base + padcfg_base + offset); + + crl_desc =3D get_crl_desc_by_pin(sfp, pin); + if (!crl_desc) { + dev_err(sfp->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, PAD_CFG_PULL_DOWN) || + !RL_DESC_SUPPORTED(crl_desc, PAD_CFG_PULL_UP)) + return -ENOTSUPP; + + enabled =3D !(padcfg & (RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_DOWN) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_UP))); + break; + case PIN_CONFIG_BIAS_PULL_DOWN: + arg =3D 1; + + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_PULL_DOWN)) + return -ENOTSUPP; + + enabled =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_DOWN)) + >> RL_DESC_SHIFT(crl_desc, PAD_CFG_PULL_DOWN); + break; + case PIN_CONFIG_BIAS_PULL_UP: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_PULL_UP) && + !RL_DESC_SUPPORTED(crl_desc, PAD_CFG_OPEN_DRAIN_PULL_UP_SEL)) + return -ENOTSUPP; + + if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_PULL_UP)) { + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_UP)) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_PULL_UP); + + enabled =3D arg ? true : false; + } + + if (!enabled && RL_DESC_SUPPORTED(crl_desc, PAD_CFG_OPEN_DRAIN_PULL_UP_S= EL)) { + enabled =3D true; + + arg =3D (padcfg & + RL_DESC_GENMASK(crl_desc, PAD_CFG_OPEN_DRAIN_PULL_UP_SEL)) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_OPEN_DRAIN_PULL_UP_SEL); + + if (arg =3D=3D JHB100_I2C_OPEN_DRAIN_PU_600_OHMS) + arg =3D 600; + else if (arg =3D=3D JHB100_I2C_OPEN_DRAIN_PU_900_OHMS) + arg =3D 900; + else if (arg =3D=3D JHB100_I2C_OPEN_DRAIN_PU_1200_OHMS) + arg =3D 1200; + else if (arg =3D=3D JHB100_I2C_OPEN_DRAIN_PU_2000_OHMS) + arg =3D 2000; + else + return -ENOTSUPP; + } + + break; + case PIN_CONFIG_DRIVE_STRENGTH: + if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT)) { + enabled =3D true; + + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT= )) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT); + arg =3D jhb100_padcfg_ds_to_mA(arg); + } else if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT)) { + enabled =3D true; + + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT= )) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT); + arg =3D jhb100_padcfg_ds_to_mA_3bit(arg); + } else { + return -ENOTSUPP; + } + break; + case PIN_CONFIG_DRIVE_STRENGTH_UA: + if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT)) { + enabled =3D true; + + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT= )) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT); + arg =3D jhb100_padcfg_ds_to_uA(arg); + } else if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT)) { + enabled =3D true; + + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT= )) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT); + arg =3D jhb100_padcfg_ds_to_uA_3bit(arg); + } else { + return -ENOTSUPP; + } + break; + case PIN_CONFIG_INPUT_ENABLE: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_INPUT_ENABLE)) + return -ENOTSUPP; + + enabled =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_INPUT_ENABLE)) + >> RL_DESC_SHIFT(crl_desc, PAD_CFG_INPUT_ENABLE); + arg =3D enabled; + break; + case PIN_CONFIG_INPUT_SCHMITT_ENABLE: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_SCHMITT_TRIGGER_SELECT)) + return -ENOTSUPP; + + enabled =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_SCHMITT_TRIGGER_= SELECT)) + >> RL_DESC_SHIFT(crl_desc, PAD_CFG_SCHMITT_TRIGGER_SELECT); + arg =3D enabled; + break; + case PIN_CONFIG_SLEW_RATE: + if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_SLEW_RATE)) { + enabled =3D true; + + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_SLEW_RATE)) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_SLEW_RATE); + } else if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_MODE_SELECT)) { + enabled =3D true; + + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_MODE_SELECT)) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_MODE_SELECT); + + if (arg =3D=3D JHB100_LEGACY_FAST_MODE_PLUS) + arg =3D 1; + else if (arg =3D=3D JHB100_LEGACY_FAST_MODE) + arg =3D 0; + else + return -ENOTSUPP; + } else { + return -ENOTSUPP; + } + break; + case PIN_CONFIG_DRIVE_PUSH_PULL: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_MODE_SELECT)) + return -ENOTSUPP; + + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_MODE_SELECT)) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_MODE_SELECT); + + if (arg =3D=3D JHB100_PUSH_PULL) + enabled =3D true; + + break; + case PIN_CONFIG_DRIVE_OPEN_DRAIN: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_MODE_SELECT)) + return -ENOTSUPP; + + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_MODE_SELECT)) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_MODE_SELECT); + + if (arg =3D=3D JHB100_OPEN_DRAIN) + enabled =3D true; + + break; + case PIN_CONFIG_INPUT_DEBOUNCE_NS: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_DEBOUNCE_WIDTH)) + return -ENOTSUPP; + + enabled =3D true; + + arg =3D (padcfg & RL_DESC_GENMASK(crl_desc, PAD_CFG_DEBOUNCE_WIDTH)) >> + RL_DESC_SHIFT(crl_desc, PAD_CFG_DEBOUNCE_WIDTH); + + arg *=3D JHB100_DEBOUNCE_WIDTH_STAGE_NS; + + break; + case PIN_CONFIG_POWER_SOURCE: + if (!sfp->info->regs->vref.num_pv) + return -ENOTSUPP; + + ret =3D jhb100_pincfg_pin_vref_get(sfp, pin); + if (ret < 0) + return ret; + + arg =3D ret; + enabled =3D true; + + 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 pin, unsigned long *configs, + unsigned int num_configs) +{ + struct jhb100_pinctrl *sfp =3D pinctrl_dev_get_drvdata(pctldev); + const struct config_reg_layout_desc *crl_desc; + bool vref_set =3D false; + u32 value =3D 0; + u32 mask =3D 0; + u32 vref =3D 0; + int i; + + crl_desc =3D get_crl_desc_by_pin(sfp, pin); + if (!crl_desc) { + dev_err(sfp->dev, "pin %d can't not found reg layout descriptor\n", pin); + return -EINVAL; + } + + 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]); + + switch (param) { + case PIN_CONFIG_BIAS_DISABLE: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_PULL_DOWN) || + !RL_DESC_SUPPORTED(crl_desc, PAD_CFG_PULL_UP)) + return -ENOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_DOWN) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_UP); + value &=3D ~(RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_DOWN) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_UP)); + break; + case PIN_CONFIG_BIAS_PULL_DOWN: + if (!arg || !RL_DESC_SUPPORTED(crl_desc, PAD_CFG_PULL_DOWN) || + !RL_DESC_SUPPORTED(crl_desc, PAD_CFG_PULL_UP)) + return -ENOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_DOWN) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_UP); + value &=3D ~(RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_DOWN) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_UP)); + value |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_DOWN); + break; + case PIN_CONFIG_BIAS_PULL_UP: + if ((!arg || arg =3D=3D 1) && RL_DESC_SUPPORTED(crl_desc, PAD_CFG_PULL_= UP)) { + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_DOWN) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_UP); + value &=3D ~(RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_DOWN) | + RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_UP)); + value |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_PULL_UP); + } else if (arg && + RL_DESC_SUPPORTED(crl_desc, PAD_CFG_OPEN_DRAIN_PULL_UP_SEL)) { + mask |=3D RL_DESC_GENMASK(crl_desc, + PAD_CFG_OPEN_DRAIN_PULL_UP_SEL); + value &=3D ~RL_DESC_GENMASK(crl_desc, + PAD_CFG_OPEN_DRAIN_PULL_UP_SEL); + switch (arg) { + case 600: + value |=3D JHB100_I2C_OPEN_DRAIN_PU_600_OHMS << + RL_DESC_SHIFT(crl_desc, + PAD_CFG_OPEN_DRAIN_PULL_UP_SEL); + break; + case 900: + value |=3D JHB100_I2C_OPEN_DRAIN_PU_900_OHMS << + RL_DESC_SHIFT(crl_desc, + PAD_CFG_OPEN_DRAIN_PULL_UP_SEL); + break; + case 1200: + value |=3D JHB100_I2C_OPEN_DRAIN_PU_1200_OHMS << + RL_DESC_SHIFT(crl_desc, + PAD_CFG_OPEN_DRAIN_PULL_UP_SEL); + break; + case 2000: + value |=3D JHB100_I2C_OPEN_DRAIN_PU_2000_OHMS << + RL_DESC_SHIFT(crl_desc, + PAD_CFG_OPEN_DRAIN_PULL_UP_SEL); + break; + default: + return -ENOTSUPP; + } + } else { + return -ENOTSUPP; + } + break; + case PIN_CONFIG_DRIVE_STRENGTH: + if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT)) { + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT); + value &=3D ~RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT); + value |=3D jhb100_padcfg_ds_from_mA(arg) << + RL_DESC_SHIFT(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT); + } else if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT)) { + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT); + value &=3D ~RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT); + value |=3D jhb100_padcfg_ds_from_mA_3bit(arg) << + RL_DESC_SHIFT(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT); + } else { + return -ENOTSUPP; + } + break; + case PIN_CONFIG_DRIVE_STRENGTH_UA: + if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT)) { + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT); + value &=3D ~RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT); + value |=3D jhb100_padcfg_ds_from_uA(arg) << + RL_DESC_SHIFT(crl_desc, PAD_CFG_DRIVE_STRENGTH_2BIT); + } else if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT)) { + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT); + value &=3D ~RL_DESC_GENMASK(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT); + value |=3D jhb100_padcfg_ds_from_uA_3bit(arg) << + RL_DESC_SHIFT(crl_desc, PAD_CFG_DRIVE_STRENGTH_3BIT); + } else { + return -ENOTSUPP; + } + break; + case PIN_CONFIG_INPUT_ENABLE: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_INPUT_ENABLE)) + return -ENOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_INPUT_ENABLE); + value =3D arg ? (value | RL_DESC_GENMASK(crl_desc, PAD_CFG_INPUT_ENABLE= )) + : value; + break; + case PIN_CONFIG_INPUT_SCHMITT_ENABLE: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_SCHMITT_TRIGGER_SELECT)) + return -ENOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_SCHMITT_TRIGGER_SELECT); + value =3D arg ? + (value | RL_DESC_GENMASK(crl_desc, PAD_CFG_SCHMITT_TRIGGER_SELECT)) + : value; + break; + case PIN_CONFIG_SLEW_RATE: + if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_SLEW_RATE)) { + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_SLEW_RATE); + value =3D arg ? + (value | RL_DESC_GENMASK(crl_desc, PAD_CFG_SLEW_RATE)) : + value; + } else if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_MODE_SELECT)) { + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_MODE_SELECT); + value &=3D ~RL_DESC_GENMASK(crl_desc, PAD_CFG_MODE_SELECT); + value |=3D arg ? + JHB100_LEGACY_FAST_MODE_PLUS << + RL_DESC_SHIFT(crl_desc, PAD_CFG_MODE_SELECT) : + JHB100_LEGACY_FAST_MODE << + RL_DESC_SHIFT(crl_desc, PAD_CFG_MODE_SELECT); + } else { + return -ENOTSUPP; + } + break; + case PIN_CONFIG_DRIVE_PUSH_PULL: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_MODE_SELECT)) + return -ENOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_MODE_SELECT); + value &=3D ~RL_DESC_GENMASK(crl_desc, PAD_CFG_MODE_SELECT); + value |=3D JHB100_PUSH_PULL << + RL_DESC_SHIFT(crl_desc, PAD_CFG_MODE_SELECT); + break; + case PIN_CONFIG_DRIVE_OPEN_DRAIN: + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_MODE_SELECT)) + return -ENOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_MODE_SELECT); + value &=3D ~RL_DESC_GENMASK(crl_desc, PAD_CFG_MODE_SELECT); + value |=3D JHB100_OPEN_DRAIN << + RL_DESC_SHIFT(crl_desc, PAD_CFG_MODE_SELECT); + break; + case PIN_CONFIG_INPUT_DEBOUNCE_NS: { + u32 debounce_stage; + + if (!RL_DESC_SUPPORTED(crl_desc, PAD_CFG_DEBOUNCE_WIDTH)) + return -ENOTSUPP; + + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_DEBOUNCE_WIDTH); + value &=3D ~RL_DESC_GENMASK(crl_desc, PAD_CFG_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, PAD_CFG_DEBOUNCE_WIDTH)); + + break; + }; + case PIN_CONFIG_POWER_SOURCE: + if (!sfp->info->regs->vref.num_pv && + !RL_DESC_SUPPORTED(crl_desc, PAD_CFG_VSEL)) + return -ENOTSUPP; + + if (sfp->info->regs->vref.num_pv) { + vref_set =3D true; + vref =3D arg; + } + + if (RL_DESC_SUPPORTED(crl_desc, PAD_CFG_VSEL)) { + mask |=3D RL_DESC_GENMASK(crl_desc, PAD_CFG_VSEL); + value &=3D ~RL_DESC_GENMASK(crl_desc, PAD_CFG_VSEL); + + value |=3D jhb100_padcfg_vsel_to_reg(arg) << + RL_DESC_SHIFT(crl_desc, PAD_CFG_VSEL); + } + break; + default: + return -ENOTSUPP; + } + } + + jhb100_padcfg_rmw(sfp, pin, mask, value); + + if (vref_set) + jhb100_pincfg_pin_vref_set(sfp, pin, vref); + + 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_pinconf_group_set(struct pinctrl_dev *pctldev, + unsigned int gsel, + unsigned long *configs, + unsigned int num_configs) +{ + const struct group_desc *group; + int ret; + u32 i; + + group =3D pinctrl_generic_get_group(pctldev, gsel); + if (!group) + return -EINVAL; + + for (i =3D 0; i < group->grp.npins; i++) { + ret =3D jhb100_pinconf_set(pctldev, group->grp.pins[i], configs, num_con= figs); + if (ret) { + dev_err(pctldev->dev, "failed to set config for pin %d\n", + group->grp.pins[i]); + return ret; + } + } + + 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_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct jhb100_pinctrl_domain_info *info =3D sfp->info; + unsigned int offset =3D JHB100_GPIO_REG_OFFSET(gpio); + 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) & JHB100_GPIO_MASK(gpio)); + + return doen =3D=3D GPOEN_ENABLE ? GPIO_LINE_DIRECTION_OUT : GPIO_LINE_DIR= ECTION_IN; +} + +static int jhb100_gpio_get(struct gpio_chip *gc, unsigned int gpio) +{ + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + void __iomem *reg_gpio_status; + + reg_gpio_status =3D sfp->base + pinctrl_regs->gpio_status + + JHB100_GPIO_REG_OFFSET(gpio); + + return !!(readl_relaxed(reg_gpio_status) & JHB100_GPIO_MASK(gpio)); +} + +static int jhb100_gpio_set(struct gpio_chip *gc, unsigned int gpio, int va= lue) +{ + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + void __iomem *reg_gpio_out; + u32 dout; + + reg_gpio_out =3D sfp->base + pinctrl_regs->output + JHB100_GPIO_REG_OFFSE= T(gpio); + + guard(raw_spinlock_irqsave)(&sfp->lock); + + dout =3D readl_relaxed(reg_gpio_out); + + if (value) + dout |=3D JHB100_GPIO_MASK(gpio); + else + dout &=3D ~JHB100_GPIO_MASK(gpio); + + writel_relaxed(dout, reg_gpio_out); + + return 0; +} + +static int jhb100_pinctrl_gpio_direction_output(struct gpio_chip *gc, + unsigned int gpio, int value) +{ + int ret; + + ret =3D jhb100_gpio_set(gc, gpio, value); + if (ret) + return ret; + + return pinctrl_gpio_direction_output(gc, gpio); +} + +static void jhb100_irq_ack(struct irq_data *d) +{ + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irq_hw_number_t gpio =3D irqd_to_hwirq(d); + unsigned int offset =3D JHB100_GPIO_REG_OFFSET(gpio); + void __iomem *ic; + u32 value; + u32 mask; + + ic =3D sfp->base + pinctrl_regs->irq_clr + offset; + mask =3D JHB100_GPIO_MASK(gpio); + + guard(raw_spinlock_irqsave)(&sfp->lock); + + value =3D readl_relaxed(ic) & ~mask; + writel_relaxed(value | mask, ic); + value =3D readl_relaxed(ic) & ~mask; + writel_relaxed(value, ic); +} + +static void jhb100_irq_mask(struct irq_data *d) +{ + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irq_hw_number_t gpio =3D irqd_to_hwirq(d); + unsigned int offset =3D JHB100_GPIO_REG_OFFSET(gpio); + void __iomem *ien; + u32 value; + u32 mask; + + ien =3D sfp->base + pinctrl_regs->irq_en + offset; + mask =3D JHB100_GPIO_MASK(gpio); + + guard(raw_spinlock_irqsave)(&sfp->lock); + + value =3D readl_relaxed(ien) & ~mask; + writel_relaxed(value, ien); + + 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_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irq_hw_number_t gpio =3D irqd_to_hwirq(d); + unsigned int offset =3D JHB100_GPIO_REG_OFFSET(gpio); + void __iomem *ien; + void __iomem *ic; + u32 value; + u32 mask; + + ien =3D sfp->base + pinctrl_regs->irq_en + offset; + ic =3D sfp->base + pinctrl_regs->irq_clr + offset; + mask =3D JHB100_GPIO_MASK(gpio); + + guard(raw_spinlock_irqsave)(&sfp->lock); + + 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); +} + +static void jhb100_irq_unmask(struct irq_data *d) +{ + struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct jhb100_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irq_hw_number_t gpio =3D irqd_to_hwirq(d); + unsigned int offset =3D JHB100_GPIO_REG_OFFSET(gpio); + void __iomem *ien; + u32 value; + u32 mask; + + ien =3D sfp->base + pinctrl_regs->irq_en + offset; + mask =3D JHB100_GPIO_MASK(gpio); + + gpiochip_enable_irq(gc, d->hwirq); + + guard(raw_spinlock_irqsave)(&sfp->lock); + + value =3D readl_relaxed(ien) | mask; + writel_relaxed(value, ien); +} + +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_pinctrl *sfp =3D gpiochip_get_data(gc); + const struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irq_hw_number_t gpio =3D irqd_to_hwirq(d); + unsigned int offset =3D JHB100_GPIO_REG_OFFSET(gpio); + void __iomem *base; + u32 irq_type, edge_both, polarity, mask; + + base =3D sfp->base + offset; + mask =3D JHB100_GPIO_MASK(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); + + guard(raw_spinlock_irqsave)(&sfp->lock); + + 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 { /* level polarity */ + polarity |=3D readl_relaxed(base + pinctrl_regs->irq_level) & ~mask; + writel_relaxed(polarity, base + pinctrl_regs->irq_level); + } + + 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; + + if (enable) + ret =3D enable_irq_wake(sfp->irq); + else + ret =3D disable_irq_wake(sfp->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); + + seq_puts(p, gc->label); +} + +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, + GPIOCHIP_IRQ_RESOURCE_HELPERS, +}; + +static irqreturn_t jhb100_gpio_irq_handler(int irq, void *dev_id) +{ + struct jhb100_pinctrl *sfp =3D dev_id; + struct gpio_chip *gc =3D &sfp->gc; + struct gpio_irq_chip *girq =3D &gc->irq; + const struct starfive_pinctrl_regs *pinctrl_regs =3D sfp->info->regs; + irqreturn_t ret =3D IRQ_NONE; + unsigned int bit; + unsigned long is; + + for (unsigned int i =3D 0; i < sfp->num_banks; i++) { + is =3D readl_relaxed(sfp->base + pinctrl_regs->irq_status + + JHB100_BANK_OFFSET(i)); + if (!is) + continue; + + for_each_set_bit(bit, &is, JHB100_NR_GPIOS_PER_BANK) { + unsigned int gpio =3D i * JHB100_NR_GPIOS_PER_BANK + bit; + + if (gpio >=3D gc->ngpio) + break; + + generic_handle_domain_irq(girq->domain, gpio); + } + + ret =3D IRQ_HANDLED; + } + + return ret; +} + +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 void jhb100_reset_control_assert(void *data) +{ + reset_control_assert(data); +} + +int jhb100_pinctrl_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct gpio_irq_chip *girq; + struct gpio_chip *gc; + const struct jhb100_pinctrl_domain_info *info; + struct jhb100_pinctrl *sfp; + struct pinctrl_desc *jhb100_pinctrl_desc; + const struct starfive_pinctrl_regs *pinctrl_regs; + struct reset_control *rst; + struct clk *clk; + int ret; + + info =3D 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"); + + ret =3D reset_control_deassert(rst); + if (ret) + return dev_err_probe(dev, ret, "could not deassert reset\n"); + + ret =3D devm_add_action_or_reset(dev, jhb100_reset_control_assert, rst); + if (ret) + return ret; + + sfp->irq =3D platform_get_irq(pdev, 0); + if (sfp->irq < 0) + return sfp->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); + + 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); + if (sfp->num_banks > JHB100_MAX_BANKS) + return dev_err_probe(dev, -EINVAL, + "%u GPIOs need %u banks, max %d\n", + sfp->ngpios, sfp->num_banks, JHB100_MAX_BANKS); + + for (unsigned int i =3D 0; i < sfp->num_banks; i++) { + /* mask all GPIO interrupts */ + writel_relaxed(0U, sfp->base + pinctrl_regs->irq_en + JHB100_BANK_OFFSET= (i)); + /* clear all interrupts */ + writel_relaxed(~0U, sfp->base + pinctrl_regs->irq_clr + JHB100_BANK_OFFS= ET(i)); + writel_relaxed(0U, sfp->base + pinctrl_regs->irq_clr + JHB100_BANK_OFFSE= T(i)); + } + + gc =3D &sfp->gc; + gc->label =3D dev_name(dev); + gc->parent =3D dev; + gc->owner =3D THIS_MODULE; + gc->request =3D gpiochip_generic_request; + gc->free =3D gpiochip_generic_free; + gc->get_direction =3D jhb100_gpio_get_direction; + gc->direction_input =3D pinctrl_gpio_direction_input; + gc->direction_output =3D jhb100_pinctrl_gpio_direction_output; + gc->get =3D jhb100_gpio_get; + gc->set =3D jhb100_gpio_set; + gc->set_config =3D gpiochip_generic_config; + gc->base =3D -1; + gc->ngpio =3D sfp->ngpios; + + girq =3D &gc->irq; + girq->handler =3D handle_simple_irq; + + gpio_irq_chip_set_chip(girq, &jhb100_irq_chip); + + ret =3D devm_gpiochip_add_data(dev, gc, sfp); + if (ret) + return dev_err_probe(dev, ret, "could not register gpiochip\n"); + + ret =3D devm_request_irq(dev, sfp->irq, jhb100_gpio_irq_handler, 0, + gc->label, sfp); + if (ret < 0) + return ret; + + dev_info(dev, "StarFive JHB100 GPIO chip registered %d GPIOs\n", + sfp->ngpios); + + 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..baac5978ba7e --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100.h @@ -0,0 +1,153 @@ +/* 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 + +/* power-source value */ +enum jhb100_pinvref { + JHB100_PINVREF_3_3V, + JHB100_PINVREF_2_5V, + JHB100_PINVREF_1_8V, + JHB100_PINVREF_NUM +}; + +#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_pinctrl { + struct device *dev; + struct gpio_chip gc; + 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; + int 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 { + unsigned int range; + u32 pin_grp[32]; + u32 num_pins; +}; + +struct pinvref_reg { + unsigned int reg; + const struct pinvref_desc *pv_desc; + u32 num_pv; +}; + +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; +}; + +enum jhb100_pad_cfg_field { + PAD_CFG_DEBOUNCE_WIDTH, + PAD_CFG_DRIVE_STRENGTH_2BIT, + PAD_CFG_DRIVE_STRENGTH_3BIT, + PAD_CFG_INPUT_ENABLE, + PAD_CFG_VSEL, + PAD_CFG_MODE_SELECT, + PAD_CFG_OPEN_DRAIN_PULL_UP_SEL, + PAD_CFG_PULL_DOWN, + PAD_CFG_PULL_UP, + PAD_CFG_SCHMITT_TRIGGER_SELECT, + PAD_CFG_SLEW_RATE, + PAD_CFG_COUNT +}; + +#define RL_DESC_SUPPORTED(crl_desc, field_enum) ({ \ + typeof(crl_desc) _desc =3D (crl_desc); \ + (_desc && (_desc)->fields[(field_enum)].width > 0); \ +}) + +#define RL_DESC_SHIFT(crl_desc, field_enum) ({ \ + typeof(crl_desc) __desc =3D (crl_desc); \ + (__desc)->fields[(field_enum)].shift; \ +}) + +#define RL_DESC_GENMASK(crl_desc, field_enum) ({ \ + typeof(crl_desc) __desc =3D (crl_desc); \ + RL_DESC_SUPPORTED(__desc, field_enum) ? \ + GENMASK( \ + (__desc)->fields[(field_enum)].shift + (__desc)->fields[(field_enum)].wi= dth - 1, \ + (__desc)->fields[(field_enum)].shift \ + ) : 0; \ +}) + +struct config_reg_layout_desc { + unsigned int pin_start; + unsigned int pin_cnt; + + struct reg_layout_field fields[PAD_CFG_COUNT]; +}; + +#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; + const struct config_reg_layout_desc *crl_desc; + const struct starfive_pinctrl_regs *regs; +}; + +int jhb100_pinctrl_probe(struct platform_device *pdev); + +#endif /* __PINCTRL_STARFIVE_JHB100_H__ */ --=20 2.25.1 From nobody Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2104.outbound.protection.partner.outlook.cn [139.219.17.104]) (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 E3FFE3AFCE9; Mon, 31 Aug 2026 11:35:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176144; cv=fail; b=Pw8F2z7yKyglQT2GeHattnyOuccLKDLPWYS+sQmCAgM66r7+uaW5u2YxF5e6bbBU9ppxQBzyYhLH2KwDzW9af+ds4uGFbDg+/Yb+r+rmyz5z1S2zpncq1lN243pcSCULKXEt37l1qXmAtZsiIQlbHu5L7j2ZLBwPaIP54BzSJVk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176144; c=relaxed/simple; bh=xUJCUMV4esjeyZ20HPvVQfC+ac5Az8r9sExmmOmLsUU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=qvZYpWg/ak62HoR/xikPQVnM3kVagOJC7wdwwBQcWsLnZp+TLPooREmTRh9MTtLiG6gG8Gq0C5z78vXtqouqOdNNL9YR4SWQdueFd4QciC5J2k4HoroB2vX8Jqp7LBXcrDEEQKn2/MxmUzltV+m17FOS+v+t0Du8rcmBpPH1e14= 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.104 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=Pm6HhJiu4cQEnE04geLLd0rz7Uw3evs18EEVllqnLwoNeRuOctxT8GGvLD4nwa8DBQOd5aPIXL2e6xqhnGsqLJVow0dHL9i/VfN+TLFpxmjni+IDG2AjxSeqdu3+S7JX2n4YAc2hKXpzOKzlVqPC4aNqsgAiPS9FyMSJefSoSbsxiUibQ1iP3dh5Ag3KQe61wV8obSnOJVduTYoet+ooqepwYYspvTAGO286/0rFSTRcqjghVP4iU+DOdebt6wlhcxWcJy4ffPwYgzvHcE6bqHNOP7ATxNHJ/vYA8WWEYIEntL8y2F9FEFKqqmz2XJMFcPqW9QhQp1KDxVUkaztE3Q== 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=uZ3ZZgoTKV1TAwep35I+RdEHybp6JmLoM7rM8yi5P6o=; b=jTo2Dk1EBrKPgOzZO8eQR71M0vyEKhLtM74Hgh8MJOXDSiB9l6lEU5wIZ2iNuGkl/4FHvy1qd/eXDiITHEmmRvfESLDcindVgXsYD/EIkshUqCQAFj5tmE7FWb3FLpOVCGS8z2AJmQeCRrT/hoE1DkigJTohHQqsaeSjMv1zymMYn5NF2uXYQ+HIRF93L9hrG1bgDLZ9BR6ydHWe1UqgB06cN5nLBe9Gjv1EPR8HtF4xteF/+hjvzIrXcIctLexWG43HQIwadxlggthTojkTfvX/7e0FbrtVYpTdZR+MZVO7vBrozEsMkmM4PuBGjE8jqIpctjGVD2eLW+olUCVw2A== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35:30 +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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35:30 +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 v7 05/21] dt-bindings: pinctrl: Add starfive,jhb100-sys0h-pinctrl Date: Mon, 31 Aug 2026 04:34:58 -0700 Message-Id: <20260831113514.66382-6-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: aec289a6-3ef2-4ef8-bf97-08df0753f649 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: ILBUaUPKi3fbkSJFP6U4AVrkuTgGv1nri+jbe9hKoGQ9SWARs8j7iZYarKiBezKhplFtsJJdRtQLyZ/qtI4XT1yLaPSWy2XhkENe4yaB6o7BAz5HF8JxIufshrMUviLZIOFaKMKw2jUOd8vqy7PuOe8I/TDENwd8uBQVfOq5sFOGWOB7w6qhx9Z9s8mc7mYdmhBQd9tVVWpnpaQFy/Dv6ScVZkA04QiE20BFCwbKtxumN4LT46eWXVPRkJ9POqWPOxy0D7YL4nznhXB5iBlARP/86qJNrEkP0WmqmLiGzrpssX4HTWMOxZbBY1jBKfWllo4GDvl0wVMtkwLCkZTZZc3sFeIT1275+NQUrSzlGXiW8oqrd0P7jI7M9lham0ZmWRYy/bxM8lkr0cp2/6aLxxXt/AQEmF/iQ4zUfjRKtAeinWwkw0vfwgbaaNhQe+Q7+vHhxfpi+nkN3NHmO2ZYcRRm/9142J1uJtUoiBqGA4ZqZSWU6qdn1giFwzzse9ISvTcEI3XLJvqaagy5US/eaVVvFxb4Iy9DW+avDiQ0c7P1kGobctzvaSJLyGM3ZX208BJ5sMxhpTad81Pwdr9SuQ== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fL7HS121ek7MARkZRLQU1aUArF+6hkUoVr3kd07RDNDhbFWBYshda3pMRF8S?= =?us-ascii?Q?7l89/qyylNr2y3gJd4Eg1zfc5CLZXtSNPXGptLuxh0yRZPqlAxoGrHD2e+GQ?= =?us-ascii?Q?xTqRCog71qK0OdEjt7C8dBX+bBwfgLO3XD+W1y+m2uKlc0aoi8tB1+5HIWKn?= =?us-ascii?Q?POmRgIBOwID+QBfO35fvRvpiFPh0IoesQmLyUWp0KG4NfSGjSZajS9Lhi9nx?= =?us-ascii?Q?oxy539F7KZOsDEc+Jjs6QVCukH4Hjpg2bpcxjVfzLJt0AOrOXMpZCJ1idRoY?= =?us-ascii?Q?homCEkk5H8Q2hzGivisHFqPEaf/ab5rfZlM1AQjMQ7ptwoo2eTwLDzoQJpi0?= =?us-ascii?Q?UAuCp5R1BOapH45OVFJug9rTYZmImC9e68KkcRc3GRgzcTjJzqfKdA/6wp1M?= =?us-ascii?Q?gPwbTTdRJK6hciWyGTnMS7CeYHH4tNHlSlbkOvLZNjWjFb0dI/rG5eUCyOaF?= =?us-ascii?Q?AY3LduSrbrcsMnIoroNhQySfcywvDdCKdK6ffQoWfxzrYfBUOIm5ZU97SGeL?= =?us-ascii?Q?g45xULgdwCn9o5fqBodIYP90PPjsH9c3/lYFWsyqJCftabsIXw8iaKbWZIaw?= =?us-ascii?Q?erc/pQdUoyBNeLWrHHWdRO9XxqCdYwNzWZe0lsTPNheXrPKZRB57soOZQE5K?= =?us-ascii?Q?XXr268AXoaYF82xQtQWRU5u8LTpBkbYhez5XdQ7yE3J+hMvsz9nrKLPTK7UB?= =?us-ascii?Q?+Gc+0DN69PYSKlmXVer0Usj/sICbrkcEzbiB+2eR5ONIE7hYRLHuR83xx9nf?= =?us-ascii?Q?2f8nraT78GGoXf9gkRHWpmclFWh/iIGKDCwcimezaHIjCggDem8YVr/9owAI?= =?us-ascii?Q?ECMd4musp4qLSD2neeT2o10zLzSM96WmAk08dWQ8rVUGR/tObKWj4mqXYSvC?= =?us-ascii?Q?CoG2WZ7oCLrx2qorU8U3y+JvK8a3biq0dQa7QDSAHiq4opdSWGQxIyt8XfWw?= =?us-ascii?Q?n8D4HXiMShFygwDtWpfSsCtDw4lDw8uNNv8fT3LXPVPKYoMQY7NiGhJLusX/?= =?us-ascii?Q?thkN4h51bzf3cksJbUZzvyMcaSNKxEj1zizHlBltvxt657aqFYK2vyLJhfpz?= =?us-ascii?Q?hnbdAH8J9xV6iXK6RbLGPcJGkvcq4HCE/vDwxVTKcC6cz56mjycRnxG27r7O?= =?us-ascii?Q?LlqILuzL+0XlfhQbwyoO5VsI4yGQapBwMPICheabKZvBB0wCJDdVRpEweL01?= =?us-ascii?Q?jOkwKkXjWxrVFpTnt6sRzzRMFKqWKsFg+JqE8wOgfEtOZIl1Fins8Tii0Ier?= =?us-ascii?Q?JaM6XKILHyaWgdbBvHNiKgXVzAknc3yFeMiPEhUmmfVVfYQ9oSg+y8de6PYk?= =?us-ascii?Q?4VpXvn8/yKmIDtNNwdibSk3kjgsynG48nSQK58klVCvyKh8f1XvNrOpNxILL?= =?us-ascii?Q?FSNxjp7KAwkpMYmxOyzhNo/+rv8mDLVGVfk0HClPIOrhqn0WU0uGXYbrfZG6?= =?us-ascii?Q?3sHOUrdM325cYEVVqS28T17lIEXmxYaWC0QeP/Ojqf1iy+uAbh5rQab2oPQe?= =?us-ascii?Q?ytD8pXhITYyW6XvEk+kjYOzLPwAmLTATFwPDgRc+yw57rXy5pHtXaDwXvw2Y?= =?us-ascii?Q?EuWQihV3wb9gRzRsOKEJxrDZyiY1SwLmR8UqHyK+w0iBwvyZROhdb/ngjXNo?= =?us-ascii?Q?cqHyVb9X/4zKNOnt9Muru//xtXACp1jLvQrhYX1EQq2S3X4PoYBtOa/YZVEt?= =?us-ascii?Q?n3kr2Zsa6Yibfql7aAWjeogDRWIa5BlLpCQIIY9dkcBgDpBAfElzQwH/XesI?= =?us-ascii?Q?xjJ69J9v9Qgcb4fNSldrlgrDOUh5YEer3MabT1yCQ1Xj3rBMAvtN?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: aec289a6-3ef2-4ef8-bf97-08df0753f649 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:30.6619 (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: xVmyolH6lgJyD3WT/WPclEVHyGJfccKOR4zpGh3IpE3yDfu8Py7qCwjitAmo7b6ypyptFhvWf9kpDARDYw/Vj85DuoZ2x9hvXVlWQMYC5SBKFHXMO+0XDzrEkjPyR4p9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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 | 162 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 14 ++ 2 files changed, 176 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..c988d724e708 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys0h-pinct= rl.yaml @@ -0,0 +1,162 @@ +# 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, input + debounce nanoseconds. + +maintainers: + - Changhuang Liang + +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: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + + 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 and + drive-strength. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + additionalProperties: 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, espi1_vw, gpio, scap_trigg= er ] + + bias-disable: true + + bias-pull-down: + type: boolean + + bias-pull-up: + type: boolean + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-ns: + minimum: 0 + maximum: 10485680 + description: + Debounce time in nanoseconds. The hardware counts in 80 ns + stages with a 17-bit counter, so the maximum is 10485680 ns. + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow + 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_sys0h 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 Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2119.outbound.protection.partner.outlook.cn [139.219.17.119]) (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 DBBA13E44F3; Mon, 31 Aug 2026 11:35:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.119 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176151; cv=fail; b=pMq97V9oFTKwxd/9u2DrEowsMfacdFHL6sKGVfxCo7RF1rlgHhvS6t3d+vM6dqvbU9iW5dcc+Ic+3VlRsQK27oMG6try/n/lm6EVFtRw+R16eDjK6+ZD+fVfgVzVcLx3ZBPwtJPypyo8UyOfWOlDrID9zSxzlpEph6IgB7bxggU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176151; c=relaxed/simple; bh=L8oobSnJaGTPi7oC5ckI/RPhqvIxJemSjrAtothf9m4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Y1TZGTc6IlPFQg65ZyJCTUz/6ZUM7Blu8hYlcISaFt1oeZAyfLnQTWd5ierg5jHGSu80sI5Qn/U4VN0KKeFMYLSfE20G2fcDuLb0keUlRSzxON707IVmy4oifGFmaHE1SDtrRyzdGw53nfbDLQ0HsApNrHsuSC9PPrMH0WvKXPg= 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.119 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=hYVXD8yomTklkxgD8+lUp2HtUJBPQf9AzYImJx8ubzCYemF5RipB3FKed461SE7xeR9F/NX5ZVF/TazVCYy7vC0XN6/9yvhrw7KivSvHGBroKFyJcKPRuAcWMq4RxCzeMcAB9kI9siuTOvppG3wxs/Agb0ONNopFewLBgGM+1RF/F14agzH3eCFKjR9CJBiZtWrA6q7+z2AMVM1kTnmnALsd5nSJOWN0TEcXWSL0mqPDidOIG1PtX6liuHHo0HwvVQwowYYO+rQQ5DYcmkKydQcLS0WZv/iz3aF3xQpbHeWE+qr1hqWzC+pTEgEXY3TdwotWTlMjyGMtCto10OdfFQ== 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=uOfXu7dHy29M+qyoHtEGiiwCdFuV3g2Dlg75xRqdUUk=; b=V6Q8spyJDsAAcajFYwRnZL+z719wXUED8DSTbBaUudDqgHszTFulJP3j5onW1/goVW4MO3QMEQkoGODLX5+HiaYje2tUzsBoa9BXIzH0PsH6m9TP1VszIkJ23uLkEvzS3LYOjLFeeF9irjBj3M60bmykIS5us6GvXFN4Z62tlLSG0pPv8gOGevxBu2ZEBFH6+7TKUHrpVzpHPq6lX26NibjZQk2meVJj5uYk+0bfHnaVFv9TH8/SizGlJ1TJ3l6RZW13uLGRzZHq/fO000A0gPp+04F6ijNKX745sjfJAs5WTxYZ/4vd467ibzT8iJwU5eUOWnRLiV0zygdStIWV6g== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35:31 +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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35:31 +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 v7 06/21] pinctrl: starfive: Add StarFive JHB100 sys0h controller driver Date: Mon, 31 Aug 2026 04:34:59 -0700 Message-Id: <20260831113514.66382-7-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: 745aedbd-e567-43f2-9937-08df0753f6f8 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|5023799004|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: ndQf9zseI0A5Whv1tPnUI5hmOz5Coy0hWqKD+lOx1Ce0M0tj0z/TXOVnISj7f5x6nLkO/esmSCO7vSF+doH1Tt1lE/i/NbiNmAuoaBLuCcVcGAIoDYCXby14cW/JwbsCRewzL9y3PGztcYc4OD+VBzY/5Bsshhn1fbJgC7ndij7uxt4Y26gnHMEwFlxyUseghnBGnU7PLskBagLCiUMZr65uIosCbnDyzpCoWYDMW901m44MdQQtCgjPn9G0E0Ch5wfNhVHIKAUmwiAdEEhn0dk36DtYWR/h+/XZ9TBa24nnY98pk6PCRssnb89h+UISp4hY8EGjjvBEETHhMzaLCy6JnT4oKDBgFWoKQ4LpzZXUen/08hWtTB1mOUCH+A5eo8zGaZqwlEIP2XcEAzxNDgldpSTYyltO1X/uFnPXtGuUXln7atDB3d+TaPtsVV9q2anncmP7NBsDhR2ftl7F9IvtinlGwQLkfQq9HbiWxckY4DpdKLE0oa3Lzsb1Rz1LyciWU2SoKzuyl4J3b3JFluJgCpd28fnKllwMMhJoalEO3T3NnjciRqQgQM7hdx5E32JWeCWXCChl93digsp3OQ== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(5023799004)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rkcQRRW1HSEdZSmaBOuD3mxd8Y8BzU6C4pEUIqkb/3FGha5zr0q4jTmCoEFb?= =?us-ascii?Q?JnxNRG7RDxic3z9aJOQravUpZP/0VFXDsxeDHbV4PV9+WPV4ITgfFrN7PlvP?= =?us-ascii?Q?z1z0XKXLofUG2PdqswPBbR1hK8w6eYZk3IwZ3EUYEKRCnEKGHWIKHsnAck8h?= =?us-ascii?Q?QTzkuXUSStWU+g61YkAXWPOoICSBLJvcl78MYcJfNQWoWzAd7+XNTNefF9Rt?= =?us-ascii?Q?7KE7HS9o99nIpJxOAbPrdINbhPL2VNRzcswE01v3/t80X+3PZGjNRtKT0Dfr?= =?us-ascii?Q?7pNoWAed6RqfEv8EVzClDmu7JfaAbfIeAFLVED1M0zGKA9gz21ztB++okTUJ?= =?us-ascii?Q?cW+gAKeJV6Cqtq4Yf4gzoC/bt8FhTT1aGeQ1eXQi2hNZM0WFKGRzQxtYdW0w?= =?us-ascii?Q?I5xZZUI4X0pNoo4LOhpGFtAXw/BDcoaZC72Oq0djcTKQ4aejaJSXxKxSmG5k?= =?us-ascii?Q?mWLujjFI+vY9tXBUHP7YnGYC/2+v7gOY1Qnk1QELZ57vlDSQMsP/YMgD52FG?= =?us-ascii?Q?PKypCw3uLtOtjWqV2g2xXUpZ26QRIRjaMpgUFGIrKeZDRLngBLS01gEx9PHg?= =?us-ascii?Q?4v8LvOy4iRPHvO2oUmU2k8T9iPK5/+LwYnIs/0XpdX9XPTXnfx2NkdzIjGz9?= =?us-ascii?Q?ysZHBJ14LywnEqlYMFIPFSu1lb3Y/4bSc4OnINiLVBAMTUKXyIjsFisw0nJC?= =?us-ascii?Q?EEdC69HB4K7oc9x5EPeUVXYSUcLOZi9ui9mbq6a92GFLezS8wKJonceUn8NT?= =?us-ascii?Q?aQi5Bv3cr6cbkRoIZSjahm60+IZSXE5gMg/zQSW2wzocN4rPJz4i57KDdAvR?= =?us-ascii?Q?Ok5qrAhGouauxOvnH5olkW3yhKlpzzWl423clyD2+8qdsVJqlVue+0kZLAhN?= =?us-ascii?Q?5oZ9UtTIEVvtD33tRJ3bL2UdJPEMeduEkJDWW7bMzKBm8Sf7khB7CrDdtaqm?= =?us-ascii?Q?baCAxyUrIGE3+b9zxW6d1KH4jlhbm+rrPzgnbHOTQr77W+uMMQSlaBEbwkkp?= =?us-ascii?Q?BFwmmRQDYEhs6gEgsVx6/SVl2vU8bX/6IMgS8i5wGnlChYV6pi29/LYUQka+?= =?us-ascii?Q?LpF08s2paC2U5JtXNTvYbCPWcAXCa2teGx8B8beMmGAGR71hueKGXJTbUw98?= =?us-ascii?Q?79XOaxZycRqub2d6sV4ASumOLIRy0Fdg0fIRAyOZFpQjFrgGdiCB0ZqMr4HR?= =?us-ascii?Q?Rh/pJFfdt5pqYKMRxhPjm+KqKDYg6vrOs+/J6xvpjIpv7A/5+cv1WvmJaTy3?= =?us-ascii?Q?oEfa7mRqfj5cNtORCNj3S4x/KbIEhnrINvzaKaXrZzPt8eL0XqLr51Ntl3zy?= =?us-ascii?Q?4G0YfneEw/rtrFY8Shu/q9hFjWmTOYUXc3tZxzUcV3HXNuipaCFDlOiOIONt?= =?us-ascii?Q?b7oZBETpB0ZyiGGKM2MDKO058cakRd2qEy/c2PhB/iMAxJU1HAYINsv7PLgu?= =?us-ascii?Q?jjXfGkqZX6zU7CWEAe4KSxSH6sUJjT7/Xf3HmPlridTUajmzblfs8axzJkQ7?= =?us-ascii?Q?iy8n7TW9y149il9ixw0c+3SZMce1t2DpmpA+ZvJ0cONq4GBBwjEdIQ2lMKSG?= =?us-ascii?Q?8SJMrQdxL8HxQCiMEZ9vfTxCeVyjz3RhVQwRaNsrtlfax032x2AfpL5wCx55?= =?us-ascii?Q?tcSoAhGfIs9337i8YAQEnREx100GgHjIBqXtZqQVJUYTKyUxi9Dm/k+BE+E8?= =?us-ascii?Q?9Xm5BP4qo/9qjbIprDNAMrLR9YCwKMDgtzC+U7x5NWDJSTiplH2lfSpxJX5M?= =?us-ascii?Q?VkZ3/mIbw0dlrLBTo17YNPkAxX4j64I/EAKJWNa+pBB0OxBEaKcM?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 745aedbd-e567-43f2-9937-08df0753f6f8 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:31.8631 (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: Oyzk04mhFH2n24ieA1+ESWr9BFPpRtQmc1cq0tfUvwIgtoArRLIN0IzR50KUqa50glEb7PrE2uW7gnpeoBA4ufyv4tHIBcVDM2OOMu7f7mPrgj3zjtFFSAsJ3QRl05W/ X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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: Alex Soo Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 11 +++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-sys0h.c | 95 +++++++++++++++++++ 3 files changed, 107 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 b3cb513c23de..f927283646d9 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -66,3 +66,14 @@ 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 driver" + depends on ARCH_STARFIVE || COMPILE_TEST + select PINCTRL_STARFIVE_JHB100 + default ARCH_STARFIVE + help + Say yes here to support System-0 Host pin control on the StarFive JHB10= 0 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 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..64305f9c1c3c --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0h.c @@ -0,0 +1,95 @@ +// 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 "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 const struct config_reg_layout_desc jhb100_sys0h_pinctrl_rl_desc[] = =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 12, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 2, .width =3D 1 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 5, .width =3D 1 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 6, .width =3D = 1 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const 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 Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2104.outbound.protection.partner.outlook.cn [139.219.17.104]) (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 B11BD3E2770; Mon, 31 Aug 2026 11:35:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176147; cv=fail; b=dr8laag0MmCY/A8aAFxHr1GJSmyPvepIF6tMd9pOVQ5LaBBqHXo+ltO2CSdHP4BpgSfJ+cSirS1adv2LcMUPpM3FGMeimRA83qNNgqCR0jFzXKWM0X9sv6XcO8eU43djegc/jCy2rAl1Kfi5yMELRK48Y57rKZxpdP4uS5V7R7I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176147; c=relaxed/simple; bh=97992c9S3eoy19L/NDzwn/sC1i6X+qLemhzw+zvVkck=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=lEkazqXSnTWqLrQdpWTC/zgHxI6vikO4JYh6M84CU2H5NjERTkvy7cDpyFf3il+/nJRuvRNzYtfr8gd90Q95fr4DMR3/qhfHRUpYTo46enrG+W8qa6i9I+3iAx9Ba1Eptot67YWirBr1L5MzZiM5UHiDkfJnbOstUdi4s9Xvo5M= 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.104 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=MvVOVhwF8aTiKLjB8DA6pSV5GCrrErFajFPBLnX7o33hrvdijrP8DMA4+Fq8hHsPJhRktrQvo9UIFAhTyvlEQJ6NbbRrSazG26w8BmrPLUN/Xt08dh8lQVqGD0nzqxMrG3B/dgWgP3LEWn+wBRLEdKKcNnqUNBUeWLsJu4rDgkmOdKubXfyPn8C1TCjTuIratLNvOlOcXiUGiuQ+GL4nGYykgLE1W3Q+R1lizav/oCbC8qDKhBkCdzuAEMKhZecyuDuWBAqEEyXDASMgCHDCt3YcGEoNFAGm6WSmb0OmbR8IeQST/XVB20GXui+2VtUbMcoanxuw23LWH1IzJI8F0g== 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=z2BXP1y+ypC5LvfUhrjCEltJQHhur4wc7+L3mJFjkB8=; b=R2yNoiB8FQyTkV44u6RxIUraLOMZttFMRvcJ8F1+Cbkae4XAs63v48GZsikgvePyV98hAJVxrzkq8NHfeLc0xOyfF2+dl2qvHRFhZH1MhYIcKxIva5Dgv0Ya/mMjPX6q5ZpjTr6cMI4WSRgtPFUFw+9W1H1mz+wVSl0Fw/f/gbNQAb30poIMpTqWlyZ0GxlUDjvj4TYTxkY1Phavbpej86vs29oaOx2PQa4jSioSu3kHLy5AR1ILJC/vX7fu0aYtkUfSBRTvo2Ip83BFRh2HmokleonJ/PxuYIS6h8P9+mYrIeHejwpKTQixcXFgSEZW+jt72ONHJ8yfp7Atewkieg== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 07/21] dt-bindings: pinctrl: Add starfive,jhb100-sys1-pinctrl Date: Mon, 31 Aug 2026 04:35:00 -0700 Message-Id: <20260831113514.66382-8-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: c6b579ec-0bed-48b6-5148-08df0753f7b2 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: naEmKpn07NzBTZF2Wtz2eY33TjiAm4lqUCrFdbpEKl1wVHYsl46+rD3EidBncsIA1dLQkGwsfeF2Zz56qevgO+AfZWpTnrSiSbdubhxVvhwh6ZBNFmnen37G67kKLkoVc5I51GFT/x9A/nyTeXmO6RjuGWlHJT79UmpZTlMeaSTCdrA1qzuT5MLwa+wYaNSYbtfUh9j5lqq6LruaportXsygTd+PHG7Ea0gUHpAos+VuUwUJfz5rkJUfM+L0g9Ft0hysFpqD4SWLkKQZz5exX8+GSUs4N7bpZEoh55cEj60U+KJ3ZkqFpfegsYbja1RBS7r2YsYbujX+8793M/82Dc5ZFd8LQExO6syr8m8AGRd23TYc8CQo2cJTiqLDK5SwAHNS+dDUZToQ9CDiR4BTm7mgApMj5K9WKFpLDmOV2dwUOuzwlo8d2nvCO9d2lkQGKCyPNDwmdax8/ZrFKtlEQjC173OaoHljG7ZQd1qfZSOsDPpGfvd5SNFGA0nIvUkMQwdcyFXQRAaUjqLp8uApTXAWQ1raZJabVHDtJJqVrGtic17w4dlafjg/13JvVx6QKEAykdfxMd7qf/YVlUHDNg== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+8Kw5OXUXoKcqeE2uKyyyMIiKWcNrhA8Il3rMNJEoxt//162uUX9l//VgIwN?= =?us-ascii?Q?qkwzKkkYD4AR18kQlMnOvW9gkhsNBYuWQbkc/EyZaZv7e7i0Ho+x8csi+Vjk?= =?us-ascii?Q?4KgoEzTHaDCHo+YnMdY5B7eKKqwAzaPSHiki8GZuyed5uSerXlPn+B+CswFc?= =?us-ascii?Q?nrOr7FdlvM2fx+y48arTUJBA7sK2rQdx4daR0cyXkbWPwYJpgYMJKTvFZdR1?= =?us-ascii?Q?c/nV9L0yWu1OaFoHFgzzITeSR4UFbeQmzHjq31fanuFU2dL14IE76R8QR0uQ?= =?us-ascii?Q?YrKF1UZbyN8Xgwm4RE40q7H/EG58EkjMHJT4S+wUS2Ui3ULLdxpSy3m/Q5vN?= =?us-ascii?Q?VTeMkzsuAXkAhtc3aMA43FcZU7x3M8oCSBxKo97sSmjgonC3gE3OmmU/Q4OY?= =?us-ascii?Q?RVrd0f6oHsGi9IpWwz3TME0SIaFCm2EX5813eLRKpbhU02zqL5+MDKY0FOaa?= =?us-ascii?Q?o+HmyEvVMqnSdcA4/VjqqVqrJDGU4zXmJkrSmgurL2jHuA1ZrWvPyiV/UH3Y?= =?us-ascii?Q?Y4Yz+O9xImKc05bsUzev/IOjkidiJpxnzmDBvCifpvPmd8Zui83/hDbU2IV4?= =?us-ascii?Q?8OCxbRUF+t0Rgd/JfePaI0I9JUKbpFTvvL89DnTUF0NwFF8z0eeRK0J/4YRy?= =?us-ascii?Q?mdBXh9BC2rPcqHGAkrMd7+tglW6FWg1faVH+ksK1cQwgw4W6scyO2xYGqKX3?= =?us-ascii?Q?KZEx84xcB69C9Ae/f6sRvGMmTWrg+je+yMJhHkhZOUDX2Bq5wZox1o9NGC4z?= =?us-ascii?Q?kM/wS69yry4SbdMNJuL9UHgnh+h1WdkMDsCvM8l6BfcfEIdHPaO43gfFi0y0?= =?us-ascii?Q?8zu2qrDlX3jdlObLOqA5FH7q8dPL8DhBUb03/+se8d4SNy3jb4FVAnzTkywK?= =?us-ascii?Q?IyESrv3yVnsDLRERru+Oh1IBbkeGbccpIp2FK895V64AHblOs3rzCRZhI+Up?= =?us-ascii?Q?H+TdQBL3Gogo6usupFfGJ3Fykx7gQE9VbA5B13lJPHuIF6eOQF38r3icdTXG?= =?us-ascii?Q?rEaL1j0V8/Z5zJ5s4b2b1Wq3rVd09cXsh+pH3NBKJfk/rtGjo/e7GhQgD/kZ?= =?us-ascii?Q?SknvQ5pf+wMAy4wiAdx80Q/q5yQHRluhObr2ntwQRiiaE7DaxzHJU85UQ/AW?= =?us-ascii?Q?Gh5/iU5taRFjYCKSsP6JXQHGL7WxB68DSpzZY8ZGqMSWelzyc6BG5pzLcfJF?= =?us-ascii?Q?xezUem9RD4IzrnscC5/lMJE3Ks5/VoC64D2BMHdD/IYTxhZVoh4/SmnqsXdx?= =?us-ascii?Q?QsVJo0l82uhUiHevmRA75QPytF58XtjK5YzmXeuzvfRPqkHIhLYObPVx8X7C?= =?us-ascii?Q?FttZGaQhvnrgxl9KBxBfsN7M9fA3s2ATqqpdxx1mNzUBuuK/MpZ0jqWALmll?= =?us-ascii?Q?+yJStNji2axy+cCWHB96xaot2ECrwlm0lFmFPdXqXTAH0HY3P8YPYyG5fi21?= =?us-ascii?Q?0cQEG7jd5UaFXTLdWDCbLtPPnIigK0TqyZlateE4UT6Wcj/EupWfPbAukeAi?= =?us-ascii?Q?96j5QOk2B76FBlByUXAsi105Mc729NnLGSSHUKl8VICZfCgtB8aAuvg5XCbM?= =?us-ascii?Q?lVTb16DYzEwWtoBJIwHDwxu2TqM4DLoaQQuUNtdiNKJc+Tm2JDegHx2D6XAu?= =?us-ascii?Q?3kI1sCcNQtGI7U6bam8t0SKGIDho3j1v9r2dpXY/AdvdxrCVuabD1J/DNO3r?= =?us-ascii?Q?ANYzTdTVBmiATm+mcqANEmHHYGpF1BiUtrXAdTQqS7e2TrrZXZ4yZM1LWgxc?= =?us-ascii?Q?HK8MeNTmOx+HYQpiCmnqW3euZkVoovE8vYsrXnDEpRt+aequE7qf?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: c6b579ec-0bed-48b6-5148-08df0753f7b2 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:33.0632 (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: NnaTr/KgE1aoKVsAEmlVjN1w/Cozcrb7dDt4Q6i4B3gzWwPqDOeD1d/nBuj05SVzWloPbVQRy54qjbNpjotCI1ME76beGn4ewBwE+MG9vL4cstv1ON2bbYIkV9zptYIR X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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 | 164 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 10 ++ 2 files changed, 174 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..55e111117ea0 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys1-pinctr= l.yaml @@ -0,0 +1,164 @@ +# 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, input + debounce nanoseconds. + +maintainers: + - Changhuang Liang + +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: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + + 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 + and drive-strength. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + additionalProperties: 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: + type: boolean + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-ns: + minimum: 0 + maximum: 10485680 + description: + Debounce time in nanoseconds. The hardware counts in 80 ns + stages with a 17-bit counter, so the maximum is 10485680 ns. + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow + 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_sys1 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 Sat Sep 26 18:54:42 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2097.outbound.protection.partner.outlook.cn [139.219.146.97]) (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 7C5C83F23C5; Mon, 31 Aug 2026 11:35:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.97 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176159; cv=fail; b=FW/W+CwdxXav3fyI8ke4oAtnKjQON53lR1sJHs3pBfYXuNyhImJpT2xAQq62gAgVxAR90l+ScyVQhC7/cdPSouRv+zaEn4r/QNI11K5IIsHU08w3yvK1SGBGe5nBMMt532qhyd2v7QnNvRogfPp3YehvSjpJQ9mA9pGsuhicWTY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176159; c=relaxed/simple; bh=hz5K/DN88B93WlDPEqeOBA8/Yg+JzNsOUcm4L2nJiSk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=TJXOmoCRCoHGDL1UZ2X/XF3SkwuKtuzhiJulBYjATrETtkNnibF4LY2AVURVumqsZSc/TtVqoUxDIMl47FFFdDHR4zbcVbwf3nCa2VIkl2ZzucV8lKHWJ5Bp460okuqK/Rb5IyHI9aD2jKeCmP+aDj2FooQJDaj62r0F8o9MQQ8= 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.97 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=S1QvKLaVD4icGUOgeVZgYBArOen39RNm5IFsvmaqc7A+e0mrFQbeyto0/PfOkjluXexrayaMLKPglp34KVx8DAtIgFezUAKls4act/SyjwzKi1ytSbQDdK60OHY+ct0E0FcRTb0Z1syQTzA3cfR29nspMsaV3LAE2WEhYF0KfOf6UAZ20ErrgJ11/HG5oQKUTzLBkClkXbO3PvBbnl/gbsRHF8JGbP+tpCnNNt1fMc1MQWFFBhJUeIbwkzSt0u38qxVW8lqN2Ba4lZ7JE6YqeVyS4vAb9hzPs6jb9b3OA0IEDJt4ll5OElj96FKNUnE2inNlSC/FkB383LwBn4PqyQ== 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=qYPhMGl89ol9C3ncA++kgioHMfs1Ahh5/YpqwpNNTLY=; b=KjbW575c8djAUEHQiS3egkPxDog1xPWXy58Yg2UpoNBNIzeCHc1eS4pYZCO3RKVA/fHKegNpvz/fBd9b+Ex8w0kqWh7Mx/aAtAA46TO4qn10DoeBfIMalFw1utd4WpEpeJkiSJJoroFzD6+/8m2+Tc0hq4uikdMfoWPkfAfGpfdiSY0kQa4aI0T86b4VU4k8TNk6eBnhFMizAMKTQ8K/l4ZNYppELfeEwKcwHcpi7aXt3Fj/4sJRE6H3CzCCmS+kyAEUtvdh+5QPy+7lXLVNFouYvGxGxKBnvUogFXdz37++mjQkb/ExXhuDTIdiHjqmY1R0cVg8oKn9M/eBxgc1Fw== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 08/21] pinctrl: starfive: Add StarFive JHB100 sys1 controller driver Date: Mon, 31 Aug 2026 04:35:01 -0700 Message-Id: <20260831113514.66382-9-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: 7735975c-02b1-4958-1225-08df0753f894 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|5023799004|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: W82CpyFdky21XidU8+S86yeBIFkKh4Ptsv2L2jdPG4Q6QIfZf83LmbV8IZ1yrZHztwScQtZXqEAwVqbeqXqMG2NFK8MGeV7HWtvYOvQZ31h4aq1ioRcgqX8KoJU+G37qHYrPiPG+Tawhr0cpPlCCwn2h+Ft2FYo2w5Lb8atqRcAbI3uxulVhQWThawoB+X8zg9srfgjlsGB+wpnAYZekyy1Jx/bUwcoiV2rFqFOyIDAm5YvsmG0peR+U5V8qZdXjiOII/WBhqfjtbSfmq6EuR7UR1eLLOPwB4lINdqa3euuVeTob55rh1LEDvSfvlhg8F1aJVSolhwKGsGHWii8MLHV3/4t3uTmrW01ZT+Krcl8UfJJUp3UagMeUR5P+OuWLHi9mfgyUvmwaj4CZ/xkGFPBZfdYDEVEwTuO8BQ1IIqdsQgaXHs1ioMhaL/HusH753oWwnpX0PuM5rz2hbkm7RwNjsdFX63X42dMv5YwkA5fBt65Cov58xTE+KrdPK7ruc+pV694azQj7mnepIv087EGJY1DyMJUyYS1062hICWvCFGFjy9ogJW8juRXSkq597t7Uw6+yifSmfxWQG7588Q== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(5023799004)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6R7gd4nLAeXXDE6t1hqtnUE5Kyz1t7dAKV29dKoML9ApYpVQzn7Sg2J9NnIq?= =?us-ascii?Q?TfYrGSGE4Xyp7NpiLfRSF2jjQ7BvLeJliTMC/1TfCZKlMBT/7nt3WhM1hla7?= =?us-ascii?Q?2+MSzn3sp01SavuzuME+1JUZD/Z8jZV3r+qysOvD4D/X1+1/vdZk17T9+SvZ?= =?us-ascii?Q?vC+slIQaYBz2cQtjMypVtkqRyOCFSG/THB8J0EyS+c7ncovO6thji0ZF2lYP?= =?us-ascii?Q?TK7mbp44U5mMKf+vytUZZMXsM9FimKJi6sk7WtkR8YsIczYd1lr0jyqWi9E0?= =?us-ascii?Q?Yr3ikGNBIphJdhAXQFBZQxhWzw3sG5wHd7X1LlivCb1HCnoq7o9y8JGxDnSx?= =?us-ascii?Q?sjt/wGoqQdY85OxwG/EuujAvMiG04yr9ZoIdqKRru4UNfOnmH6nWeYv1Jcu6?= =?us-ascii?Q?1tN+X/B1LpAyZv+QVUkh8pvz0rJe1+2o06b/I912BxtboxJnQu+mccxEL9he?= =?us-ascii?Q?B4kz8E8EVnDPG3+iazNNk4kBNH9tqETZIMoI/yPsND4V43blzFjGEM0y7Z0F?= =?us-ascii?Q?Jh1xklFeaxgh1C09uVX8YMOAwVnC/7NxLe0rxCi/CuTpjVUoYtJ9EP5d3Bgn?= =?us-ascii?Q?gy6ukTBqZ2TLpxHZ/JqoD+BDOEVc4sAaan2BCOmgwjfPVGCPLoKULFfiFnyQ?= =?us-ascii?Q?J6A5B8CHaIIV7QO9GdYYOe9Q3Xb/PxhdF5QamVNlbqwoVZ0vINrnuEv89F5B?= =?us-ascii?Q?gSeSNIw1ephoFbjapuSWumuKs+QyEGhjd90seiY3DGybUa25qhr1oCHL0U0l?= =?us-ascii?Q?WhLLjPMo9LhqsKVBM7iIxs1Mr07/AJlDN7kqvySU8c9e5z4+xhRpleEkLP7H?= =?us-ascii?Q?8vqEHLN7BoXkRjsm8BdGivBCDhaseZUa52DRqFpxtYMreuBb3bXliXt3qeHi?= =?us-ascii?Q?U72c+yRNTXzMC09JXxD1HFyTGlEkH1KJKvWG0uKrKeREpzEfWSLIw2KoDbwl?= =?us-ascii?Q?NxyC497c+11mb76VSItmfQzi2o1qh6lwjetDk1OadztaYoiZF1HuTFV0N2lq?= =?us-ascii?Q?h9sefqKBdOnJTiDWBBJef5ZPT+6cHadoe94R4U5mj+I0kbtFMOLFGXQl71vz?= =?us-ascii?Q?xFIX0ps6/S4y6Vi/Ug01pylc7aXPCz4Gh+V/sUaUQqVf/BRC5afMiPzFjppV?= =?us-ascii?Q?RpZLiybD2Aw+3c0YwqVYnDMmEnu/ApwOq7uHXwJyk8jPp+qf+G2hTyLjWz+P?= =?us-ascii?Q?23+5wjOnjgezmYrFwI+gSJNP7uU+GSPka8M82CP7k3rDeBq8p6B5ovMMMs3a?= =?us-ascii?Q?5lqWLJhXIfHBVmNav56vHWq5824l91jBwY6aJJFDaT33v7RYf8KSdbwFCLHc?= =?us-ascii?Q?ajtCky9GS/mS7aczWNKx8wdiPA02XriaKmZBrMrmCYvaKWPCN4dnZb6KkBm2?= =?us-ascii?Q?czt0Izxi25p9oV9R7/DRzajF6YK65KTW5WEXOKT8Yl/18T3uHQsdX/ye1cuv?= =?us-ascii?Q?zceYw95OqDoLHfLV5LHHivfrqPcIrjhdPkRayiJ8YxM7PvOzLtHngQoDyHHJ?= =?us-ascii?Q?aplpfxD9brvtAmwXbqMJTHG/+f9Vm4M9N6CzW3IaNC1BvWsPaK8TnxKgCuoZ?= =?us-ascii?Q?7zX1JU+hl6M4JBj0MTUc0frfZNb5cucuicmHg4LvjG0Wk/qBiX9YXYA6E+qK?= =?us-ascii?Q?hvr3zeQWVEgu22y7C6IYcWBd2jSyRQB78hoy7vNXn/xjCLOumMjKbwwhPDyN?= =?us-ascii?Q?qf9zvDsYYs1gz7Ab5VEplmYJM5Kx2YtPRcU8DY0qok/QfR7JzA9QNzykANCh?= =?us-ascii?Q?sOOZl5eNObOB0yFFxOgzaCYgw/rdrvSqNtbm52pzdsh6mtznrY3N?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7735975c-02b1-4958-1225-08df0753f894 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:34.5337 (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: p+VkkXEzl5n3locjJ4PuTSMq+wce1b8L2GPleBCcieF8+Vh57qd6bFruJJS31sLqsDudv8hzxsd/TQhD7xz4PnvfTE2paIilA8tVAe8o2tJm8B2XK0+FTAIfq2JdHAor X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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: Alex Soo Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 11 +++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-sys1.c | 91 +++++++++++++++++++ 3 files changed, 103 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 f927283646d9..0b735cab89e1 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -77,3 +77,14 @@ config PINCTRL_STARFIVE_JHB100_SYS0H 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_SYS1 + tristate "StarFive JHB100 SoC System-1 pinctrl and GPIO driver" + depends on ARCH_STARFIVE || COMPILE_TEST + 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..29e2788968b9 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys1.c @@ -0,0 +1,91 @@ +// 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 "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, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 2, .width =3D 1 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 5, .width =3D 1 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 6, .width =3D = 1 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const 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 Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2104.outbound.protection.partner.outlook.cn [139.219.17.104]) (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 189133E0C5C; Mon, 31 Aug 2026 11:35:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176150; cv=fail; b=h0jnvxzjAZzXzDsgn57QBT9HxY1fSFR+d6poQd7FOufCKQSkqZ0vKEsmBF/tm0AZ8Bwg1umnZ8IuneYu2I13nvYNreZlVPpe7349vWToJSaZESr3erhxFSd306fWPkICy4kJKuacprqhb6uehbz/GtNMkEMRddI/SrlH1dQ2hjM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176150; c=relaxed/simple; bh=zS9mfpmAUMpFUwM2jwanogsQruwQs0sOL3J3rvkBJBI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ubKeQdEasl/4Lcxy8o4anoqYWxvZ0mMeznFTJ+Qw7PqLbUHWeXu5l+cFfAIBqn0sJrUSLULX81aZhtjHyo3FzJ3X7uWkxnFwsBig2Iu3UrtiHqbGnNyP3c2/iwCs3LEaRZw6mRN9smruRF/e/dFbGNX8LLAWS9NwIl8CamEPkKI= 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.104 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=OVfKF/39l02yVoIiTMB1bCgidhskAOZNGV5wXXM5dMh98JVwvKwlZfwobWGbAd4+M1MZTuhHFIzTRm88ExUqZKT4Hp+pSbGkjgun8wJdeY6Lz44PvcteeLBUKvynyvQvjcZVhUTLKLaYg8zR9q6o8SpcLzXKT5DNnG8AbT0z6zJMl4yR+9fKCKrQPGYw7cX16AKjHH0sw/zte8BB7/D981dUxoc1eFBrQuYAWZotpeNarzQW7lD/bxZ47bZFsoZWaCkbVShvmIY7Yz/g1TABctIV0qS32giJ7gmsp2+NHMByTiN2dqAKSxBftRBTrTzuWP8FRkMW9IEkxAi+WyhXkQ== 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=eIBgh9Y6tqNLZnWe2nXe0heP1g8UXgVtl+lOevyF0qE=; b=B54udn1Xx8x7tPbHBvw0rcFmOaKEkmXHp1EcQkV1siOHf7Xb3Q+Osd5v+wMlwSnEQRFOGdcJ6+rc2ehPy5Wg7z/tVTnftxlsDEYoe1bO62YmGvRFE7IkcxVOfGCkci26XruKE/T1umH/yVwnZ6EvmhZEUmY0uppfNIkmWUc5qc7FYAidQIUwaXgFA9eRSUqifh+xATrR9kDGc2QnH0yNMBTihf62/ajQEMwTkFUyiCp+bOh5bqzq8huoTcUR+n7yCNq0vAs7v1LZhLely8/RFrFlSif7Fd55CvKilbWn3besmWKfOlBgrzEDdOTQaA8ZuAUVFgv0etjzzBtq29EezA== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 09/21] dt-bindings: pinctrl: Add starfive,jhb100-sys2-pinctrl Date: Mon, 31 Aug 2026 04:35:02 -0700 Message-Id: <20260831113514.66382-10-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: 82dcffa6-1465-4d65-7124-08df0753f94d X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: OHRolVuNhl0rA7gCio2pqXQruZS6LnGe65esPrvUW+EXhtEzmqTXJqaely+1GS8VDcNGoyT/tWUh7hsZ+8gPa7cWy3YvjYLvpUTR9LQmk7NEdWaL/nOQEYn+ELC8BGld3u8ZC5k9vFjhzM3SR/DXqkgWuWKOzwQ9dT822pTpVxiyow+ct8NOSxBcHI55KsqwlrhLCGJge5RT18ANcsjUoOt8EliWPhTmpagMIpY+E2UO67+vdEdiF4D+rJR2efjBrNL0hef/usNCEBNpr7SzJStNdH90Y+S2rD5QTeF6KCCo94HXN6iwi8e0gGXg6rXeemkIAEEyxYL/QsCmvrfSDOdP+C+6A/5kfrhtTwmM/P4c577gwX2jFo+2IgBCyVyH2Sj6eVwo31T4YqS7ePOpEe6PiO6kkcxO5ivkBV3JIfZMyCfoWLRNo3mn8a0BHJGxnK+iN+jgzt61wAQZR8o5CUeKVIDy0sRo0mUKg6N/1fGxV35sZj+ToUkNUiOfFgBYjduAgSk7mr56/S3T4ndxQlGIg+hTMLyPOmY/ee6kJUnyKC3nc4ilCGn8YKHV7pyxbiprcnqq4dRS5nlJeWsRMA== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zRIJUbfsW7r4bamFZeYoN+rBwMZAy+S31lBE268fonKULTLQBKYdzRpKMYAr?= =?us-ascii?Q?8voZnRnaF9aFapt5a0f0ocd06CTqtOa5fpKHr6EH0iEZ2ZddkJgkY3+FImKH?= =?us-ascii?Q?EKg7sHHAarlivv+wT6rX5mCItES6ZTJ8tTVujJwWjGhCth+Kf5//p4cwbA69?= =?us-ascii?Q?s/2n2Qqa3+VqZiQneNyPr0mkOyDj/gi1bEZLQYW+dqSMQS+iy4/ItHON1tKy?= =?us-ascii?Q?StC/mSdG/L4e+GR24XRGds5BE1n4IsIoRfzLRX3QJmAcb7qCblZw6HAHOiJP?= =?us-ascii?Q?Kr+wOQuWPd+em28s5dPjRISXByOO+TYWRRU1QmoTSo2P07xQ3Aj/VhtY7gNy?= =?us-ascii?Q?KJidJKSp5o9jMq95eKq/zL8bV7MKqErudTJBGpLXgqEwhJLSQm9SWy6HIqHM?= =?us-ascii?Q?JKBduxYx2+/mUUSY38qZ92TSHrkOSe/kPpjUzoYnRR7CQxp5RTGpgDg8BYvn?= =?us-ascii?Q?fFxRMA8/cZN1JGRZrrEwcCCktO7Ms8iQTHveMfTOMKQInLkRRWv0G3M0OGlU?= =?us-ascii?Q?lr6Y9tuwYbqnygUZyYUVZNfTup3fQXiR4D+wYuz9/QMUBnoegLJmyfobTnAE?= =?us-ascii?Q?5deuAxfFp/yeHIb3+KlkLw89CG0aSUsPNqtHok+45Xa7Q4pwHWSOjpAG29/w?= =?us-ascii?Q?NqKAc7oQ6OrZRxEvnl8Wxof2HOwup8j5FMUFGtiAuAUoYnqYSb3nrmwyCqQG?= =?us-ascii?Q?zyq1C+vR3wxr85wE0WUOJ9fW6Tt2JX0e6bzQaJprFo8Zl2snAQ+i6pP7XaT3?= =?us-ascii?Q?UauZ0AJKmlzenYRRJDAh7Loqfb9up9ExU86R5FkqpSLYG3Qhdk0y0CHg/LGB?= =?us-ascii?Q?VlU/wjKNu7Ae2jrY+VODQgN+cgwEbtdDzwlN3Z07Kd179fPXqH8dsBdCQr4G?= =?us-ascii?Q?MFk6O7U4heFOPQ2IL9tRGnE/AhBmHQQBFh207r/YPbicKt8JCz4QlBfqSwL8?= =?us-ascii?Q?DGt/tjzPMw155T9WYmMHhixTWlpBYR4mMpiPLhEsnswJTWDstfqbBTzQbHgT?= =?us-ascii?Q?2m7obhhzJaQ+8w/DzJHDw1eGPlHMQoa1sR8KKCmghW8dP3u6/aREriWOttEF?= =?us-ascii?Q?jUL/ZcUsx6qCwCmwVogsoC2g2VpLehdp04R0r0YALyNxsatDZm/4txEgA/bC?= =?us-ascii?Q?gdr2/kpo/CgZRZGqjSck1Q6cktwsD++HViOkrjz1fWC0QGO39v6vZ2W8acFR?= =?us-ascii?Q?JKoPgpSA48kPt4/znGnre5zwYkAcNYbf7DDieby9bBMmwItoPFHSr+eoZfKd?= =?us-ascii?Q?Mk6NJvmyKv62ujguL2DB6g42quN3fFY1LP4t4NVh3yskrlCOdeRHCqID4tBC?= =?us-ascii?Q?DAZmr50m0xT6PLv60olmpW7EZyBMfKso1hvWZOZys7InCgLAbLrEdQhOypuy?= =?us-ascii?Q?20MXeHU183EZ0PSU52gXq4CLrtJ75oQVs5tfWdESiBWqtrOSsj9LSf0ktbN5?= =?us-ascii?Q?4tF2dEF/pWWwvf6ANbln+W/b6o14dbyvAZYO0P1/e7Ak/TxelgIkdzjhZE16?= =?us-ascii?Q?vsUqt/cDArhytXpbaf5Y9BfYiMmKceV77TbXUMAmG2KxWaOFe+JuAB2h7/Co?= =?us-ascii?Q?hWZitHWoYkJ/PuUAWfUgES5LsUO1oF9kFY7yLTQfDLobg93Mt2RFyCbcwu8a?= =?us-ascii?Q?C1WTzxFmZampVzAPpXSUpbPs3pDAl/KvsZzj9TGYno0EsLmA45Q/HDzHJGex?= =?us-ascii?Q?Dus6Aka3jl1XTLYIFeLqYZsfH14lcPlEf83aD9X+95cKfph/dzh0f0zd1Jzb?= =?us-ascii?Q?Qbg3A/Wbow874NSY34y4K2LuqV+UO+yXhoLd1Mm0dY0QHlaFQ+sj?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82dcffa6-1465-4d65-7124-08df0753f94d X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:35.7529 (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: Nc9mwVlGrCJnB/WA8oPySVxYcWQmUu6mr2lhctQ+UAqWyABv9J2z5zI0ByYAufPZBqSF4b3kqB4onzsj4dYOy56h8qb97kZUeZpSw0DHm2KeEgIKsk7PdaeZ+oD5QocI X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 Content-Type: text/plain; charset="utf-8" Add pinctrl bindings for StarFive JHB100 SoC System-2(sys2) pinctrl controller. Signed-off-by: Changhuang Liang --- .../pinctrl/starfive,jhb100-sys2-pinctrl.yaml | 165 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 39 +++++ 2 files changed, 204 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..e2d18e0d4916 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys2-pinctr= l.yaml @@ -0,0 +1,165 @@ +# 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, input + debounce nanoseconds, power source. + +maintainers: + - Changhuang Liang + +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: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + + 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, + power-source and drive-strength. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + additionalProperties: 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: + type: boolean + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-ns: + minimum: 0 + maximum: 10485680 + description: + Debounce time in nanoseconds. The hardware counts in 80 ns + stages with a 17-bit counter, so the maximum is 10485680 ns. + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 1800, 3300 ] + description: I/O voltage in millivolt. + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow + 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_sys2 0 0 37>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index 30704a5a3418..e701c30913ce 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -38,4 +38,43 @@ #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 + #endif --=20 2.25.1 From nobody Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2104.outbound.protection.partner.outlook.cn [139.219.17.104]) (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 9378E3EDE54; Mon, 31 Aug 2026 11:35:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176156; cv=fail; b=CwvN4JmqT2dZlwHCsxTiRA07v0JsmGpULQ/laZw1Or1Tw/ZTONWID79ezDDJj6TpsZAXAvVbyB/gaMo9JvCSg/1S/72E+aonI5CZtT6jsOFpEJ3sT2JeNFqOju+nEJc2yQqW55Y51JVB6HLtSvBi7NKGyYjpUH9PcXHVGSscs9o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176156; c=relaxed/simple; bh=cV03k5cHt9RcmbpB/CJud68uZqJ2n3mcseUleN2qP8s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=fdEHn7B4q1U73jw0zYU/4myxePuDxrcIaPpyVAp8lEWxM7tPINTEX3YpjsJM9LadSpVCrLYtS9UHH/LFekpRzNHCh2EWuA/iB/io37XBjVUZe1UdMxWFjWGL3Y4yhJ2SmklF6vqu3CrL4bkVJhy2EpawIeln4C8hLMD3A7iY/RU= 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.104 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=G/QeLepZSZ4Xs8HpJPg9P30NwGPFcTiv5yDf0fZ0x/eOK4i1xcy9PMnG+gHQf7N4fheO26TYk6+UlS7iDqtuA7DJeXwlvxTK3QlHHuCyfUjIEdJvUzCuu+YuawovOijMDfVAnAXZdDTzX0PNp/05NESxeuePYGtZlyu6UBMH98zrRc1w6mskrTPE+/mvI59wLUI8GLiB6g9d1zz0g9UeeIsEHoj01AbZKo7b8zdkOd9i4cLMI16RmzAg4mC7FW4JyBh/nV++nU3ETTi3j/BYFE0Qi2TSzKmK/+9t6cfTlhCMKH18B0LCq/7hKxZVv4we7fjx2lFQbxVxZf17zhKGAA== 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=HNG67xRUr125BiAIL2gKWrgqlmzNelfOa2/fHIhjxd4=; b=PcncbxMvtFBnI4nxqX3FyxNycyv1lV4+20wddbbr5AQGGNgSphjTVJ3x8d5ckNvKLkUGV5IlSZTibUREGTKGa19Vr+PIHq02gnj6bKob/6MDxVDFwq0aGLZEdwoYwopenBycgFe+yVR9LpCcezjvmGE0OZU6qzCDYZSbBxat5bqYqsApdnDyU+G5tpNcBEGjcr2NEkhzCOrqzdKGBZP+69rSRUd7Y3qL2siDm8cV35hvQ5IN4e00zfb3GyIQ0A/fG11oNOjUOdI/M2Ga1RsJnin5nrbTbU7yfZZa/fWhCgd+M/r9l/bv2IrlJBopvuzTrO7OeG+cVN4Em1f2zqSLqw== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 10/21] pinctrl: starfive: Add StarFive JHB100 sys2 controller driver Date: Mon, 31 Aug 2026 04:35:03 -0700 Message-Id: <20260831113514.66382-11-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: 069a832b-40ba-4610-16b1-08df0753fa02 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|5023799004|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: eWb6Ho82UXXM7QndeosZgobRT7wi/ybXrdvCC+Nsxd2nqly5kIlwlbTmcIlL3SNwwyYsGMcLQ2TI5JI+oyJh0rdgG5rYhweh/slKDucOo6RAAV1i38igfRs88YkQEZQVqFODIgJKU7LThOsscXG6gUQIFGdtMz7TAh8rJX4n5p2UNF4xOrPE7BsWKVGkY2Z/ComcHwNDCK2E5u91DxOYM6Lt+b4/Jx+a0bKmUx4fNO2UQj6OMoh4hupKTFD3SFXXpimVSZNMtQJO2csZfexvBQX1nqjGH5zDJxcULi4oB1ewQ/pzmGrPOJeW7yHRjQlktOb4uRFQViWkhZ2dY0KNG35j9qY34wBK2OCmfTKmlWE44EHtVjd6agOmUrOcT9SAncpP86/PyhBqLlXZJZrXWmwaIyauOObmYimje+ACZY1ECblprD9mnmAOhERn05WSFBFhe0HIqFsGH5BpBpZ+JQn6tbCOkctpu/BMzPsSn8ZT2u/UFG3UTZDHiNNIJ3WF6KGQw3DGJm7R5jQweIuDV4rmWblDdda/Qr0h/tQuENN/FH72dcl5dFbjF4rglwJnZ04XdCdTqpWKYWVd2ImLPw== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(5023799004)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uAYnyW70IqgzPctfR8ljLSktxintuVqKy+bRjOsidtq+/6jKjd59qoMXiZN5?= =?us-ascii?Q?8hPaOWHxqRSfbSzJC4XgpbnG1jzET3N4UpTJm0WbEax5B6UdkB/nCI4N6WPQ?= =?us-ascii?Q?XRj2yD46qtHrtBH2xDBp5ohK6hMcP7sBpv1NR+uLDPfROEkwGdXVUOkyEWa2?= =?us-ascii?Q?iU6+bZ3obMDBH+x6OmolXcsRObZa+hVWU8YWgwmqOAL0zXQu0fPzsXTdgTov?= =?us-ascii?Q?cXzbEQycN/OosXMmPf2A/NcsJ0tj+PVQZu7fy9jL8I6uSs9h1BFezNj6zEaG?= =?us-ascii?Q?tsj7z8DtbfQT2Sr/WyajiCGNIuXl1WIg12TONgUqw+jP5fYY+H++ewPnXE85?= =?us-ascii?Q?CPC8l8S554YlxJRg0Y/WAhVlNU/KODIDImLENajunKVoVB7/vKCx9Gs1KKRb?= =?us-ascii?Q?j1m8/f2aLBehgTg0q2f3P6QEQQEYmd8VgCPfRbtpUGmXZvv02WTheoTlnzdS?= =?us-ascii?Q?w3a1MCQOeKQIortfu8bFbU5xk1eyaLM8pAXnueCz3y4tBXQ8MvDb/f51kexn?= =?us-ascii?Q?ND2SOfB8p2o0dmEnkoOBXcFLsUR2hn4RhX5MTFBs1V7MnlGBq9sUoN6QJPiD?= =?us-ascii?Q?1TUEvyrtcuJCcHNXSBDi/ReCtu2XC4HXqGOZDeQCYm9lOSQq7rKeGHSvv4IV?= =?us-ascii?Q?r1QP2YVSO9hjs+fqx9um9DVA5JVQP4SR76aMG8alNdPX8amhOaUKw/oMM3vv?= =?us-ascii?Q?1jtz2+cePE7MMikQXpOoznEEbsZEcR8wRSlEjJ4dCUWzq4hMFLcKRNBPPU3A?= =?us-ascii?Q?KQgM9NUS6Hek7NjGHTGcbqfI1F9JzVrLqyNm1uauv80u7p8YRiVtBBegvswz?= =?us-ascii?Q?TTCrd2zmUT+pHMdoCFJEl1KfVl8ApBWEEXOfPkZeEWqMbr2jcCAV8aeTgj4K?= =?us-ascii?Q?9szfBy+1Tkw+xupn+9bGRHhF7MZNeMzyLGy4eAx5BkYVjhh6ys41CK3q+idM?= =?us-ascii?Q?eUcwcOiUIgidkXFxPU6S/lGw84JvRjHXnAM9meBFhc+DK1eU4Wjqx3G7QmMI?= =?us-ascii?Q?8WNTlQ/V1D1obHY+p0bWQ7v/ToCm94QRmry5hbFefE56jOh7ZQdrbPZCbRjX?= =?us-ascii?Q?pw6/lbCBeslsJ3lTncHHaJ9upuEpHVTVSSn1Lm9bdMoC8KPCDYIYWbCco+Gr?= =?us-ascii?Q?W1LSuCKAKDdNxtYTnYV7QKaoOMm9Viix7sj8Nqxj6gNDsC5N+5WPeeqYbJi4?= =?us-ascii?Q?csBPE6Q6BbReEIU3v7k7n/cAdJp8I7pHx40Eikt7bgUz9S328AGYKvOUvN88?= =?us-ascii?Q?YxVfXX9aoPlMTsCz8Uof55tylum9vFaoE1YkPrw7XfbW3BD3NHPXsCBiJfvK?= =?us-ascii?Q?NxXzT000l8XuEPHyGRExoPs+zjQhZn28AoQu68Vm8ZEbRozi7PUv5QQsjvJe?= =?us-ascii?Q?SjcjFtpC7sBTZmkr8rR3mssR/FQV12mb4mHc/clJ9Zi33FXGsZZP7mRcdZw/?= =?us-ascii?Q?VfGs2O6M/FZOqrsOXlqlL3NDloGFtcVtGlTsWgUZLzlcLxx+zhrGm+ulZjhH?= =?us-ascii?Q?E3DqeWFq2giY+UkZItP3j6bZ1NGCN8dRkIb1MIF7+veYeZufBo239cI+XPNO?= =?us-ascii?Q?0uahmSo1djihUsEaBg3QChh2OQG6XeiXN68Rx6z9VXUTk5+Fvf7uaX3QShQy?= =?us-ascii?Q?K4u3egF+EZiDhT78HdS07imLdwXyoxySsh7VB9tFCLWeFD03Z0hEBvwX0NwA?= =?us-ascii?Q?vvg1Iv+fxvO4mb05s+jG5Fo5o6R6EQll+9bE31f33rFJ57EYdmKSnGX55dGd?= =?us-ascii?Q?Fn1CkLsvQxxZ71MOIPar7QMyQI1rdeBO71fDhLgZiW7edHMfxZDg?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 069a832b-40ba-4610-16b1-08df0753fa02 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:36.9281 (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: HBJacS1UN3wqkhccu6oPrKeryUDnp/tDfmQD83QSUyRoe4a/RMuULTSbTXDIfmg1zRsOq1UI5/Igp2z41QBQPU323/55ECtUdCSdIabdr3+TcEa8gAEm9LohxA3vB2BK X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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: Alex Soo Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 11 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-sys2.c | 131 ++++++++++++++++++ 3 files changed, 143 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 0b735cab89e1..bd2517b75c1e 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -88,3 +88,14 @@ 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 + 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..d7609deb580d --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys2.c @@ -0,0 +1,131 @@ +// 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 "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, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 2, .width =3D 1 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 5, .width =3D 1 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 6, .width =3D = 1 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { + .pin_start =3D 37, + .pin_cnt =3D 6, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 2, .width =3D 1 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 5, .width =3D 1 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 6, .width =3D = 1 }, + }, + { 0xff }, +}; + +static const struct pinvref_desc pinvref_desc_sys2[] =3D { + { + /* gpiow */ + .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) + }, + { + /* 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) + }, +}; + +static const struct starfive_pinctrl_regs jhb100_sys2_pinctrl_regs =3D { + .vref =3D { .reg =3D 0x000, .pv_desc =3D pinvref_desc_sys2, + .num_pv =3D ARRAY_SIZE(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 Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2119.outbound.protection.partner.outlook.cn [139.219.17.119]) (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 1C0403E3D91; Mon, 31 Aug 2026 11:35:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.119 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176157; cv=fail; b=pItt+fr587bjapXcAeLnmnKgYzqsPnquRmVcMCw8Apbx9i418PatF3dGsScY81Kdo4PSoFOqtG4Js4I0nohGhNYoUH1aKAOEwDWJMF82gDc1X8OPBBhH5wl519ZCLfqHrjX53lTC5BXsPqBNW+BZ6PQ8Tah8Wqpl+X/Fdgfh2rc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176157; c=relaxed/simple; bh=YTBwlsJ8LegmNckGHsltKhKyTH3nW/Pe9rO7hs3CMjo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=QI9KK1ekoX3gnWBC629Q02Jcd+4IVDBTrOtIOIM/U7PpLcLyxthcRVNaWf/Y+SUq7hmuDZEyLKTbRVgzp1pg6KGX24H8vgMVlldvjkcPA/lPWO2hS7cn+nSvN/MRIzYg34AJ6gczjsysGRRgokIneXrGfmvDLKqLw8YwZ4RLZfs= 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.119 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=hrbfnztNPFhVXjd6+NvEge/ObgEmlueh5rXOoeY8yGzoUetp9WErHmEFE9nWwoBR5eNrxuyJlZcdvlAxzxRV+9SuQaJb4RdXoRXd1uz0B4BI2TJP9QFEHuUg6WFuqIaosVveJaESJX1565Ao2YKLWF05nskhM6R6QZfXycSktLJ9mKDDeh4+z4qlys3xB2o+Ya/kLKBIZq+k9ijQWYjrjaKWnJ6qufJ0PYzEOURRBk4LJ3D3GdHkDDgNkUbLpTeV9TxPt0mOrjX9i2nqlcx1eREH+gfrcwCZ+SCxXOzUZWEp4x/QyieHiUhPZSwh1s5aci7FkpvmUdET0V6Bl01ByA== 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=Omj9//JMmRBbHj/LdQUt/T1wkrSMoX6RMu/l0g0kPus=; b=m1hKxK/m1lsJM3+zrhJ9pINwblGAwVnpDM6xhn83x1QQQuPwRQ5Nks+HZ5AsALzD/JBpzPGzARr7FHRN8sEQeKLpFlzKTRmbezMqXxCVidMX2jORPSu1YklsMPSe9FKSwCIiG1JCUwveZ7yprz/FfW6h7Vm07qv3LNR4+LaRLtvmg3yREt9ujoSGZOGvLx2rKNDfVk76k//TB7zMtLusE3dVd8cezp29qW8wCFnysXTloi2yykoIkYJsPJSvhohipU41FLYXIl2dgtP7db6ZSwFVAWb9oFNSl1f9QAWoBVd0KZc+7UXx6P6PjibeuZrXsakZXuotSt9SR5Y40nvfSQ== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35:38 +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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35:38 +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 v7 11/21] dt-bindings: pinctrl: Add starfive,jhb100-per0-pinctrl Date: Mon, 31 Aug 2026 04:35:04 -0700 Message-Id: <20260831113514.66382-12-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: d700830b-f20a-4d4d-f0cc-08df0753fab4 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: 0rkwmpLlSiFwlZLo7hytg1g2PfrKKGmmMSFkZCyx/QT68dF/IaijOgVmL2p77U4NR/d9nU1LzZHqnp6/yw3LBpC4nc0RaoyNAeUcnYQHEvPws96Nomp1f8SpN0QnS8XR6hQpwPl/pTCsNAM9OUSW3dFg7Cmf8xJsbC8t3HD4PruKGzKeuOYzNDwrknMQLXzI19BXgED1Y/dqIlUczBDXDRNPSw2fJzuMmmQjyOt8kRLCmBY4TR16QgnQ+L6sxQoaQA/m2xIhpJFwZnhEcY8AMZoIYLOpMylO/luFV7uWqh1bqOlX/Y0fCrcBZK2J6OfqqwyIwaLPEsokXD4tQN1V4MotnZHONHXwAWr3F1fzobgekXjFBxScW4ho6HbOSTFU+lr27Pp7EwboffpS4Fn1lEH3XIEv83og/+mDpGwfY7gohSEkMzpaCoo+RuLooEzLOwSo/RHiE7SDz2n+QXdJQO9SLpPjqg3mkFcsEoOOPJtug7/dCjs7zZ2yBl+slGkU/Acn+H8B/CYneyEC+3JDTNOiC2cqi6qR2qSRAILuu3O1U1oOhan8jwS3Ny9EfjqADZ1OJ8/jX5lfCGStW9iG+A== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kK49c2ga9pNBH+16DH1sdkOK0SaTZMoa2DSv9FZELVeP8NfJ0Xj3oXWjaqk8?= =?us-ascii?Q?gCUAURyOwM8bMW/rONin6EkdHOuFfecP+s3MFr6ozzGuwiLyTYvv9AGo5Lxc?= =?us-ascii?Q?w+qBdnr0n5gLdV8jUh/hgrtxqoJsAVgEQCcYY5V+nU+Ie7IYkOIA6HPXXy0C?= =?us-ascii?Q?anNmaiPWp2uRnC3L+/MpaCcpNmeQ33DxBN8kixZtE6LS3vJ6W5QRSshEPOp2?= =?us-ascii?Q?ODVQKqqWF/tipDDkYVALJB4S1emVhZ7mBrZgHineTZyQWytwrY81rhwnuF9A?= =?us-ascii?Q?UZrKvDQIx0qnODl8VwBC4iyqrp6sSI8UhekAyIG8c5X6NY7DGyQ78OFmCmjn?= =?us-ascii?Q?9TlZGd9xnxH1pcOaugnm63Nb/9xMB78quBicvYIwkpMG1MsfcjIxIj5vv+MT?= =?us-ascii?Q?CVsW4iNp7g8FZQO0bU6VWpFwCHccz7JIw+ewzYHmRtDS3pEmb4QMVh2d2QiN?= =?us-ascii?Q?o+DSCHX0xkCG5YNooqXKMewJW3XNRAdmO2o+lGYgLKwVZYRcNHkVcfEAUpxo?= =?us-ascii?Q?b6LLoTfYZ1chYypx2nQe+bP5EijsHjkL1HGS9m0CmESh//ipWPN6KB1K1bKa?= =?us-ascii?Q?07RLqzWLl/dZcKdeLH6d592NqUSRMSdFtXpdf13B3ez8WFFWhJ/cjtNjqgfa?= =?us-ascii?Q?YGz4phZr4fvxERWdmXuxBpZihLGAfzafoWMqJ2Qv+FPsrge7k65Ey0Y8qL/0?= =?us-ascii?Q?sjGcskcPQYAIcUBnROFsd3xCUNE7P5mzL25CjEcgNWPs23941S3Eo6aX2aLY?= =?us-ascii?Q?9Fn6I5/IbeLRbXoFr4j2V4yxOYmMHCSfGs0NU+t2ZyxewjvaJnaELuSbcZJE?= =?us-ascii?Q?uFwmoxXwr76eMmzQnFWaBRoTWn03AGugONWcd3vHC3WNT5wY6e4RwhJlfKJt?= =?us-ascii?Q?dsc6g9vyG5+scLVjcXT1kQ9ejH0qlr2CourJO/7NtaUBPUYrRryBd8nTdU0N?= =?us-ascii?Q?1NFqASazlXnp0x7Bj54UDmVSUYrhTR6LdV0Y/2z/tqq+jfTSL65ByIkwaic8?= =?us-ascii?Q?B2cl8Sdz+xgRaEvV0G1YVnaKyQuL/guD64QvgAo7bGYfntGzcnzjwEu6M5nq?= =?us-ascii?Q?n0WBa96BrGYojNKLI9sVQrq1RL4ci64+tgZIgClcS+BghmAduxKMFJI61smT?= =?us-ascii?Q?jEA0ms6CFFN4QXfKNuRxaZ0reshINa3R+C5+byHFIzQx+zAVuykIk6ifTU5/?= =?us-ascii?Q?Y0l/ReS8O9Mry5JHkP2kEMQYAj031YOilDltiAnYtRtb3hAHtHTrNk8am0og?= =?us-ascii?Q?LVZvDajiQMjx6Rrzbf0HD8jatkAk2UDGBwSg9lnY+da4vTCu8lUcrDoz7w14?= =?us-ascii?Q?J411LyKdkr9yGQXoAbsYKvu3aQOE6kazUClZFERT3NqH/gdBHXj9SQd0tlSs?= =?us-ascii?Q?RpRwhzZ3veTwR/QZejMhFBFrI3MiWvP8lmyU5YaJi3IhBFzQ4pgfIdQcoKOA?= =?us-ascii?Q?Ew1WjRhJ2Uo/Z7sqnZTXKrstvxBQiX0RPLN57ED63LSAPTjPZAvpfHz/UGbk?= =?us-ascii?Q?byzcCX/xVSJvR1fdgN/whC+lE41sjitfHG91rvkV5kmJfp1c37G2Tt5xtBAn?= =?us-ascii?Q?Jv12kMiSNaFo4Xp4Cv//swGgIOWJ7C6q6TvHvlt1fghpQbbkRq6kR0F2XXXv?= =?us-ascii?Q?llT+twdGx6pvXrHjXSMYO0OOSCWKfEohKzX807ujpDVwxq1KZQd6ABDxEJsL?= =?us-ascii?Q?cdQU0HRtuko6TkQYT43aH/My4UstisqjO3xx0VLlE32pz6dJGWEMAddswEES?= =?us-ascii?Q?TeOJ13dhpvKIGjQ5mniQ1M1C79C41VhxpKEehWQkYdv7jI8b8irR?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: d700830b-f20a-4d4d-f0cc-08df0753fab4 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:38.0929 (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: 9pPOlo1oWEwgOCr6BLivaChqQORg1NeglIC3yUIDmyXsWtEG88Wu1W7kw7MIq4KwpIKvJg7ioXAzJseOzm5AvoddejTrlSOT9WyI8rcHFiWRlyohbAu18FmKMzoBN2fA X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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 | 179 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 62 ++++++ 2 files changed, 241 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..0e7e7f231e2b --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per0-pinctr= l.yaml @@ -0,0 +1,179 @@ +# 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, input + debounce nanoseconds, power source and drive type (open-drain or push-pu= ll). + +maintainers: + - Changhuang Liang + +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: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + + 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 + additionalProperties: 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-ns: + minimum: 0 + maximum: 10485680 + description: + Debounce time in nanoseconds. The hardware counts in 80 ns + stages with a 17-bit counter, so the maximum is 10485680 ns. + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 1800, 3300 ] + description: I/O voltage in millivolt. + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow + 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_per0 0 0 60>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index e701c30913ce..e0ad453d6884 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -77,4 +77,66 @@ #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 + #endif --=20 2.25.1 From nobody Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2104.outbound.protection.partner.outlook.cn [139.219.17.104]) (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 7A3B43F23BE; Mon, 31 Aug 2026 11:35:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176159; cv=fail; b=VDvZLp8w5m2irO/h6X1dkOiHjNPCFNrQ6Q1IUp+ankcDipKjFUfqkCL4noozG7A3CrhP2DAdX7PnKrXiR8NctRY12wAP7YBLNHz8xXEIx5ryQPWAhwwsCcxa3MdCJTgU8jR0PtYSWYL7C+xvp5G31+fZtr4QOt4eyLN78FUA9sk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176159; c=relaxed/simple; bh=D0qkaqlEtlM59PeO+Ges8zxa9Lsj4LPB5fK9keO2dww=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=eLddmcnuekdHHVnzgtQLwjC1hdLUd0Q8NxorRwQz/oB5ZeVplMywLPTnSwZEy6fiecW/kRflSc2ywJbIM8+wA7esfvR4pEe8KxSp2fjZ9CI4FPrVzk7wvN90EW8q2Jg24R1h5pislqlMzVpr2elYoA3GEg08FSbzYHyf7/9hQCE= 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.104 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=FkLAb+fBLOnI7mp/eXLXTjKxk55z4nHKqcDAzdyFtIw8lr+iJuXtspSl4H+kylp3cHxo8R5XRQ5AEJFDfAk7M2ypCT4a5rpBshYZ0DqEDAZt8z9gRcyD6UAtUuHiVPDCj1HyE+/1EZ44wfwsZK9hOXN0Ff43oDjhqApEO1CNxsbcrjShU+NKlPiLLFI9jsrnJzBQnebRCgZMuRwBiruiAfkrLekF40C1mAlAwZrRnLAE1WQFtvJf6n2J4SWxGxsEwS6Sl30VKrbMCFa7J7en7tn7SFaNHickY2TMJOWWI7FOqAlDZYI8CID5k09OxZyzO0d6tXF61RamtrK+hl17jw== 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=TzIQV/iNG2sRek+FqrPH+4YOYg1wCQ4DtmF78PAy2yQ=; b=kVh4IYYJMVZNAwy54+OlQ10NlkxUTbpKmOpFD3+qL/0b/IFAE6CQcX2exKnKy5YqmuFiuK2/CG7tTlJbvi4qRZnbe1MBVgbtfoaafwVsh2R5ZW2D7U7MEDHCCzLp6WH4l0avIiFRBfiCCg3SbHHRbfPBfHnEW79wAAVhCS01Wd8eZ6AO6+EoH20/slz05Gf5zZ0ZD3OeA5bP3/2Isd521bklzJZtJXF77Az9eVs2eZ/Kv+Sz8bzf6erDuRuI3PmC2O3Qy/wHKTWNoUhdZdak0nRe/RMqB/55AbJmjaK8bUeOA1N/eILPBGKiKf5twd7Q6qzP3waqM0HB4S4DNioikw== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 12/21] pinctrl: starfive: Add StarFive JHB100 per0 controller driver Date: Mon, 31 Aug 2026 04:35:05 -0700 Message-Id: <20260831113514.66382-13-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: d8a5023b-13d2-40e8-bdef-08df0753fb6b X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|5023799004|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: M8zR3rbXblEIasj8svJSHhQLCP9dsE2aQFDaUSEJ9MZ6pQN+m8CXjJOa/imQZIhWK+ymZ0ghVZRch2pVRLzFRjNk2QzvxJatKiiwHt1GEn/lqeDf7LLgdpuckvfDO/l8ceHQtrhffn2RL+vDjaAeQGd/Xw4Ac34q89SnqKGgwKs7mo7MSFL6X/W+wcbtn9BNtG0s39kUqXEWksKVekIg9D0p81vFB+WoLE2xZPm/EBO3PQr6eUr/t0M6ErN1gSKadG2v9UYtweNpc1BU9JvcVeyKrzcIkakwwoqqzsMvBUFJayUh0EdRqoKB8u81d8GXGhW64idD8XIbB8bZ+Vh4BFvXJTvF+o5ycMod+3gE57v3zc1W886zFGq2U7ZOMnzrS6KuvmvekNWHq32DiGQU/lQu+smiUXOH6KVyGaAQMsUpS1TFh81vGYrLB7/PndUPOM3Imph4hBWANhzhGDtaIACRN14CM8EOjNjr6hBgXcO0FwZHzGMX3gwH7EHa+KPD5+q/dl2SMJ0a4tD2rNMfP4MAPLbB5pyvv/M6idwZzwb5hXNZVgYxFn+RWCqKNp4W 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(5023799004)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ARyuT7FSlYJmX0XxAhOb7VN3bdcBUU/A/M9ntEnhNLtavAJnZtFdWylZ1AGM?= =?us-ascii?Q?4HMUVzGmK3WArOCMZo2d1IcB82Pd1zJNljinc7dc12ETID18cM7Mh2EdLZJQ?= =?us-ascii?Q?Hzt2t8vrHqU4DWYLJCRVC+S9ke3F0osTPsuVm0sJG0wTZ2V5z2aNfqaBJchm?= =?us-ascii?Q?ZipEWRT0jdkxPaR+OwquuQ6+5/oQj96qIGEKOR1ZDhMEx/5VfOlF9q1cZhha?= =?us-ascii?Q?PGxA+uXhg7lvLXfi+dKpOqXejdscGtV7B898qls33O7OItsmlPpifN+1LBa4?= =?us-ascii?Q?ZaKGgJqBhVP68rUiT3dk716rj2pBGj29ZZNPp594Ut2sV8pE1cBsCHqrRw5x?= =?us-ascii?Q?8CzK0lBxFVDI4ESLBrbzyB3p7Ts9BcShWA8cRij6BKEeRhsetTahJoH+ke5J?= =?us-ascii?Q?Wc6NfKykh1dshn9lyZzIXql6k4+D05GkI0ht5unamdOdN5/XEjuyt4cl8Od3?= =?us-ascii?Q?1TxCovNSnvzJ4D2p316xcK4jSvR03O835ZA1LaKXpAORj5vZZx+RW0dUOBOa?= =?us-ascii?Q?wNHRJJI5GqsWJPf00bawq7pN95qiwd5y6IPW8awqE+iKu45774iJ8j0paU1u?= =?us-ascii?Q?WOdterh4ZxxhbBBFUDKj3KGEhGkaFaj54E02td2PRKuMvXHDcb0GZRSBQ6Qo?= =?us-ascii?Q?PBuJH6zgptpL/k7NVd58CR6XBlG3fR8jSkxZhebIBXLMUD9Cy5nft81C/0zK?= =?us-ascii?Q?Mi1YGT3nr9ebehPOg+Fk63DSU4uAlCojdeVV9YPZdlPxKShklhEZm0J8RfBV?= =?us-ascii?Q?CNHyXLFv6dER8dz0urtqr4khLSVSfl3yGQR9vumicMkx4G8l93YDNaPAAVmu?= =?us-ascii?Q?CqN1SJy2dBCfESnYaR/nAebRwNjVB4J3VxnhPxnzzuf20Pp4WyaabF/V8tgu?= =?us-ascii?Q?5JJsZ+R1rZbdUI5Yd3kjufjpYW6gu1eXKfOB/i3r84o9zvssBVAbs+SBaAZ9?= =?us-ascii?Q?CWKh3wDOIzkIyaFYXuNldd/kTj5Q817vcPmVT8uiOyV8V7NDcUKATa4Oy+a6?= =?us-ascii?Q?9p8dSPftRp870mdBpKS66oWR/gbMh+CPBqB6oAL4aeju5RQ0NOhCpU0jT03t?= =?us-ascii?Q?7hJ0vlleEVwopPMdNsXUaCOcjcGnkdcEcYWBFcfGDoLMe9iWH8yM4sZuer2m?= =?us-ascii?Q?1JcSwPfHDKD+mcoUI/gXP8C0QWZFlNZ4qkBO6syY/vmb3gprNdo2iv1UmbEz?= =?us-ascii?Q?OHasvzWbN2HYPYsEJHwB4nSOnrCGlScsoeLJBasn2y1oN1qhY1xuka+5cIz5?= =?us-ascii?Q?Va9eJZLLKQeULX74AVJSsseG8IvyskNPnJCNB7DeoWhvzMnUdQQDJbtNQugY?= =?us-ascii?Q?6H8yrryVZl9/vrmyNh036H0HlPf+4CLWYAu5n0B0ziQtAeFPE8f7GQlYhaMU?= =?us-ascii?Q?X/G2xV0pnrkIn22qTUmOMKAG84XXCFCMyyDoOqa5NMws128iAbSZIdRrIOk3?= =?us-ascii?Q?HE7E3iVoDrHg62e0jwzD52GU+zst0hheVeiPP7szXcJftN8cSF4+m8TJt6BV?= =?us-ascii?Q?GlZUp9o+CFMPoJVN09EXW9brHVxXvCOieN3vlOUOpPkDDfae9XFL4u5IxR2s?= =?us-ascii?Q?YkfNd1CpDxK+EwEpUmn5k9FjDJF4NvcdGQKGtLzeURuICyaizIlD3//IJTl4?= =?us-ascii?Q?SmoYpuxGY+uZqNwU1fn2Zb3l52kwukgNrEh10k9VYkqyxISAv8NF8RqaVv+Y?= =?us-ascii?Q?kqy0zOywNan2grQ+GwvVP/KYOeqnNXkuCiRFNNTfvqQ0rXB6wiWd7ekfExCY?= =?us-ascii?Q?2vx3gOOdaHQP0ctjt+EYGM4K1lt7Ff0Y0dC9/sBHns91FKcbq64t?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: d8a5023b-13d2-40e8-bdef-08df0753fb6b X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:39.2440 (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: ExLd9QbS1LwFva4N90niWnHwMFU/9u5PcTxB0GG7HCjA7RqpEDyTshPniEsQ5+ozFGCb/NZPc7ssBhI+rY1QBkKeFQyRnVh9bkYFoknK0y1P8OO8pG7Dw9KOIWDBz2YZ X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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: Alex Soo Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 11 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-per0.c | 152 ++++++++++++++++++ 3 files changed, 164 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 bd2517b75c1e..ff25bfcd3ff4 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -56,6 +56,17 @@ 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 + 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..a3ec991c6187 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per0.c @@ -0,0 +1,152 @@ +// 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 "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 const struct config_reg_layout_desc jhb100_per0_pinctrl_rl_desc[] = =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 60, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 0, .width =3D 1 }, + .fields[PAD_CFG_MODE_SELECT] =3D { .shift =3D 1, .width =3D 2 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_OPEN_DRAIN_PULL_UP_SEL] =3D { .shift =3D 5, .width =3D = 2 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 7, .width =3D = 1 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const struct pinvref_desc pinvref_desc_per0[] =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) + }, + { + /* 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) + }, + { + /* 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) + }, + { + /* 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) + }, +}; + +static const struct starfive_pinctrl_regs jhb100_per0_pinctrl_regs =3D { + .vref =3D { .reg =3D 0x004, .pv_desc =3D pinvref_desc_per0, + .num_pv =3D ARRAY_SIZE(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 Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2119.outbound.protection.partner.outlook.cn [139.219.17.119]) (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 940C73EC6B6; Mon, 31 Aug 2026 11:35:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.119 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176160; cv=fail; b=oK6PwNV7dhjjf2+I+ERjQtTamdEAP/SM1tvmOH7lCpXCG7wuCHPYa6Dp/KVlw7vE6Hlot1SXTwxdp5ByP1ww0hSuEdLv4/tBvtWzXZWMVpYNda7PS1bqzoc/2Y2DdB2l4JjgNh/+y1jmN/GlohcG+qSJW8YqAIi9qfeXCv/mO7M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176160; c=relaxed/simple; bh=adUb7mhZFKoTTRna7P8Se/9I6e57meVyc51mVknxXKA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=VhkQb/xOKYH/IWRUSU18ksOPkEojRDXKzpGVqCi7RwUWlVnDrsKLqqHHN+dOhHuTd1lLgkTyJTJJegQ4+kkDkIiD6LnpfymKGij95Vx1CIOBWkRJ2TY3I8EIE62c7fLpCcyVWnxARDcN0xVWLmZPMovpZzoEJPZsU34oOCDVaZ0= 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.119 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=WXZQ9de7ThYZBFFW6hTsglaF9IqrjkfyvT5I9hFCzls9ViJ9XJK3qzkJSKBOqRwyKMVGHvd9DVgBx61BGB2DlpiDIvUCd0ITs17bR7pXEHlYFnRh5dRRJCqeG5oOMG8W7Qvalp6BkjufRVcc8rG8AXEQZ7GUJu7I+XKXu7D5T1qGeT3ziJbsMEh7FWobk5SYfe6Qi/s6Q82dIsCxdDQzo6z/eku1a1LueqdWwlo1fO6XHD/PWVNlK3afjC1K9IXaVbKF5hcIZ1/jWt2AvXKDxj5FHHpzaAcLe9SKwWON3VDo8YXyNE/rnJ/haXFqVfQpnOjtU7I4nrUjbTmp1obh0g== 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=gOfi2UMI/9qTb03pjp6ZV/VOf41CV9pEpko/wB+NvHk=; b=jskmI1dQwsYrHptY0KqC2jSiWmBdLdC03PdEzkO059J6kacKZvgG9yOGm4W8U5YzIdZTuhFie6/HDjBUiIQuD3ZA0Gn9+1b/jfPQeQzPIo7KP+D8FPXmD0BsPM0jZ5pM0Twngr5fl5LvBWn9tAdVBCK2linduBo0Ex3ogaFbT5xqvJWx5mKfkmrx2PNg4T1sdoDbSq3x+49JmnnJSPaOuZoHcSQmPnEb9vsKhaqoK3O/oV6bZqTDl3IYkDpHIP8ZvYSZgjyFIdzifUPYTMYs/W92RWCsbM/fFIOiRWzIDdlhNIPQ4fc44bJbOnV+cnGsstIiWrEeOpC3+DV4VRV/9A== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 13/21] dt-bindings: pinctrl: Add starfive,jhb100-per1-pinctrl Date: Mon, 31 Aug 2026 04:35:06 -0700 Message-Id: <20260831113514.66382-14-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: 43057a19-d8eb-49de-60f4-08df0753fc1e X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: IPnQyr6nfYMOytfAXanB9VRyUNcKEddyJIODQeqeZCWjjMl3d62md0erDyuw6ei/u2kkPqjqkfSzWsBNkF/cCkLEHO8HAG4ezyRrhv4TzJVJ81FD/nV2SIuPrUNknhkLOECBOF3UcCNsU/kSB+ZhpicfWaxjCZ3a6Sb4OqH1COsULfmHY1LAHqRTAvM/PXOsxJJ0qDjaOkVGjMkyd3uKyf/8j9E2sSvHZgdPr5bzPgn6I4ZXf5BRa3pdm6uFNapiptiYnzOSrriW3Vsk4R+vEaD6NQCvWMR89bjTFRq1ohcQAA7xPDTfzuJV6VghbX1HuzXAfZMDIecV2Q7l9lHtSmPsUqxdqgrVqU18HQaT89LwRRdegX8S67PyQ4y15u3jXNOZH3neq6orFBD9h2r3n2rKRuBoXWzALqaxbwAiBYkNW3heCMp3GhfHgIIn7SoeH6dz7QnrjVy30avo5vHs3m1O9Z2XgZ6mCH7X3E+/bzvBakyes3kPqiQGS+HbYSEmQ9/JCgCt+lCDhdwmpt3CGm2Kxx9auu9y1Hhc9DAlx1qUuDrc2R5R10UMl4NAiWEBYh3tnlYz1srP4PuIQoNB+g== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1O3q1Suaa+Phuar1DyKEE/axfItbH9LBEQvIUSEFHWcTLkZ2dKFjLaFN7n0d?= =?us-ascii?Q?qyjRImVK4Q+n2ngKI+D3kNR4H/nviT0Te+yTSd8I+gDWqH22UZClg1e0gb/r?= =?us-ascii?Q?eA7YK5p5nqF9yZmNyPYh7vmjdKui9HAbCuwCsMN88m+DhjUjPYn1G9NPl8Pj?= =?us-ascii?Q?YFomrQmumDuIqRz8r65U79JLONhxkF0rqG4tY/6evQnpBKNYlsSM4r91xcb3?= =?us-ascii?Q?zepMWhdzuEm2g36uRwCwVnoR1vIr+YB5Qbxd5qe3dsl8C/ILAseqeJqlnj4D?= =?us-ascii?Q?ZitRLcoi49d+JFonc4Ax6SwOi9erEn25C67uyBP08a6iFULUCa84HclLjb/A?= =?us-ascii?Q?C/jBCwqpGh2bvue3KGtgKz9498RW9htQ2IQmgU1UHmL9rgn5TMW/gBYEEHYK?= =?us-ascii?Q?mQG0Zjm8j33lpCEYasNu0TpsxudBiCVP7KcMfPy/ENjwYREiiiRydGO59WU+?= =?us-ascii?Q?61ATnx3sE3QfaVPDzraTNQP6DJhYhiUZ7Xrxfpyo5s9m41woYwbdO5tvNIuI?= =?us-ascii?Q?V69K2JKULoKzoOrgbM5LJmBZ1HVQ6z2Eq5i+12CHA43+mG6+XWrgGa4vSg8h?= =?us-ascii?Q?A7jZMEvujnlnQEa4WS7zeRQDYbw3XMiNXPJBTyrrJSLbE8GesUq3BJgJwUpq?= =?us-ascii?Q?NVEz/zOflmAldNHLnwm7htTO3Es9gCOTaJiTvhQVmMRGAM5CTSoWN5H888uH?= =?us-ascii?Q?MF7Eq2vZb8vbVvReW/pR2r0RtGeJIJK1SsBTQIyE3I5mrJEzEoXSSWXQeg72?= =?us-ascii?Q?UKSL0aJrZ7glPxI55dXuAE8Oj/A/9dT9z3R9Y9ZHeWhlQJMrhb92jaK3BVSx?= =?us-ascii?Q?zQtWemOE/jwCt8W0sw+bvRoNY+93NUkcH7v7V1J2gCr0ZMyMrIFgH48zncQl?= =?us-ascii?Q?U6kcTL/IOzyN+P0uNMS0gV+qrlcAoeHxh9GDJVgGHYa4p7zb3uAVdvSc3tcw?= =?us-ascii?Q?t4eHXxoEhQ0T/ZiPuMU3PHqFQj1YPo9cvvhF0FgwwX3V1WSOS1ucZ4vEp32X?= =?us-ascii?Q?pJGHN4Lt6qD/g1NsImCwGf6I4h+x5moqMcHHK9TcsS16+EX33e2F1QlQt3e2?= =?us-ascii?Q?cHxUqS8pkcBkD8Nou6jmlKZlgl6y49XbIMIgPzXp+mt5lByfFUYUfc1fT5ez?= =?us-ascii?Q?e3QbKtuFu9UaZlGqYep+DUcAWuYCdj6VARzoD2BMtoM/VBW5RfiaClEQKfBf?= =?us-ascii?Q?FAI6D7Zzj5V7fFJ2K2e3U4u1pUCyvAFFvc2ruFX+epsUR5vVIOrwsSbIKlfO?= =?us-ascii?Q?TB3TE646DIyPwFfewdM/ux20BYmGifH/3O5fkg64LOX6eXUvX3AIiPeftlzf?= =?us-ascii?Q?73ec+b9vZ7ozKhgJAbaBCvjwgCBUSqn2+vK6oRYIqnibF6xf8yhoRIXM7Jxa?= =?us-ascii?Q?mr79i85F4MgJa08xBj7Hjm/FMbEWU1j0V5iQLJ4Hq98UmWUC0WMm9jnLtGLI?= =?us-ascii?Q?K1X1BZlej1PlB5I8u71m75clfL0q7Vjhdd3zY4qf4HyRDDe70tfxjTl6RXfi?= =?us-ascii?Q?w2iuKNJur/IaR42cEsAIZYjLZDlFvZhc7C3uaANSUUbPTgp1JUQK1DKLCJ0/?= =?us-ascii?Q?zrxkN/NxpA97BRcKUMt/70p+kwlFpn5JXP672kntNBwZdYhWkEmW9wbmrWlv?= =?us-ascii?Q?jphPhrzMRIYAhW8K/mNGtIbaP9lWAIS4b34ahBOf7SYZuaISKeL4OjwR1I1d?= =?us-ascii?Q?AMx7rZyXRwA8gzqmwlUQgb4l7OOUprAIjD5UFqP89Ot5UA+UQBbPbr4HnOsY?= =?us-ascii?Q?jyjsRUtay9ZufblPuVQ24eVIAsJ4p5lmqgXdqkTWcxNYo2ovD9hn?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 43057a19-d8eb-49de-60f4-08df0753fc1e X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:40.4304 (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: et/du2H+/uRdz91FqGJhKqDNjH3gJNacGrqRG6XAjRk0FaOGSky90Q3UbcDXEod3vIYjwvRmiBhlAQRLIkWT+nMO4gKkik6sFB8hebK4SgzjsQf23AQiSptsWWzbd1HB X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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 | 178 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 38 ++++ 2 files changed, 216 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..932dcc8ace85 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per1-pinctr= l.yaml @@ -0,0 +1,178 @@ +# 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, input + debounce nanoseconds, power source and drive type (open-drain or push-pu= ll). + +maintainers: + - Changhuang Liang + +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: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + + 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 + additionalProperties: 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-ns: + minimum: 0 + maximum: 10485680 + description: + Debounce time in nanoseconds. The hardware counts in 80 ns + stages with a 17-bit counter, so the maximum is 10485680 ns. + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 1800, 3300 ] + description: I/O voltage in millivolt. + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow + 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_per1 0 0 36>; + }; + }; diff --git a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h b/includ= e/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h index e0ad453d6884..9f622468c294 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -139,4 +139,42 @@ #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 + #endif --=20 2.25.1 From nobody Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2104.outbound.protection.partner.outlook.cn [139.219.17.104]) (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 C00B73EDABA; Mon, 31 Aug 2026 11:35:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176164; cv=fail; b=N13rM5hPh0dzB5UCHJ4AxdWI1hY1hU7w9V4N3xs5ENSlfFavhEBQli8KJC8n4TpnJz08BynBw57Ik9kNRL077BWDQCZ6TKtm0C3EnXAhW+XM+KlcTn/A847FP/MacqewbIT84QziFvJWvlZGkfqaTEyuWI20Rdg+sLaVLrGm4UE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176164; c=relaxed/simple; bh=UhuygV5mNKv5jKEuWAQUaxjSqmxasTrXZVUpsCeArXc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=TI3u4L9vRLpLSaGnn5NDUV/3jiIcie8nF1JHJF26v5bZGoS+uXRdwWULiHCeEVxTe/Pt8//tPl0OopKe5K/UPzoeomjZ8ihnH+5McOk1Z4gWmstVS6akfC5ooNyFcVGFerWTpB0G+dtRyL0907sMQtP9ZHfUJqyNdKMi/HDIwsI= 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.104 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=nCxKgrcDOOfPsIxn2s+tN+LxDSyGfv7C6g5mrTFxM1HAVo9uPfJA8ZCC3WVut2A7mxx/kYoSbFA4hMsYl6Y0VYx1Pau7PmUwatEHD8wlN7+WrXoN+WHkRNScwOOmcYqTaghMin8fCWU4PHXHP+zk0cp7ECW8RjAO4TPPrQM8Aznb6Po2QZ+oOlNUBobqI1iHTdvkcyDBUSiOMM1i9fBX/C6JGJ2AjneI4T6tJNnEAVIIr4AtHkgJB6BOxZ6j6zIToXc014yGoe5f1tgWOGGKOe7yJTqhwWlcM3f/J4Xat/ZAmzNmwYoe0RoIJwtOjntx8rNxgINrKCw8qr9s0Uzz2w== 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=SuUqFw5llJ2M7YTCh7J0Cl8RnmljSvel9k1XPHt5g4c=; b=VcA98kCcMMy28HUK9zw3zvLf9cwjIfHtvZhe9MxOCSQKKQJi7K036DkvjaaOSADc/87yqAHlIowiIv6XmGDPOrnr1KWRgI2fzjSZp2LZ3SYTBKxYmD5ZbZloFJt/g3ZOrYuLU6iOSaBk3+0gSDHN8Mh6TiGDwAU7ZMOnkY1W4T0oNOS/PITjxhOAo88Rq4vjvP+xXemoFxnGvI6KTvqISQ/XmdVjiZ23Jw3MRfv/q4EqsQLRvEwErNrUOn2/LnNvqZcNLniWNBOZGwtj/hdpm1BGJ3Fdn9XloCQ7mlSLFDPNSsZKxLsOezpFQ7AnBR/LPKkMw1OcEE8sx6ePfo4yzg== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 14/21] pinctrl: starfive: Add StarFive JHB100 per1 controller driver Date: Mon, 31 Aug 2026 04:35:07 -0700 Message-Id: <20260831113514.66382-15-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: d2c15cb3-91d6-4c3e-6fa9-08df0753fcdd X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|5023799004|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: cukHjtnP3jOnBho6D1IpescGz1FrQpRoa6eZBi6hYkj5CzryCtrCMU223eLsJPcT0Fju0KRpKzmWaZ6ejjg1xqHSKBjaBefhIQF0kZmn3D/qxigee+9ESjCudfJUZY2zi4ig+VKXPbdi5WSOcOIEBc707lh2chnlhXeGFLFzn1F5xuQXGBoAZpRlVex5tvfhalNi4LEfZSh30t855CkcpK/McgM4u15ZYQbyzYy0+hllFAGLhZx2is3qiRRapRQifuBi4YdU2gNZqS+ZonUYLz3gzQGOLhMxUlVCvlHZOXOtEikr8TtoKBMC5lrQTXIpt/OoAjvN9Eoz8jwgfTOH8p1Hxagh7x0BcNTBj3LN0CENb0jos1eZh3oyCjr+LvNHah2HS9DYXbFMRQfECC0P/hihOUywYIY6K8ureu9qNhjAEwL7shG7QEZ+1U49ay2d3B9OfAEdODgnvkvtoa/mG6DtPiwxuhDvYzntgLzFTBy5b9KNUuEMJRioyofceNEWXvgcJrATyypRF3J9lzvN3nC5fh7aUHo//ZSQHlMnkG+TtfVMDDZqhBPifZPOUXWLDZp8rZwYhl3Ppb9puH+dXQ== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(5023799004)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fybehbj5EE9mlZByyB5cMMAblGJyeNcrzcGA0FUBeXZm35pfMmZL6pYSNbrR?= =?us-ascii?Q?LZdIp7KzF9LEQfD6zVGqJhBd0su2LM454vrp1Wcp93Tf1BNNdJg/5jyk3ifW?= =?us-ascii?Q?sT1E2fMmzdglTKjyiVeg+4UWu9tIQuWinVxmEsSnLM00BlP830AYRA5WjwnL?= =?us-ascii?Q?JxqRN7jWYC7uAtjYYrvDpOoch4FMMvxp8N78620Emv1jEtcXrqNFwCkqTaN4?= =?us-ascii?Q?GcPJIF4Nq+u/aHZcVPi2EPLY9fi+wP5UjtF+9s7cAOoZYMXK+bCL8J3hCNqi?= =?us-ascii?Q?cMvEoWqTnwXVR8Bdf4DTvQKLC9C/NsMo3jRN0LG2UNSNtMBGRuwRpZHuVvyX?= =?us-ascii?Q?fXCR3lRj1sFn5RAY6+uN3wVmpSk01QCjrbEh2My8xthklYVAzQ+8fbusFE6F?= =?us-ascii?Q?dEGq+HtOcOuK6RH3b0iCjU25MrEmsoT8soKGfwv1Is4Ch0+24pYjNvx2LU6i?= =?us-ascii?Q?l9FsnZDEE0LefiNvx//96gZh4WhTZmkLgYoxFT/n7gyvwLSrZwRIsVFzylsD?= =?us-ascii?Q?b0qZD/OB4avC5BsRIFOpMKMMB+I5HPTqj6fMye/4qRWtGeeMNtRd8ABUzHFZ?= =?us-ascii?Q?94ds9zxu4iU3oVL9PyDaK+0wMjTqi20To5CkB57T41kkzdUx6RbXV8Mly6FF?= =?us-ascii?Q?UDWkL43LSl5VUJLvOpTpRmOEu8OrfJxa1XcufEEixJjaUl8qqBJdG3uSys+e?= =?us-ascii?Q?YaAKFqNUZQ+561Xlz9CkPKEgeT9sDcDQuPiN3moQyU3IIuLovr5P0qcawNCv?= =?us-ascii?Q?N6tqq3c/J+SbINEh2ElB4BZ8PhmjIN1JE7sfXnZ7tdE8mm8AHRMqMOgsi/iX?= =?us-ascii?Q?zByVkh7wVHS4/oAi88F/GK3d8pd05a6CCFYcX7SCzd3/h6WiIeH37HZaURI9?= =?us-ascii?Q?N6rHHxYWPnl/CTHZ+QnPhdPFJ2aWiuA4Qy6Pd0KKz3RKL2zp1Gt/5VgvWFTa?= =?us-ascii?Q?Jy9wkgU8z37w8UqT9JUC2tUeGRHZJG62hs8urRDFg++asoDvfOR6zreuNTlD?= =?us-ascii?Q?0BpmtoaxxV3IbmFu3IHAJDPPd4eqgDmk4trPMGFKxYCAajEhoALa/6dyZ5Pq?= =?us-ascii?Q?dgmwotNarwauPMbo+eoIB0/crMs1MXYB5F5eLmi8337sjEZj6cn0yPfQa9A9?= =?us-ascii?Q?YTgFs8EgmiarzOoApkvcUJ20xXjW4pPtiffmLDv9xoJUK26S5sIXengCmbjw?= =?us-ascii?Q?ciEslIcjPWLVEFcGsh9+Bs1br3m195C1yhQrEB6HPAYUc8S0gbXCmQM0T2JX?= =?us-ascii?Q?z0MhmAYBQq78lcy4/PW6sxOW9APQsjGMngrA+gITOPG+El7mB+93BnnwLDIU?= =?us-ascii?Q?l4lHmIdhlHr1oym56YWg+qdHU4xYPXfE+z1o6TnD0pRuCCpHkL0XzOAOrVF9?= =?us-ascii?Q?+rpmBI4D2yDzE/mUO919nCuUXkBhkw+K367QP30+RcexLhNIar7X7t4TwHPh?= =?us-ascii?Q?SMSis8W7ccJRCAznGakAZDh/jt5NZdUCbQucKLsCHHOHI2wZbJ3o6YSjZeKa?= =?us-ascii?Q?yJ9zu2+ZhX4C/rQU/nI0bP+tce4KI73dCHMF1NxZkzA1BM3GMV7frNuvVdS/?= =?us-ascii?Q?Gc59WEjuvj+emr7igrRR72i9vXQjnvFoId0+p3uR3z/Z8b4U1p4DgxyvSMMb?= =?us-ascii?Q?gdOo0wlOCMKbJeBUd1gpD5FKmhU5FDwEQSUUjZLVyuYFL5wKO8TkR1oumNzu?= =?us-ascii?Q?EaH3Ow3UBsknj6yuqsHhvXs8s32AidnLDcgHbOagI8at0u0Ct7kLz6He0UGD?= =?us-ascii?Q?dlmxfuMDfzFWoLT3FemkXMxvr8YTTQtoEaiWbSzvuR3q5zqS9N77?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2c15cb3-91d6-4c3e-6fa9-08df0753fcdd X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:41.6923 (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: I5PGfD6heLC9C7JT2UoqmX1p57pdurO1UCXSx4Z6Tr0lP7rG8uuFwI1yV3HWCwRYoZ/bSkjdGUr4oC+g0EulL+kvUjvGDSubcHI2L5xjbkCr2zplSwOQjlqjPJ9XWV5H X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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: Alex Soo Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 11 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-per1.c | 162 ++++++++++++++++++ 3 files changed, 174 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 ff25bfcd3ff4..9140263eb396 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -67,6 +67,17 @@ 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 + 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..ffaf3aaf94ed --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per1.c @@ -0,0 +1,162 @@ +// 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 "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 const struct config_reg_layout_desc jhb100_per1_pinctr_rldesc[] =3D= { + { + .pin_start =3D 0, + .pin_cnt =3D 32, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 2, .width =3D 1 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 5, .width =3D 1 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 6, .width =3D = 1 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { + .pin_start =3D 32, + .pin_cnt =3D 4, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 0, .width =3D 1 }, + .fields[PAD_CFG_MODE_SELECT] =3D { .shift =3D 1, .width =3D 2 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_OPEN_DRAIN_PULL_UP_SEL] =3D { .shift =3D 5, .width =3D = 2 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 7, .width =3D = 1 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const struct pinvref_desc pinvref_desc_per1[] =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) + }, + { + /* 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) + }, + { + /* 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) + }, + { + /* 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) + }, +}; + +static const struct starfive_pinctrl_regs jhb100_per1_pinctrl_regs =3D { + .vref =3D { .reg =3D 0x00, .pv_desc =3D pinvref_desc_per1, + .num_pv =3D ARRAY_SIZE(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 Sat Sep 26 18:54:42 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2097.outbound.protection.partner.outlook.cn [139.219.146.97]) (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 1C0FE340DA6; Mon, 31 Aug 2026 11:36:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.97 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176163; cv=fail; b=gtU9XNme2EFm/PXyWGKja43aPQWBIRZ+PfJSC1XoIjnuh9b0fb0FOt3xPeuWsP2i9LUCeahFuK29Fq29CkVlRbhZwYodUPckcWA0RqadsjPPnvBKPlIWtYikigUlW3X8NM9JxD6m2xfSGvWKmRl79aXRupB97xrUjloAj2TQxC8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176163; c=relaxed/simple; bh=f27RUBPNCVLF7ed1+1ymBgeLS4OHCIewOGYMNtICv+s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Tc4iVZTXB7BWyOZQ6RwIXIW1U9Cktl2BvlFlc13dpeSvwsB7YR/BuDhxQluFDBWenLPOaCxaNLK/lj53BKgoFFrgdHcvkFUYoxgdCPebPUXxAVboYPd9zS6HQ9TDXAVBLavWIHV40MWiseCvVA32GNLWEROTOqRKThTLh4I/jFA= 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.97 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=PWdf3lgipMPBns2zYefmotT22sgLms1v4FCsAJ1Q1fzorr8oWrJfcsG8KIKZMHhoY29v9b/t+NiJk5TFX5A4xh32cO03FXc3fHEnxVMvMRCR3YhOh7/Nsf6Vu7wnPbme4sIGgdCvry3iABqFY8OyMQNzpo8j8UYvDR2MMRA5qw+TJK3zgp8yVYK01G/JsQdTwwNieZa7VZeMFgYndIdrey9MT4jm+i/L+gcO5UWPFdSslb4monEGQd2oObDUPse2O6PoVMq18Wpz4u11l3J8PCYqeXgSNWkHHtKsPZrdpisjiehrgivWM+hD4u+7gtaCMDVmU9XvQc16fWyCKkepQw== 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=aJZQ+TX1aDp7B5dxZGztDjmHXumC8Ewe8FvYaCsjec8=; b=jO/tZDl1jyFMTaHVy8EW8M9RGFOYMYl5IVHccbUK3qkqULQY43NwbjRQWgpW9hbqgUNo+4PizTDAL27eskC1/W+jY4yDqEX1GNhGq675iLjf2riEcmGw+uRb9N+oe/ba6YFtORgYprUEXm9YLXn+cf+JIGE/B4hKowZ+VFuZjoCJ/WfIFSsg+Rp+y7a3k+MLdU8DlgqR46ZFH/mBGoOQ5yd9Ybqi/lvVQphKHwOclcGZFAIoXDKQx4i7Var95ubjO3UCxJpbOjtOUQIVj2uXeuXP/PLpqQepDn2KXy1u7fqgrSMnrUKt8cimOrS0k1sdsyVh6YwGnMrsF4SrhaPI4w== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 15/21] dt-bindings: pinctrl: Add starfive,jhb100-per2-pinctrl Date: Mon, 31 Aug 2026 04:35:08 -0700 Message-Id: <20260831113514.66382-16-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: c6c30221-6ff1-4249-0acd-08df0753fd8a X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: OGRHE9QiSDa8ianpUTvvBkeXvHQu6qg91pMX0bfxE+frs3YAlcp3OGsiXoL5mDW/ux2uG+Nn11++3SxdhESf+eZG7Fvzu+nknqejywRAnJiC+7wmAXn4DbHMsQK9LwAUwb8Q448Ky6HJHFlfk0cjvUPRxC7YTq4LNW/rlqrtaTTEDQg9SYllsCLhcq7v8hX4DeG+3zaHpZHzR0qeQcGRCurtAh5l54xuGYbxOsEEvIWamiG5p9cH/Ao01G4JCEYTxa6CsE78zObrd28MH7u94Bvz8jRzYubbKcsB1pof1EOLdyC7tZTQGfSquGB5+8HUujByPDbN3YTi17vL4iMZ+jp1NfLNVSRbAQ3W/43qUEfE/K+T2kWl9EdobK0TxnZ63DlI14/AWKk1KOadyzgvjKBioRMlozW9spK8mFKBN0NhzxPW82FcDXhVGOolTcV3fUA0ucRGOtqdhOu0sCZMg8AO5fTb9pXCVrPkepbRzgXnblVKjn06db15YyEl0wmCQ4tHHxMRXhyygTznyKiwYEVOpuZNxPC10jLB+dff7JOreuHgIYFId7Pp0W3zcSdi2ncwX6ym9S32ehlZwU1x6Q== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IkKhxV2i16fH0mr4R8kX61Wn8V0KLok8RUR6Lq+tw1T0vCO8v9S1pRdznqvg?= =?us-ascii?Q?Rwkox1yRWh2zf+CAZ0989Pise0SAISnIts7PeC3llFIxmuzHPzHiYnkZk8B3?= =?us-ascii?Q?jF/ln1xRUkKHyF6LkdzgmS3vpObWF+SYntoyCvOyqAyLwvzLKYnaeFLxdM93?= =?us-ascii?Q?nnPbtEXDVBQL9e6oYY7/aWiVI/tBckDF9zBYco6WJcT35ZjkZveENN5bR1yo?= =?us-ascii?Q?f/GLiCqoWPhhKcs7bveAufByjym/H8/wt7gt9iMrhXQ4HPB8kivfxmViUqZl?= =?us-ascii?Q?nsugX796P01tDAwYEXL21LgXHypQlJiTAHFlWRkN6wxvoJh5S79kMp/sJLD6?= =?us-ascii?Q?U5n2IeAt4Qedd/QzvjS/DxvWe8NMsWAzI16MhX1IlvOzA4ZzVgVNQQl5ny8Q?= =?us-ascii?Q?DIka5pPBO4Lc8hG8dG4QJRfy1KHAXlYYBvP/UMBwYLzAGM9ARnLbjSDm31Pg?= =?us-ascii?Q?bMyhofrJ6TRV3s1V0uVPzlrPvpdwqdJ9l34+eTWhIUpK3aCuYTf93JGbtEUP?= =?us-ascii?Q?RMk7GYbKOlfUSP7ot+LXq/hgCri8i9GgJedDfJQq/tjc3n8GzXLV6lm7jJ+B?= =?us-ascii?Q?47IUgT6ChHwLze7K0Ocmd/RbUhpCrvpG2bGLCnl3nWUQYNrcwWpHesaGOhG7?= =?us-ascii?Q?xPkgeJjtMaG6DA8I76z1Z7C/WkOtBIdlMIYbVPnHdSH0ySqyeD6aJ7Xt/Djk?= =?us-ascii?Q?Sh9K/pXub6btf+nBf3j1Y2/hmCtThekxYsyHHfmHfuozQQlg7OAo1mX9axQV?= =?us-ascii?Q?Efn5sBtR3Eh3KrtF7IcJkQ6XBg8k364f6aR6HtdUjkUhBmQMYu0SsNU8Wt3U?= =?us-ascii?Q?1c5QAw1iYsb0GK3hsor4B0bIUR8kIADUlW2s/surPyGDbuMiMa6yqrfo+z7B?= =?us-ascii?Q?cepMjYA8igXZ5cRF2HnplHWZGtejqAsKME2SPM9VtNSgWUQWvUMRLHdHk/Nt?= =?us-ascii?Q?8eh4fcJvcDFQj5QB2axvmQzzWsv5APLpQhm5HGOyMj064it4P+TQ5rDPnbVR?= =?us-ascii?Q?CKjmvDZF/g2J/DdChbCQkLlFEh/UeZy58nhtW0AXejN2+NOydMh8hgEJHhCE?= =?us-ascii?Q?eag8+y3P9blJXchnMhb7NtI2yII4NY+4lMUoGGnTTxWIqV09zmJ7C4+ik1cE?= =?us-ascii?Q?4UTl+WZvnd1ewwXBpBGsDVOLaV8E7xBxzF1AuB/M3x6N4rNjK+JM3AR4SVtg?= =?us-ascii?Q?Wwflo7cPigHAweP6XHkLkkqXBf08aVFiUbAHIA+GdjCDIWR8GUq7gCSh0yO5?= =?us-ascii?Q?7sc7Kwkv5Lj5GZd5oyrdZ+wR2ls1tWxzprbQuf3sYERVtifX2c2AUI5a6fET?= =?us-ascii?Q?Bj7FrVvFX+ggJKmNZGGvgwAqVzFYkMc5nB2OT2FxZ+u/LX+Tdv+3BCN1FF+v?= =?us-ascii?Q?GY1pxtaPiDGyAlNQy9a6jO7CqJC3BR71sw2yaho9qeqhoCvQ0drbWUA9IYCz?= =?us-ascii?Q?ipUWwReoFy2VS5fsvLrYwM6zfHG/cFF0BqZOyKXJUhIWyUfqCC3QavbFnZJO?= =?us-ascii?Q?NMfYmNA1HFVFp6YEJo6v0dMJiAnfPO/9TO1vuItbZ24tfv4UmLlPFN1XnODL?= =?us-ascii?Q?54NPF69nExdE7Odd9yepMP7SJBvoSl8hlhCRFfjbvMXAPYZBN9LMebqGl4GF?= =?us-ascii?Q?h8mQCGLnwlJ4JARpUq2PeAkehu8I6RnZG0jOez5KdWw7GzzxrHm4QWo/c5Aj?= =?us-ascii?Q?5dUZJ51pFPVYXuPmvibCV1mRbmzRMqzzveeY63fGJnrRZum46PvK2TctrM+A?= =?us-ascii?Q?sq89QxomyyaDYH/9mDdH3rg3HxFkQXPFVjv+ZIWaiXoM6zT/qkCR?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: c6c30221-6ff1-4249-0acd-08df0753fd8a X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:42.8198 (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: KZSVhY9iPYNYuJkwubqxqBBftfw0WxJDcTTDIHQVX9UZmq71e4Kb3EyqotKwyZmyYx4vxOzXkHqqzhbtIineiatKSyr+/qHlByiwXPQmHElgypiSvfbqCx55Z/BAZMUc X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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 | 168 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 33 ++++ 2 files changed, 201 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..18ee37a2bb1f --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per2-pinctr= l.yaml @@ -0,0 +1,168 @@ +# 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, input + debounce nanoseconds, power source. + +maintainers: + - Changhuang Liang + +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: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + + 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, + power-source and drive-strength. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + additionalProperties: 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: + type: boolean + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-ns: + minimum: 0 + maximum: 10485680 + description: + Debounce time in nanoseconds. The hardware counts in 80 ns + stages with a 17-bit counter, so the maximum is 10485680 ns. + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 1800, 2500, 3300 ] + description: I/O voltage in millivolt. + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow + 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_per2 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 9f622468c294..2d5150e3adb7 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -177,4 +177,37 @@ #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 + #endif --=20 2.25.1 From nobody Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2119.outbound.protection.partner.outlook.cn [139.219.17.119]) (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 6C4C33F58C5; Mon, 31 Aug 2026 11:36:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.119 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176163; cv=fail; b=Zhn3eHR4QHC6811+1azsanYc8AuU5ZWetsyCPNLHHlt1Ds15Z8I8EdT9vYHWJ08JiB+/2OIIwzNIhlLLR1Me39WDgRF5ULf5dftfJsy+6O6D0L4qRY3CULcPzzDAy6DtGENb7NpcVydXphUqwrPF6VLYOCN8oikbj9UT0anEAYY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176163; c=relaxed/simple; bh=o4WT4muVogSjKpeS+bh39pNn7eCjWgz53Hgj8hVlIos=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=WUKi+UZtmjeBX4CXM6tx9UodIe8KHS+Kxd2mdTjMFuIc/A8Pij+fH4UDnkkd1A6h21wpsAup20TTbJ8utt7yM8inNWmLhlsCR1iTrZ6E26NojWBv1KbCf+GsyHIOj2nuSd3vLK9QYZNd+uIg2yVZqrpgNE82KmeM2sVgRTvb8uI= 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.119 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=PAIMBr3UAPH2VkFx9xzpHqZqhFfS8JMGOXscDONUd+wSR6F2af+oxURJxlNdHDhC05R9PvNSqKJ2S+OhvEmdkXNqgl8YJN/GORTVt84hnSCfGbaWUJhIqe0SGiYotSq+1NabsTNCUFIDJN6Nok8OXNugPbYlZvdeHQ8KgvSd75AktzCdLiIpsUP295v9s1cl/UGDl6jrQQuKf3766DUWbwKhqiaN8o1fpyEUAynrJDvD5mbE7u7l0ff4iaBEOORPligwaw8uvLSbD4WvjB8+Dkmj+s7C8WfX5gk7ztwcBG0CJwzdSAegN96JRawU7vuozTZ31bBFJSuxj0fryjwJUA== 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=oObIx7t/yjPm1GlxI5Ra2RzhU/Wur/orRofk7RMUyYw=; b=ZKrthkn8BwG6xFT2nnrywJ4ZhV/jG1JNv1Bam1md50E/PqiWLNeRoHHoxLUvcSHVczOfsWWPfxCD6pSLVTtOHqOk/mw0c5Cv60JLVlQn8OxmHn2SoYk26hv227SSosDd1hzV5b2MoodHAKdt+LEbwzP/dxjguCgzOahGlAA9T9WmYrzxOpWxxupaWcRtCY3ygfM82t3YwmLbmcbctY875ohqVBqEs6uWKEN56ineiXDfgWXU2+TfibDCm0Go7vHhv+A00ipYIFPxmollT19PWGaTRjE/CBps1RGS7VE+DVNXfZC5yYSEXjU5xwYzNING/mlb4GfkPXWwQdyS9xSknQ== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 16/21] pinctrl: starfive: Add StarFive JHB100 per2 controller driver Date: Mon, 31 Aug 2026 04:35:09 -0700 Message-Id: <20260831113514.66382-17-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ca553a7-6794-42a4-1754-08df0753fe36 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|5023799004|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: /NQJ7gd4Jz8X3ORsCvHv29f4mHGsmgBTvcW/6GOiB8ixDJ1xFpOWrWguQprdJw5YigYEm9YB5QR7KsZEJ/voE7Ng9K/54uOmnGl669lCfkl1w9VAOk5J67dUUv3mj748opESO7WpKMzJET8VkO5cRLLcaiFFRdGYgtH7B9YQGa9T5lNFJcoVZVVRF2+NkPHSmBE9TtfZ1NDulQQfkbi/ri1cFVZJgE/2LNnEjO+6Ne88KM9PoiYYkX7AT9ICkxf6j95/5HZiBCRkWPTxYymGOK1kfDJQnYYQHe+HGpZSlanaxQ4W94cr7Wj4Df48jRGTQ/mjO78t2tF4F+6umdNcHxJmy47du9fkSCGNUSdghkiVoGxsljXaZ9aVSmdVsJQq60pnCZbEshHuPe8k4lUpvHkYnCJPoRVw6VKHN5zestcf5duDUFyWBDyiz8KIFt5jsqjDjXsaS3EkEErRUYJjV9qCYsxvuByRKRDW5g+9JMKLsO356CgB7zODb1k4SXExbNNENfJ7w3+QgdloHnfMFet7HSyfm6PjzKUQCSR4BE0nODsVTP9PWGjrrGjkTAlLmw4BTSuxT5Rwt2+wUwCsfg== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(5023799004)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CaZYV/fIF5EJRpeoCWPsLZBzcIuTb7bDxYwEil8W6vjxl4T+7ldezN/Qfkqk?= =?us-ascii?Q?zJOO7PmoFjSshcoCeiwg1jUKAlFgVOC8ot6QhXedPcKvVVkL3/DAxGuSM6UT?= =?us-ascii?Q?iG2CrxBUyINA5vXf7cRMWqM7sMuoLIdEgb2c9K2BR9pyeZcxjQaeeWVK5VqT?= =?us-ascii?Q?azTE6QnebRsYie3/cJK6P8c5dSb8RzBbok+hDXfreDJDTr9NmAM7F9iDwtan?= =?us-ascii?Q?I7XJRbbQ2z+BvuAUWukDLMcQhFblakEDvz/999U7479sLPqCGOZgbRdUnGDr?= =?us-ascii?Q?q3+Q8wDKuE/kpFdbwmUUiD0UqmEj4AeG0xia0inv5bmQzWBwn9XfE//9OdRU?= =?us-ascii?Q?1jt0Fx82rez7BgKT6IBGCGzxqKPBiAygaxUjH8naaMcWdxQBc4WeNInFBb0u?= =?us-ascii?Q?mbIZpvRIpGMyNH9jCK3fTao2O3k6NrW7D0xwUNbIK0dgLumW11sfws92igxm?= =?us-ascii?Q?u+FGE5wsxBkcepX01QTCHF1LBptC14qKWoLP9+6aYL3AFmHsi5gvbEXDDD01?= =?us-ascii?Q?cZwUgS4wMeSfSzXAPoLRuE1n/1xXp1s9H+4SoBqYECvsrMqf4IiBtQRe/uaO?= =?us-ascii?Q?tzm8KxIitNcawzShNUitwahxWXbp3RB5NC8RnlZMahmLqeZb83aSbEvNhrgh?= =?us-ascii?Q?8LYgSWTpgRiy02r+MYCFo3Yx90WbtWQw/4qTXXSl0b1AfbjvWzrGuQAcqjzP?= =?us-ascii?Q?6FMiEZBp9LvegwVBiu9AJwinKU8zD2OlK7Y4vwKOmc+rSu3I2cbQ1GDE14WK?= =?us-ascii?Q?/1RCFeEJeTarjeTVmiaHa0PToqQ95csNQMT6of3O+M+JYEddsSUqTsd20zB5?= =?us-ascii?Q?Pn8KLvr+XLlga3/YBbsstUVtlTaCDAN9wXk/aJcP+RW8tPyMJFUgZ/DCxt0d?= =?us-ascii?Q?MLQrhBz+m/uyuvfWMiNArxT90F7Fl7xXgxVE6Q0lL4EIy01ouzaNNgxWryNg?= =?us-ascii?Q?Si77KMzLjHyyjj14yFDLYCuX+flQW2RyRCIOoz7Anl1wP9IQBjnomcQ4v5bU?= =?us-ascii?Q?dqKCSWj0D6u/Z/Ns5VOHfY6p1ELsY5MPxXJWuX4/9kKC7xISlQ57PQZF6nqh?= =?us-ascii?Q?NIoJZNV++yT+rFtR9irHGnMpRDeDtTa4g36KGsKQ7hZ5HqVESEvSq3Be0UAC?= =?us-ascii?Q?HDV16jmMa7VUDfk+ETz9oCLjYgUuRQGKP0VPLflhtrMJdiN5DPiQcDuPsGsB?= =?us-ascii?Q?6WHYXw9jucA/avv/fvI92HLFaaclT19vfHsoP/EZ60LZT6NclWSc8OT4PQNB?= =?us-ascii?Q?CtKf489pfs1y3vC1qmcwFM93qntXoOVNtreUuasdG2RiUx91uClM64nPNoov?= =?us-ascii?Q?ZT7fzmoOuSL0VSD4+9xX6gftIjrGdxooQwMUbG4huPo8mEs+vfXiUEjVbjp1?= =?us-ascii?Q?8G8Bz8pikSkr6xYmqUZuN6PBQ7z3YRlIyupKhnMgMYjOHqkB8YW6Linyhb+R?= =?us-ascii?Q?oEKmbRv3Oz9YUUKBxyBKnqEt7sxuOMwvOAQFZNYp5y/QSBBtkz5iDC9YziQd?= =?us-ascii?Q?gsNrtNwG15hw1GxLobadSo41GD/pCOmxhDpJOd8NdFKtEXPVnaK2j3sTlob3?= =?us-ascii?Q?phXY/myaMWeInjgdGY3zoMW/Hzf6XaP1b90cSCl1xiEWDMWgTUi526z8RGYW?= =?us-ascii?Q?mPUPUtAL+l6f5/WRXF5RCY7UYCBmPf546m8bHIZclN/Rc/YZMcsZqtBik+y7?= =?us-ascii?Q?bfvcgZZkRHvgbrwdC7ByKROANfBBt8YiABR9gNA5lfps57HJ7g7nyg4sY2Pp?= =?us-ascii?Q?IcAXmeFpOhNhix4bg1amXLvr22DMqVfJuDBkbMzB2yNw8OOP3gTt?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ca553a7-6794-42a4-1754-08df0753fe36 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:43.9021 (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: kqxYexG8cEZXNu6avwDh9ntqRq/aPKTDbK8gPnsPl+YdTDAeNLUwJPP1jawo8SLWgpU5ND7E7bTg3E5nD+A/PE9+AHLOQdUHG1GUJG2hzqzhAvG6KhgUUO9XDZa772i7 X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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: Alex Soo Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 11 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-per2.c | 123 ++++++++++++++++++ 3 files changed, 135 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 9140263eb396..1567b0a54ee4 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -78,6 +78,17 @@ 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 + 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..a2cf4995552e --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2.c @@ -0,0 +1,123 @@ +// 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 "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 const struct config_reg_layout_desc jhb100_per2_pinctrl_rl_desc[] = =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 19, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 2, .width =3D 1 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 5, .width =3D 1 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 6, .width =3D = 1 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { + .pin_start =3D 19, + .pin_cnt =3D 12, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 0, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 1, .width =3D 1 }, + .fields[PAD_CFG_VSEL] =3D { .shift =3D 2, .width =3D 2 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const struct pinvref_desc pinvref_desc_per2[] =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) + }, +}; + +static const struct starfive_pinctrl_regs jhb100_per2_pinctrl_regs =3D { + .vref =3D { .reg =3D 0x00, .pv_desc =3D pinvref_desc_per2, + .num_pv =3D ARRAY_SIZE(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 Sat Sep 26 18:54:42 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2097.outbound.protection.partner.outlook.cn [139.219.146.97]) (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 7EE313FB067; Mon, 31 Aug 2026 11:36:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.97 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176167; cv=fail; b=RDfsFjniP37UkeCSsMVj/p9A6mgo3mRVIkVcSVmjmtC0oSxlnkD+7iQSehUtzyCi4GUN+2o0BwW4wlEUx2cuXvOYVH0Q/tZBzjyCNo/bprzLemBOZoTJLDphsxEby6D39R1BAMSGraCPoqkqXKXn5m+fpRC0paUekaCNAERJ4gI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176167; c=relaxed/simple; bh=kXZ2f5pczuJnNDpZt9Tq7b9IH6ZkaAeoxX1El6cTzyc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=dITCqUo13dsbMRgwg0CpUGSAdlXiJOEQUN5bZZJU2et7/KyWT2L4IjLlWYhHIY4FZSK0s0GCAPRkieMlaqB3WqRKBFgWDYlLm3qBlVewk+LY1/RQd3eeNpbOJPdvnWYEATuLCqllbu+Zzx/obfABhlhWdj7G0IEHnSBwULgEjGo= 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.97 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=XvIpTPJfrgXlPfgxGUzwbvbou1QXGrudmyMHSNyUL/AN950YoYz1336twLxGPz8sZy1M0NbtXjMYmc9C8SngfMoF4dbX/7fGNS9MkHINPhKGRB+MF78qd62prpQQTKKGeeW1povCHtZrnK6mmfOCPeaYweYadeTwvI2M8d71fbjGiWX1EnqfNdcuL9eoCNRZc1IAQKeTQ76aDUJdfpz2wnZ9K8pJr2NqpRXz+Vvz/nuaI/xFXvsoK74h9F+X9NMQdNHPE7DnsiBlUMkOdz0ALzkm1Cj9gDLbhzSOJs+A2VrKEzCvKedUiT6z00kMq+U5jORetvU2Tq45Tuxp6bfeZw== 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=1uEvwou/Z3qOQAAKZk3aRFFtKOcQSeavuMiPo1MGcCk=; b=TtbkIj0rXjhlVDIcplY5zypG/ZV7DCDr0UJtmqIHlQqTk0UO8R/agE66NtwIt04Kog/tGxKvSayjHBR7jhGBB2bAIyUsCAxRJ+7GPRzM0Nuk8d8NumIz9YVKM+SqxJGzNXuVlR/SYT5xA5bnRqXHsouOOdV6P9IoKGcc36A3t0mzBVRDQxZOazGiq5K80zHuDP00PyG6zFb2sP2bv3L//xjTbsUXZU7iioeuJsUR02wOuO6ZjELDmfg4/cuX2wk1PhqbmR+y3cTW+2yeP5CSxAjmlcxjevNrq0uWPI4ilPMzvRbPyq0gME5HW/8BKGzaB1naTXGr1B6ZiB3jZ9L5lg== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 17/21] dt-bindings: pinctrl: Add starfive,jhb100-per2pok-pinctrl Date: Mon, 31 Aug 2026 04:35:10 -0700 Message-Id: <20260831113514.66382-18-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: 3da0c30a-7fca-4ff8-056d-08df0753feda X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: 2/bQTjf4lUhWWkNfBLMauWjSy8bpKPr+KYQcx5wc3yhtJQysvfaH4BGjQeB4utOIg2sFQ8omI2E0A2a4mR3GoKpEuq75fNHzH5TMN/E+NY+WzLQ6LkXATg75sCuxz95EGLo2cvZQrIU8FKxH358gw7NEM6bajjfoIuajxuPb7hZPMwookGA25yC7G+uMvwFp/pntLk6jdd6kjQw4389B0vWNWo4MJFdLk0G7QUR5qAQrvKDZ3UNvJGt182e+Jh/brR/Rf9/b6LDOxJzJpWrNFHtk0c7BS0VqOYt3wWJFGeKdX+FQHvhfTfMj803eev1tgDdcr2Gxng3F3JNUnYouuJzKw3iFNLx18NoauWiIaEQZ6Cp0yTj0ArSAtVPyU4YPS+y3DdTRs8zhyKtws0Py+621f/x2tDlkuAwCACOWNZFFK69B6xAkmRKIlXI76SkdmOxzKKXbuoVFL+Jh/AMxB+fb2SwsgJulW74lG7XoaUhgnAjU+pNUfwGkFGJDDxGTYVZ66gqIFYnHUaxw9EcgkHRcGwkU8bBRE6R/8nMYeGj3n1HCnUm48B7+iRkwVSt+S6owmyJd+Ww+wCn/tvFU1Q== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EK4iKvUbihPzP09YSSA18jRqdG2eCLjKYwPUblVF32f15ZgyLJOQcS4asCgI?= =?us-ascii?Q?OIjGEMAuNc9LSALdfl55ayuJuGol/IjeZlOWOP82z4WxpvGnssgehToUvkSY?= =?us-ascii?Q?FrS+l4f2fvGgWlJQSekODjpkgpQBNnbE7/gXnDfLKel1gL2udzr24oPSuBVE?= =?us-ascii?Q?DP/cfjnEN0/Wtm5BuugnBwy4oXw70DXa13KlC0QNL+OwfVQHxHOAtDiqQM7z?= =?us-ascii?Q?/vLt5n81eoQ0nTRKloHudy4cdelx3dPb6fiWXubTZIQ7hvhi9wmbD5tsaWTt?= =?us-ascii?Q?YFkBjJIQ3Yetri9L80xWv8R0bXfMGWJghfPWm67K7ersRVUI0rdbKFWABLEw?= =?us-ascii?Q?dFdyniaE/YkR7skmuHVl2URzeCzIlXK+4MIXQquY3eXghH86ts5iZMpuFH0N?= =?us-ascii?Q?4ciMLmVHv9k6nZy10Sz89cYlh2rTob03j9B5vx9AVG8jJAph1IbOdrsN+GeG?= =?us-ascii?Q?84iz63weuLoyUrLzCSn93oYXGAhl8HMDYBrqF8a1Zogwgpr/BY2gEwHrdQz3?= =?us-ascii?Q?LeqhEU9x8ZVfgOO3R8U9uR1dvKWeypvdxYFgCmyJBCFu3S9fHsjS9gvmQSJT?= =?us-ascii?Q?e2Z1wisxb6rpYC3iSr0ZCqTx/YwTTzomKQ9FHiYeNCHDiFqeyQEFF8XapCoW?= =?us-ascii?Q?ApuYYFcAujtiS2dz7mQAmAssl1/C3jVwyjRH4Mijw/O0bhTMC7Jx69aB7x/n?= =?us-ascii?Q?yviguMd93ToIj6B1tPz4kKWLUr4GjhfwZP8C06OEKPZXwv0kJdeMALujkoPg?= =?us-ascii?Q?VlhNQE12KnP7CaOR89BcZpNykwYBPoHCVqGJoMOlxlw1AG3YgZYSLAqah+VK?= =?us-ascii?Q?bCo2wrjh06FJufjcMbyHsi+tAS1z1oUtpzxlwStRKhbygLQCEs1eQI+oXN7F?= =?us-ascii?Q?AzMA9oiQHcbSfmS8xqd3Tolcf6fufj0hX0JFnXLLv3J4ZQEkGgIHnmj98bG/?= =?us-ascii?Q?T2jSJd/RRl4Kx7cppZjDJxjPqDpXGC+nBdB1sjMuDIRZg+F6veDLjkdSWZth?= =?us-ascii?Q?AWUYQn1/R+Bh1rLxukr65O+xh1GvjmnP88sphRuB2rTX1/EkkcgPsRxr8kaz?= =?us-ascii?Q?o1CTSM0FVIzx4YnY6Iq7d8/DORCbl2tJYjq2tOK485a7YaY61Oqk1439T9Qt?= =?us-ascii?Q?9EC7YbGxALCYYBuz1K4uYAEkA8KEcrq72yXL1kwOmjsIVrDZysCvI6MKPwpP?= =?us-ascii?Q?Q+uWseL0vmAkRbj4LtTHp5ZRuQgcY1TeENsWhsSSBn1nUTZmedqdkSdHKQBb?= =?us-ascii?Q?iTEtFUMLcobZoPyAmwx7wHuoSiC85/HZ7TJqU2hIZOJtO6VDenrhiQbeUEWj?= =?us-ascii?Q?HA4+zpFVUIMxscz6IL5OKRuFq8+mnI7qibjnAO7oQQ17JKoxT3pErls/fwL0?= =?us-ascii?Q?+hpHWgsXGdxNEDQp9ViSNOec5WhdFGh7RmlmmIANjJBSBkv7LZhXJyTHDb+2?= =?us-ascii?Q?tqIYz5AtmJYBeYAzR4VhTLnfmHmAIe8HHjcKB6ZiV5X/E3w/2zv0YP3UMCIx?= =?us-ascii?Q?+dtZ4uUEuYVaKLWanDicqPbJEVNOJIHgAm3WnuOyRpM+B34R7n8oUm9d/L+r?= =?us-ascii?Q?GWIxqTmL8pk64zCKfdw2BkMPAORre7L+dbViZiYOecgew7b1Z/Mv3kYv7389?= =?us-ascii?Q?69xc3LTeoU2jAwChOLsmxNGEXk6k0fNgMv0gqA/a7H3ORHxDqtS5l27hQhUK?= =?us-ascii?Q?dQny6fH0xpQf6sPNR4eaPZEsmDv+cjyD6ZsGvQRHWzaYK2/xurXAmD3jRCCe?= =?us-ascii?Q?tXT/jOLdAWfGQCmzsE17kPnXW6hjol7wt2Yl88XqOSBVrjkW70fv?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3da0c30a-7fca-4ff8-056d-08df0753feda X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:45.0753 (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: 2bc9bQ5H/R5fUYcyplYL/IJqm+PT7SYzRi5ED1Pa/hv43XP1+FvsdfdFpuw9plO9yQuPDM9cMLpBIdvZN3q0YmDyqtygPy+glGg/02bOZyhTs/yRxoGIB7bA8cmNn6ZG X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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 | 162 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 20 +++ 2 files changed, 182 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..c3e6b01ef9bb --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per2pok-pin= ctrl.yaml @@ -0,0 +1,162 @@ +# 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, input + debounce nanoseconds. + +maintainers: + - Changhuang Liang + +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: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + + 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 + and drive-strength. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + additionalProperties: 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: + type: boolean + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-ns: + minimum: 0 + maximum: 10485680 + description: + Debounce time in nanoseconds. The hardware counts in 80 ns + stages with a 17-bit counter, so the maximum is 10485680 ns. + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow + 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_per2pok 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 2d5150e3adb7..4b7f349cd9d7 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -210,4 +210,24 @@ #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 + #endif --=20 2.25.1 From nobody Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2119.outbound.protection.partner.outlook.cn [139.219.17.119]) (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 865DE3FB7DE; Mon, 31 Aug 2026 11:36:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.119 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176167; cv=fail; b=bQdWmu862PUxxGIvp15IRlms0DXdvaqzJ+k2hN+rVzH2bulNyfLeyDphhmhdfDjB6piR34B17pHUVnQ+sck+i3P9CtSrhv8nUT90tA7Hn9Glc5VIWvlwlcv/+AZk23DNXOs6+ylNImmuuWtiqP+WdXDcoUoOm+dPHY38k7nrYPo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176167; c=relaxed/simple; bh=eIFCjX95zx0J4oTIfuaMXGI2QjwI23QYBVFAxgR2WT8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=doIgFUZQQ4THJpCtTi257FV8V/GA1x0gEJhoeBpl7pkuhRALQ6PofLOm6q77I63yVvLc4Khf1syWRAdLeNdHDgQxWl1LLvILk6PnenMRTb+/JFpivRMuty3vsq8qZHl43ACP8opYJG0FEunfTMnrBrpb05KYEZ+lne+3qSCGRTE= 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.119 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=hSa84Yu3AWJAAYoji803L1obVqPelX9eFnK8k8BVuhuMiAt6IQGveWGrnBjxiZC/+CSiLG21j/rwBginnCWh9esmNo0udB33FH5rwKvGaZEQq+TAdcPxwKTUvbFl2tPa/3WDg1f5VJs15Aa/e43NOsHWoctXDPvw1/AjE0YwuxfIECIO7HE2eyeuW2kcEgPfypWbvHr5qwf3tLXeCAhiW21LZrTM39nGEypSDQrS3S7WWusYES3uAzm+IC2SYjZWtXozovmHNNgVn3XYoHtV+7GZgTY1L9B9I8LFmYAfqQq2OQzCGHyhG3BeBkKRoPYxHyetrqjJdgmQMP7CQpJfdw== 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=pRTncn0g+ZGPBwqNIcQII8SeieqvUp6JF+8zt7m1tTM=; b=PpnkRVcWtBdblrwCXVd8UimjH4gDnysvNtz03khKOTgyzPfThSy6DqRJF7+m0N2GyLcXYRfGCIQj8zKykgI2PW66gnLuKF10SsjH3AO3r/LbXdYftJahaJXODXwwCHhaW+u1TTLnjOqmYXElf2tJgeilPrENORHyXJE6YoHmSUMfZo+LvdazWa/GA+oHk7uueAHNji3HqVO4lyqKyroOGidP0kij4ujMm/ZF7X+LZ/rg7mDBaIlzzzzVOSmcWGXTSQWDO6YOfDnDaKtiMl4UmkdnInUNj9wUsW/o4ffhTOR1FonVsRJ3nZ9/DnzE9G++ZUFK79xtk/tmyaV5vZDIxA== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 18/21] pinctrl: starfive: Add StarFive JHB100 per2pok controller driver Date: Mon, 31 Aug 2026 04:35:11 -0700 Message-Id: <20260831113514.66382-19-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: 5597eded-7999-479c-fed6-08df0753ff9c X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|5023799004|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: EnI7jLNgYAXH1bTPNDAE61UNKbuCz2h07I5pkHFOddsPMEM8CSbLx7Hqp7IfR600e2wwcWKfk3lNN2pE8ZPaYwjfXDrZx4+n9AGude4PthE+GLGU/0QZAw484FaygAwgfBCWk1rtgWFEQTcX+mpTXnS6SZ0LQc9Ica8xfqdTyYpHcf6F3fX3JLWCslGLitSdAJjTxXAOzguelf//b+RYjNaPbe93Ii2O3hiWe2pRdc6aiS9DtKLD9HdoEbCqJ8h3+xcW6iHCqgaouVnbhCCC+mA9cnOwyx76WzFMmHZztaN3zOUoJf0ZZiderqvInVtbTs5q4518oQ7s3howJvjJaGBNfbGk+ANO0B5Dt6KZ4/S76DZvzQ7yknORqi6KZHNjEv5Ca7lK1gAbJJUF+JvGp6nX5fdHCzCV9wqvn7s/Sqi5KLhoWjdA6NWr+P5xmPgsOW7boxJl76W4grKPaFmC3kYxXVfaVHqx8vicGVsn/WWLdsrxT9m7WP6EfgUnBFvb/dRdZeXH17F2fcIU5bztlukZCuBI4EuEoAJG3W4BoHutA6hzM0psHwGFyDNSnqrmBA+5gMGLIv6oPTj94AD+Ow== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(5023799004)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?spl7S8ODdzvoa63lalyTJLI4XwIdfZKwWRBZfBmtYoNlCg/onB6bwU0Uh8cx?= =?us-ascii?Q?PckV/d3jvvZwepOmi9AppZ85bsAJ/ZkqdnNQ5yC97Qzf6+XTG857UuQJQoZY?= =?us-ascii?Q?1hnUoo0vi9lMtt7EGWoa043y5XSTy4XxG+/hrtyekj5GH3i29zStzH+1qpSU?= =?us-ascii?Q?bkKqnJTlVGaj4sfFNU1O5IxwwKyllJCg6q7tFTRds3y4LRnKD58ugPFVrfYu?= =?us-ascii?Q?vx223leyADpNmqGaTepL0h1PDWSzYR0MqGMHC3Z2o5wFy3vIFyaoXYTPluZJ?= =?us-ascii?Q?gy+us3asR6scNNwVN5oEKV4Bi1lI3U0zbmATlcsrywNzahWbIKI5o3M4WKqq?= =?us-ascii?Q?9j/yroAqRNkprqtC3lVqixTcrndAfVGmLnm9oAXBgw2yDCe2LHZ9DbytpCJq?= =?us-ascii?Q?cOLbPgMbGHJRQHYhgjO9iIXHm2KrZlE6hnBAkZ11QfRUOv6EYCg/RW4DoNBB?= =?us-ascii?Q?y4oN8IgMmyKwUYeaHUv+g1nciDdDypCR5qOiHfhWdzP/vmhqwcsT5dOYCKDD?= =?us-ascii?Q?w589bNPbcyQhl1f79RtDNTmruSZP7rzzMdlg/xtN8q5uET6x5E2ZwVxf9QZu?= =?us-ascii?Q?NRjcseIb1wQIvJt8a9I8W08RE7tQy8ITufDzWd3LZeGhzxWuWTKKpF2FiI+y?= =?us-ascii?Q?iaCY+kZUdh8LGGUotTFWQEwZC1XLsG/zva1lncVEyW6xqb+Pgh5C4LSo8WBv?= =?us-ascii?Q?pDYlf6c7MPfjnoO5CXdBVDAizMEGfu2K6nkP5sWJI7n73GkWunHYa4Zocd6d?= =?us-ascii?Q?O+PnoOepmEFKgdWOdVZsPVWd0d6RU0ZMOIoEjQkR7bBaZ1Nz/d0hM7w3lp7k?= =?us-ascii?Q?JowzlfVivWHBaGkb8R5hFJv9XP1cDEJprGe5/NWfCzAjOda/u33JlgSAV2nj?= =?us-ascii?Q?WRyDdSqdmhDDn2+VeVAZc6KyFAM6jkxaPHJ6REGbkmnA+MTz4lMcHUBFDuIQ?= =?us-ascii?Q?F8yAmd/i1K+8t52DD5ZTLUdDfiaHx8Z99+w94v3taUD3FKJW8Bo/LsOZTmKJ?= =?us-ascii?Q?Z7NJDl7ppdIwUAnIG1x3rpcnpjDNLfCgVB6krLbqZdPXRNmzqhjEHAzem0c5?= =?us-ascii?Q?rm80f8We9wpMuDKnXmpyH+98g2z72XpUVF5HvQtlBMBrq0FHWN5LeNtqGzZX?= =?us-ascii?Q?rdWbYOa3xEdyhjTZ4YZ20h8M2fQqBIewVNrcPw97HcY3Dx2ozsADHYpHcniZ?= =?us-ascii?Q?D+ErqczMVpJ2PczuIp3XwjIAJIGau1jVYSbBJCg4JCIwjyj7mL11RwhBynGy?= =?us-ascii?Q?K2WdZFvAxCjcVUEMZ2n3DqYOHNkoG/yCRXThOKTvg0MZNFJD9VLNvppHICFb?= =?us-ascii?Q?wUl6/MYNeqMjz5wJApRYK9H8KCMInQNMOz20871KBKV1KKjldyYHmdYoaakV?= =?us-ascii?Q?CEClzdD8cb+ZfMcYypMLZUicIYLYWUiIrcgkPc4XwpLeYhnLnopfaN/Dc6cr?= =?us-ascii?Q?OKguxzxtbftfso56SmjC2rGPgFfkz2EgFyFHe+CgH3lFriWwzb5R4UgKec8A?= =?us-ascii?Q?JlyBW9qTE6qWnA/Ak418Y7QKhbbWZqmiL+Bf13OPQ54OAlpwK87gRnpe8/Ye?= =?us-ascii?Q?EXwOeSUyDQhGSInlwUcOzFV+BRFrdcmizISCybUNsZUpUfMPwdiPZg67wowU?= =?us-ascii?Q?PONpNnJoMe8wdk4u5py9UvZSTzXBTlHpGlP1XGt7AOlYMOdjRMQFZkqnaP+j?= =?us-ascii?Q?gIahaMYT7Y8XulS46ayF/cAkme7hzlE3+m/GEqFxBb49BznFDiuGgyXR7If2?= =?us-ascii?Q?Tl13n5SwMi0tYz6AVIl1LB20xDzrDYLMGZHyTLe36M3TFysVjWXH?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5597eded-7999-479c-fed6-08df0753ff9c X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:46.4084 (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: Ifg+JJN1XN1ogi48fpv6HpEiA5fh5pGOgL8wEZ/O3PtQn8/Bnw4jhEau2YNukZmVF+A+0WFvIaWDktdpFEl0ygYd8F2OdY4b+PGXEGCRLK9yBE7MmXPZU/Az+V69pbjx X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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: Alex Soo Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 11 +++ drivers/pinctrl/starfive/Makefile | 1 + .../pinctrl-starfive-jhb100-per2pok.c | 95 +++++++++++++++++++ 3 files changed, 107 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 1567b0a54ee4..081e3ec4464d 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -89,6 +89,17 @@ 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 + 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..3d7c0f4c4f77 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2pok.c @@ -0,0 +1,95 @@ +// 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 "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 const struct config_reg_layout_desc jhb100_per2pok_pinctrl_rl_desc[= ] =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 18, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 2, .width =3D 1 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 5, .width =3D 1 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 6, .width =3D = 1 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const 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 Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2104.outbound.protection.partner.outlook.cn [139.219.17.104]) (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 BA6AC3FE67B; Mon, 31 Aug 2026 11:36:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176167; cv=fail; b=uCKOKCIAcscgaUgIgHPmTlmJrw7SSAo+uZjehuZzCzQPY/2mVwY7PM/IGhTVqUkd4cLLxQQOsPs5+ErRfQlyj6QMwFh06oHgV4HVP+BncB+mmAViZlGXRkIuizmAPAVMV/RZXIMoXwFqCvbQ1YLF40cf2Z+XIcPQNO8yBYIQ+Ts= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176167; c=relaxed/simple; bh=uztKPcIit8qZXxFMAKpRU21z2QtroXj+Yz7rvJRYK8A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=CW/GZRAEgBu5A1GWUkk/3r/nHDEKQfZ880REeueJQMtQbBwliOvgCkYt61O9s9p5QXpHX5IuZRtxHfF+JmJ3W3gg+SjyiSoqK3k2pdfIcUv1aJ2wZHWlemvjoPr/JlR4nHAlYgrBJbTLiwsUytRmCJVklBL7F7MJi8S+QdKzD88= 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.104 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=NEQ2/B2RrMOfR5iOkmj/B4qnUVOihOfYNs3xURLHJZiA5gToN79kNQOk3jwS/795sERb6uXPsfjCFbo8Z7OaUBGJ0/sKnd/oBnE64Uof8ymKQfM4kQyOJ0kVSt0ABdzATlLdqX5B8GSWvxzIu23N9tdV14PgiWz5ZxoqIKx+y713XLqI9W8vpSlfZok8koV52r9TKCaS5JBClG4LBsZzKHSgk5W/+sCZp/uxu1m8Qf5BTdCN15LwJgPynWQmLsUWxEqvQUUrmCiTtDQ+buvCqGku4vDfz6nnrnKvMDD/lFNlWBRZzb+lB0Qn7P8fC5E0iQniLDjjlCiqEDD3i5+Avw== 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=y/a1o2xHG9J7IEqlRftz7wdvk5JemND3dNGDiYwj1nc=; b=R5SOaK+xVTC8NkPxS/LtCuPYtfbhZE7u5s0dORZVjh/51gg0dnsx3m9lFXCx62ql5w1MfHcZaS0UyxQpwxUy4mpWdvXAo8mnXqSi+kP78seHmNYoPzgj7zcJlWvrlPRkcHCjyzJ1by0rhW/KHwlCAm5Kch4QOwd+tvFobS98V6xvObcvicNrCBiM/hbq7IQQ3z2Cz3X3UYTOVfo8CJo7IhBJYD18Xk5cLd53eupS31dsaKG8GZg000yN4wZGtT8G8+GdFH/txke87XevWFfFQuenOY6/vMIHwuvyrryH2xDkd/5zS7Ovp0eO7HKhHbMeditIYX1c2WBJeftAJZh/SA== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 19/21] dt-bindings: pinctrl: Add starfive,jhb100-per3-pinctrl Date: Mon, 31 Aug 2026 04:35:12 -0700 Message-Id: <20260831113514.66382-20-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: 68167cba-689f-4e64-77f7-08df0754005e X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: J+5VxewBSfl+IN6Y+ADW7ZaKr7wnP2d8z1AARu3UeNb9RxBzIf3GR0oxI517XwjBhozla4u6nP15KmY584gZlRU/5tfg5iPoon4rawg35184tgxqWyd4ngQ6eptaNCdoKh7MQ+N60dEUuk+CwZ6UWGFlWjPTI6FIycAEJu+8N9AwEfTEo14L+2rpOpgjfdTknjxOpOxTULIMBVEs3ZVeCVU+/JSsSpdsdjqRKDCn9nAqhntxOGD9B6IDApbezi5GzPq/tNDJmQHI+7FViojvAPFUQA3kaZO9mH2S1cOfwmZReVZW9vfFg+GqTq7JOXyW+CcdUusK+NjQqyuiq4tH0YXDP2ej8Pxmzbg9p6INJGSc03M81vdifNZRFQfK0I82WytLjZnIb4KI7QAYMOyajkPX4ezc7ncZrAxrVrA6yF1VozwqrcHP7aqxe3BNutetAbzAraP6JT1OiNaK3lju33w9N2maqSAq37HnWs4989gnnIqsdTN/EHAaa8wadNs/J0B427c5iHJjIBSGuxA3P+xsEWBcNXLlgRloiQvMa5IZ2mVYbGj9ew2OnSsfG7JvMAfS2sde+xDNQc9YwO3rIA== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OiOwIfRK8E2dHRSASpziTWCApnI0R668YhIkwlorG4ZED11xhfj/jr52kKoF?= =?us-ascii?Q?nKbBqxKv903ohuTHXY7P5TkYacgbH9uwfti56RxYoM79s2y6HQyg0TQTDnaH?= =?us-ascii?Q?/ymp3bIUQOioBYHMzLD9/ookmuYNZ82o9JZfGv9WngNBd81xAdDJ2fnQkudQ?= =?us-ascii?Q?6Xbrr8ZPN0FN5sR58kweRWgZSFtjVsmeqbANFPIuBVeMlCayAxQGNWr+kQP2?= =?us-ascii?Q?ueJn0h2x0+c68ZrMjvwPEc/AzmoMlEPZcGDufXp1LKCFOmErMsq4SPcIpXEa?= =?us-ascii?Q?Gn5oYXgyCsyZl+R5GNLh2NOhLgTTvEGUe3DnI1aZqr+8qEpmVRJnjBOu7PlT?= =?us-ascii?Q?mlRu/k6vM41KmtpCTNQdqNraLQjk3wYVa3+bj5klKSulA2nGmSO4gurJvwPn?= =?us-ascii?Q?eWphdzagQBaRGzQv6G3mdBRqu2pOpFB1sHxCukBauBbBRT619KE01HX3jPoR?= =?us-ascii?Q?aT4zCvMQMHhAiakhA/NSVy2QzZ+IKXyorlPgTH7o9hlBsxLT/2lcr8Fs10y7?= =?us-ascii?Q?k1BWf7kRmxw5XubXy7yhDupt6mnCJP6I0QdjIe5fxLBZlEezBRGzy6bD/D6g?= =?us-ascii?Q?Mfwcasf6vTv3Ey6loBmsqbp0U0YeoMydL9UdrIpz/JZZWJVk8eELl6Z0NugI?= =?us-ascii?Q?j65btzArLyxBekte19p3GPgkqjiuF//N+LO4+OiNuhz8n2Bu4Vx/wUt/2SIu?= =?us-ascii?Q?MeUrKITjsAyrN2RnRQqUoTyScvBjlPsUSFYYT2JmH4f6598CeMPCELlWEDDA?= =?us-ascii?Q?Sc40ORUK48pFHD8aE+USGtRjC8c1+Rk4KsWeYqFSxNqTvr8bs/luH4AdtmSV?= =?us-ascii?Q?oyLIwtq2konYH+7t5TSzpvSm/2RWXSFD6DqVsVurvUEmxf58i0iUcuk9PEpz?= =?us-ascii?Q?/UBgNfuLH7ZWInCTj+jyeoKenk6WKTonLxsH92JWZF5rJjj21tsvphlno2sp?= =?us-ascii?Q?20GtcK03+vaJHPxzGPJZtRnXEiTWBUPW9agJTe9svGSCVt7zZsVhK336BdKV?= =?us-ascii?Q?I3/kiZ/ngj1jPEg2xJFrOFELdQ6AhovxebYpR68Zj5Z/OGMSl6FOb3Hycg0L?= =?us-ascii?Q?1WD7nv4tFBCI4c4+7ZJ3y5teon/SLF87kMWERyjjsarxWJkodmWIB2+8BzNe?= =?us-ascii?Q?d4Cd0uEpgRcuqYO1tes8fpQKhlmbNP1ox2l4S5e2EG6OdNExiT5LaJITkiO2?= =?us-ascii?Q?q0/Y+vY608heI/0hNlXLCePcNzgZGVrUoM6ipng7Ff4E5355Rse/jwxCyARM?= =?us-ascii?Q?9bQhw8HEUq+8LQZis9+xRAuPq7GfQliAhwSKC3y1gpJZyDKeZr1rQfudakpT?= =?us-ascii?Q?0AGqeFwzNvax0G6SQaX6EY0NeEkDbS2SC2uaWoZ+NgQFnGowNLRv3YLXH2I8?= =?us-ascii?Q?IwFXU8mI13igwJuWGpOTQV2/tTadG5b2EWs6UIqIJTypbgevqlx65m9mTj95?= =?us-ascii?Q?DbqmS2I6qQVtw42NOfb7EkVw6jXh5/XPRKWks6t4vjbBQxGjilMZXhGU3Wb/?= =?us-ascii?Q?Bmof29G2mVSPnAg8kXXUWR8Tsw31Oozq+kt5wsfT/ZQFD+l20rKN5p0FNXJT?= =?us-ascii?Q?dynfzx6Hh6R6lmDF6vPuIEWgnYO8eSPS8yyLn0ESUn4/Vw9qW7jtw/29J3Ex?= =?us-ascii?Q?aD+zEoHbiOcIqrUcbkewT9SJ3e90RHR3ky38S2HRZ3MywJfiOEoEinKb48TH?= =?us-ascii?Q?FAgPRU4+tHpIxWCcydIbSAwocMA/LILNSre35C3j2koBH2RoAuFoYgPG0nrw?= =?us-ascii?Q?QOzdHe/M4qeWk4ZFZZU1NXSv7Gt03yQSi1PeM9JBDOildnrKnnlO?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68167cba-689f-4e64-77f7-08df0754005e X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:47.5905 (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: SJHR2gid3iVav6dyIgOZBn7q5Q09OW+JP5k+DliOmsGtzSdirsnmzzPbKC0LhV+dBU4FhHUkj2PLTu4PaxDY9u9lE5OvT8ef499QYofTzos8BEo4oQBIvaCZL/fNv8r/ X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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 | 166 ++++++++++++++++++ .../pinctrl/starfive,jhb100-pinctrl.h | 14 ++ 2 files changed, 180 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..92093315ef15 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per3-pinctr= l.yaml @@ -0,0 +1,166 @@ +# 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, input + debounce nanoseconds, power source. + +maintainers: + - Changhuang Liang + +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: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + + 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, + power-source and drive-strength. + allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml + - $ref: /schemas/pinctrl/pinmux-node.yaml + additionalProperties: 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: + type: boolean + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + drive-strength-microamp: + enum: [ 2000, 4000, 8000, 12000 ] + + input-debounce-ns: + minimum: 0 + maximum: 10485680 + description: + Debounce time in nanoseconds. The hardware counts in 80 ns + stages with a 17-bit counter, so the maximum is 10485680 ns. + + input-disable: true + + input-enable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + power-source: + enum: [ 1800, 2500, 3300 ] + description: I/O voltage in millivolt. + + slew-rate: + enum: [ 0, 1 ] + default: 0 + description: | + 0: slow + 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_per3 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 4b7f349cd9d7..a645ddc836ff 100644 --- a/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h +++ b/include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h @@ -230,4 +230,18 @@ #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 + #endif --=20 2.25.1 From nobody Sat Sep 26 18:54:42 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2097.outbound.protection.partner.outlook.cn [139.219.146.97]) (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 6519E3FF8AC; Mon, 31 Aug 2026 11:36:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.97 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176173; cv=fail; b=RpIdLusAM6sVsyt0QzxomOTEnQlT0OYY0Vdvba9yKXY/4sg3uowLuuppCtufpKz251F9d6c5m6JSf+DcCQ9QahY0qNzGCV+Sih6X8Z3iawlezYNGGLAzcRTJnKLQvyhur4pzaERWS2nYCHLAjaS6m+GxkQf4opJ9/7MqkNWkzFE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176173; c=relaxed/simple; bh=FcGpg7FBqWOuc5yTLhpBfKVMqTvtiE2Ux3Tdl7y7cD8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=aZYAW7sT9Hf8pjBTHWAsFVpnKe5nqGZfS1nCYnwOh9DzvcNgmbXOhL+eYAebVvwLfz44u28OcDaxiTAyhQLGAzSL7/4XaQ0sLRyQNGiT1FLl0ejcGlJAuBY44uHb7P+2lGFn7etdWc4xvMI8nLRYA/FQ/fsHa6RmivtSnnY5X08= 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.97 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=nAbWWyR9NQZUMApSbRT0bj45sm0yYzWRzGmBuJE6krvHjE0HjrdMIXS9PjYKVTpVhmDoaugYGKJyu5KcmDayw0PtApDJmv/Ey4zCWaxJ2nYRYz7Z27MBM7X/dLAUX/peqGdj1xDcvl6KBPOOmuHyLyfox/AZAUsaLSO3BiVs8N23SV8AhawjkyxAFCpqBcBRcq4Z63cdZ3NSg3MFVhPy0t/4mF1KD1uBxiGVUSri550IWFUQ/rtG7jAvin0hZfxrB7tR9iu60Euto2lxhGR+65nzDeM4Qo6N7bVsD/RBE1cNMTIqicbOeUX/OiBQZwjJ4tl1eNBbkYG4ZaCqfbGZiA== 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=Ofd5dDMH0G7purkHZgdvfz+193f1UwudkEEe6R3l/5Y=; b=it9IXiDrsv7UYCdShdVBktGL35zPIXaduI9M6KMtoDWRW+IvGldovOXTLynfwrh01yQzIOxs0L47LZnC0vsyilpyqq/E+BXZ9KNmfT9B/mPxmCI0PxyRP7y4uvFZCh4aDfAHOgPJOTPRbwBw8+oKz/bFm0D5X4GQhDyGFZRDG0cKtMJuWmbLEmH+0bFu0GrZxbRDy6FYkbOfQX/B95PKPa+cDP6Sy8D889l0X4IjepCaBSywhSbOIhmNGN20RMkfZwAxqDiMXL7PhkNSl11bltMELN9L6hMN3w4Wj0sVK7ZEc/TUImSfN04nMPoB5YfQtc0bke5vXs80rKZZKkEoCg== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35:48 +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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35:48 +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 v7 20/21] pinctrl: starfive: Add StarFive JHB100 per3 controller driver Date: Mon, 31 Aug 2026 04:35:13 -0700 Message-Id: <20260831113514.66382-21-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: 6dd66fa8-1707-45d8-c0cf-08df07540117 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|5023799004|3023799007|921020|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: oDacKBe2hmCPRhR3vE/Vy0HQSJuhFdhYSifg6FySP8pWbj0mu2CC1uv31kz+qmvd9f0km07nOK/m/DDq/+k9wDFshlgjlp5IYRsQNlaTJawZulMESvoCldgRWEHuougLtt0gOGN1f7do5TC3RjuXej3HyLwIussunrF/5w/DHEBPL2Nl06jTXr4iFUJ2tnr8QrxtZautmxneva/7+IKNl3fjjkzS5wxn1vSyIPikpAZEKwJsryW7jtkFslldw8UGPPd74CDRcj+SjiZ87fFMShP5mv0bhbphJC2EtCDyGg2mG4567/MXyk02zlJyoAq36lbQSk/JKFyckC+A0UQxlZr9kSPsEhERUcFBT8eiD0vNIP3XLaFFMymeZ/eiz90081/MZjLsZqfbT74ldLHjBqlLfA9JFhzcu8gHQosz0b8RoakhLJtTPfVO/Qaov8Y1/PvIMolK5khcKrU+4bmQoUQGdSHF4MBBSrrqTjFOh+WWt0AO/F0JKOsqAVmBHmz5sdYkIWkTlSX4EyUuquARZVcMWma7MMpJoTgrUq6HFCMldx95gw7C62XEE7DUJP0jf0ZMfi72rE96RzHqFq9WIg== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(5023799004)(3023799007)(921020)(10067099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?koXSucWSXw0kbut9/fyX/kQpGN5lBvmJBAYbAOjHbFLUMzHHALJL+qJysAN4?= =?us-ascii?Q?Dh1Wtm3LNkK8tJKFTmfSh32auVQ0Hx73Y2j/yyWcWdFMQAKdUB9oHaNUWOZ+?= =?us-ascii?Q?oYaUiPQd7ICrIyGOth2PBxBqX8kfEuFnzMnhhz5ySbWvpF+yxXuTLXk7fOTM?= =?us-ascii?Q?nKB+iz/dQE2tXWfWRR/o+z7dbbWX9iQSNHQqcV0GZRQmBFo4clqy2QtMgD7/?= =?us-ascii?Q?8p8VIV1JiKIiy4D0GDkwKZphU3rMJomYIr2MNOwCgh/8sv8ZnTG+d2hDqFdR?= =?us-ascii?Q?5p+BF98tNDkLJkQ7jurrW3yu1K+rQE/SDD7CJHyF+E4oxWylMmFg7KahbRS2?= =?us-ascii?Q?ouoDnv0WTDGFbKfSZqwFGKBTjnL2ANJnrxwK/wzAxkzX8RrR2Tk2dGWaIRkY?= =?us-ascii?Q?81bbsglCbs6OkGA8190QRgwu9lHfsBWGK4BA3c12lg0jpPzpsvZ03IVP4Vcd?= =?us-ascii?Q?O9HRGDx8xbvADqkFWsTQeYae7932XPov6UlN7VxCkFTIYvNoqOzschvoN2LF?= =?us-ascii?Q?OAp7kWLhcPZpQsYH11H6YdDPKxSbjZJUQbk0yF+JVg3fKdPm3iRWHyKKLphB?= =?us-ascii?Q?iMSLo7jd8EpoIFS/q7ebLyu/IQUnqqQ7HJtS89xTYGS2l/Kf4tykN/CMBycw?= =?us-ascii?Q?l5yYaxXsegy315lV7jhT3LrPSeArjOvmgQG6FbN7sa5p8HV2D7hhhLU31fh2?= =?us-ascii?Q?eD5iJToKl1GaN/A4j+Tx7Nasncmbn8qJIBOFxDefsDolIhBq9XWAtUs+pVwf?= =?us-ascii?Q?xhq5r0Xgjbv4bvIZXN37mDysvqAB73AwfPKQ4/Sj2FKiNbErtHHf4I6zDgS/?= =?us-ascii?Q?Q543G2S4CqKisu4nM4YRaasTeHQZNgqFdlXcgXT8y9K6qCkOmS6cgK6Dizh2?= =?us-ascii?Q?pIF1WX6KbC6X0krbVC8avhaUqZIzsRu1sD6RC5jLUmdUMd85YhOR1BPg2Ams?= =?us-ascii?Q?yMtioc6Y1FN0eK5IqzrnXHYA8n4Udah+T5BC3C83UWvyohChwn4Crm/ZDDTf?= =?us-ascii?Q?aG6s+BJIguLUtIW4oSrQgneSr81jvqREdnpmHFv3xfa2d2vC7A8Gqn3kP+sn?= =?us-ascii?Q?K6IHQvrjbSlFLYV1lOiFz5dta1Bbjd21xTfADuky0WSwXZkVVSnyK7kHxKdA?= =?us-ascii?Q?/WHoSPgnK8mlATIsRMejp6ElptBNg+m5ytXT4qeXwOKCLhE6LYk4jzWTyqKR?= =?us-ascii?Q?kcoqL4gkYHleLBJX0EU5jycSvikTm3ksGIGvcg0l6qlLRwPx81xdOyNSRbcc?= =?us-ascii?Q?US47aPqsTvwszSZzl1WpXj5IxEbu3YefH4Pnsmr+WvnqGk6j9ssvlUhyk9S6?= =?us-ascii?Q?3iR7KX5kF8fPmXuDwLL51XxmTk/trMvYdsiS4rs5wfIvPnC+jePfMKKLNABi?= =?us-ascii?Q?enMa7LuimTtAXCLYM93t4Dw3yxGJBQoqHodNA/1HKF6rNnVLa8cPMalJC1ZX?= =?us-ascii?Q?5nC03qy2TBLYgWltk590ZNSVBTtwyY7jTX+mUlkVdRd9j32LIvKfT9t45ibO?= =?us-ascii?Q?4XOHxFFjNYWqyon5SiRk9Yi0FSKcbA/OKJMSttiuHp+FVspdUzwM9lDcYZ3i?= =?us-ascii?Q?8ggtWryeXzfXWPh5R6NandfkhDvjzYk4UMLDiLhNdCdHGr5akgIjmNGjxfMf?= =?us-ascii?Q?kamtwUzplLm5oc86ikG7PS0kacRAhJ1fEorPcXQ5svp5ypbkOdINiC8buhQi?= =?us-ascii?Q?gu6obtpMMEPOsVuvzjGVF0yG22w2wRzeUBoLHepHCKb62vR451LoiN/nsXY1?= =?us-ascii?Q?tsrrGs10KNO1/q3F0MwHtWBea5YNyAYQyU5uqavvWFk32xLF9wPo?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6dd66fa8-1707-45d8-c0cf-08df07540117 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:48.7878 (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: aipYOeU6dHDc0k6a56Sa+SG6p+y3WuwdH3FnSlFWXLxF6lhpbu0Ex5dRH+DugzqPxmN+E77rcdT2PCedE1tAnvx+W7Hc8ovldI4tSuPPSjQLxY55K2MgYJptcvVlgghp X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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: Alex Soo Signed-off-by: Changhuang Liang --- drivers/pinctrl/starfive/Kconfig | 11 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jhb100-per3.c | 117 ++++++++++++++++++ 3 files changed, 129 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 081e3ec4464d..85fbc4063238 100644 --- a/drivers/pinctrl/starfive/Kconfig +++ b/drivers/pinctrl/starfive/Kconfig @@ -100,6 +100,17 @@ 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 + 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..0643bd147210 --- /dev/null +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per3.c @@ -0,0 +1,117 @@ +// 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 "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 }, + { 0xff }, +}; + +static const struct config_reg_layout_desc jhb100_per3_pinctrl_rl_desc[] = =3D { + { + .pin_start =3D 0, + .pin_cnt =3D 2, + .fields[PAD_CFG_DRIVE_STRENGTH_2BIT] =3D { .shift =3D 0, .width =3D 2 }, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 2, .width =3D 1 }, + .fields[PAD_CFG_PULL_DOWN] =3D { .shift =3D 3, .width =3D 1 }, + .fields[PAD_CFG_PULL_UP] =3D { .shift =3D 4, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 5, .width =3D 1 }, + .fields[PAD_CFG_SCHMITT_TRIGGER_SELECT] =3D { .shift =3D 6, .width =3D = 1 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { + .pin_start =3D 2, + .pin_cnt =3D 9, + .fields[PAD_CFG_INPUT_ENABLE] =3D { .shift =3D 0, .width =3D 1 }, + .fields[PAD_CFG_SLEW_RATE] =3D { .shift =3D 1, .width =3D 1 }, + .fields[PAD_CFG_VSEL] =3D { .shift =3D 2, .width =3D 2 }, + .fields[PAD_CFG_DEBOUNCE_WIDTH] =3D { .shift =3D 15, .width =3D 17 }, + }, + { 0xff }, +}; + +static const struct pinvref_desc pinvref_desc_per3[] =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_2_5V) | + BIT(JHB100_PINVREF_3_3V) + }, +}; + +static const struct starfive_pinctrl_regs jhb100_per3_pinctrl_regs =3D { + .vref =3D { .reg =3D 0x00, .pv_desc =3D pinvref_desc_per3, + .num_pv =3D ARRAY_SIZE(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 Sat Sep 26 18:54:42 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2119.outbound.protection.partner.outlook.cn [139.219.17.119]) (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 633B43F8EBE; Mon, 31 Aug 2026 11:36:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.119 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176172; cv=fail; b=esalxCmhhzFqSRUQ28OFa+dT1jZlTkTPcooTrBP5eq9w5X/d45quPgqYU6hVwgR6rUAX1nWUQ6VrSNRwXyHx8RCke0FJbA65lRwIBGf1TnHxIeo/6sS/XlTznI3KrbEuKtIQ8zgdSusHvASVuXySxvHF2dqs56TPQytTk2ou8xo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788176172; c=relaxed/simple; bh=QDs36TAXKqTU+vANkcNGUmAiO3GBIuGsepwlwC2makc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=lEnOHSorhdJfSJxkEAfIMMqCbB1i9AuLdVXbthrk/27Kiieq2Y1rpsAAIpMXpAQoMxEKIrLJHrVgcvE4glULiunBZN5iTqKaPwVAPinrvnjnC+GSMX9bzHt0t44RYjONzDnL46gb+aC7GoKax5QIJD4rzUkFgmDwLJU8wljorU8= 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.119 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=QevaWyi9f74ZnHnWv/X2NSzDvvRE49IN8QkPIC1Wf5K4PIRWDzMA2NwsmNXOsYBOWJgPdwY6hRCbvDCVDxHxKUUPljJmgXogChVnnsr2TfM3XYoVP3+yp6F7U8hKINdcGDcYcotVjS4dZCjF+xd2YB0JrbOzq2QJ969UPzD0cmA9JTpBihSqdENy8BRY+vd19p08NYkmenYovKNQb/HJdm261AFR3Q2aIQITH3z9PrbIz7jiidtFwXx2oFso76e6gNjmdf74h7TiQc1Cp2/pg111MjnvEyv9wtk8zmNF4IucGd1ZVq8tQvKudafZkVfhyY5+8RprjcO6F6t9AzwLGw== 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=AfebZAwclns8lWbu8dG+rc8FFCatPg/skZuurMwemOw=; b=D9/a6ChObyGg5HUhbG8pQOSiewMlE/DNDSO1XZnHxiIfHrL+z6bwoal9ci7e3LEg6HajW4LP3CcuP8Y/85FDzrjmpXTfsvHji57iKHXrtGvUCeqZ/0C680Dvonqv9VuB5cJAgFEt0JqplfXi5d1hIxydlWILyqitCtqjQZYhWS2FH4PUwPILkrptaP4kz04ihEivzGphAW7YVRfkwkKUFAnKOQItEqlmoPudbueNW7Y+7JyOOsiS02u5tNU2ZcDrahM0o8Q42+/fWcEaHbtuXk4gBDWjoTyMFCC/BmS8IPu7QaC2x2b5Zdd0Wficer9jqRQ5z0f+OW2JIRy+uFqaTQ== 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 ZQ4PR01MB1332.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:16::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 31 Aug 2026 11:35: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%4]) with mapi id 15.21.0315.011; Mon, 31 Aug 2026 11:35: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 v7 21/21] riscv: dts: starfive: jhb100: Add pinctrl nodes Date: Mon, 31 Aug 2026 04:35:14 -0700 Message-Id: <20260831113514.66382-22-changhuang.liang@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260831113514.66382-1-changhuang.liang@starfivetech.com> References: <20260831113514.66382-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: ZQ0PR01CA0013.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:5::8) 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_|ZQ4PR01MB1332:EE_ X-MS-Office365-Filtering-Correlation-Id: d19fafb8-0bf8-4352-e70c-08df075401c4 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|366016|1800799024|376014|7416014|18002099003|38350700014|22082099003|56012099006|921020|10067099003; X-Microsoft-Antispam-Message-Info: SmIFFpSw6yslPQ2UJsL6ODVYaH0AKg/Rb5oDdbm0MzeW2TKkxrejYuS1GKUzym9xbEX9bZoTiy+s4GfcPIc45KXOsuq0ZUtdHEeJevCmDD25f7VSGElWr5rMKTZtj8VVx3o5Sal5hH9zZ5v/4M8pPdcZbf6yVXrm8sRP5n5WmOw/NhJY+j4L0i87TDkZXbRB/VJ+wvZy0oB6QoC+FXvmW+/61AxOZPrHMB72vnxWZhNZqqVVR+S3n9ZkwGgrze/Kq4DI+2ecDaKUrYnojbSG2dc7gOiNvAYQ9vy2ulLaz/SbWw80Hz3coKuBNAwU1nLFtdjctQQtlDFUFVLxlvBcrjySzL5MqyMXsW5X1AyTsB9OGh1lBvK58yLWD67793kEYrH3J3yTIPpiVatXZEw4bfqh3ytrwpeciLuF3N6o3FvD7N37E7Y/YYjuK4Rit7nMse2PhVBZz0lL2TZFqtWFaujB168EjH5rvM5BWCf4w2JhNkxpx+LPa2932QN6qwcuVKADq+iXxTtg0JAGHC/UCANUKFBITqrtOOaTn7T306NXoDR7Ar0sVhzTSkfPc2nFzuRALSVCGx0oCSOd4kGMnw== 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)(23010399003)(52116014)(366016)(1800799024)(376014)(7416014)(18002099003)(38350700014)(22082099003)(56012099006)(921020)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Oc3gy+8IIMgr0MHed0ndpVMYikx8DkLfem8ar+WJfld+HlxQDnmZLl7aoBj9?= =?us-ascii?Q?IsYMia0XW+g/HDEt5j2ILiJMdOU4xcRofb8SEoCgzeIWiUTaAjCHeIrfeLal?= =?us-ascii?Q?TdiYGUFV9HOcX1cH3KXvXM4sZMaaScSsWtNDMYauBJoh8uokB4FBDZD2G3mD?= =?us-ascii?Q?ANUlP+6/mqrYYqjpTNdMiDTZmqAu+KL5Q0DbxIgHx6BHPQ/i8nRzCqkYToeL?= =?us-ascii?Q?eK1uHQUxkwP/p71TMNTMY/2sxS6BWH4lCU5eTIeVbc0TTmat5HbmrQn/mJ6A?= =?us-ascii?Q?GmBJRvMXkiiecl/WUjJzH6QI+klNykFNOYqYUAmn4iMO26bNky26+2MFM5nD?= =?us-ascii?Q?1ifKjBQ4Ui1n2OacFhYJ1L4xIgzJIc4ZtDXqf5Dkbs6xG4SlajpNGxYYvkWu?= =?us-ascii?Q?T7VvnLZ+XYHFXwtFmfOmM2cgnvYLNq+YRkHZQVoEaaV9INAuDlmzk8gyk1lF?= =?us-ascii?Q?amUif1d1yjgB1GKqZ4IYXXDqL5o05fkoaGD/ZZ3OYQlXAprtI2V1wZDztCJm?= =?us-ascii?Q?YIrfcEC0NdfNLjHnXaZN6QUQxO1exeoEi64VhXmYYTVOpJoASc0TQFAdFHvd?= =?us-ascii?Q?p+4z0ukKd/3Trt2dSjvKjXf6+XXoU66HjnE3AQm1A6N9jw1sHlH2+Vqccmb+?= =?us-ascii?Q?CbNstj2jNJb54KUT3jGHIP8S4ysCb/z0+KWIQRY0XIbVJQ7heIF9m9sX/2N7?= =?us-ascii?Q?iPzh+K2N8CslCv+K8RRZ7Dx5RlRQSHtkMQlkkVK6HD4WWIhrJawtaTToq5Jl?= =?us-ascii?Q?W6O4slpFzaFNUzCB8qwB2RoWtzDxNGJFyYFpIST5INcKJuoYb2BdsuHVY43f?= =?us-ascii?Q?7OESCOSZMzPpcyPZzTk7FmfX6e4GNwi4wMlIabY3Tc8spLR1GMptCe+baJ4n?= =?us-ascii?Q?/OFWLewBZSXcSG57sAuCYVR82PUQmdfJoAdwfLfiubBs32JQcp4twwQ/YnnV?= =?us-ascii?Q?nsh0H919u5AXFhZrRYVxCtGjmQU4KEgG4HO14lKcLPSJQn398zK4vs2ZV4fO?= =?us-ascii?Q?vUDNq7Ihj3yX0xKAmZ3tpiGT88wTPxLw+KxiAHTwSnw3e5tVN7rXlxJ4GsQ8?= =?us-ascii?Q?6sLrPSy322Kd8USSO525SVgGq4jHuU5L/m/mYPfekYuxvE16JXRH0VaG3o7F?= =?us-ascii?Q?A1Vxjqv0XOy5t3ees54wjoX/lmFE+Bc+SZrT6psiJsHizDG1FwY5ks5O5w7Q?= =?us-ascii?Q?inRPIqiqWVZXhFaBlvKIhoC0ESwb6HC80RLuEIBqFaX1FT2FDqbCFVDWPuwU?= =?us-ascii?Q?MWG6aaiN/o++K4EQRzdCU/Zimw5quu/sA2SXI8hSiIXhaI2ipXkw0kZD0QSx?= =?us-ascii?Q?7W/17zjbLzXCYcRTRz0ehkenjtIpkhcxP7RyiTr7r6HC/DhUGmMc6NNYlzzv?= =?us-ascii?Q?TtrY4HKOGJLFEiuB4epVo1kpebCc6rUg1aDIOnA+rhIBF9YLyDdZ3tZwRTPY?= =?us-ascii?Q?VS93PCWVVTZE5Wz5o26vVonKG9x2R5JYtvTF9ujEI6TdR4VqkrLeLhUHumlk?= =?us-ascii?Q?7sd3PvRmiFqHGmFy5+1ZDXdhKmcMOtyyXCtuSGxWNCXfnzkq59qR5J9rNb5i?= =?us-ascii?Q?mLR01Fd/yxYG5n9KmTVyCoqDoxZ35OVKZjauQdhgcZBlPi/AMWMrEGmrZSaO?= =?us-ascii?Q?02apSF6tvfH6tFmKkXBfBQ7QmU3fGNzNxSad9AVyZc6ZCEWQvhdCwNrN0+XQ?= =?us-ascii?Q?wqKZZ+59qdF2AlyenyptmaiR6vgNLgo5pHcbFT/IDLJL8ZFKH8fZXQk0zWD8?= =?us-ascii?Q?Qw1xwzH8tUfwL+Uk2uMnvqCOQUBGTukWxNrD/+9srBZxSMQ3+C2X?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: d19fafb8-0bf8-4352-e70c-08df075401c4 X-MS-Exchange-CrossTenant-AuthSource: ZQ4PR01MB1202.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2026 11:35:49.9290 (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: kzuOUTkwqoHTdPyKuo8Cs5/ucOv9Jgm9cTSz2EeJoeyAvgAPJCQwmDcC3T7QI61V2+fRLQufpVUw54/jMQXolJnETXuoySm77DecqS4iTOa41e1OppGTioGkiba7abZW X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ4PR01MB1332 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 add the 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 | 3 + .../boot/dts/starfive/jhb100-pinctrl.dtsi | 23 ++++ arch/riscv/boot/dts/starfive/jhb100.dtsi | 107 ++++++++++++++++++ 3 files changed, 133 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..8ad2b30a4e0b 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"; @@ -29,4 +30,6 @@ memory@40000000 { =20 &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..13d9ff146743 --- /dev/null +++ b/arch/riscv/boot/dts/starfive/jhb100-pinctrl.dtsi @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (c) 2025-2026 StarFive Technology Co., Ltd. + */ + +#include + +&pinctrl_sys2 { + uart6_pins: uart6-grp { + uart6-tx-pins { + pins =3D ; + function =3D "uart"; + power-source =3D <3300>; + }; + + uart6-rx-pins { + pins =3D ; + function =3D "uart"; + input-enable; + power-source =3D <3300>; + }; + }; +}; diff --git a/arch/riscv/boot/dts/starfive/jhb100.dtsi b/arch/riscv/boot/dts= /starfive/jhb100.dtsi index 943324b3b2fd..ecd952084535 100644 --- a/arch/riscv/boot/dts/starfive/jhb100.dtsi +++ b/arch/riscv/boot/dts/starfive/jhb100.dtsi @@ -428,6 +428,18 @@ 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_per0 0 0 60>; + }; + per1crg: clock-controller@11b40000 { compatible =3D "starfive,jhb100-per1crg"; reg =3D <0x0 0x11b40000 0x0 0x1000>; @@ -443,6 +455,18 @@ 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_per1 0 0 36>; + }; + per2crg: clock-controller@11bc0000 { compatible =3D "starfive,jhb100-per2crg"; reg =3D <0x0 0x11bc0000 0x0 0x1000>; @@ -464,6 +488,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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_per2 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_per2pok 0 0 18>; + }; + per3crg: clock-controller@11c40000 { compatible =3D "starfive,jhb100-per3crg"; reg =3D <0x0 0x11c40000 0x0 0x1000>; @@ -483,6 +531,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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_per3 0 0 11>; + }; + sys0crg: clock-controller@13000000 { compatible =3D "starfive,jhb100-sys0crg"; reg =3D <0x0 0x13000000 0x0 0x4000>; @@ -517,6 +577,53 @@ 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_sys0 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_sys0h 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_sys1 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 <2>; + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pinctrl_sys2 0 0 37>; + }; + intc: interrupt-controller@13220000 { compatible =3D "starfive,jhb100-intc"; reg =3D <0x0 0x13220000 0x0 0x80>; --=20 2.25.1