|
|
@@ -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 <[email protected]>
|
|
|
+
|
|
|
+--- 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
|