
Reviewed-by: Marek Behun marek.behun@nic.cz
On Fri, 29 Sep 2017 10:53:36 +1300 Chris Packham judge.packham@gmail.com wrote:
Commit 8e6eda7cda6c ("drivers/i2c/muxes/pca954x: Add pca9547 I2C mux support") introduced a chip_desc for the pca954x devices but failed to update pca954x_ofdata_to_platdata() to be aware of it. Make pca954x_ofdata_to_platdata() lookup the chip_desc to validate the device width.
Signed-off-by: Chris Packham judge.packham@gmail.com
drivers/i2c/muxes/pca954x.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/i2c/muxes/pca954x.c b/drivers/i2c/muxes/pca954x.c index 01ca1ff48db9..2b70ff82bdd0 100644 --- a/drivers/i2c/muxes/pca954x.c +++ b/drivers/i2c/muxes/pca954x.c @@ -27,6 +27,7 @@ struct chip_desc { pca954x_ismux = 0, pca954x_isswi, } muxtype;
- u32 width;
};
struct pca954x_priv { @@ -39,14 +40,17 @@ static const struct chip_desc chips[] = { [PCA9544] = { .enable = 0x4, .muxtype = pca954x_ismux,
}, [PCA9547] = { .enable = 0x8, .muxtype = pca954x_ismux,.width = 4,
}, [PCA9548] = { .enable = 0x8, .muxtype = pca954x_isswi,.width = 8,
},.width = 8,
};
@@ -89,13 +93,14 @@ static const struct udevice_id pca954x_ids[] = { static int pca954x_ofdata_to_platdata(struct udevice *dev) { struct pca954x_priv *priv = dev_get_priv(dev);
- const struct chip_desc *chip =
&chips[dev_get_driver_data(dev)]; priv->addr = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev), "reg", 0); if (!priv->addr) { debug("MUX not found\n"); return -ENODEV; }
- priv->width = dev_get_driver_data(dev);
priv->width = chip->width;
if (!priv->width) { debug("No I2C MUX width specified\n");