From nobody Sat Feb 7 08:23:05 2026 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) (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 79BB734D4E6 for ; Wed, 28 Jan 2026 09:55:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769594109; cv=none; b=JtSjzDekTMYsFItk78ndEQYttOUrN36jgmWm8wn3i7p+0RwnV+Sans7YRqbWZKbgynX55/SZzLD527HUvaxBYNSj2OH5xTLXVgTysfrAQmqjP8wqFdfulSIdBMWq8iwrC9PMuQ7cv7fqS2EiGDRpPREfMLdeHVkx2Hz4iDCdRZM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769594109; c=relaxed/simple; bh=eRPT6fwWSu39UFp184/6KNALMdSEu1tiZOm0jan9AEk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MnzporO+LZIW0RU5kHdkIez3dMXPwAHqjeig92lmRQzTpBPwWJKCSfpYbGLeIcgKlqi+7c8aFJGlAMcbY8LqAV3HYN1I9qY3bfdLgEojs2zADWAV5BZ0gUrekxzCybsW6JkdMiHPNMvnRamiaKnz7j85DSpLGiGyUF31f0Wa/U8= 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=nXr6Nwpu; arc=none smtp.client-ip=209.85.167.54 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="nXr6Nwpu" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-59dcdf60427so7917138e87.3 for ; Wed, 28 Jan 2026 01:55:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769594106; x=1770198906; 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=7LgqAxD6UfwmKx5Fd0jcW4Pat4uqGsb1EaPQx1jaWDA=; b=nXr6NwpuzH2MH/rlNcwRpksHBG6CF4FVpdfDLqnunFBY7K5K8rpNEDpU/RBAnwamch Z27gLLtiGjsZJmZoFjp1/cdbqXDo+Ffx96z4Sy6KMEpGwe3C6w1yZAsa06yA75gBoDdF 746vrc5h6vIzwMstY0LJ01YpHT+bhKXCJ8WuFZOGIpAXmmCWB5zEgdkyk0TN5nWwvJOH Ie/ZMyT2OqB2I2WQzQ0Fq4bnz9ohocfILAJXUTb2obqxe5Du9TW0d/YHBajuQAGy7Vm5 SflNXtX+Trlgz/yX9KyK6Nengstf8IiABgbPPsKtLxyJLAi8vZPZeLcWgSczy8/LoF4R MtrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769594106; x=1770198906; 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=7LgqAxD6UfwmKx5Fd0jcW4Pat4uqGsb1EaPQx1jaWDA=; b=KX3B0QJIkCtWiQlsjN/TU7hvRqKaw6ohJUtasTp0CGD7sX5WDCsZlZlXxqGH8VRrz+ eQUnnNQ2hryPdqq4m9nmF3GBgWo1fEPjsCzZ7EeE13t/QfItE7NeNUprgbMPW9nfGYyA BPht1BG8wZKDRaqaW9yJerKoJzyGNgOJAl/qX/TDr3gLYcPy7QfjElbQxzs4JH2TrO1j mk7pvbPkG14X05vslzVssAnprH10sRvcrb76Gpp3BbwhEHdOXoiirZioHTusT5UvxqKp EeTS+Npf9N8QSwl7Dyx/VmmxvhjfByEpcErUPzD10WsibkRZ38B67z+KpnBSDXhQSHeT 4JPw== X-Forwarded-Encrypted: i=1; AJvYcCUXoTWc9lYcFjHix4XcZwdd3W5jCHo9iV++9DOwEdywsq6QtKBJKUOR58p4tQ66NHjMBJ4AQ+dF9x/Fbrc=@vger.kernel.org X-Gm-Message-State: AOJu0Yxcw0AfOmVP+cKJau5Vdbb9CCSlK2TKy9SPcyWBUL618AwwF3T/ Cnw61QbrWTrefBB9TCwJCaM4DAXAE/cHmDscj9JxvceK8Log/zaZVkkt X-Gm-Gg: AZuq6aL+cc+I2YKOv2LLbMLwP12OeyLfCUzv2RuMTqPKzwCfcFJcKz+XiFXrA9e/RJQ HOMrcHQp6gUGRlSwExCBiDX09w0PupiY8VZHhAtHdw7lRhQx5FfwEKSHycDWzWTLA3w/oDt4rRJ Uawj+nyCr1TG5UJNikYSDKZw7tfxu/tr8ZJsOJ1Tc5SDE675jqSm9psjztqz69fH3d4RsTwc0Hg uJajDsyGaJM5A+MyPmUn/4S8nuw0lh9G5iBOjUx5tNpUFXfPw8ueSH1XoXkG8RSBJAJOu5OptNW kcTflysFx6SzMyuU955dIyA5sk2usNEP7nebG4HVZy0Y0fcKA5WEmCq/wK5fT9geQchxWCH3950 JJcgjtK2dhOlMOR8uRhJrDG9sEo1PH0VjLZfQsVI/O3vtyHNxkQNzY1KScVwojc0/SgNWYBwxxk mvf5YldVFAikKsJIEVvOuksy9Os7JcKHfrzo5XCXDUIoPJgMbD0U2q2o0l X-Received: by 2002:a05:6512:b28:b0:59e:92e:7d07 with SMTP id 2adb3069b0e04-59e092e7dd9mr612809e87.24.1769594105281; Wed, 28 Jan 2026 01:55:05 -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-59e074bfe83sm459483e87.97.2026.01.28.01.55.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Jan 2026 01:55:04 -0800 (PST) From: Marcus Folkesson Date: Wed, 28 Jan 2026 10:54:27 +0100 Subject: [PATCH v4 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: <20260128-i2c-mux-v4-1-dee49ce276c0@gmail.com> References: <20260128-i2c-mux-v4-0-dee49ce276c0@gmail.com> In-Reply-To: <20260128-i2c-mux-v4-0-dee49ce276c0@gmail.com> To: Wolfram Sang , Peter Rosin , Michael Hennerich , Bartosz Golaszewski , Andi Shyti , 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=1616; i=marcus.folkesson@gmail.com; h=from:subject:message-id; bh=eRPT6fwWSu39UFp184/6KNALMdSEu1tiZOm0jan9AEk=; b=owEBbQKS/ZANAwAKAYiATm9ZXVIyAcsmYgBpedzehXVLc5la3fttcAt9Pf63CW8xGjrpt9Gtl m5Jrx2wvzCJAjMEAAEKAB0WIQQFUaLotmy1TWTBLGWIgE5vWV1SMgUCaXnc3gAKCRCIgE5vWV1S MkRqEADXrxdBsBlenpKcAm45b1vgUJl5qzd/GhpRErNbr50L14Aj7bdwJ2ihLfpLoh60Qft2yBy NNAl7O56qyFBmGeWfyLSQehsIh775Ud4kJ7icMlu3t8clHbjFtCrnlygOiTL6HjIHg8pQiivtRl GYv6hW7pFiU2cmCQ7c9PEx5J7o3WM3f3R/HWi+VS1WP7+0WGVjEV+7mnQjOFAAfpl1vtf0UfqLn JFXWQ9WvO1sTUUAMtAklTsoztuIL6csWXW/4KJlJV3TwmylgA+4Hojjfm7mDMrjC8VZ3e806uLk eG1iPk9kvJuKpkWng6bVCPmlCcocTgEtgDLe5HkAV+MUaBFldysjcJiooWse/4mvGui2ZuhfNoe 9hsXpZqX4pxg7vHNsF+7IjgixG5VlAyB+kufL3Ul0X5m8Xh+XrMx69S0041/Eon1ROMHxWZEqBQ 7VeysczxzbQRPSrAPv0bUHW1Aq4z9xLC2KxAzzto6P1IAdLgliqaB7W47k+dYFSEzRVlBx/RgGe rzPrux72Ged1sYyIBsVr8oo/WV5bKbfg69dk0jGBjUs7y7mxh87UrBeZwFgYtT4r3+xGb42CtYw 702+BI6VraEFM4CivtIYhY1Eaay41GgmI5F/gTmMF5XX5FwzWJwTyAk1SI62UyoRViH1Uf/KiTE X4kYiUc2CpYCVHQ== 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. Signed-off-by: Marcus Folkesson --- include/linux/i2c.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 20fd41b51d5c..d147e388dbab 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 */ + int clock_hz; + 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,17 @@ 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) +{ + int ret =3D -EOPNOTSUPP; + + if (adapter->set_clk_freq) + ret =3D adapter->set_clk_freq(adapter, clock_hz); + + return ret; +} + /** * i2c_mark_adapter_suspended - Report suspended state of the adapter to t= he core * @adap: Adapter to mark as suspended --=20 2.52.0