| From 30089a3321ed10e1e1ed066def4680a9e47e7bc8 Mon Sep 17 00:00:00 2001 |
| From: Felix Fietkau <nbd@nbd.name> |
| Date: Thu, 19 Jan 2017 14:20:09 +0100 |
| Subject: [PATCH] MIPS: Lantiq: Keep ethernet enabled during boot |
| |
| commit 774f0c6419bb8f9d83901d33582c7fe3ba6a6cb3 upstream. |
| |
| Disabling ethernet during reboot (only to enable it again when the |
| ethernet driver attaches) can put the chip into a faulty state where it |
| corrupts the header of all incoming packets. |
| |
| This happens if packets arrive during the time window where the core is |
| disabled, and it can be easily reproduced by rebooting while sending a |
| flood ping to the broadcast address. |
| |
| Fixes: 95135bfa7ead ("MIPS: Lantiq: Deactivate most of the devices by default") |
| Signed-off-by: Felix Fietkau <nbd@nbd.name> |
| Acked-by: John Crispin <john@phrozen.org> |
| Cc: hauke.mehrtens@lantiq.com |
| Cc: linux-mips@linux-mips.org |
| Cc: <stable@vger.kernel.org> # 4.4.x- |
| Patchwork: https://patchwork.linux-mips.org/patch/15078/ |
| Signed-off-by: James Hogan <james.hogan@imgtec.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/arch/mips/lantiq/xway/sysctrl.c b/arch/mips/lantiq/xway/sysctrl.c |
| index 236193b5210b..9a61671c00a7 100644 |
| --- a/arch/mips/lantiq/xway/sysctrl.c |
| +++ b/arch/mips/lantiq/xway/sysctrl.c |
| @@ -545,7 +545,7 @@ void __init ltq_soc_init(void) |
| clkdev_add_pmu("1a800000.pcie", "msi", 1, 1, PMU1_PCIE2_MSI); |
| clkdev_add_pmu("1a800000.pcie", "pdi", 1, 1, PMU1_PCIE2_PDI); |
| clkdev_add_pmu("1a800000.pcie", "ctl", 1, 1, PMU1_PCIE2_CTL); |
| - clkdev_add_pmu("1e108000.eth", NULL, 1, 0, PMU_SWITCH | PMU_PPE_DP); |
| + clkdev_add_pmu("1e108000.eth", NULL, 0, 0, PMU_SWITCH | PMU_PPE_DP); |
| clkdev_add_pmu("1da00000.usif", "NULL", 1, 0, PMU_USIF); |
| clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU); |
| } else if (of_machine_is_compatible("lantiq,ar10")) { |
| @@ -553,7 +553,7 @@ void __init ltq_soc_init(void) |
| ltq_ar10_fpi_hz(), ltq_ar10_pp32_hz()); |
| clkdev_add_pmu("1e101000.usb", "ctl", 1, 0, PMU_USB0); |
| clkdev_add_pmu("1e106000.usb", "ctl", 1, 0, PMU_USB1); |
| - clkdev_add_pmu("1e108000.eth", NULL, 1, 0, PMU_SWITCH | |
| + clkdev_add_pmu("1e108000.eth", NULL, 0, 0, PMU_SWITCH | |
| PMU_PPE_DP | PMU_PPE_TC); |
| clkdev_add_pmu("1da00000.usif", "NULL", 1, 0, PMU_USIF); |
| clkdev_add_pmu("1f203000.rcu", "gphy", 1, 0, PMU_GPHY); |
| @@ -575,11 +575,11 @@ void __init ltq_soc_init(void) |
| clkdev_add_pmu(NULL, "ahb", 1, 0, PMU_AHBM | PMU_AHBS); |
| |
| clkdev_add_pmu("1da00000.usif", "NULL", 1, 0, PMU_USIF); |
| - clkdev_add_pmu("1e108000.eth", NULL, 1, 0, |
| + clkdev_add_pmu("1e108000.eth", NULL, 0, 0, |
| PMU_SWITCH | PMU_PPE_DPLUS | PMU_PPE_DPLUM | |
| PMU_PPE_EMA | PMU_PPE_TC | PMU_PPE_SLL01 | |
| PMU_PPE_QSB | PMU_PPE_TOP); |
| - clkdev_add_pmu("1f203000.rcu", "gphy", 1, 0, PMU_GPHY); |
| + clkdev_add_pmu("1f203000.rcu", "gphy", 0, 0, PMU_GPHY); |
| clkdev_add_pmu("1e103000.sdio", NULL, 1, 0, PMU_SDIO); |
| clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU); |
| clkdev_add_pmu("1e116000.mei", "dfe", 1, 0, PMU_DFE); |
| -- |
| 2.12.0 |
| |