linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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	[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).