diff -x entries -rcN trunk/package/broadcom-diag/src/diag.c trunk.brcm4716/package/broadcom-diag/src/diag.c
*** trunk/package/broadcom-diag/src/diag.c	2011-02-13 10:47:37.000000000 -0800
--- trunk.brcm4716/package/broadcom-diag/src/diag.c	2011-02-13 01:00:11.000000000 -0800
***************
*** 59,64 ****
--- 59,66 ----
  	WRT600N,
  	WRT600NV11,
  	WRT610N,
+ 	WRT610NV2,
+ 	E3000V1,
  
  	/* ASUS */
  	WLHDD,
***************
*** 364,369 ****
--- 366,399 ----
  			{ .name = "ses_blue",   .gpio = 1 << 9,  .polarity = REVERSE }, // WiFi protected setup LED blue
  		},
  	},
+ 	[WRT610NV2] = {
+ 		.name		= "Linksys WRT610N V2",
+ 		.buttons	= {
+ 			{ .name = "reset",	.gpio = 1 << 6 },
+ 			{ .name = "ses",	.gpio = 1 << 4 },
+ 		},
+ 		.leds		= {
+ 			{ .name = "power",	.gpio = 1 << 5,	.polarity = NORMAL },	// Power LED
+ 			{ .name = "usb",	.gpio = 1 << 7,	.polarity = NORMAL },	// USB LED
+ 			{ .name = "ses_amber",	.gpio = 1 << 0,	.polarity = REVERSE },	// WiFi protected setup LED amber
+ 			{ .name = "ses_blue",	.gpio = 1 << 3,	.polarity = REVERSE },	// WiFi protected setup LED blue
+ 			{ .name = "wlan",	.gpio = 1 << 1,	.polarity = NORMAL },	// Wireless LED
+ 		},
+ 	},
+ 	[E3000V1] = {
+ 		.name		= "Linksys E3000 V1",
+ 		.buttons	= {
+ 			{ .name = "reset",	.gpio = 1 << 6 },
+ 			{ .name = "ses",	.gpio = 1 << 4 },
+ 		},
+ 		.leds		= {
+ 			{ .name = "power",	.gpio = 1 << 5,	.polarity = NORMAL },	// Power LED
+ 			{ .name = "usb",	.gpio = 1 << 7,	.polarity = NORMAL },	// USB LED
+ 			{ .name = "ses_amber",	.gpio = 1 << 0,	.polarity = REVERSE },	// WiFi protected setup LED amber
+ 			{ .name = "ses_blue",	.gpio = 1 << 3,	.polarity = REVERSE },	// WiFi protected setup LED blue
+ 			{ .name = "wlan",	.gpio = 1 << 1,	.polarity = NORMAL },	// Wireless LED
+ 		},
+ 	},
  	/* Asus */
  	[WLHDD] = {
  		.name		= "ASUS WL-HDD",
***************
*** 1013,1018 ****
--- 1043,1061 ----
  			return &platforms[WRT600N];
  	}
  
+ 	/*
+ 	// Normally, these would go inside the "CFE based - newer hardware" block below; however, during early init, the
+ 	// "pmon_ver" variable is not available on the E3000v1 (and probably the WRT610Nv2 also).  Until this is figured out,
+ 	// these will need to remain here in order for platform detection to work.
+ 	*/
+ 	if (!strcmp(boardnum, "42")) { /* Linksys */
+ 		if (!strcmp(boardtype, "0x04cf") && !strcmp(getvar("boot_hw_model"), "E300") && !strcmp(getvar("boot_hw_ver"), "1.0"))
+ 			return &platforms[E3000V1];
+ 
+ 		if (!strcmp(boardtype, "0x04cf") && !strcmp(getvar("boot_hw_model"), "WRT610N") && !strcmp(getvar("boot_hw_ver"), "2.0"))
+ 			return &platforms[WRT610NV2];
+ 	}
+ 
  	if (startswith(getvar("pmon_ver"), "CFE")) {
  		/* CFE based - newer hardware */
  		if (!strcmp(boardnum, "42")) { /* Linksys */
diff -x entries -rcN trunk/package/broadcom-wl/patches/911-ssb-broadcom2.patch trunk.brcm4716/package/broadcom-wl/patches/911-ssb-broadcom2.patch
*** trunk/package/broadcom-wl/patches/911-ssb-broadcom2.patch	1969-12-31 16:00:00.000000000 -0800
--- trunk.brcm4716/package/broadcom-wl/patches/911-ssb-broadcom2.patch	2010-12-10 00:36:37.000000000 -0800
***************
*** 0 ****
--- 1,15 ----
+ --- a/driver/wl_linux.c	2010-12-08 21:08:52.000000000 -0800
+ +++ b/driver/wl_linux.c	2010-12-09 01:41:57.000000000 -0800
+ @@ -1034,10 +1034,12 @@
+  
+  static const struct ssb_device_id wl_ssb_tbl[] = {
+  	SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, SSB_ANY_REV),
+ +	SSB_DEVICE(SSB_VENDOR_BROADCOM2, SSB_DEV_80211, SSB_ANY_REV),
+  	SSB_DEVTABLE_END
+  };
+  
+  #ifdef CONFIG_SSB
+ +MODULE_DEVICE_TABLE(ssb, wl_ssb_tbl);
+  static struct ssb_driver wl_ssb_driver = {
+  	.name	= KBUILD_MODNAME,
+  	.id_table = wl_ssb_tbl,
