Search
SailfishOS Open Build Service
>
Projects
>
home:sledge
:
beagle
>
kernel-adaptation-dm3730
> 0008-smsc911x-using-MAC-address-from-kernel-commandline.patch
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File 0008-smsc911x-using-MAC-address-from-kernel-commandline.patch of Package kernel-adaptation-dm3730
From c4f000886592637158bfb9eab5810362879a6318 Mon Sep 17 00:00:00 2001 From: MediStream-Devel-VM <info@berlinux-solutions.de> Date: Mon, 6 Aug 2012 11:20:12 +0200 Subject: [PATCH 8/9] smsc911x: -using MAC address from kernel commandline --- drivers/net/ethernet/smsc/smsc911x.c | 26 ++++++++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-) diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c index cd3defb..30e14e6 100644 --- a/drivers/net/ethernet/smsc/smsc911x.c +++ b/drivers/net/ethernet/smsc/smsc911x.c @@ -2110,6 +2110,7 @@ static int __devinit smsc911x_init(struct net_device *dev) (unsigned long)pdata->ioaddr); SMSC_TRACE(pdata, probe, "IRQ: %d", dev->irq); SMSC_TRACE(pdata, probe, "PHY will be autodetected."); + SMSC_TRACE(pdata, probe, "BITS: %d", (pdata->config.flags & SMSC911X_USE_32BIT ? 32 : 16)); spin_lock_init(&pdata->dev_lock); spin_lock_init(&pdata->mac_lock); @@ -2480,11 +2481,36 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev) SMSC_TRACE(pdata, probe, "Mac Address is read from LAN911x EEPROM"); } else { +#ifdef CONFIG_MACH_MEDISTREAM /* NO EEPROM, PASS MAC ADDRESS */ + char *ptr = NULL; + char *ptr_end; + char ethaddr[18]; + int i; + u8 addr[6]; + + pr_info("%s: get mac from cmd line.\n", SMSC_CHIPNAME); + ptr = strstr(boot_command_line, "ethaddr="); + if(ptr) { + memcpy(ethaddr, ptr + 8, 17 * sizeof(char)); + } else { + strncpy(ethaddr, "f8:dc:7a:00:00:00", sizeof(ethaddr)); + } + printk(KERN_ERR "ethaddr parsed from commandline: %s\n", ethaddr); + ptr_end = ethaddr; + for (i = 0; i <= 5; i++) { + addr[i] = simple_strtol(ptr_end, &ptr_end, 16) | + simple_strtol(ptr_end, &ptr_end, 16) << 4; + ptr_end++; /* skip ":" in ethaddr */ + } + memcpy(dev->dev_addr, addr, sizeof(addr)); + smsc911x_set_hw_mac_address(pdata, dev->dev_addr); +#else /* #ifdef CONFIG_MACH_VAR_SOM_OM3X */ /* eeprom values are invalid, generate random MAC */ eth_hw_addr_random(dev); smsc911x_set_hw_mac_address(pdata, dev->dev_addr); SMSC_TRACE(pdata, probe, "MAC Address is set to random_ether_addr"); +#endif } } -- 1.7.5.4