* [PATCH] gpio: pca953x: Fix NBANK calculation for PCA9536
@ 2016-06-09 5:32 Vignesh R
2016-06-13 7:22 ` Linus Walleij
0 siblings, 1 reply; 3+ messages in thread
From: Vignesh R @ 2016-06-09 5:32 UTC (permalink / raw)
To: Linus Walleij; +Cc: Alexandre Courbot, linux-gpio, linux-kernel, Vignesh R
NBANK() macro assumes that ngpios is a multiple of 8(BANK_SZ) and
hence results in 0 banks for PCA9536 which has just 4 gpios. This is
wrong as PCA9356 has 1 bank with 4 gpios. This results in uninitialized
PCA953X_INVERT register. Fix this by using DIV_ROUND_UP macro in
NBANK().
Cc: stable@vger.kernel.org
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
drivers/gpio/gpio-pca953x.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c
index 763028562d22..f31b141c05de 100644
--- a/drivers/gpio/gpio-pca953x.c
+++ b/drivers/gpio/gpio-pca953x.c
@@ -90,7 +90,7 @@ MODULE_DEVICE_TABLE(acpi, pca953x_acpi_ids);
#define MAX_BANK 5
#define BANK_SZ 8
-#define NBANK(chip) (chip->gpio_chip.ngpio / BANK_SZ)
+#define NBANK(chip) DIV_ROUND_UP(chip->gpio_chip.ngpio, BANK_SZ)
struct pca953x_chip {
unsigned gpio_start;
--
2.8.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] gpio: pca953x: Fix NBANK calculation for PCA9536
2016-06-09 5:32 [PATCH] gpio: pca953x: Fix NBANK calculation for PCA9536 Vignesh R
@ 2016-06-13 7:22 ` Linus Walleij
2016-06-13 9:04 ` Vignesh R
0 siblings, 1 reply; 3+ messages in thread
From: Linus Walleij @ 2016-06-13 7:22 UTC (permalink / raw)
To: Vignesh R; +Cc: Alexandre Courbot, linux-gpio, linux-kernel
On Thu, Jun 9, 2016 at 7:32 AM, Vignesh R <vigneshr@ti.com> wrote:
> NBANK() macro assumes that ngpios is a multiple of 8(BANK_SZ) and
> hence results in 0 banks for PCA9536 which has just 4 gpios. This is
> wrong as PCA9356 has 1 bank with 4 gpios. This results in uninitialized
> PCA953X_INVERT register. Fix this by using DIV_ROUND_UP macro in
> NBANK().
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Vignesh R <vigneshr@ti.com>
Patch applied.
Is this really a regression or affecting systems in development?
Which machine/device tree makes this problematic?
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] gpio: pca953x: Fix NBANK calculation for PCA9536
2016-06-13 7:22 ` Linus Walleij
@ 2016-06-13 9:04 ` Vignesh R
0 siblings, 0 replies; 3+ messages in thread
From: Vignesh R @ 2016-06-13 9:04 UTC (permalink / raw)
To: Linus Walleij; +Cc: Alexandre Courbot, linux-gpio, linux-kernel
On Monday 13 June 2016 12:52 PM, Linus Walleij wrote:
> On Thu, Jun 9, 2016 at 7:32 AM, Vignesh R <vigneshr@ti.com> wrote:
>
>> NBANK() macro assumes that ngpios is a multiple of 8(BANK_SZ) and
>> hence results in 0 banks for PCA9536 which has just 4 gpios. This is
>> wrong as PCA9356 has 1 bank with 4 gpios. This results in uninitialized
>> PCA953X_INVERT register. Fix this by using DIV_ROUND_UP macro in
>> NBANK().
>>
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Vignesh R <vigneshr@ti.com>
>
> Patch applied.
>
> Is this really a regression or affecting systems in development?
>
> Which machine/device tree makes this problematic?
>
I observed this on am335x-icev2 evm which is system in development.
Basically, variable with uninitialized value (junk) gets written to
PCA953X_INVERT register(in device_pca953x_init()) causing driver to
report wrong gpio pin status. So, this bug will affect any platform with
PCA9536 chip. Quick grep on arch/*/boot/dts/ folder shows one platform
already using pca9536 chip. Hence, I added Cc to stable kernel.
--
Regards
Vignesh
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-06-13 9:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-09 5:32 [PATCH] gpio: pca953x: Fix NBANK calculation for PCA9536 Vignesh R
2016-06-13 7:22 ` Linus Walleij
2016-06-13 9:04 ` Vignesh R
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).