From patchwork Tue Jun 11 11:43:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Farouk Bouabid X-Patchwork-Id: 803988 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2097.outbound.protection.outlook.com [40.107.22.97]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B411A17B50D; Tue, 11 Jun 2024 11:44:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.22.97 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718106279; cv=fail; b=dI4XkHiWVJj8gq628In7gztQhgPQjlvhuvIsrSh1aPUv9utgSFBbG7BEBWEVSy+Uyo7F99mbfylrEILUeAScWC6pYyjgqsSzAqmHwbBTNlGA8i4IeWxcycHzV8VMLuFY6tkx1/0D/+Z7tGYeLlh76kQqGu+KQj26CbAcOVOcq7E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718106279; c=relaxed/simple; bh=JOZrUrNSD/xeJrxGOtvZknOW3Zx76zJJA7z6aDv1jWo=; h=From:Subject:Date:Message-Id:Content-Type:To:Cc:MIME-Version; b=Htq4/33ub0StPkBo2ktzyrZkSN2lcvFXL/pdBHTvn6E/j4A3VNZ27NvoZQMkcWSPJLfPFl21jjUsIQEOTJYssBoZsdyC6rjAhamZkbU6xreF46611wABZGRAwhBq9MmCCbe+000sXnO9sOYKNjZZzzYP6uxHITVuS/NFIshb0ys= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=cherry.de; spf=pass smtp.mailfrom=cherry.de; dkim=pass (1024-bit key) header.d=cherry.de header.i=@cherry.de header.b=aNHQmHki; arc=fail smtp.client-ip=40.107.22.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=cherry.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cherry.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=cherry.de header.i=@cherry.de header.b="aNHQmHki" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FIwzp1xBaoLIX9UlPFqcux5zxUdACOrcOLrXKgnoTIr+qV7PpxVFPDSE3sFQHbP3JySePYD0JispBbnVKrpBRuhfr8zkXs9lxHGRAOgV3HEZHYkM132jnPsGLR7xuITjAMgo3WLzpFX/x2rd0axHRfXaj5DwN1DE9e7nDe9x9qM2ReHsnKQvdtSd8CMZ74ZhpJ05AOE85k5AAicXy1MdVSJJ5OUckkTQNdrKnDN7MIgeToNlUYWeld3Ad3dtkFQnujJQXxy2VW2qDy+B/yt7ak565cWSf7lYoOEUZDkD2er55dj9MQXkytGYzvjYIpDc/IfmLLftBDdIWb00q1jk5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=C3l5J7jsz7J2az0lxLN9NeimRvs7dviCrrCG2dI7VC4=; b=ENOIc0VqOC1ewc2B6YNCEWWsAgqAH6+2EK8FmGYYcT2JUBw4LOer7Unh8wOTgXG5stDgpFdgWRr6phw+UPWobNyOX4wXSww/vBUCvOjlkvfV/l5HySpKhhHTmRxyXxnp4iihYdrLXSN5rwQWkskyb3VoPzylU/KRnpRjIlu54gHunjwgXCiFu5vpLPOD6KfUxHSdyjmoOgTwlgRjP8BdhnQOmHdyraeD7kUJFRVxiVR+J8CXNofZxZ71lxs1BdHQ6v+8v78DxPrbU63iVSyYtJrNhWoBE4vlWMCyh7LxjEgDsIRICLHBkqC/4O6JdSS6ueqB5BGc9ZBf/FzJjJ08ow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cherry.de; dmarc=pass action=none header.from=cherry.de; dkim=pass header.d=cherry.de; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cherry.de; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=C3l5J7jsz7J2az0lxLN9NeimRvs7dviCrrCG2dI7VC4=; b=aNHQmHki0p4SoSH/lkz0ZnG+0hD2WK4VeisYhDYHWQ6aqmgW31oZsJYWChUBn/cHb65hnTbeUH9cKN9sjKFHcKPdP0Yrv74pkYpgFnb14ffaH5U6jaNhdnE1qpH8fbtlqU+gk8i1tF989AnR8Bf21q6O5e05RZldsIe5+lEbBkM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cherry.de; Received: from VE1PR04MB6382.eurprd04.prod.outlook.com (2603:10a6:803:122::31) by GVXPR04MB10301.eurprd04.prod.outlook.com (2603:10a6:150:1dd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.36; Tue, 11 Jun 2024 11:44:27 +0000 Received: from VE1PR04MB6382.eurprd04.prod.outlook.com ([fe80::2a24:328:711:5cd6]) by VE1PR04MB6382.eurprd04.prod.outlook.com ([fe80::2a24:328:711:5cd6%5]) with mapi id 15.20.7633.036; Tue, 11 Jun 2024 11:44:26 +0000 From: Farouk Bouabid Subject: [PATCH v3 0/7] Add Mule I2C multiplexer support Date: Tue, 11 Jun 2024 13:43:51 +0200 Message-Id: <20240611-dev-mule-i2c-mux-v3-0-08d26a28e001@cherry.de> X-B4-Tracking: v=1; b=H4sIAHc4aGYC/23NQQ6DIBAF0KsY1sUAitauvEfjAmEoJKU0YInGe PeiadJFm9nM/8m8WVGEYCGiS7GiAMlG6x85VKcCSSMeN8BW5YwYYTXJgxUk7F733DOZlxl3lFR SAWkJoyifPQNoOx/kdcjZ2Dj5sBwfEt3bD8aaXyxRTDCpuajPTDdaj/1kwI/BO4HjEidwsZTeo R1O7Itx8g9jGRMdlR2vdcNV20sDISylAjRs2/YG8iWuIv0AAAA= To: Wolfram Sang , Peter Rosin , Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Farouk Bouabid , Quentin Schulz , Heiko Stuebner Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org X-Mailer: b4 0.13.0 X-ClientProxiedBy: VI1PR0902CA0050.eurprd09.prod.outlook.com (2603:10a6:802:1::39) To VE1PR04MB6382.eurprd04.prod.outlook.com (2603:10a6:803:122::31) Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6382:EE_|GVXPR04MB10301:EE_ X-MS-Office365-Filtering-Correlation-Id: d76bb88e-df4c-44d6-d9ca-08dc8a0bd800 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|52116005|1800799015|376005|7416005|366007|38350700005; X-Microsoft-Antispam-Message-Info: =?utf-8?q?C14yF9J7KCYRn+pzETGAdTCBLLi5rLZ?= =?utf-8?q?LqWuKy3Us8KbOAh+7e2DOncF2/lWU5Uuz0tbYgodJ7cA3huJqZrJsdzfjoP8O4Mq2?= =?utf-8?q?35+uxGwZFwLdAi496MvCIOWw63FwmCZ1yEv7mCPWZJD7ujaMhuQE/XVItkf2WvO1h?= =?utf-8?q?w9cRJGrE/6LkoqSmFLYEhIpUN8+0vA6zAa9+55SGgWWr88SXHBzJ8Kcfxe9ZmVAOX?= =?utf-8?q?4/v0eBrl5FdRWpD1prM09WkpTMRco3AiYhp9I68zWjeHrr4iWchwWbRe70HzICZD1?= =?utf-8?q?aA4sAUyRXfd8FrwOzZAiXyrKkEVsjyRb3l6u3/MpMPcryoub+bFrkyoCfqZndrilJ?= =?utf-8?q?FNQ9hANpRPBO7ygcXOg0jQZBfMn9FTUlHluA7jWFlobGIXhbTYLUlIH/OHjOnnffF?= =?utf-8?q?KAKdNGanZ+m3TBKP3xcB8qzA2upbJQDF6hsweECL9CU87k6Um9QnSwHdIBaYx06ka?= =?utf-8?q?scfIXPXEL8T5mq2csHIE4A8gYI1GnFJcaYXU2rxpPTUFJ0lFo2FIccNlw1+i1TwMo?= =?utf-8?q?5b/WTApSAmuD2+e6k/+NKSFBR62q3CkrcXGJ+Wxu/A53e1m3qGzRnR3OfiOrE4kom?= =?utf-8?q?3WxGYmAheEAZ8EF7UsG+MwC9qDiht6RtEhjN7qSU7svpTFNZcV+d4BGjoXi0xgpQx?= =?utf-8?q?kLMVhf7WaabX89iSHY1sA2/WWJks4+1IZcubCSo/e8N7BBY6YI7RD4yqhAQ68gCF1?= =?utf-8?q?+8tnu9wlhdz0QnofapHmtM7MhjByjdhQO83CGTW3ISuGcQPljrinf3V0hDAZm9Hkq?= =?utf-8?q?lk8itbLxfPhAYqrdeUZpp1Z00vwgOP/fR4wjGGP1jPna8lwzFw5Wg4QJ4ohl2hDBT?= =?utf-8?q?h4ktwlhlaXm2n80d+c9FNTB9Baz+I8K50YnNlmuDN9rRAFEvfY+C0n4AUr/O3I6M7?= =?utf-8?q?/I+O9woGXm1a02N2HqeX4ajiOsHJzljjdY+VhB/hWt+9T8QHIDlMFrMIPtuNS8Xi9?= =?utf-8?q?WXY2kqxTkx84ceZc0LsvKix0Al5bI1IWO65HOytXzuX4tprg8o7GF09n5Jn0vje8V?= =?utf-8?q?eLHAYcD/CWjDYJL/AiHj85NfWHLb+dUsGJY/tUPG26DsZnqOo/D1PlG2zr6UJXBw/?= =?utf-8?q?fXl/jf4Tpjej8MGjaNDLoG5zw6OR2dT+WBiqnGCL724uzOCPzZPrh/5CS0kmD9m5R?= =?utf-8?q?XsZeLSSDA6n7YFv8G9W9Y9OVxXKYfF15UGjhfMpfolQMlO+vVgnnW9853DIXG+7pI?= =?utf-8?q?jhnhAU/n2aATX871TniTE1uYNEtWCpvlRUF0CJlP8qjdLkKWegurA7PIt0gD1Vxke?= =?utf-8?q?fyMFiNjysPUjCbCqAly90GYf7OLy+mI63LhbyosHh0GVwZeKk/9P7kIc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR04MB6382.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(52116005)(1800799015)(376005)(7416005)(366007)(38350700005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?4Y82Eed06+po5KUETPMp+0sH78cZ?= =?utf-8?q?iurqKgUA9q3DzgNcBsW42eCG8N/A6S4B0j3JkhVn2yYjuyakweUFbgYm6+KL/Y14J?= =?utf-8?q?nGPjDLCTVN+tqLefR3EXwROF0W8HRdKkp1VccHPFwlgK+ZLt/LFaF1zjPmgENy+D6?= =?utf-8?q?OvCTTos1wlGABqdoTkrQH/ABcoORyzlQHM5ub+fi+KnOG6qm64IWQNVSBJDlSNhHq?= =?utf-8?q?zPaJf3UTAWFqIqNNzPnxjRwgIvY3QlIGVk1B8yr+7UlaDwI6llrZJMT63JR5MsmoL?= =?utf-8?q?XTm+hFJoIqHO9jDkFMHFSsXH4YwjVZdmF2kw0gOLI3EramWZqyf8zRyUoSSR1tbgw?= =?utf-8?q?0UEKQu7fe1n+0SSJSi/kCNuWaRr9J8nYvqng2ZipfP8DilpLlmj2XjwixDyb8ynvg?= =?utf-8?q?c60+q8wazuCdYAW+4bCxqCMrlxfGmazpTSdofznZPE1FD0qmKOurZHR0LhY/Zx6V/?= =?utf-8?q?e9MmuM+cA+HS3MktppNFlxHdvq9l924IaVvhSQ6od9qYdj6gyCp5uwlUG1s8zroIx?= =?utf-8?q?YqtrN+2hYodFOGOMasWWhTB/P5zFpuAMRiL6/wwRfaCJHzpizn+6/ckQbIP1LnGQ0?= =?utf-8?q?zcYgJQ/RkVbA60LO8/EyQOPkJcjQyoe77ffz01wBiXIXc8tYQ19GHobDaGCA71Ifj?= =?utf-8?q?gX/50avI8BRp6OKHlR43Gh6ULdEM/XIu1y0g4k8www9c4LnKzdLqd7Kamj0i8LJIW?= =?utf-8?q?a7Cbh2MV0QwpX0Y9qYsQOUCXoKm4oqMZCmzmth+DW0ObJ2C+0xYp7l1rYQark7xXy?= =?utf-8?q?gz+QdH37mJ1zEWyB8rVlVSA/E2C0AQgAIHbI0n0DW2zNVj+iYdGaO/iONP8G03O5x?= =?utf-8?q?0DnngXq67c3lpuZr/M1peFeubYd6ERUleSIS9Crkz2+asFBtIcf0Z0MniudUuQItZ?= =?utf-8?q?VqwfuqTlBF3070Fd3/lGJMtwUk/jiYQNyiHvD5RpzRrIQ4DV6OXfjvaN2cFN4KWkS?= =?utf-8?q?5e8Hvi7c+7aq8vWS9sHmqh7Q+7pqf8/VrVH+7sFimr8mU4eo9hsMYkqkLYS0Vy851?= =?utf-8?q?dK+TnqLKcoryfUGgG/OR7VNoOm5nplTGKaSjFlbiCCCHvsqhvE3w9UZUJ8mXcwsY1?= =?utf-8?q?i2pQ0UbdLwqP0kT5UOel8w7H6hsMwSCsgfEgOT0fyDla7FBTY9cf326Jku/JIuJav?= =?utf-8?q?XXO6T5fXhu4QoctRIrBmPMflZQOm5bq985VBg2Z/o58e2cbpplMos9nDaKgMCt4WV?= =?utf-8?q?ShYKuYqg7VYfLsu9v1j1RBYc2dG29kqICRR6djo3VVfup4S1uuJhmgy5o7lRhdREc?= =?utf-8?q?L7Dw7+Kzu1sUSiWWYxqlmhGi+6HyaYBgTG6du3rggJi9Ljblni4fJcSxlzJ8G4pc+?= =?utf-8?q?tGFLDFM483K5bS/fatOFNBSCq5moAb3HGX3JoZwrM0gA3MWRTCziIZT70tMsIqBrn?= =?utf-8?q?UdAIqaTGFsMesLgdwBwiggXsE5T+mMZdnhrXNlI7e2SrQTteBowOlyO3BbZzQWMyQ?= =?utf-8?q?w55rqx4uKycCfv0I7XhJb1paRrdHyzhcTHB0tVyQ4h9sVLD0ZKczG9FoAIndIFo+F?= =?utf-8?q?jWGX8Q2iRj8Hn0guQbdueX3yAFyjJRTNtA=3D=3D?= X-OriginatorOrg: cherry.de X-MS-Exchange-CrossTenant-Network-Message-Id: d76bb88e-df4c-44d6-d9ca-08dc8a0bd800 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6382.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2024 11:44:26.4214 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5e0e1b52-21b5-4e7b-83bb-514ec460677e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QTBXPe6yDMJhYdd54Z8KrWpa/1lG6pQGFYWPyHcf1a9colxdfryYU8J20jhlLJD4SiD+jsPE2ynCUeMg0fVZ5WVUAI8o9Hh7p5G+JCBnenY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR04MB10301 Mule is an mcu that emulates a set of I2C devices which are reachable through an I2C-mux. The emulated devices share a single I2C address with the mux itself where the requested register is what determines which logic is executed (muxing logic or device logic): 1- The devices on the mux can be selected (muxing functionality) by writing the appropriate device number to an I2C config register (0xff) that is not used by any device logic. 2- Any access to a register other than the config register will be handled by the previously selected device. +-------------------------------------------------------+ | Mule | | +---------------+ | ----+-(1)->|Config register|-----+ | | | +---------------+ | | | | V_ | | | | \ +--------+ | | | | \-------->| dev #0 | | | | | | +--------+ | | | | M |-------->| dev #1 | | | +-----------(2)------------->| U | +--------+ | | | X |-------->| dev #2 | | | | | +--------+ | | | /-------->| dev #3 | | | |__/ +--------+ | +-------------------------------------------------------+ The current I2C-mux implementation does not allow the mux to use the I2C address of a child device. As a workaround, A new I2C-adapter quirk is introduced to skip the check for conflict between a child device and the mux core I2C address when adding the child device. This patch-series adds support for this multiplexer. Mule is integrated as part of rk3399-puma, px30-ringneck, rk3588-tiger and rk3588-jaguar boards. Signed-off-by: Farouk Bouabid Changes in v3: - Change "i2c" in comments/commit-logs to "I2C" - Fix long line-length - Warn when "share_addr_with_children" is set and the Mux is not an I2C device - Fix/stop propagating "I2C_AQ_SKIP_ADDR_CHECK" flag if "share_addr_with_children" is not set. - Fix "old_fw" variable is used to indicate the reversed meaning. - Link to v2: https://lore.kernel.org/r/20240506-dev-mule-i2c-mux-v2-0-a91c954f65d7@cherry.de Changes in v2: - Add i2c-adapter quirks to skip checking for conflict between the mux core and a child device address. - Rename dt-binding to "tsd,mule-i2c-mux.yaml" - Add Mule description to kconfig - Fix indentation - Move device table after probe - Link to v1: https://lore.kernel.org/r/20240426-dev-mule-i2c-mux-v1-0-045a482f6ffb@theobroma-systems.com --- Farouk Bouabid (7): i2c: mux: add the ability to share mux address with child nodes dt-bindings: i2c: mux: mule: add dt-bindings for mule i2c multiplexer i2c: muxes: add support for mule i2c multiplexer arm64: dts: rockchip: add mule i2c mux (0x18) on rk3399-puma arm64: dts: rockchip: add mule i2c mux (0x18) on rk3588-tiger arm64: dts: rockchip: add mule i2c mux (0x18) on px30-ringneck arm64: dts: rockchip: add mule i2c mux (0x18) on rk3588-jaguar .../devicetree/bindings/i2c/tsd,mule-i2c-mux.yaml | 80 +++++++++++ arch/arm64/boot/dts/rockchip/px30-ringneck.dtsi | 20 ++- arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi | 20 ++- arch/arm64/boot/dts/rockchip/rk3588-jaguar.dts | 19 ++- arch/arm64/boot/dts/rockchip/rk3588-tiger.dtsi | 19 ++- drivers/i2c/i2c-core-base.c | 6 +- drivers/i2c/i2c-mux.c | 48 ++++++- drivers/i2c/muxes/Kconfig | 18 +++ drivers/i2c/muxes/Makefile | 1 + drivers/i2c/muxes/i2c-mux-mule.c | 157 +++++++++++++++++++++ include/linux/i2c-mux.h | 1 + include/linux/i2c.h | 7 + 12 files changed, 384 insertions(+), 12 deletions(-) --- base-commit: 79c1f584335af42ce359ee3ff0f4e9cc324296ed change-id: 20240404-dev-mule-i2c-mux-9103cde07021 Best regards,