From 2335cc04c06588418ee4a35b0944619aab1a938a Mon Sep 17 00:00:00 2001 From: Jonas Bonn Date: Thu, 25 Nov 2010 02:30:25 +0000 Subject: [PATCH] --- yaml --- r: 224515 b: refs/heads/master c: e0f4258be2515afce8ef1e6fb22312525c281798 h: refs/heads/master i: 224513: 391f9f9872b36ad0a8328601186be742c5faeb60 224511: 44fef5721327109c3f69416d59815987af9428d6 v: v3 --- [refs] | 2 +- trunk/drivers/net/ethoc.c | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index b5805a4c82e4..b3d048d85763 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3f0a069a1d5c0ccace735e3a62c1bcef53e4c354 +refs/heads/master: e0f4258be2515afce8ef1e6fb22312525c281798 diff --git a/trunk/drivers/net/ethoc.c b/trunk/drivers/net/ethoc.c index c5a2fe099a8d..9ea3c54e1a38 100644 --- a/trunk/drivers/net/ethoc.c +++ b/trunk/drivers/net/ethoc.c @@ -19,6 +19,7 @@ #include #include #include +#include #include static int buffer_size = 0x8000; /* 32 KBytes */ @@ -982,10 +983,23 @@ static int __devinit ethoc_probe(struct platform_device *pdev) /* Allow the platform setup code to pass in a MAC address. */ if (pdev->dev.platform_data) { - struct ethoc_platform_data *pdata = - (struct ethoc_platform_data *)pdev->dev.platform_data; + struct ethoc_platform_data *pdata = pdev->dev.platform_data; memcpy(netdev->dev_addr, pdata->hwaddr, IFHWADDRLEN); priv->phy_id = pdata->phy_id; + } else { + priv->phy_id = -1; + +#ifdef CONFIG_OF + { + const uint8_t* mac; + + mac = of_get_property(pdev->dev.of_node, + "local-mac-address", + NULL); + if (mac) + memcpy(netdev->dev_addr, mac, IFHWADDRLEN); + } +#endif } /* Check that the given MAC address is valid. If it isn't, read the @@ -1113,6 +1127,16 @@ static int ethoc_resume(struct platform_device *pdev) # define ethoc_resume NULL #endif +#ifdef CONFIG_OF +static struct of_device_id ethoc_match[] = { + { + .compatible = "opencores,ethoc", + }, + {}, +}; +MODULE_DEVICE_TABLE(of, ethoc_match); +#endif + static struct platform_driver ethoc_driver = { .probe = ethoc_probe, .remove = __devexit_p(ethoc_remove), @@ -1120,6 +1144,10 @@ static struct platform_driver ethoc_driver = { .resume = ethoc_resume, .driver = { .name = "ethoc", + .owner = THIS_MODULE, +#ifdef CONFIG_OF + .of_match_table = ethoc_match, +#endif }, };