mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-17 10:24:49 +00:00
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:
parent
fa0ed06a74
commit
f7c9839a61
2 changed files with 42 additions and 0 deletions
|
@ -36,6 +36,11 @@ config I2C_MUX_PCA954x
|
||||||
device. Supported chips are PCA9543, PCA9544, PCA9546, PCA9547,
|
device. Supported chips are PCA9543, PCA9544, PCA9546, PCA9547,
|
||||||
PCA9548 and PCA9646.
|
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
|
config I2C_MUX_GPIO
|
||||||
tristate "GPIO-based I2C multiplexer"
|
tristate "GPIO-based I2C multiplexer"
|
||||||
depends on I2C_MUX && DM_GPIO
|
depends on I2C_MUX && DM_GPIO
|
||||||
|
|
|
@ -14,6 +14,12 @@
|
||||||
#include <asm-generic/gpio.h>
|
#include <asm-generic/gpio.h>
|
||||||
|
|
||||||
enum pca_type {
|
enum pca_type {
|
||||||
|
MAX7356,
|
||||||
|
MAX7357,
|
||||||
|
MAX7358,
|
||||||
|
MAX7367,
|
||||||
|
MAX7368,
|
||||||
|
MAX7369,
|
||||||
PCA9543,
|
PCA9543,
|
||||||
PCA9544,
|
PCA9544,
|
||||||
PCA9546,
|
PCA9546,
|
||||||
|
@ -39,6 +45,31 @@ struct pca954x_priv {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct chip_desc chips[] = {
|
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] = {
|
[PCA9543] = {
|
||||||
.muxtype = pca954x_isswi,
|
.muxtype = pca954x_isswi,
|
||||||
.width = 2,
|
.width = 2,
|
||||||
|
@ -102,6 +133,12 @@ static const struct i2c_mux_ops pca954x_ops = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct udevice_id pca954x_ids[] = {
|
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,pca9543", .data = PCA9543 },
|
||||||
{ .compatible = "nxp,pca9544", .data = PCA9544 },
|
{ .compatible = "nxp,pca9544", .data = PCA9544 },
|
||||||
{ .compatible = "nxp,pca9546", .data = PCA9546 },
|
{ .compatible = "nxp,pca9546", .data = PCA9546 },
|
||||||
|
|
Loading…
Add table
Reference in a new issue