diff options
| -rw-r--r-- | drivers/pinctrl/pinctrl-sirf.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/pinctrl/pinctrl-sirf.c b/drivers/pinctrl/pinctrl-sirf.c index 8bf781e8c35e..fa88655c5e96 100644 --- a/drivers/pinctrl/pinctrl-sirf.c +++ b/drivers/pinctrl/pinctrl-sirf.c | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #include <linux/bitops.h> | 24 | #include <linux/bitops.h> |
| 25 | #include <linux/gpio.h> | 25 | #include <linux/gpio.h> |
| 26 | #include <linux/of_gpio.h> | 26 | #include <linux/of_gpio.h> |
| 27 | #include <asm/mach/irq.h> | ||
| 27 | 28 | ||
| 28 | #define DRIVER_NAME "pinmux-sirf" | 29 | #define DRIVER_NAME "pinmux-sirf" |
| 29 | 30 | ||
| @@ -1427,6 +1428,9 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc) | |||
| 1427 | u32 status, ctrl; | 1428 | u32 status, ctrl; |
| 1428 | int idx = 0; | 1429 | int idx = 0; |
| 1429 | unsigned int first_irq; | 1430 | unsigned int first_irq; |
| 1431 | struct irq_chip *chip = irq_get_chip(irq); | ||
| 1432 | |||
| 1433 | chained_irq_enter(chip, desc); | ||
| 1430 | 1434 | ||
| 1431 | status = readl(bank->chip.regs + SIRFSOC_GPIO_INT_STATUS(bank->id)); | 1435 | status = readl(bank->chip.regs + SIRFSOC_GPIO_INT_STATUS(bank->id)); |
| 1432 | if (!status) { | 1436 | if (!status) { |
| @@ -1455,6 +1459,8 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc) | |||
| 1455 | idx++; | 1459 | idx++; |
| 1456 | status = status >> 1; | 1460 | status = status >> 1; |
| 1457 | } | 1461 | } |
| 1462 | |||
| 1463 | chained_irq_exit(chip, desc); | ||
| 1458 | } | 1464 | } |
| 1459 | 1465 | ||
| 1460 | static inline void sirfsoc_gpio_set_input(struct sirfsoc_gpio_bank *bank, unsigned ctrl_offset) | 1466 | static inline void sirfsoc_gpio_set_input(struct sirfsoc_gpio_bank *bank, unsigned ctrl_offset) |
