diff options
Diffstat (limited to 'drivers/core')
-rw-r--r-- | drivers/core/ofnode.c | 23 | ||||
-rw-r--r-- | drivers/core/read.c | 5 |
2 files changed, 28 insertions, 0 deletions
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 445b7ad5ad..f644a593d3 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -1219,3 +1219,26 @@ ofnode ofnode_get_phy_node(ofnode node) return args.node; } + +phy_interface_t ofnode_read_phy_mode(ofnode node) +{ + const char *mode; + int i; + + assert(ofnode_valid(node)); + + mode = ofnode_read_string(node, "phy-mode"); + if (!mode) + mode = ofnode_read_string(node, "phy-connection-type"); + + if (!mode) + return PHY_INTERFACE_MODE_NONE; + + for (i = 0; i < PHY_INTERFACE_MODE_COUNT; i++) + if (!strcmp(mode, phy_interface_strings[i])) + return i; + + debug("%s: Invalid PHY interface '%s'\n", __func__, mode); + + return PHY_INTERFACE_MODE_NONE; +} diff --git a/drivers/core/read.c b/drivers/core/read.c index 7ff100218d..c73508d276 100644 --- a/drivers/core/read.c +++ b/drivers/core/read.c @@ -403,3 +403,8 @@ ofnode dev_get_phy_node(const struct udevice *dev) { return ofnode_get_phy_node(dev_ofnode(dev)); } + +phy_interface_t dev_read_phy_mode(const struct udevice *dev) +{ + return ofnode_read_phy_mode(dev_ofnode(dev)); +} |