]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
i2c: muxes: pca954x: Add MAX735x/MAX736x support
authorMaksim Kiselev <bigunclemax@gmail.com>
Thu, 19 Sep 2024 16:06:56 +0000 (19:06 +0300)
committerHeiko Schocher <hs@denx.de>
Mon, 21 Oct 2024 04:32:28 +0000 (06:32 +0200)
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@gmail.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
drivers/i2c/muxes/Kconfig
drivers/i2c/muxes/pca954x.c

index 323c4fbe9cccab4c25ea0ef81477857bfb59dd5b..cd5579aa55a92fe099c3f4bcb7e4fdf68cc61804 100644 (file)
@@ -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
index 795288fe2e94553760d0e8f0c93a997cba94a8cd..9dd26972703650e0e071f917f207af4dc83003fc 100644 (file)
 #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 },