mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
i2c: rtl9300: add support for 50 kHz and 2.5 MHz bus speeds
Some SFP modules on certain switches (for example the ONTi ONT-S508CL-8S and XikeStor SKS8300-8X) exhibit unreliable I2C communication at the currently supported speeds. Add support for 50 kHz and 2.5 MHz I2C bus modes on the RTL9300 to improve compatibility with these devices. Signed-off-by: Jan Kantert <jan-kernel@kantert.net> Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://lore.kernel.org/r/20260227111134.2163701-1-jan-kernel@kantert.net
This commit is contained in:
parent
d3e2c7476e
commit
879766b58e
|
|
@ -11,10 +11,16 @@
|
|||
#include <linux/unaligned.h>
|
||||
|
||||
enum rtl9300_bus_freq {
|
||||
RTL9300_I2C_STD_FREQ,
|
||||
RTL9300_I2C_FAST_FREQ,
|
||||
RTL9300_I2C_STD_FREQ, // 100kHz
|
||||
RTL9300_I2C_FAST_FREQ, // 400kHz
|
||||
RTL9300_I2C_SUPER_FAST_FREQ, // 2.5MHz
|
||||
RTL9300_I2C_SLOW_FREQ, // 50kHz
|
||||
};
|
||||
|
||||
#define RTL9300_I2C_MAX_SUPER_FAST_FREQ 2500000
|
||||
#define RTL9300_I2C_MAX_SLOW_FREQ 50000
|
||||
|
||||
|
||||
struct rtl9300_i2c;
|
||||
|
||||
struct rtl9300_i2c_chan {
|
||||
|
|
@ -433,6 +439,12 @@ static int rtl9300_i2c_probe(struct platform_device *pdev)
|
|||
case I2C_MAX_FAST_MODE_FREQ:
|
||||
chan->bus_freq = RTL9300_I2C_FAST_FREQ;
|
||||
break;
|
||||
case RTL9300_I2C_MAX_SUPER_FAST_FREQ:
|
||||
chan->bus_freq = RTL9300_I2C_SUPER_FAST_FREQ;
|
||||
break;
|
||||
case RTL9300_I2C_MAX_SLOW_FREQ:
|
||||
chan->bus_freq = RTL9300_I2C_SLOW_FREQ;
|
||||
break;
|
||||
default:
|
||||
dev_warn(i2c->dev, "SDA%d clock-frequency %d not supported using default\n",
|
||||
sda_num, clock_freq);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user