aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/micrel/ks8851_mll.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/micrel/ks8851_mll.c')
-rw-r--r--drivers/net/ethernet/micrel/ks8851_mll.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/drivers/net/ethernet/micrel/ks8851_mll.c b/drivers/net/ethernet/micrel/ks8851_mll.c
index 5ffde23ac8fb..70bd329882c6 100644
--- a/drivers/net/ethernet/micrel/ks8851_mll.c
+++ b/drivers/net/ethernet/micrel/ks8851_mll.c
@@ -35,7 +35,7 @@
35#include <linux/platform_device.h> 35#include <linux/platform_device.h>
36#include <linux/delay.h> 36#include <linux/delay.h>
37#include <linux/slab.h> 37#include <linux/slab.h>
38#include <asm/io.h> 38#include <linux/ks8851_mll.h>
39 39
40#define DRV_NAME "ks8851_mll" 40#define DRV_NAME "ks8851_mll"
41 41
@@ -1515,6 +1515,7 @@ static int __devinit ks8851_probe(struct platform_device *pdev)
1515 struct net_device *netdev; 1515 struct net_device *netdev;
1516 struct ks_net *ks; 1516 struct ks_net *ks;
1517 u16 id, data; 1517 u16 id, data;
1518 struct ks8851_mll_platform_data *pdata;
1518 1519
1519 io_d = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1520 io_d = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1520 io_c = platform_get_resource(pdev, IORESOURCE_MEM, 1); 1521 io_c = platform_get_resource(pdev, IORESOURCE_MEM, 1);
@@ -1596,17 +1597,27 @@ static int __devinit ks8851_probe(struct platform_device *pdev)
1596 ks_disable_qmu(ks); 1597 ks_disable_qmu(ks);
1597 ks_setup(ks); 1598 ks_setup(ks);
1598 ks_setup_int(ks); 1599 ks_setup_int(ks);
1599 memcpy(netdev->dev_addr, ks->mac_addr, 6);
1600 1600
1601 data = ks_rdreg16(ks, KS_OBCR); 1601 data = ks_rdreg16(ks, KS_OBCR);
1602 ks_wrreg16(ks, KS_OBCR, data | OBCR_ODS_16MA); 1602 ks_wrreg16(ks, KS_OBCR, data | OBCR_ODS_16MA);
1603 1603
1604 /** 1604 /* overwriting the default MAC address */
1605 * If you want to use the default MAC addr, 1605 pdata = pdev->dev.platform_data;
1606 * comment out the 2 functions below. 1606 if (!pdata) {
1607 */ 1607 netdev_err(netdev, "No platform data\n");
1608 err = -ENODEV;
1609 goto err_register;
1610 }
1611 memcpy(ks->mac_addr, pdata->mac_addr, 6);
1612 if (!is_valid_ether_addr(ks->mac_addr)) {
1613 /* Use random MAC address if none passed */
1614 random_ether_addr(ks->mac_addr);
1615 netdev_info(netdev, "Using random mac address\n");
1616 }
1617 netdev_info(netdev, "Mac address is: %pM\n", ks->mac_addr);
1618
1619 memcpy(netdev->dev_addr, ks->mac_addr, 6);
1608 1620
1609 random_ether_addr(netdev->dev_addr);
1610 ks_set_mac(ks, netdev->dev_addr); 1621 ks_set_mac(ks, netdev->dev_addr);
1611 1622
1612 id = ks_rdreg16(ks, KS_CIDER); 1623 id = ks_rdreg16(ks, KS_CIDER);