34 lines
1.3 KiB
Diff
34 lines
1.3 KiB
Diff
|
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
|
||
|
@@ -931,7 +931,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
|
||
|
@@ -334,7 +334,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
|