From nobody Thu Mar 19 03:48:26 2026 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9576B1DB375 for ; Mon, 16 Feb 2026 12:38:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771245517; cv=none; b=OUvkfgmc6sf+CGyrjTS53hart2KXfia05HntDbJRE0Ec939CeI//f1SPlE+7D9t3mNcFwC3tCwxlj6osyAOlDXR14alKGvHkuM+AfJzbAnKLBQJnCbTpQfLJuC9rwe1UQvsgEG7DNfhWZSYFSvKW8A0TwcHxbXDiNVJYUVODvjM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771245517; c=relaxed/simple; bh=WkfZrlH2rNxO52cLVhBbxQV4YB4czTBtNoYoTszUuMI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O4lxnpWc3jHit2ofgNoI5MTpIOcOmY99Ykq8W18AWcY6ss2+3v2EPDJbh5RT4qTVdK9ZUsuFrFTcs8/BgOabdMNm1OlSX76n5eErwDi9x4ntB1+Z0SA9SxyMBXBy13E2b9MS1cx0xgR8DAHP1/jx0yuT/9Z2AmM5bhD6O0CqbxA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SRskJvEo; arc=none smtp.client-ip=209.85.167.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SRskJvEo" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-59dcdf60427so3074046e87.3 for ; Mon, 16 Feb 2026 04:38:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771245513; x=1771850313; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=JbwGPJS9piP3D1IROOiA3tAkFtRzDUpcLnnixg8UsRc=; b=SRskJvEo+A8t/LZIWyd9rZ8tWUYQHovHlhCTKeETdl2HftZnhqg2dmd+2S0LVoI9w0 N7G/NkQloUuCGQsbH4tYy7ojZIDO+0AgIaqd/ptjKcqrxr8PVtIIFjRMpnZCJejz9/ao A06j+VK69gITf6Bz0oVGl7Ivur3/e2X4eQc3zRflDnogYhjRWQXcdeENCGbkUPOj4ckC KW6KX9oU2eHX7Qp+eF3c6+A+fSmyvnTMsAW92qDy3HlwkBnGlbWEt3SE2PXe00YLTQIm HneuHhPhdo7N6YnSGppULDpxoHme8Suk0ODIgakdm8rl/pXtN1TVpDdGdz7alkWGD/fy tQMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771245513; x=1771850313; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=JbwGPJS9piP3D1IROOiA3tAkFtRzDUpcLnnixg8UsRc=; b=I2/oEzlPgB5aBQPGEBB4whxYbutM6SyAEFAT2UXUFAMrDv2tZmUC4d7jcC5ld346dx Lr9/fOZ6+ePj0O696wee+ZDmdltydGwNZTIx9Cx6EoT68KirBijizHCFFFIFZ9lQawuZ HBV8aImpwJDZhp8lQwuvR0VYGJUUNezUlwsCWThixEX8rfwKA6fL4yg9a7dOqFBWyqQt +f/6dEoXjNHjobm4xfA+N8rjrQDUJIIcLM7VwBuZJBeIhzPkjM/amlLRTZO0i2LtIdmU iH/+b5FNT+OTc7p9ms8i9OSBRGb98/6GZQIrA8LKtx6x3bZfAq9Dj+2MArXDDy5zpP7t sGgg== X-Forwarded-Encrypted: i=1; AJvYcCWrWt8G4SyqUVZL5b48c1ZAk0+f2Puta8yJfovljWXGGvJkMr1JCQ25fho1s4I+8L/WogloWhE8d/Z9lyI=@vger.kernel.org X-Gm-Message-State: AOJu0YwViS33XJbkHkBEMPeFTGh/X/U9f74tt1G64TvJriAHKt4K7/36 VIG001KmWCZqPD3o1h4Wj9wg5P1nIBSichn3nr0SP9Qdb0n8UAGxyr8t X-Gm-Gg: AZuq6aI5pRgwa2wM4KO98FsXxSD4jLwXZnPaGDoxZfP1jpQk9gdQuhXRPcNf9fggYWN W0cTJ8XEQOwNkCGOc55CePMuMJPD10uXcMR1yXN0UYPUnITXiUsBPoPYoiP3y4lPf4i3y6Vu5bC Dp9CALcFgInsCE31bgSmdneZnMk84tvnPQYioyeFgz5sZI7Y5gVrNOfDHKl3vhL0C3wp8BgiyrT +E8jMGWqmZ9Vr39Q8T6gHaxUa3PAXlhcMriJniuPHpeRPCF1RkzQyBtHSnqT0xcDYl+OUSAFnBZ GZmJJUobOR2EgaBZa3s7MOwvi7L7Hdk/FONNfl6JUs8wU001bDAKLcq452pzT2WfULG5N95Z/+U K1o9ETGzwDqp+ybmzaJv7T8yxZBLizqzTcn8IB/01IH+eDqFsGH8l+EYWZDKxNxykVHQ+XgLeqc DkZWPv3qI3/FOPwSASj/4ob/0SJjU4AXOR04yXd+IZQKYIeXpUFN4tcbgKfMa95Uomay60 X-Received: by 2002:a05:6512:304e:b0:59e:4f92:5df3 with SMTP id 2adb3069b0e04-59f69c3e23bmr3523627e87.10.1771245512608; Mon, 16 Feb 2026 04:38:32 -0800 (PST) Received: from [192.168.1.135] (83-233-6-197.cust.bredband2.com. [83.233.6.197]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-59e5f5b0577sm3175920e87.71.2026.02.16.04.38.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Feb 2026 04:38:31 -0800 (PST) From: Marcus Folkesson Date: Mon, 16 Feb 2026 13:38:13 +0100 Subject: [PATCH v6 1/5] i2c: core: add callback to change bus frequency Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260216-i2c-mux-v6-1-9be28ecfd7e3@gmail.com> References: <20260216-i2c-mux-v6-0-9be28ecfd7e3@gmail.com> In-Reply-To: <20260216-i2c-mux-v6-0-9be28ecfd7e3@gmail.com> To: Wolfram Sang , Peter Rosin , Michael Hennerich , Bartosz Golaszewski , Andi Shyti , Andy Shevchenko , Bartosz Golaszewski Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Marcus Folkesson X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1764; i=marcus.folkesson@gmail.com; h=from:subject:message-id; bh=WkfZrlH2rNxO52cLVhBbxQV4YB4czTBtNoYoTszUuMI=; b=owEBbQKS/ZANAwAKAYiATm9ZXVIyAcsmYgBpkw/D8XNVBduW5ufUR8JhzXfBil47yj9Ci1zpG 4/9/BCAdEiJAjMEAAEKAB0WIQQFUaLotmy1TWTBLGWIgE5vWV1SMgUCaZMPwwAKCRCIgE5vWV1S MgXrEACCHJ+y+6aLdIWIBMz34AfkkMC771/Z6hrN3cqelZgrb9vN0zqBmObTMGEu3VadlDCSYc/ 2G7HIhieoPs4fGw6lFRrCCZJIasm5dYdjtijFatEYNAzBbBAESjBkgnZ5FQMPeBcN4UgzyqkXoa aVgxbBUkmyI8D/ogiGbk4GPxj9Jo0nPjIA8M+L1qmzQnErkUfcAGLPujf4XS2gmHeP3p3iOkuq5 vCwvoDF8rGxxg1+afj2qFcHyOmxG5RBoACtOPqjgF5lsCH6CQLLMuS9JzhBZLR7266zwVy0iw0u RSf2j5WG/a92luoD7bYTsNgk00OT/ui8Jp3OtDEm9Ymz9han/CMpIBgguDihueQTfT94s0bkuyb ARzbB3lbgtUzbykrepTWPBnW2HnotrzpQkp/sNkylvmGy1iCxbQHNrkvB8EUL9RIRHaZxvGCaX7 6F/fsdYJ+zYJrdPD4VfX/ZG63BGYDP6TkbgpLjsC8BA2LL5uu5jLY/d6YuZ9MpKZw/qjIQ+nykV DeXke1t1sMW2KzlP/2I3LPb2k4LT1x6GDXKEfLo3DW3wBrp6/12xuKlGJ0GaKiJxtpuZdUG2jru 1LADLtBvuP5IbfTuWWsEbUW3vhOQAhQ0iKTcZcyQv3Xx8ef1U23u3jSa1gnk1IL797zh4O9nHM1 f47YQotq9GW+u2g== X-Developer-Key: i=marcus.folkesson@gmail.com; a=openpgp; fpr=AB91D46C7E0F6E6FB2AB640EC0FE25D598F6C127 All devices on the same I2C bus share the same clock line and the bus frequency has therefor be chosen so that all attached devices are able to tolarate that clock rate. IOW, the bus speed must be set for the slowest attached device. With I2C multiplexers/switches on the other hand, it would be possible to have different "domains" that runs with different speeds. Prepare for such a feature by provide an optional callback function to change bus frequency. As a side effect, several bus drivers keep the bus speed in a private structure and can now have this value stored in a uniform way instead. Signed-off-by: Marcus Folkesson --- include/linux/i2c.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 20fd41b51d5c..87654fab2f1b 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -742,6 +742,8 @@ struct i2c_adapter { struct rt_mutex mux_lock; =20 int timeout; /* in jiffies */ + u32 clock_hz; /* bus clock speed */ + int (*set_clk_freq)(struct i2c_adapter *adap, u32 clock_hz); /* Optional = */ int retries; struct device dev; /* the adapter device */ unsigned long locked_flags; /* owned by the I2C core */ @@ -835,6 +837,15 @@ i2c_unlock_bus(struct i2c_adapter *adapter, unsigned i= nt flags) adapter->lock_ops->unlock_bus(adapter, flags); } =20 +static inline int +i2c_adapter_set_clk_freq(struct i2c_adapter *adapter, u32 clock_hz) +{ + if (adapter->set_clk_freq) + return adapter->set_clk_freq(adapter, clock_hz); + + return -EOPNOTSUPP; +} + /** * i2c_mark_adapter_suspended - Report suspended state of the adapter to t= he core * @adap: Adapter to mark as suspended --=20 2.52.0