[kernel] r11049 - in dists/trunk/linux-2.6/debian: . patches/bugfix/arm patches/series

Martin Michlmayr tbm at alioth.debian.org
Sat Apr 5 15:45:51 UTC 2008


Author: tbm
Date: Sat Apr  5 15:45:15 2008
New Revision: 11049

Log:
Add patch to set the MAC address on QNAP TS-109/TS-209.


Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/arm/ts209-set-mac.patch
Modified:
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/patches/series/1~experimental.1

Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	(original)
+++ dists/trunk/linux-2.6/debian/changelog	Sat Apr  5 15:45:15 2008
@@ -51,6 +51,7 @@
     enable NFSv4. (closes: #471007)
   * [mips/r5k-ip32] Enable R8169, requested by Giuseppe Sacco.
   * [arm/iop32x] Enable MACH_EM7210. (closes: #473136)
+  [ [arm/armel] Add patch to set the MAC address on QNAP TS-109/TS-209.
 
   [ Daniel Baumann ]
   * Added patch from unionfs upstream to export release_open_intent symbol.

Added: dists/trunk/linux-2.6/debian/patches/bugfix/arm/ts209-set-mac.patch
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/arm/ts209-set-mac.patch	Sat Apr  5 15:45:15 2008
@@ -0,0 +1,102 @@
+Will be in 2.6.26
+
+diff --git a/arch/arm/mach-orion/ts209-setup.c b/arch/arm/mach-orion/ts209-setup.c
+index 45764da..6d3d900 100644
+--- a/arch/arm/mach-orion/ts209-setup.c
++++ b/arch/arm/mach-orion/ts209-setup.c
+@@ -189,6 +189,87 @@ static struct mv643xx_eth_platform_data qnap_ts209_eth_data = {
+ 	.force_phy_addr = 1,
+ };
+ 
++static int __init parse_hex_nibble(char n)
++{
++	if (n >= '0' && n <= '9')
++		return n - '0';
++
++	if (n >= 'A' && n <= 'F')
++		return n - 'A' + 10;
++
++	if (n >= 'a' && n <= 'f')
++		return n - 'a' + 10;
++
++	return -1;
++}
++
++static int __init parse_hex_byte(const char *b)
++{
++	int hi;
++	int lo;
++
++	hi = parse_hex_nibble(b[0]);
++	lo = parse_hex_nibble(b[1]);
++
++	if (hi < 0 || lo < 0)
++		return -1;
++
++	return (hi << 4) | lo;
++}
++
++static int __init check_mac_addr(const char *addr_str)
++{
++	u_int8_t addr[6];
++	int i;
++
++	for (i = 0; i < 6; i++) {
++		int byte;
++
++		/*
++		 * Enforce "xx:xx:xx:xx:xx:xx\n" format.
++		 */
++		if (addr_str[(i * 3) + 2] != ((i < 5) ? ':' : '\n'))
++			return -1;
++
++		byte = parse_hex_byte(addr_str + (i * 3));
++		if (byte < 0)
++			return -1;
++		addr[i] = byte;
++	}
++
++	printk(KERN_INFO "ts209: found ethernet mac address ");
++	for (i = 0; i < 6; i++)
++		printk("%.2x%s", addr[i], (i < 5) ? ":" : ".\n");
++
++	memcpy(qnap_ts209_eth_data.mac_addr, addr, 6);
++
++	return 0;
++}
++
++/*
++ * The 'NAS Config' flash partition has an ext2 filesystem which
++ * contains a file that has the ethernet MAC address in plain text
++ * (format "xx:xx:xx:xx:xx:xx\n".)
++ */
++static void __init ts209_find_mac_addr(void)
++{
++	unsigned long addr;
++
++	for (addr = 0x00700000; addr < 0x00760000; addr += 1024) {
++		char *nor_page;
++		int ret = 0;
++
++		nor_page = ioremap(QNAP_TS209_NOR_BOOT_BASE + addr, 1024);
++		if (nor_page != NULL) {
++			ret = check_mac_addr(nor_page);
++			iounmap(nor_page);
++		}
++
++		if (ret == 0)
++			break;
++	}
++}
++
+ /*****************************************************************************
+  * RTC S35390A on I2C bus
+  ****************************************************************************/
+@@ -344,6 +425,7 @@ static void __init qnap_ts209_init(void)
+ 		pr_warning("qnap_ts209_init: failed to get RTC IRQ\n");
+ 	i2c_register_board_info(0, &qnap_ts209_i2c_rtc, 1);
+ 
++	ts209_find_mac_addr();
+ 	orion_eth_init(&qnap_ts209_eth_data);
+ 	orion_sata_init(&qnap_ts209_sata_data);
+ }

Modified: dists/trunk/linux-2.6/debian/patches/series/1~experimental.1
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/1~experimental.1	(original)
+++ dists/trunk/linux-2.6/debian/patches/series/1~experimental.1	Sat Apr  5 15:45:15 2008
@@ -19,6 +19,7 @@
 + bugfix/powerpc/serial.patch
 + bugfix/mips/tulip_mwi_fix.patch
 + features/arm/ixp4xx-net-drivers.patch
++ bugfix/arm/ts209-set-mac.patch
 + bugfix/sparc/drivers_net-broken.patch
 + bugfix/ia64/hardcode-arch-script-output.patch
 + bugfix/mips/disable-advansys.patch



More information about the Kernel-svn-changes mailing list