diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2016-08-31 03:49:44 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2017-03-24 09:04:13 -0400 |
commit | 9dd4819ed58a7f1702d5ba737507d0fef96e68c8 (patch) | |
tree | f597daa480dbf46e5b4036e96579b5649097d59a | |
parent | 7477e137dcfdf259123815d0e0b02738840ea71e (diff) |
gpio: sa1100: use sa11x0_gpio_set_wake()
Use sa11x0_gpio_set_wake() to set the PWER register, as provided by
Dmitry some time back.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/gpio/gpio-sa1100.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/gpio/gpio-sa1100.c b/drivers/gpio/gpio-sa1100.c index 8d8ee0ebf14c..fb9d52a57d78 100644 --- a/drivers/gpio/gpio-sa1100.c +++ b/drivers/gpio/gpio-sa1100.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/io.h> | 13 | #include <linux/io.h> |
14 | #include <linux/syscore_ops.h> | 14 | #include <linux/syscore_ops.h> |
15 | #include <soc/sa1100/pwer.h> | ||
15 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
16 | #include <mach/irqs.h> | 17 | #include <mach/irqs.h> |
17 | 18 | ||
@@ -73,6 +74,7 @@ static struct gpio_chip sa1100_gpio_chip = { | |||
73 | static int GPIO_IRQ_rising_edge; | 74 | static int GPIO_IRQ_rising_edge; |
74 | static int GPIO_IRQ_falling_edge; | 75 | static int GPIO_IRQ_falling_edge; |
75 | static int GPIO_IRQ_mask; | 76 | static int GPIO_IRQ_mask; |
77 | static int GPIO_IRQ_wake; | ||
76 | 78 | ||
77 | static int sa1100_gpio_type(struct irq_data *d, unsigned int type) | 79 | static int sa1100_gpio_type(struct irq_data *d, unsigned int type) |
78 | { | 80 | { |
@@ -131,11 +133,14 @@ static void sa1100_gpio_unmask(struct irq_data *d) | |||
131 | 133 | ||
132 | static int sa1100_gpio_wake(struct irq_data *d, unsigned int on) | 134 | static int sa1100_gpio_wake(struct irq_data *d, unsigned int on) |
133 | { | 135 | { |
134 | if (on) | 136 | int ret = sa11x0_gpio_set_wake(d->hwirq, on); |
135 | PWER |= BIT(d->hwirq); | 137 | if (!ret) { |
136 | else | 138 | if (on) |
137 | PWER &= ~BIT(d->hwirq); | 139 | GPIO_IRQ_wake |= BIT(d->hwirq); |
138 | return 0; | 140 | else |
141 | GPIO_IRQ_wake &= ~BIT(d->hwirq); | ||
142 | } | ||
143 | return ret; | ||
139 | } | 144 | } |
140 | 145 | ||
141 | /* | 146 | /* |
@@ -201,8 +206,8 @@ static int sa1100_gpio_suspend(void) | |||
201 | /* | 206 | /* |
202 | * Set the appropriate edges for wakeup. | 207 | * Set the appropriate edges for wakeup. |
203 | */ | 208 | */ |
204 | GRER = PWER & GPIO_IRQ_rising_edge; | 209 | GRER = GPIO_IRQ_wake & GPIO_IRQ_rising_edge; |
205 | GFER = PWER & GPIO_IRQ_falling_edge; | 210 | GFER = GPIO_IRQ_wake & GPIO_IRQ_falling_edge; |
206 | 211 | ||
207 | /* | 212 | /* |
208 | * Clear any pending GPIO interrupts. | 213 | * Clear any pending GPIO interrupts. |