Re: [U-Boot] [PATCH] i2c: muxes: pca954x: look up width from chip_desc

2017-09-29 Thread Chris Packham
On 30/09/2017 2:43 AM, "Marek Behún"  wrote:

On Fri, 29 Sep 2017 10:53:36 +1300
Chris Packham  wrote:


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

Hmm, looking at this now, isn't one of the enable or width fields
redundant? They both have same values in all entries.


They happen to have the same value but they have different meanings. In
fact enable isn't actually used for the isswi code path.
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH] i2c: muxes: pca954x: look up width from chip_desc

2017-09-29 Thread Marek Behún
On Fri, 29 Sep 2017 10:53:36 +1300
Chris Packham  wrote:


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

Hmm, looking at this now, isn't one of the enable or width fields
redundant? They both have same values in all entries.

Marek
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH] i2c: muxes: pca954x: look up width from chip_desc

2017-09-29 Thread Marek Behún
Reviewed-by: Marek Behun 

On Fri, 29 Sep 2017 10:53:36 +1300
Chris Packham  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 
> ---
> 
>  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 =
> [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