bus/dpaa: add API to get MAC address
Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com> Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
This commit is contained in:
parent
9abdad12b8
commit
d6995aa332
@ -546,3 +546,42 @@ of_device_is_compatible(const struct device_node *dev_node,
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static const void *of_get_mac_addr(const struct device_node *np,
|
||||
const char *name)
|
||||
{
|
||||
return of_get_property(np, name, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Search the device tree for the best MAC address to use. 'mac-address' is
|
||||
* checked first, because that is supposed to contain to "most recent" MAC
|
||||
* address. If that isn't set, then 'local-mac-address' is checked next,
|
||||
* because that is the default address. If that isn't set, then the obsolete
|
||||
* 'address' is checked, just in case we're using an old device tree.
|
||||
*
|
||||
* Note that the 'address' property is supposed to contain a virtual address of
|
||||
* the register set, but some DTS files have redefined that property to be the
|
||||
* MAC address.
|
||||
*
|
||||
* All-zero MAC addresses are rejected, because those could be properties that
|
||||
* exist in the device tree, but were not set by U-Boot. For example, the
|
||||
* DTS could define 'mac-address' and 'local-mac-address', with zero MAC
|
||||
* addresses. Some older U-Boots only initialized 'local-mac-address'. In
|
||||
* this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
|
||||
* but is all zeros.
|
||||
*/
|
||||
const void *of_get_mac_address(const struct device_node *np)
|
||||
{
|
||||
const void *addr;
|
||||
|
||||
addr = of_get_mac_addr(np, "mac-address");
|
||||
if (addr)
|
||||
return addr;
|
||||
|
||||
addr = of_get_mac_addr(np, "local-mac-address");
|
||||
if (addr)
|
||||
return addr;
|
||||
|
||||
return of_get_mac_addr(np, "address");
|
||||
}
|
||||
|
@ -109,6 +109,8 @@ const struct device_node *of_get_parent(const struct device_node *dev_node);
|
||||
const struct device_node *of_get_next_child(const struct device_node *dev_node,
|
||||
const struct device_node *prev);
|
||||
|
||||
const void *of_get_mac_address(const struct device_node *np);
|
||||
|
||||
#define for_each_child_node(parent, child) \
|
||||
for (child = of_get_next_child(parent, NULL); child != NULL; \
|
||||
child = of_get_next_child(parent, child))
|
||||
|
@ -92,3 +92,11 @@ DPDK_18.02 {
|
||||
|
||||
local: *;
|
||||
} DPDK_17.11;
|
||||
|
||||
DPDK_18.08 {
|
||||
global:
|
||||
|
||||
of_get_mac_address;
|
||||
|
||||
local: *;
|
||||
} DPDK_18.02;
|
||||
|
Loading…
x
Reference in New Issue
Block a user