i2c: muxes: pca954x: add PCA9546 variant
authorChris Packham <judge.packham@gmail.com>
Wed, 1 Apr 2020 02:55:27 +0000 (15:55 +1300)
committerHeiko Schocher <hs@denx.de>
Mon, 20 Apr 2020 04:47:35 +0000 (06:47 +0200)
This adds the PCA9546 4-channel i2c bus switch.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
Reviewed-by: Luca Ceresoli <luca@lucaceresoli.net>
Reviewed-by: Heiko Schocher <hs@denx.de>
drivers/i2c/muxes/Kconfig
drivers/i2c/muxes/pca954x.c

index 68f15261be771ca24fbe2d1c19776d69e4daf9af..39683fc43b4918c4f4f6131221f7e88ce0c2560a 100644 (file)
@@ -33,8 +33,8 @@ config I2C_MUX_PCA954x
          devices. It is x width I2C multiplexer which enables to partitioning
          I2C bus and connect multiple devices with the same address to the same
          I2C controller where driver handles proper routing to target i2c
          devices. It is x width I2C multiplexer which enables to partitioning
          I2C bus and connect multiple devices with the same address to the same
          I2C controller where driver handles proper routing to target i2c
-         device. Supported chips are PCA9543, PCA9544, PCA9547, PCA9548 and
-         PCA9646.
+         device. Supported chips are PCA9543, PCA9544, PCA9546, PCA9547,
+         PCA9548 and PCA9646.
 
 config I2C_MUX_GPIO
         tristate "GPIO-based I2C multiplexer"
 
 config I2C_MUX_GPIO
         tristate "GPIO-based I2C multiplexer"
index be90a7b24a8e82ef7ad41549886568eaf7633acb..cc8afc93b5e180ab9d3a4978e3f106f2775d7766 100644 (file)
@@ -18,6 +18,7 @@ DECLARE_GLOBAL_DATA_PTR;
 enum pca_type {
        PCA9543,
        PCA9544,
 enum pca_type {
        PCA9543,
        PCA9544,
+       PCA9546,
        PCA9547,
        PCA9548,
        PCA9646
        PCA9547,
        PCA9548,
        PCA9646
@@ -48,6 +49,10 @@ static const struct chip_desc chips[] = {
                .muxtype = pca954x_ismux,
                .width = 4,
        },
                .muxtype = pca954x_ismux,
                .width = 4,
        },
+       [PCA9546] = {
+               .muxtype = pca954x_isswi,
+               .width = 4,
+       },
        [PCA9547] = {
                .enable = 0x8,
                .muxtype = pca954x_ismux,
        [PCA9547] = {
                .enable = 0x8,
                .muxtype = pca954x_ismux,
@@ -95,6 +100,7 @@ static const struct i2c_mux_ops pca954x_ops = {
 static const struct udevice_id pca954x_ids[] = {
        { .compatible = "nxp,pca9543", .data = PCA9543 },
        { .compatible = "nxp,pca9544", .data = PCA9544 },
 static const struct udevice_id pca954x_ids[] = {
        { .compatible = "nxp,pca9543", .data = PCA9543 },
        { .compatible = "nxp,pca9544", .data = PCA9544 },
+       { .compatible = "nxp,pca9546", .data = PCA9546 },
        { .compatible = "nxp,pca9547", .data = PCA9547 },
        { .compatible = "nxp,pca9548", .data = PCA9548 },
        { .compatible = "nxp,pca9646", .data = PCA9646 },
        { .compatible = "nxp,pca9547", .data = PCA9547 },
        { .compatible = "nxp,pca9548", .data = PCA9548 },
        { .compatible = "nxp,pca9646", .data = PCA9646 },