linux/drivers/i2c
Viken Dadhaniya cb97bf3d4f
i2c: qcom-geni: Fix hardcoded clock index in SE_GENI_CLK_SEL
qcom_geni_i2c_conf() writes a hardcoded 0 to SE_GENI_CLK_SEL, which
selects an index from the hardware clock performance table. This always
picks the first table entry regardless of the actual source clock
configuration. On platforms where the matching entry is not at index 0,
the wrong source clock divider is active and the I2C bus runs at an
incorrect frequency.

Use geni_se_clk_freq_match() in geni_i2c_clk_map_idx() to find the
performance table index for the source clock (32 MHz or 19.2 MHz). Store
the resolved index in a new clk_idx field in geni_i2c_dev and write it
to SE_GENI_CLK_SEL instead of the hardcoded 0.

Fixes: 37692de5d5 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller")
Signed-off-by: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
Cc: <stable@vger.kernel.org> # v4.19+
Reviewed-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://patch.msgid.link/20260921-i2c-fix-se-clk-conf-v2-1-8b5537ceff2d@oss.qualcomm.com
2026-09-24 22:52:30 +02:00
..
algos i2c: algo: bit: Allow to skip bit test 2026-07-29 20:51:16 +02:00
busses i2c: qcom-geni: Fix hardcoded clock index in SE_GENI_CLK_SEL 2026-09-24 22:52:30 +02:00
muxes i2c: mux: demux-pinctrl: fix OF node leak on kstrdup failure 2026-08-19 21:55:53 +02:00
i2c-atr.c i2c: atr: fix dangling adapter pointer on add failure 2026-09-16 07:30:36 +02:00
i2c-boardinfo.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-core-acpi.c i2c for v7.3 2026-08-19 09:23:13 -07:00
i2c-core-base.c i2c: core: fix debugfs UAF on adapter removal 2026-08-28 03:12:01 +02:00
i2c-core-of-prober.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-core-of.c Revert "treewide: Fix probing of devices in DT overlays" 2026-05-22 13:33:58 +02:00
i2c-core-slave.c i2c: Use trace_call__##name() at guarded tracepoint call sites 2026-03-26 10:24:39 -04:00
i2c-core-smbus.c i2c: smbus: fix a potential uninitialization bug 2026-05-19 12:43:08 +02:00
i2c-core.h i2c: Let i2c-core.h include <linux/i2c.h> 2026-07-03 07:38:15 +02:00
i2c-dev.c i2c: dev: prevent integer overflow in I2C_TIMEOUT ioctl 2026-05-04 11:31:35 +02:00
i2c-mux.c i2c: mux: Fix channel node leak on adapter add failure 2026-08-26 15:39:36 +02:00
i2c-slave-eeprom.c i2c: Use named initializers for arrays of i2c_device_data 2026-06-05 01:09:25 +02:00
i2c-slave-testunit.c i2c for v7.2 2026-06-16 07:43:29 +05:30
i2c-smbus.c i2c: Use named initializers for arrays of i2c_device_data 2026-06-05 01:09:25 +02:00
i2c-stub.c i2c: stub: Reject I2C block transfers with invalid length 2026-05-04 13:23:53 +02:00
Kconfig i2c: Remove I2C_COMPAT config symbol and related code 2024-09-07 18:31:28 +02:00
Makefile i2c: Introduce OF component probe function 2024-11-27 12:04:10 +01:00