diff options
author | Zoltan Herpai <wigyori@uid0.hu> | 2014-03-06 00:09:30 +0000 |
---|---|---|
committer | Zoltan Herpai <wigyori@uid0.hu> | 2014-03-06 00:09:30 +0000 |
commit | ac4b9dbb3c9b056008e00ee3d02fe3dad65641b7 (patch) | |
tree | ef1ef8907c63a75c4ac441f8c95325a6d5abb9ec /target/linux/sunxi/patches-3.13/171-2-pinctrl-sunxi-fix-hang-on-gpio-irq.patch | |
parent | 2c771cc71f3b6aceda5fe81f44a79b724e0941d0 (diff) | |
download | upstream-ac4b9dbb3c9b056008e00ee3d02fe3dad65641b7.tar.gz upstream-ac4b9dbb3c9b056008e00ee3d02fe3dad65641b7.tar.bz2 upstream-ac4b9dbb3c9b056008e00ee3d02fe3dad65641b7.zip |
sunxi: driver refresh for 3.13 - update gmac / mmc / usb / ahci drivers to follow mainline dev trees - add driver for spi - update clock support - update a31 support - move to new DT compats where appropriate - re-order patchqueue where needed - verified working a20 smp - move most DTSes off files/ - update defconfig
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
SVN-Revision: 39782
Diffstat (limited to 'target/linux/sunxi/patches-3.13/171-2-pinctrl-sunxi-fix-hang-on-gpio-irq.patch')
-rw-r--r-- | target/linux/sunxi/patches-3.13/171-2-pinctrl-sunxi-fix-hang-on-gpio-irq.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/target/linux/sunxi/patches-3.13/171-2-pinctrl-sunxi-fix-hang-on-gpio-irq.patch b/target/linux/sunxi/patches-3.13/171-2-pinctrl-sunxi-fix-hang-on-gpio-irq.patch new file mode 100644 index 0000000000..84710c6328 --- /dev/null +++ b/target/linux/sunxi/patches-3.13/171-2-pinctrl-sunxi-fix-hang-on-gpio-irq.patch @@ -0,0 +1,49 @@ +From 613c8489f6b576166aa31d32cbd573f6b7952e06 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Sat, 15 Feb 2014 12:58:17 +0100 +Subject: [PATCH] pinctrl-sunxi: Fix hang on gpio irq + +Our irq handler was missing chained_irq_enter / exit calls, causing a +hard hang as soon as a gpio irq happened. + +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +--- + drivers/pinctrl/pinctrl-sunxi.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c +index 74635cc..cc9bd1b 100644 +--- a/drivers/pinctrl/pinctrl-sunxi.c ++++ b/drivers/pinctrl/pinctrl-sunxi.c +@@ -13,6 +13,7 @@ + #include <linux/io.h> + #include <linux/clk.h> + #include <linux/gpio.h> ++#include <linux/irqchip/chained_irq.h> + #include <linux/irqdomain.h> + #include <linux/module.h> + #include <linux/of.h> +@@ -665,9 +666,12 @@ static void sunxi_pinctrl_irq_unmask(struct irq_data *d) + + static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc) + { ++ struct irq_chip *chip = irq_get_chip(irq); + struct sunxi_pinctrl *pctl = irq_get_handler_data(irq); + const unsigned long reg = readl(pctl->membase + IRQ_STATUS_REG); + ++ chained_irq_enter(chip, desc); ++ + /* Clear all interrupts */ + writel(reg, pctl->membase + IRQ_STATUS_REG); + +@@ -679,6 +683,7 @@ static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc) + generic_handle_irq(pin_irq); + } + } ++ chained_irq_exit(chip, desc); + } + + static struct of_device_id sunxi_pinctrl_match[] = { +-- +1.8.5.5 + |