]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop some broken gpio patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Oct 2023 08:32:11 +0000 (10:32 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Oct 2023 08:32:11 +0000 (10:32 +0200)
queue-5.10/gpio-vf610-make-irq_chip-immutable.patch [deleted file]
queue-5.10/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch [deleted file]
queue-5.10/series
queue-5.15/gpio-vf610-make-irq_chip-immutable.patch [deleted file]
queue-5.15/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch [deleted file]
queue-5.15/series
queue-5.4/gpio-vf610-make-irq_chip-immutable.patch [deleted file]
queue-5.4/gpio-vf610-mask-the-gpio-irq-in-system-suspend-and-s.patch [deleted file]
queue-5.4/series

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 (file)
index da3fc3b..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-From 1aa07cdbecddfcebadc593fde4a063eeca9d8da6 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Feb 2023 10:52:49 +0100
-Subject: gpio: vf610: make irq_chip immutable
-
-From: Alexander Stein <alexander.stein@ew.tq-group.com>
-
-[ 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 <alexander.stein@ew.tq-group.com>
-Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
-Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
-Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
-Stable-dep-of: 430232619791 ("gpio: vf610: mask the gpio irq in system suspend and support wakeup")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- 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 (file)
index 64e4b06..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-From 67cc0f6fca31e37b99139f42bffba21572ab0173 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-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 <haibo.chen@nxp.com>
-
-[ 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 <haibo.chen@nxp.com>
-Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- 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
-
index b905f7463471d539696aff466738e2cac09c5da1..976714b8db7acf24f1eda7d858835820511fc7b3 100644 (file)
@@ -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 (file)
index 9153f91..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-From 214d76e83736821433a7f68f504b2e93dc51d465 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Feb 2023 10:52:49 +0100
-Subject: gpio: vf610: make irq_chip immutable
-
-From: Alexander Stein <alexander.stein@ew.tq-group.com>
-
-[ 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 <alexander.stein@ew.tq-group.com>
-Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
-Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
-Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
-Stable-dep-of: 430232619791 ("gpio: vf610: mask the gpio irq in system suspend and support wakeup")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- 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 (file)
index fa9882a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-From a04e48224ba6869719527c0fe39a6148097fe612 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-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 <haibo.chen@nxp.com>
-
-[ 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 <haibo.chen@nxp.com>
-Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- 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
-
index 006ad579de0439a4b3dab42caee3e1f118f2ba24..4b09f73911fec50b768cfb0410816027356323aa 100644 (file)
@@ -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 (file)
index 57ab359..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-From 2d9c6fa484171e229488dab1a74de3943947deef Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Feb 2023 10:52:49 +0100
-Subject: gpio: vf610: make irq_chip immutable
-
-From: Alexander Stein <alexander.stein@ew.tq-group.com>
-
-[ 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 <alexander.stein@ew.tq-group.com>
-Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
-Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
-Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
-Stable-dep-of: 430232619791 ("gpio: vf610: mask the gpio irq in system suspend and support wakeup")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- 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 (file)
index db664e5..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-From 7e6be084f75ddbf5e99e1351a4ed5c14f8978661 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-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 <haibo.chen@nxp.com>
-
-[ 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 <haibo.chen@nxp.com>
-Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- 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
-
index ed587fc454ca41c7784819eb61eb914e0e151865..af184d748ba7634c1aa25d8e4326ca45a3f4590a 100644 (file)
@@ -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