summaryrefslogtreecommitdiff
path: root/target/linux
diff options
context:
space:
mode:
authorhauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-09-15 09:39:19 +0000
committerhauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-09-15 09:39:19 +0000
commit8693b61dc66ca44e26c2898bc84036de056cfa12 (patch)
tree19d843e5b0ef3965f17e7d7965cff2b99d6bf67c /target/linux
parenta69dfeb2d8ab630b788e64a9dbc76de4927949eb (diff)
brcm47xx: bgmac: fix internal switch initialization
Some devices (BCM4749, BCM5357, BCM53572) have internal switch that requires initialization. We already have code for this, but because of the typo in code it was never working. This resulted in network not working for some routers and possibility of soft-bricking them. Use correct bit for switch initialization and fix typo in the define. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37993 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/brcm47xx/patches-3.10/710-bgmac_fix_internal_switch_initialization.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-3.10/710-bgmac_fix_internal_switch_initialization.patch b/target/linux/brcm47xx/patches-3.10/710-bgmac_fix_internal_switch_initialization.patch
new file mode 100644
index 0000000000..8601888498
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.10/710-bgmac_fix_internal_switch_initialization.patch
@@ -0,0 +1,33 @@
+bgmac: fix internal switch initialization
+
+Some devices (BCM4749, BCM5357, BCM53572) have internal switch that
+requires initialization. We already have code for this, but because
+of the typo in code it was never working. This resulted in network not
+working for some routers and possibility of soft-bricking them.
+
+Use correct bit for switch initialization and fix typo in the define.
+
+Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
+
+--- a/drivers/net/ethernet/broadcom/bgmac.c
++++ b/drivers/net/ethernet/broadcom/bgmac.c
+@@ -908,7 +908,7 @@ static void bgmac_chip_reset(struct bgma
+ struct bcma_drv_cc *cc = &bgmac->core->bus->drv_cc;
+ u8 et_swtype = 0;
+ u8 sw_type = BGMAC_CHIPCTL_1_SW_TYPE_EPHY |
+- BGMAC_CHIPCTL_1_IF_TYPE_RMII;
++ BGMAC_CHIPCTL_1_IF_TYPE_MII;
+ char buf[2];
+
+ if (bcm47xx_nvram_getenv("et_swtype", buf, 1) > 0) {
+--- a/drivers/net/ethernet/broadcom/bgmac.h
++++ b/drivers/net/ethernet/broadcom/bgmac.h
+@@ -333,7 +333,7 @@
+
+ #define BGMAC_CHIPCTL_1_IF_TYPE_MASK 0x00000030
+ #define BGMAC_CHIPCTL_1_IF_TYPE_RMII 0x00000000
+-#define BGMAC_CHIPCTL_1_IF_TYPE_MI 0x00000010
++#define BGMAC_CHIPCTL_1_IF_TYPE_MII 0x00000010
+ #define BGMAC_CHIPCTL_1_IF_TYPE_RGMII 0x00000020
+ #define BGMAC_CHIPCTL_1_SW_TYPE_MASK 0x000000C0
+ #define BGMAC_CHIPCTL_1_SW_TYPE_EPHY 0x00000000