These ports are also used in GMAC3 configuration, just for radios rather than physical Ethernet ports.
Signed-off-by: Rafał Miłecki <[email protected]> --- People interested in more details of GMAC3 configuration may take a look at bcmfwd.h from Broadcom's SDK. --- .../generic/files/drivers/net/phy/b53/b53_common.c | 38 +++++++++++++++------- 1 file changed, 27 insertions(+), 11 deletions(-) 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 676e301..fa137ab 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 @@ -478,6 +478,23 @@ static void b53_switch_reset_gpio(struct b53_device *dev) dev->current_page = 0xff; } +static void b53_gmii_port_override(struct b53_device *dev, int port) +{ + u8 po_reg = B53_GMII_PORT_OVERRIDE_CTRL(port); + u8 gmii_po = 0; + + if (WARN_ON(port > 7)) + return; + + 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); +} + static int b53_switch_reset(struct b53_device *dev) { u8 cpu_port = dev->sw_dev.cpu_port; @@ -548,18 +565,17 @@ static int b53_switch_reset(struct b53_device *dev) b53_write8(dev, B53_CTRL_PAGE, B53_PORT_OVERRIDE_CTRL, mii_port_override); - /* TODO: Ports 5 & 7 require some extra handling */ + /* + * Port 8 is used as CPU in GMAC3 configuration. In such + * case ports 5 and 7 are connected to wireless radios. + * With proper drivers it's possible to make hw switch + * handle wlan <-> lan bridging. + * Both ports need overriding to be usable. + */ + b53_gmii_port_override(dev, 5); + b53_gmii_port_override(dev, 7); } else { - u8 po_reg = B53_GMII_PORT_OVERRIDE_CTRL(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_gmii_port_override(dev, cpu_port); } } -- 1.8.4.5 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
