Some Realtek switches have been designed with I2C busses that share a single SCL line. The clock line is used for 2 or more busses. This cannot be used with the standard i2c-gpio driver that relies on distinct SDA and SCL pairs. Provide a derived i2c-gpio-shared driver that can be used instead. This driver can handle up to 4 busses with only a single clock line. Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de> Link: https://github.com/openwrt/openwrt/pull/18737 Signed-off-by: Robert Marko <robimarko@gmail.com>
41 lines
1.5 KiB
Diff
41 lines
1.5 KiB
Diff
From 9d2327c5f1ac63cb14af088a95eba110ab0c473e Mon Sep 17 00:00:00 2001
|
|
From: Markus Stockhausen <markus.stockhausen@gmx.de>
|
|
Date: Wed, 7 May 2025 09:47:24 -0400
|
|
Subject: [PATCH] realtek: add i2c-gpio-shared driver
|
|
|
|
Adds the Kconfig and Makefile settings to make the new driver available.
|
|
|
|
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
|
|
---
|
|
drivers/i2c/busses/Kconfig | 9 +++++++++
|
|
drivers/i2c/busses/Makefile | 1 +
|
|
2 files changed, 10 insertions(+)
|
|
|
|
--- a/drivers/i2c/busses/Kconfig
|
|
+++ b/drivers/i2c/busses/Kconfig
|
|
@@ -683,6 +683,15 @@ config I2C_GPIO
|
|
This is a very simple bitbanging I2C driver utilizing the
|
|
arch-neutral GPIO API to control the SCL and SDA lines.
|
|
|
|
+config I2C_GPIO_SHARED
|
|
+ tristate "multiple GPIO-based bitbanging I2C with shared SCL"
|
|
+ depends on GPIOLIB || COMPILE_TEST
|
|
+ select I2C_ALGOBIT
|
|
+ help
|
|
+ This is an alternative of the I2C GPIO driver for devices with only
|
|
+ few GPIO pins where multiple busses with dedicated SDA lines share
|
|
+ a single SCL line.
|
|
+
|
|
config I2C_GPIO_FAULT_INJECTOR
|
|
bool "GPIO-based fault injector"
|
|
depends on I2C_GPIO
|
|
--- a/drivers/i2c/busses/Makefile
|
|
+++ b/drivers/i2c/busses/Makefile
|
|
@@ -67,6 +67,7 @@ obj-$(CONFIG_I2C_EG20T) += i2c-eg20t.o
|
|
obj-$(CONFIG_I2C_EMEV2) += i2c-emev2.o
|
|
obj-$(CONFIG_I2C_EXYNOS5) += i2c-exynos5.o
|
|
obj-$(CONFIG_I2C_GPIO) += i2c-gpio.o
|
|
+obj-$(CONFIG_I2C_GPIO_SHARED) += i2c-gpio-shared.o
|
|
obj-$(CONFIG_I2C_HIGHLANDER) += i2c-highlander.o
|
|
obj-$(CONFIG_I2C_HISI) += i2c-hisi.o
|
|
obj-$(CONFIG_I2C_HIX5HD2) += i2c-hix5hd2.o
|