i2c: muxes: pca954x: Add MAX735x/MAX736x support

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>
This commit is contained in:
Maksim Kiselev 2024-09-19 19:06:56 +03:00 committed by Heiko Schocher
parent fa0ed06a74
commit f7c9839a61
2 changed files with 42 additions and 0 deletions

View 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

View file

@ -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 },