summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorOleksij Rempel <o.rempel@pengutronix.de>2022-04-13 10:21:53 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2022-04-14 09:42:09 +0200
commita7d5e091a1b1e865b0987df9811683572c57c7b9 (patch)
treec4efb5e7a7d9714fd9f95c7607a0f889c844793d /net
parentdec9b064d84ee7a3c7167cb42d1d3e8e09df07f9 (diff)
downloadbarebox-a7d5e091a1b1e865b0987df9811683572c57c7b9.tar.gz
barebox-a7d5e091a1b1e865b0987df9811683572c57c7b9.tar.xz
net: add of_find_eth_device_by_node() function
For DSA support we need to find MAC node by phandle from the switch port node. So, provide of_find_eth_device_by_node() to solve this task. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20220413082205.429509-3-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'net')
-rw-r--r--net/eth.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/net/eth.c b/net/eth.c
index 762c5dfb8a..e9e53341f3 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -506,6 +506,22 @@ void led_trigger_network(enum led_trigger trigger)
led_trigger(LED_TRIGGER_NET_TXRX, TRIGGER_FLASH);
}
+struct eth_device *of_find_eth_device_by_node(struct device_node *np)
+{
+ struct eth_device *edev;
+ int ret;
+
+ ret = of_device_ensure_probed(np);
+ if (ret)
+ return NULL;
+
+ list_for_each_entry(edev, &netdev_list, list)
+ if (edev->parent->device_node == np)
+ return edev;
+ return NULL;
+}
+EXPORT_SYMBOL(of_find_eth_device_by_node);
+
static int of_populate_ethaddr(void)
{
char str[sizeof("xx:xx:xx:xx:xx:xx")];