|
@@ -1878,8 +1878,18 @@ static int cpsw_probe_dt(struct cpsw_platform_data *data,
|
|
|
mdio_node = of_find_node_by_phandle(be32_to_cpup(parp));
|
|
|
phyid = be32_to_cpup(parp+1);
|
|
|
mdio = of_find_device_by_node(mdio_node);
|
|
|
- snprintf(slave_data->phy_id, sizeof(slave_data->phy_id),
|
|
|
- PHY_ID_FMT, mdio->name, phyid);
|
|
|
+
|
|
|
+ if (strncmp(mdio->name, "gpio", 4) == 0) {
|
|
|
+ /* GPIO bitbang MDIO driver attached */
|
|
|
+ struct mii_bus *bus = dev_get_drvdata(&mdio->dev);
|
|
|
+
|
|
|
+ snprintf(slave_data->phy_id, sizeof(slave_data->phy_id),
|
|
|
+ PHY_ID_FMT, bus->id, phyid);
|
|
|
+ } else {
|
|
|
+ /* davinci MDIO driver attached */
|
|
|
+ snprintf(slave_data->phy_id, sizeof(slave_data->phy_id),
|
|
|
+ PHY_ID_FMT, mdio->name, phyid);
|
|
|
+ }
|
|
|
|
|
|
mac_addr = of_get_mac_address(slave_node);
|
|
|
if (mac_addr)
|