gpio: MT7621: use a per instance irq_chip structure
Subsystems (2)
PATCH 1/1 gpio: MT7621: use a per instance irq_chip structure
This fixes the kernel complains:
gpio gpiochip1: (1e000600.gpio-bank1): detected irqchip that is shared
with multiple gpiochips: please fix the driver.
gpio gpiochip2: (1e000600.gpio-bank2): detected irqchip that is shared
with multiple gpiochips: please fix the driver.
--- drivers/gpio/gpio-mt7621.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)
drivers/gpio/gpio-mt7621.c +10 -9
@@ -30,6 +30,7 @@#define GPIO_REG_EDGE 0xA0struct mtk_gc { +struct irq_chip irq_chip;struct gpio_chip chip;spinlock_t lock;int bank;
@@ -189,12 +190,6 @@ mediatek_gpio_irq_type(struct irq_data *d, unsigned int type)return 0 ; } -static struct irq_chip mediatek_gpio_irq_chip = { - .irq_unmask = mediatek_gpio_irq_unmask, - .irq_mask = mediatek_gpio_irq_mask, - .irq_mask_ack = mediatek_gpio_irq_mask, - .irq_set_type = mediatek_gpio_irq_type, -}; static int mediatek_gpio_xlate(struct gpio_chip *chip,
@@ -254,6 +249,13 @@ mediatek_gpio_bank_probe(struct device *dev,return ret; } + rg->irq_chip.name =dev_name (dev); + rg->irq_chip.parent_device = dev; + rg->irq_chip.irq_unmask = mediatek_gpio_irq_unmask; + rg->irq_chip.irq_mask = mediatek_gpio_irq_mask; + rg->irq_chip.irq_mask_ack = mediatek_gpio_irq_mask; + rg->irq_chip.irq_set_type = mediatek_gpio_irq_type; +if (mtk->gpio_irq) {/* * Manually request the irq here instead of passing
@@ -270,14 +272,14 @@ mediatek_gpio_bank_probe(struct device *dev,return ret; } - ret =gpiochip_irqchip_add (&rg->chip, &mediatek_gpio_irq_chip, + ret =gpiochip_irqchip_add (&rg->chip, &rg->irq_chip,0 , handle_simple_irq,IRQ_TYPE_NONE );if (ret) {dev_err (dev,"failed to add gpiochip_irqchip\n" );return ret; } -gpiochip_set_chained_irqchip (&rg->chip, &mediatek_gpio_irq_chip, +gpiochip_set_chained_irqchip (&rg->chip, &rg->irq_chip, mtk->gpio_irq,NULL ); }
@@ -310,7 +312,6 @@ mediatek_gpio_probe(struct platform_device *pdev) mtk->gpio_irq =irq_of_parse_and_map (np,0 ); mtk->dev = dev;platform_set_drvdata (pdev, mtk); - mediatek_gpio_irq_chip.name =dev_name (dev);for (i =0 ; i <MTK_BANK_CNT ; i++) { ret =mediatek_gpio_bank_probe (dev, np, i);
Signature · 7 lines
2.19.1 _______________________________________________ Linux-mediatek mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-mediatek
A message that is not in the archive (sent off-list or not yet received): 20190130151744.11145-1-opensource-91nzXlUTePbQT0dZR+AlfA@public.gmane.org
śr., 30 sty 2019 o 16:22 René van Dorst <[email protected]> napisał(a):
Quoted 11 lines
This fixes the kernel complains:
gpio gpiochip1: (1e000600.gpio-bank1): detected irqchip that is shared
with multiple gpiochips: please fix the driver.
gpio gpiochip2: (1e000600.gpio-bank2): detected irqchip that is shared
with multiple gpiochips: please fix the driver.Signed-off-by René van Dorst <[email protected]>
Please add the Fixes: tag and Cc stable while you're at it.
Bart
Quoted 69 lines
--- drivers/gpio/gpio-mt7621.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)drivers/gpio/gpio-mt7621.c +10
-10@@ -30,6 +30,7 @@#define GPIO_REG_EDGE 0xA0struct mtk_gc { +struct irq_chip irq_chip;struct gpio_chip chip;spinlock_t lock;int bank;@@ -189,12 +190,6 @@ mediatek_gpio_irq_type(struct irq_data *d, unsigned int type)return 0 ; } -static struct irq_chip mediatek_gpio_irq_chip = { - .irq_unmask = mediatek_gpio_irq_unmask, - .irq_mask = mediatek_gpio_irq_mask, - .irq_mask_ack = mediatek_gpio_irq_mask, - .irq_set_type = mediatek_gpio_irq_type, -}; static int mediatek_gpio_xlate(struct gpio_chip *chip,@@ -254,6 +249,13 @@ mediatek_gpio_bank_probe(struct device *dev,return ret; } + rg->irq_chip.name =dev_name (dev); + rg->irq_chip.parent_device = dev; + rg->irq_chip.irq_unmask = mediatek_gpio_irq_unmask; + rg->irq_chip.irq_mask = mediatek_gpio_irq_mask; + rg->irq_chip.irq_mask_ack = mediatek_gpio_irq_mask; + rg->irq_chip.irq_set_type = mediatek_gpio_irq_type; +if (mtk->gpio_irq) {/* * Manually request the irq here instead of passing @@ -270,14 +272,14 @@ mediatek_gpio_bank_probe(struct device *dev,return ret; } - ret =gpiochip_irqchip_add (&rg->chip, &mediatek_gpio_irq_chip, + ret =gpiochip_irqchip_add (&rg->chip, &rg->irq_chip,0 , handle_simple_irq,IRQ_TYPE_NONE );if (ret) {dev_err (dev,"failed to add gpiochip_irqchip\n" );return ret; } -gpiochip_set_chained_irqchip (&rg->chip, &mediatek_gpio_irq_chip, +gpiochip_set_chained_irqchip (&rg->chip, &rg->irq_chip, mtk->gpio_irq,NULL ); }@@ -310,7 +312,6 @@ mediatek_gpio_probe(struct platform_device *pdev) mtk->gpio_irq =irq_of_parse_and_map (np,0 ); mtk->dev = dev;platform_set_drvdata (pdev, mtk); - mediatek_gpio_irq_chip.name =dev_name (dev);for (i =0 ; i <MTK_BANK_CNT ; i++) { ret =mediatek_gpio_bank_probe (dev, np, i); --
Quoted 2 lines
2.19.1
_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek
A message that is not in the archive (sent off-list or not yet received): CAMpxmJVj_ZrwjHbfmXQ+SANHU+m+4r6OzyhqXA33aR+z4H33Fg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org
Quoting Bartosz Golaszewski <[email protected]>:
Quoted 13 lines
śr., 30 sty 2019 o 16:22 René van Dorst <[email protected]> napisał(a):
Quoted 11 lines
This fixes the kernel complains:
gpio gpiochip1: (1e000600.gpio-bank1): detected irqchip that is shared
with multiple gpiochips: please fix the driver.
gpio gpiochip2: (1e000600.gpio-bank2): detected irqchip that is shared
with multiple gpiochips: please fix the driver.Signed-off-by René van Dorst <[email protected]>
Hi Bart,
Quoted 1 line
Please add the Fixes: tag and Cc stable while you're at it.
Fixed in v2.
Greats,
René
Quoted 72 lines
Bart
Quoted 70 lines
--- drivers/gpio/gpio-mt7621.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)drivers/gpio/gpio-mt7621.c +1
-6@@ -30,6 +30,7 @@#define GPIO_REG_EDGE 0xA0struct mtk_gc { +struct irq_chip irq_chip;struct gpio_chip chip;spinlock_t lock;int bank;@@ -189,12 +190,6 @@ mediatek_gpio_irq_type(struct irq_data *d, unsigned int type)return 0 ; } -static struct irq_chip mediatek_gpio_irq_chip = { - .irq_unmask = mediatek_gpio_irq_unmask, - .irq_mask = mediatek_gpio_irq_mask, - .irq_mask_ack = mediatek_gpio_irq_mask, - .irq_set_type = mediatek_gpio_irq_type, -}; static intmediatek_gpio_xlate(struct
gpio_chip*chip,drivers/gpio/gpio-mt7621.c +9
-2@@ -254,6 +249,13 @@ mediatek_gpio_bank_probe(struct device *dev,return ret; } + rg->irq_chip.name =dev_name (dev); + rg->irq_chip.parent_device = dev; + rg->irq_chip.irq_unmask = mediatek_gpio_irq_unmask; + rg->irq_chip.irq_mask = mediatek_gpio_irq_mask; + rg->irq_chip.irq_mask_ack = mediatek_gpio_irq_mask; + rg->irq_chip.irq_set_type = mediatek_gpio_irq_type; +if (mtk->gpio_irq) {/* * Manually request the irq here instead of passing @@ -270,14 +272,14 @@ mediatek_gpio_bank_probe(struct device *dev,return ret; } - ret =gpiochip_irqchip_add (&rg->chip, &mediatek_gpio_irq_chip, + ret =gpiochip_irqchip_add (&rg->chip, &rg->irq_chip,0 , handle_simple_irq,IRQ_TYPE_NONE );if (ret) {dev_err (dev,"failed to add gpiochip_irqchip\n" );return ret; } - gpiochip_set_chained_irqchip(&rg->chip, &mediatek_gpio_irq_chip, + gpiochip_set_chained_irqchip(&rg->chip, &rg->irq_chip,mtk->gpio_irq, NULL); }drivers/gpio/gpio-mt7621.c +0
-1@@ -310,7 +312,6 @@ mediatek_gpio_probe(struct platform_device *pdev) mtk->gpio_irq =irq_of_parse_and_map (np,0 ); mtk->dev = dev;platform_set_drvdata (pdev, mtk); - mediatek_gpio_irq_chip.name =dev_name (dev);
Quoted 5 lines
Quoted 5 lines
drivers/gpio/gpio-mt7621.c +0
-1for (i =0 ; i <MTK_BANK_CNT ; i++) { ret =mediatek_gpio_bank_probe (dev, np, i); --2.19.1
_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek