aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2015-04-13 17:32:12 +0000
committerFelix Fietkau <nbd@openwrt.org>2015-04-13 17:32:12 +0000
commit6bc743ef6ff69ff6dbd89f1d85a0d6432dd84a2d (patch)
tree027cd7bfe8c89f7c3a5064411242f2d5d8c52a4f /target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch
parent1f70f452ccb3701fb34f4fd0fb624dbaf2120304 (diff)
downloadupstream-6bc743ef6ff69ff6dbd89f1d85a0d6432dd84a2d.tar.gz
upstream-6bc743ef6ff69ff6dbd89f1d85a0d6432dd84a2d.tar.bz2
upstream-6bc743ef6ff69ff6dbd89f1d85a0d6432dd84a2d.zip
kernel: add bgmac fixes for bcm53xx (fix ethernet bringup on a bcm4709 based device)
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 45417
Diffstat (limited to 'target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch')
-rw-r--r--target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch28
1 files changed, 28 insertions, 0 deletions
diff --git a/target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch b/target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch
new file mode 100644
index 0000000000..d1b63f155b
--- /dev/null
+++ b/target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch
@@ -0,0 +1,28 @@
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Mon, 13 Apr 2015 15:56:26 +0200
+Subject: [PATCH] bgmac: reset all 4 GMAC cores on init
+
+On a BCM4709 based device, I found that GMAC cores may be enabled at
+probe time, but only become usable after a full reset.
+Disable cores before re-enabling them to ensure that they are properly
+reset.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+---
+
+--- a/drivers/net/ethernet/broadcom/bgmac.c
++++ b/drivers/net/ethernet/broadcom/bgmac.c
+@@ -1609,8 +1609,11 @@ static int bgmac_probe(struct bcma_devic
+ ns_core = bcma_find_core_unit(core->bus,
+ BCMA_CORE_MAC_GBIT,
+ ns_gmac);
+- if (ns_core && !bcma_core_is_enabled(ns_core))
+- bcma_core_enable(ns_core, 0);
++ if (!ns_core)
++ continue;
++
++ bcma_core_disable(ns_core, 0);
++ bcma_core_enable(ns_core, 0);
+ }
+ }
+