diff options
Diffstat (limited to 'target/linux/mvebu')
8 files changed, 20 insertions, 120 deletions
diff --git a/target/linux/mvebu/patches-3.18/031-disable_cpu_idle_on_armada_38x.patch b/target/linux/mvebu/patches-3.18/031-disable_cpu_idle_on_armada_38x.patch deleted file mode 100644 index 31a73a504c..0000000000 --- a/target/linux/mvebu/patches-3.18/031-disable_cpu_idle_on_armada_38x.patch +++ /dev/null @@ -1,62 +0,0 @@ -On Armada 38x SoCs, under heavy I/O load, the system hangs when CPU -Idle is enabled. Waiting for a solution to this issue, this patch -disables the CPU Idle support for this SoC. - -As CPU Hot plug support also uses some of the CPU Idle functions it is -also affected by the same issue. This patch disables it also for the -Armada 38x SoCs. - -Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> -Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> -Cc: <stable@vger.kernel.org> # v3.17 + ---- -Hi, - -In this version I removed the unneeded initialization of the ret -variable, I also fixed the warning message, and finally I added the -Tested-by from Thomas. - -Gregory - - arch/arm/mach-mvebu/pmsu.c | 16 +++++++++++++++- - 1 file changed, 15 insertions(+), 1 deletion(-) - ---- a/arch/arm/mach-mvebu/pmsu.c -+++ b/arch/arm/mach-mvebu/pmsu.c -@@ -415,6 +415,9 @@ static __init int armada_38x_cpuidle_ini - void __iomem *mpsoc_base; - u32 reg; - -+ pr_warn("CPU idle is currently broken on Armada 38x: disabling"); -+ return 0; -+ - np = of_find_compatible_node(NULL, NULL, - "marvell,armada-380-coherency-fabric"); - if (!np) -@@ -476,6 +479,16 @@ static int __init mvebu_v7_cpu_pm_init(v - return 0; - of_node_put(np); - -+ /* -+ * Currently the CPU idle support for Armada 38x is broken, as -+ * the CPU hotplug uses some of the CPU idle functions it is -+ * broken too, so let's disable it -+ */ -+ if (of_machine_is_compatible("marvell,armada380")) { -+ cpu_hotplug_disable(); -+ pr_warn("CPU hotplug support is currently broken on Armada 38x: disabling"); -+ } -+ - if (of_machine_is_compatible("marvell,armadaxp")) - ret = armada_xp_cpuidle_init(); - else if (of_machine_is_compatible("marvell,armada370")) -@@ -489,7 +502,8 @@ static int __init mvebu_v7_cpu_pm_init(v - return ret; - - mvebu_v7_pmsu_enable_l2_powerdown_onidle(); -- platform_device_register(&mvebu_v7_cpuidle_device); -+ if (mvebu_v7_cpuidle_device.name) -+ platform_device_register(&mvebu_v7_cpuidle_device); - cpu_pm_register_notifier(&mvebu_v7_cpu_pm_notifier); - - return 0; diff --git a/target/linux/mvebu/patches-3.18/060-cpuidle-mvebu-Fix-the-CPU-PM-notifier-usage.patch b/target/linux/mvebu/patches-3.18/060-cpuidle-mvebu-Fix-the-CPU-PM-notifier-usage.patch deleted file mode 100644 index afd66179a4..0000000000 --- a/target/linux/mvebu/patches-3.18/060-cpuidle-mvebu-Fix-the-CPU-PM-notifier-usage.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 43b68879de27b1993518687fbc6013da80cdcbfe Mon Sep 17 00:00:00 2001 -From: Gregory CLEMENT <gregory.clement@free-electrons.com> -Date: Thu, 26 Feb 2015 18:20:48 +0100 -Subject: [PATCH] cpuidle: mvebu: Fix the CPU PM notifier usage - -As stated in kernel/cpu_pm.c, "Platform is responsible for ensuring -that cpu_pm_enter is not called twice on the same CPU before -cpu_pm_exit is called.". In the current code in case of failure when -calling mvebu_v7_cpu_suspend, the function cpu_pm_exit() is never -called whereas cpu_pm_enter() was called just before. - -This patch moves the cpu_pm_exit() in order to balance the -cpu_pm_enter() calls. - -Cc: stable@vger.kernel.org -Reported-by: Fulvio Benini <fbf@libero.it> -Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> -Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> ---- - drivers/cpuidle/cpuidle-mvebu-v7.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/drivers/cpuidle/cpuidle-mvebu-v7.c -+++ b/drivers/cpuidle/cpuidle-mvebu-v7.c -@@ -37,11 +37,11 @@ static int mvebu_v7_enter_idle(struct cp - deepidle = true; - - ret = mvebu_v7_cpu_suspend(deepidle); -+ cpu_pm_exit(); -+ - if (ret) - return ret; - -- cpu_pm_exit(); -- - return index; - } - diff --git a/target/linux/mvebu/patches-3.18/198-gpio_mvebu_suspend.patch b/target/linux/mvebu/patches-3.18/198-gpio_mvebu_suspend.patch index 7a5c0b6ba6..9ef1815035 100644 --- a/target/linux/mvebu/patches-3.18/198-gpio_mvebu_suspend.patch +++ b/target/linux/mvebu/patches-3.18/198-gpio_mvebu_suspend.patch @@ -24,7 +24,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org> }; /* -@@ -554,6 +562,93 @@ static const struct of_device_id mvebu_g +@@ -562,6 +570,93 @@ static const struct of_device_id mvebu_g }; MODULE_DEVICE_TABLE(of, mvebu_gpio_of_match); @@ -118,7 +118,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org> static int mvebu_gpio_probe(struct platform_device *pdev) { struct mvebu_gpio_chip *mvchip; -@@ -577,6 +672,8 @@ static int mvebu_gpio_probe(struct platf +@@ -585,6 +680,8 @@ static int mvebu_gpio_probe(struct platf if (!mvchip) return -ENOMEM; @@ -127,7 +127,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org> if (of_property_read_u32(pdev->dev.of_node, "ngpios", &ngpios)) { dev_err(&pdev->dev, "Missing ngpios OF property\n"); return -ENODEV; -@@ -735,5 +832,7 @@ static struct platform_driver mvebu_gpio +@@ -743,5 +840,7 @@ static struct platform_driver mvebu_gpio .of_match_table = mvebu_gpio_of_match, }, .probe = mvebu_gpio_probe, diff --git a/target/linux/mvebu/patches-3.18/199-gpio_mvebu_drop_owner.patch b/target/linux/mvebu/patches-3.18/199-gpio_mvebu_drop_owner.patch index c52e85e762..fe74199dcc 100644 --- a/target/linux/mvebu/patches-3.18/199-gpio_mvebu_drop_owner.patch +++ b/target/linux/mvebu/patches-3.18/199-gpio_mvebu_drop_owner.patch @@ -5,7 +5,7 @@ Signed-off-by: Wolfram Sang <wsa@the-dreams.de> --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c -@@ -828,7 +828,6 @@ static int mvebu_gpio_probe(struct platf +@@ -836,7 +836,6 @@ static int mvebu_gpio_probe(struct platf static struct platform_driver mvebu_gpio_driver = { .driver = { .name = "mvebu-gpio", diff --git a/target/linux/mvebu/patches-3.18/200-gpio_mvebu_checkpatch_fixes.patch b/target/linux/mvebu/patches-3.18/200-gpio_mvebu_checkpatch_fixes.patch index 844df4f6f5..48ab67df3f 100644 --- a/target/linux/mvebu/patches-3.18/200-gpio_mvebu_checkpatch_fixes.patch +++ b/target/linux/mvebu/patches-3.18/200-gpio_mvebu_checkpatch_fixes.patch @@ -111,7 +111,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> default: BUG(); } -@@ -364,22 +371,22 @@ static void mvebu_gpio_level_irq_unmask( +@@ -372,22 +379,22 @@ static void mvebu_gpio_level_irq_unmask( * value of the line or the opposite value. * * Level IRQ handlers: DATA_IN is used directly as cause register. @@ -144,7 +144,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> * ****************************************************************************/ -@@ -394,9 +401,8 @@ static int mvebu_gpio_irq_set_type(struc +@@ -402,9 +409,8 @@ static int mvebu_gpio_irq_set_type(struc pin = d->hwirq; u = readl_relaxed(mvebu_gpioreg_io_conf(mvchip)) & (1 << pin); @@ -155,7 +155,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> type &= IRQ_TYPE_SENSE_MASK; if (type == IRQ_TYPE_NONE) -@@ -529,13 +535,13 @@ static void mvebu_gpio_dbg_show(struct s +@@ -537,13 +543,13 @@ static void mvebu_gpio_dbg_show(struct s (data_in ^ in_pol) & msk ? "hi" : "lo", in_pol & msk ? "lo" : "hi"); if (!((edg_msk | lvl_msk) & msk)) { @@ -172,7 +172,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> seq_printf(s, " (%s)\n", cause & msk ? "pending" : "clear "); } } -@@ -546,15 +552,15 @@ static void mvebu_gpio_dbg_show(struct s +@@ -554,15 +560,15 @@ static void mvebu_gpio_dbg_show(struct s static const struct of_device_id mvebu_gpio_of_match[] = { { .compatible = "marvell,orion-gpio", @@ -191,7 +191,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> }, { /* sentinel */ -@@ -668,7 +674,8 @@ static int mvebu_gpio_probe(struct platf +@@ -676,7 +682,8 @@ static int mvebu_gpio_probe(struct platf else soc_variant = MVEBU_GPIO_SOC_VARIANT_ORION; @@ -201,7 +201,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> if (!mvchip) return -ENOMEM; -@@ -767,8 +774,8 @@ static int mvebu_gpio_probe(struct platf +@@ -775,8 +782,8 @@ static int mvebu_gpio_probe(struct platf * interrupt handlers, with each handler dealing with 8 GPIO * pins. */ for (i = 0; i < 4; i++) { @@ -212,7 +212,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> if (irq < 0) continue; irq_set_handler_data(irq, mvchip); -@@ -827,7 +834,7 @@ static int mvebu_gpio_probe(struct platf +@@ -835,7 +842,7 @@ static int mvebu_gpio_probe(struct platf static struct platform_driver mvebu_gpio_driver = { .driver = { 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 index aecf8e3c12..aeb884a381 100644 --- 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 @@ -8,7 +8,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c -@@ -667,6 +667,7 @@ static int mvebu_gpio_probe(struct platf +@@ -675,6 +675,7 @@ static int mvebu_gpio_probe(struct platf unsigned int ngpios; int soc_variant; int i, cpu, id; @@ -16,7 +16,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> match = of_match_device(mvebu_gpio_of_match, &pdev->dev); if (match) -@@ -785,14 +786,16 @@ static int mvebu_gpio_probe(struct platf +@@ -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"); @@ -35,7 +35,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> } gc->private = mvchip; -@@ -823,13 +826,21 @@ static int mvebu_gpio_probe(struct platf +@@ -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); diff --git a/target/linux/mvebu/patches-3.18/202-gpio_mvebu_add_limited_pwm_support.patch b/target/linux/mvebu/patches-3.18/202-gpio_mvebu_add_limited_pwm_support.patch index 52ae90bb2d..49a8c0aec1 100644 --- a/target/linux/mvebu/patches-3.18/202-gpio_mvebu_add_limited_pwm_support.patch +++ b/target/linux/mvebu/patches-3.18/202-gpio_mvebu_add_limited_pwm_support.patch @@ -299,7 +299,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> { struct mvebu_gpio_chip *mvchip = container_of(chip, struct mvebu_gpio_chip, chip); -@@ -609,6 +592,8 @@ static int mvebu_gpio_suspend(struct pla +@@ -617,6 +600,8 @@ static int mvebu_gpio_suspend(struct pla BUG(); } @@ -308,7 +308,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> return 0; } -@@ -652,6 +637,8 @@ static int mvebu_gpio_resume(struct plat +@@ -660,6 +645,8 @@ static int mvebu_gpio_resume(struct plat BUG(); } @@ -317,7 +317,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> return 0; } -@@ -663,7 +650,6 @@ static int mvebu_gpio_probe(struct platf +@@ -671,7 +658,6 @@ static int mvebu_gpio_probe(struct platf struct resource *res; struct irq_chip_generic *gc; struct irq_chip_type *ct; @@ -325,7 +325,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> unsigned int ngpios; int soc_variant; int i, cpu, id; -@@ -693,10 +679,10 @@ static int mvebu_gpio_probe(struct platf +@@ -701,10 +687,10 @@ static int mvebu_gpio_probe(struct platf return id; } @@ -339,7 +339,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> mvchip->soc_variant = soc_variant; mvchip->chip.label = dev_name(&pdev->dev); -@@ -830,7 +816,8 @@ static int mvebu_gpio_probe(struct platf +@@ -838,7 +824,8 @@ static int mvebu_gpio_probe(struct platf goto err_generic_chip; } diff --git a/target/linux/mvebu/patches-3.18/206-mvebu_wrt1900ac_use_pwm-fan_rather_than_gpio-fan.patch b/target/linux/mvebu/patches-3.18/206-mvebu_wrt1900ac_use_pwm-fan_rather_than_gpio-fan.patch index dddd67a95a..58d8280c3e 100644 --- a/target/linux/mvebu/patches-3.18/206-mvebu_wrt1900ac_use_pwm-fan_rather_than_gpio-fan.patch +++ b/target/linux/mvebu/patches-3.18/206-mvebu_wrt1900ac_use_pwm-fan_rather_than_gpio-fan.patch @@ -9,7 +9,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch> --- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts +++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts -@@ -407,13 +407,11 @@ +@@ -412,13 +412,11 @@ }; }; |