]> git.sur5r.net Git - u-boot/commitdiff
i2c: muxes: pca954x: look up width from chip_desc
authorChris Packham <judge.packham@gmail.com>
Thu, 28 Sep 2017 21:53:36 +0000 (10:53 +1300)
committerHeiko Schocher <hs@denx.de>
Wed, 11 Oct 2017 04:17:22 +0000 (06:17 +0200)
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>
Reviewed-by: Marek Behun <marek.behun@nic.cz>
drivers/i2c/muxes/pca954x.c

index 01ca1ff48db903875b116825edac2fa7c1e460e7..2b70ff82bdd09af59abbe2e894b38328dac55687 100644 (file)
@@ -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");