[PATCH v1] i2c: muxes: pca954x: Add MAX735x/MAX736x support
bigunclemax at gmail.com
bigunclemax at gmail.com
Thu Sep 19 18:06:56 CEST 2024
From: Maksim Kiselev <bigunclemax at gmail.com>
Add support for the following Maxim chips using the existing PCA954x
driver:
- MAX7356
- MAX7357
- MAX7358
- MAX7367
- MAX7368
- MAX7369
All added Maxim chips behave like the PCA954x, where a single SMBUS byte
write selects up to 8 channels to be bridged to the primary bus.
Tested using the MAX7358.
Signed-off-by: Maksim Kiselev <bigunclemax at gmail.com>
---
Hi, friends!
I have a custom board with MAX7358 GPIO expander.
This patch is the port of Linux commit:
> 81694437b6eb i2c: muxes: pca954x: Add MAX735x/MAX736x support
Best wishes, Maksim.
drivers/i2c/muxes/Kconfig | 5 +++++
drivers/i2c/muxes/pca954x.c | 37 +++++++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+)
diff --git a/drivers/i2c/muxes/Kconfig b/drivers/i2c/muxes/Kconfig
index 323c4fbe9c..cd5579aa55 100644
--- a/drivers/i2c/muxes/Kconfig
+++ b/drivers/i2c/muxes/Kconfig
@@ -36,6 +36,11 @@ config I2C_MUX_PCA954x
device. Supported chips are PCA9543, PCA9544, PCA9546, PCA9547,
PCA9548 and PCA9646.
+ It's also compatible to Maxims MAX735x I2C switch chips, which are controlled
+ as the NXP PCA9548 and the MAX736x chips that act like the PCA9544.
+ This includes the:
+ MAX7356, MAX7357, MAX7358, MAX7367, MAX7368 and MAX7369
+
config I2C_MUX_GPIO
tristate "GPIO-based I2C multiplexer"
depends on I2C_MUX && DM_GPIO
diff --git a/drivers/i2c/muxes/pca954x.c b/drivers/i2c/muxes/pca954x.c
index 795288fe2e..9dd2697270 100644
--- a/drivers/i2c/muxes/pca954x.c
+++ b/drivers/i2c/muxes/pca954x.c
@@ -14,6 +14,12 @@
#include <asm-generic/gpio.h>
enum pca_type {
+ MAX7356,
+ MAX7357,
+ MAX7358,
+ MAX7367,
+ MAX7368,
+ MAX7369,
PCA9543,
PCA9544,
PCA9546,
@@ -39,6 +45,31 @@ struct pca954x_priv {
};
static const struct chip_desc chips[] = {
+ [MAX7356] = {
+ .muxtype = pca954x_isswi,
+ .width = 8,
+ },
+ [MAX7357] = {
+ .muxtype = pca954x_isswi,
+ .width = 8,
+ },
+ [MAX7358] = {
+ .muxtype = pca954x_isswi,
+ .width = 8,
+ },
+ [MAX7367] = {
+ .muxtype = pca954x_isswi,
+ .width = 4,
+ },
+ [MAX7368] = {
+ .muxtype = pca954x_isswi,
+ .width = 4,
+ },
+ [MAX7369] = {
+ .enable = 0x4,
+ .muxtype = pca954x_ismux,
+ .width = 4,
+ },
[PCA9543] = {
.muxtype = pca954x_isswi,
.width = 2,
@@ -102,6 +133,12 @@ static const struct i2c_mux_ops pca954x_ops = {
};
static const struct udevice_id pca954x_ids[] = {
+ { .compatible = "maxim,max7356", .data = MAX7356 },
+ { .compatible = "maxim,max7357", .data = MAX7357 },
+ { .compatible = "maxim,max7358", .data = MAX7358 },
+ { .compatible = "maxim,max7367", .data = MAX7367 },
+ { .compatible = "maxim,max7368", .data = MAX7368 },
+ { .compatible = "maxim,max7369", .data = MAX7369 },
{ .compatible = "nxp,pca9543", .data = PCA9543 },
{ .compatible = "nxp,pca9544", .data = PCA9544 },
{ .compatible = "nxp,pca9546", .data = PCA9546 },
--
2.45.2
More information about the U-Boot
mailing list