From nobody Thu Jun 11 01:57:32 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013034.outbound.protection.outlook.com [52.101.83.34]) (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 E7AA63FD123; Mon, 4 May 2026 23:55:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938903; cv=fail; b=Yg1U6oHvDzN+IFAt/Ctsw3/Mw8ltzHZAs0HvgME9gr5m2zAeLV3yQXLQQ5k/NoDKvFbHcqUQA4VvtX1VLlJzuul6kt9ybxWNPH39XQQ7lA+YxPyVSQL5l/St3eT4EcR9LIF5nZN9tH2om+L/OVJvRzM5C1qjUanYSL1zfHse1Cs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938903; c=relaxed/simple; bh=HmrRRsJQRCvvIO+17QOCbMsaqZzX0Yg6Tujx2XBbe6g=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Et+iTY9I/QmCxFngBu95PHUpqqUbSkSruUdD63iOJ62a8ULk5vDmdYGE/eb7ZxMAD+SQ62brjpfrhDuZuNwEhf1OViSyxsGXiWggqWVtN2AqQy+gzDCzI9ggmICe5kT1vtAiMXZT8stvvXXVBNLGtpBJBMEUW2kRRYahhhrQg/U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=XpYPuk2R; arc=fail smtp.client-ip=52.101.83.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="XpYPuk2R" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=o6s4yLRk51QDkj0A8hmB7oKmlMW9ZIP+uxUjIMQ2XTk8B+XOZUFzGw2/fORXvLrJpeK6fMf2iZYTq+M9dSIavOT6jn+cYCXIRSBLfekkkybrTn0m3zSGCzRJ2nK4rmi3fhK9RG9boyXcCV0E01JNtINx1DY+MlKCrGhpXHNU7xTFTYgfh7Doo5PJmvfkMAQA7GPDDfhUynn7nD1i6zPws6iMNr1JPFRuDPmedhX9iJs1NSPEnC84YtKsZXMUy6LnvYjNiyaJuWabTCPsBXRba5Yy/7NVtY8S6udr4IP/9wYeiBV1+gzlYomhFbD8cKRfqy80nOVRUQZfcrG0LumkrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=FzhFKHWxco2YIgLmS7FO1GExkOEeWStMsCJwJmIL30s=; b=nPM2PLw1KL0FWonqLvtZ6sW8d0qw1uQXkVbe3QetqLQJgzcaUbsVXckhEdtoXuSnfDeqvGzzHL3X+69NzdSk0Dos7FDsy1SukcJJ2XD+3O1WQDK7j/rP/dQAyvawfXJJpsM/t3yJV881Agx4HrM7z5VhiJES6fgQkhTDfbQnq7hNwh4JWtQnzv4WnUmniKuElVedacZ6j3XvSjFTl7BhU9cNvMj4qTcobHLwe8bl1ZXHu3k55cfY96onwJecIJXtppgTJ9X/Ht5NuqEinlP3V0SP39wplKDfeCZxJwGGjjqa6OEev/SruQtbnwurVrFHkqcCB4M3a2vKUjEJlHSoYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FzhFKHWxco2YIgLmS7FO1GExkOEeWStMsCJwJmIL30s=; b=XpYPuk2R99J6FepPtMnt2IV/ABAYjBAOdJ45dupoA3jYFu7HV3NQB78wc7thKhPZJ+ZTYpGpuCKZBpdSVlFHgkwOQ/Qz3/viwgRR32U+vDb5qZ5zLuY5vSK6ZOnVYm8YxWECGHwm6EiHCvB+DlhVvMxA8OzWYskn/nsmx4VmAbTQBvGuhTOrme1qL+SexLyv3b/5E3lQ5hXk1mCfyVpujx9pjrmiLmBgYAOeaJbeH+JPdRHe9DDxS66t3OT43BFYZEp3NlE0dhrmn9cNWmEiviuw3exZX7Xl/OFxOcA1mBEJlVKtIX520TYTtz4MTv4Q4hj6RyA9a9lmH0sCQNYhfw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by VI0PR04MB10511.eurprd04.prod.outlook.com (2603:10a6:800:23a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Mon, 4 May 2026 23:54:59 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9870.023; Mon, 4 May 2026 23:54:59 +0000 From: Frank Li Date: Mon, 04 May 2026 19:54:35 -0400 Subject: [PATCH v6 1/7] mux: add devm_mux_state_get_from_np() to get mux from child node Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260504-pinctrl-mux-v6-1-8ea858ba3a5b@nxp.com> References: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> In-Reply-To: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> To: Peter Rosin , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Haibo Chen , Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777938890; l=8213; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=HmrRRsJQRCvvIO+17QOCbMsaqZzX0Yg6Tujx2XBbe6g=; b=BLfMgTtdn16feYdwoNtLqc0SL5ncYRnqMuZvuH3YonxdGIjz15vYsftNKq+6yvKPf1OrRXFGR UIO8urPdhkiDR4MdGx81XwPMJeYyc2M58nBga1gpcVjeMX5N3TXRrFU X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR05CA0055.namprd05.prod.outlook.com (2603:10b6:a03:33f::30) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) 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: PA4PR04MB9366:EE_|VI0PR04MB10511:EE_ X-MS-Office365-Filtering-Correlation-Id: 8da3b878-ae5e-4d1c-f0ff-08deaa388cc2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|7416014|52116014|22082099003|18002099003|56012099003|38350700014; X-Microsoft-Antispam-Message-Info: K1Tds3Rj5cUD0mHURi0kXOUgGXZJKaVB0l0R3AFOnKGghLrG96CuzOM4d6ER5BD1wmLBSHdysWSps1IydyC9a+6dnD7EN2AqYThcV9SQrNv66Mf9k/nXL+PpyHPaMVqelvad/s+K4l4FLoB2V9+YDE1/Mn1JHEQ0uAgxckif/kcsLCTU0w7GZwDlhsjD8Gorthk67uD+kbla600GGLAe/Jis9G/4ZVa25oK6Y5R4AeOLD8ksnQMxV9eML6hu6kAmOTFUQm0B4d9AcMv0GevmQlov0GD5nDxPl/gyRZJ9o+vfZqXzC1+7flEK/gJi16ipCTsEZtDxpv5bjykQg3HEk4KDfYfLrmqpL9TXbD0SvqVaYvSi1qnM82OYE/wGP59Rbxtd5ef4xob0w4Ry0tQFBHDa5q+ImjeYcX0Ik0d3nvwBtQs5pzrAflkI8S8VHy4ZrV/qiM/qEVEs2pINLN/aiqr16I8tKBVClYJZ1h4P1mawqPgg2qnX9+og0j/+PkTCCBjiTRC9Dj6RJpvkv5L8gQHP/va5iEX3/hWe7tAfciO6W9voUKn9eFGmjPP/ekDbxCxjl7dAC3+6MmSYYx2wqAWM4aEHYYsETyc1lA9eEBNVpGkO4KmsqAP18qgtqhwxmXWuUNbHXg88LpQP9r7pgDMR13u5YfKaNqBrhtKdj8mEt9H11ySP3GIFAzCgbVkJWqGjMt1rLY8oifOmJTyd8NfW7Y0yEre0kPrajwovoiXGZsoUXs7ZCwu73HJBA7A/ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(7416014)(52116014)(22082099003)(18002099003)(56012099003)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RGtSc3dnUmwyczdibkV2UkFHYy9IZzBhek4ybzUxUUpoSjN0ZWt0QStXN1Na?= =?utf-8?B?d3dWZmZSczBGbVJWM3N1cWRGd1pjOXRDa2tvSDU4eXNxdVRPV2x6QnBxTWN4?= =?utf-8?B?ZHhHQVRXWFh0RDJoNXZ0ZkhadmY4SFc3MHZCWVRoZG5oNTBaUGx5cjYxVVdP?= =?utf-8?B?WHVMNEZhaCt1dDJ3TjlMS28zaERzRDFjVExmMEN5NXAwcjNjQVdlcytQaVNy?= =?utf-8?B?UEtuQnBFNkNhYUpNQW5IWXk3YTBEb240dlV2cmVCU3lBclJVbDNoRVM2ZFlF?= =?utf-8?B?TDJGcVVqRzVwYk1QNFdLTmYwbmJUdk43QUFUOVFYYVV0VDhXYzF2TjNiRlVl?= =?utf-8?B?RDk4bitGYWgwMEUrUS85N2lxYTV3QmdBbTJZVEMrRkJScWR3dnNpbE9IUHNK?= =?utf-8?B?dlM5U0F2ZzR5ZEt1YjdpbkRWWVkwQ29ha2o5M0ZJbWZ0alRLaStOemF2ZThp?= =?utf-8?B?bW5FZmNHd1U5bjFjS1c3UkE4MzgyNHB2UWN4a09RdVZETnQwL0lqandCdTRO?= =?utf-8?B?OW5FNlMrS1U5dWpIdExVQmFGV2pxVnBuUnNmUy9kbENxdUZoNCszdTNMcmJk?= =?utf-8?B?blEzYmM1bTZVRVlrbGtQKzVURlhUNTBBVXdOK3FQLy9SZ1BETUk5VGE2Nkg4?= =?utf-8?B?TWVqaVBtaHF3OTFxYmw3Qk5jMUsrZjA1RDh4QnZnWXE1eVNSRzMwZE1kR3Zy?= =?utf-8?B?d3M0NThDK255VmpFK0NMdzJZMGI3Nzk5QWpFajd1bHZwZTFIM0h2M0RocFJw?= =?utf-8?B?aVB6RWtKVFdqeG1WeHd2MmxpRExJU21nOVRpS2lkd3lDcDZkeTMvWDdCUXRv?= =?utf-8?B?RTRxSHpDRm1OSmp4SHR2Y0FwdTN0RkJYdGZWMlhlcThHTGRHeTMwK25yNXBa?= =?utf-8?B?TGR1RjBzclNQN3VXNHZra0JOaXE1QTVVUFpZTVVxblF0ZWkwOUEvaXpQU3NO?= =?utf-8?B?K0hsN3RPZ3F1dEM5QXIraDdLUTJoeFg5aDhSSUc4UmliU0dWd1JPOU1SZDlB?= =?utf-8?B?aWJ5UlBLSFd5LzNISllnU0IxOGZhcUplSllZZDQ5YmlUVC8yWXlDdWRMaUwv?= =?utf-8?B?UE4wMEFaRGlGeFNYdkZlKytKdXdXeS9hZU9xZnFNQjd2K1RZb2dVWVhTVmd4?= =?utf-8?B?cDdZOEpSS0tUM3FROGxnT1BYbEcvaXA3UzRFYzJmTitIby9GaXR3bWtzaVpH?= =?utf-8?B?aks4a2NLMmFnTUdCTHhWREJjVFpJZm1aRzhNVm9haisva2FpNC9TTWdMZGg1?= =?utf-8?B?Smp0OGtJMXhvUFI1VTZGK2VPcDhZUms2VXhJWEhvUy9xR2JZOHp3OW00VjYx?= =?utf-8?B?T0NtWjdiQWdVVW9aeVJySjdqeUU3ajZSdEJ0OE1XVnYra0ZveDB0YTlyQVZB?= =?utf-8?B?Vk5sbVFKaFBUbmM3QStBbFZkZWhwcU1vbUFNR0RELzhEeG5CK2JOUk14SW45?= =?utf-8?B?VUJYbU11MmhDRlpiZzZlUXR2bzl4MURQelZVYlFWYlpSeFhqTm81dVJacHI0?= =?utf-8?B?aXM0ZCtSYXpMdXZibHUwNXk4VW5ZM0cwZGdGR0MrajFkbE80NkxGVDFRMkRC?= =?utf-8?B?OXhLeERYODEzQzB6Y1oxdmg3WnRCMkNOUk1KTGxTWjZxZmp1eGsyWlZIa0dv?= =?utf-8?B?RVJmaTMrQTJudjkzWnplakVBMExzaTBUT1NGR2lTYmNIL3FlUGRwQ25oNkZ3?= =?utf-8?B?ZndjQW11WXA0S3orNC95dUFEcGVUcGFhK3NKS0pxWnYrZ3dUc3ZMRVM4aXZm?= =?utf-8?B?N1lnTW15TW9IZmhrT0plS2J1blc4dlpCRDNodUxGb2xmWWFwN3FPajJ2ZndC?= =?utf-8?B?NVJrMlpjWitwOU5LOUxwSk1xaGp3S3hNYjlId3ZwWlN2Zm9UejFYeUZaMkJq?= =?utf-8?B?SWtYUm9nbjJrYjRQQkVJN1UyNnIrc2J2dlJJeDdhNEF6NmpMZHFNT0JvYktk?= =?utf-8?B?aXJuZnBTSDlQeWRSdFNaRCthNmJNNmo0U28rQTk0Yzk3Ulg2TlY3MDFzR1M0?= =?utf-8?B?NkZBMTE0V2lsOVRsUmQ0eEV3VjZHOVpSU2I0akJjcE5vVk00M0ZFNXpxZkxt?= =?utf-8?B?VHR4TjZxb1NPWWJFUGJTQnRreDlwNkJKaUF5YmlaUS8yNGZvOGlzb2xYS3hh?= =?utf-8?B?RysvUVV5OEV3TGF6MGJ4d1RQcVJhYlRyNUg1bEFYTEZhMEVyUUdrcE5WeWl2?= =?utf-8?B?aUpNL05rcXRZS2RxbmJiOGoxSlNMdjVSWElyT2hncjRYaVo2d0JBZytUVmFp?= =?utf-8?B?R1l4eU1KbXdtcVlRaEpkMnlWSVB4K3FtUmtFejUxK2dzdDB6ci9DTEVTY3Ft?= =?utf-8?Q?wx35Z8pQZ3h/10cFqR?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8da3b878-ae5e-4d1c-f0ff-08deaa388cc2 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2026 23:54:59.0845 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7zrt6NY3M0HyHs9e1hs+d5oxLvxs8CheuRIGwXKb4DFgnAyhSsPzh+/uoZs/Y/20jp1RGoPMLu8tEMjNfSCjgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10511 Add new API devm_mux_state_get_from_np() to retrieve a mux control from a specified child device node. Make devm_mux_state_get() call devm_mux_state_get_from_np() with a NULL node parameter, which defaults to using the device's own of_node. Support the following DT schema: pinctrl@0 { uart-func { mux-state =3D <&mux_chip 0>; }; spi-func { mux-state =3D <&mux_chip 1>; }; }; Signed-off-by: Frank Li --- change from v6 - rebase to v7.1 - change commit message to use 'devm_mux_state_get_from_np()", remove devm_mux_control_get() change because it is not used yet. change from v1 to v5 - none --- drivers/mux/core.c | 42 ++++++++++++++++++++++++++--------------= -- include/linux/mux/consumer.h | 8 +++++++- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/drivers/mux/core.c b/drivers/mux/core.c index 23538de2c91b41ad998471d5af429cf3c6211e4e..2f01acfccf47b1a55037a291019= 51f4b1760d890 100644 --- a/drivers/mux/core.c +++ b/drivers/mux/core.c @@ -533,14 +533,16 @@ static struct mux_chip *of_find_mux_chip_by_node(stru= ct device_node *np) * @state: Pointer to where the requested state is returned, or NULL when * the required multiplexer states are handled by other means. * @optional: Whether to return NULL and silence errors when mux doesn't e= xist. + * @node: the device nodes, use dev->of_node if it is NULL. * * Return: Pointer to the mux-control on success, an ERR_PTR with a negati= ve * errno on error, or NULL if optional is true and mux doesn't exist. */ static struct mux_control *mux_get(struct device *dev, const char *mux_nam= e, - unsigned int *state, bool optional) + unsigned int *state, bool optional, + struct device_node *node) { - struct device_node *np =3D dev->of_node; + struct device_node *np =3D node ? node : dev->of_node; struct of_phandle_args args; struct mux_chip *mux_chip; unsigned int controller; @@ -635,7 +637,7 @@ static struct mux_control *mux_get(struct device *dev, = const char *mux_name, */ struct mux_control *mux_control_get(struct device *dev, const char *mux_na= me) { - struct mux_control *mux =3D mux_get(dev, mux_name, NULL, false); + struct mux_control *mux =3D mux_get(dev, mux_name, NULL, false, NULL); =20 if (!mux) return ERR_PTR(-ENOENT); @@ -654,7 +656,7 @@ EXPORT_SYMBOL_GPL(mux_control_get); */ struct mux_control *mux_control_get_optional(struct device *dev, const cha= r *mux_name) { - return mux_get(dev, mux_name, NULL, true); + return mux_get(dev, mux_name, NULL, true, NULL); } EXPORT_SYMBOL_GPL(mux_control_get_optional); =20 @@ -712,11 +714,14 @@ EXPORT_SYMBOL_GPL(devm_mux_control_get); * @dev: The device that needs a mux-state. * @mux_name: The name identifying the mux-state. * @optional: Whether to return NULL and silence errors when mux doesn't e= xist. + * @np: the device nodes, use dev->of_node if it is NULL. * * Return: Pointer to the mux-state on success, an ERR_PTR with a negative * errno on error, or NULL if optional is true and mux doesn't exist. */ -static struct mux_state *mux_state_get(struct device *dev, const char *mux= _name, bool optional) +static struct mux_state * +mux_state_get(struct device *dev, const char *mux_name, bool optional, + struct device_node *np) { struct mux_state *mstate; =20 @@ -724,7 +729,7 @@ static struct mux_state *mux_state_get(struct device *d= ev, const char *mux_name, if (!mstate) return ERR_PTR(-ENOMEM); =20 - mstate->mux =3D mux_get(dev, mux_name, &mstate->state, optional); + mstate->mux =3D mux_get(dev, mux_name, &mstate->state, optional, np); if (IS_ERR(mstate->mux)) { int err =3D PTR_ERR(mstate->mux); =20 @@ -773,7 +778,7 @@ static void devm_mux_state_release(struct device *dev, = void *res) * errno on error, or NULL if optional is true and mux doesn't exist. */ static struct mux_state *__devm_mux_state_get(struct device *dev, const ch= ar *mux_name, - bool optional, + bool optional, struct device_node *np, int (*init)(struct mux_state *mstate), int (*exit)(struct mux_state *mstate)) { @@ -781,7 +786,7 @@ static struct mux_state *__devm_mux_state_get(struct de= vice *dev, const char *mu struct mux_state *mstate; int ret; =20 - mstate =3D mux_state_get(dev, mux_name, optional); + mstate =3D mux_state_get(dev, mux_name, optional, np); if (IS_ERR(mstate)) return ERR_CAST(mstate); else if (optional && !mstate) @@ -815,20 +820,23 @@ static struct mux_state *__devm_mux_state_get(struct = device *dev, const char *mu } =20 /** - * devm_mux_state_get() - Get the mux-state for a device, with resource - * management. + * devm_mux_state_get_from_np() - Get the mux-state for a device, with res= ource + * management. * @dev: The device that needs a mux-control. * @mux_name: The name identifying the mux-control. + * @np: the device nodes, use dev->of_node if it is NULL. * * Return: Pointer to the mux-state, or an ERR_PTR with a negative errno. * * The mux-state will automatically be freed on release. */ -struct mux_state *devm_mux_state_get(struct device *dev, const char *mux_n= ame) +struct mux_state * +devm_mux_state_get_from_np(struct device *dev, const char *mux_name, + struct device_node *np) { - return __devm_mux_state_get(dev, mux_name, false, NULL, NULL); + return __devm_mux_state_get(dev, mux_name, false, np, NULL, NULL); } -EXPORT_SYMBOL_GPL(devm_mux_state_get); +EXPORT_SYMBOL_GPL(devm_mux_state_get_from_np); =20 /** * devm_mux_state_get_optional() - Get the optional mux-state for a device, @@ -843,7 +851,7 @@ EXPORT_SYMBOL_GPL(devm_mux_state_get); */ struct mux_state *devm_mux_state_get_optional(struct device *dev, const ch= ar *mux_name) { - return __devm_mux_state_get(dev, mux_name, true, NULL, NULL); + return __devm_mux_state_get(dev, mux_name, true, NULL, NULL, NULL); } EXPORT_SYMBOL_GPL(devm_mux_state_get_optional); =20 @@ -861,7 +869,8 @@ EXPORT_SYMBOL_GPL(devm_mux_state_get_optional); */ struct mux_state *devm_mux_state_get_selected(struct device *dev, const ch= ar *mux_name) { - return __devm_mux_state_get(dev, mux_name, false, mux_state_select, mux_s= tate_deselect); + return __devm_mux_state_get(dev, mux_name, false, NULL, + mux_state_select, mux_state_deselect); } EXPORT_SYMBOL_GPL(devm_mux_state_get_selected); =20 @@ -881,7 +890,8 @@ EXPORT_SYMBOL_GPL(devm_mux_state_get_selected); struct mux_state *devm_mux_state_get_optional_selected(struct device *dev, const char *mux_name) { - return __devm_mux_state_get(dev, mux_name, true, mux_state_select, mux_st= ate_deselect); + return __devm_mux_state_get(dev, mux_name, true, NULL, + mux_state_select, mux_state_deselect); } EXPORT_SYMBOL_GPL(devm_mux_state_get_optional_selected); =20 diff --git a/include/linux/mux/consumer.h b/include/linux/mux/consumer.h index a961861a503b33a3ea18aee6a2eb044866aa8801..449e38e6e2c515b3dd2b51a8b8c= f0295a2520804 100644 --- a/include/linux/mux/consumer.h +++ b/include/linux/mux/consumer.h @@ -60,7 +60,10 @@ struct mux_control *mux_control_get_optional(struct devi= ce *dev, const char *mux void mux_control_put(struct mux_control *mux); =20 struct mux_control *devm_mux_control_get(struct device *dev, const char *m= ux_name); -struct mux_state *devm_mux_state_get(struct device *dev, const char *mux_n= ame); + +struct mux_state * +devm_mux_state_get_from_np(struct device *dev, const char *mux_name, struc= t device_node *np); + struct mux_state *devm_mux_state_get_optional(struct device *dev, const ch= ar *mux_name); struct mux_state *devm_mux_state_get_selected(struct device *dev, const ch= ar *mux_name); struct mux_state *devm_mux_state_get_optional_selected(struct device *dev,= const char *mux_name); @@ -161,4 +164,7 @@ static inline struct mux_state *devm_mux_state_get_opti= onal_selected(struct devi =20 #endif /* CONFIG_MULTIPLEXER */ =20 +#define devm_mux_state_get(dev, mux_name) \ + devm_mux_state_get_from_np(dev, mux_name, NULL) + #endif /* _LINUX_MUX_CONSUMER_H */ --=20 2.43.0 From nobody Thu Jun 11 01:57:32 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013024.outbound.protection.outlook.com [52.101.83.24]) (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 33A80401490; Mon, 4 May 2026 23:55:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.24 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938910; cv=fail; b=MW14/cyjVvahHhhqjPy950WyIM/trOLBUSvJiwMulXeihK4KuIUbUkqkicedPBUZX/QiFzLb6W7mW4AJwmrf68whQXVsn3tmx7P6QT2r9D+dDHqn82jgUaIQ7t7SWnTaaOBVOla6LsBQ5Qz5XHNCLpfBwFK3tNRQVDjzDst28bA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938910; c=relaxed/simple; bh=1HiUv0+trc1za3XLSQH1k/TbH953Ru8k8yGxJSEYBSQ=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=p8uedEE6rY3DcTXiy9jtHfWTpxFKtp3iL+SgRPXuAm9S7Dp5h4GYxJs9aWT1k35tQDFWJ9wKYReV5ND5FkFXg1UR6nWKVMzCNJKBt2rfiOc9qzXJGz8fguIFIyz6VXVIxeVZW0VaIFioMKpPpEYelDTB5z/c5i1eGjwGZdQtMBg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=UEketMk0; arc=fail smtp.client-ip=52.101.83.24 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="UEketMk0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=e3UIr8MTvR/p5U+919nJWUrK/yC8GciYicJDQz2yhlAiR5ZHJb8CdY6530mMOO9xVQVnRjFIbaKxiLfrZ/sxxHkPrDUi/ZdbJaqySsceF1e5RwqPeKNrVB3+Esu/+SBfcfw3oQUeyv/V8O1BBpk7an6XhYZgHG6VyECL/P2HEALm3iw3h3+n3zDgvmhg0D2dPaxwyygoXA16lxSHZRBPBsHfcuXoOrbC70srezEkKmySNAP8rW0gEdguhk0QD2DyTA8XKRg5zCP8jjZO2DmSmvbMDGnZzJH8gNCnZeX7coOr7ry95EoSBeB+jHxg1OfKZZPlJtNyaYGGOnSZdQW8wA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=oWciR1RUkFpvo9H8MSFSSxWxZU0aJyIRmPJw/52YmfM=; b=NiUMjbr96CmNx0TEfuDromJWYLVW4oCaFLOlgpJMERL18Hhx0nIQjr5I7DDn6i4x6+AxoaZpGsqqFtGCJstSSg0Qed7MoKkXqM0NUOzIbbR+uUSu3xGzsID+zYLpVmcmfd50NlV3qTbGHY89PtZuFTF9aygQHBHpdDp9+RcBhKMsv6ea6vpx05O9EmURj0Y1ARx+JmRHtQhlgnH9GUNK4qLdwA8q3UDWqW9gJHKaozU2XUyH/teNyPUJKVqvxOvVIrB9vS1UEXfm71i6mt7Kklx5dL2u+5ZryncKZhSdo8J1iHA0Iyk4z3tiZVa63koY0yAQ/oi66SjxXov68sJJkw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oWciR1RUkFpvo9H8MSFSSxWxZU0aJyIRmPJw/52YmfM=; b=UEketMk0GPi/uucZ5Tkos8zOPD8rDcxGo3cbAFXgbTX38hLoMQGhOB0kP/oSD2l+WKexv4ryJzI80BDpJg5Z92I0JiCUm0EI2hcm7anRun3q1y8M3og1+SWPN95s5+/SJ7jD08gTTCNNR0COzZ1i+4kRq2wemg6TPMplrM06A78GYt//5sHX//1qP7rvF6ZDo6NtevV12s+fS7RbboiLPNjET/jsgxjcObsDYIkd61EJECoYtvxUCPQwlEz+2kjc9/KPf8SClqwHXwPo3onD9DVUNNFb+/cvDuBP5qtWl030D2lO9hSA96fKNHohV67okBTjtuZg113BIbAbcKbGgQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by VI0PR04MB10511.eurprd04.prod.outlook.com (2603:10a6:800:23a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Mon, 4 May 2026 23:55:03 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9870.023; Mon, 4 May 2026 23:55:03 +0000 From: Frank Li Date: Mon, 04 May 2026 19:54:36 -0400 Subject: [PATCH v6 2/7] dt-bindings: pinctrl: Add generic pinctrl for board-level mux chips Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260504-pinctrl-mux-v6-2-8ea858ba3a5b@nxp.com> References: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> In-Reply-To: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> To: Peter Rosin , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Haibo Chen , Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777938890; l=4615; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=1HiUv0+trc1za3XLSQH1k/TbH953Ru8k8yGxJSEYBSQ=; b=4XQ35G6Fz2FqyHKysktasbkRI/Qn/bf6GRdqW92/pDxIzP+7boX6JSDLKmbVwN1kkMYuzvvuU dxXZ5eYA29pCTERzuikEiAnOWiE4moNSaexhy+YEeBm/2NZj1NZcUSn X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR05CA0055.namprd05.prod.outlook.com (2603:10b6:a03:33f::30) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) 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: PA4PR04MB9366:EE_|VI0PR04MB10511:EE_ X-MS-Office365-Filtering-Correlation-Id: 44710173-13a8-4389-6820-08deaa388f1d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|7416014|52116014|22082099003|18002099003|56012099003|38350700014; X-Microsoft-Antispam-Message-Info: Tx3Mn4pW0I3wSjG4N1AdtHKIjOfCQCS86FM5r7oTH6pbyPTC6hBOPgoqfJPXgG8wLeIapDiQ0KyCr7cLxW4YqjOkqf6i2QszjC2suJqN1T6ff9A6+LoF8Kstg7LV4ZDQVuFmnKKSr3l7ZVwcYiQIhdnIzu5H2A9/d0APFcCp41eJT2GUQENYWaWtqUwtOlJrp3Lcfn3EjB7gi6l3HooCt6vuQnh5C6xocG3vJu3ipkLMn/Q/KFWLnwIyJETw2gkIL1vWFhHcIsVCQkMF3m2iLvKBKfYVG5VAJ2p4hnZkdg3xqtjV5tGWZYs7ideaU6nAd5qdmO9LFbIuil9TioE2E005bC1pDPX3NkQr0OstzTHiaRw1Xr1vH+KNyve/5cj4P7vLxKJdUdLO0SqPSijJFQ3dY8S7uAuXapv4DBo8QeRkqOzFm+VShjZLlftgrJhyvM+13m3PtfGT+4g4DVbfqeMh8RKyvle8i5J9y8XmvsxOepT8gGL8UqCbwAc1WfVCqWUwnqcalPr8KohOeLexXSOzj6G46RkhHKUtzp439XT7/gnp8FT161O+oMQ/Ez3yqVoTY3+uTgH+869W027OB5UDdLflLHEa5+GYgRyvO1xRQ+093IBvvDgxFnicAyzMTA1UpyRNg1oHi9GEhZJkZUlVCK3BupYxYelIewtGYZrxUYQjHPTR0mO0Np+XI9oU+k+y/C69T10l8be9wSzEMQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(7416014)(52116014)(22082099003)(18002099003)(56012099003)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QzY3b1ZWSjBIREtsd1lxL2tVK3BNRXFZZ3FlQ3ZKRFB0Ynh6N1B2UE9INmRZ?= =?utf-8?B?eDI2d0w1UWYvRldzcU1QTXBsNDdUaXBMVnBNK2ZUYk8zQk40dTdGbmFLWHEv?= =?utf-8?B?TGJ5eVJUWXlYOUxCM1ZSTUdwUWtLZnFCWk5xcFFUVXNCODB6RVpNUWtuM2l5?= =?utf-8?B?Y3l3SExRaGhMT25WMDI4aDdzS0dXYlUrTUZ1VXRucFBSTXNOcFNMZ3U3dzYx?= =?utf-8?B?YXlyTytpNS9IT0FFdElnUTd0SEl5ZVZ2L1NOd3FNNWxkTnIyZTloRXJjY1JP?= =?utf-8?B?Rlo4eEtvK1c1Z09pcUFqdTZCVWpIcGtoaGliay9VMkRHWXY5YU95WWZXSCtT?= =?utf-8?B?SjJJcExEVERONHBTSUZoNlIwMXdzQ1htQXpOemY4eW44bjhYN3pQdDFFQkpv?= =?utf-8?B?Rkh0VDBYYWJ0cjVTbThCYVFKNlh0S2FLR0wzUDBhQ1hSQ3pLT1d0QmtFc1RG?= =?utf-8?B?R3MrYUFKcWJ3aDlPVXNQV095QndHV21COTdybmVWdkMvQTlYeU55ZFN5SEpv?= =?utf-8?B?V2JiKzVWNEFTa0czUXYxcXZiRGRITE9FUzhvclpRbUFxL01BMERQSGI3cFQx?= =?utf-8?B?Y00zV3cyQVVpZHY4VHNtUUg1NEZIajE3YXR1eHdZdlE0bTlQaHF1UVVUejRk?= =?utf-8?B?VThLNlFIMXdLRmhESUUzWGtwNmtzL0E3MGoxSmdVcFRMUUpuaWU4SmkwRWxP?= =?utf-8?B?eDI5dVR5Unp5VGlJNmh2WWFEQjFBRmZPQ3VRT1ZWcEhUMVV2Y3dNT1h3TzhP?= =?utf-8?B?Tm9JODd4U3RWQ3kxMUR5T2Q0eDByRy9RQmtUYVZab3JpS21QaEZPa3JPbVNq?= =?utf-8?B?cDVPc1lkMkovVUdjZm9aWStzUENUYm14c1F4elN5VENsS1paZWlhb2VmTDJO?= =?utf-8?B?cXV2OTZ0NXdUbHl5TTk2MEZNMitPVUNnQzgzNlhYbUJEWSsyYjRKNlVmM3pY?= =?utf-8?B?ck5kK2VPQWFFbVZ1Z0I4RUFFM0t2YXBscTBoeXpDLzRCdElpcXBWTlU5NThM?= =?utf-8?B?enlvdWhXNDd5QW5HZDRWWDUwd0E5aHk1aXQzcGpwWitNbzEzVU5SSktmYlJx?= =?utf-8?B?cmV6K0JjKy9OQnJwaXVLZ1pJK2NXRVVidkZleDJFTkdkcnhrcUkxazRRa0ZM?= =?utf-8?B?OGQwNktUNDM4K2lFK1MraUJGVzR2aldHUXJWSFJJclJSVEhvT2syL3ZFK28r?= =?utf-8?B?b3Q2QUF0RWIrZm0yZC95K1VVUERNQi9kQmhrdDNyRFVWa2tHRGZCL29nOXlk?= =?utf-8?B?N3Z3MjIyZElwTzNQNnBvc2EyRjlkS0pDRHdGRW9reE0walBkYi9lOE54MUpZ?= =?utf-8?B?N2ZsZ2hKRy9BYk1lYkZLVHFMVTN4KzFDTDlScFZ1MUlzVCtHN1IrNWpuUU5V?= =?utf-8?B?eE1zOWtEbkxqeFBuWEtEMTN6dlNOa2RQdjZ0aUM0YzZybG1ibWNhaVRxMWpQ?= =?utf-8?B?Qm1GOExtZXkyN0ZZcU9VMTNBb2tINVc2T3lQK2JVYjJQN3NFOUp6azJKeEJQ?= =?utf-8?B?L0txUGdzTjhwbEc4Zk9Xa2FvOXNWQWtHVDA3djRJNjVGb0Q1SmpzUzl1Qzgz?= =?utf-8?B?dkJhVEwvMXdxTXZGd29jakxVa0tvWDJyMTVaNldnYXRUcTZYSWZwUHBsVnJq?= =?utf-8?B?OHZxYlg5Y2dZSEdYTkgzQ1dZa3FjQVdXQ3VibVE1L3AyL0g2SHd6WHZESkk2?= =?utf-8?B?eHpKUXE0SnowcXRSbStJNXpDVXhNVnVsNHQvdERMeWplTmwrdHE3RUhnTklH?= =?utf-8?B?ajBRV0pWZHo4ejhPdjFCSkVrVSttQXFEVTkyOFJicER3QUlSNE1HLzBtbVNF?= =?utf-8?B?U2lFNTZmV2NzeXZ6S0RqTlUyNXB4NlVySnZrcWQ0MG5LeUVQZThPbHJQTyt6?= =?utf-8?B?SlVsUzQyVGJTMkxQbUYwZVdJZjJVRzFwMjJwT0VQc2NPRnhueEl4QlpFMFlJ?= =?utf-8?B?RVJVNW42NXpmbmFTdVRvMnVUQmhjU3l3Q2pqNDNBTk56WTJyU1RmQWUzOHRO?= =?utf-8?B?U01XTnFUMEtSK1lqK0ZxTEJiKzBHZWI5WjlseEplRUNweVBSZlEyWDRBNE8r?= =?utf-8?B?UUFmQS9VdmZTMFpwSFV6bFM3akNsQkNxZ05BaytPeUVDYmNlTDB0WWpPc2lM?= =?utf-8?B?dWpsYzRienNxWFJySkZyZ2xpbCs5bE5SNTJ1TUpqSEMzRm9MK0NzK3JUYUdo?= =?utf-8?B?Y25HTWVweDMzL3dWS2lGMW0zWnFvZzFZY1lFMWFFb0hKOEVTRWE4TDBPVkNX?= =?utf-8?B?dE5qU1doZ0VhZzZSbXR5dGlsVWVoaDdVOTNRaVBoY04ydGsyMklaa0NxVHNr?= =?utf-8?Q?ZWt80g19BZmN3+iNUu?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44710173-13a8-4389-6820-08deaa388f1d X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2026 23:55:03.0529 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UsqSnuWY+TnzE9B/F0wSkHClvfetvEOK2HJZxWJAfU/KoEYZZ37W+Bcb/wQtvVhSy2QWQELWLm6vma2+YRjwGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10511 Add a generic pinctrl binding for board-level pinmux chips that are controlled through the multiplexer subsystem. On some boards, especially development boards, external mux chips are used to switch SoC signals between different peripherals (e.g. MMC and UART). The mux select lines are often driven by a GPIO expander over I2C, as illustrated below: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 SOC =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=8C=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82=E2=94=80=E2=94=80=E2= =94=80=E2=96=BA=E2=94=82 MMC =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 MUX =E2=94=82 =E2=94=94=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =96=BA=E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82=E2=94=80=E2=94=80=E2= =94=80=E2=96=BA=E2=94=82 UART =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=98 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 =E2=96=B2 =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=B4=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 I2C =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=96=BA=E2=94=82 GPIO= Expander =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 Traditionally, gpio-hog is used to configure the onboard mux at boot. However, the GPIO expander may probe later than consumer devices such as MMC. As a result, the MUX might not be configured when the peripheral driver probes, leading to initialization failures or data transfer errors. Introduce a generic pinctrl binding that models the board-level MUX as a pin control provider and builds proper device links between the MUX, its GPIO controller, and peripheral devices. This ensures correct probe ordering and reliable mux configuration. The implementation leverages the standard multiplexer subsystem, which provides broad support for onboard mux controllers and avoids the need for per-driver custom MUX handling. Allow pinctrl-* pattern as node name because this pinctrl device have not reg property. Reviewed-by: Linus Walleij Reviewed-by: Rob Herring (Arm) Signed-off-by: Frank Li --- Change in v4 - add Linus Walleij's review by tags change in v3: - collect rob's reviewed-by tag. change in v2: - change descriptions for device, not for driver - add missed additionalProperties: false --- .../bindings/pinctrl/pinctrl-multiplexer.yaml | 57 ++++++++++++++++++= ++++ .../devicetree/bindings/pinctrl/pinctrl.yaml | 2 +- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-multiplexer.= yaml b/Documentation/devicetree/bindings/pinctrl/pinctrl-multiplexer.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2b0385ed879b70b24ca9c39b098= c3840d08d7482 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-multiplexer.yaml @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/pinctrl-multiplexer.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Generic pinctrl device for on-board MUX Chips + +maintainers: + - Frank Li + +description: + Generic pinctrl device for on-board MUX Chips, which switch SoC signals + between different peripherals (e.g. MMC and UART). + + The MUX select lines are often driven by a I2C GPIO expander. + +properties: + compatible: + const: pinctrl-multiplexer + +patternProperties: + '-grp$': + type: object + additionalProperties: false + properties: + mux-states: + maxItems: 1 + + required: + - mux-states + +required: + - compatible + +allOf: + - $ref: pinctrl.yaml# + +unevaluatedProperties: false + +examples: + - | + pinctrl-mux { + compatible =3D "pinctrl-multiplexer"; + + uart-grp { + mux-states =3D <&mux 0>; + }; + + spi-grp { + mux-states =3D <&mux 1>; + }; + + i2c-grp { + mux-states =3D <&mux 2>; + }; + }; diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl.yaml b/Docum= entation/devicetree/bindings/pinctrl/pinctrl.yaml index 290438826c507ec6725f486d18cf686aa7c35e67..20176bf3074757de30f208e69b9= 68a6bd6125273 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl.yaml +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl.yaml @@ -27,7 +27,7 @@ description: | =20 properties: $nodename: - pattern: "^(pinctrl|pinmux)(@[0-9a-f]+)?$" + pattern: "^(pinctrl|pinmux)(@[0-9a-f]+|-[a-z0-9]+)?$" =20 "#pinctrl-cells": description: > --=20 2.43.0 From nobody Thu Jun 11 01:57:33 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013024.outbound.protection.outlook.com [52.101.83.24]) (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 3F0113FE66B; Mon, 4 May 2026 23:55:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.24 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938912; cv=fail; b=hzKfxUyknV6ik9ZCjkFyfknChUW7bJ7Nmb/M0dJP6Bp2SOSd9Mc7mEwP8dSQSWIZ1e5iTQ3kjWlx3V4WQPlEWZVxKB3huj6z7I5tFbzS9n/tsNAmiXEaHU3BYlx7eeALNV8KOeItyXmZT/4IWOv3m3l2nScv3ut6x+xCh13MsKQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938912; c=relaxed/simple; bh=Ne5myiBC/j77BXJRI8difB227/9SIT6XkOyj+wtHv0A=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=SkriI32Y126vPxTrKYjs2AS1fLPwY8lxszXTgZbhgAnmkVo3Gc4e2b2xJkOUSIC8eybaK/YehSV4rGNYoEgyh5c4DdCBOSLLEr4JGqaDmI5cHL3+icyZJMKuZwBn8AtMRT0oMhn+wBEbZSBGYOT533sYJYndpV+EakA4yKh2RQU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=VJMiR86W; arc=fail smtp.client-ip=52.101.83.24 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="VJMiR86W" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k1Za/qah4N7L+sWSYKbPb7IlHLIKXCqVnUGqMhr2sj+fOzgH9AcE3DAJdDPJJT2qv+nKGuOaExidQiQyeM6cFyPgblxT2ksqCtT4lrOcy+4FyUIvvSQsgJtrX43TARuOxq7O6iLG5A4RwjuuFJ8Lif7YG61Ounpy06uMwq3YdRAvY1xkRvIVrCVdw88kuOLrG2IjbMXi2XoDjd7mFItApO9jkJfi5lIVMZZPqo0oBCQfoHUq1hiiqLlW5vkSQhvVMJxUouEkiPcudfGp3crnWOdBSk3JvDIc6fq/KTTPotS3NrZ6Zte6+ExBoVQ37KHU4p0mouTpbCRn/eqydQn0hA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Cko1713CzWnElB54NmdrqyOXLozM6MramZtLJt4T+OY=; b=I9FQGQAuY4e6JDbNkF8ZhKrfH32UkxFYWzpNk4Tg4MsaYg8YSkBbdXlOpPAjh6PdewZ9n/09MSr2dI5IDDbKmbX4drWajPCmxyjAcl4iDNMsaoBGghFGNlAL/I6JV8069s5IKToLgy8SQFVeMNCtMcknjRcAFKmxY5oF7cpnmFl0MYt8e/4pXshGy72qaNioTMj47vBD91eQyej6Ugc+LAaidGVZjuGVWYPRbMkNxQ3aoY1irGdzPziTc2mNDgDAYB+PTvRvckY18DRpU4DMHdOcP0P0gDvhHDBUTSHnsQEkZEM6AQ9eaVEQl7iA45JBk8p7cLLBV5IQpeajWliv/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Cko1713CzWnElB54NmdrqyOXLozM6MramZtLJt4T+OY=; b=VJMiR86WTUxmyeRzI5Yx5QgvkZ13lgETTksxFQCAiB99FohJ99VxBmKL6nQKMe86NQORlzM+c0UNy4CD0/APdBoRGQptqoLg/npCHE870O7JNLABew3zn4MzFM9d+wJXZhSa7PIspEHkBpXCdwEunhxpHZHWmmbpHCkxDPgUWYui7ibFj0SaGUvUrkyUjRLxE6/I39g91T3z+1w1DvihL//6WxiNNBS5j281qFe9HybBSYv6QBUx8nKL0j/ZiP/9QaJEJHFmaC4CMT5w9cF4uNlz8jLAv3T9Yd7oehKslRWHp5479akfqBRebr3SxoUD942VAe/xPs6utKDOy2aKaA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by VI0PR04MB10511.eurprd04.prod.outlook.com (2603:10a6:800:23a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Mon, 4 May 2026 23:55:07 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9870.023; Mon, 4 May 2026 23:55:07 +0000 From: Frank Li Date: Mon, 04 May 2026 19:54:37 -0400 Subject: [PATCH v6 3/7] pinctrl: extract pinctrl_generic_to_map() from pinctrl_generic_pins_function_dt_node_to_map() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260504-pinctrl-mux-v6-3-8ea858ba3a5b@nxp.com> References: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> In-Reply-To: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> To: Peter Rosin , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Haibo Chen , Frank Li , Conor Dooley X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777938890; l=6610; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=Ne5myiBC/j77BXJRI8difB227/9SIT6XkOyj+wtHv0A=; b=75eX8B8lk/jZU3LoOA9tQEjkeKyN5u4jEdHgBsP8/h+6ezktQrymogOlQCSOCpRJ2Gfojxw0H EupEow+J46rA7jpm5y8ikyzLcFQYdFr3sjCpYTTYxznm3tM4RlPxd19 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR05CA0055.namprd05.prod.outlook.com (2603:10b6:a03:33f::30) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) 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: PA4PR04MB9366:EE_|VI0PR04MB10511:EE_ X-MS-Office365-Filtering-Correlation-Id: 17c39662-dc8e-4c76-4957-08deaa389199 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|7416014|52116014|22082099003|18002099003|56012099003|38350700014; X-Microsoft-Antispam-Message-Info: wboKdCNmRFsCVm2QlwOfTHuDHxrMgzzsgDlWWugrOStxMavlpzcI/D2+C+RTlRD7BbroEz7CPmndL5F8ji0Sn1QwnLOgcOQLqipFbwsvSKqhdkjvJb92VbeqFYkOlqafWKhoLVf58kZ1u1CqR6TscyR/N5rXay1Q7rriO6dZ+i+i8BRL2oZgzGsKcWQjL3pbmiPC+idd9KKYOzJ/SC5Aqk5/w6OJv7Kub868uVvm6uby4u+u83w6+S5Rq+P/0VYtyyGsXrgGDMQsMCNUJ2Yeo/CtzO1W6rm3QD9vuCAttwOKVl9D/OkX4GQcpA+1i16FCKfLSCgL24sP/LdvX0jh8HQjWVajyL6qDIQ377oOVjNISjzxMcLJnVB+XPHqJClgILcj+YyIpmLUt5NiqcLirlSKRKslm9OvU+QlweM4iZX9et3NsJnpELcCySqbchETz6xxJEkYBbOBxvXF8+8O3Ar25hN7h6l76D+f7rjzw3BhSc+zgW33XMyBZnyBpzY4/vTCsY/TrXDr4M6gw49PlEGjr1khnGSOrxMQLIEAzMJMCt7BnQ4VKJRkjldc+GFgi4rc/a7AWXdPibpIFmVBDzNrZA6+lBW/QQHBY0xkfRbINN7DeYGCZZY2PzFBoZZ4i+96Tm6VVMv0n0gd8viBlOlWhfCeZKuROIpqtibQvXPDzEBQaTR+iuCz0ALmrphuHzs/lYNiMIYUXHq75udcw9/3lpeYQikqvOwqwlaJj3P1OnicqPb6EkMURMJXHiX3 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(7416014)(52116014)(22082099003)(18002099003)(56012099003)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SHF1VnNCOE5XZUluZjRoMFJhTkhVd2ZJTlFQNWNidWdNdU5hTnFYaEpEaWdJ?= =?utf-8?B?V0ZYeU85MTRVQjVLVUVsTzFPeVR5SVZGQ2FuRVhqZE84WmZmcVFiTXJSRnpM?= =?utf-8?B?NGIySC92S0JvMVl5aFhCUVhYUjB5M1FLU0ZsaG9FMjEwZWRuT2VQVmlvb2JP?= =?utf-8?B?c25BU3M4Z3c4RzlLY1RjVjhGaXVEUnlOMmw2NTFoYnNDd1hxdG1lZWVONjM3?= =?utf-8?B?R0tRRTY5a3g5ektPMXlSSHpRSys0eTUrUDNGQ1ZQekdtRUNZcHJHZjdPTTd5?= =?utf-8?B?RWRXcHRyazEzVTUvdXlGMzNqYkJxcVdVbjdRNlV6cE54REs4SzNzL0FRRmJw?= =?utf-8?B?QzlaSkZ5WkRkRHNYNk8rOGZhUlRKakNJZkdGUFZMcnVNWTVTRGk2UkY3ajly?= =?utf-8?B?UWNLOHFaS2U1OW96blo4MmZOOTFmRC9LNnErQU5Za0ExQnVsVGRVT3grVjhp?= =?utf-8?B?MkJhRloyMU5LQU9iOXp2Z1ZuYzBuVk5yTVZxWGM0Z0UvS3dRYVhNZ2ZXVThG?= =?utf-8?B?N1pxalJZcHBBaTl3K2N5UnVrcVFua1BGU1ZMdFBlYkdmQmJwU0djMUVYWDQ5?= =?utf-8?B?Q0xvaERBeFdxRDgzWEFGcVZtcFh6OXgvdFBUUjNVbEFwZENERUpIMVJDVUNN?= =?utf-8?B?MkVwQ1dpTlR6VXpvZElHT2FEeDlRaEE2czZRSmhJYnQ3d1ZqY09xMndSaEx3?= =?utf-8?B?cE1HdU5aOXlvd09aaXF0R2FHOHJYZjVOb2d3L253UzQ3S3pXNi8rajVaZThX?= =?utf-8?B?YW83b3o5YytSb0FFQnQ3SVpRMmVyQkR1L3pZbXQ0ZjZoZXRrRFFUMklTY2Nx?= =?utf-8?B?NkZCRys5bFVGTDM5Vy8rVFRLRGFVY3F3YTZ4U0ZVZWRhMWI5N0FDN2RnYjN5?= =?utf-8?B?dDBFdWRTemFsRFZpL04xNVJSbDdTM1E1ekw3UnB0OHFHb25Ec0hxWTBDZ1dX?= =?utf-8?B?NitDd0ttNkNnbFBEWGl1N3M3NUVvUUQrM0dPQStGeUdwdkxkNjI1SDMzZHd2?= =?utf-8?B?bTVBZk1rQWVsdnRBaDJTVW95OWRySWkzWW5yeDBRTGxTdkhnemRvQWpaUzdV?= =?utf-8?B?QkdtTGFtc21XRnpvVEhINlZUZlZoZXlsdHhpZnBqYXN2cFBPdm9hNVRrckRy?= =?utf-8?B?TGt3L3MxWFU2c05JdEt5Mnc2QXdUMDJzZGFtVzJLeGQ1Rm1MZllsZUNXb1Yy?= =?utf-8?B?OEFqdDJsa2pBSFRiZWRxTUFXVUdlUnRlQlVndkt2am5IUm9EejJhVk92NlF3?= =?utf-8?B?SG1RT2pFWWRKUlRiSncwYkJLaHZ3UXZuN2I5Rjl3VTVvbzZjTi9SdXd3RWlT?= =?utf-8?B?MzltVjgyZTNBcTYrYWNaQ0N5ZUVkTk93Y0NMQm5KSHR5VXBTMkpVU2trSnNn?= =?utf-8?B?MkZDdjRkN0FWbWRnR0UzZzlKUlpiZU50OU10RkEwSWhpNWtNVmNYMW9ycnlx?= =?utf-8?B?NHAvU3NxWFBWREYvMWpaS0RZRHBXL1FobE94aFVpM2V0TnVwaEF5SkhFYlc5?= =?utf-8?B?Z0MrZUpPT1cyUTFjcjBKUyt6eURGbEs1TlJleTZGSW1Fd3Vtam1McGFPcDJB?= =?utf-8?B?UmlUa0FwWTgyM2NCRzlHUnhmdkkvdnlmdVpsV09iR0RFWnNkMGJLL2lHWkRT?= =?utf-8?B?bXhjNDV2M1FmUU90K0ptMERzQldrT0x2UDh5VytrUDBLaUJmdExnUWNxWUVp?= =?utf-8?B?R1VEWVQ5algvN3BJMkVHRkhQVjQ5Si9WdndMT1BtYVEvMmd6NFFBemdxajdL?= =?utf-8?B?dyt3NldFRVBaMWpVYW5EeXVYZ2M2TEhqdi83cmpyckQzaHJUNWJCMWF0d1ZQ?= =?utf-8?B?cnZZMVY3SmVqS1FjNHFZY29vTllYM0UvTWJEcURQd2VOSGNTOTlHVzd5ZGlS?= =?utf-8?B?c1h6VEI4QXZ1dmpKQkFQOTZyVEFGaCs3eWx1dGZFVWM0ajRMbTh5SjZndUxV?= =?utf-8?B?K2dXOXBBVDl6QUNvWnI0dENubkYweU9oTVdSOXViS1pVZThxL3E1OTl1WnRn?= =?utf-8?B?cmhWOVVBMk1hK0tkQU1ZL3BqYS8rRktpY1hOMjk5a2dqdVNMYmFKTlNYY0lq?= =?utf-8?B?ZGpxYmFaRlRURkRoQXpFNUtNL0VYT1Z2TkdkaWwyQWJ3WWRFTkIxVVlUdUVv?= =?utf-8?B?emtzSVV4VXdEejl3QXoxcmtyRGY4bmVLV2J1NE1qMnErYnZiZTYyRWJEejRV?= =?utf-8?B?Z2FKSFpKVi9oSHUvNDJseHNNZkJKREVGd0x6UUNQRktnVG1RdWgzakNZRlBM?= =?utf-8?B?aE5RTlcxVHFGMk5sT3ZQY1krclNOYnloSFAzOG1tSHNENURoY1ZlOFliU2Nv?= =?utf-8?Q?4EaCYWFWETAS9VPnek?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17c39662-dc8e-4c76-4957-08deaa389199 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2026 23:55:07.2012 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: AvqUrYgW5MyfUjEGxPf4UTXt72sp1jjbKQjMqt5dnWZmM0Jp97Di/icZgLh4ykL9w00R8TJsbOcuthrGEudXRA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10511 Refactor pinctrl_generic_pins_function_dt_subnode_to_map() by separating DT parsing logic from map creation. Introduce a new helper pinctrl_generic_to_map() to handle mapping to kernel data structures, while keeping DT property parsing in the subnode function. Improve code structure and enables easier reuse for platforms using different DT properties (e.g. pinmux) without modifying the dt_node_to_map-style callback API. Avoid unnecessary coupling to pinctrl_generic_pins_function_dt_node_to_map(), which provides functionality not needed when the phandle target is unambiguous. Maximize code reuse and provide a cleaner extension point for future pinctrl drivers. Suggested-by: Conor Dooley Acked-by: Conor Dooley Signed-off-by: Frank Li --- change in v6: - add missed EXPORT_SYMBOL_GPL(pinctrl_generic_to_map); change in v5 - add npins in pinctrl_generic_to_map(); - remove below line in pinctrl_generic_to_map(); pins =3D devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL); change in v4 - new patch --- drivers/pinctrl/pinconf.h | 18 ++++++++ drivers/pinctrl/pinctrl-generic.c | 95 +++++++++++++++++++++++------------= ---- 2 files changed, 74 insertions(+), 39 deletions(-) diff --git a/drivers/pinctrl/pinconf.h b/drivers/pinctrl/pinconf.h index 659a781e20911db4b27c7c3663c31fbbbf57c521..fa8fb0d290d1d97ba9e19d6a341= a9b14c485e08e 100644 --- a/drivers/pinctrl/pinconf.h +++ b/drivers/pinctrl/pinconf.h @@ -172,6 +172,13 @@ int pinctrl_generic_pins_function_dt_node_to_map(struc= t pinctrl_dev *pctldev, struct device_node *np, struct pinctrl_map **maps, unsigned int *num_maps); + +int pinctrl_generic_to_map(struct pinctrl_dev *pctldev, struct device_node= *parent, + struct device_node *np, struct pinctrl_map **maps, + unsigned int *num_maps, unsigned int *num_reserved_maps, + const char **group_name, unsigned int ngroups, + const char **functions, unsigned int *pins, + unsigned int npins); #else static inline int pinctrl_generic_pins_function_dt_node_to_map(struct pinctrl_dev *pctldev, @@ -181,4 +188,15 @@ pinctrl_generic_pins_function_dt_node_to_map(struct pi= nctrl_dev *pctldev, { return -ENOTSUPP; } + +static inline int +pinctrl_generic_to_map(struct pinctrl_dev *pctldev, struct device_node *pa= rent, + struct device_node *np, struct pinctrl_map **maps, + unsigned int *num_maps, unsigned int *num_reserved_maps, + const char **group_name, unsigned int ngroups, + const char **functions, unsigned int *pins, + void *function_data) +{ + return -ENOTSUPP; +} #endif diff --git a/drivers/pinctrl/pinctrl-generic.c b/drivers/pinctrl/pinctrl-ge= neric.c index efb39c6a670331775855efdc8566102b5c6202ef..e4cd16ce2bda379ab0933acda78= 2d02ba1ed2e1c 100644 --- a/drivers/pinctrl/pinctrl-generic.c +++ b/drivers/pinctrl/pinctrl-generic.c @@ -17,29 +17,18 @@ #include "pinctrl-utils.h" #include "pinmux.h" =20 -static int pinctrl_generic_pins_function_dt_subnode_to_map(struct pinctrl_= dev *pctldev, - struct device_node *parent, - struct device_node *np, - struct pinctrl_map **maps, - unsigned int *num_maps, - unsigned int *num_reserved_maps, - const char **group_names, - unsigned int ngroups) +int pinctrl_generic_to_map(struct pinctrl_dev *pctldev, struct device_node= *parent, + struct device_node *np, struct pinctrl_map **maps, + unsigned int *num_maps, unsigned int *num_reserved_maps, + const char **group_names, unsigned int ngroups, + const char **functions, unsigned int *pins, + unsigned int npins) { struct device *dev =3D pctldev->dev; - const char **functions; + unsigned int num_configs; const char *group_name; unsigned long *configs; - unsigned int num_configs, pin, *pins; - int npins, ret, reserve =3D 1; - - npins =3D of_property_count_u32_elems(np, "pins"); - - if (npins < 1) { - dev_err(dev, "invalid pinctrl group %pOFn.%pOFn %d\n", - parent, np, npins); - return npins; - } + int ret, reserve =3D 1; =20 group_name =3D devm_kasprintf(dev, GFP_KERNEL, "%pOFn.%pOFn", parent, np); if (!group_name) @@ -47,26 +36,6 @@ static int pinctrl_generic_pins_function_dt_subnode_to_m= ap(struct pinctrl_dev *p =20 group_names[ngroups] =3D group_name; =20 - pins =3D devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL); - if (!pins) - return -ENOMEM; - - functions =3D devm_kcalloc(dev, npins, sizeof(*functions), GFP_KERNEL); - if (!functions) - return -ENOMEM; - - for (int i =3D 0; i < npins; i++) { - ret =3D of_property_read_u32_index(np, "pins", i, &pin); - if (ret) - return ret; - - pins[i] =3D pin; - - ret =3D of_property_read_string(np, "function", &functions[i]); - if (ret) - return ret; - } - ret =3D pinctrl_utils_reserve_map(pctldev, maps, num_reserved_maps, num_m= aps, reserve); if (ret) return ret; @@ -102,6 +71,54 @@ static int pinctrl_generic_pins_function_dt_subnode_to_= map(struct pinctrl_dev *p =20 return 0; }; +EXPORT_SYMBOL_GPL(pinctrl_generic_to_map); + +static int pinctrl_generic_pins_function_dt_subnode_to_map(struct pinctrl_= dev *pctldev, + struct device_node *parent, + struct device_node *np, + struct pinctrl_map **maps, + unsigned int *num_maps, + unsigned int *num_reserved_maps, + const char **group_names, + unsigned int ngroups) +{ + struct device *dev =3D pctldev->dev; + unsigned int pin, *pins; + const char **functions; + int npins, ret; + + npins =3D of_property_count_u32_elems(np, "pins"); + + if (npins < 1) { + dev_err(dev, "invalid pinctrl group %pOFn.%pOFn %d\n", + parent, np, npins); + return npins; + } + + pins =3D devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL); + if (!pins) + return -ENOMEM; + + functions =3D devm_kcalloc(dev, npins, sizeof(*functions), GFP_KERNEL); + if (!functions) + return -ENOMEM; + + for (int i =3D 0; i < npins; i++) { + ret =3D of_property_read_u32_index(np, "pins", i, &pin); + if (ret) + return ret; + + pins[i] =3D pin; + + ret =3D of_property_read_string(np, "function", &functions[i]); + if (ret) + return ret; + } + + return pinctrl_generic_to_map(pctldev, parent, np, maps, num_maps, + num_reserved_maps, group_names, ngroups, + functions, pins, npins); +} =20 /* * For platforms that do not define groups or functions in the driver, but --=20 2.43.0 From nobody Thu Jun 11 01:57:33 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013024.outbound.protection.outlook.com [52.101.83.24]) (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 336413E639C; Mon, 4 May 2026 23:55:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.24 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938915; cv=fail; b=IEKQWYqMo8MprNx2sZ2uUDEdFeG7RsQ6vYKHUg62GUpldpU2pyFcezyUEsPlTf66xYDspf7adhMJS9Bndym5v5Vy4BEuF6hache/Dt1CgHTC/ZWmew1sMoAVd3pTXJi4gbu6/sl1Lx8ktG86s2cVBkmO/nbR3KtkdVnKH5ezIzM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938915; c=relaxed/simple; bh=84YFQG/s33y4aWmdQnO4NG1npAXRpP23tH3HW7BHAtc=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=O/0caMwDeVM6JL1iBkKBNvN4LqujDD78xzLnM57D/Ojf/YVu7FXnXyGEI3nD3SPyMeSyPGo9noMx9Zb+VKQCvHcPIwjwMR9LWC1xk64ON7RVGC4ZdMk8IO1eszXi+RIaGAuMXP8lRrojMqc3HAs5UG09c5ZKpW01DyfiP/HLW1g= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=D+hmFR4m; arc=fail smtp.client-ip=52.101.83.24 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="D+hmFR4m" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=T+Zt8ebFxgFhDbbMH/wvGXq+27irTTM/+EY3bmOd5OscCEUrq78O/3P5X3cGWHaPbXBXg2dPZy6yTk30Uq6vEUo0Hhlw/OB/phKjO7yUt76/bD3on4kt7YvzeHIQKGfsvPosBVIoo6O2QgLxJk9Xhb3brxYyVMN1qGlk+mPO2fZLddHWyPPD69pooII1guY21WZdrxlg9HjZ010Qnqg0FXY6aRFZmddh7EqT6mHDiN5Zs1IGpU9qEofBX9SE8UP9MGnTwq7Kt7mmTyZ1OMpkQoQ6X4LyxxyLt+RljN/uyNSY+2hyYFkgaCztflNRUajs++q3Gb4zWYwn1yRK6Jqg6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=EomKscOACz2EiMfHyFMhDh5ukwxhM8VLlPUnGrNoojg=; b=gV7vYx2ivoI+McftI0kZqDu3i6arhKAUowo0pDu9hNBQVOMjowWeO5lVSBGtpm5GTSKdq7jlRgF9PmOZwM8EoCrvdD1IgEsWwX0nAx8ovJuGHa/iTsDIJQ8DZbrsW1Ruv5aIY4dMPUkYBN4zO2IlmF6EM9ri6uVY10BTOs8dQ0lu8CnYbY1ER/r57IbeDtEH0ANDEc9bjybOxE1NCwNEyN0xDUMR5oxnHEH0EObOZe5UuAmew7WExXKugW0sBfgRGgKD7JJ6o3o56A9IgdvWdz9KWozvWsanv6NEodGEfT1Wfy1t0dBvdth30hQpwc6Oysc64eoTbJHpdYvoLppZ5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EomKscOACz2EiMfHyFMhDh5ukwxhM8VLlPUnGrNoojg=; b=D+hmFR4m3SFR51UJYtjtseOfU3+ol8LqXT7Qp27kxbwT+gs4vfb1Q/jVLAglSPVII92rJtANjw6ZBaAEtRqBe+wxZhVdQIhP1jMA1AyCANGI+yID8q8N1acW02xPP7IkH92PJqQGpu2sdL5QKCku9emJTFo9vae+68tHrtdhNtldrjKy/rbIvMto1DQUwsC1WJV7oxWDPGy07MNd/5YLE8Py0nYR6F9pXHfa8WwffmLnWgrRhX6AKmyaFVikn5oly8uozcGXm5z8EGGiJ3TVL1MEoDV1BU/CknGO+7YZtNSCyY8SKHzeoftf7hSlB0cERgOsWqk7pnE4eLkwoXqnbA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by VI0PR04MB10511.eurprd04.prod.outlook.com (2603:10a6:800:23a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Mon, 4 May 2026 23:55:11 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9870.023; Mon, 4 May 2026 23:55:11 +0000 From: Frank Li Date: Mon, 04 May 2026 19:54:38 -0400 Subject: [PATCH v6 4/7] pinctrl: add optional .release_mux() callback Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260504-pinctrl-mux-v6-4-8ea858ba3a5b@nxp.com> References: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> In-Reply-To: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> To: Peter Rosin , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Haibo Chen , Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777938890; l=3409; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=84YFQG/s33y4aWmdQnO4NG1npAXRpP23tH3HW7BHAtc=; b=ZNif8LYzw6sfNjrLUp6HxjV4wEkvA53n9bWZZ015/e7YJK6cQlbsmdauFqYJeNovkEjOkA/QU 1xZ1kul197/DKEzSGEz99UadUgMbd722CUSPxHmqn1m8zb+K3UEyWrH X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR05CA0055.namprd05.prod.outlook.com (2603:10b6:a03:33f::30) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) 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: PA4PR04MB9366:EE_|VI0PR04MB10511:EE_ X-MS-Office365-Filtering-Correlation-Id: c38a308e-47ed-4ddc-c98b-08deaa3893f4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|7416014|52116014|22082099003|18002099003|56012099003|38350700014; X-Microsoft-Antispam-Message-Info: VetczPRITw7sCSirumw2TbQL7IjkI+H0agylI+6YgPHPDCQMOkWSK6ifyHaxl6kAGKRU84zRe1uPhXOsp5zzXIsJg7oXeWusx8yz8FJvfJL8mvQ+rktl1+kEuCWNLWuBe4B+9FeQLJK/5INN1N6W4yzyHPOqMFgq2PMhmwMZV7jCHfbsw7yxjQ8rW4/cRe9uyIebOOJVD9ShpZlbDprDgcVrqVWe/ltfXghTFGbE0D34bbHEUQDgAmDffMimOhvuXxMQ4YKhXq3a9vzPhGUWbsbReC3r9EqTkrwz/qVXV7r+LDMu95yQzWSAa34H0K6l6BlwDirvH4rkwf4AJJCwU34STkjXHmnk0nI5lS/du1JPnLmt3IOlaA4VlWg51aL21tJlUyRxpZeFgdkT1VUaql/qT44t17qOQiTqY9QlBGrEaB4WBqgc3GE7zvffBC5POmkiprmQUzUwhW4pIfdvftzuoYbukcB46UWfkvPXmWhGZrj8ITfRrxIHwF8jQkzLToAgehhsykjGESDz4JkP9Q7mNZbeK3TI5ynNsM50UQVfb2NmCtbqQbxS0V5sliyC1+wQXD9+VkbioGjiIOVi4p1VCyckDsTPIP9TDzgWlv0omJyOCn1XHBjcuSXahEjxMpLk70BZGdJtx3+0IaurhGHL8++4GsA3u75SUufBe40pYtRlekFnKvR+nyobfBkwoOfC+8LWzn0Gr+k4GAraN4mu+V2/kw0GKQXMJ6B2AjMIUgallM48GdczGEowb8JT X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(7416014)(52116014)(22082099003)(18002099003)(56012099003)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZWFKdlFUekJUWW5Hb1VuYWx0dXVaalhibkg3aDNidnZqSWpSeFhOSk9CdVJh?= =?utf-8?B?aVpWQzdBd0haU2poV3FFR1hBbFJlekt2N2RNTnI2MkZ1MUl5N2pIcmZycU4y?= =?utf-8?B?Uko2NWpHaEd6ZW82UlZnbG1GTk1yR2dnVjhlR2JCSnFJNjJpaGsxRzI2KzFs?= =?utf-8?B?U1h2VHRSM0FYN1hJVjJDakRsN1hvbnBoVE0vc1N0N0o3OFBReDBST3lpV1RO?= =?utf-8?B?ZUR0MEprSGJvRTNQNFJSWGN0bytTREdqWHNPUmJMckpUQUdRcGdYZnZRR0Vk?= =?utf-8?B?YW85ZHJ6bGtlUjBOWWVVS2hmOENTVVRqSU1XZHZ5M0hsMG85d3BQUm56Mkx5?= =?utf-8?B?UHZwTnhueUtlR20zeFhzVE10d0w1TnFRMG5OeW1MbkIraHBxejVCd2djc1FR?= =?utf-8?B?Y25FMm9tQkVkbUtxc2hETGRLRUJCSXVFV29UdDljTGdEQmdRKzJZVUI4ZWZN?= =?utf-8?B?ZThpWXdaWitwT2N2MW9OMU8yMnY1QnBXUVNXTmFSbmoxd05vWWxjaXR5WjdO?= =?utf-8?B?VzZ4eDlYZGVPTVd3SUJLTDZVQnAvT1h0dFVyMWFIZllmUVhoSXN0WFhmZFd4?= =?utf-8?B?YmVZNjRlWXB3a1pYQmV0a0tjTmFxZVNSbGRHVUpiWXJhMjZjREpvazlhUjcz?= =?utf-8?B?L01ZalJkbG1NRGdiL3ZlVEZzT3dTNUhkU1ZPUEN3MDJtLzdja2VoUldwWkZh?= =?utf-8?B?TlhGMXhEb3hUOWZaWG1MSmJGOXh2eFJKSTRabGN0UWx6RTZsNmYxYkhtQTl3?= =?utf-8?B?dTJ6YWVMa2tmOXJQM1ZQdGdKKzZxLzd5aGpidm5VMEJXV2hwZFBwK09zR1g4?= =?utf-8?B?RFVMOHJNeExIQWY0NWpQc0dRc1BxcDR1a0UzVm5HQmZzaHluTHBFanB6VTVT?= =?utf-8?B?QUpnbCt3V3AxdVVucVpuMWt6UHRQQzVybS9lTWdUVGMzLzVwVDlQSDBPZjE3?= =?utf-8?B?Z3FtTXFUY3Q5QzUzdVlYT1A2c0R2TFkrREFuOXN4MjVjZjNWblhjK0svOEFn?= =?utf-8?B?QjhrQ2t3NnVrMVVIS2FhcFVhZTNZVHRnbDVZdjNSWUFlTTRJNmppVVBuV3JE?= =?utf-8?B?V1BuSnJHUlp0OVJpTTgxaGhjcGMvNG91WXN0eTg3aWI5alNHVmp2a3pmeUNw?= =?utf-8?B?RWdoV3NEc1Bva09aYU8rZk5tcXF0ZUxVdmVnOUJQQ2U0WndiUmk1UUhvTUtq?= =?utf-8?B?Yy9XN0xIaFlwTXRSRnVITzZSSWZ1N2MzOGFhTTVyaXp2OVg3UXlqc1FaWnI4?= =?utf-8?B?dTlSUEhVZ1Y3VS9rdTVTZS9kb2lqamhqRzB1R2taUlpURUliaDRlRS9iSE1z?= =?utf-8?B?bUNWZy9jN3B4ZGZtRVBGZEpLSlcxVkN2Q3UzWDFPR015aUpaby84UUcxMGUz?= =?utf-8?B?ekVMbEREbEVIaGVmTENYV1BJUlN2V0oxdVZ5Tk81eVlNRXhBRnozL3kydEFL?= =?utf-8?B?bzFnWStOUWpWbkZiQnVDdHNSeHhMdm9WdUQxZUdXSXZDVFRoWW11OUlnaGMx?= =?utf-8?B?d1NLQ3YyMWJ1eXRKNjh4aVoxSHc0ZjhCcFQyZ0Vkd0g0WFd6czIyNXBrN3Nl?= =?utf-8?B?RG5Uclhpd1c0ekRPQkNkMTBpeWlPOFdnNkZTWkRQVHlmb1kzRVZYbGxUQzJF?= =?utf-8?B?M3BjMFg0dDV5bm5Vc3g2ZW9taUJQaHExdmdwajZMZDVFVTJLVmcvZ1RHdVVj?= =?utf-8?B?RXZvUStWbHlzRVZ5L2oya2t5akZuZDZBb1J3VCtTTWR6VGlaQ2VpVUd2Z244?= =?utf-8?B?NkM4U0d4MWNrNEJsSW8yQlc3UlR5Slg5cHlNcVlRNnRTWTI5dXpkdDJSaCtq?= =?utf-8?B?OFZjT24vUG14cVVHZWtjaXl1c2VlcDhkZXAzYzBoL05Ib0hPRHN3RVU0eU41?= =?utf-8?B?MldseWJ6cE04Q3ZMSW5zbGZndzVCay9UcnNnOVJpaXI2R3hPeUtGMVlDQnc5?= =?utf-8?B?akhxYmh4Vm0zV2hQUG1hK2M0NG5jeFVKL3FhUVpMYjZvMUxCdW5JUW5UNWlT?= =?utf-8?B?ODZudG1YRCtNSlIzeGl1UlgraUxOMGdVN2N6M2lVSUNFNW4xbGEwUUVUUWFz?= =?utf-8?B?OHIvZm1xY0VtR2tFQVdRS0REVGZ5SitieEpITFVmY1NXVnFtL2FMQmFlMDdv?= =?utf-8?B?UkhNRWNHWmk5ZDBHSk1CVmQ4VVdocFNZeU1qYnl5WWN2eUZlUHBDQTZVWWhV?= =?utf-8?B?REJLc3hQcFZUNThQY3FnMlVEYTBOc0JFenJYb3ZaZ09GWHNNMnB2Zk9HZ3Z2?= =?utf-8?B?RWFlL2dhcTJiL3ViT25OZlk5QWhSaWhLdkhEREVnUFdDYzlqRDNxSzZOZGVR?= =?utf-8?Q?X4SRtMtprMuKvP0Gx7?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c38a308e-47ed-4ddc-c98b-08deaa3893f4 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2026 23:55:11.1588 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UFT28zyvSvGMIhyfY5fd/1BU8OcQrhWNygtVtqDN57hpogv2GW4LI/D2gJhEPRDBPhrkxgU4lYot7Qo8ZR6s9Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10511 Add an optional .release_mux() callback to struct pinmux_ops. Some drivers acquire additional resources in .set_mux(), such as software locks. These resources may need to be released when the mux function is no longer active. Introducing a dedicated .release_mux() callback allows drivers to clean up such resources. The callback is optional and does not affect existing drivers. Commit 2243a87d90b42 ("pinctrl: avoid duplicated calling enable_pinmux_setting for a pin") removed the .disable() callback to resolve two issues: 1. desc->mux_usecount increasing monotonically 2. Hardware glitches caused by repeated .disable()/.enable() calls Adding .release_mux() does not reintroduce those problems. The callback is intended only for releasing driver-side resources (e.g. locks) and must not modify hardware registers. Signed-off-by: Frank Li --- change in v4 - none change in v3 - Add judgement about 2243a87d90b42 ("pinctrl: avoid duplicated calling enable_pinmux_setting for a pin") in commit message. --- drivers/pinctrl/pinmux.c | 5 +++++ include/linux/pinctrl/pinmux.h | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c index 3a8dd184ba3d670e01a890427e19af59b65eb813..c705bc182266c596c4e6c820f5e= 3ffcadbbb2838 100644 --- a/drivers/pinctrl/pinmux.c +++ b/drivers/pinctrl/pinmux.c @@ -517,6 +517,7 @@ void pinmux_disable_setting(const struct pinctrl_settin= g *setting) { struct pinctrl_dev *pctldev =3D setting->pctldev; const struct pinctrl_ops *pctlops =3D pctldev->desc->pctlops; + const struct pinmux_ops *ops =3D pctldev->desc->pmxops; int ret =3D 0; const unsigned int *pins =3D NULL; unsigned int num_pins =3D 0; @@ -563,6 +564,10 @@ void pinmux_disable_setting(const struct pinctrl_setti= ng *setting) pins[i], desc->name, gname); } } + + if (ops->release_mux) + ops->release_mux(pctldev, setting->data.mux.func, + setting->data.mux.group); } =20 #ifdef CONFIG_DEBUG_FS diff --git a/include/linux/pinctrl/pinmux.h b/include/linux/pinctrl/pinmux.h index 094bbe2fd6fd5ea3c5fdf5b6d6d9a7639700b50b..77664937eeb273eef440988c4cf= 833dbc6f10758 100644 --- a/include/linux/pinctrl/pinmux.h +++ b/include/linux/pinctrl/pinmux.h @@ -51,6 +51,8 @@ struct pinctrl_gpio_range; * are handled by the pinmux subsystem. The @func_selector selects a * certain function whereas @group_selector selects a certain set of pins * to be used. On simple controllers the latter argument may be ignored + * @release_mux: Release software resources acquired by @set_mux. This cal= lback + * must not change hardware state to avoid glitches when switching mux. * @gpio_request_enable: requests and enables GPIO on a certain pin. * Implement this only if you can mux every pin individually as GPIO. The * affected GPIO range is passed along with an offset(pin number) into that @@ -80,6 +82,9 @@ struct pinmux_ops { unsigned int selector); int (*set_mux) (struct pinctrl_dev *pctldev, unsigned int func_selector, unsigned int group_selector); + void (*release_mux) (struct pinctrl_dev *pctldev, + unsigned int func_selector, + unsigned int group_selector); int (*gpio_request_enable) (struct pinctrl_dev *pctldev, struct pinctrl_gpio_range *range, unsigned int offset); --=20 2.43.0 From nobody Thu Jun 11 01:57:33 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013049.outbound.protection.outlook.com [52.101.83.49]) (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 3A3533FF887; Mon, 4 May 2026 23:55:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938920; cv=fail; b=o9mNvVBNfE6336sYP+RdtXzlW5LFguDNQVMLViGGA0rDQ05ZV4IxccLmPu5gEqPef91ScoG9W2PNp6GFZKZMFY4eMQf2bZq74Wy3xX5hIiR7bFUAFBdBjkGn4SftxLvQJU9KsYT4LAE+KgttfNn11j57US3Q8MwzyrhbKmHFzBU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938920; c=relaxed/simple; bh=VL6/kmWeEtW96MQmyGitZ241rYwjGSOVQuOcZ2acEg8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=hYikOGwpyPLmDpTUlk3NGgXvjQdRVPR/QTuVTw8C40pa+Y2dYYcpKjyKQjClIBJTR5gV1FnSNUb5S62rMN1F046BMqot1yJrFUd1H7hOtUWgDOtVJUSaGOEFZQYoa7p8NDAo7AZ9ZtMofbm3XRO1i/zKdseF21fHuDjQFnak2io= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=lChYoBLx; arc=fail smtp.client-ip=52.101.83.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="lChYoBLx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iSVL+tkhYDP5NHeVS0qHSNYD7Tgm/m7W3O+j/KfJUy+BKwd+UGX2eQIbx1PR+aWAp8N8LI7aQ27VL9i8j5C0QW9uDXCKOQNqQjffg5k/lgooB5/7FzebiQaIr6RSfs8i36azBpV4CzrgIVt4RRM2iyvv6Q6KH8SBvUDHvfuAQywJBX3DaYWix1McOyQmM/rpEzR7kkApbejvYCk1DAU9ONhsmbDBXxvGlHhy86IX/uK++UJJ2c3inGSqqX84hYAGR6KMxlGAxSsMZUqWewnOhJH6yuxj5nI3+JraJfeJpfoVteR4Am8oSVUuIskL7eNbfUdDKAXESBs+Lh0qx8yF9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=tNotApPQ2FXiZxPL8UejgUa1BnAJ0S9X9VPjuI0cLLM=; b=kG0GXnOHFDaLbhYdXVEMSHYEZ9A1S8ZrKlnGQfeUt5zTA7IbfCEJgvfSwIo6Xy01tOk8O9VIPvjIJoE7N9c2+NtTYPJ1K1yZj9Lpf2RYxCAPXqwvu6Drwp6nDHVgh28bYJ6dAdGbUQR3uFCRfmkpqHlwHXYP56MkVHqYy4Ey3ddyfLvBAZg4LC4sALd+Xm0wn5vBGPVOFwMg7pbxiHInZTpoiYJxf9X8e/J/KAnDY3NAdAUREeSZRwLbtlv7mUgvJLobcybJfaAyGNt/pbHcItCgm/DXfAvozaJvzmoyg4POhvEvo/T+9jFeRtgzVcUXw1DdINo2AMuO7gwUuVshpA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tNotApPQ2FXiZxPL8UejgUa1BnAJ0S9X9VPjuI0cLLM=; b=lChYoBLxJ6edKj2asJ+FyCiaArt8/Bzv0JE9ShOa+AfhQW87fSBjDKBRe/vnTo0Ucz2TwRDPODMK149aFpSdFw+Q/mgl0bDjcI1dVaNCr+wYiv+RD07atJt5GyEiuFxGYyscV+V70YiwP5p/pDsoMdsNoGRICtSiSqvTnIy3nzrA1mRJ5P2xkSolTzVyODXIwbYVzu1nB8wvtZIWrVc5jtnPzFEjKy9Zzv6nGCEOIwbiQq3tqxe70U3vxxrN0ERpo+slS0oXpPcGIKUXcsA2tgS8mZFP+7WzHNK2v9inQj2KrCbSLND8klOke7upHSfXjgOnGYa9vaYMU+wXcb8enQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by VI0PR04MB10511.eurprd04.prod.outlook.com (2603:10a6:800:23a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Mon, 4 May 2026 23:55:15 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9870.023; Mon, 4 May 2026 23:55:15 +0000 From: Frank Li Date: Mon, 04 May 2026 19:54:39 -0400 Subject: [PATCH v6 5/7] pinctrl: add generic board-level pinctrl driver using mux framework Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260504-pinctrl-mux-v6-5-8ea858ba3a5b@nxp.com> References: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> In-Reply-To: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> To: Peter Rosin , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Haibo Chen , Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777938890; l=7919; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=VL6/kmWeEtW96MQmyGitZ241rYwjGSOVQuOcZ2acEg8=; b=Kbl6rotXLfosVgzEEZOn2Jj38Z0PQgUCY1UmZiYY6XIYhnHAYqtnIgNQxpQJgSIN1HYSB+gok 75BtecFRCtoBXYI6PH03vTeR+0W8U9qwyzS3XBHjYCyqygradymt3rJ X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR05CA0055.namprd05.prod.outlook.com (2603:10b6:a03:33f::30) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) 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: PA4PR04MB9366:EE_|VI0PR04MB10511:EE_ X-MS-Office365-Filtering-Correlation-Id: 013bc0de-ddb1-4cd8-ad54-08deaa38964a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|7416014|52116014|22082099003|18002099003|56012099003|38350700014; X-Microsoft-Antispam-Message-Info: 2vsl7fj4Pq6KRo+QbL/yn452+X0DPhoDoOertMiUPiz3VZsJq6z25q6dWeFd8tNyLrsi36C3ViA9zEX8Mq5SFF0+HJ8zpm0wuIpoCAZyLcr3+JypMjBV3aBb8XG1IN31e50BAKQPCvKFsmkxwzv/rFUcQoCy49KR91mkNfZk73t05fXPJhgqstFchrUDLdqpjuhBD8T1aU8QyBU9RHqvKwiXsbUTEJBGI+HMkuhsihqv7ppziyR+TzHad2kTRndmbMrBa8zenRWzE+sb1rZosr45R2AyuJrLZzarT2rDjeHc7DSbIZuqPDmhGjumBy3WoQMFKrHYFgeQEfW8sYhiJ8bt2N65xdYg8S6Kb41blo9Sl7giUMR+d4aa3g5U3zY+SCAhjKjTYklgP13LB3oUW9DX3ndsg+ti/Ac3E2mgtkZC+V/SLCbScmxXZ8mon3wBtq/4Xhq76geX75wL7suWhRrtsmCJbLUMeOSwtPEeJzYBV3nZx0lyHcc6CEVslE6ETshe0hKHM/OaYuoGDirDYI4PhbUo1Gtkxdi+mK5HPXrrMdKxA2lgaMdzw6htZewzTCrN/1cFV6ZX7vBBvVz+51k8J0HVIfxKwuIBnxza5EHB2B4Gso29O/g7WKApJFSzbYqPyVyAuMXjTxhrQpzRpTA8kE5cvVXflHpVikOSk4V3poAP8LzLceIJFaNJjC1t X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(7416014)(52116014)(22082099003)(18002099003)(56012099003)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TUhuSDZ2UEtFTjQ3VDF1WlJtdW5WZmFXUWdzNStDdzZvcklMNnM0Qklva05C?= =?utf-8?B?MG4xYWhIaUhnVUFUbXM5amlsQTFaSlJmekdjRThDeVVldjZROG9CUXVCaW1S?= =?utf-8?B?ZDVoTnFNbVY0dWNBTHNKQ1lvdkhBVjhTVzlZR3RGelhQVlBYRDhta2Fpc3My?= =?utf-8?B?Nmt5amQ1Q3FZZlpmaUhvK1dwQUQ3enV0czFWaVFoOGdnV3crKzRLWDE5UkYr?= =?utf-8?B?MHNxQUZIQnF6R0U5dUlYQjdCb3k4TTdtV2t4VXVtMkpGV2J2TjkxWTBaL1I5?= =?utf-8?B?ZVlNNE5uNm5TWEZQU3oxcWttTyt1ZzhIbUZEZWpQUmIzREthdGo3MXNzNjZK?= =?utf-8?B?dDM1NldTY3FqZWx6RDhzbDdYbHFrMUZ0L2JTb2U2TjVtZzdaUjlTd21KQXlC?= =?utf-8?B?N3hFQnBYd1gyZkhzUVZ6SGJiWVFpVklpendJcTVjMG5uZ0RZbWlvV2d3eVNs?= =?utf-8?B?Q3NIUEMyZUVCeThFWnpqQi81ZCs2NmpXa3dkcTR5N1ZrVytCZnFWZjZ1OWp0?= =?utf-8?B?ZjFYMkpDVnZVWWljNFVrekxtTGNUVWJRRXlXRWgzeFRaN1FFeDlSTVhpcjRF?= =?utf-8?B?NTV1Z25VMW96Z3RXVitRQTM1ZDBEMzVzOXgrNXJEdVBpUThIWjVNbEtaYTZ3?= =?utf-8?B?WlN0N1RmMjBiQm9LZUx6REwrTTBGNVVVZVVFS3AyM21pZUNLQXlkcGFRQW4v?= =?utf-8?B?aDU3SUxETVdKdjV0c3NHOTJ1NmI5YlRTU1BJelhxWFZnajNEQnIrWDBYTkVi?= =?utf-8?B?M1lNL2RYd20wa1AvTzJZcUsrV1cxc0ZFMXIwZmsyR2NjN3ZXb0s4aFMyZk9i?= =?utf-8?B?UnlKdjZNNFU2MnFBdDU4S1ZOLzBKT1dCWDRBYzE4QjdoeG1vc0t4SC92TG5P?= =?utf-8?B?dmFJL1ZNanFYWktHMmMrdFBicXNHemxjRmZwMGlPSWlzZnRPZG8rNldhQTJn?= =?utf-8?B?ckkwbU9GZExBTzN3Q1ZFaFVtaUViYVhMN2VjRGxFMFoxVldXL0QwMzltR2RV?= =?utf-8?B?cVBjbWxQVXhUMzZzdngyNVRROEZNVXRESVRXTzhlckdBRzRDeG5kWWljcVcw?= =?utf-8?B?UFAwN1BtY1UzRnBYVHN3SmdiRjBwcGRqKy9HSHQ1S2cxaTdiTzZkRFQ1clZr?= =?utf-8?B?bG1PWnllZnpPWkFvME5PbVJEVUhoVk8rMEZqeHlxT0RmNzFKUDl3Smg0RjFi?= =?utf-8?B?UzJwdjJZSytXZVZpTStsRm9qV1VkWTh2ejFOVmxmNDY3ZTRidnFLNG1pcTUx?= =?utf-8?B?LzFTbHVvSG41YTdzQ2tJM3lmMitSOEVqK3JBY2dSaklJY2tlcnBoOHJjMW9P?= =?utf-8?B?THJSaGdBQmtzNTAwYkJOWitjWnh6aFdhTjQ2Um1WQmk0U3lLTUhPZmgzYnh6?= =?utf-8?B?ZjdGbzNNTXJWbTI2V1lJR2xYSnUvQllzRVlFV3AzV1dxelFBaVErR1VoTG9F?= =?utf-8?B?M2o3alVOS0hWem9uaE95WVRpNzRqeXQ3S3JtZE9xWUtlYWtJWFdSdFJGUFI4?= =?utf-8?B?ZERCNlRTVGNWY2xjYWQzMHd0aWkvTEF3UCtTUlIyYXR4ODByUm5RRlVseWF5?= =?utf-8?B?M1djSkJjWWQ3ZmpWcUt4NEJoWHlUZlZtajR6bWVoTi9hQzR3SmZ4QjhicW9Y?= =?utf-8?B?d2ZFZ0IzWGt1YldsK1pYeExHRjRaNjdvRjdNT2loc01hM3Ara20wRTh3Wisw?= =?utf-8?B?V05rRUMyQ3RFYzBVMXQ3V3FyeEN6SlBnTUk3THdESlMzdDI3SUgycWlkQnhm?= =?utf-8?B?ZlNXTUZqWnk3TzIyUEVxbVF2dVhIMFdweVZTL2RnTjF3ZXdGM0swTG1zQ0c5?= =?utf-8?B?UXlwelFCK3FDS1ZadEJiY2VBYW9wRlVBbi8wdGk0WHVlV25TTzR3ZEJvQ0Yw?= =?utf-8?B?OFZqNDNicVFLWWpyeDA3M0hMdDdQS3Rjemc0K0x0c1IxdUFXT3B3ZWd2U3M4?= =?utf-8?B?amV5amJ2YmZYdzh6d2FWQWdFZG9PRDRuaWlwV3JYc21MZ1RaMk5xQWpoMnZX?= =?utf-8?B?LzJFeGY5QUl4SU4zQVF0TUdNblMrbXVpQnIzVTVCckxldTd0YXNGeVVON2ln?= =?utf-8?B?Wm11V2RKcm01dDJMdnBEckJldFJzY0xJVE9YV3FqYTdOemRTc2xUaGJDWHpr?= =?utf-8?B?VFA4Z3B1T3A5QjZXN1o2RExGdVNGdjlXeUcwWWpyclZTK1ZvdHVxbkdnZ2Nt?= =?utf-8?B?bFQ1TnBOTnRodTRGejQrcHI0cWRBYWl1NjFDZHdxOG96NlNuY1UyVm9pMGNo?= =?utf-8?B?UlFvQTlXYjBTbWZWZTlRZUdxZjlNaGg0NXhQRU1ITlFhbU1qU0REdkxndTBC?= =?utf-8?Q?E6fSOk2flslQD2qI63?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 013bc0de-ddb1-4cd8-ad54-08deaa38964a X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2026 23:55:15.0524 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xjMNlGawlrMApZhsDcDgfBwdHYm/HLDVUt/ALYde9zZb6FHz36DaKvT8oKE3ZObugacxQq0IXXDe5hFe4HPyWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10511 Many boards use on-board mux chips (often controlled by GPIOs from an I2C expander) to switch shared signals between peripherals. Add a generic pinctrl driver built on top of the mux framework to centralize mux handling and avoid probe ordering issues. Keep board-level routing out of individual drivers and supports boot-time only mux selection. Ensure correct probe ordering, especially when the GPIO expander is probed later. Signed-off-by: Frank Li --- change in v6: - remove cur sel logic and depend on mux_state_select() since AI review find a problem https://sashiko.dev/#/patchset/20260327-pinctrl-mux-v5-0-d4aec9d62c62%40nxp= .com chagne in v4: - use new pinctrl_generic_pins_to_map() change in v3: - use pinctrl_generic_pins_function_dt_node_to_map() and pinctrl_utils_free_map(). change in v2: - fix copywrite by add nxp - fix if (!*map) check - add release_mux to call mux_state_deselect() --- drivers/pinctrl/Kconfig | 9 ++ drivers/pinctrl/Makefile | 1 + drivers/pinctrl/pinctrl-generic-mux.c | 185 ++++++++++++++++++++++++++++++= ++++ 3 files changed, 195 insertions(+) diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig index 03f2e3ee065f4268dbd2f94a0ffecbbc4d89df20..31d698fbaa01d5fd20b4ba7c352= df7c5f8b3c686 100644 --- a/drivers/pinctrl/Kconfig +++ b/drivers/pinctrl/Kconfig @@ -272,6 +272,15 @@ config PINCTRL_GEMINI select GENERIC_PINCONF select MFD_SYSCON =20 +config PINCTRL_GENERIC_MUX + tristate "Generic Pinctrl driver by using multiplexer" + depends on MULTIPLEXER + select PINMUX + select GENERIC_PINCTRL + help + Generic pinctrl driver by MULTIPLEXER framework to control on + board pin selection. + config PINCTRL_INGENIC bool "Pinctrl driver for the Ingenic JZ47xx SoCs" default MACH_INGENIC diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile index f7d5d5f76d0c8becc0aa1d77c68b6ced924ea264..fcd1703440d24579636e8ddb6cb= d83a0a982dfb7 100644 --- a/drivers/pinctrl/Makefile +++ b/drivers/pinctrl/Makefile @@ -29,6 +29,7 @@ obj-$(CONFIG_PINCTRL_EQUILIBRIUM) +=3D pinctrl-equilibr= ium.o obj-$(CONFIG_PINCTRL_EP93XX) +=3D pinctrl-ep93xx.o obj-$(CONFIG_PINCTRL_EYEQ5) +=3D pinctrl-eyeq5.o obj-$(CONFIG_PINCTRL_GEMINI) +=3D pinctrl-gemini.o +obj-$(CONFIG_PINCTRL_GENERIC_MUX) +=3D pinctrl-generic-mux.o obj-$(CONFIG_PINCTRL_INGENIC) +=3D pinctrl-ingenic.o obj-$(CONFIG_PINCTRL_K210) +=3D pinctrl-k210.o obj-$(CONFIG_PINCTRL_K230) +=3D pinctrl-k230.o diff --git a/drivers/pinctrl/pinctrl-generic-mux.c b/drivers/pinctrl/pinctr= l-generic-mux.c new file mode 100644 index 0000000000000000000000000000000000000000..c706468289fa179d28eca854a88= 18b3bf1bc5b0a --- /dev/null +++ b/drivers/pinctrl/pinctrl-generic-mux.c @@ -0,0 +1,185 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Generic Pin Control Driver for Board-Level Mux Chips + * Copyright 2026 NXP + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "core.h" +#include "pinconf.h" +#include "pinmux.h" +#include "pinctrl-utils.h" + +struct mux_pin_function { + struct mux_state *mux_state; +}; + +struct mux_pinctrl { + struct device *dev; + struct pinctrl_dev *pctl; + + /* mutex protect [pinctrl|pinmux]_generic functions */ + struct mutex lock; +}; + +static int +mux_pinmux_dt_node_to_map(struct pinctrl_dev *pctldev, + struct device_node *np_config, + struct pinctrl_map **maps, unsigned int *num_maps) +{ + unsigned int num_reserved_maps =3D 0; + struct mux_pin_function *function; + const char **group_names; + int ret; + + function =3D devm_kzalloc(pctldev->dev, sizeof(*function), GFP_KERNEL); + if (!function) + return -ENOMEM; + + group_names =3D devm_kcalloc(pctldev->dev, 1, sizeof(*group_names), GFP_K= ERNEL); + if (!group_names) + return -ENOMEM; + + function->mux_state =3D devm_mux_state_get_from_np(pctldev->dev, NULL, np= _config); + if (IS_ERR(function->mux_state)) + return PTR_ERR(function->mux_state); + + ret =3D pinctrl_generic_to_map(pctldev, np_config, np_config, maps, + num_maps, &num_reserved_maps, group_names, + 0, &np_config->name, NULL, 0); + + if (ret) + return ret; + + ret =3D pinmux_generic_add_function(pctldev, np_config->name, group_names, + 1, function); + if (ret < 0) { + pinctrl_utils_free_map(pctldev, *maps, *num_maps); + return ret; + } + + return 0; +} + +static const struct pinctrl_ops mux_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 mux_pinmux_dt_node_to_map, + .dt_free_map =3D pinctrl_utils_free_map, +}; + +static int mux_pinmux_set_mux(struct pinctrl_dev *pctldev, + unsigned int func_selector, + unsigned int group_selector) +{ + struct mux_pinctrl *mpctl =3D pinctrl_dev_get_drvdata(pctldev); + const struct function_desc *function; + struct mux_pin_function *func; + int ret; + + guard(mutex)(&mpctl->lock); + + function =3D pinmux_generic_get_function(pctldev, func_selector); + func =3D function->data; + + ret =3D mux_state_select(func->mux_state); + if (ret) + return ret; + + return 0; +} + +static void mux_pinmux_release_mux(struct pinctrl_dev *pctldev, + unsigned int func_selector, + unsigned int group_selector) +{ + struct mux_pinctrl *mpctl =3D pinctrl_dev_get_drvdata(pctldev); + const struct function_desc *function; + struct mux_pin_function *func; + + guard(mutex)(&mpctl->lock); + + function =3D pinmux_generic_get_function(pctldev, func_selector); + func =3D function->data; + + mux_state_deselect(func->mux_state); +} + +static const struct pinmux_ops mux_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 mux_pinmux_set_mux, + .release_mux =3D mux_pinmux_release_mux, +}; + +static int mux_pinctrl_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct mux_pinctrl *mpctl; + struct pinctrl_desc *pctl_desc; + int ret; + + mpctl =3D devm_kzalloc(dev, sizeof(*mpctl), GFP_KERNEL); + if (!mpctl) + return -ENOMEM; + + mpctl->dev =3D dev; + + platform_set_drvdata(pdev, mpctl); + + pctl_desc =3D devm_kzalloc(dev, sizeof(*pctl_desc), GFP_KERNEL); + if (!pctl_desc) + return -ENOMEM; + + ret =3D devm_mutex_init(dev, &mpctl->lock); + if (ret) + return ret; + + pctl_desc->name =3D dev_name(dev); + pctl_desc->owner =3D THIS_MODULE; + pctl_desc->pctlops =3D &mux_pinctrl_ops; + pctl_desc->pmxops =3D &mux_pinmux_ops; + + ret =3D devm_pinctrl_register_and_init(dev, pctl_desc, mpctl, + &mpctl->pctl); + if (ret) + return dev_err_probe(dev, ret, "Failed to register pinctrl.\n"); + + ret =3D pinctrl_enable(mpctl->pctl); + if (ret) + return dev_err_probe(dev, ret, "Failed to enable pinctrl.\n"); + + return 0; +} + +static const struct of_device_id mux_pinctrl_of_match[] =3D { + { .compatible =3D "pinctrl-multiplexer" }, + { } +}; +MODULE_DEVICE_TABLE(of, mux_pinctrl_of_match); + +static struct platform_driver mux_pinctrl_driver =3D { + .driver =3D { + .name =3D "generic-pinctrl-mux", + .of_match_table =3D mux_pinctrl_of_match, + }, + .probe =3D mux_pinctrl_probe, +}; +module_platform_driver(mux_pinctrl_driver); + +MODULE_AUTHOR("Frank Li "); +MODULE_DESCRIPTION("Generic Pin Control Driver for Board-Level Mux Chips"); +MODULE_LICENSE("GPL"); + --=20 2.43.0 From nobody Thu Jun 11 01:57:33 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011058.outbound.protection.outlook.com [52.101.70.58]) (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 2F2F53FE64B; Mon, 4 May 2026 23:55:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938923; cv=fail; b=evQQ5GaT8DqtU6ETXYW6X456Y82+RppQMe2mWOARsSXYIDuKivjCFEsTwgg9NjMZs/Zk/iFu8RuTVyOtGQSXWDUexWq6WcGeWt/JiK9o8yc3gryN2dhjkwTMX0+pe9yLse8JTintAFO3ItCkJoyQd7zmYaVKX2DcC5ev5jjd5Y0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938923; c=relaxed/simple; bh=EPeLxotNzw2voFnaeTwUiSekZ7FvB/hteiW/+B4SVJA=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=I5Xa4a6qDyCCiq9/k3tGFD+bx6NKpxL1h0oE7icN+OAg0k1/V7UfQA8gIlG0gyB2uHqtUeYpU8s7WcdG56HpOh9msuMB4Kz4RLTEOlXCsG3aTCzfaZJJ7DLj9O9U5IzG0kpD24zFKxPMB0UkfEPP3z9RQ8chstuxz+qI1kaFnFM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=PS1Vl8RS; arc=fail smtp.client-ip=52.101.70.58 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="PS1Vl8RS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cPZugW8z106lnkXacjCVgXCJV8sC+3SQEf1nbbu6mJcJwIVxOJcIFa+Ani4yNUruWLeBt9aVsYaJKvhpu208zh6ZUX1I9Vlzx2AlkVG/82+kQRw13hPUqA7ob6w+sfUwLQu8c+8jhaTR823L6UcwfyGNWJ111sPQFw0JunaANqZMInqhVnSqPq3892+AQ65oIEFJvqUdATY4c4RmLIU1KtOzLTEXkcvvRuuoxVlW6dnNT1wR8wbDqkzcl97ejJoPI182/eIX2eqEBfCDKmY8KG3QS1yBsCWqJsBQDYq7DtpjC7NNFpuLYSRfihAs/Wapkj20zkCZN1NCi2adUdeK4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=UlUYAHBOiVV+s0XOTl0AkNJyqRmaYZqCAqMdNDH6/L4=; b=MnuxGyLQsIKgey57hJ61sJwDKDpXIIQZYtOTDtLutzlvefMSWS+OJ7P89DwRrAGaDB2TZdLN6plcMgG5mdG6zgckpXejITGN18018wkUUs8Hto+MDaT/ZItZy2bZvKW3Q+1NKoIN0YRZxVzh0EgAyO1W/ioFSbxvay8rEQdZERrTmYJP2Pn8aRgQKLMpPVzEpv4fKOWtuOPGtL5i1kJEBdU1+gb2q8IYa34id7DJmgcs7TV9SP1MENzVYM8wFzZcAxqO/R3wuEpqmLmoZbp1GIh5kDZjfAy7hMoGkXNm0HCEvHR8TdGjVvwVx2oMmhK8gXX6SLxEFb8MzqnMiWloOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UlUYAHBOiVV+s0XOTl0AkNJyqRmaYZqCAqMdNDH6/L4=; b=PS1Vl8RSha4mYXt40r8O0LnIj7BVenjx3+55R9ccafnVEVwNKKR1f7quiwclQ1pu4anEnvrshbid7l4Aq1hZUnQ8E7dYOJASycJV6QgFbkHBL1WDSnBq4wNI4r5iw1ZnKqIjjjHZl5Gnq9wJW8/Scv/QDHOTzj3tRozVIkEhrjaTHyoD/4UQsbg91jHqj3jBYzkq9oef15ygViplyw6RSPaQ1mYG3GAJyFoo2u6Mas6cprvU5rtDgh0WkWUaNjEMDAPGbgTclPK71aVAJGcYI7Bb006OjGZUp9WZpVxt7cPNJ7eLMjE52kkCImh8iIjOJ8ynaKJJaYwNQRxgHdAZOg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by VI0PR04MB10511.eurprd04.prod.outlook.com (2603:10a6:800:23a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Mon, 4 May 2026 23:55:19 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9870.023; Mon, 4 May 2026 23:55:19 +0000 From: Frank Li Date: Mon, 04 May 2026 19:54:40 -0400 Subject: [PATCH v6 6/7] arm64: dts: imx8mp-evk: add board-level mux for CAN2 and MICFIL Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260504-pinctrl-mux-v6-6-8ea858ba3a5b@nxp.com> References: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> In-Reply-To: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> To: Peter Rosin , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Haibo Chen , Frank Li , Ahmad Fatoum X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777938890; l=2170; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=EPeLxotNzw2voFnaeTwUiSekZ7FvB/hteiW/+B4SVJA=; b=l1AESn0tgAWwK7fK/bNsYR7dYCqvgeyhKVK3H/wjzyjK0mynggR+Gh19asXvjccupSSFogpvx t5OP68Un7jGAGZv3R7ILCE/MAmEuCpB4ZFiUwCLmr6basvRC+Q+zS/W X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR05CA0055.namprd05.prod.outlook.com (2603:10b6:a03:33f::30) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) 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: PA4PR04MB9366:EE_|VI0PR04MB10511:EE_ X-MS-Office365-Filtering-Correlation-Id: d2a5a10a-4382-4164-d246-08deaa3898c0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|7416014|52116014|22082099003|18002099003|56012099003|38350700014; X-Microsoft-Antispam-Message-Info: wZ7X3C32+YwBThuzHXuI/bWiphQgDfs6LBpUJQ8Mdyr4Q8m+RjJ28EvsBmQl7vPDJUU4CF2Rwh0BIEqGgENrlv9jugZmyRKvqp3cZ1FGCEtDfvAfcI/YvEuHQftvnKXg1o7WPhHcDAgrXOPN21INIBSNkybLozeSNnJy9iR1z49v88/C46eROgq3G5JvtD8bmAzKb5AR8tEmKoF4T8OCiZwy1C6EnIFARbyfNmGwP9gmCPoYqTRsaNheb6eeVeOuA+Pi2cr9Hsz0NdQEFjrWG2qwk/oseRaw5ilUuFqpc0e8r0GdOJzmBP39L4mZDzJ4GgG1C7x03vIhS52+LrTsvmOttxZ5IVRfmPbg9eI1s7j3j8qSOAbueyNxuldG3HJSK0EntdIqiZ208JCwV/MhBDvrIKyobs9jmkB/o9G9zJrJEHAeV243J+N4z8LXfH2mvirGRqXUYd99S6ZuDDrwU/UjXW4LejID4JCVT8xLyZxp4TgkIxQqZEWiGQAj+X2uyHncEs4E8YM7z0pGTmfDWU+0KPB2dlK0LO0LOhh4a5MIVlu3aCA0I2VUNq2sYGDNc1IuFj0Z6k9a3k7+wxjmIlS3RoKwjKW7BJQHCpaY5xxtyvFp6JKiv23L5bGPMKpFYlmjccBFwNyTXrVw46MXBFMc0DMygLVU84aZXVhifmTs65lii+PiYSi3225AQcJAc9gW0koPybzAQGde2HfZ7I81EZqtmJuAa0aJ+/p+usPf/mZqU1SaHcBzwmRWtUgA X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(7416014)(52116014)(22082099003)(18002099003)(56012099003)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MWpzZjdqNHFuNlFQNUtYeWR4SWpvUWd4WEdPZTFvQ2VwUkRZMHVhWGdDamFu?= =?utf-8?B?SklaT0RYUGJQamVKbHFsdGFock1TN3JSckFucUJmbGdMWUw4SXFGVG44aWJx?= =?utf-8?B?ZnRydkcrd3JnaThwcm1SL0ZhTEN3OE1LbzFLeUp1OW1UanVjNERUR2JvVkpB?= =?utf-8?B?OFNvOXFxbXNKYk9QcTMxV1dYbm5mT3lsdm8rL3hIL2xsQVl0N0dzckxCMUFG?= =?utf-8?B?S0habzY1cU9HcDhzbkpGdDh4K3FySHg0TkFZVktUWW5ZMitlK0k0cG1lWStG?= =?utf-8?B?NFdCaFo2dVBPd2Nid280VHNCRzFsZW9UczY3MkFxcHd3YUNRMUYzUXpjQmx0?= =?utf-8?B?VmhsN1ZDSk5IUWxLLzlGbXhtdVF5eG5BYnY0Q3RBdEtoaWZnUmpuaVNiN2J2?= =?utf-8?B?ZmVCWVR5ZWI3ZFZjWVUwQlNoR05LUnc3c3NNQnN4Q2hUTmx1Zk5wamEvT1dC?= =?utf-8?B?ZFFDaHo5SVRCa3dhYVJhZzByVG1SU0txSzk4aVU1eE1lM2FvVzVmeUNaMVE2?= =?utf-8?B?K1JKaE15aW5HR0pMdUxlZEsrTFhyZ2Q3ZHd4cVYwN0hIa0p0QXFyL25heGU1?= =?utf-8?B?Z3JQYWdhbm1ZaHFNODNsajFCVGVzNUM3bEcrOWtpTTk0ZmhybElOYmRJS2dw?= =?utf-8?B?dEp3UmpnYTFUNnlaN1A3QTM4NWYyZUFWSnlFTXdCamFNRlhMbkFyRGFlQUY1?= =?utf-8?B?T1BhUkUvU3FBYkZwSm55ZFVsd1o2YXlkNDhJaU9KOUowcmFJNXd2TWsrdU9w?= =?utf-8?B?QmcrNFdGbHpueTVEd2MwOGVhUWVmbnBCMkNxclltRkdKODBRblZLekNGNVNG?= =?utf-8?B?bVF6MGRLeTYzQ21WZi9MMGkvZ3R2RTRyd1B2NmdhZEtDZC9Qc3NBS1VJOGNZ?= =?utf-8?B?S082M3lMS2NLeFEwSjJrNFgzaTRKZ0FoWjJLQjYxYWhDVUc1akRUV2JDYlRY?= =?utf-8?B?ektESU43SzNyU1MxeldKQ0xNa3BSZGxjaS9JUGtsNlpEbVUvTHNwTHlCSXFx?= =?utf-8?B?TG83bjZTenYvS3dlWDd3Mm1MVWJ2OC9zMThrVGFiVTNYQzFLUzRFWFJ2QVUy?= =?utf-8?B?Zk1UZExadm9LQVNEUVVGYjZOQ2p4UHdnM21URWhEcHRtYllVRXJGTWZFNXgv?= =?utf-8?B?QmRHbFJsWE1HdlZaUkZIdjlhbzJlazM2RnBjUWMrWVhsRlNOb1F0RzVXNzVO?= =?utf-8?B?dHJENW9paHlnZXVXWXlMSnFQUWNScEREMzh4dHVnZ3ZDcnhmaGZhZUh2anRJ?= =?utf-8?B?cU5ZZXVUUmsrSXNFZDVrc1MxR1VSenlLY1NEbGFMdGFVeWVTeldVNWNWZnFi?= =?utf-8?B?cEQwUFJXVXk2TFlOb21zVDhVSVFiYk9qWE1WWGJrVlRydWVZUlBsZXZGTUQz?= =?utf-8?B?V0ZFWm0rcjRrcTJPMDljU0ErK3d4MmQ1ZUhpOCs4VmlkUEJnQnllYi9Yc01X?= =?utf-8?B?NFBSQi9KZ253dk5IdjNDem50cU1QQXpKZGlVUGc5TGtUS0VrN0xXZFRobDRm?= =?utf-8?B?SjlQMW93bkt0OWZiQ3hvNG5hRVkvK01SWHRmcVBGMHVWaDIwUDFSMVlDZWJo?= =?utf-8?B?SFB3RW1YNW1XM2hzUU1MZFgybEczWGxOem56aXRPVTkxdnJTR0VFUmt1MENS?= =?utf-8?B?emdCaXhWKzh2TEtOcjV0TFJuQkNvanhuVDNyYWI4aHkxUG4xbmNtM214ZXV2?= =?utf-8?B?dnZ1bk1UbHBzS24xTjI5Zk1WSTM5YWJ0bXdJMXNaemZDb1JwTVJLRWNJbTVI?= =?utf-8?B?cmYxb2FPdkh2RDFOcWpoVWh6QW5lUWhaenkwaDFVRnNLai8rTmFwMzRwOUdW?= =?utf-8?B?SkZEZGJ6cEd3OFZHeG5KMHRhUldtTFphQ2JIeGIvMnk2RFBoNnJ1RGI2QW5O?= =?utf-8?B?c2E5cU5SMmRiWFNHUExuSm5hOWpWTENmNUZWNVA2dkFDbk9uTWFlUjJRMmVw?= =?utf-8?B?NGxZVEtQSmREeUhIMTVXZE4zU04zTTI3MC93WVd6aU5CWi9BSVRzSWU3OFBY?= =?utf-8?B?QmNXaEJuOVNKanc2U0tmOFhONW96dDdpNmtwalNDSmFHUW91SU41bDN6emor?= =?utf-8?B?MzJCTE5iZE1EWjVPblFlRFVMMGNRQ2dMZEl4YUQ4OTJ4UTcyWm5uTFptQWZo?= =?utf-8?B?WWNmU3ZCNzlMVGx4RmtxNkNNaUxqU0hKSTZvZG1FOGFTbjRDcjBXYTZLcGxz?= =?utf-8?B?U3ZUdWdFeEJteDUxS2NGd1krU1dZRlVtZkNXZXJ4WFJCQXJpcDdtcG4vb2ox?= =?utf-8?B?T2tpdTRxdlRZbEJqQlFMaThRWjVHMXBUQW1DRE92a2d2VmgyOUFSSllienB3?= =?utf-8?Q?L0H2tsFHO8pBT4d1TX?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2a5a10a-4382-4164-d246-08deaa3898c0 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2026 23:55:19.2084 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: eC3jMn1N4xoc9LwQiRQ91m2CJXUjACqab5hset2vB9IMnLxg64yRj0K16CGs01xy27Yt6bR/voxBEt1zn99lIQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10511 The board integrates an on-board mux to route shared signals to either CAN2 or PDM (MICFIL). The mux is controlled by a GPIO. Add a pinctrl-based multiplexer node to describe this routing and ensure proper probe ordering of the dependent devices. Previously, MICFIL operation implicitly depended on the default level of PCA6416 GPIO3. After adding the pinctrl-multiplexer, make the dependency explicit. Reviewed-by: Ahmad Fatoum Signed-off-by: Frank Li --- change in v3 - v4 - none change in v2 - update commit message to show why need update PDM MICIFL. --- arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts b/arch/arm64/boot= /dts/freescale/imx8mp-evk.dts index d0a2bd975a18138f6fc31199d2d5f0dc8149946d..f9d248121537eee64ee0042fd86= f1c929ea36c83 100644 --- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts +++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts @@ -50,6 +50,25 @@ status { }; }; =20 + can_mux: mux-controller-0 { + compatible =3D "gpio-mux"; + #mux-control-cells =3D <0>; + #mux-state-cells =3D <1>; + mux-gpios =3D <&pca6416 3 GPIO_ACTIVE_HIGH>; + }; + + can_mux_pinctrl: pinctrl-gpiomux { + compatible =3D "pinctrl-multiplexer"; + + can_fun: can-grp { + mux-states =3D <&can_mux 1>; + }; + + pdm_fun: pdm-grp { + mux-states =3D <&can_mux 0>; + }; + }; + memory@40000000 { device_type =3D "memory"; reg =3D <0x0 0x40000000 0 0xc0000000>, @@ -453,7 +472,7 @@ &flexcan1 { =20 &flexcan2 { pinctrl-names =3D "default"; - pinctrl-0 =3D <&pinctrl_flexcan2>; + pinctrl-0 =3D <&pinctrl_flexcan2>, <&can_fun>; phys =3D <&flexcan_phy 1>; status =3D "disabled";/* can2 pin conflict with pdm */ }; @@ -720,7 +739,7 @@ &lcdif3 { &micfil { #sound-dai-cells =3D <0>; pinctrl-names =3D "default"; - pinctrl-0 =3D <&pinctrl_pdm>; + pinctrl-0 =3D <&pinctrl_pdm>, <&pdm_fun>; assigned-clocks =3D <&clk IMX8MP_CLK_PDM>; assigned-clock-parents =3D <&clk IMX8MP_AUDIO_PLL1_OUT>; assigned-clock-rates =3D <196608000>; --=20 2.43.0 From nobody Thu Jun 11 01:57:33 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010041.outbound.protection.outlook.com [52.101.84.41]) (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 DECEB3FFAD1; Mon, 4 May 2026 23:55:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938927; cv=fail; b=C+TsOoXbKH9pqyF/YelYpL6/0lfhqWnoi5U8+C1jZlzI1jXUw0IL5Hlk79nn993/8pt8N6JTI7kGdHpcQ/FRIe5LYuCmizEAYsQCz00CqROQFqtjCvCs8048fXiGjlg2Ymj9gxNPaxM3fxY0cpzvuNKTi/xaLhGQYpsEDz8/MaA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777938927; c=relaxed/simple; bh=/kyklcSI+gOd/Hh7lXY0LYceKPsLYQDEebCDow7nXsQ=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=ia6Bm3xW5iQAeyEdrq3bDZEme9+zT7zh4i+OtT4WQ+CYsxxUwtrVSi0CufJYiyXi4YuJnndQgI04ARnV6lJW2ScqfVQEgKk77xgZ7TACHS+gJ9yBnFQ1UvbxTCFdcV9x1ZEls8sgaNJEul4PG/CeMbNTCbFk2IPnxyCXoRWgDvY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=lEDLAIij; arc=fail smtp.client-ip=52.101.84.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="lEDLAIij" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=A6FBSmHTV0fIbKQQOafGFum2c97tuAqmOZWIpcVssiomgJqeIZ5PYm1/jgHvacQOWsKP9vEfFhZ79K/t7d01MQrqFNKaekKAQ9otC6+6tmVlBtJbVXh9nAZVZuYTDf7M1UlRHf1pLQGS1se2zCEf02VlntvFK80ysNCtmWfUd0rEBakxpkSaxy5ufl6t4ci6iaN2VY8OpczV0fvEcw7jDN9+PiVs3sY5cXbjcxQmUwtJPgTfodx9fghrTwx9AushZsX4d8p0b7E6HNP7oY6CizWZGz/VVZSGDZzmZ1lz5V9W7RUjqfBQ+As72UhYgZ+Vlw25QQbxN3sEuPtdn2NrHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=SSt5qJDUDUls7ETfnAHXOm8F053HWeBTgn0KAKJtvzo=; b=PuF9iIhwGK1AmXgVtpNlyd5nexiyp6oMJ5OzrOdwdygDCFJWVMw1ZFgGgt8JaODrJRq80mVv49gXlys1X6pKrUe3E5+a0yzoh12WOmeFNogmuwpK5yb/1u93fPs2y2Au984vfejub72fCQVpGFdk8Xg+4PGOxeD3mLvG8KZPosYXh+R2w8Ss+UeVeCON1g2Q6hdH+0+7e9E7aEZLPsICGX3tYCNp1i0yIScI10V541A8xQL7aIleJ9JVvsgg1dlEaitRMpeOV+AbnxCktYtkgtONfgDzmJFJBZJo7nNe2suzA0RnF8qCcyVAchzmtcQcaTAXFXsKXJoG9Pc4Yk9Kzg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SSt5qJDUDUls7ETfnAHXOm8F053HWeBTgn0KAKJtvzo=; b=lEDLAIij88zJF/ZipsWC+f2B/+HmaRxnM9g9DRrvkCXL/qgJjNy4hL92LgV1LhRAuCdTPXp+vLzFCCiyA7AFFYFMTVesgALejS5JNqfYa/E/Pvcncpjm7mTplv63f2YyjuiMihw4UDgeM0tKkeKV0qyuktGujjHJ8+wI1CAA5VwO/e8Xg1gz2QO45/LW5fugP2zdCOfQaYOLVWnnA1HE7e0G+AA5ZpEvpa2GwA/xXLDEWiyiriMCgk0IYeX/fe6+33hkkwGH7H3gQKp5vaTZjPmoiz+Q1R3Kex43dpwsfpzA9paM65kc5YxBm5ohu6cmAJobze2hjYL2Gh/58V1qEQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by VI0PR04MB10511.eurprd04.prod.outlook.com (2603:10a6:800:23a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Mon, 4 May 2026 23:55:23 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9870.023; Mon, 4 May 2026 23:55:23 +0000 From: Frank Li Date: Mon, 04 May 2026 19:54:41 -0400 Subject: [PATCH v6 7/7] arm64: dts: imx8mp-evk: add flexcan2 overlay file Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260504-pinctrl-mux-v6-7-8ea858ba3a5b@nxp.com> References: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> In-Reply-To: <20260504-pinctrl-mux-v6-0-8ea858ba3a5b@nxp.com> To: Peter Rosin , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Haibo Chen , Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777938890; l=1705; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=/kyklcSI+gOd/Hh7lXY0LYceKPsLYQDEebCDow7nXsQ=; b=Eh5Xfx33d94GFVscUIpIsGUT4C6n+KbPDifaHTsWyJv4wYmEWUyulgfKRuEgWv01qpZ/h55vO ETd6YWUa4MmCDwwRXgBsMTZ7YDsvbNXLuKVJe/RpzChuTEg9REobYAA X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR05CA0055.namprd05.prod.outlook.com (2603:10b6:a03:33f::30) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) 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: PA4PR04MB9366:EE_|VI0PR04MB10511:EE_ X-MS-Office365-Filtering-Correlation-Id: 54095ce2-1f36-4bfe-d94d-08deaa389b18 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|7416014|52116014|22082099003|18002099003|56012099003|38350700014; X-Microsoft-Antispam-Message-Info: Im/9yG3D+3eQQWq+CKkNvkdK6I+3Y28nobmi0bNKbrkEPEdDruQgQTnyP1JWX9D6UHYlulnqPNCKtTz50kIqU7VZZ/cPtcGtIHI80J5LaJcTtykdzphiurCdr1eb8/X+o5WQBki+Gtx0fQdW4oBKTAaqwu2CQxJWc8B5gibQbkZhnGT6IS38V7SZjQ8pjW2Qd9FTOIXzM+xlVrZ48RA/RQApGs3jcFPx3Nok2jHksxLecScV2xlTxlZPtxNFs2DhHydYRAzK3+nJ1YrzW3pSXnvmeURmJQegtVKaOKZP4HPw19U9YXJPm7hZPgPqEw/LntR0BubS/xm+J/ICbzMVS+5Ru0taKi1b2SesJ7K3l6caJQ9AXV5gVRZw32Dh2VNKs7J1bsGLM5ldnJfsUK2pf3TJtPUEdEPh0XVnI1nIuj4gOVWDSdnXijx8bSFuB7b1ZDnKU9E3GFDYHhN2plYq3bpP2+3wiUwT+jBNv0ZxecYE4N8vYII8Gy+FgS5vch3ZIX8AnGr35vQO04Rn1XXn7Xhrmko0sx+CdQK3eizpxaJpvywCS0Llcwrac/6hYcyuGkViHGHxyHu/3YU4sP1qLri3gx/kWnkPTqjmK9Dnwi9zI5ADt5W/Ie5SPUE2Uv8zz2+vgS398ru9vkkvTXETNkMFZto/bc578soOoNxZUIDx9oQ+xHXUUO3hgJB3o8GC3ufqk9kooTs0bmsls+NXAbhLsTejxK75AAwHHhEg01Tcar4Ctm5/1QEYyUin60pq X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(7416014)(52116014)(22082099003)(18002099003)(56012099003)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QWIyVzB1VjZhazFmV0dEZ3VQeXc0Rkw1WlF3WU9PcjdXbjJuZDNWOElYK2p4?= =?utf-8?B?M3JzZW5TVitrY1RCSXVzUitUTDNoTkVQa0Q1TUt1M0g1V3VUOXd2dW1BVHM2?= =?utf-8?B?S3V2VU80c1JMVm5qTlkySDhGaDZ4djJxalRlYTlzNHhXbVI1aWpwMWhHTXRK?= =?utf-8?B?STBIMFE4cGdIWUpOekZreGJ5d2lkVDRNU0hVUHJXZmJwY3JjUWxnVWRJWUN1?= =?utf-8?B?T2FLc2t6WWpqOFFpMDluY2FYVHB0UnFleEgrTkxNai9mVWlPVkU5c1dmUGN2?= =?utf-8?B?L1pSTWVIWEo4OHBxRGRld2NiSFdjTmdsMEw5QjU2dHBMYmZXUEVSUmlKdm5R?= =?utf-8?B?V0xoLzVrdTZSWTd4SkgyNDBmQmZWSngwczlndytROG9GaXpUMkkvaHJYOHky?= =?utf-8?B?K2huREsybEVPWDVFL09GSmVlR2dhWEZmV0pRQW04S2REeDdQZ1NOQ0IzaFNq?= =?utf-8?B?L0FMaW01VVhtOEVsaWVVUHZqdzlOMDRDc3l2RkYzek9aRktlUUJrU2NOdFdV?= =?utf-8?B?WXNjeFVLRVJaOThHN3FLS1VTcDg4SVFvL2pqSXpTbmV4bTc0VytBNTFTUFJ1?= =?utf-8?B?bVhvVWU3VzRGUy9TeTZTcUN4UWVQRGh1aVhBaGNFYW8wcWdORk5zdHU5K1JR?= =?utf-8?B?c1JRWkg4VDJYT1JteFdsM3luQmJHcVRPWVVYSUhSQUdJcU9mSkZveHVFb05N?= =?utf-8?B?L2padm9lV0xYemtlNEdYMFZMYjRCVVR6OFcxT2VrUVA5V3NmeE1Pd1IycUhq?= =?utf-8?B?enh0LzFRZjRkdFBkMmtBb3pKakFJa0dtNjdwQmsvZXJTMVFuTmVkT2lscXlu?= =?utf-8?B?YXZKOVV0a0xPUHVudUJPUEh0TE1LY1UvMHd5Ui9EQlVoaEYxWFlyV2V5N04z?= =?utf-8?B?TnpYWFZtQk45dGkvREtrZ1BSaHVCRmdMSUdraEwzdWRNLytVMjRUYjE0dmhh?= =?utf-8?B?eVFWRDlncjN4Rk5vRTVZVWJsazNKM1pMb3BndUpHY2M2aEdTVzBZaUlWdG9E?= =?utf-8?B?MUcvODZzTUg0YU45RVZDSzZRMWF5RTFtSVBtbHdXRHFaMEhicTlITXlUY1R6?= =?utf-8?B?OSt3Q29uRG9CSE9Pb2ZVbmNoYk1RbDlGdTc4OHhPb3Nwd0o0RFFYOGI5RkU0?= =?utf-8?B?bE1SY1ZoQ1o2UU05NzdWcnd1aTlMNjFSbTFVUndCWXdWanM3Q01YbzJUMlNX?= =?utf-8?B?ZVZJd2dqa2I3MWNxdSt0NDRkVWxFN25FS0ZOYm5oZnkrMnpTbVk3U2dQeVhH?= =?utf-8?B?eUIzVVVEQ0o2Y3lkZi8xOTltQ1d5anQxeW5ucU1vckJ6VE5VeE5MRTdaYnhN?= =?utf-8?B?TG4wN0hZd3FadG8yVHdGcXFHejJDTEJ0dnVKV3hIaTJmQWdDOGJ0SUM3a2xq?= =?utf-8?B?WE10VDhQRDJkbVRReTN2N05tbzA2V2ZHRTg0R1FNUDVpNmppK1YzN0N6UWdK?= =?utf-8?B?NHZreXFEdmZxckppc054SHowNXN1UmlieWUzTlovT1FuVVFwNk40NjA3Z2ow?= =?utf-8?B?cmZJeGtRdHI4WGNYSFEzdlg5ZVpnY2k4ODNDT3o1S2ZSS0tPbVQ3ZitRS1di?= =?utf-8?B?UWIvaG9wWHprUjE1UFFVdjhaY2FDcGtsbVNMQ1ZQZGNUWTJMVVBzNlhkUnZq?= =?utf-8?B?OG1Jbkd5WU5XNFJ4dytWRWo5UytBNTZQeld0K1hRMHo1YWVrK0Z1MDdEUnRE?= =?utf-8?B?SFJRb1gybkp6NFFzSVpheVZOSmJNREIyVW5ZTEVNM2I4bS9CQUlpbGRBVElP?= =?utf-8?B?NTNnSFdoMGNQSDk0b2tqY0pGTmxVY0RvcTBjVVJ5bHRiYnk0ZENyT1FnLzR2?= =?utf-8?B?NXExME5TSnNvRUZYeDczYnozSXRhdkN0ZXg2bW5hcGYyRlpmQS9TOUJ6aHB2?= =?utf-8?B?SklrekJHTmVxWTlwV1VJT3pNUkVCZ1pVd3NlOXk4UTM3Ni9td0huZjF3WTMy?= =?utf-8?B?TkErREZYdlg1YU0rUlFOY1UzdUlMVGlPaWw2MVJYeGIzcXVFYlNxejhLaXNv?= =?utf-8?B?MjN3MnNiLzQ4SmtzYmxRVUZMbm5zb1NBS3p4M1hvSFgvZW5RNnJWVHlhRE1W?= =?utf-8?B?d1hRTzdXOHFsNW9HT01sQ0xkd0N1emVlMlYvYnYyQ3R3UkltSTRQN1ZQL2FP?= =?utf-8?B?TUpTZS9Fa3F5S3JPcXc3Nm1YK2NkMW1wU1pLYWZ2V2tLMHgwNFZtaWIyUlBq?= =?utf-8?B?K3N6aWlWYzdTOW56UERMN3FYOVMxSVRJRE1TMFRDYTJWeHZSU0F5eW1jYjFT?= =?utf-8?B?RjJvNExES3RERmtmbkM2UlpoNXVBeTlnWFMrVWVFaWE5SVphSlhUL28vdHhZ?= =?utf-8?Q?iyV5z/k0pQblsXihLi?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 54095ce2-1f36-4bfe-d94d-08deaa389b18 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2026 23:55:23.1364 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZngALoAsluBfGYkv/CXcl5higfRc44tEVgJEYbvhDTGnHOeYGc/tFE+Mh5yqO/cxZ/SkeH8B2cH1qvU3yuTCzg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10511 Add flexcan2 overlay file, which enable flexcan2 node and disable micfil node. Signed-off-by: Frank Li --- change in v3-v4 - none --- arch/arm64/boot/dts/freescale/Makefile | 4 ++++ arch/arm64/boot/dts/freescale/imx8mp-evk-flexcan2.dtso | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 711e36cc2c990317130e0d691fac619ee03d8482..76173db184f5593153591bd5d42= 7cbac91e4ab75 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -246,6 +246,10 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx8mp-dhcom-pdk3.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx8mp-dhcom-picoitx.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx8mp-edm-g-wb.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx8mp-evk.dtb + +imx8mp-evk-flexcan2-dtbs +=3D imx8mp-evk.dtb imx8mp-evk-flexcan2.dtbo +dtb-$(CONFIG_ARCH_MXC) +=3D imx8mp-evk-flexcan2.dtb + dtb-$(CONFIG_ARCH_MXC) +=3D imx8mp-frdm.dtb DTC_FLAGS_imx8mp-hummingboard-iiot :=3D -@ dtb-$(CONFIG_ARCH_MXC) +=3D imx8mp-hummingboard-iiot.dtb diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk-flexcan2.dtso b/arch/= arm64/boot/dts/freescale/imx8mp-evk-flexcan2.dtso new file mode 100644 index 0000000000000000000000000000000000000000..f7d2674c45f72353a20300300e9= 8c8a1eba4a2a6 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx8mp-evk-flexcan2.dtso @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright 2026 NXP + */ + +/dts-v1/; +/plugin/; + +&flexcan2 { + status =3D "okay"; /* can2 pin conflict with pdm */ +}; + +&micfil { + status =3D "disabled"; +}; --=20 2.43.0