gpio: MT7621: use a per instance irq_chip structure
Subsystems (3)
PATCH v2 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 | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
v2: Remove an empty line
Add Cc stable
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,13 +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,const struct of_phandle_args *spec,u32 *flags)
@@ -254,6 +248,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 +271,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 +311,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): 20190130161048.9852-1-opensource-91nzXlUTePbQT0dZR+AlfA@public.gmane.org
Greg Ungerer
Tested-byHi René,
Quoted 6 lines · René van Dorst
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.
Quoted 6 lines
Fixes 4ba9c3afda41 ("gpio: mt7621: Add a driver for MT7621")Signed-off-by René van Dorst <[email protected]>
Works great on my MT7621 hardware.
Regards
Greg
Quoted 66 lines
--- drivers/gpio/gpio-mt7621.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)v2: Remove an empty line
Add Cc stabledrivers/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,13 +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,const struct of_phandle_args *spec,u32 *flags)@@ -254,6 +248,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 +271,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 mediatek_gpio_probe(struct platform_device *pdev) · line 316
Quoted 7 lines
drivers/gpio/gpio-mt7621.c +0
-1@@ -310,7 +311,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);
_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek
Quoted 6 lines · René van Dorst
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.
Quoted 6 lines
Fixes 4ba9c3afda41 ("gpio: mt7621: Add a driver for MT7621")Signed-off-by René van Dorst <[email protected]>
Patch applied for fixes with Greg's ACK.
Yours,
Linus Walleij