|
@@ -35,7 +35,7 @@
|
|
|
#include <linux/platform_device.h>
|
|
|
#include <linux/delay.h>
|
|
|
#include <linux/slab.h>
|
|
|
-#include <asm/io.h>
|
|
|
+#include <linux/ks8851_mll.h>
|
|
|
|
|
|
#define DRV_NAME "ks8851_mll"
|
|
|
|
|
@@ -1515,6 +1515,7 @@ static int __devinit ks8851_probe(struct platform_device *pdev)
|
|
|
struct net_device *netdev;
|
|
|
struct ks_net *ks;
|
|
|
u16 id, data;
|
|
|
+ struct ks8851_mll_platform_data *pdata;
|
|
|
|
|
|
io_d = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
|
io_c = platform_get_resource(pdev, IORESOURCE_MEM, 1);
|
|
@@ -1596,17 +1597,27 @@ static int __devinit ks8851_probe(struct platform_device *pdev)
|
|
|
ks_disable_qmu(ks);
|
|
|
ks_setup(ks);
|
|
|
ks_setup_int(ks);
|
|
|
- memcpy(netdev->dev_addr, ks->mac_addr, 6);
|
|
|
|
|
|
data = ks_rdreg16(ks, KS_OBCR);
|
|
|
ks_wrreg16(ks, KS_OBCR, data | OBCR_ODS_16MA);
|
|
|
|
|
|
- /**
|
|
|
- * If you want to use the default MAC addr,
|
|
|
- * comment out the 2 functions below.
|
|
|
- */
|
|
|
+ /* overwriting the default MAC address */
|
|
|
+ pdata = pdev->dev.platform_data;
|
|
|
+ if (!pdata) {
|
|
|
+ netdev_err(netdev, "No platform data\n");
|
|
|
+ err = -ENODEV;
|
|
|
+ goto err_register;
|
|
|
+ }
|
|
|
+ memcpy(ks->mac_addr, pdata->mac_addr, 6);
|
|
|
+ if (!is_valid_ether_addr(ks->mac_addr)) {
|
|
|
+ /* Use random MAC address if none passed */
|
|
|
+ random_ether_addr(ks->mac_addr);
|
|
|
+ netdev_info(netdev, "Using random mac address\n");
|
|
|
+ }
|
|
|
+ netdev_info(netdev, "Mac address is: %pM\n", ks->mac_addr);
|
|
|
+
|
|
|
+ memcpy(netdev->dev_addr, ks->mac_addr, 6);
|
|
|
|
|
|
- random_ether_addr(netdev->dev_addr);
|
|
|
ks_set_mac(ks, netdev->dev_addr);
|
|
|
|
|
|
id = ks_rdreg16(ks, KS_CIDER);
|