mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-03-13 21:36:57 +00:00
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
This commit is contained in:
parent
d24b3e32ab
commit
db681d4929
2 changed files with 49 additions and 0 deletions
|
@ -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)) {
|
||||
|
|
|
@ -894,6 +894,19 @@ int ofnode_read_pci_addr(ofnode node, enum fdt_pci_space type,
|
|||
*/
|
||||
int ofnode_read_pci_vendev(ofnode node, u16 *vendor, u16 *device);
|
||||
|
||||
/**
|
||||
* ofnode_read_eth_phy_id() - look up eth phy vendor and device id
|
||||
*
|
||||
* Look at the compatible property of a device node that represents a eth phy
|
||||
* device and extract phy vendor id and device id from it.
|
||||
*
|
||||
* @param node node to examine
|
||||
* @param vendor vendor id of the eth phy device
|
||||
* @param device device id of the eth phy device
|
||||
* @return 0 if ok, negative on error
|
||||
*/
|
||||
int ofnode_read_eth_phy_id(ofnode node, u16 *vendor, u16 *device);
|
||||
|
||||
/**
|
||||
* ofnode_read_addr_cells() - Get the number of address cells for a node
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue