and of course the Pro uses a different switch, the AR8216. David
On Sunday 10 April 2011, Jonas Gorski wrote: > On 10 April 2011 12:09, Peter Lebbing <pe...@digitalbrains.com> wrote: > > So, do you have any ideas on the best way to properly handle this PHY > > that looks like 32 PHYs? > > Take a look at ar71xx, they define a (machine dependent) phy mask for > each eth that says at which phy addresses a device may attach. > > e.g. the rs pro setup code has: > > ar71xx_add_device_mdio(~(UBNT_RSPRO_WAN_PHYMASK | > UBNT_RSPRO_LAN_PHYMASK)); > > ar71xx_init_mac(ar71xx_eth0_data.mac_addr, ar71xx_mac_base, 0); > ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; > ar71xx_eth0_data.phy_mask = UBNT_RSPRO_WAN_PHYMASK; > > ubnt_init_secondary_mac(ar71xx_mac_base); > ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; > ar71xx_eth1_data.phy_mask = UBNT_RSPRO_LAN_PHYMASK; > ar71xx_eth1_data.speed = SPEED_1000; > ar71xx_eth1_data.duplex = DUPLEX_FULL; > > This results that only for one of the "allowed" phy masks a phy driver > gets attached: > > static int ag71xx_phy_connect_multi(struct ag71xx *ag) > { > (...) > for (phy_addr = 0; phy_addr < PHY_MAX_ADDR; phy_addr++) { > if (!(pdata->phy_mask & (1 << phy_addr))) > continue; > > if (ag->mii_bus->phy_map[phy_addr] == NULL) > continue; > > if (phydev == NULL) > phydev = ag->mii_bus->phy_map[phy_addr]; > } > (...) > ag->phy_dev = phy_connect(dev, dev_name(&phydev->dev), > &ag71xx_phy_link_adjust, 0, > pdata->phy_if_mode); > (...) > } > > > Of course this assumes you already know which device you have. > > Regards > Jonas > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel