[OpenWrt-Devel] [PATCH V2] b53: override CPU port state on BCM5301X with CPU port other than 8

Rafał Miłecki zajec5 at gmail.com
Sun Apr 12 13:01:51 EDT 2015


Newer revisions (5+) of BCM53011 and probably all revs of BCM53012
require overriding CPU port to work. So far we were handling it only for
CPU port 8, but some devices may use e.g. port 5. In such case we need
to use recently defined GMII_PORT registers.
It was tested for regressions on BCM53011 revs 2 & 3. It was also
confirmed to fix switch on some internal Broadcom board.

Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
---
V2: Use new code branch to make (unused) port 8 branch reachable.
---
 .../generic/files/drivers/net/phy/b53/b53_common.c      | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
index d2bb51a..2079f80 100644
--- a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
+++ b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
@@ -536,6 +536,23 @@ static int b53_switch_reset(struct b53_device *dev)
 			   PORT_OVERRIDE_LINK);
 	}
 
+	if (is5301x(dev)) {
+		if (dev->sw_dev.cpu_port == 8) {
+			/* TODO: Ports 5 & 7 require some extra handling */
+		} else {
+			u8 po_reg = B53_GMII_PORT_OVERRIDE_CTRL(dev->sw_dev.cpu_port);
+			u8 gmii_po;
+
+			b53_read8(dev, B53_CTRL_PAGE, po_reg, &gmii_po);
+			gmii_po |= GMII_PO_LINK |
+				   GMII_PO_RX_FLOW |
+				   GMII_PO_TX_FLOW |
+				   GMII_PO_EN |
+				   GMII_PO_SPEED_2000M;
+			b53_write8(dev, B53_CTRL_PAGE, po_reg, gmii_po);
+		}
+	}
+
 	b53_enable_mib(dev);
 
 	return b53_flush_arl(dev);
-- 
1.8.4.5
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list