i.MX: Fix GPIO ISR register write
authorGuenter Roeck <linux@roeck-us.net>
Fri, 28 Oct 2016 13:12:31 +0000 (14:12 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 28 Oct 2016 14:51:27 +0000 (15:51 +0100)
Writing the ISR register is supposed to clear interrupt status bits,
not to set them.

This patch makes '-M sabrelite' work without devicetree changes (Linux
kernel versions 3.18 to 4.7 with imx_v6_v7_defconfig and up to v4.8 with
multi_v7_defconfig; mainline has different problems).

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Message-id: 1477361005-18646-1-git-send-email-linux@roeck-us.net
Acked-by: Jean-Christophe Dubois <jcd@tribudubois.net>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/gpio/imx_gpio.c

index f3574aa..c36c394 100644 (file)
@@ -237,7 +237,7 @@ static void imx_gpio_write(void *opaque, hwaddr offset, uint64_t value,
         break;
 
     case ISR_ADDR:
-        s->isr |= ~value;
+        s->isr &= ~value;
         imx_gpio_set_all_int_lines(s);
         break;