mirror of https://github.com/hak5/openwrt-owl.git
kernel: add bgmac fixes for bcm53xx (fix ethernet bringup on a bcm4709 based device)
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 45417owl
parent
1f70f452cc
commit
6bc743ef6f
|
@ -0,0 +1,24 @@
|
||||||
|
From: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
Date: Mon, 13 Apr 2015 15:54:04 +0200
|
||||||
|
Subject: [PATCH] bgmac: fix MAC soft-reset bit for corerev > 4
|
||||||
|
|
||||||
|
Only core revisions older than 4 use BGMAC_CMDCFG_SR_REV0
|
||||||
|
|
||||||
|
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
---
|
||||||
|
|
||||||
|
--- a/drivers/net/ethernet/broadcom/bgmac.h
|
||||||
|
+++ b/drivers/net/ethernet/broadcom/bgmac.h
|
||||||
|
@@ -198,9 +198,9 @@
|
||||||
|
#define BGMAC_CMDCFG_TAI 0x00000200
|
||||||
|
#define BGMAC_CMDCFG_HD 0x00000400 /* Set if in half duplex mode */
|
||||||
|
#define BGMAC_CMDCFG_HD_SHIFT 10
|
||||||
|
-#define BGMAC_CMDCFG_SR_REV0 0x00000800 /* Set to reset mode, for other revs */
|
||||||
|
-#define BGMAC_CMDCFG_SR_REV4 0x00002000 /* Set to reset mode, only for core rev 4 */
|
||||||
|
-#define BGMAC_CMDCFG_SR(rev) ((rev == 4) ? BGMAC_CMDCFG_SR_REV4 : BGMAC_CMDCFG_SR_REV0)
|
||||||
|
+#define BGMAC_CMDCFG_SR_REV0 0x00000800 /* Set to reset mode, for core rev 0-3 */
|
||||||
|
+#define BGMAC_CMDCFG_SR_REV4 0x00002000 /* Set to reset mode, for core rev >= 4 */
|
||||||
|
+#define BGMAC_CMDCFG_SR(rev) ((rev >= 4) ? BGMAC_CMDCFG_SR_REV4 : BGMAC_CMDCFG_SR_REV0)
|
||||||
|
#define BGMAC_CMDCFG_ML 0x00008000 /* Set to activate mac loopback mode */
|
||||||
|
#define BGMAC_CMDCFG_AE 0x00400000
|
||||||
|
#define BGMAC_CMDCFG_CFE 0x00800000
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
/**************************************************
|
/**************************************************
|
||||||
* BCMA bus ops
|
* BCMA bus ops
|
||||||
**************************************************/
|
**************************************************/
|
||||||
@@ -1647,6 +1659,16 @@ static int bgmac_probe(struct bcma_devic
|
@@ -1650,6 +1662,16 @@ static int bgmac_probe(struct bcma_devic
|
||||||
net_dev->hw_features = net_dev->features;
|
net_dev->hw_features = net_dev->features;
|
||||||
net_dev->vlan_features = net_dev->features;
|
net_dev->vlan_features = net_dev->features;
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
err = register_netdev(bgmac->net_dev);
|
err = register_netdev(bgmac->net_dev);
|
||||||
if (err) {
|
if (err) {
|
||||||
bgmac_err(bgmac, "Cannot register net device\n");
|
bgmac_err(bgmac, "Cannot register net device\n");
|
||||||
@@ -1673,6 +1695,10 @@ static void bgmac_remove(struct bcma_dev
|
@@ -1676,6 +1698,10 @@ static void bgmac_remove(struct bcma_dev
|
||||||
{
|
{
|
||||||
struct bgmac *bgmac = bcma_get_drvdata(core);
|
struct bgmac *bgmac = bcma_get_drvdata(core);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue