aboutsummaryrefslogtreecommitdiff
path: root/drivers/core
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2022-02-23 15:45:40 +0100
committerMichal Simek <michal.simek@xilinx.com>2022-03-09 12:43:16 +0100
commitdb681d4929cac3f5d0a8ce638e7e5306fe6038d2 (patch)
tree099f3103642de45f71a4098bdbadfbafbc5ee696 /drivers/core
parentd24b3e32ab7f89c0b411747203d7f103f475cfbf (diff)
downloadu-boot-db681d4929cac3f5d0a8ce638e7e5306fe6038d2.zip
u-boot-db681d4929cac3f5d0a8ce638e7e5306fe6038d2.tar.gz
u-boot-db681d4929cac3f5d0a8ce638e7e5306fe6038d2.tar.bz2
net: phy: Add new read ethernet phy id function
Add new function to get ethernet phy id from compatible property of the mdio phy node. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com> Link: https://lore.kernel.org/r/16019efb3820a50330935fdaae191cec1f101b5c.1645627539.git.michal.simek@xilinx.com
Diffstat (limited to 'drivers/core')
-rw-r--r--drivers/core/ofnode.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index 709bea2..8042847 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -898,6 +898,42 @@ int ofnode_read_pci_vendev(ofnode node, u16 *vendor, u16 *device)
return -ENOENT;
}
+int ofnode_read_eth_phy_id(ofnode node, u16 *vendor, u16 *device)
+{
+ const char *list, *end;
+ int len;
+
+ list = ofnode_get_property(node, "compatible", &len);
+
+ if (!list)
+ return -ENOENT;
+
+ end = list + len;
+ while (list < end) {
+ len = strlen(list);
+
+ if (len >= strlen("ethernet-phy-idVVVV,DDDD")) {
+ char *s = strstr(list, "ethernet-phy-id");
+
+ /*
+ * check if the string is something like
+ * ethernet-phy-idVVVV,DDDD
+ */
+ if (s && s[19] == '.') {
+ s += strlen("ethernet-phy-id");
+ *vendor = simple_strtol(s, NULL, 16);
+ s += 5;
+ *device = simple_strtol(s, NULL, 16);
+
+ return 0;
+ }
+ }
+ list += (len + 1);
+ }
+
+ return -ENOENT;
+}
+
int ofnode_read_addr_cells(ofnode node)
{
if (ofnode_is_np(node)) {