The data passed between irq related functions and the ones which have
been retrieved where different. Also first data haven't properly
set on irq_domain_add_linear call where it was passing NULL instead.

Signed-off-by: Sergio Paracuellos <sergio.paracuel...@gmail.com>
---
 drivers/staging/mt7621-gpio/gpio-mt7621.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/mt7621-gpio/gpio-mt7621.c 
b/drivers/staging/mt7621-gpio/gpio-mt7621.c
index 650286df..077a7c2 100644
--- a/drivers/staging/mt7621-gpio/gpio-mt7621.c
+++ b/drivers/staging/mt7621-gpio/gpio-mt7621.c
@@ -201,8 +201,7 @@ mediatek_gpio_bank_probe(struct platform_device *pdev, 
struct device_node *bank)
 static void
 mediatek_gpio_irq_handler(struct irq_desc *desc)
 {
-       struct gpio_chip *gc = irq_desc_get_handler_data(desc);
-       struct mtk_data *gpio_data = gpiochip_get_data(gc);
+       struct mtk_data *gpio_data = irq_desc_get_handler_data(desc);
        int i;
 
        for (i = 0; i < MTK_MAX_BANK; i++) {
@@ -228,8 +227,7 @@ mediatek_gpio_irq_handler(struct irq_desc *desc)
 static void
 mediatek_gpio_irq_unmask(struct irq_data *d)
 {
-       struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-       struct mtk_data *gpio_data = gpiochip_get_data(gc);
+       struct mtk_data *gpio_data = irq_data_get_irq_chip_data(d);
        int pin = d->hwirq;
        int bank = pin / 32;
        struct mtk_gc *rg = gpio_data->gc_map[bank];
@@ -251,8 +249,7 @@ mediatek_gpio_irq_unmask(struct irq_data *d)
 static void
 mediatek_gpio_irq_mask(struct irq_data *d)
 {
-       struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-       struct mtk_data *gpio_data = gpiochip_get_data(gc);
+       struct mtk_data *gpio_data = irq_data_get_irq_chip_data(d);
        int pin = d->hwirq;
        int bank = pin / 32;
        struct mtk_gc *rg = gpio_data->gc_map[bank];
@@ -274,8 +271,7 @@ mediatek_gpio_irq_mask(struct irq_data *d)
 static int
 mediatek_gpio_irq_type(struct irq_data *d, unsigned int type)
 {
-       struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-       struct mtk_data *gpio_data = gpiochip_get_data(gc);
+       struct mtk_data *gpio_data = irq_data_get_irq_chip_data(d);
        int pin = d->hwirq;
        int bank = pin / 32;
        struct mtk_gc *rg = gpio_data->gc_map[bank];
@@ -352,7 +348,7 @@ mediatek_gpio_probe(struct platform_device *pdev)
        if (gpio_data->gpio_irq) {
                gpio_data->gpio_irq_domain = irq_domain_add_linear(np,
                        MTK_MAX_BANK * MTK_BANK_WIDTH,
-                       &irq_domain_ops, NULL);
+                       &irq_domain_ops, gpio_data);
                if (!gpio_data->gpio_irq_domain)
                        dev_err(&pdev->dev, "irq_domain_add_linear failed\n");
        }
-- 
2.7.4

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to