.../bindings/i2c/qcom,sa8255p-geni-i2c.yaml | 64 ++++ drivers/i2c/busses/i2c-qcom-geni.c | 322 ++++++++++----------- 2 files changed, 220 insertions(+), 166 deletions(-)
The Qualcomm automotive SA8255p SoC relies on firmware to configure
platform resources, including clocks, interconnects and TLMM.
The driver requests resources operations over SCMI using power
and performance protocols.
The SCMI power protocol enables or disables resources like clocks,
interconnect paths, and TLMM (GPIOs) using runtime PM framework APIs,
such as resume/suspend, to control power states(on/off).
The SCMI performance protocol manages I2C frequency, with each
frequency rate represented by a performance level. The driver uses
geni_se_set_perf_opp() API to request the desired frequency rate..
As part of geni_se_set_perf_opp(), the OPP for the requested frequency
is obtained using dev_pm_opp_find_freq_floor() and the performance
level is set using dev_pm_opp_set_opp().
Tested-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
Signed-off-by: Praveen Talari <praveen.talari@oss.qualcomm.com>
---
Changes in v7:
- Rebased all patches on latest tip
- Removed SOC related patches which were merged and available in
linux-next
https://lore.kernel.org/all/177950280353.1097700.8285469548487310751.b4-ty@kernel.org/
- Link to v6: https://lore.kernel.org/all/20260227061544.1785978-1-praveen.talari@oss.qualcomm.com
Changes in v4:
- Added a new patch(4/13) to handle core clk as part of
geni_se_clks_off/on().
To: Andi Shyti <andi.shyti@kernel.org>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Konrad Dybcio <konradybcio@kernel.org>
To: Bjorn Andersson <andersson@kernel.org>
To: Praveen Talari <praveen.talari@oss.qualcomm.com>
To: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
To: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-i2c@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: bjorn.andersson@oss.qualcomm.com
Cc: konrad.dybcio@oss.qualcomm.com
Cc: aniket.randive@oss.qualcomm.com
Cc: chandana.chiluveru@oss.qualcomm.com
Cc: prasad.sodagudi@oss.qualcomm.com
---
Praveen Talari (6):
dt-bindings: i2c: Describe SA8255p
i2c: qcom-geni: Isolate serial engine setup
i2c: qcom-geni: Move resource initialization to separate function
i2c: qcom-geni: Use resources helper APIs in runtime PM functions
i2c: qcom-geni: Store of_device_id data in driver private struct
i2c: qcom-geni: Enable I2C on SA8255p Qualcomm platforms
.../bindings/i2c/qcom,sa8255p-geni-i2c.yaml | 64 ++++
drivers/i2c/busses/i2c-qcom-geni.c | 322 ++++++++++-----------
2 files changed, 220 insertions(+), 166 deletions(-)
---
base-commit: 8d6dbbbe3ba62de0a63e962ee004afb848c8e3ac
change-id: 20260616-enable-i2c-on-sa8255p-432b23838e18
Best regards,
--
Praveen Talari <praveen.talari@oss.qualcomm.com>
Hi Praveen, > Praveen Talari (6): > dt-bindings: i2c: Describe SA8255p > i2c: qcom-geni: Isolate serial engine setup > i2c: qcom-geni: Move resource initialization to separate function > i2c: qcom-geni: Use resources helper APIs in runtime PM functions > i2c: qcom-geni: Store of_device_id data in driver private struct > i2c: qcom-geni: Enable I2C on SA8255p Qualcomm platforms merged to i2c/i2c-for-7.2. Thanks, Andi
Hi Praveen, > > Praveen Talari (6): > > dt-bindings: i2c: Describe SA8255p > > i2c: qcom-geni: Isolate serial engine setup > > i2c: qcom-geni: Move resource initialization to separate function > > i2c: qcom-geni: Use resources helper APIs in runtime PM functions > > i2c: qcom-geni: Store of_device_id data in driver private struct > > i2c: qcom-geni: Enable I2C on SA8255p Qualcomm platforms > > merged to i2c/i2c-for-7.2. sorry, 7.3. It's too late to send it for this cycle. Andi
On Wed, Jun 17, 2026 at 10:20, Praveen Talari <praveen.talari@oss.qualcomm.com> wrote: > The Qualcomm automotive SA8255p SoC relies on firmware to configure > platform resources, including clocks, interconnects and TLMM. > The driver requests resources operations over SCMI using power > and performance protocols. > > The SCMI power protocol enables or disables resources like clocks, > interconnect paths, and TLMM (GPIOs) using runtime PM framework APIs, > such as resume/suspend, to control power states(on/off). > > The SCMI performance protocol manages I2C frequency, with each > frequency rate represented by a performance level. The driver uses > geni_se_set_perf_opp() API to request the desired frequency rate.. > > As part of geni_se_set_perf_opp(), the OPP for the requested frequency > is obtained using dev_pm_opp_find_freq_floor() and the performance > level is set using dev_pm_opp_set_opp(). > > Tested-by: Mattijs Korpershoek <mkorpershoek@kernel.org> > Signed-off-by: Praveen Talari <praveen.talari@oss.qualcomm.com> I've retested this on top of linux-next-20260616 and it still works fine for me on the Ride SX (SA8775P) board: / # uname -a Linux (none) 7.1.0-next-20260616+ #2 SMP PREEMPT_RT Wed Jun 17 14:58:42 CEST 2026 aarch64 aarch64 aarch64 GNU/Linux / # i2cdetect -l i2c-11 i2c Geni-I2C I2C adapter i2c-18 i2c Geni-I2C I2C adapter / # i2cdetect -F 11 Functionalities implemented by bus #11 I2C yes SMBus quick command no SMBus send byte yes SMBus receive byte yes SMBus write byte yes SMBus read byte yes SMBus write word yes SMBus read word yes SMBus process call yes SMBus block write yes SMBus block read no SMBus block process call no SMBus PEC yes I2C block write yes I2C block read yes / # i2cdetect -F 18 Functionalities implemented by bus #18 I2C yes SMBus quick command no SMBus send byte yes SMBus receive byte yes SMBus write byte yes SMBus read byte yes SMBus write word yes SMBus read word yes SMBus process call yes SMBus block write yes SMBus block read no SMBus block process call no SMBus PEC yes I2C block write yes I2C block read yes Regards, Mattijs
© 2016 - 2026 Red Hat, Inc.