Cover Letter Detail
Show a cover letter.
GET /api/covers/2196887/?format=api
{ "id": 2196887, "url": "http://patchwork.ozlabs.org/api/covers/2196887/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-i2c/cover/20260216-i2c-mux-v6-0-9be28ecfd7e3@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": "<20260216-i2c-mux-v6-0-9be28ecfd7e3@gmail.com>", "list_archive_url": null, "date": "2026-02-16T12:38:12", "name": "[v6,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/20260216-i2c-mux-v6-0-9be28ecfd7e3@gmail.com/mbox/", "series": [ { "id": 492305, "url": "http://patchwork.ozlabs.org/api/series/492305/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-i2c/list/?series=492305", "date": "2026-02-16T12:38:13", "name": "I2C Mux per channel bus speed", "version": 6, "mbox": "http://patchwork.ozlabs.org/series/492305/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2196887/comments/", "headers": { "Return-Path": "\n <linux-i2c+bounces-16010-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=20230601 header.b=OUs1Mf+9;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-i2c+bounces-16010-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=\"OUs1Mf+9\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.167.53", "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 tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fF2Q405DXz1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 23:38:52 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id DF5823019FFB\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 12:38:36 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 9498E1C1F02;\n\tMon, 16 Feb 2026 12:38:34 +0000 (UTC)", "from mail-lf1-f53.google.com (mail-lf1-f53.google.com\n [209.85.167.53])\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 D23F772634\n\tfor <linux-i2c@vger.kernel.org>; Mon, 16 Feb 2026 12:38:32 +0000 (UTC)", "by mail-lf1-f53.google.com with SMTP id\n 2adb3069b0e04-59e6491f1a2so3235243e87.0\n for <linux-i2c@vger.kernel.org>; Mon, 16 Feb 2026 04:38:32 -0800 (PST)", "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-59e5f5b0577sm3175920e87.71.2026.02.16.04.38.28\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Mon, 16 Feb 2026 04:38:28 -0800 (PST)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771245514; cv=none;\n b=AfjPyB5RZtqu+d+fLGFtiby2QcYumBwvM/WhHgoi0sQfTrUuugwFmkdO4wM9FpjRTw+/G/A4elC7lxZ7y5rzAvv0PqzgCUBTrwiyjnld4ZQ1Dm/uE0RGcqdAw7edl1lX/RZ6w8HftpflUMc+ehixcf/DUq/P7hnE2RwC3FH9jHE=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771245514; c=relaxed/simple;\n\tbh=zoK8Y4JjjpVli0tYldWuwlOtwBvcNGDImLpHHn+2UNs=;\n\th=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc;\n b=R9wqmZA9Vat9+RX5ANOftA/nSU+Wb/cbnYvy2c77wI3iBdGFDuw/DsRIF9JZvYYfmLDKMxq+9MHCHhfrhET5Y15f3PFkgtkwYZDIwG/4+zaIr8fqs1o6jJl+5BW76ErRrHc9pwv1Dd+TTCYIdIp0wHJ43RBiMQ6Q6NtlKwEH+Kg=", "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=OUs1Mf+9; arc=none smtp.client-ip=209.85.167.53", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20230601; t=1771245511; x=1771850311;\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=Au9YGUWXJMl0Z1GJQIR2WyTwbfIwDLuybPtxyXmyVug=;\n b=OUs1Mf+9nuVBf+pwzsI/zJ0pK5YJiwdSXWvMaAbRkqBqaIaE4PvgGw33i8o4ySZWM/\n kMKSwr44w8ZfsV2WnVC6QqrI4C2R56kgq8LXt35vl1PxhetL8htxD+0Adm9XdM5Ebdjf\n 0HOmVYU8Y5y6UO/pXdGrE9uC+0LHChWWMdJt3Q3+4xlm6n2Jr4+lnNyUkIchxvYLgIvK\n NQWVHQZpIUppOgR3DpNBL+Ay3QBysp2dZUksAwj5jjSksVCoIAmkfLUwIBtdcdo26dEv\n m2FuOVUdT98PRD04WaFzMazLsy4Dj9pW12WJvRQ2YSDeMmXDaRBv+F2p/Ody3dYSuGbA\n XT3Q==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1771245511; x=1771850311;\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=Au9YGUWXJMl0Z1GJQIR2WyTwbfIwDLuybPtxyXmyVug=;\n b=LNlW6mmNbFwzd+xRRXS3uNpp92pIVsXcpyx8iRxNmFstjvE0qyUygF4S34zRI0MUJ3\n Tq1hLxj1Be3QkjlXL0dt3iuEOmbsVxFaSe5rHxEArrFTrTvOHT4X7Sxx/cvlwaxg0wUV\n 223Gd4L1/MIkylbiIDKhhyQzVsPgJjyk0KF2imAXDTMm/UrKkId1Mp5yp8hHiFoI/yW1\n ivIBpuGAhbamxlZjCSzcQUXI9sk+kPDIhNl2g5feEutNOA/cG9iq5wkHlNi58XlLYrbZ\n FOCaX99U/j4euhmsfBZ2lv7ea1lACXRDFnpfhS8w3yJAH/YqwpE+NA2VeVzvfrCovo9J\n E36Q==", "X-Gm-Message-State": "AOJu0YyddH6CwUv1PLzsaRJ9jW+uOn3oLDa+M6nAgvVz8T/2NausUnwt\n\tafX2ma3lM7hjtpPDZE2ferAJQNRzxyGYxiq+VnqMKw1wHPtdn7Q3Y+wy", "X-Gm-Gg": "AZuq6aLdVCQsumviTzaDzajfpIk9Cw9qNT2jOTt+VlT0Zff78AIaClp+cqExa60CWul\n\tYl+ZhbSDLkQLj1qzyxu4Gen+sy53Sv74PIqUV80FosQleHkOAquyP7Jrc+j6XWNH/4e6pKOB3is\n\t+dVfoBeYp1Ql5yJN95sa94K4+0JTmlsvWBfREuUPA4pzghIj/xjNBuMI9Nm2SX+2Can8azmz14r\n\tyho25z8ERHO3vMhoo1tM8UEwwBMxrkUyQ63Bwr38UUCfRa+JAAt0F7+OxZyiOqjyZsmL584in/Z\n\ty8nK336W7FU0V6quZ1YpQ8ClHynMzGzqvKy42nDEl7nDRrBcHbMtupSOLLMSHTBlm2iHX7ymQLb\n\tqBhP+JatZLKVwg/HdmjP/d6WR0zVi3fi1rcJ4UlaP8GRFm/8uN33jFghUeQR/VX6azkrMEgGSM/\n\tn7i9/0gvZmhAkhQLsHQlRrchxCo1rpCME0Jz3ZvT1FFIz6vETBC38X5gK2EWJRAKp54Yvu", "X-Received": "by 2002:a05:6512:4019:b0:59e:13e8:fdbf with SMTP id\n 2adb3069b0e04-59f6d009bcdmr2231639e87.23.1771245510612;\n Mon, 16 Feb 2026 04:38:30 -0800 (PST)", "From": "Marcus Folkesson <marcus.folkesson@gmail.com>", "Subject": "[PATCH v6 0/5] I2C Mux per channel bus speed", "Date": "Mon, 16 Feb 2026 13:38:12 +0100", "Message-Id": "<20260216-i2c-mux-v6-0-9be28ecfd7e3@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/2XQ3U7DMAwF4FeZck2Q4/ys5or3mLhIHXeLRFfUs\n mho6ruTTbCWcXkif8dWLmqSMcukXjYXNUrJUx6ONYSnjeJDPO5F51SzQkAPZKzOyLo/nXULEGw\n SjOKSqtMfo3T5fGvavdV8yNPnMH7diou5vv50IN47itGgsWFyMRggC6/7Pub3Zx56de0oeHcGY\n OWwujZQ44PjRD48OrtyCIuz1RE0kT139RD76NyvC2CwWZyrLok4YsFt4H93+sXh6o+Kr65rkdu\n OaEvtn33zPH8D17xOKn4BAAA=", "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=4059;\n i=marcus.folkesson@gmail.com; h=from:subject:message-id;\n bh=zoK8Y4JjjpVli0tYldWuwlOtwBvcNGDImLpHHn+2UNs=;\n b=owEBbQKS/ZANAwAKAYiATm9ZXVIyAcsmYgBpkw+3UKjjGG+HArNi7qEWkJojo+VcEAN8Y3wlQ\n Q1POYGf2MCJAjMEAAEKAB0WIQQFUaLotmy1TWTBLGWIgE5vWV1SMgUCaZMPtwAKCRCIgE5vWV1S\n Mk0CEACatGJ4NqlrpfxA+XkfhhVARSh35cMDQN6ViZwxsLi+JJRZ4J3aRHwrDirMr3xpV880EpA\n kioBXdZ5wXemW/i5NIYXEmV/0AlPtFlqHC0CAPBds0SoPI32vRfDG9T3JYMR6+qF47+x50qg7ZU\n P5p+3tVnFF6+D5gHodrpZkNrENg8qr5YLZB+KKVXVnEmC423iPOlV9IZc0DsSqK1hixy71Eka+X\n u1NI5RE4NoAqoWSGVee/7AEQzNEabgsNVMd7moFXT4pSBObkkv9Y2IGhoBxqXuVuo7KfcV6hm7k\n wFzX2FJ3s4QeaIJ0EVgvQgUHpb9tQr5/7MW9G2XyiCVhRKLSmlGTE5SxS5UndeTL0g5dq+nD6hS\n 8PYVZm4Chs9FLU4PUhkIb5TFagxfSNqCjBje5Mw4N+erOuAllfdm2dxAJReOtocz/SaOramP4Kz\n 6tYOYF8x2OUk9PmLFr0Tuk/+vAsuP2bmHFVQxl9oRpcK12jjrm5F5icsbTjppkJK0Aztlgv1o8j\n tqOeocyvcnUzK0rPnys/GbTSiftBAXvs0Z+sYqfylTshqTHN4WyRmh1kZ5zHLxX9amDfGOXTu5+\n zv6ZAfkzHhrFmls57wPSZtpyRLZgVQGuq+J30l5W9VXmNq0cveVJ5Sfc67Z3iCYwX566yBY4pEo\n ShGxwREsHqbflWw==", "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 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 | 42 ++++++---\n drivers/i2c/i2c-mux.c | 145 +++++++++++++++++++++++++++---\n include/linux/i2c.h | 11 +++\n 4 files changed, 353 insertions(+), 23 deletions(-)\n---\nbase-commit: 1f97d9dcf53649c41c33227b345a36902cbb08ad\nchange-id: 20250913-i2c-mux-b0063de2ae4d\n\nBest regards," }