From: Greg Kroah-Hartman Date: Thu, 14 Mar 2013 22:17:59 +0000 (-0700) Subject: 3.8-stable patches X-Git-Tag: v3.0.70~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ec220f16a4ed6629497a756bd51ea9af4849c6b0;p=thirdparty%2Fkernel%2Fstable-queue.git 3.8-stable patches added patches: arm-kirkwood-fix-to-retain-gbe-mac-addresses-for-dt-kernels.patch --- diff --git a/queue-3.8/arm-kirkwood-fix-to-retain-gbe-mac-addresses-for-dt-kernels.patch b/queue-3.8/arm-kirkwood-fix-to-retain-gbe-mac-addresses-for-dt-kernels.patch new file mode 100644 index 00000000000..ee959822eff --- /dev/null +++ b/queue-3.8/arm-kirkwood-fix-to-retain-gbe-mac-addresses-for-dt-kernels.patch @@ -0,0 +1,77 @@ +From 7bf5b408b419fc849578e6e9fbd221bf43638eb6 Mon Sep 17 00:00:00 2001 +From: Sebastian Hesselbarth +Date: Wed, 30 Jan 2013 21:29:58 +0100 +Subject: ARM: kirkwood: fix to retain gbe MAC addresses for DT kernels + +From: Sebastian Hesselbarth + +commit 7bf5b408b419fc849578e6e9fbd221bf43638eb6 upstream. + +The ethernet controller used on kirkwood looses its MAC address +register contents when the corresponding clock is gated. As soon as +mv643xx_eth is built as module, the clock gets gated and when loading +the module, the MAC address is gone. + +Proper DT support for the mv643xx_eth driver is expected soon, so we add +a workaround to always enable ge0/ge1 clocks on kirkwood. This workaround +is also already used on non-DT kirkwood kernels. + +Reported-by: Simon Baatz +Signed-off-by: Sebastian Hesselbarth +Tested-by: Simon Baatz +Signed-off-by: Jason Cooper +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-kirkwood/board-dt.c | 24 +++++++++++++++--------- + 1 file changed, 15 insertions(+), 9 deletions(-) + +--- a/arch/arm/mach-kirkwood/board-dt.c ++++ b/arch/arm/mach-kirkwood/board-dt.c +@@ -41,16 +41,12 @@ static void __init kirkwood_legacy_clk_i + + struct device_node *np = of_find_compatible_node( + NULL, NULL, "marvell,kirkwood-gating-clock"); +- + struct of_phandle_args clkspec; ++ struct clk *clk; + + clkspec.np = np; + clkspec.args_count = 1; + +- clkspec.args[0] = CGC_BIT_GE0; +- orion_clkdev_add(NULL, "mv643xx_eth_port.0", +- of_clk_get_from_provider(&clkspec)); +- + clkspec.args[0] = CGC_BIT_PEX0; + orion_clkdev_add("0", "pcie", + of_clk_get_from_provider(&clkspec)); +@@ -63,14 +59,24 @@ static void __init kirkwood_legacy_clk_i + orion_clkdev_add("1", "pcie", + of_clk_get_from_provider(&clkspec)); + +- clkspec.args[0] = CGC_BIT_GE1; +- orion_clkdev_add(NULL, "mv643xx_eth_port.1", +- of_clk_get_from_provider(&clkspec)); +- + clkspec.args[0] = CGC_BIT_SDIO; + orion_clkdev_add(NULL, "mvsdio", + of_clk_get_from_provider(&clkspec)); + ++ /* ++ * The ethernet interfaces forget the MAC address assigned by ++ * u-boot if the clocks are turned off. Until proper DT support ++ * is available we always enable them for now. ++ */ ++ clkspec.args[0] = CGC_BIT_GE0; ++ clk = of_clk_get_from_provider(&clkspec); ++ orion_clkdev_add(NULL, "mv643xx_eth_port.0", clk); ++ clk_prepare_enable(clk); ++ ++ clkspec.args[0] = CGC_BIT_GE1; ++ clk = of_clk_get_from_provider(&clkspec); ++ orion_clkdev_add(NULL, "mv643xx_eth_port.1", clk); ++ clk_prepare_enable(clk); + } + + static void __init kirkwood_of_clk_init(void) diff --git a/queue-3.8/series b/queue-3.8/series index 6e6909347f1..c57910c8c6f 100644 --- a/queue-3.8/series +++ b/queue-3.8/series @@ -25,3 +25,4 @@ tty-serial-add-support-for-altera-serial-port.patch tty-disable-debugging-warning.patch tty-do-not-reset-master-s-packet-mode.patch fix-4-port-and-add-support-for-8-port-unknown-pci-serial-port-cards.patch +arm-kirkwood-fix-to-retain-gbe-mac-addresses-for-dt-kernels.patch