From nobody Wed Dec 17 21:54:45 2025 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) (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 E034D306485 for ; Tue, 2 Dec 2025 08:11:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764663072; cv=none; b=oWczcNjg5J+ql3cavEs9PEM0BVqAbALfks/aATxu6CQ25oL4ste6MCklnxcwh5z3Sw8+mo6LcNCoKbmJV3NJaFQdNk5CHVdlbqJWrkpGwmD2Du7CI+G+jrN7d6T+u2bRp2ImQuRftKnhoue/S1sqfraSk49k2bJzunCMN6FnAeE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764663072; c=relaxed/simple; bh=Nc5M9Z8FNun2aD78Xc5NFxJfLrb5FZRGRBm8Kv/u2lM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bCfl9vk3+aFwmHc9BP4/NKlFjsrWVKUNFfx4bhNbTk8M18aQDxsSvDyiAUsXTveWbL6i3v6SQ1kuoynrZQct10HMkjCRQTF8u2QLgCWSMCCYgK3qKd5kUQxywVyJxFtRUdRNtpCskzxK/yREWpe4a/d9aEvgmKxvC7UxGp5dPQI= 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=e2tR9mKs; arc=none smtp.client-ip=209.85.167.42 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="e2tR9mKs" Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-59581e32163so4947138e87.1 for ; Tue, 02 Dec 2025 00:11:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764663069; x=1765267869; 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=Hjv89plBIlsGmTTvLKA+ZN//B9WD1brqNLmFgcY68x8=; b=e2tR9mKsSb3foVun4gGi2NWsDtprehBo1pCozywJCR4YRlYCpcuuPnbKs5dm6/plfm Wi/EugFyazTqwMgmcSLpdgRNCgqD0tqmSZIkU/bISq/aliaXUL+FZubGSbOLMCrvXmda 416M6B+9v5twQSjo8VNgxIniUbyDNfSIYhcyRnHz2ikxX6bNFwpTVrGGH8F6R7oEnoEY pWNZlVy987/MakkMcGyP5vssYBUS+/c2IGOs2na3Qx4cpwyibElZd8cXnZ7jU6gBqL5p LmCpEx1kyRKJksshQCcVursoX0xiPvz3fwF44HcLetsHtN3IqX7eZh9BiSC/GXuWjtXD TIfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764663069; x=1765267869; 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=Hjv89plBIlsGmTTvLKA+ZN//B9WD1brqNLmFgcY68x8=; b=BTsTuRfMhAAJqCvMvH5WEwBbRKW5nSJziCHiLTBJ48stdLFm9sIoJC4NpVcYQyzyVp SnmOG3tHho5A1tNv6hLyXBVsK4G3S6Dq3DzB+adVWxQkYv+2o/QHvSHPJ0OWky1bzpO3 MRPmrYySy7rceX3X3jv0EUYf38CAueijXVUj9oejSLzBPBHVVFotm8S6HiFHfC6n60rn /qxLknWnb5W4CX42MaiIJxTKxeYO4czQGKhcfPeWL4g3O4W8sn5OEPrs7DWOQzGcygKs 3QA4DpHLdzv4Ew7oMiCWpd458hPkYmbY5zhhQ7RB8qESiTeyrb4mjwkG+QtaZeqswKGV K9Tw== X-Forwarded-Encrypted: i=1; AJvYcCXZOCqEw09W/ATL0rFu0IITvLWtMA+oAr7D3FWtyj2/ecJ/1YcTQOsJsZ4UrKs13SWkkjjmpu7FjuT3Vtw=@vger.kernel.org X-Gm-Message-State: AOJu0Yyto9PDQxoNRZHm9WUeRU0rCUiFroXzcsA2vJIdveA7ByInaZBX 0wtg7KhbDACbA3alg2oD3AU8s12jbNiPyNlX9XNcsWU71adFfp/ceyF0 X-Gm-Gg: ASbGnctRtRi4Le2TXdzPxZXP9iW+0TSai0M4hAKf1bjYySl4aglcjTEKxMCdI05sse4 v9JLI/+atyvilIeVZ7PiVlCDfdAqNR4H0sgfvfvzk+Jg84ClQD+BMlHNYm0gXfo2RH/fWdRnlJi 3HqTuSBocVhBOvlV7wQPi/ywnn6Ij2umFwgqUaUsspbW8xa2JX/eoBV+xRON775hU16pESVDgJx 29P56UDpNsJNq2MpDnZILvAPJZ2IZ5JfXWU6d7dFG3nJkgcCbS8bwsTtmRcgi8dRIUqV2063eCB T+aIzrQUWNQKLQEph2I+Igk1M1oOewB+/xZsTwK7phkzzgxwghhv/oVvs/23ZYSZTgtHBhPpyOh JALv9sCsXLoXCQJ6lyXWIKp6i2hJLCCR3n9QB5Ujijh+i6881HNvx+hYdR0UWlqqfqu52GnAxav yGnXhvpymzGz4+XcQi8EwZ/s18Phg7fgOsIwXHqHl8XwMhqKgNeAsszn1y/BRhxCCfwa0= X-Google-Smtp-Source: AGHT+IE1iJj7SbJwoQiYcFUkDL5bk6OUrmSnL1kBvIgwjRcUBEEuS/lPd1BXU/0MQqrPwB2wqvR9Vg== X-Received: by 2002:a05:6512:3e1b:b0:594:25e6:8a61 with SMTP id 2adb3069b0e04-596b4e58cd7mr9910048e87.16.1764663068727; Tue, 02 Dec 2025 00:11:08 -0800 (PST) Received: from [192.168.1.168] (83-233-6-197.cust.bredband2.com. [83.233.6.197]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-596bfa4f8a2sm4342412e87.88.2025.12.02.00.11.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Dec 2025 00:11:07 -0800 (PST) From: Marcus Folkesson Date: Tue, 02 Dec 2025 09:09:48 +0100 Subject: [PATCH RESEND v3 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: <20251202-i2c-mux-v3-1-877dcf478a9f@gmail.com> References: <20251202-i2c-mux-v3-0-877dcf478a9f@gmail.com> In-Reply-To: <20251202-i2c-mux-v3-0-877dcf478a9f@gmail.com> To: Wolfram Sang , Peter Rosin , Michael Hennerich , Bartosz Golaszewski , Andi Shyti 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=Nc5M9Z8FNun2aD78Xc5NFxJfLrb5FZRGRBm8Kv/u2lM=; b=owEBbQKS/ZANAwAKAYiATm9ZXVIyAcsmYgBpLp8BuoM+ud571wc8WeRvvqmjI7EUERjmmX1g/ 2H3AuZw3zOJAjMEAAEKAB0WIQQFUaLotmy1TWTBLGWIgE5vWV1SMgUCaS6fAQAKCRCIgE5vWV1S MrdHEACMzdOg6XFCeOjNi/bb7yWReiTy65HGhwvQgttKUfXWESp20pbKKcalCYnCq1wkYhfE/SW BrPuXoltmEYqeSCWcQ566RR2Zhfvi7/EA8234WwAkPyjRs5IxYr521xbt1iQuKo4q9+jv4ANBnR 0dxWN4jmjdSdEtoH/aDkTec9/SuHZV3rZJbXdep3p7LFZ45Zj0vklwC87WUPfFNTjlC6B+islG8 pM92OG5ld0on7Bc7tcSbFx0hSsFK+aRLPJ6Gw3XLNNVvQ0I91/TVJVBMn9rwbW+gkFLB9dVTBYz lY5kR4bZVTqxsOCDhqnYWSKxp52lZHbv+wYJDXhtwQTIcvkL4q0eBcB0UVU+QBAZopZbyYfbZaA YsffxVwpsKKZr45SRziL9Y7Kun5JiFHLM+GT7rBBvYep4fOikfw0PZ9am70zczzkRwAB/EvRzS8 IywYCdkGDl8Yzxq3SWWcBK+aVs0HpL8+Zp7CHa9Tr5hXVPK3FgqL1CKBaQI3Rn0bkHcvTJj+TDR 5q8DNHeh64aOmCGGoo7NhD6k3SYsTg91V5NUm5+UxVyyPqVF79DfHtbfpYvNObQSlYEacz3yyX5 0U98NyxEQtdw0a9o9kpoUr7DIFBxoawrYo/8E8aPG0jMCCf72Pl8mpzDEOzctRiGP81bTYQkMFw eiDjGlwptz58ttQ== 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.51.2