summaryrefslogtreecommitdiffstats
path: root/net/eth.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-05-15 09:56:35 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-05-15 10:04:51 +0200
commit0cf4630cd277e2a71340c47262cd66c930b0d541 (patch)
tree14a77d12ce51275e8cd668fa04d9e6419d62834b /net/eth.c
parent0ca1d8a456e6201d653e5bad5b0af826f77d7793 (diff)
downloadbarebox-0cf4630cd277e2a71340c47262cd66c930b0d541.tar.gz
barebox-0cf4630cd277e2a71340c47262cd66c930b0d541.tar.xz
net: take eth id from devicetree alias
If the devicetree has an alias for the ethernet device, then use it. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'net/eth.c')
-rw-r--r--net/eth.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/net/eth.c b/net/eth.c
index 26a5ff747d..b830f79249 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -330,12 +330,21 @@ int eth_register(struct eth_device *edev)
}
strcpy(edev->dev.name, "eth");
- edev->dev.id = DEVICE_ID_DYNAMIC;
if (edev->parent)
edev->dev.parent = edev->parent;
- register_device(&edev->dev);
+ if (edev->dev.parent && edev->dev.parent->device_node) {
+ edev->dev.id = of_alias_get_id(edev->dev.parent->device_node, "ethernet");
+ if (edev->dev.id < 0)
+ edev->dev.id = DEVICE_ID_DYNAMIC;
+ } else {
+ edev->dev.id = DEVICE_ID_DYNAMIC;
+ }
+
+ ret = register_device(&edev->dev);
+ if (ret)
+ return ret;
dev_add_param_ip(dev, "ipaddr", NULL, NULL, &edev->ipaddr, edev);
dev_add_param_ip(dev, "serverip", NULL, NULL, &edev->serverip, edev);