From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (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 EE00F36D9E0 for ; Mon, 13 Jul 2026 07:20:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783927237; cv=none; b=fmLIlzTx4rGELBknnuzC7nfEFjbjA33tskVtqwwbhYaXquKPL1db8EDkYo8KYiDk7VD6g/vo2NYHAhnKZoIcjTSRLrP9FWNsDOpkNohYLr9L0EEUE5QO1IEDIJg8m7/JVOLIllNkoqtoENhRGa7mQd0FzXJq8RQddnUKBs/P/2w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783927237; c=relaxed/simple; bh=utkdIrJtEC44DqqTUyxORrRSv5x0AbtRsT4oMW64lXM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HO+SPHfmD801XtjGzw4QuDhPvruuwfKL+MSQiI1BmYBq8f4rADP9rttpAFgiXOlD9p5uD7wLy7qdtCBytZYzaqngzt109MBvB8SW7WnpiDvLkuCZUMmS3ER/irAmrxlk9EK5RFOEybwTSQtv/otp8B/QDVs/Nld8aB25NgwJjzA= 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=ITMCwiBx; arc=none smtp.client-ip=209.85.167.51 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="ITMCwiBx" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-5b01910b499so2365150e87.0 for ; Mon, 13 Jul 2026 00:20:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783927234; x=1784532034; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=mUX26WpwvVrJFwxAmnUDIQNXofqL2zgl9QzvPbM33SE=; b=ITMCwiBxT93dvKJ9SyrgqrBe/As8DmTzHw3Tl792dkFjzkp5L5ygZ8ttikeH0E2nD1 SYqEm3DcglGkgcB830KHzn7Gk1opS8SBP2cYmby559QmBmrmjCk8CrVR6QfwjcuPqeMc ExR0jcqLFl67leBy8KFOvMpISNaAJn/KW19Ct6TZm8vYPVQEpicmvP9QK06Vw1hOSPHg et9VAv2AoWMa5MlFmxbLJf9eh03SwE8vhI4chLDQXpKcfhwdd3MW+oL2FG3W3/IeKENN ObZjsnCpJOdUZXg9rNjYhuOZ+CqUgXbjC/o5S5V6gQ9WE1EZbbQ8bjeopTopJkgOS8NB g34w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783927234; x=1784532034; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=mUX26WpwvVrJFwxAmnUDIQNXofqL2zgl9QzvPbM33SE=; b=o1XnKRrYBZRvaPV+4ZXcYO8RlAlJSHzKgSHSynJs5G4AyRe6/FCpQXX40og9bLgjvT 4KgGemcCbtHCWGZKK35aASLN7GXLVsbAoSA3dLRJN2zqLi0yV7II9kms/dFTZrYd3YXq Wsj+psnrM2QsyDDR0u/SEvgyzAQlksZgvKgYmQjdmajX1rWMaRGiXZyJKLdAYOy01EvQ nVYHd2SDvWyySCMN8atAJjnwwh5jj6clVyyj3o1ybADhrMktvC9gOq8ZvO3h9hK5d+ih dByjpvE5tVvMTcbahKoaEsI+U9macZnVlFg1oFXFm9Z5p0YzwTg5hPaFIp5f2XEI937O 46fg== X-Forwarded-Encrypted: i=1; AHgh+RoOZfmwXAy8h/a4yKlrhO+OTeDJ+hhUPREvJfP9QB3in+JnxfkmJogskeliouXASCNOVNzaRi2HxY6IYe8=@vger.kernel.org X-Gm-Message-State: AOJu0YyrUK6JA2F8JoUy842r5MtGNyuqg1+Ux92k9aa4x6H3BXQQUpBF hoD0/o7lWXJkz3XLsRPLnso1Kl3ooyaphPh7NbKgUP4/Byx4Krek2xdqv8lz19XRYHQ= X-Gm-Gg: AfdE7cnij1nS7tOL0LoyC1/SPKLKxqRVMv8ZR+xGqitYZCLCa+zaZumOhEYLC0oBZA+ JChikhirnLmbyn3C8U2kfTVkyjeNxH4S0qC00Rcy6eoJ6SYqb2TqGpnQ30dm8ijINqS8PiD3LJx lxZK1QZJjo8n7eB8CsoJ1fdAPNrD9NnX46WbWEcoZAj8s53zuJNHx00LNiUqmFyf2e/tp4d3sIE tlV5DenUsXIOa0miett7Qz3z0K3WZs0kKFFbDI9Q9YCq+v39mR/UXbc+E80J1fEiaGW+O3RcfYW B3uQpFyEXv3pmp0S99sohrAvTTGindV5EcrR3FJK4NgP1434jDqQ0fFqtSHKhjL3EXBv/fTvnud me9LLNZbqVHUpSwdA+CfJPWAGPmNosFctAuUgoKEEHB9C5IBRj6XTtF/xoUEiq3dcips1NHD6dX 67sSgP40d6x2mQZh6RIzk7efnU1V1diLeMMAUGD29VFeXdtSjjkIC8acCmBA== X-Received: by 2002:a05:6512:230e:b0:5ae:a4a4:b6ca with SMTP id 2adb3069b0e04-5b023d12238mr1708807e87.14.1783927233848; Mon, 13 Jul 2026 00:20:33 -0700 (PDT) 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-5b01ca55723sm2625636e87.35.2026.07.13.00.20.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 00:20:33 -0700 (PDT) From: Marcus Folkesson Date: Mon, 13 Jul 2026 09:19:57 +0200 Subject: [PATCH v11 1/7] 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: 7bit Message-Id: <20260713-i2c-mux-v11-1-72bb8af8ee8c@gmail.com> References: <20260713-i2c-mux-v11-0-72bb8af8ee8c@gmail.com> In-Reply-To: <20260713-i2c-mux-v11-0-72bb8af8ee8c@gmail.com> To: Wolfram Sang , Michael Hennerich , Bartosz Golaszewski , Andi Shyti , Andy Shevchenko , Bartosz Golaszewski , Peter Rosin , Peter Rosin Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Marcus Folkesson X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1645; i=marcus.folkesson@gmail.com; h=from:subject:message-id; bh=utkdIrJtEC44DqqTUyxORrRSv5x0AbtRsT4oMW64lXM=; b=owEBbQKS/ZANAwAKAYiATm9ZXVIyAcsmYgBqVJGxwTjAtaPb0x5drXc0YkmoWzNJ/oOfKfU+v Up1Vt+tNK6JAjMEAAEKAB0WIQQFUaLotmy1TWTBLGWIgE5vWV1SMgUCalSRsQAKCRCIgE5vWV1S Ml3vD/9bNNLgaY8rXBnkrdoKHbiEb1/KlJz8oezgUw8JKMycE6i5sYg9soeiO7PosGFTsdXXEiV 7z8Ff+3WT9gywMHcNHEnjfDK3XzJsUreSOK7pe8qsmdBFsxA5TMn5dUGj6a2KMVYrXB1qrMXqLE Lkg1zc7KRwXnlm9fe/595rL0/4YD57hlyR2XPUyAsmomk2b7q2vj5LwoTCOkDFOvqMHtDOm33bv PLurGaVJWJXRdSfRbtSCe3RMNuBrNolJE6JuRJJakIWtzx6funBlavwO+Qif9sOYX1uOKoKdGmj 4XbLzxw2YwWpo3tgEtu2WIcwTW+/tNAQ2gqV6CA7fDBMPXSElclnAYXk+x0DFuqeAP04SfDIvh6 eiKhJZAaG4+92N2MlcD4llb7ZK86bkigpmGlOhZ7OoA4PpJkoGVLJ4BADpKkYY5SpBqA+jew7Kl +OyqMnYZ9Xm9z+J1jUsertIuZS12CLPEc6VwU1oXbyijaPbN9djHkdIkLKy2Zj/5vAfB3XCH9Es fypF9vGE6zGQWXjr8uUM39x2Ra5WXMSI6kXCuF6F8WLA6dkhLI1FtDH2As4D7gA0SrhrCFx2dLF B9xjAlyz3Q/Z8gXfyEFA2KjkStyfrSYZYJ0DjEDfFdS9TT/vj2ipv9CVRyeoNvg6lIcTWhpKqe0 1e6ya2D9fiWDixw== 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 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 20fd41b51d5c..c5ba07f03ada 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -729,6 +729,9 @@ struct i2c_adapter_quirks { /* * i2c_adapter is the structure used to identify a physical i2c bus along * with the access algorithms necessary to access it. + * + * @set_clk_freq: Set clock frequency for the adapter. Returns the actual set frequency. + * This function is optional. */ struct i2c_adapter { struct module *owner; @@ -742,6 +745,8 @@ struct i2c_adapter { struct rt_mutex mux_lock; 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 */ -- 2.54.0