Re: [PATCH v1 2/2] gpio: pca953x: Correctly initialize registers 6 and 7 for PCA957x

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 30, 2020 at 4:20 PM Andy Shevchenko
<andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:
>
> When driver has been converted to the bitmap API the non-bitmap functions
> started behaving differently on 32-bit BE architectures since the bytes in
> two consequent unsigned longs are in different order in comparison to byte
> array. Hence if the chip had had more than 32 lines the memset() call over
> it would have not set up upper lines correctly.
> Although it's currently a theoretical case (no supported chips of this type
> has 32+ lines), it's better to provide a clean code to avoid people thinking
> this is okay and potentially producing not fully working things.
>
> Fixes: 35d13d94893f ("gpio: pca953x: convert to use bitmap API")
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> ---
>  drivers/gpio/gpio-pca953x.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c
> index 3f24cfabb1d7..6263a4d55f8b 100644
> --- a/drivers/gpio/gpio-pca953x.c
> +++ b/drivers/gpio/gpio-pca953x.c
> @@ -942,6 +942,7 @@ static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert)
>  static int device_pca957x_init(struct pca953x_chip *chip, u32 invert)
>  {
>         DECLARE_BITMAP(val, MAX_LINE);
> +       unsigned int i;
>         int ret;
>
>         ret = device_pca95xx_init(chip, invert);
> @@ -949,7 +950,9 @@ static int device_pca957x_init(struct pca953x_chip *chip, u32 invert)
>                 goto out;
>
>         /* To enable register 6, 7 to control pull up and pull down */
> -       memset(val, 0x02, NBANK(chip));
> +       for (i = 0; i < NBANK(chip); i++)
> +               bitmap_set_value8(val, 0x02, i * BANK_SZ);
> +
>         ret = pca953x_write_regs(chip, PCA957X_BKEN, val);
>         if (ret)
>                 goto out;
> --
> 2.28.0
>

Reviewed-by: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx>



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux