On Sun, 2015-04-12 at 19:01 +0200, Rafał Miłecki wrote: > 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.
CPU port as 5 also allows the switch on my R8000 (BCM53012) rev 5 device to function. The puzzle is the the Vendor firmware uses port 8 as the cpu port (+ 5 and 7 for some unknown purpose) for these higher rev switches. We clearly don't know what the relationship is between ports 5, 7 and 8 and I suspect there's more to it than just configuring the three ports properly. But my code to set ports 5, 7 and 8 when cpu is 8 might not be correct either, don't know yet. > > Signed-off-by: Rafał Miłecki <zaj...@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); _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel