From nobody Fri Sep 25 19:20:31 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11022080.outbound.protection.outlook.com [52.101.66.80]) (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 29A1A4B66C2; Wed, 9 Sep 2026 10:13:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.80 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788948843; cv=fail; b=Jo0clTDHHgFhzCOsab24PZ0BAU9Y4pzTpYNszoKw5v4eusxY4ftkWT3JDvO/MKyv9sALaRKtiBU7zuAUmlq4lbGZ9eC6KZ0vBYp8lcYXbxlYqYdycXui2SwzT+X0IqvZFoVE6CD3pb1AWkizpB0SRxBtQCZ/fA42J8bKs2PgdQk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788948843; c=relaxed/simple; bh=Gr1YAJALi3AouD4e5XuzJ0v8KAWvpwPWlcL6zTI5+54=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=BVmfGhuLl+Aw5E5ys8FTYq+xzTeLFKUMRV6Q0q3bdJ2aJ2nNuYPgipCXlSVI51VZfknkSXt/wCJ/B3VaOrN4ozCtS4yiRw4xNNrOt2KCXS3HQOvEbLXyBK2Jn4bZgs1llOk05H34UTLDCC7ZPvIMrE++I7WCjuTyne4arBtKjIQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=vaisala.com; spf=pass smtp.mailfrom=vaisala.com; dkim=pass (2048-bit key) header.d=vaisala.com header.i=@vaisala.com header.b=DM9UbdnI; arc=fail smtp.client-ip=52.101.66.80 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=vaisala.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vaisala.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vaisala.com header.i=@vaisala.com header.b="DM9UbdnI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rzNENLB7YkXXHJRbjBIh69q8Dpw4X/34/6wxzqq7dASWfb9QWKJvN9jcd7arRuSufSoADCMnWyjC7nuGY2hYTXbk1/hZQ0hy8N3WSX+XhKKZJgR1pSXSPK6GaONpv7mXiOiSAIiwyP1v43D2wK6pi8j09TyoFw0OSRXXuHY9PGA0FGrV/kf4IgTxpniYnT/6m+iKZ9mnBm2B9yduSTGA/1SOHq34GUQxJpSkXEbbeuukWWBlGcohC0avtJZH6rZVBjaMaCMzaOEmlkcXSw4Pi8CA/4dumE2Qs2Ih89gFuQMDer5xzRCIoPN28j0vYicapdzXcjW4hQjeEXVDqWFnwA== 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=FomJC/bDvIu+G8jOMN4BGbvG9MVjlFR4kAKl2WreOzs=; b=M+r5yThMfNl9xb5Dqpv4ItNtqFd86m5ALy2CvxDS2aaQ0RzDR/zuUkvAc28A9zPchOaIIyczCAGGiP1UcbW/uQ/stiYvhetIAfL2axv7QWrKAvIqqlqCsy6zIWTVi/a1pk8QuQN7w/2qwykAIWis92YCyI1xYxcpmcVBWh7ctrLRgEOYacudO0wyvv4XUTwfqFxwp5B2dtmI7Lh+L101YQW0GviwAYr8Eqx68ba61xaOEgm5HmBDLoETGbstF/Z/9tbFaqDtPzBhghe3H7KcBBTX1hf5F2PSkScce2+xoaY9i0Cjrunvpgb9tb7v+QUJlw2tFr9FGwHiE+A9PTGxrA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vaisala.com; dmarc=pass action=none header.from=vaisala.com; dkim=pass header.d=vaisala.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vaisala.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FomJC/bDvIu+G8jOMN4BGbvG9MVjlFR4kAKl2WreOzs=; b=DM9UbdnI9kXJfWwENBihKvuGsuAnt6/jtomhuqLtZ8oQ2q05U6UDAhWL6NqNT5VePJNyrznuRTsXNDY3KWIlxU49rgZ1TFdMXwVyc+5t2DD4vzdWHcVtDDxqpneCHvIknnyzLbwrw5i4p5rS7vXro3pygkjVrnYl1ECgd6TRunhs0fwlTA18pvpF5xV/c4oKtOcWmFvU2D6bvRc2Mz1vkPZIWb1D7+5AUZGNt0UfA3htd15u9Tb5wGN8ro2faT4YvqqM1ezJmhD92L1XI3tFF3KR5o0n3ejuxLDFKTFWaFy22VFShVJEw+v+H9HJ6HhZf7dv4DKPVfr4l+o5oCeIEw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vaisala.com; Received: from AM9PR06MB7907.eurprd06.prod.outlook.com (2603:10a6:20b:3a6::23) by PA1PR06MB9209.eurprd06.prod.outlook.com (2603:10a6:102:465::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Wed, 9 Sep 2026 10:13:46 +0000 Received: from AM9PR06MB7907.eurprd06.prod.outlook.com ([fe80::a597:33a7:d4e2:1b17]) by AM9PR06MB7907.eurprd06.prod.outlook.com ([fe80::a597:33a7:d4e2:1b17%3]) with mapi id 15.21.0406.007; Wed, 9 Sep 2026 10:13:46 +0000 From: Tapio Reijonen Date: Wed, 09 Sep 2026 10:13:31 +0000 Subject: [PATCH v4 1/2] dt-bindings: mux: gpio-mux: Add enable-gpios Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260909-add-external-mux-enable-gpio-v4-1-3b12a767bb94@vaisala.com> References: <20260909-add-external-mux-enable-gpio-v4-0-3b12a767bb94@vaisala.com> In-Reply-To: <20260909-add-external-mux-enable-gpio-v4-0-3b12a767bb94@vaisala.com> To: Peter Rosin , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Greg Kroah-Hartman , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tapio Reijonen , Conor Dooley X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788948825; l=2577; i=tapio.reijonen@vaisala.com; s=20250903; h=from:subject:message-id; bh=Gr1YAJALi3AouD4e5XuzJ0v8KAWvpwPWlcL6zTI5+54=; b=4z9Bj7dC1pVctXuyodk3PqLPVJPulBOIgdfV2IMPA+fj/ZZtJmVukLHMEv8im1R/U9Y5HQKEl 5l5WWqNIiHFA0izRztR+L2SItnXsXJs/ZC5KwmabHhp5SWnPbpRNYKB X-Developer-Key: i=tapio.reijonen@vaisala.com; a=ed25519; pk=jWBz3VD84WbWgfEgIqB5iFFiyVIHZr52zVBPOm7qiGo= X-ClientProxiedBy: GVZP280CA0009.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:273::7) To AM9PR06MB7907.eurprd06.prod.outlook.com (2603:10a6:20b:3a6::23) 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: AM9PR06MB7907:EE_|PA1PR06MB9209:EE_ X-MS-Office365-Filtering-Correlation-Id: 7d5ff2d3-032c-409d-0257-08df0e5b08f2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|23010399003|52116014|376014|38350700014|22082099003|18002099003|56012099006|11063799006|10067099003; X-Microsoft-Antispam-Message-Info: OuOLGZge5BH3ZnNb54YKQ7atY7jO4w8pEgiiYqdTD3fWbGU+684/AgvFNFwqp0qwveaixRmuxjGsVc9wRAwSNaHcJ9lu3KQ91xhg3U/pY+/gZpb2dRUBVJqYvSZhIbvDuMXoD7AfEt2r/J749TDYS8LygUp6ZtW+PNlwS6b8L25q9b3eatwj62C5MJcLkBa7hiCuTLAspc96B3LO63FYfSflYXmzwPn7WVYbdnFR9SgRzCHJbfGtvZNu+ySvfbHhm4RGOGIeCSMffZSJWn2SpqIMj+RMQFR55sKv5VyjH6qLX+3dwE9ZwsjvQpFh0q6BNNokmh3UND/TzJPBEKic1DzcC80GqcMGmi6ibFN6mdosUlQx1AP8nXZ0iPi0kep3lCvYPMUokmQY7mh8y31bVN5bKgW4YAehT34pqbaExrHZCsxlVpdxj9ioAXisco103KX/J4Wjic0AgZocDfclCpHZbvJaojbMen4FTR1uiD3Y+KnGZEay03y+Pn1C3amyWWIuWHN8VuZamQC+/rWaQeidE9KHcb0jyKtqYzc4ehCAn6Fp91n8zxisCg1WogKm88AI25BOMwr0O72Ri77LZHke+Fdgo9BOvsawGc/T8RuBOgxajgzKpYAaQiuyatHzdNQUG8oJXJLxjU+v7CsfczST11Am3jQA32MmJaNjZeSvwpnWPoRzvB4FurfYhLHyKvJKCW7ETmOXgkWoZ9wn3w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR06MB7907.eurprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(52116014)(376014)(38350700014)(22082099003)(18002099003)(56012099006)(11063799006)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TWtyWmxBanFwVjVmUlQxdnJCdVVXVUtZTW5OMHlvRGt6TUF1cE5maGNUWFpI?= =?utf-8?B?dXNCWUVsdjZIS2RiUFVNUEU1eVNZYWowYkVkb0pERXdJVUQwUE9GdHcvbVVo?= =?utf-8?B?aFFMQVl4YlFiRzl3Qm9pdVdBeTZpdDgrRDlHT215NWdwK2xxTk5May9sWWNy?= =?utf-8?B?MElmNEdMUHQzZ3U0VkJsMGVqVmdtTmJHdFZLRSt0S1ZEUThneFRvQ21kR2pQ?= =?utf-8?B?T090OXF3ek1qV2o2WmRuSUlkcVdhMEJZdThBVzBCWEFpckc0TlVHeEt3aExt?= =?utf-8?B?aDVnSis5T3BMSUl4VjBFYjBwWGJ5VkZzRy9RUm9oOFlIYlRhUVd6RzVOdjlx?= =?utf-8?B?L0loMThJL1BJNHRMSy9kNUJ0TlFtSEhvWEVWNXZZWUROdWVvMDFPY2ltNHhW?= =?utf-8?B?c3l1ek9uSVhXcGR3djVtOEdleTkxNTMvL3M3M1d5UGtJUGk1RkIrQWpUaFIv?= =?utf-8?B?dDZ5T2MvNXQwanBrMDF1QVhhakFiOEl0dXVMYWtlZ0hHSmtwQlpCbWxLTm9O?= =?utf-8?B?akxmUEsrSnJIb0xRNG9UWlVIYmdXNVNRM0JFUWR2TmNHVEVKMytGVUNSUmNX?= =?utf-8?B?enZNaFU5bzdjYk9tcXRsa1hRVmdseTBMenUrTkxUSkdZZ0p4Q3BLTlVtME91?= =?utf-8?B?cGtjZ000OWlKSWt4RGFJeXV1V0ovYnkyT3E5dmFhZk5RZEhJK0pGQ0NlRENp?= =?utf-8?B?OTdCYncyb1cwdk44MURBblpwUVhXeFhKaE85QnZQWnYyeUUvZnpOV01lVFZ6?= =?utf-8?B?TW5KQUc5RDJFNjVoMHh2T3N4MWE4bGFjWnBlUHNoak5Jb0xzTmxRYzRveW43?= =?utf-8?B?VTZrb0p5MWpYNW5zbk9PeHJDcGY1eEJtamthbGg4S0FpeCsrZEJFUkxjNEZQ?= =?utf-8?B?dVBqWmxyK2lqOXdFZkJvSUJKeXdCTGFJTzFZVkFDL1FydUg2bG8ySWhCOXdq?= =?utf-8?B?ci9XeHNQM1ZmZGpMY2J3V0pEcXN4d0RHcVlvMVE4S2lxMmNkYmpENzE3d3JJ?= =?utf-8?B?Nks1czFmMGYwNTFoWmc2VkQvOG5KbVhscDNkRzBxT3JLMlJIL1pDdW1odWcz?= =?utf-8?B?SWFYRWNMa0pSK1hwa1ZDODZHZHErOXpKbGNpSEZMMjAyOGV6MWlHY092aHY2?= =?utf-8?B?YnA2V3Y5dktFUUczY0k3YUFHYXpMUjBzMW44NXNHTHhWdWZ0RkFoNm45REtH?= =?utf-8?B?VVNMc1BJVGQ2eC93Z3pVVEY0L1ozcWNnYld3MWFoMm9Ka1pneDJSRWZGdDF5?= =?utf-8?B?c3FBSGJ5WjVPeCs4KytqV1BXZUREVVlrTmNNZGEwVk9GSWorR3RuMEJyWkVu?= =?utf-8?B?YkxJQ0syNDJIQ0l0YktxeVJ0cVErdnRuWnVFVE83VE43UFowUVZvenB4TFl0?= =?utf-8?B?YWN2V3A2Wm80dGRpVFp1TzFDNFgxZUZsTnNMUnFta1hJYlF6VXBmVkxTaWhs?= =?utf-8?B?enNIM3Z6dzd1UGJTeGNDTkZmUXo3VzVtME9qd1dsZnV3cnZWaW9RblRpT1dZ?= =?utf-8?B?Q3plSTVsVUZnd3N5akRCeS9vajRmKzV0aTBGUUFGMFk3MkZoQ0VRb3dHYUQw?= =?utf-8?B?dWtkZE82UkVTVnNWRnBoT3RZUUU0L2YzaTJ5TEk5MXFWQUJvVmpxMWZmR1Nt?= =?utf-8?B?RkxCNkU3elhMd1dVQlNRQ2Y5YWNhRFVzQ2NDdk1QcFB2YlhXQXlZZnJCOWNN?= =?utf-8?B?ekQwQ1BiVDloUUdrSnJ5VDFXa0lvQmd1LzVPQzM2NUdWNGdSYU9vbS9qNVlU?= =?utf-8?B?Si9ZUC9IWkt1MnlLM2owTWhLa25rUDNLWmRPUlZEOW9ZckdVVk4wNHVXRVht?= =?utf-8?B?bk14TlplU3JESTJwWG55R0Y2V2lmYVJTYzR1QmNPaTNWRmZXSGppbStnOWg5?= =?utf-8?B?M05YSkJyd2VibXVCZjVTY3BMdVdpMXFCd2lHRlpDU0lNQVFFKysybmZiYWZN?= =?utf-8?B?c0tPMVNoUnZPMVBUUWwrVDBEVy95RHBXTnA5TW9jQjl4RjVFOHZ3b3l0d3p5?= =?utf-8?B?K3FObW5DTWNqVkRWM1lpK3VvTm0vb0pLS1hsSEJVSHZ1Y3J5MmJUSHBReDhT?= =?utf-8?B?WUw1dDZ2MUVwQ1lTekcwaVZQNEE4UmxTdTdBbVlETXVpOWdmcFVZQnJGMW1h?= =?utf-8?B?Y09yNkZ0NDVhaTF5a0xoWUphSGhTMk1KR2Z3bFYwOGppV1B5MDFwNHZlMnd3?= =?utf-8?B?aUxwUmxRcXg3d084SFN1QnR4Z0owUmxOd1ZjajhMZHlZR2pzeVpQdmlwWEh3?= =?utf-8?B?Nm9wQnYxYWhJSG0xOUN4RW0vNmwvS3E5WWJzN1o3dTZZclZNL1lueXJrVEI3?= =?utf-8?B?SkFVOGtZZTA3UnJmWEgxcTJ0bTM5MGt0aDhUN1ZWbXh1aytLK3dyNkhVRXFP?= =?utf-8?Q?DMeN6UKXzdVgVCtE=3D?= X-OriginatorOrg: vaisala.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d5ff2d3-032c-409d-0257-08df0e5b08f2 X-MS-Exchange-CrossTenant-AuthSource: AM9PR06MB7907.eurprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2026 10:13:46.5444 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 6d7393e0-41f5-4c2e-9b12-4c2be5da5c57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: wXyh+/69Af8PtopwHTXWZh3aXeBXf4YM5sCBojyTJkdiViYFJq0aobMzUAm2A8xPD9VRzoqlOzUMNJiuaI03Ibp/WEyL8Z1Xi57VyT7teu4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR06MB9209 Analog multiplexers have an enable input besides the address inputs. On a 74HC4051 it is the E input: with E high, all eight switches are in the high-impedance off state, independent of S0 to S2. A 74HC4067 works the same way with four address inputs. Two things need that input. The mux-controller binding describes an idle state of disconnect, which a gpio-mux cannot reach today because the address inputs always select a channel. And the address inputs are plain gpios that may live on different gpio controllers, so they are not updated in one go and the mux passes through the intermediate addresses on every channel change unless it is disabled meanwhile. Add enable-gpios to describe the enable input, and require it for an idle state of disconnect. Signed-off-by: Tapio Reijonen Acked-by: Conor Dooley --- .../devicetree/bindings/mux/gpio-mux.yaml | 22 ++++++++++++++++++= ++++ 1 file changed, 22 insertions(+) diff --git a/Documentation/devicetree/bindings/mux/gpio-mux.yaml b/Document= ation/devicetree/bindings/mux/gpio-mux.yaml index ef7e33ec85d479ce57c5fe4a780f81a08a6ab6ba..2dd94704fd7bde238af4e84af87= c2ad8e955eb14 100644 --- a/Documentation/devicetree/bindings/mux/gpio-mux.yaml +++ b/Documentation/devicetree/bindings/mux/gpio-mux.yaml @@ -29,6 +29,14 @@ properties: description: Regulator to power on the multiplexer. =20 + enable-gpios: + maxItems: 1 + description: + Enable input of the multiplexer, which disconnects all channels when + deasserted, independent of mux-gpios. Deasserted while the mux-gpios + are updated and for an idle state of disconnect, which cannot be + reached with the mux-gpios alone and thus requires this gpio. + '#mux-control-cells': enum: [ 0, 1 ] =20 @@ -47,11 +55,23 @@ anyOf: - required: - "#mux-state-cells" =20 +allOf: + - if: + properties: + idle-state: + const: -2 + required: + - idle-state + then: + required: + - enable-gpios + additionalProperties: false =20 examples: - | #include + #include =20 mux: mux-controller { compatible =3D "gpio-mux"; @@ -59,6 +79,8 @@ examples: =20 mux-gpios =3D <&pioA 0 GPIO_ACTIVE_HIGH>, <&pioA 1 GPIO_ACTIVE_HIGH>; + enable-gpios =3D <&pioA 2 GPIO_ACTIVE_LOW>; + idle-state =3D ; }; =20 adc-mux { --=20 2.47.3 From nobody Fri Sep 25 19:20:31 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11022080.outbound.protection.outlook.com [52.101.66.80]) (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 EAAF64CA776; Wed, 9 Sep 2026 10:14:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.80 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788948859; cv=fail; b=p1IF4TToHyp60vnIw6AkyDksQxYqPcMUNkTWSwm8GpRijTbWrKIeHvPkY34fh77L0P+Q56jZUoxFU/aidTi5wucGhqavZbgdtLsPogwCp1o8BgBlJ0l/ttkyfLFKCCKg4K7PQGC/MQJxgWzo8Yi1rnEMxAI4UvZ+HKMar3O/e2w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788948859; c=relaxed/simple; bh=80JtJW8xTHaLDQ5QvucXt2XalGNOGtTjQT1zfWKlWnM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Fr0UJ6IM9DAkLDIb7KHblYfgwn/BvMJs70kzE8netnJUyfIImGeVhwC8XlivrkMhTaZO+/Il3cq/OF/LuiqS1VDhsOGdfLQosK6KQJ1k80FfdocBaEPlzB0XC3zjkfzQb1QZt70iPFfN6OKQDUL+Kj7jLP11gfO2Zz3TNowlaaY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=vaisala.com; spf=pass smtp.mailfrom=vaisala.com; dkim=pass (2048-bit key) header.d=vaisala.com header.i=@vaisala.com header.b=MmKpqCde; arc=fail smtp.client-ip=52.101.66.80 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=vaisala.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vaisala.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vaisala.com header.i=@vaisala.com header.b="MmKpqCde" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cvWsH1ERW4eiSBWLC4od61YJzLgcM/n5wuJ1G7dmVFrqYE2O55SBVTFGAXxIQz6g1jN/1ipWbK47Yyf/7CzQeNxyovDYYeCCoGkrpyyzcHVSiHxRsiiZr9xuEwlD4v786zjlAKR/fGa7QHNAwEIKkc2CC/r2zdf96wTl1C2cJoOjZAaEIihWFqNyoEAirqIPTv+YJPBin66f5hX57rDwyJBNqlONJpdsKxh9B0O1e3NBNxW/NsVd6DD8TJ+ipWWGubX2kIW/dj+TGHHfvQ11fkVDGftbnpmRyt8/JZZ5U2XnZRauKSLTI2nR1HaCzrem6W+rjn8QovfeDXjmn68ZqA== 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=6Dg1r/eqW1yNi8/LfFC1s8WoFZcgBhUKmYPHcDcDzqg=; b=HQ0ujhc8XxDIaTA5MKYC6PIp2mcQ1zVkcTtkgKPmcm+F6qAVFNQ6OCq48b9vPRXflEq8WAP0VWMgmMJCdwJESTkNnw10acoUB8TJ9Jun9ySyv8m70JcEdiQpBEo4OfTbWLl1Iq/YUmq7mdrXWHUeq2SEKGhTkxRvsvex65vYGLdsAAYUejAjDbctBwFwdpcVTG+kc4/ddX/aRQ94+TaXKcE2c+GfWponcNFpWkEGFLBWSsAJ+WWsq1b35FkHepU74XjMA9Uwul1f5xoNWaTJEHAe1+IMO8GrdWJ1xsVmNF9Onu1NZrKLXP4litYqXdW6YtGSDotSuBTRtNfHhSsCpw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vaisala.com; dmarc=pass action=none header.from=vaisala.com; dkim=pass header.d=vaisala.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vaisala.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6Dg1r/eqW1yNi8/LfFC1s8WoFZcgBhUKmYPHcDcDzqg=; b=MmKpqCdeHYrWp3IWl4tt7henucMkphBwIc+B+wGQ9CodvKwBOXLH63WPyDkF/ybSu9yJeeXmUprbItEiwRbkqZzK9iE5+gbAspfp9VrVhewBKvx3qIdb/V5GC+AERU4Fe05o4zoBwtcU1VwRseZeLbqs8zPHbQb8OlWIwLbxUz/uHHLC4yqi+wc1m8VGD3HGrJF4Cc8cgaMe4aPdoNTYRodTr8cGWj9gOOtiXnnz4pYyKB1Rs3WzyURtLzp6c/F6b9vOERWpTlrI7CwgtmLaokqeIrUamUhU8IsaDIo2dbO80aedUp8bQMYCpMyPqAponGeoutzGK+JFpFcmNYv9IQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vaisala.com; Received: from AM9PR06MB7907.eurprd06.prod.outlook.com (2603:10a6:20b:3a6::23) by PA1PR06MB9209.eurprd06.prod.outlook.com (2603:10a6:102:465::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Wed, 9 Sep 2026 10:13:47 +0000 Received: from AM9PR06MB7907.eurprd06.prod.outlook.com ([fe80::a597:33a7:d4e2:1b17]) by AM9PR06MB7907.eurprd06.prod.outlook.com ([fe80::a597:33a7:d4e2:1b17%3]) with mapi id 15.21.0406.007; Wed, 9 Sep 2026 10:13:47 +0000 From: Tapio Reijonen Date: Wed, 09 Sep 2026 10:13:32 +0000 Subject: [PATCH v4 2/2] mux: gpio: Add optional enable gpio Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260909-add-external-mux-enable-gpio-v4-2-3b12a767bb94@vaisala.com> References: <20260909-add-external-mux-enable-gpio-v4-0-3b12a767bb94@vaisala.com> In-Reply-To: <20260909-add-external-mux-enable-gpio-v4-0-3b12a767bb94@vaisala.com> To: Peter Rosin , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Greg Kroah-Hartman , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tapio Reijonen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788948825; l=4168; i=tapio.reijonen@vaisala.com; s=20250903; h=from:subject:message-id; bh=80JtJW8xTHaLDQ5QvucXt2XalGNOGtTjQT1zfWKlWnM=; b=ZAo3/EP6xecP0vVlX3PB+fn+tXLnUTwnIKT6Ut78Sy+H2tEY0xKvS5MENRexecDjwJgT/AZHr 05WHYvUyCHxAcC17EiWHwEn9beymZtosbGN9L7nlmCezb9SMei7Ys+e X-Developer-Key: i=tapio.reijonen@vaisala.com; a=ed25519; pk=jWBz3VD84WbWgfEgIqB5iFFiyVIHZr52zVBPOm7qiGo= X-ClientProxiedBy: GVZP280CA0009.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:273::7) To AM9PR06MB7907.eurprd06.prod.outlook.com (2603:10a6:20b:3a6::23) 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: AM9PR06MB7907:EE_|PA1PR06MB9209:EE_ X-MS-Office365-Filtering-Correlation-Id: 81a48673-0fe4-48fd-6d7f-08df0e5b094d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|23010399003|52116014|376014|38350700014|22082099003|18002099003|56012099006|11063799006|10067099003; X-Microsoft-Antispam-Message-Info: uKHEjU05oROJpUchgvalQFhtswWh7i2W78VW/wmzPQdSZWaeSlx76KOHlOPcipsxs1BWFvAZBSb/u5I3EEUMamPJHU043vsCFI27kFxKD+pVpRGMABAKF0CvFoLk4jF3ZzGkM5Rv3U1+t2GaH75OYsWvZihJf5u5CbTlemy3yiTjoZY8+8J8utn2hx5Zs2IpklkCuF+yjoxMmBEQxHCSuESfQjBqek6A2z8kLcEIKe1HItGXCKgXMsUEBBU6Yv8BqjSDxZSWBYLXUL10XBG4GSWqnLYbIwa/s5zd3HXj96ck7IsCpfrv1ljyd35oODOIYZ6srrak4pUC1U1+9CIvPENA3Lh6qmakbGRu+7f9NzpBkWKOHiE0GyjJEWEfYxMNvpBEbGoTHF0sYuTMAxKOUTEMdhks0/2MpuWUQNIfw+0dVcsoZbBdlG9TFGbbDXO7/EdL2Jwr0Gf+pqUYIuPsb8wPR/wUPMka3/rchOd8OuKG5oZ6LCpN3SvVnYXtMfAqRhYpbJ2CT9kbcrNk1Ulz5BvJNk3G9Xnc//AHs4/PVKOB3HF+Nko7+7HJnuCL6pdhp4pAxB17FRAHzhDisQ82S7aLVrTwWQR5NhGEToC0A9efiqJOl7upaIYNv4AJhg+V8McCGeecIxBa3j18vbEyJ2BD+5dqKkfBSr+zBwzlqnokFyjIMBzWAZ5PnExKdDkBbJ5UtYTPmOM0xuXmS+aKUzquhjifcQsNoZNzO1nA0yk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR06MB7907.eurprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(52116014)(376014)(38350700014)(22082099003)(18002099003)(56012099006)(11063799006)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WG15ZmJjVkNadXhPOUlDODM1a3pGc2pjblZzNlM5Z2MyQldnWVg1NjYxVkdq?= =?utf-8?B?cGEyQ0ltbXFPUk9ZZENWWXNyZVJFSC9oWjVqMWIyMkpHYzYzOXZqT3I3aGpy?= =?utf-8?B?aUpiQ2hDWGNFVi9JS3RuZVQzamtWQ2Q5cGVBQ3o0TUR0UytRd0xHVHBhRkdq?= =?utf-8?B?d0Z5c2VaTGlGQkUvMEMrWkRrcWdPVG9aQk10K2RMODJ2S3BJQ2FMcGUyRlRJ?= =?utf-8?B?ZnVsb282eUJ4c05WaGM5cUt4bXpnY05Qam5CZ2NudXVHbTVMckhMY3BWZXhv?= =?utf-8?B?ZkJKN3FreWM2NUpPSWc4Z0x2bkd0SU4yeHhnVWMvMUZGNmU1NnJjNWZqTWFw?= =?utf-8?B?bGgwL3U3Z2UzMnVvN1pYdFNwNXM5emcvZVJvS3ZDdzNxWkxqL081N09JRDRH?= =?utf-8?B?dDQ4bFdmTXYzYXAxbXZKYXNUSE1uOFNRUy8rUVltQnpQR240UGtGOUUvdmtt?= =?utf-8?B?SFYybExTbnVybFpudWVQTFpidW9KcExHaWlsTUlZcjkrRmZsMkZpN1Vsb1Jj?= =?utf-8?B?eklhalFoRU9yU2xBRDFRRTNYQ2FwUjYwMXBtZWFHOGR2SkNqZ2FrMVJSc2lN?= =?utf-8?B?bjFxekcrNTQvSGRZanVkTmNtbGRoNE9FNVZiZEFmMUtuTXlCR1hHT2UxNklQ?= =?utf-8?B?bkVaRzl1K0xZMG5IdVpsOTZlMjB5RnlWQWt4aDlKVjVZWXhRR1V5V2lEMWI2?= =?utf-8?B?aElFZ285cmpqdnNVQVRNa1lDRmtDVmxKSDM0ajdRNG15MnRFUkxQMG5XZ29T?= =?utf-8?B?UDM5ZGc3ZVhQeUF4S0YxTjFDSzJjYkZicVJQTlhuWkFIZTlKNzdKeFh4Z3lT?= =?utf-8?B?SEtmU2RUUkc5Q29NUSt0WWltcXpRK1hVeUJQTTVhTGp4ZEwrSkhpd1FTYkZt?= =?utf-8?B?aWdsWFV2cXlCN01tUkw0SFNzWlBJNjhSRzNHTEtRUzFIWGFydGJEZk03eFBw?= =?utf-8?B?ekwyVm50N0FkMjdpRzhZTjBQQVJEWEVybVI5cWlWbWZDS2FkQ2IxMG5udytn?= =?utf-8?B?SVJvLzh0eVF2OExra0FkZHFjQ1h4d2VPazRjTGNOWWY3MnpNdWw1ZTBLWUdt?= =?utf-8?B?L01TdUlXZDVnWHR2WjlBK3FBNlNDMEpxalgyWUVscHJMUnJRM0x5cDBnVHZ2?= =?utf-8?B?OTVMZkZldnJrOHB4R1Fndm5hWktCenNEVjNkMG93NHVCcUZqTG93UGkxMWdD?= =?utf-8?B?ekovVkQ2blRwdlc0SVB4VXJNbDZjQ1BJUDgwTmtScGR3ZmZQemVVT0dDd2tj?= =?utf-8?B?aXhVWEJ4WWlHY2VQNG5tWW42bmx2Wmo5dkNjWVZucG5VMmYxVmgrV3J1TElV?= =?utf-8?B?TWh3L0Vvc0poaWdZYVQ3SjV0bzhkYUhnak9zSVhWSjQ1aE5MWkdwV1BiNWpw?= =?utf-8?B?ZFVmYTBzd1hVLzJVN3ZKOSt5RHBUYmUzaWY0S3lvZ085NDltb2dlckZlZFpJ?= =?utf-8?B?Q0VXUjlSN3liY2J3blRodW15eU0xbmtIeXI4ellhNWpPYzdLWUp3LzFoNGto?= =?utf-8?B?OFk4NHcxcmMrYVp0ZmMvQ0IrRkpWbTdKeXg0V2orRU9YcTJjZUljcXFONnNU?= =?utf-8?B?c25ta3FTWGRSNHpGcHJTb3lPSk1WaEpmdXlNckc2cnp0UlJlN2xzZy9pSXVl?= =?utf-8?B?NHNyenRJOHE4WTdXT3lRUmdLS0w5Z1NJUTdndko4bDhQb3lpVWp0ZEtzdTJW?= =?utf-8?B?MU9NR3ZwbkNUYU4wSWUzeSswRWtnK3BBZDZweFNTSzNwT0xiR0c3YklJMW9W?= =?utf-8?B?NElkblRxUHEzMWxKRk03OVl1dXhqQi9ibW1vZmp0S1NjVytkdWwxT0pKVVJy?= =?utf-8?B?YmNrV3pMYnU0TmhSQkg4ZHVFNC9CcVlkNDRjZFFCb2o3VWRvSFlHKys1U2Zz?= =?utf-8?B?QWtzVHBSMllnak44dTBMc2JZM3NIVUwxa1B2eTFBNXlhWGJtbUVhbDZ2Tkd0?= =?utf-8?B?RitUQXVxaHhjcnFsTDdtK0NtSG93VmZ5M0E3bkhISEhoZUh2ZExlb2ZWYTlo?= =?utf-8?B?MHQ1dXl4WHJZMjBESHFJb0VhcExlOUQ4NFNYNENySmRnTHRaNkNIeFpVOUtR?= =?utf-8?B?S3hIbStEMjRqL1ZZYXNNMXo4aEY0YXRWT3lCeGhMTFM2OTIzbDFaTGN0eUFT?= =?utf-8?B?bU5EUVBYUUN3YzJuTmt6QzNuVmVmR3dpTGl5OFlvUlBRb3hUQytNZHlxR0U5?= =?utf-8?B?TTlKL1Azc2hBcW4xa05BWTNGSzNWaERTSUIwcmFUQ1JrS00wcVh5NHlRbHVK?= =?utf-8?B?QW5hQ0U2ODFmMTdHNDlSdVVzeno2bnlKTEZnNEwvcXF5VVRtUGRSZmVJUjZy?= =?utf-8?B?RmNwc25wOU1FRU1HQnZwaDRiczNmOVRjQVlreUJaS2ZSY1FZditFb25yaDRF?= =?utf-8?Q?2e1SH3RQYZ4wdt0o=3D?= X-OriginatorOrg: vaisala.com X-MS-Exchange-CrossTenant-Network-Message-Id: 81a48673-0fe4-48fd-6d7f-08df0e5b094d X-MS-Exchange-CrossTenant-AuthSource: AM9PR06MB7907.eurprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2026 10:13:47.1653 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 6d7393e0-41f5-4c2e-9b12-4c2be5da5c57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SlrnZUOyVE8leqID9kNEf7TdXQgYlfM0BIkEknnIzBjBM0RpjrfMk2e11EMaklqhy/CqZOl5W+f4GJH7sS+cj0DxX02lHEseSyMXOgBXjkA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR06MB9209 Some analog multiplexers have an enable input that disconnects all channels when deasserted, independent of the address inputs; on a 74HC4051 it is the E input. Add it as an optional gpio. The mux gpios are not guaranteed to be updated atomically. gpiod_multi_set_value_cansleep() groups them per gpio controller, and only controllers implementing set_multiple() can possibly update theirs in a single write, so a mux with its address inputs spread over two controllers passes through the intermediate addresses on every change. Deassert the enable gpio for the duration of the update and assert it once the address is settled. The enable gpio is also what makes an idle state of MUX_IDLE_DISCONNECT possible, which the mux core applies when the chip is registered and after every deselect: it leaves the enable gpio deasserted and the address inputs alone. Refuse that idle state without an enable gpio, because the address inputs cannot disconnect anything on their own and mux_gpio_set() would instead drive them to the bit pattern of MUX_IDLE_DISCONNECT. Return the status of the gpio writes instead of zero. For a gpio on an i2c expander the write can fail, and mux_control_set() only invalidates the cached state when set() reports an error, so a failure reported as success would leave the mux on the previous channel with later selects of the same state skipping the write entirely. Signed-off-by: Tapio Reijonen --- drivers/mux/gpio.c | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/drivers/mux/gpio.c b/drivers/mux/gpio.c index f9c7863e51b82fb76ed03cf17308fae74716cf6d..2fd8c83dc22e10ceeb0b402f1a2= fada9a3032319 100644 --- a/drivers/mux/gpio.c +++ b/drivers/mux/gpio.c @@ -18,6 +18,7 @@ =20 struct mux_gpio { struct gpio_descs *gpios; + struct gpio_desc *enable; }; =20 static int mux_gpio_set(struct mux_control *mux, int state) @@ -25,12 +26,26 @@ static int mux_gpio_set(struct mux_control *mux, int st= ate) struct mux_gpio *mux_gpio =3D mux_chip_priv(mux->chip); DECLARE_BITMAP(values, BITS_PER_TYPE(state)); u32 value =3D state; + int ret; + + /* + * The gpios might not be updated atomically, disable the mux + * meanwhile. + */ + ret =3D gpiod_set_value_cansleep(mux_gpio->enable, 0); + if (ret) + return ret; + + if (state =3D=3D MUX_IDLE_DISCONNECT) + return 0; =20 bitmap_from_arr32(values, &value, BITS_PER_TYPE(value)); =20 - gpiod_multi_set_value_cansleep(mux_gpio->gpios, values); + ret =3D gpiod_multi_set_value_cansleep(mux_gpio->gpios, values); + if (ret) + return ret; =20 - return 0; + return gpiod_set_value_cansleep(mux_gpio->enable, 1); } =20 static const struct mux_control_ops mux_gpio_ops =3D { @@ -70,16 +85,28 @@ static int mux_gpio_probe(struct platform_device *pdev) WARN_ON(pins !=3D mux_gpio->gpios->ndescs); mux_chip->mux->states =3D BIT(pins); =20 + mux_gpio->enable =3D devm_gpiod_get_optional(dev, "enable", GPIOD_OUT_LOW= ); + if (IS_ERR(mux_gpio->enable)) + return dev_err_probe(dev, PTR_ERR(mux_gpio->enable), + "failed to get optional enable gpio\n"); + ret =3D device_property_read_u32(dev, "idle-state", (u32 *)&idle_state); - if (ret >=3D 0 && idle_state !=3D MUX_IDLE_AS_IS) { - if (idle_state < 0 || idle_state >=3D mux_chip->mux->states) { - dev_err(dev, "invalid idle-state %u\n", idle_state); - return -EINVAL; - } + if (ret < 0) + idle_state =3D mux_chip->mux->idle_state; =20 - mux_chip->mux->idle_state =3D idle_state; + if (idle_state =3D=3D MUX_IDLE_DISCONNECT && !mux_gpio->enable) { + dev_err(dev, "idle-state disconnect requires enable-gpios\n"); + return -EINVAL; } =20 + if (idle_state !=3D MUX_IDLE_AS_IS && idle_state !=3D MUX_IDLE_DISCONNECT= && + (idle_state < 0 || idle_state >=3D mux_chip->mux->states)) { + dev_err(dev, "invalid idle-state %d\n", idle_state); + return -EINVAL; + } + + mux_chip->mux->idle_state =3D idle_state; + ret =3D devm_regulator_get_enable_optional(dev, "mux"); if (ret && ret !=3D -ENODEV) return dev_err_probe(dev, ret, "failed to get/enable mux supply\n"); --=20 2.47.3