Cover Letter Detail
Show a cover letter.
GET /api/covers/2215395/?format=api
{ "id": 2215395, "url": "http://patchwork.ozlabs.org/api/covers/2215395/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-i2c/cover/20260324-i2c-mux-v9-0-5292b0608243@gmail.com/", "project": { "id": 35, "url": "http://patchwork.ozlabs.org/api/projects/35/?format=api", "name": "Linux I2C development", "link_name": "linux-i2c", "list_id": "linux-i2c.vger.kernel.org", "list_email": "linux-i2c@vger.kernel.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260324-i2c-mux-v9-0-5292b0608243@gmail.com>", "list_archive_url": null, "date": "2026-03-24T13:54:14", "name": "[v9,0/5] I2C Mux per channel bus speed", "submitter": { "id": 46679, "url": "http://patchwork.ozlabs.org/api/people/46679/?format=api", "name": "Marcus Folkesson", "email": "marcus.folkesson@gmail.com" }, "mbox": "http://patchwork.ozlabs.org/project/linux-i2c/cover/20260324-i2c-mux-v9-0-5292b0608243@gmail.com/mbox/", "series": [ { "id": 497295, "url": "http://patchwork.ozlabs.org/api/series/497295/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-i2c/list/?series=497295", "date": "2026-03-24T13:54:14", "name": "I2C Mux per channel bus speed", "version": 9, "mbox": "http://patchwork.ozlabs.org/series/497295/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2215395/comments/", "headers": { "Return-Path": "\n <linux-i2c+bounces-16695-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-i2c@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=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=XSqH2/TR;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c09:e001:a7::12fc:5321; helo=sto.lore.kernel.org;\n envelope-from=linux-i2c+bounces-16695-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=\"XSqH2/TR\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.167.47", "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=gmail.com" ], "Received": [ "from sto.lore.kernel.org (sto.lore.kernel.org\n [IPv6:2600:3c09:e001:a7::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 4fgBP22cKpz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 00:54:46 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id D1432301512D\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 24 Mar 2026 13:54:43 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 12C7F3EF0D4;\n\tTue, 24 Mar 2026 13:54:42 +0000 (UTC)", "from mail-lf1-f47.google.com (mail-lf1-f47.google.com\n [209.85.167.47])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 503BB37B3F1\n\tfor <linux-i2c@vger.kernel.org>; Tue, 24 Mar 2026 13:54:40 +0000 (UTC)", "by mail-lf1-f47.google.com with SMTP id\n 2adb3069b0e04-5a297a69089so656910e87.1\n for <linux-i2c@vger.kernel.org>; Tue, 24 Mar 2026 06:54:40 -0700 (PDT)", "from [192.168.1.135] (83-233-6-197.cust.bredband2.com.\n [83.233.6.197])\n by smtp.gmail.com with ESMTPSA id\n 2adb3069b0e04-5a285207454sm3162823e87.48.2026.03.24.06.54.35\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 24 Mar 2026 06:54:36 -0700 (PDT)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774360481; cv=none;\n b=iubX0ewWMsfl5dbeeuJnMKTTFPNRfZiCGhFM3ruMClLYyEk/meN4A+vvSV2W0LI2FtNYGtdlZj8LB70bLh47stlUU7tchiRApb+YC8eMRTdEJLXadOG2HF84sqE3p/vXEiSWlRFYICRpjukubcx0ce/dfh3CsUVQH1E3cQ8tM/0=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774360481; c=relaxed/simple;\n\tbh=mjEq1PLPEBk6WppdYqh8OnJbPCI24wJUo693CNzhVxg=;\n\th=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc;\n b=bFar1RW5Hj8wntdwFkXM4v4HkK9xt51ol4rXPlOyvwxJEnYHACD6pXjI5cpmS/3fITuRP5SP3syQA2stwrIZGM6lknC3qvSMDs/l1qhxHuI30Ohuhyi+V+kdsLv2MvuimKW3tHZgeWTaHlOxyEioqN2jyOL2/1b2LOq6IvjwCUs=", "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com;\n spf=pass smtp.mailfrom=gmail.com;\n dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=XSqH2/TR; arc=none smtp.client-ip=209.85.167.47", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1774360478; x=1774965278;\n darn=vger.kernel.org;\n h=cc:to:content-transfer-encoding:mime-version:message-id:date\n :subject:from:from:to:cc:subject:date:message-id:reply-to;\n bh=QRP8waOAFbU/kyinDmGT7grAQld1bjZSxa4dUhXQ9j8=;\n b=XSqH2/TRAyBtNPSffScUZ3JGUAMjNeK/hYWOhAH3WgdqS6o7O3JWZO0j8cBBaTOOt2\n A4CUXrCwQ6rEv+b0ZXsJfAVcThenW0CLteYiE63KZCcbrQUdBviQJudTpFWhOfZ+DLOe\n PED6WFzPcYHPFeuBRq5zs29PU8Qhnk0YHRMDWMMt6qt9cwbdSNShwLA07JCnoejePIty\n 3J+PEkziOOxVQFrAxC9k57yEq4KR/DY9FdwAvr15Pn7PCCl4Lg0kS6seqdKr1sXtiwfD\n Vl4alANdb+5ieyIga5gGCzkb/tfvavZldtT3xWDrfwYPKA+HlXOncbssXMuHwBOGeOhx\n uu6g==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774360478; x=1774965278;\n h=cc:to:content-transfer-encoding:mime-version:message-id:date\n :subject:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=QRP8waOAFbU/kyinDmGT7grAQld1bjZSxa4dUhXQ9j8=;\n b=NUqAkG63Q/Ig9jK2BAJyIIZYbswXXSuqF0mCTfwiAJ/KQXEoLvGPe3QxeCaZFIsJZG\n mLxMnyHpioycqEvKumBrYNwNXeNOa41pUeLUTiqHFONPpX5yQ7vqsdTzV2q3tg2nmo6e\n 712JfKCjFs0eEttkhh+ATguXs8dLGZq5hYjoAPDbD78qdB4mOFbjOM8F22VN0RXIDLR4\n hgUtVgv4ID7H6R+9Uk3hed6DoGzzUqXTKA3e78aHo+MVJw/ScbRTad1nQ5yLNI/BvSme\n XIQqIwxfxwL+jVaifjKPQkzsK0joZrbU4T8ZTlQVVgIarIdll9fqRICb7732ZK9B2O8b\n wD8g==", "X-Gm-Message-State": "AOJu0Yy3kH8nt3HZmYibQY5Af7WxzF2mTNgPFtfcNSDF0p+RczQtX3Jp\n\tgvbx2snMlkjnXUSN/pS5KH3KQeq7w1khmowpEtGFG6kAkZHHcfqEIDam", "X-Gm-Gg": "ATEYQzzpRwJ7QmoLn1TD+wbUxsWuY9Iejp4N09RH2dvUwvnCnN3N1D8iT9iGlfGLhir\n\tFSapvURn9kUAmFE1hjCLHV5locfvJS+1fXFPAaJ9FYQkFutphyfIhtDNKxMhPwMkPsqiGtQ073K\n\t+1sIb3JhFlE1z9Yy+ZiTZi4AiExOQHZPI0fMxTtjy16wJTS0jMAIuDAdH/ycZRd6wvWKCnRvDa9\n\tWuKJuph1jVn8r9dSGtwigsql6L9dtYqAcSw8bVIO6n80FCvNsszsOHfhMNsgURd6rKmZR6zXviy\n\tKpjyrPXz7sO+eU7y68ZfkLgIa1ZGXytp5C55U19Jucsb3BWjLOB5XXm/l0SJJjq5YYrLB0OB2aE\n\tO2ouGgJaP9oY4Fsi6kuTAe/iB9jSx2vJSH6m8d/hQyR9V4Xz30KStbB23joE7g/0ZabdxC0AP8R\n\t0VYVZUXJI+YzL+jYnJoLMDv7IwufoBwxrM1olTNrfE5VvYAurNW1S7WRi4GDX/Vtrl+17R", "X-Received": "by 2002:a05:6512:1092:b0:5a1:1e49:66 with SMTP id\n 2adb3069b0e04-5a285b4c3b1mr5765705e87.29.1774360478127;\n Tue, 24 Mar 2026 06:54:38 -0700 (PDT)", "From": "Marcus Folkesson <marcus.folkesson@gmail.com>", "Subject": "[PATCH v9 0/5] I2C Mux per channel bus speed", "Date": "Tue, 24 Mar 2026 14:54:14 +0100", "Message-Id": "<20260324-i2c-mux-v9-0-5292b0608243@gmail.com>", "Precedence": "bulk", "X-Mailing-List": "linux-i2c@vger.kernel.org", "List-Id": "<linux-i2c.vger.kernel.org>", "List-Subscribe": "<mailto:linux-i2c+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-i2c+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "X-B4-Tracking": "v=1; b=H4sIAAAAAAAC/2XQy07DMBAF0F+pvMZoPH6z4j8QCz8mrSXSVAlER\n VX+HSeCJjTLsXzuXM2NDdQXGtjL4cZ6GstQunMd/NOBpVM4H4mXXGeGgBq8kLxg4u3XlUcAIzN\n hIJVZ/X3pqSnXJentvc6nMnx2/fcSPIr59TcD8Z4xCg4cXfIqGAFewuuxDeXjOXUtmzNGvDsBs\n HFYXTTeaaNS9to8OrlxCKuT1XlwIenU1CLy0ak/Z0CgW52qLhMpnwitSbueenW4udGoq2sipth\n 4b33c7TNbZ1Zn5p6R0FFqsqWdsxuHm322OkpWRxTKChcenVudFGp1bukprHRB5Qb+uWmafgDJR\n B1cJgIAAA==", "X-Change-ID": "20250913-i2c-mux-b0063de2ae4d", "To": "Wolfram Sang <wsa+renesas@sang-engineering.com>,\n Peter Rosin <peda@axentia.se>,\n Michael Hennerich <michael.hennerich@analog.com>,\n Bartosz Golaszewski <brgl@bgdev.pl>, Andi Shyti <andi.shyti@kernel.org>,\n Andy Shevchenko <andriy.shevchenko@intel.com>,\n Bartosz Golaszewski <brgl@kernel.org>", "Cc": "linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,\n linux-arm-kernel@lists.infradead.org,\n Marcus Folkesson <marcus.folkesson@gmail.com>,\n Bartosz Golaszewski <brgl@kernel.org>", "X-Mailer": "b4 0.14.3", "X-Developer-Signature": "v=1; a=openpgp-sha256; l=4744;\n i=marcus.folkesson@gmail.com; h=from:subject:message-id;\n bh=mjEq1PLPEBk6WppdYqh8OnJbPCI24wJUo693CNzhVxg=;\n b=kA0DAAoBiIBOb1ldUjIByyZiAGnCl4ihOVbUM1/DAKdpFQ8kxKpUb1xZtLbfo7fnf7aT5M0Dy\n IkCMwQAAQoAHRYhBAVRoui2bLVNZMEsZYiATm9ZXVIyBQJpwpeIAAoJEIiATm9ZXVIyj2MP/0hO\n tjuOdfF26sMuJ2cbc6bBmzIEMSZmxyH5GEfLehZpPRVjH/Sgl4/mDurhso2APzEkySojOB80RHO\n u7jA3MEBLMtBq9YipSxFaTkaTUFbqQGr4zLWS7ZOxhmOce9QH5qQK7HP8ITp5ywRaG86A7QkUjJ\n bHIVGs3U/qYm8OlpnBz177dnMTB6BuOfvaFmLfoi/rXwBu0Jitj8vzc88BkGtfU70TIrXHssqDA\n QzhElYpAExnxxffLYP7d3k14TBh3SUPLLEAp2ltlMidqAs3+MU516VVvvPP0sAVc0iXtn8qgRiA\n W9weKNO/WDm49aC3Ior8fHTFoEEbYaoWjCCXLy8tyhlJjTDtBJb4QWLPKQ/+jXnSVb7G8+cINPz\n JTfzvwAk3yq4Hf3EWgMgjs8A85Cfwx5GA3gALok5qvh+7aHxRpEAqHkL48R+rD40/KPlftVo4Cr\n K3JOwOs1VX86Uxq/zMBtO1wluKIv4y1mJN8+nTDBL/VFRckwy77s+g0VBnHGPasxCEgFYETesCC\n klXG989ANI5EkE4ZOODdyr/nKLtX8lPmW2dFJMQvBKLFnFltv73BPByA4esSz9ZzC8s/O4Fmmnd\n ijk8qvKY+6/A/XfZdXTMYlBUVYNkoFBiJoPpdUp4oDu7VRRVhyCXWEcjrAXeZwoeLQfm0do7dBT\n udbmD", "X-Developer-Key": "i=marcus.folkesson@gmail.com; a=openpgp;\n fpr=AB91D46C7E0F6E6FB2AB640EC0FE25D598F6C127" }, "content": "This was a RFC on how to implement a feature to have different bus\nspeeds on different channels with an I2C multiplexer/switch.\nAs no major complaints on the design came up during the review, I\ndecided to submit the series without the RFC tag.\n\nThe benefit with this feature is that you may group devices after\nthe fastest bus speed they can handle.\nA real-world example is that you could have e.g. a display running @400kHz\nand a smart battery running @100kHz using the same I2C controller.\n\nThere are many corner cases where this may cause a problem for some\nhardware topologies. I've tried to describe those I could think of\nin the documentation, see Patch #5.\n\nE.g. one risk is that if the mux driver does not disconnect channels\nwhen Idle, this may cause a higher frequency to \"leak\" through to\ndevices that are supposed to run at lower bus speed.\nThis is not only a \"problem\" for changing bus speed but could also be\nan issue for potential address conflicts.\n\nThis patchset has been used and tested heavily the last months\non a custom board based on a da850 (DaVinci) platform.\n\nThe implementation is split up into several patches:\n\nPatch #1 Introduce a callback for the i2c controller to set bus speed\nPatch #2 Introduce functionality to adjust bus speed depending on mux\n channel.\nPatch #3 Cleanup i2c-davinci driver a bit to prepare it for set_clk_freq\nParch #4 Implement set_clk_freq for the i2c-davinci driver\nParch #5 Update documentation with this feature\n\nSigned-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>\n---\nChanges in v9:\n- Fix stray blank line\n- Link to v8: https://lore.kernel.org/r/20260314-i2c-mux-v8-0-fb1738a4df0a@gmail.com\n\nChanges in v8:\n- Fix gramatics and change %d to %u were appropriate\n- Link to v7: https://lore.kernel.org/r/20260223-i2c-mux-v7-0-ec75b214718a@gmail.com\n\nChanges in v7:\n- Remove code for finding first mux-locked ancestor\n- Introduce a unlocked (i2c_adapter_set_clk_freq) and unlocked\n (__i2c_adapter_set_clk_freq) variant\n- Let the locking be handled in __i2c_adapter_set_clk_freq\n- Use I2C_MAX_STANDARD_MODE_FREQ instead of magic numbers where\n appropriate \n- Link to v6: https://lore.kernel.org/r/20260216-i2c-mux-v6-0-9be28ecfd7e3@gmail.com\n\nChanges in v6:\n- Change logic to find which ancestor to lock with I2C_LOCK_ROOT_ADAPTER\n It now find the first mux-locked ancestor and then lock its parent.\n\n- Remove bus_freq_hz in i2c-davinci and only use clock_hz instead\n- Mention in commit message that clock_hz can be used to store frequency in an uniform way\n\n- Swap order for change freq/deselect to keep symmetry\n- Only allow bus frequency to be lowered in select()\n This to not allow an intermediate frequency to be set when it is not\n supposed to\n\n- check if(ret) instead of ret(<0) where appropriate\n- Fix typos in documentation\n- Change i2c_adapter.clock_hz from int to u32\n- Simplify i2c_adapter_set_clk_freq() by removing 'ret'\n- Link to v5: https://lore.kernel.org/r/20260213-i2c-mux-v5-0-fb2cbf9979b3@gmail.com\n\nChanges in v5:\n- Take the lock of the top-most mutex locked mux to make sure that the\n root is locked\n- Link to v4: https://lore.kernel.org/r/20260128-i2c-mux-v4-0-dee49ce276c0@gmail.com\n\nChanges in v4:\n- Rebase on master\n- Swap order for printing warning about \"channel %u is slower than\n parent on a non parent-locked mux\\n\"\n- Fix typo in comment, adaper->adapter\n- Link to v3: https://lore.kernel.org/r/20251020-i2c-mux-v3-0-908ac5cf9223@gmail.com\n\nChanges in v3:\n- Return -EINVAL if channel is faster than parent (kernel test robot)\n- Link to v2: https://lore.kernel.org/r/20251002-i2c-mux-v2-0-b698564cd956@gmail.com\n\nChanges in v2:\n- Changed bus_freq field to bus_freq_hz in davinci_i2c_dev (Bartosz Golaszewski)\n- Removed idle_state from mux core (Peter Rosin)\n- Link to v1: https://lore.kernel.org/r/20250922-i2c-mux-v1-0-28c94a610930@gmail.com\n\n---\nMarcus Folkesson (5):\n i2c: core: add callback to change bus frequency\n i2c: mux: add support for per channel bus frequency\n i2c: davinci: calculate bus freq from Hz instead of kHz\n i2c: davinci: add support for setting bus frequency\n docs: i2c: i2c-topology: add section about bus speed\n\n Documentation/i2c/i2c-topology.rst | 178 +++++++++++++++++++++++++++++++++++++\n drivers/i2c/busses/i2c-davinci.c | 43 ++++++---\n drivers/i2c/i2c-mux.c | 107 +++++++++++++++++++---\n include/linux/i2c.h | 35 ++++++++\n 4 files changed, 339 insertions(+), 24 deletions(-)\n---\nbase-commit: 1f97d9dcf53649c41c33227b345a36902cbb08ad\nchange-id: 20250913-i2c-mux-b0063de2ae4d\n\nBest regards," }