From 7e4488d2515d0dc00d1f8f340dbff6db199d49cc Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 24 Oct 2023 10:32:11 +0200 Subject: [PATCH] drop some broken gpio patches --- .../gpio-vf610-make-irq_chip-immutable.patch | 123 ------------------ ...the-gpio-irq-in-system-suspend-and-s.patch | 42 ------ queue-5.10/series | 2 - .../gpio-vf610-make-irq_chip-immutable.patch | 123 ------------------ ...the-gpio-irq-in-system-suspend-and-s.patch | 42 ------ queue-5.15/series | 2 - .../gpio-vf610-make-irq_chip-immutable.patch | 123 ------------------ ...the-gpio-irq-in-system-suspend-and-s.patch | 42 ------ queue-5.4/series | 2 - 9 files changed, 501 deletions(-) delete mode 100644 queue-5.10/gpio-vf610-make-irq_chip-immutable.patch delete mode 100644 queue-5.10/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch delete mode 100644 queue-5.15/gpio-vf610-make-irq_chip-immutable.patch delete mode 100644 queue-5.15/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch delete mode 100644 queue-5.4/gpio-vf610-make-irq_chip-immutable.patch delete mode 100644 queue-5.4/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch diff --git a/queue-5.10/gpio-vf610-make-irq_chip-immutable.patch b/queue-5.10/gpio-vf610-make-irq_chip-immutable.patch deleted file mode 100644 index da3fc3b2637..00000000000 --- a/queue-5.10/gpio-vf610-make-irq_chip-immutable.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 1aa07cdbecddfcebadc593fde4a063eeca9d8da6 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 15 Feb 2023 10:52:49 +0100 -Subject: gpio: vf610: make irq_chip immutable - -From: Alexander Stein - -[ Upstream commit e6ef4f8ede09f4af7cde000717b349b50bc62576 ] - -Since recently, the kernel is nagging about mutable irq_chips: - - "not an immutable chip, please consider fixing it!" - -Drop the unneeded copy, flag it as IRQCHIP_IMMUTABLE, add the new -helper functions and call the appropriate gpiolib functions. - -Signed-off-by: Alexander Stein -Reviewed-by: Andy Shevchenko -Reviewed-by: Linus Walleij -Signed-off-by: Bartosz Golaszewski -Stable-dep-of: 430232619791 ("gpio: vf610: mask the gpio irq in system suspend and support wakeup") -Signed-off-by: Sasha Levin ---- - drivers/gpio/gpio-vf610.c | 41 ++++++++++++++++++++++----------------- - 1 file changed, 23 insertions(+), 18 deletions(-) - -diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c -index c2c38f13801f5..a548ac3fbb207 100644 ---- a/drivers/gpio/gpio-vf610.c -+++ b/drivers/gpio/gpio-vf610.c -@@ -29,7 +29,6 @@ struct fsl_gpio_soc_data { - - struct vf610_gpio_port { - struct gpio_chip gc; -- struct irq_chip ic; - void __iomem *base; - void __iomem *gpio_base; - const struct fsl_gpio_soc_data *sdata; -@@ -206,20 +205,24 @@ static int vf610_gpio_irq_set_type(struct irq_data *d, u32 type) - - static void vf610_gpio_irq_mask(struct irq_data *d) - { -- struct vf610_gpio_port *port = -- gpiochip_get_data(irq_data_get_irq_chip_data(d)); -- void __iomem *pcr_base = port->base + PORT_PCR(d->hwirq); -+ struct gpio_chip *gc = irq_data_get_irq_chip_data(d); -+ struct vf610_gpio_port *port = gpiochip_get_data(gc); -+ irq_hw_number_t gpio_num = irqd_to_hwirq(d); -+ void __iomem *pcr_base = port->base + PORT_PCR(gpio_num); - - vf610_gpio_writel(0, pcr_base); -+ gpiochip_disable_irq(gc, gpio_num); - } - - static void vf610_gpio_irq_unmask(struct irq_data *d) - { -- struct vf610_gpio_port *port = -- gpiochip_get_data(irq_data_get_irq_chip_data(d)); -- void __iomem *pcr_base = port->base + PORT_PCR(d->hwirq); -+ struct gpio_chip *gc = irq_data_get_irq_chip_data(d); -+ struct vf610_gpio_port *port = gpiochip_get_data(gc); -+ irq_hw_number_t gpio_num = irqd_to_hwirq(d); -+ void __iomem *pcr_base = port->base + PORT_PCR(gpio_num); - -- vf610_gpio_writel(port->irqc[d->hwirq] << PORT_PCR_IRQC_OFFSET, -+ gpiochip_enable_irq(gc, gpio_num); -+ vf610_gpio_writel(port->irqc[gpio_num] << PORT_PCR_IRQC_OFFSET, - pcr_base); - } - -@@ -236,6 +239,17 @@ static int vf610_gpio_irq_set_wake(struct irq_data *d, u32 enable) - return 0; - } - -+static const struct irq_chip vf610_irqchip = { -+ .name = "gpio-vf610", -+ .irq_ack = vf610_gpio_irq_ack, -+ .irq_mask = vf610_gpio_irq_mask, -+ .irq_unmask = vf610_gpio_irq_unmask, -+ .irq_set_type = vf610_gpio_irq_set_type, -+ .irq_set_wake = vf610_gpio_irq_set_wake, -+ .flags = IRQCHIP_IMMUTABLE, -+ GPIOCHIP_IRQ_RESOURCE_HELPERS, -+}; -+ - static void vf610_gpio_disable_clk(void *data) - { - clk_disable_unprepare(data); -@@ -248,7 +262,6 @@ static int vf610_gpio_probe(struct platform_device *pdev) - struct vf610_gpio_port *port; - struct gpio_chip *gc; - struct gpio_irq_chip *girq; -- struct irq_chip *ic; - int i; - int ret; - -@@ -315,14 +328,6 @@ static int vf610_gpio_probe(struct platform_device *pdev) - gc->direction_output = vf610_gpio_direction_output; - gc->set = vf610_gpio_set; - -- ic = &port->ic; -- ic->name = "gpio-vf610"; -- ic->irq_ack = vf610_gpio_irq_ack; -- ic->irq_mask = vf610_gpio_irq_mask; -- ic->irq_unmask = vf610_gpio_irq_unmask; -- ic->irq_set_type = vf610_gpio_irq_set_type; -- ic->irq_set_wake = vf610_gpio_irq_set_wake; -- - /* Mask all GPIO interrupts */ - for (i = 0; i < gc->ngpio; i++) - vf610_gpio_writel(0, port->base + PORT_PCR(i)); -@@ -331,7 +336,7 @@ static int vf610_gpio_probe(struct platform_device *pdev) - vf610_gpio_writel(~0, port->base + PORT_ISFR); - - girq = &gc->irq; -- girq->chip = ic; -+ gpio_irq_chip_set_chip(girq, &vf610_irqchip); - girq->parent_handler = vf610_gpio_irq_handler; - girq->num_parents = 1; - girq->parents = devm_kcalloc(&pdev->dev, 1, --- -2.42.0 - diff --git a/queue-5.10/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch b/queue-5.10/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch deleted file mode 100644 index 64e4b065114..00000000000 --- a/queue-5.10/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 67cc0f6fca31e37b99139f42bffba21572ab0173 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 17 Oct 2023 18:42:36 +0800 -Subject: gpio: vf610: mask the gpio irq in system suspend and support wakeup - -From: Haibo Chen - -[ Upstream commit 430232619791e7de95191f2cd8ebaa4c380d17d0 ] - -Add flag IRQCHIP_MASK_ON_SUSPEND to make sure gpio irq is masked on -suspend, if lack this flag, current irq arctitecture will not mask -the irq, and these unmasked gpio irq will wrongly wakeup the system -even they are not config as wakeup source. - -Also add flag IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND to make sure the gpio -irq which is configed as wakeup source can work as expect. - -Fixes: 7f2691a19627 ("gpio: vf610: add gpiolib/IRQ chip driver for Vybrid") -Signed-off-by: Haibo Chen -Signed-off-by: Bartosz Golaszewski -Signed-off-by: Sasha Levin ---- - drivers/gpio/gpio-vf610.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c -index a548ac3fbb207..c2883bdeb95fe 100644 ---- a/drivers/gpio/gpio-vf610.c -+++ b/drivers/gpio/gpio-vf610.c -@@ -246,7 +246,8 @@ static const struct irq_chip vf610_irqchip = { - .irq_unmask = vf610_gpio_irq_unmask, - .irq_set_type = vf610_gpio_irq_set_type, - .irq_set_wake = vf610_gpio_irq_set_wake, -- .flags = IRQCHIP_IMMUTABLE, -+ .flags = IRQCHIP_IMMUTABLE | IRQCHIP_MASK_ON_SUSPEND -+ | IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND, - GPIOCHIP_IRQ_RESOURCE_HELPERS, - }; - --- -2.42.0 - diff --git a/queue-5.10/series b/queue-5.10/series index b905f746347..976714b8db7 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -191,8 +191,6 @@ platform-x86-asus-wmi-change-asus_wmi_brn_down-code-from-0x20-to-0x2e.patch platform-x86-asus-wmi-map-0x2a-code-ignore-0x2b-and-0x2c-events.patch gpio-vf610-set-value-before-the-direction-to-avoid-a-glitch.patch asoc-pxa-fix-a-memory-leak-in-probe.patch -gpio-vf610-make-irq_chip-immutable.patch -gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch phy-mapphone-mdm6600-fix-runtime-disable-on-probe.patch phy-mapphone-mdm6600-fix-runtime-pm-for-remove.patch phy-mapphone-mdm6600-fix-pinctrl_pm-handling-for-sle.patch diff --git a/queue-5.15/gpio-vf610-make-irq_chip-immutable.patch b/queue-5.15/gpio-vf610-make-irq_chip-immutable.patch deleted file mode 100644 index 9153f91ce83..00000000000 --- a/queue-5.15/gpio-vf610-make-irq_chip-immutable.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 214d76e83736821433a7f68f504b2e93dc51d465 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 15 Feb 2023 10:52:49 +0100 -Subject: gpio: vf610: make irq_chip immutable - -From: Alexander Stein - -[ Upstream commit e6ef4f8ede09f4af7cde000717b349b50bc62576 ] - -Since recently, the kernel is nagging about mutable irq_chips: - - "not an immutable chip, please consider fixing it!" - -Drop the unneeded copy, flag it as IRQCHIP_IMMUTABLE, add the new -helper functions and call the appropriate gpiolib functions. - -Signed-off-by: Alexander Stein -Reviewed-by: Andy Shevchenko -Reviewed-by: Linus Walleij -Signed-off-by: Bartosz Golaszewski -Stable-dep-of: 430232619791 ("gpio: vf610: mask the gpio irq in system suspend and support wakeup") -Signed-off-by: Sasha Levin ---- - drivers/gpio/gpio-vf610.c | 41 ++++++++++++++++++++++----------------- - 1 file changed, 23 insertions(+), 18 deletions(-) - -diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c -index c3014f5f0faad..2f21440cbeb19 100644 ---- a/drivers/gpio/gpio-vf610.c -+++ b/drivers/gpio/gpio-vf610.c -@@ -29,7 +29,6 @@ struct fsl_gpio_soc_data { - - struct vf610_gpio_port { - struct gpio_chip gc; -- struct irq_chip ic; - void __iomem *base; - void __iomem *gpio_base; - const struct fsl_gpio_soc_data *sdata; -@@ -206,20 +205,24 @@ static int vf610_gpio_irq_set_type(struct irq_data *d, u32 type) - - static void vf610_gpio_irq_mask(struct irq_data *d) - { -- struct vf610_gpio_port *port = -- gpiochip_get_data(irq_data_get_irq_chip_data(d)); -- void __iomem *pcr_base = port->base + PORT_PCR(d->hwirq); -+ struct gpio_chip *gc = irq_data_get_irq_chip_data(d); -+ struct vf610_gpio_port *port = gpiochip_get_data(gc); -+ irq_hw_number_t gpio_num = irqd_to_hwirq(d); -+ void __iomem *pcr_base = port->base + PORT_PCR(gpio_num); - - vf610_gpio_writel(0, pcr_base); -+ gpiochip_disable_irq(gc, gpio_num); - } - - static void vf610_gpio_irq_unmask(struct irq_data *d) - { -- struct vf610_gpio_port *port = -- gpiochip_get_data(irq_data_get_irq_chip_data(d)); -- void __iomem *pcr_base = port->base + PORT_PCR(d->hwirq); -+ struct gpio_chip *gc = irq_data_get_irq_chip_data(d); -+ struct vf610_gpio_port *port = gpiochip_get_data(gc); -+ irq_hw_number_t gpio_num = irqd_to_hwirq(d); -+ void __iomem *pcr_base = port->base + PORT_PCR(gpio_num); - -- vf610_gpio_writel(port->irqc[d->hwirq] << PORT_PCR_IRQC_OFFSET, -+ gpiochip_enable_irq(gc, gpio_num); -+ vf610_gpio_writel(port->irqc[gpio_num] << PORT_PCR_IRQC_OFFSET, - pcr_base); - } - -@@ -236,6 +239,17 @@ static int vf610_gpio_irq_set_wake(struct irq_data *d, u32 enable) - return 0; - } - -+static const struct irq_chip vf610_irqchip = { -+ .name = "gpio-vf610", -+ .irq_ack = vf610_gpio_irq_ack, -+ .irq_mask = vf610_gpio_irq_mask, -+ .irq_unmask = vf610_gpio_irq_unmask, -+ .irq_set_type = vf610_gpio_irq_set_type, -+ .irq_set_wake = vf610_gpio_irq_set_wake, -+ .flags = IRQCHIP_IMMUTABLE, -+ GPIOCHIP_IRQ_RESOURCE_HELPERS, -+}; -+ - static void vf610_gpio_disable_clk(void *data) - { - clk_disable_unprepare(data); -@@ -248,7 +262,6 @@ static int vf610_gpio_probe(struct platform_device *pdev) - struct vf610_gpio_port *port; - struct gpio_chip *gc; - struct gpio_irq_chip *girq; -- struct irq_chip *ic; - int i; - int ret; - -@@ -315,14 +328,6 @@ static int vf610_gpio_probe(struct platform_device *pdev) - gc->direction_output = vf610_gpio_direction_output; - gc->set = vf610_gpio_set; - -- ic = &port->ic; -- ic->name = "gpio-vf610"; -- ic->irq_ack = vf610_gpio_irq_ack; -- ic->irq_mask = vf610_gpio_irq_mask; -- ic->irq_unmask = vf610_gpio_irq_unmask; -- ic->irq_set_type = vf610_gpio_irq_set_type; -- ic->irq_set_wake = vf610_gpio_irq_set_wake; -- - /* Mask all GPIO interrupts */ - for (i = 0; i < gc->ngpio; i++) - vf610_gpio_writel(0, port->base + PORT_PCR(i)); -@@ -331,7 +336,7 @@ static int vf610_gpio_probe(struct platform_device *pdev) - vf610_gpio_writel(~0, port->base + PORT_ISFR); - - girq = &gc->irq; -- girq->chip = ic; -+ gpio_irq_chip_set_chip(girq, &vf610_irqchip); - girq->parent_handler = vf610_gpio_irq_handler; - girq->num_parents = 1; - girq->parents = devm_kcalloc(&pdev->dev, 1, --- -2.42.0 - diff --git a/queue-5.15/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch b/queue-5.15/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch deleted file mode 100644 index fa9882a28bd..00000000000 --- a/queue-5.15/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch +++ /dev/null @@ -1,42 +0,0 @@ -From a04e48224ba6869719527c0fe39a6148097fe612 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 17 Oct 2023 18:42:36 +0800 -Subject: gpio: vf610: mask the gpio irq in system suspend and support wakeup - -From: Haibo Chen - -[ Upstream commit 430232619791e7de95191f2cd8ebaa4c380d17d0 ] - -Add flag IRQCHIP_MASK_ON_SUSPEND to make sure gpio irq is masked on -suspend, if lack this flag, current irq arctitecture will not mask -the irq, and these unmasked gpio irq will wrongly wakeup the system -even they are not config as wakeup source. - -Also add flag IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND to make sure the gpio -irq which is configed as wakeup source can work as expect. - -Fixes: 7f2691a19627 ("gpio: vf610: add gpiolib/IRQ chip driver for Vybrid") -Signed-off-by: Haibo Chen -Signed-off-by: Bartosz Golaszewski -Signed-off-by: Sasha Levin ---- - drivers/gpio/gpio-vf610.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c -index 2f21440cbeb19..68c1196136851 100644 ---- a/drivers/gpio/gpio-vf610.c -+++ b/drivers/gpio/gpio-vf610.c -@@ -246,7 +246,8 @@ static const struct irq_chip vf610_irqchip = { - .irq_unmask = vf610_gpio_irq_unmask, - .irq_set_type = vf610_gpio_irq_set_type, - .irq_set_wake = vf610_gpio_irq_set_wake, -- .flags = IRQCHIP_IMMUTABLE, -+ .flags = IRQCHIP_IMMUTABLE | IRQCHIP_MASK_ON_SUSPEND -+ | IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND, - GPIOCHIP_IRQ_RESOURCE_HELPERS, - }; - --- -2.42.0 - diff --git a/queue-5.15/series b/queue-5.15/series index 006ad579de0..4b09f73911f 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -127,8 +127,6 @@ platform-x86-asus-wmi-map-0x2a-code-ignore-0x2b-and-0x2c-events.patch gpio-vf610-set-value-before-the-direction-to-avoid-a-glitch.patch asoc-pxa-fix-a-memory-leak-in-probe.patch serial-8250-omap-move-uart_write-inside-pm-section.patch -gpio-vf610-make-irq_chip-immutable.patch -gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch phy-mapphone-mdm6600-fix-runtime-disable-on-probe.patch phy-mapphone-mdm6600-fix-runtime-pm-for-remove.patch phy-mapphone-mdm6600-fix-pinctrl_pm-handling-for-sle.patch diff --git a/queue-5.4/gpio-vf610-make-irq_chip-immutable.patch b/queue-5.4/gpio-vf610-make-irq_chip-immutable.patch deleted file mode 100644 index 57ab359f5f9..00000000000 --- a/queue-5.4/gpio-vf610-make-irq_chip-immutable.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 2d9c6fa484171e229488dab1a74de3943947deef Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 15 Feb 2023 10:52:49 +0100 -Subject: gpio: vf610: make irq_chip immutable - -From: Alexander Stein - -[ Upstream commit e6ef4f8ede09f4af7cde000717b349b50bc62576 ] - -Since recently, the kernel is nagging about mutable irq_chips: - - "not an immutable chip, please consider fixing it!" - -Drop the unneeded copy, flag it as IRQCHIP_IMMUTABLE, add the new -helper functions and call the appropriate gpiolib functions. - -Signed-off-by: Alexander Stein -Reviewed-by: Andy Shevchenko -Reviewed-by: Linus Walleij -Signed-off-by: Bartosz Golaszewski -Stable-dep-of: 430232619791 ("gpio: vf610: mask the gpio irq in system suspend and support wakeup") -Signed-off-by: Sasha Levin ---- - drivers/gpio/gpio-vf610.c | 41 ++++++++++++++++++++++----------------- - 1 file changed, 23 insertions(+), 18 deletions(-) - -diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c -index c2c38f13801f5..a548ac3fbb207 100644 ---- a/drivers/gpio/gpio-vf610.c -+++ b/drivers/gpio/gpio-vf610.c -@@ -29,7 +29,6 @@ struct fsl_gpio_soc_data { - - struct vf610_gpio_port { - struct gpio_chip gc; -- struct irq_chip ic; - void __iomem *base; - void __iomem *gpio_base; - const struct fsl_gpio_soc_data *sdata; -@@ -206,20 +205,24 @@ static int vf610_gpio_irq_set_type(struct irq_data *d, u32 type) - - static void vf610_gpio_irq_mask(struct irq_data *d) - { -- struct vf610_gpio_port *port = -- gpiochip_get_data(irq_data_get_irq_chip_data(d)); -- void __iomem *pcr_base = port->base + PORT_PCR(d->hwirq); -+ struct gpio_chip *gc = irq_data_get_irq_chip_data(d); -+ struct vf610_gpio_port *port = gpiochip_get_data(gc); -+ irq_hw_number_t gpio_num = irqd_to_hwirq(d); -+ void __iomem *pcr_base = port->base + PORT_PCR(gpio_num); - - vf610_gpio_writel(0, pcr_base); -+ gpiochip_disable_irq(gc, gpio_num); - } - - static void vf610_gpio_irq_unmask(struct irq_data *d) - { -- struct vf610_gpio_port *port = -- gpiochip_get_data(irq_data_get_irq_chip_data(d)); -- void __iomem *pcr_base = port->base + PORT_PCR(d->hwirq); -+ struct gpio_chip *gc = irq_data_get_irq_chip_data(d); -+ struct vf610_gpio_port *port = gpiochip_get_data(gc); -+ irq_hw_number_t gpio_num = irqd_to_hwirq(d); -+ void __iomem *pcr_base = port->base + PORT_PCR(gpio_num); - -- vf610_gpio_writel(port->irqc[d->hwirq] << PORT_PCR_IRQC_OFFSET, -+ gpiochip_enable_irq(gc, gpio_num); -+ vf610_gpio_writel(port->irqc[gpio_num] << PORT_PCR_IRQC_OFFSET, - pcr_base); - } - -@@ -236,6 +239,17 @@ static int vf610_gpio_irq_set_wake(struct irq_data *d, u32 enable) - return 0; - } - -+static const struct irq_chip vf610_irqchip = { -+ .name = "gpio-vf610", -+ .irq_ack = vf610_gpio_irq_ack, -+ .irq_mask = vf610_gpio_irq_mask, -+ .irq_unmask = vf610_gpio_irq_unmask, -+ .irq_set_type = vf610_gpio_irq_set_type, -+ .irq_set_wake = vf610_gpio_irq_set_wake, -+ .flags = IRQCHIP_IMMUTABLE, -+ GPIOCHIP_IRQ_RESOURCE_HELPERS, -+}; -+ - static void vf610_gpio_disable_clk(void *data) - { - clk_disable_unprepare(data); -@@ -248,7 +262,6 @@ static int vf610_gpio_probe(struct platform_device *pdev) - struct vf610_gpio_port *port; - struct gpio_chip *gc; - struct gpio_irq_chip *girq; -- struct irq_chip *ic; - int i; - int ret; - -@@ -315,14 +328,6 @@ static int vf610_gpio_probe(struct platform_device *pdev) - gc->direction_output = vf610_gpio_direction_output; - gc->set = vf610_gpio_set; - -- ic = &port->ic; -- ic->name = "gpio-vf610"; -- ic->irq_ack = vf610_gpio_irq_ack; -- ic->irq_mask = vf610_gpio_irq_mask; -- ic->irq_unmask = vf610_gpio_irq_unmask; -- ic->irq_set_type = vf610_gpio_irq_set_type; -- ic->irq_set_wake = vf610_gpio_irq_set_wake; -- - /* Mask all GPIO interrupts */ - for (i = 0; i < gc->ngpio; i++) - vf610_gpio_writel(0, port->base + PORT_PCR(i)); -@@ -331,7 +336,7 @@ static int vf610_gpio_probe(struct platform_device *pdev) - vf610_gpio_writel(~0, port->base + PORT_ISFR); - - girq = &gc->irq; -- girq->chip = ic; -+ gpio_irq_chip_set_chip(girq, &vf610_irqchip); - girq->parent_handler = vf610_gpio_irq_handler; - girq->num_parents = 1; - girq->parents = devm_kcalloc(&pdev->dev, 1, --- -2.42.0 - diff --git a/queue-5.4/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch b/queue-5.4/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch deleted file mode 100644 index db664e5677d..00000000000 --- a/queue-5.4/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 7e6be084f75ddbf5e99e1351a4ed5c14f8978661 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 17 Oct 2023 18:42:36 +0800 -Subject: gpio: vf610: mask the gpio irq in system suspend and support wakeup - -From: Haibo Chen - -[ Upstream commit 430232619791e7de95191f2cd8ebaa4c380d17d0 ] - -Add flag IRQCHIP_MASK_ON_SUSPEND to make sure gpio irq is masked on -suspend, if lack this flag, current irq arctitecture will not mask -the irq, and these unmasked gpio irq will wrongly wakeup the system -even they are not config as wakeup source. - -Also add flag IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND to make sure the gpio -irq which is configed as wakeup source can work as expect. - -Fixes: 7f2691a19627 ("gpio: vf610: add gpiolib/IRQ chip driver for Vybrid") -Signed-off-by: Haibo Chen -Signed-off-by: Bartosz Golaszewski -Signed-off-by: Sasha Levin ---- - drivers/gpio/gpio-vf610.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c -index a548ac3fbb207..c2883bdeb95fe 100644 ---- a/drivers/gpio/gpio-vf610.c -+++ b/drivers/gpio/gpio-vf610.c -@@ -246,7 +246,8 @@ static const struct irq_chip vf610_irqchip = { - .irq_unmask = vf610_gpio_irq_unmask, - .irq_set_type = vf610_gpio_irq_set_type, - .irq_set_wake = vf610_gpio_irq_set_wake, -- .flags = IRQCHIP_IMMUTABLE, -+ .flags = IRQCHIP_IMMUTABLE | IRQCHIP_MASK_ON_SUSPEND -+ | IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND, - GPIOCHIP_IRQ_RESOURCE_HELPERS, - }; - --- -2.42.0 - diff --git a/queue-5.4/series b/queue-5.4/series index ed587fc454c..af184d748ba 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -112,8 +112,6 @@ perf-disallow-mis-matched-inherited-group-reads.patch s390-pci-fix-iommu-bitmap-allocation.patch gpio-vf610-set-value-before-the-direction-to-avoid-a-glitch.patch asoc-pxa-fix-a-memory-leak-in-probe.patch -gpio-vf610-make-irq_chip-immutable.patch -gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch phy-mapphone-mdm6600-fix-runtime-disable-on-probe.patch phy-mapphone-mdm6600-fix-runtime-pm-for-remove.patch phy-mapphone-mdm6600-fix-pinctrl_pm-handling-for-sle.patch -- 2.47.3