Reviewed-by: Marek Behun <marek.be...@nic.cz> On Fri, 29 Sep 2017 10:53:36 +1300 Chris Packham <judge.pack...@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.pack...@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, > + .width = 4, > }, > [PCA9547] = { > .enable = 0x8, > .muxtype = pca954x_ismux, > + .width = 8, > }, > [PCA9548] = { > .enable = 0x8, > .muxtype = pca954x_isswi, > + .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"); _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot