{"id":2198485,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2198485/?format=json","project":{"id":42,"url":"http://patchwork.ozlabs.org/api/1.0/projects/42/?format=json","name":"Linux GPIO development","link_name":"linux-gpio","list_id":"linux-gpio.vger.kernel.org","list_email":"linux-gpio@vger.kernel.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260219-pinctrl-mux-v1-1-678d21637788@nxp.com>","date":"2026-02-19T22:23:41","name":"[1/5] mux: add devm_mux_control_get_from_np() to get mux from child node","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"2aa79ac1422c9cbbde6b5ead30d412218c0e073b","submitter":{"id":68011,"url":"http://patchwork.ozlabs.org/api/1.0/people/68011/?format=json","name":"Frank Li","email":"Frank.Li@nxp.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260219-pinctrl-mux-v1-1-678d21637788@nxp.com/mbox/","series":[{"id":492735,"url":"http://patchwork.ozlabs.org/api/1.0/series/492735/?format=json","date":"2026-02-19T22:23:40","name":"pinctrl: Add generic pinctrl for board-level mux chips","version":1,"mbox":"http://patchwork.ozlabs.org/series/492735/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2198485/checks/","tags":{},"headers":{"Return-Path":"\n <linux-gpio+bounces-31915-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=PZKqbMdY;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-gpio+bounces-31915-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com\n header.b=\"PZKqbMdY\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.159.3","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=nxp.com","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fH7GF0ybVz1xwg\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 20 Feb 2026 09:24:21 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 36947302BA73\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 19 Feb 2026 22:24:04 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id AE87532BF2F;\n\tThu, 19 Feb 2026 22:24:03 +0000 (UTC)","from OSPPR02CU001.outbound.protection.outlook.com\n (mail-norwayeastazon11013003.outbound.protection.outlook.com [40.107.159.3])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id DBDC632B9BC;\n\tThu, 19 Feb 2026 22:24:01 +0000 (UTC)","from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8)\n by FRWPR04MB11281.eurprd04.prod.outlook.com (2603:10a6:d10:19e::19) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.15; Thu, 19 Feb\n 2026 22:23:56 +0000","from PA4PR04MB9366.eurprd04.prod.outlook.com\n ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com\n ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9632.010; Thu, 19 Feb 2026\n 22:23:56 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771539843; cv=fail;\n b=RIaj8p+6c9krmMkyp/nQaRklTluvJot0MnCuNtLbU0xVD9T44JC7JJtpGi1AFY017luktpmbpHTB4Giysld06ftCjpMxZQMVTPMZynvspMxFMk6NKAOEq2pRsN/4PpZ6n9IKotM5vkhWDhGkYTnD5vd62dL9MfGi4fZRsFTL4Wg=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=EBZd28aVuTTbco1FlQwmTSNCPjDQ5w1cIIVIE0rWdMR0AiAugIOpgpcr1+5LnG7Za/SGmV7kQh7zLB6TL7FKcgb8VpufW0FTqMjMyVUQ/a023UXnqkxmleXbg9AqSGM434tL/Zzvnv+1pgyOVjGlbKbSoCCP4xZcO0ntaWX0WqWPCzB58XlZgSViUxeUz7Q8hrLoDCfLJKMBlBGRN5yNJgFwVLR2WzJB76gm1f99eBPqU0azxVHpcH6Kjw9tbpgIxSL/DkadNhScYYdi4fpXJXhtD1HQ0+wCRiSPPYfGBkXNfurKpagrifT2enkbrkLfB/BuYZ/Yb5Zeask78uBtfQ=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771539843; c=relaxed/simple;\n\tbh=R+sFjmiU24arthVzr8KSPc7GoQZUvHpvfgrliX83zYY=;\n\th=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To:\n\t To:Cc:MIME-Version;\n b=Th4lTBM4HCyGLaLzRNGY0zq8tWIcw6TzkPibiykeiybIn9TMuL9B7MAqKB1j+6/V57SkN0kMmNP2PrcQvXaBjEwODjqRHqlQiKQQ0Wr093cC8MzcoBqnTAceF6IJPfhAB1Jp12lkUkzABFQmWy0Y0y/U3ItMsh2iBN0EvC3jwZ4=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=+scYNF5xd6xXB+7r0j5hCGjS868yaJZfaEBtEEMZbKg=;\n b=taZ7KG8yucUAN51oZ2SXzq5P8/jIqRbev5RI/rqHHiwxEGR12CzxrZVYAH2nkI7DGy80uL8P38wT5XaEoEy6JWfSed7KzxWsCmRAFeKSgjed8O6syNkQt1rQGc3sK34F4nfZwMQ9PEuSaUFfXt52mL1SF8NTKXXQMdsQSo+N9wTOHgdITXFdF+B/6Unl4fkA5wW6pXx2XgYPDCryoGdaQUX1EDWA8faXmKNzQcURXpQrwCRQmsL/FIFbeO49yqD14TgOtCzFGcgzzfZvrVuGtqQtj+V5xVEyGZjVY0g/zCvf8VrK2JiV/dFFtW3VCuUCEv8svd8uMGxwQYJqhoghcw=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com;\n spf=pass smtp.mailfrom=nxp.com;\n dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com\n header.b=PZKqbMdY; arc=fail smtp.client-ip=40.107.159.3","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass\n header.d=nxp.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=+scYNF5xd6xXB+7r0j5hCGjS868yaJZfaEBtEEMZbKg=;\n b=PZKqbMdYJSP2K0CJ27rG+Sj67LFcy6KnbO4u1vKBWCNxZpsEIvYmXODDHk/2LaOkqzT6kBSGPC5M+F0JK6ebKKlWbT4LW8gHGCrpdbck1MpxjnCT3HIK9/HCLGfoK5IRJdFi0hLqVzRZSo0OMnmscuD8EZWFCsHB17AMEyLec5gXIJQLUFDUoY5RSaDsC4RD44f5vo+IVWICxuIXnwNBxuwkMUF4gvHmxWyfonp4XHZwVrhOl1pqM939iXKZV+B0l1lQq1jUIm7wIsLZDZJZ+nA9Gy9IdVdlQJgeL5ByrjRa8Z6aQkv1NNhyP1TPJHaaHA5d3FkDrP6nErAKSN4TWg==","From":"Frank Li <Frank.Li@nxp.com>","Date":"Thu, 19 Feb 2026 17:23:41 -0500","Subject":"[PATCH 1/5] mux: add devm_mux_control_get_from_np() to get mux\n from child node","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","Message-Id":"<20260219-pinctrl-mux-v1-1-678d21637788@nxp.com>","References":"<20260219-pinctrl-mux-v1-0-678d21637788@nxp.com>","In-Reply-To":"<20260219-pinctrl-mux-v1-0-678d21637788@nxp.com>","To":"Peter Rosin <peda@axentia.se>, Linus Walleij <linusw@kernel.org>,\n  Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>,\n  Conor Dooley <conor+dt@kernel.org>,\n =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= <rafal@milecki.pl>,\n  Sascha Hauer <s.hauer@pengutronix.de>,\n  Pengutronix Kernel Team <kernel@pengutronix.de>,\n  Fabio Estevam <festevam@gmail.com>","Cc":"linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org,\n devicetree@vger.kernel.org, imx@lists.linux.dev,\n linux-arm-kernel@lists.infradead.org, Frank Li <Frank.Li@nxp.com>","X-Mailer":"b4 0.14.2","X-Developer-Signature":"v=1; a=ed25519-sha256; t=1771539829; l=6437;\n i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id;\n bh=R+sFjmiU24arthVzr8KSPc7GoQZUvHpvfgrliX83zYY=;\n b=bq9QcpC8vF765JWX2elUc7f8zclMQQVi/j/DFqNp2qgjXQdk7LduFuI2LSizmizsFuxkGdlTL\n YdTd2AhaZXuBbl3J4sP6MsH6BfLCCHn10i7ZZGQt1HZZOiFc5LG6rmo","X-Developer-Key":"i=Frank.Li@nxp.com; a=ed25519;\n pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q=","X-ClientProxiedBy":"PH3PEPF0000409D.namprd05.prod.outlook.com\n (2603:10b6:518:1::50) To PA4PR04MB9366.eurprd04.prod.outlook.com\n (2603:10a6:102:2a9::8)","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"PA4PR04MB9366:EE_|FRWPR04MB11281:EE_","X-MS-Office365-Filtering-Correlation-Id":"65072447-83a8-4222-bac5-08de7005921c","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|376014|52116014|7416014|366016|19092799006|1800799024|38350700014;","X-Microsoft-Antispam-Message-Info":"=?utf-8?q?NyhYsqPYhtVSFZF4utTaBORx8+REj9e?=\n\t=?utf-8?q?dw70vi4Ug0LcxwWiuhfSxfAkApXn4StdcCW5Mj8cX1dkuOUTfT/0g5v5BGVmGQSgq?=\n\t=?utf-8?q?Es1xB8VkJbF6NNwcaAPwl7U5U5eneNixSccOk/yXD9lO2R9LRxzktAC6g1xbQCmA3?=\n\t=?utf-8?q?eGkYyWneAR2ePx1NPQQQ5qkbB7ALPztR/U8gMcs0cLD78w9p2vMq/A/xIrkK6DzhB?=\n\t=?utf-8?q?in36o63LGlJK+vlsZzBHxafEWAqZCMplr6aSDU+P43g/pnlsBjJhX8OTDYCLPmdWm?=\n\t=?utf-8?q?jO2+QlGn1yfXVtYw3LNhZKem2N/qJQdnAb4lUhWSw/YhgRpGVgWrxymkTqeKC5oKd?=\n\t=?utf-8?q?wipUtWRXqgZOxlwTe18pgfKv9XdnAOSVOqsBt7om7pMu/F5wDoMXaPDBFaAV2rU1/?=\n\t=?utf-8?q?Sfh8iQSULuez0p+FMvsg4J1Ms2RVXMnIFnIKr4L1rnFzn9Qk0nj1W3i+tsuODh5jg?=\n\t=?utf-8?q?fyWHZ9WdpQYBGllZSH4KRTpdxytk9syPVggyJnvY3m76/Cv+1V8bZ5shFA0jqFlvZ?=\n\t=?utf-8?q?TxG3LrG48yL9WnHcaRE+dsHAH2pssOkgJhZzbCccnexFHorhBIjARaa5BQFH79jT7?=\n\t=?utf-8?q?h+plVsZZm7vDfSB1hRw+tgUnBHe6Nh3Xd8wSMZ6NA4sGuLBUWAheO/uxVKydzCA7m?=\n\t=?utf-8?q?BSU0sTcDiGHbBiC62nXYIHqFlqyTs2LXqPAlemHPnIOA1oGWjeksB5y8xdZyfi9GM?=\n\t=?utf-8?q?1ppbN4VcXVYIYWSqPW8PBLzR2qW72+Na+9W/5QUWMlBPE4zPdWls4YsOeEmi/tIdv?=\n\t=?utf-8?q?FR++5G92wIAp5FUf/k46Sy6KaNtR+V/nfBmrdlDD38R7XH/MxySSw28zBc7dUit0m?=\n\t=?utf-8?q?LlIgvm6EsOqaVIMusn99QVC0mh1k8zq/vgx6f/Vjuu0sK3nIqvV/yxstx3jqog9Jo?=\n\t=?utf-8?q?2VCMpXQkLtliE84oi7EZJqMRUJcKqKkrta4109qfKZXHhAb7poCzAD1ikxuXCRk8i?=\n\t=?utf-8?q?/7kIKSrqm0oeERl9fiEyMLKc5v45GArzKTcZB7YqTdXZ+mp10OHalVFKc0cC5B9rD?=\n\t=?utf-8?q?32BG/CavIbcBi0qt3Alig8Gi9EDBWLyDHW1i1CKMkAdsTj6T6ctiSJr4Wg8GizFrW?=\n\t=?utf-8?q?zYs774UOO9zvjbP7bap8sR8wODpEbQ3q9SgNMyZUKeppMFb6MqD380luENoTkogWp?=\n\t=?utf-8?q?SMAHjsOCuEy0N1O/hOEt726y82vFSk80zpWiaDOKPHKJdY3jqHNG1vZv61sM4q6pn?=\n\t=?utf-8?q?tYd96zgZ6CznpDKP1avDzxuE65luqcVzHt3wutIX1Sui18brYED17dHpIfiX9jSjE?=\n\t=?utf-8?q?cNId7z13pWknCkjxkZvx3Ats6K81u8Ej8D/t/F8IKFurYtBisEwJ52IBOZWDzpDFL?=\n\t=?utf-8?q?78/6P7QX3i5heozvNIK4O3EoB/caMpEJJueeni90xMLQowXf9JTaJ7XMXgEFH313l?=\n\t=?utf-8?q?XO2ngFwQBtWhyGTlzizJxV30HfoWjG/yHnMCdJiPd0qIWGMrX5yZ3VP1SKTE86qip?=\n\t=?utf-8?q?LcFphUolCwdZErTDuDVaLJBmoKGAKoU45RL80OdMwTCwPJrlD/q7GkQg+i648n8hP?=\n\t=?utf-8?q?WjU0IyxlbD0u0lf7daum82++O/4W2NExBKdcGU+YwQ1vBYL877js=3D?=","X-Forefront-Antispam-Report":"\n\tCIP: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)(376014)(52116014)(7416014)(366016)(19092799006)(1800799024)(38350700014);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?uV1A81Dzq91VU4h/RvDARI8YokFv?=\n\t=?utf-8?q?MGTXiXLzdchfgtNVd+QpyeruzyE8uZgkgMtiBzokrsCWq71brU38duVom2y7NhDx2?=\n\t=?utf-8?q?moccJ84tBEeTFDgHRCVARcKwwFAIB8ZF1FvaPyOfyUQKr5lFrWKBlYWndrNCHCMYG?=\n\t=?utf-8?q?GO7EszMKgX5ZCm9WkH3orCbbVer6Qc2Sld/el9EDlUO361OFqL7m7ACkDalAOLPMs?=\n\t=?utf-8?q?eKoEOVjwXFU0jk8OaJMLbT50aJt43bbucW5plf8VsLwbAMJ81QuBduzGaP2SwmzBL?=\n\t=?utf-8?q?nOoSi31FSX6uyPPp9ONyLQEc90rb0Cir3DQ86oOh4akEGLL6f0luQ3SSPogMGm2A3?=\n\t=?utf-8?q?N4mvEGkgYTxickGL/LPcl2vm6ueYMxEqN7groM/DY4t7zX8TCTq+bGUVH6M1M62Nk?=\n\t=?utf-8?q?5SWv1UkvP9GxB0KeweJZ1IDl31vP+LmkHerM+y77DklzOaKBXVmMNVPycEzFPDdbF?=\n\t=?utf-8?q?32DCjJxZ6bh07Z/592H/RGv6VfMbDdIR6AsmBcQCZnMLysU4S16J3Pc8NZvIgEPkM?=\n\t=?utf-8?q?e/vmXInnixemkqwD6+VZaxS51HhogbQIbs2VA2j8VkuG5lvzYWPkNvbWQ2sOgB6Jo?=\n\t=?utf-8?q?khOCVJTHwMEzsFdk+VbJrRJxfMStQHgr8U4ME6FsP16BmCa/m2ggSfK0jfBzGctXO?=\n\t=?utf-8?q?J99FAsuArT+MF+K8Xn0hDX1TpOn4XcKFYmdkuu/ORHVHsxNnyLiXGcak5R+U6dSqo?=\n\t=?utf-8?q?kfyDy1FTQmpWr1EC8zAPJTLy2S1nCPTj+KBAB29pLDl19mmcnxsH98G8XYRgCfCxt?=\n\t=?utf-8?q?k5sZdlC9fCUeXyOZnKqbprR/nfGGJSeStS/EZyKKV+LOPHOs7Er5DKTMVvJKO5Vef?=\n\t=?utf-8?q?j4sO/aCR7WsSQp6AXU1nrlFL7N6/IuIm6rhQCS6qJcQo2azroe88q9uiOvheoubu/?=\n\t=?utf-8?q?wR4OqfGurgQUimjg/Hq2gSiSB7puLdZcZreByUDyp13RPGuor30frxsz/d12gg47I?=\n\t=?utf-8?q?BSTQxkwQ1n7XbWFOf7FeBl8RTonM92+2KFa4Axd12+Cd9E04LIF7BybhWcz4f3jLQ?=\n\t=?utf-8?q?CZ+2TQfaOp4sc8vk9Z0oUQslJqaTvYh3ZOfqAVy5bTWQVuMlav1e2QwwGFGPmefJA?=\n\t=?utf-8?q?2Xvsb/dZJpn9G/sSPcNz6KVz8H9YXkZRIQeVM+CVuw8sLabb1O7b6HGX4L/kkmuQG?=\n\t=?utf-8?q?9FMODzQfoIOaTpD2yjCvCsro08efEoPxLB7dRbtF43Rl1SLbSVmp3W/2fPOOBF4FF?=\n\t=?utf-8?q?vd0/+qq2hXxpd500HfaL+oZsV4ShWiYDJ3IVeq6lkjDGsXUjMfkULuVKF5XZhOQc3?=\n\t=?utf-8?q?+qQhEAfZvnbYhNoLjehxySmMoIJBbo7mwrUx6BrzAxIOatYFfFYXKxl/T58aHIQuK?=\n\t=?utf-8?q?8xELIsoiLaXkyH35YDhAP8TS6OBdfSQaxqBVtFuGyNxiq0UUkeG66mRXNDAoByGPk?=\n\t=?utf-8?q?gaxtRRe2f4CHyvMhl9oCszA06dUv5j7ISYKvvcH5hAxowlWA96LC2Pj3AZBLtxOFM?=\n\t=?utf-8?q?g3daNJnrSVxbIgxMrK4a+Jkm+7+q36M03r4j8qeFE9X1ES2ab9aQiAUzkbGAfY8ZD?=\n\t=?utf-8?q?MkYFLf/H2hy/U9ONCxzzTlD81rLjPi5BoM+ePNXKsFKlSXFrd9kMhgcwkzlffn9WG?=\n\t=?utf-8?q?98mxNtlcR4dM/A75rvXqlydFRxad3bkPQyldM6bIRkDld/ymWlIAsNNam6oT+uNZd?=\n\t=?utf-8?q?a9/P59H+GE?=","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 65072447-83a8-4222-bac5-08de7005921c","X-MS-Exchange-CrossTenant-AuthSource":"PA4PR04MB9366.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"19 Feb 2026 22:23:56.3485\n (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":"\n H3FBcQwi7oLrPovjdcCB/8ZrHtsnCw6xujj4O+JZzlaAkYDkcyOKSOthEfYGu4DaIOehv8zGAac1Wln3I+Ef+g==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"FRWPR04MB11281"},"content":"Add new API devm_mux_control_get_from_np() to retrieve a mux control from\na specified child device node.\n\nMake devm_mux_control_get() call devm_mux_control_get_from_np() with a NULL\nnode parameter, which defaults to using the device's own of_node.\n\nSupport the following DT schema:\n\npinctrl@0 {\n    uart-func {\n            mux-state = <&mux_chip 0>;\n    };\n\n    spi-func {\n            mux-state = <&mux_chip 1>;\n    };\n};\n\nSigned-off-by: Frank Li <Frank.Li@nxp.com>\n---\n drivers/mux/core.c           | 40 ++++++++++++++++++++++++----------------\n include/linux/mux/consumer.h | 16 ++++++++++++----\n 2 files changed, 36 insertions(+), 20 deletions(-)","diff":"diff --git a/drivers/mux/core.c b/drivers/mux/core.c\nindex a3840fe0995fe0125432d34edd8ab0f2cd1a6e9a..bdd959389b4ee1b0b8a7367fadf2c148c8f2f0b1 100644\n--- a/drivers/mux/core.c\n+++ b/drivers/mux/core.c\n@@ -522,13 +522,15 @@ static struct mux_chip *of_find_mux_chip_by_node(struct device_node *np)\n  * @mux_name: The name identifying the mux-control.\n  * @state: Pointer to where the requested state is returned, or NULL when\n  *         the required multiplexer states are handled by other means.\n+ * @node: the device nodes, use dev->of_node if it is NULL.\n  *\n  * Return: A pointer to the mux-control, or an ERR_PTR with a negative errno.\n  */\n static struct mux_control *mux_get(struct device *dev, const char *mux_name,\n-\t\t\t\t   unsigned int *state)\n+\t\t\t\t   unsigned int *state,\n+\t\t\t\t   struct device_node *node)\n {\n-\tstruct device_node *np = dev->of_node;\n+\tstruct device_node *np = node ? node : dev->of_node;\n \tstruct of_phandle_args args;\n \tstruct mux_chip *mux_chip;\n \tunsigned int controller;\n@@ -617,7 +619,7 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name,\n  */\n struct mux_control *mux_control_get(struct device *dev, const char *mux_name)\n {\n-\treturn mux_get(dev, mux_name, NULL);\n+\treturn mux_get(dev, mux_name, NULL, NULL);\n }\n EXPORT_SYMBOL_GPL(mux_control_get);\n \n@@ -641,15 +643,17 @@ static void devm_mux_control_release(struct device *dev, void *res)\n }\n \n /**\n- * devm_mux_control_get() - Get the mux-control for a device, with resource\n- *\t\t\t    management.\n+ * devm_mux_control_get_from_np() - Get the mux-control for a device, with\n+ *\t\t\t\t    resource management.\n  * @dev: The device that needs a mux-control.\n  * @mux_name: The name identifying the mux-control.\n+ * @np: the device nodes, use dev->of_node if it is NULL.\n  *\n  * Return: Pointer to the mux-control, or an ERR_PTR with a negative errno.\n  */\n-struct mux_control *devm_mux_control_get(struct device *dev,\n-\t\t\t\t\t const char *mux_name)\n+struct mux_control *\n+devm_mux_control_get_from_np(struct device *dev, const char *mux_name,\n+\t\t\t     struct device_node *np)\n {\n \tstruct mux_control **ptr, *mux;\n \n@@ -668,16 +672,18 @@ struct mux_control *devm_mux_control_get(struct device *dev,\n \n \treturn mux;\n }\n-EXPORT_SYMBOL_GPL(devm_mux_control_get);\n+EXPORT_SYMBOL_GPL(devm_mux_control_get_from_np);\n \n /*\n  * mux_state_get() - Get the mux-state for a device.\n  * @dev: The device that needs a mux-state.\n  * @mux_name: The name identifying the mux-state.\n+ * @np: the device nodes, use dev->of_node if it is NULL.\n  *\n  * Return: A pointer to the mux-state, or an ERR_PTR with a negative errno.\n  */\n-static struct mux_state *mux_state_get(struct device *dev, const char *mux_name)\n+static struct mux_state *\n+mux_state_get(struct device *dev, const char *mux_name, struct device_node *np)\n {\n \tstruct mux_state *mstate;\n \n@@ -685,7 +691,7 @@ static struct mux_state *mux_state_get(struct device *dev, const char *mux_name)\n \tif (!mstate)\n \t\treturn ERR_PTR(-ENOMEM);\n \n-\tmstate->mux = mux_get(dev, mux_name, &mstate->state);\n+\tmstate->mux = mux_get(dev, mux_name, &mstate->state, np);\n \tif (IS_ERR(mstate->mux)) {\n \t\tint err = PTR_ERR(mstate->mux);\n \n@@ -716,15 +722,17 @@ static void devm_mux_state_release(struct device *dev, void *res)\n }\n \n /**\n- * devm_mux_state_get() - Get the mux-state for a device, with resource\n- *\t\t\t  management.\n+ * devm_mux_state_get_from_np() - Get the mux-state for a device, with resource\n+ *\t\t\t\t  management.\n  * @dev: The device that needs a mux-control.\n  * @mux_name: The name identifying the mux-control.\n+ * @np: the device nodes, use dev->of_node if it is NULL.\n  *\n  * Return: Pointer to the mux-state, or an ERR_PTR with a negative errno.\n  */\n-struct mux_state *devm_mux_state_get(struct device *dev,\n-\t\t\t\t     const char *mux_name)\n+struct mux_state *\n+devm_mux_state_get_from_np(struct device *dev, const char *mux_name,\n+\t\t\t   struct device_node *np)\n {\n \tstruct mux_state **ptr, *mstate;\n \n@@ -732,7 +740,7 @@ struct mux_state *devm_mux_state_get(struct device *dev,\n \tif (!ptr)\n \t\treturn ERR_PTR(-ENOMEM);\n \n-\tmstate = mux_state_get(dev, mux_name);\n+\tmstate = mux_state_get(dev, mux_name, np);\n \tif (IS_ERR(mstate)) {\n \t\tdevres_free(ptr);\n \t\treturn mstate;\n@@ -743,7 +751,7 @@ struct mux_state *devm_mux_state_get(struct device *dev,\n \n \treturn mstate;\n }\n-EXPORT_SYMBOL_GPL(devm_mux_state_get);\n+EXPORT_SYMBOL_GPL(devm_mux_state_get_from_np);\n \n /*\n  * Using subsys_initcall instead of module_init here to try to ensure - for\ndiff --git a/include/linux/mux/consumer.h b/include/linux/mux/consumer.h\nindex 2e25c838f8312532040441ee618424b76378aad7..6300e091035323dd6158d52a55a109d43ef120aa 100644\n--- a/include/linux/mux/consumer.h\n+++ b/include/linux/mux/consumer.h\n@@ -56,9 +56,17 @@ int mux_state_deselect(struct mux_state *mstate);\n struct mux_control *mux_control_get(struct device *dev, const char *mux_name);\n void mux_control_put(struct mux_control *mux);\n \n-struct mux_control *devm_mux_control_get(struct device *dev,\n-\t\t\t\t\t const char *mux_name);\n-struct mux_state *devm_mux_state_get(struct device *dev,\n-\t\t\t\t     const char *mux_name);\n+struct mux_control *\n+devm_mux_control_get_from_np(struct device *dev, const char *mux_name,\n+\t\t\t     struct device_node *np);\n+\n+#define devm_mux_control_get(dev, mux_name)\t\t\\\n+\tdevm_mux_control_get_from_np(dev, mux_name, NULL)\n+\n+struct mux_state *\n+devm_mux_state_get_from_np(struct device *dev, const char *mux_name,\n+\t\t\t   struct device_node *np);\n+#define devm_mux_state_get(dev, mux_name)\t\t\\\n+\tdevm_mux_state_get_from_np(dev, mux_name, NULL)\n \n #endif /* _LINUX_MUX_CONSUMER_H */\n","prefixes":["1/5"]}