aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mvebu/patches-3.18/201-gpio_mvebu_fix_probe_cleanup_on_error.patch
diff options
context:
space:
mode:
authorImre Kaloz <kaloz@openwrt.org>2015-12-11 13:38:21 +0000
committerImre Kaloz <kaloz@openwrt.org>2015-12-11 13:38:21 +0000
commit3357033b7388819106bc042bfe94f9a6ea7c81fa (patch)
treee33165365607618fdba211c9a9c4a1d46b6be43a /target/linux/mvebu/patches-3.18/201-gpio_mvebu_fix_probe_cleanup_on_error.patch
parent58e9e35444514781a6e52e6187a1fea815788683 (diff)
downloadupstream-3357033b7388819106bc042bfe94f9a6ea7c81fa.tar.gz
upstream-3357033b7388819106bc042bfe94f9a6ea7c81fa.tar.bz2
upstream-3357033b7388819106bc042bfe94f9a6ea7c81fa.zip
mvebu: drop support for old kernels
Signed-off-by: Imre Kaloz <kaloz@openwrt.org> SVN-Revision: 47835
Diffstat (limited to 'target/linux/mvebu/patches-3.18/201-gpio_mvebu_fix_probe_cleanup_on_error.patch')
-rw-r--r--target/linux/mvebu/patches-3.18/201-gpio_mvebu_fix_probe_cleanup_on_error.patch63
1 files changed, 0 insertions, 63 deletions
diff --git a/target/linux/mvebu/patches-3.18/201-gpio_mvebu_fix_probe_cleanup_on_error.patch b/target/linux/mvebu/patches-3.18/201-gpio_mvebu_fix_probe_cleanup_on_error.patch
deleted file mode 100644
index aeb884a381..0000000000
--- a/target/linux/mvebu/patches-3.18/201-gpio_mvebu_fix_probe_cleanup_on_error.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-Ensure that when there is an error during probe that the gpiochip is
-removed and the generic irq chip is removed.
-
-Signed-off-by: Andrew Lunn <andrew@lunn.ch>
----
- drivers/gpio/gpio-mvebu.c | 23 +++++++++++++++++------
- 1 file changed, 17 insertions(+), 6 deletions(-)
-
---- a/drivers/gpio/gpio-mvebu.c
-+++ b/drivers/gpio/gpio-mvebu.c
-@@ -675,6 +675,7 @@ static int mvebu_gpio_probe(struct platf
- unsigned int ngpios;
- int soc_variant;
- int i, cpu, id;
-+ int err;
-
- match = of_match_device(mvebu_gpio_of_match, &pdev->dev);
- if (match)
-@@ -793,14 +794,16 @@ static int mvebu_gpio_probe(struct platf
- mvchip->irqbase = irq_alloc_descs(-1, 0, ngpios, -1);
- if (mvchip->irqbase < 0) {
- dev_err(&pdev->dev, "no irqs\n");
-- return mvchip->irqbase;
-+ err = mvchip->irqbase;
-+ goto err_gpiochip_add;
- }
-
- gc = irq_alloc_generic_chip("mvebu_gpio_irq", 2, mvchip->irqbase,
- mvchip->membase, handle_level_irq);
- if (!gc) {
- dev_err(&pdev->dev, "Cannot allocate generic irq_chip\n");
-- return -ENOMEM;
-+ err = -ENOMEM;
-+ goto err_gpiochip_add;
- }
-
- gc->private = mvchip;
-@@ -831,13 +834,21 @@ static int mvebu_gpio_probe(struct platf
- if (!mvchip->domain) {
- dev_err(&pdev->dev, "couldn't allocate irq domain %s (DT).\n",
- mvchip->chip.label);
-- irq_remove_generic_chip(gc, IRQ_MSK(ngpios), IRQ_NOREQUEST,
-- IRQ_LEVEL | IRQ_NOPROBE);
-- kfree(gc);
-- return -ENODEV;
-+ err = -ENODEV;
-+ goto err_generic_chip;
- }
-
- return 0;
-+
-+err_generic_chip:
-+ irq_remove_generic_chip(gc, IRQ_MSK(ngpios), IRQ_NOREQUEST,
-+ IRQ_LEVEL | IRQ_NOPROBE);
-+ kfree(gc);
-+
-+err_gpiochip_add:
-+ gpiochip_remove(&mvchip->chip);
-+
-+ return err;
- }
-
- static struct platform_driver mvebu_gpio_driver = {