diff options
Diffstat (limited to 'drivers/net/ethernet/micrel/ks8851_mll.c')
| -rw-r--r-- | drivers/net/ethernet/micrel/ks8851_mll.c | 25 |
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); |
