diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2009-06-10 19:44:14 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2009-07-21 16:41:45 +0200 |
commit | bac65c6cde68e0bf76c8d01462321d8af98f0b81 (patch) | |
tree | 95ca6ed492b060aaeb21a4461c2c350d16320b4b /net/eth.c | |
parent | aa611e7e690bc41e2fa855631b85bde91a5a26a2 (diff) | |
download | barebox-bac65c6cde68e0bf76c8d01462321d8af98f0b81.tar.gz barebox-bac65c6cde68e0bf76c8d01462321d8af98f0b81.tar.xz |
net: Get rid of DEVICE_TYPE_ETHER usage
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'net/eth.c')
-rw-r--r-- | net/eth.c | 18 |
1 files changed, 17 insertions, 1 deletions
@@ -32,6 +32,8 @@ static struct eth_device *eth_current; +static LIST_HEAD(netdev_list); + void eth_set_current(struct eth_device *eth) { eth_current = eth; @@ -42,6 +44,17 @@ struct eth_device * eth_get_current(void) return eth_current; } +struct eth_device *eth_get_byname(char *name) +{ + struct eth_device *edev; + + list_for_each_entry(edev, &netdev_list, list) { + if (!strcmp(edev->dev->id, name)) + return edev; + } + return NULL; +} + int eth_open(void) { if (!eth_current) @@ -117,7 +130,6 @@ int eth_register(struct eth_device *edev) } dev->type_data = edev; - dev->type = DEVICE_TYPE_ETHER; edev->param_ip.name = "ipaddr"; edev->param_ip.set = ð_set_ipaddr; edev->param_ethaddr.name = "ethaddr"; @@ -136,6 +148,8 @@ int eth_register(struct eth_device *edev) edev->init(edev); + list_add_tail(&edev->list, &netdev_list); + if (edev->get_ethaddr(edev, ethaddr) == 0) { ethaddr_to_string(ethaddr, ethaddr_str); printf("got MAC address from EEPROM: %s\n",ethaddr_str); @@ -163,5 +177,7 @@ void eth_unregister(struct eth_device *edev) if (eth_current == edev) eth_current = NULL; + + list_del(&edev->list); } |