GPIO: MIPS: lantiq: fix overflow inside stp-xway driver
authorJohn Crispin <blogic@openwrt.org>
Wed, 11 Jul 2012 14:33:43 +0000 (16:33 +0200)
committerJohn Crispin <blogic@openwrt.org>
Thu, 13 Sep 2012 08:31:00 +0000 (10:31 +0200)
The driver was using a 16 bit field for storing the shadow value of the shift
register cascade. This resulted in only the first 2 shift registeres receiving
the correct data. The third shift register would always receive 0x00.

Fix this by using a 32bit field for the shadow value.

Signed-off-by: John Crispin <blogic@openwrt.org>
Cc: linux-kernel@vger.kernel.org
drivers/gpio/gpio-stp-xway.c

index e35096bf3cfb4f4faf1a46fed1ae79e2bd10e847..8bead0bb6459d917a7f2f52fe3bbfb1ecaf1edde 100644 (file)
@@ -82,7 +82,7 @@ struct xway_stp {
        struct gpio_chip gc;
        void __iomem *virt;
        u32 edge;       /* rising or falling edge triggered shift register */
-       u16 shadow;     /* shadow the shift registers state */
+       u32 shadow;     /* shadow the shift registers state */
        u8 groups;      /* we can drive 1-3 groups of 8bit each */
        u8 dsl;         /* the 2 LSBs can be driven by the dsl core */
        u8 phy1;        /* 3 bits can be driven by phy1 */