]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
i2c: qcom-geni: fix I2C frequency table to achieve accurate bus rates
authorKathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com>
Tue, 13 May 2025 11:08:33 +0000 (16:38 +0530)
committerAndi Shyti <andi.shyti@kernel.org>
Tue, 29 Jul 2025 22:39:54 +0000 (00:39 +0200)
Update the I2C frequency table to match the recommended values
specified in the I2C hardware programming guide. In the current IPQ5424
configuration where 32MHz is the source clock, the I2C bus frequencies do
not meet expectations—for instance, 363KHz is achieved instead of the
expected 400KHz.

Fixes: 506bb2ab0075 ("i2c: qcom-geni: Support systems with 32MHz serial engine clock")
Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com>
Cc: <stable@vger.kernel.org> # v6.13+
Reviewed-by: Mukesh Kumar Savaliya <quic_msavaliy@quicinc.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20250513-i2c-bus-freq-v1-1-9a333ad5757f@oss.qualcomm.com
drivers/i2c/busses/i2c-qcom-geni.c

index 13889f52b6f78a767c0fd96d6a6d6ba2c6664205..ff2289b52c84ccf9ef786c2618bd869453c5f611 100644 (file)
@@ -155,9 +155,9 @@ static const struct geni_i2c_clk_fld geni_i2c_clk_map_19p2mhz[] = {
 
 /* source_clock = 32 MHz */
 static const struct geni_i2c_clk_fld geni_i2c_clk_map_32mhz[] = {
-       { I2C_MAX_STANDARD_MODE_FREQ, 8, 14, 18, 40 },
-       { I2C_MAX_FAST_MODE_FREQ, 4,  3, 11, 20 },
-       { I2C_MAX_FAST_MODE_PLUS_FREQ, 2, 3,  6, 15 },
+       { I2C_MAX_STANDARD_MODE_FREQ, 8, 14, 18, 38 },
+       { I2C_MAX_FAST_MODE_FREQ, 4,  3, 9, 19 },
+       { I2C_MAX_FAST_MODE_PLUS_FREQ, 2, 3, 5, 15 },
        {}
 };