struct udevice *ethdev,
phy_interface_t interface);
+/**
+ * dm_eth_phy_connect_interface - Connect an Eth device to a PHY based on device
+ * tree with custom PHY interface
+ *
+ * Picks up the DT phy-handle and from ethernet device node and connects the
+ * ethernet device to the linked PHY, while allowing the caller to specify
+ * the phy-mode to use.
+ *
+ * @ethdev: ethernet device
+ * @interface: MAC-PHY protocol
+ *
+ * Return: pointer to phy_device, or 0 on error
+ */
+struct phy_device *dm_eth_phy_connect_interface(struct udevice *ethdev,
+ phy_interface_t interface);
/**
* dm_eth_phy_connect - Connect an Eth device to a PHY based on device tree
*
return phy_connect(pdata->mii_bus, phyaddr, ethdev, interface);
}
-static struct phy_device *dm_eth_connect_phy_handle(struct udevice *ethdev,
- phy_interface_t interface)
+struct phy_device *dm_eth_phy_connect_interface(struct udevice *ethdev,
+ phy_interface_t interface)
{
u32 phy_addr;
struct udevice *mdiodev;
phy = dm_mdio_phy_connect(mdiodev, phy_addr, ethdev, interface);
out:
- if (phy)
+ if (phy) {
phy->node = phynode;
+ phy->interface = interface;
+ }
return phy;
}
struct phy_device *dm_eth_phy_connect(struct udevice *ethdev)
{
phy_interface_t interface;
- struct phy_device *phy;
if (!dev_has_ofnode(ethdev)) {
debug("%s: supplied eth dev has no DT node!\n", ethdev->name);
if (interface == PHY_INTERFACE_MODE_NA)
dev_dbg(ethdev, "can't find interface mode, default to NA\n");
- phy = dm_eth_connect_phy_handle(ethdev, interface);
-
- if (!phy)
- return NULL;
-
- phy->interface = interface;
-
- return phy;
+ return dm_eth_phy_connect_interface(ethdev, interface);
}
UCLASS_DRIVER(mdio) = {