gpio: tegra: Properly handle irq_set_irq_wake() error
Technically upstream interrupt controller may fail changing of GPIO's bank wake-state and in this case the GPIO's wake-state shouldn't be changed. Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Reviewed-by: Thierry Reding <treding@nvidia.com> Tested-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
This commit is contained in:
parent
fc782e47e6
commit
f56d979cc5
|
@ -497,6 +497,11 @@ static int tegra_gpio_irq_set_wake(struct irq_data *d, unsigned int enable)
|
||||||
struct tegra_gpio_bank *bank = irq_data_get_irq_chip_data(d);
|
struct tegra_gpio_bank *bank = irq_data_get_irq_chip_data(d);
|
||||||
unsigned int gpio = d->hwirq;
|
unsigned int gpio = d->hwirq;
|
||||||
u32 port, bit, mask;
|
u32 port, bit, mask;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
err = irq_set_irq_wake(bank->irq, enable);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
port = GPIO_PORT(gpio);
|
port = GPIO_PORT(gpio);
|
||||||
bit = GPIO_BIT(gpio);
|
bit = GPIO_BIT(gpio);
|
||||||
|
@ -507,7 +512,7 @@ static int tegra_gpio_irq_set_wake(struct irq_data *d, unsigned int enable)
|
||||||
else
|
else
|
||||||
bank->wake_enb[port] &= ~mask;
|
bank->wake_enb[port] &= ~mask;
|
||||||
|
|
||||||
return irq_set_irq_wake(bank->irq, enable);
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue