[OpenWrt-Devel] [PATCH] b53: override CPU port state on BCM5301X with CPU port other than 8
Jonas Gorski
jogo at openwrt.org
Sun Apr 12 12:16:18 EDT 2015
On Sun, Apr 12, 2015 at 6:03 PM, Rafał Miłecki <zajec5 at gmail.com> 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.
>
> Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
> ---
> .../linux/generic/files/drivers/net/phy/b53/b53_common.c | 15 +++++++++++++++
> 1 file changed, 15 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..87c4d5b 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
> @@ -534,6 +534,21 @@ static int b53_switch_reset(struct b53_device *dev)
> b53_write8(dev, B53_CTRL_PAGE, B53_PORT_OVERRIDE_CTRL,
> mii_port_override | PORT_OVERRIDE_EN |
> PORT_OVERRIDE_LINK);
> + } else if (is5301x(dev)) {
> + if (dev->sw_dev.cpu_port == 8) {
> + /* TODO: Ports 5 & 7 require some extra handling */
This branch can never be reached because the previous has
else if ((is531x5(dev) || is5301x(dev)) &&
dev->sw_dev.cpu_port == B53_CPU_PORT) { /*
B53_CPU_PORT is 8 */
> + } 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);
Jonas
_______________________________________________
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