Merge remote-tracking branches 'regulator/fix/anatop', 'regulator/fix/gpio', 'regulat...
[firefly-linux-kernel-4.4.55.git] / drivers / gpio / gpio-tegra.c
index 9b25c90f725c21138f955dbc1a4745749114a9b4..027e5f47dd28738f04e6347f1807c6b28b34e618 100644 (file)
@@ -252,9 +252,9 @@ static int tegra_gpio_irq_set_type(struct irq_data *d, unsigned int type)
        tegra_gpio_enable(gpio);
 
        if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH))
-               __irq_set_handler_locked(d->irq, handle_level_irq);
+               irq_set_handler_locked(d, handle_level_irq);
        else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
-               __irq_set_handler_locked(d->irq, handle_edge_irq);
+               irq_set_handler_locked(d, handle_edge_irq);
 
        return 0;
 }
@@ -266,18 +266,16 @@ static void tegra_gpio_irq_shutdown(struct irq_data *d)
        gpiochip_unlock_as_irq(&tegra_gpio_chip, gpio);
 }
 
-static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tegra_gpio_irq_handler(struct irq_desc *desc)
 {
-       struct tegra_gpio_bank *bank;
        int port;
        int pin;
        int unmasked = 0;
        struct irq_chip *chip = irq_desc_get_chip(desc);
+       struct tegra_gpio_bank *bank = irq_desc_get_handler_data(desc);
 
        chained_irq_enter(chip, desc);
 
-       bank = irq_get_handler_data(irq);
-
        for (port = 0; port < 4; port++) {
                int gpio = tegra_gpio_compose(bank->bank, port, 0);
                unsigned long sta = tegra_gpio_readl(GPIO_INT_STA(gpio)) &
@@ -509,7 +507,6 @@ static int tegra_gpio_probe(struct platform_device *pdev)
                irq_set_chip_data(irq, bank);
                irq_set_chip_and_handler(irq, &tegra_gpio_irq_chip,
                                         handle_simple_irq);
-               set_irq_flags(irq, IRQF_VALID);
        }
 
        for (i = 0; i < tegra_gpio_bank_count; i++) {