diff options
Diffstat (limited to 'drivers/gpio/gpio-adnp.c')
-rw-r--r-- | drivers/gpio/gpio-adnp.c | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/drivers/gpio/gpio-adnp.c b/drivers/gpio/gpio-adnp.c index 89863ea25de1..44c09904daa6 100644 --- a/drivers/gpio/gpio-adnp.c +++ b/drivers/gpio/gpio-adnp.c | |||
@@ -192,28 +192,20 @@ static void adnp_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip) | |||
192 | mutex_lock(&adnp->i2c_lock); | 192 | mutex_lock(&adnp->i2c_lock); |
193 | 193 | ||
194 | err = adnp_read(adnp, GPIO_DDR(adnp) + i, &ddr); | 194 | err = adnp_read(adnp, GPIO_DDR(adnp) + i, &ddr); |
195 | if (err < 0) { | 195 | if (err < 0) |
196 | mutex_unlock(&adnp->i2c_lock); | 196 | goto unlock; |
197 | return; | ||
198 | } | ||
199 | 197 | ||
200 | err = adnp_read(adnp, GPIO_PLR(adnp) + i, &plr); | 198 | err = adnp_read(adnp, GPIO_PLR(adnp) + i, &plr); |
201 | if (err < 0) { | 199 | if (err < 0) |
202 | mutex_unlock(&adnp->i2c_lock); | 200 | goto unlock; |
203 | return; | ||
204 | } | ||
205 | 201 | ||
206 | err = adnp_read(adnp, GPIO_IER(adnp) + i, &ier); | 202 | err = adnp_read(adnp, GPIO_IER(adnp) + i, &ier); |
207 | if (err < 0) { | 203 | if (err < 0) |
208 | mutex_unlock(&adnp->i2c_lock); | 204 | goto unlock; |
209 | return; | ||
210 | } | ||
211 | 205 | ||
212 | err = adnp_read(adnp, GPIO_ISR(adnp) + i, &isr); | 206 | err = adnp_read(adnp, GPIO_ISR(adnp) + i, &isr); |
213 | if (err < 0) { | 207 | if (err < 0) |
214 | mutex_unlock(&adnp->i2c_lock); | 208 | goto unlock; |
215 | return; | ||
216 | } | ||
217 | 209 | ||
218 | mutex_unlock(&adnp->i2c_lock); | 210 | mutex_unlock(&adnp->i2c_lock); |
219 | 211 | ||
@@ -240,6 +232,11 @@ static void adnp_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip) | |||
240 | direction, level, interrupt, pending); | 232 | direction, level, interrupt, pending); |
241 | } | 233 | } |
242 | } | 234 | } |
235 | |||
236 | return; | ||
237 | |||
238 | unlock: | ||
239 | mutex_unlock(&adnp->i2c_lock); | ||
243 | } | 240 | } |
244 | 241 | ||
245 | static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios) | 242 | static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios) |
@@ -323,7 +320,7 @@ static irqreturn_t adnp_irq(int irq, void *data) | |||
323 | 320 | ||
324 | for_each_set_bit(bit, &pending, 8) { | 321 | for_each_set_bit(bit, &pending, 8) { |
325 | unsigned int child_irq; | 322 | unsigned int child_irq; |
326 | child_irq = irq_find_mapping(adnp->gpio.irqdomain, | 323 | child_irq = irq_find_mapping(adnp->gpio.irq.domain, |
327 | base + bit); | 324 | base + bit); |
328 | handle_nested_irq(child_irq); | 325 | handle_nested_irq(child_irq); |
329 | } | 326 | } |