Index: target/linux/brcm47xx/patches-2.6.32/950-sbb-sysfs-files.patch
===================================================================
--- target/linux/brcm47xx/patches-2.6.32/950-sbb-sysfs-files.patch	(revision 0)
+++ target/linux/brcm47xx/patches-2.6.32/950-sbb-sysfs-files.patch	(revision 0)
@@ -0,0 +1,47 @@
+Index: linux-2.6.32.9/drivers/ssb/main.c
+===================================================================
+--- linux-2.6.32.9.orig/drivers/ssb/main.c	2010-04-14 10:08:18.000000000 +0200
++++ linux-2.6.32.9/drivers/ssb/main.c	2010-04-14 10:25:20.845334436 +0200
+@@ -380,6 +380,34 @@
+ 			     ssb_dev->id.revision);
+ }
+ 
++#define ssb_config_attr(attrib, field, format_string)					\
++static ssize_t													\
++attrib##_show(struct device *dev, struct device_attribute *attr, char *buf) \
++{																\
++	return sprintf (buf, format_string, dev_to_ssb_dev(dev)->field);		\
++}
++
++ssb_config_attr(core_num, core_index, "%u\n")
++ssb_config_attr(coreid, id.coreid, "0x%04x\n")
++ssb_config_attr(vendor, id.vendor, "0x%04x\n")
++ssb_config_attr(revision, id.revision, "%u\n")
++ssb_config_attr(irq, irq, "%u\n")
++static ssize_t
++name_show(struct device *dev, struct device_attribute *attr, char *buf)
++{
++	return sprintf (buf, "%s\n", ssb_core_name(dev_to_ssb_dev(dev)->id.coreid));
++}
++
++static struct device_attribute ssb_device_attrs[] = {
++	__ATTR_RO(name),
++	__ATTR_RO(core_num),
++	__ATTR_RO(coreid),
++	__ATTR_RO(vendor),
++	__ATTR_RO(revision),
++	__ATTR_RO(irq),
++	__ATTR_NULL,
++};
++
+ static struct bus_type ssb_bustype = {
+ 	.name		= "ssb",
+ 	.match		= ssb_bus_match,
+@@ -389,6 +417,7 @@
+ 	.suspend	= ssb_device_suspend,
+ 	.resume		= ssb_device_resume,
+ 	.uevent		= ssb_device_uevent,
++	.dev_attrs	= ssb_device_attrs,
+ };
+ 
+ static void ssb_buses_lock(void)
Index: target/linux/brcm47xx/patches-2.6.32/951-brcm4716-defines.patch
===================================================================
--- target/linux/brcm47xx/patches-2.6.32/951-brcm4716-defines.patch	(revision 0)
+++ target/linux/brcm47xx/patches-2.6.32/951-brcm4716-defines.patch	(revision 0)
@@ -0,0 +1,110 @@
+Index: linux-2.6.32.9/drivers/ssb/scan.c
+===================================================================
+--- linux-2.6.32.9.orig/drivers/ssb/scan.c	2010-04-14 10:08:18.000000000 +0200
++++ linux-2.6.32.9/drivers/ssb/scan.c	2010-04-14 10:43:32.501833670 +0200
+@@ -92,6 +92,14 @@
+ 		return "ARM 1176";
+ 	case SSB_DEV_ARM_7TDMI:
+ 		return "ARM 7TDMI";
++	case SSB_DEV_ETHERNET_GBIT2:
++		return "Gigabit MAC";
++	case SSB_DEV_MIPS_74K:
++		return "MIPS 74k";
++	case SSB_DEV_DDR_CTRLR:
++		return "DDR1/2 memory controller";
++	case SSB_DEV_I2S:
++		return "I2S";
+ 	}
+ 	return "UNKNOWN";
+ }
+@@ -150,6 +158,7 @@
+ 	case 0x4710:
+ 	case 0x4610:
+ 	case 0x4704:
++	case 0x4716:
+ 		return 9;
+ 	default:
+ 		ssb_printk(KERN_ERR PFX
+Index: linux-2.6.32.9/include/linux/ssb/ssb.h
+===================================================================
+--- linux-2.6.32.9.orig/include/linux/ssb/ssb.h	2010-04-14 10:08:18.000000000 +0200
++++ linux-2.6.32.9/include/linux/ssb/ssb.h	2010-04-14 10:38:09.850468023 +0200
+@@ -151,9 +151,16 @@
+ #define SSB_DEV_MINI_MACPHY	0x823
+ #define SSB_DEV_ARM_1176	0x824
+ #define SSB_DEV_ARM_7TDMI	0x825
++#define SSB_DEV_ETHERNET_GBIT2	0x82d
++#define SSB_DEV_MIPS_74K	0x82c
++#define SSB_DEV_DDR_CTRLR	0x82e
++#define SSB_DEV_I2S			0x834
++#define SSB_DEV_DEFAULT		0xfff
+ 
+ /* Vendor-ID values */
+ #define SSB_VENDOR_BROADCOM	0x4243
++#define SSB_VENDOR_BROADCOM2 0x04BF
++#define SSB_VENDOR_ARM		0x43b
+ 
+ /* Some kernel subsystems poke with dev->drvdata, so we must use the
+  * following ugly workaround to get from struct device to struct ssb_device */
+Index: linux-2.6.32.9/include/linux/ssb/ssb_regs.h
+===================================================================
+--- linux-2.6.32.9.orig/include/linux/ssb/ssb_regs.h	2010-04-14 10:08:18.000000000 +0200
++++ linux-2.6.32.9/include/linux/ssb/ssb_regs.h	2010-04-14 10:38:00.485394234 +0200
+@@ -11,6 +11,7 @@
+ #define	SSB_SDRAM_SWAPPED	0x10000000U	/* Byteswapped Physical SDRAM */
+ #define SSB_ENUM_BASE    	0x18000000U	/* Enumeration space base */
+ #define	SSB_ENUM_LIMIT		0x18010000U	/* Enumeration space limit */
++#define SSB_AI_BASE		0x18100000		/* base for AI registers */
+ 
+ #define	SSB_FLASH2		0x1c000000U	/* Flash Region 2 (region 1 shadowed here) */
+ #define	SSB_FLASH2_SZ		0x02000000U	/* Size of Flash Region 2 */
+@@ -26,6 +27,7 @@
+ #define	SSB_EUART		(SSB_EXTIF_BASE + 0x00800000)
+ #define	SSB_LED			(SSB_EXTIF_BASE + 0x00900000)
+ 
++#define SSB_EROM_ASD_SZ_BASE 0x00001000
+ 
+ /* Enumeration space constants */
+ #define SSB_CORE_SIZE		0x1000	/* Size of a core MMIO area */
+@@ -452,5 +454,41 @@
+ #define SSB_ADM_BASE2			0xFFFF0000	/* Type2 base address for the core */
+ #define SSB_ADM_BASE2_SHIFT		16
+ 
++/***** EROM defines for AI type busses *****/
++#define SSB_EROM_VALID			1
++#define SSB_EROM_END			0xe
++#define SSB_EROM_TAG			0xe
++/* Adress Space Descriptor */
++#define SSB_EROM_ASD			0x4
++#define SSB_EROM_ASD_SP_MASK	0x00000f00
++#define SSB_EROM_ASD_SP_SHIFT	8
++#define SSB_EROM_ASD_ST_MASK	0x000000c0
++#define SSB_EROM_ASD_ST_SLAVE	0x00000000
++#define SSB_EROM_ASD_ST_BRIDGE	0x00000040
++#define SSB_EROM_ASD_ST_MWRAP	0x000000c0
++#define SSB_EROM_ASD_ST_SWRAP	0x00000080
++#define SSB_EROM_ASD_ADDR_MASK	0xfffff000
++#define SSB_EROM_ASD_AG32		0x00000008
++#define SSB_EROM_ASD_SZ_MASK	0x00000030
++#define SSB_EROM_ASD_SZ_SZD		0x00000030
++#define SSB_EROM_ASD_SZ_SHIFT	4
++#define SSB_EROM_CI				0
++#define SSB_EROM_CIA_CID_MASK	0x000fff00
++#define SSB_EROM_CIA_CID_SHIFT	8
++#define SSB_EROM_CIA_MFG_MASK	0xfff00000
++#define SSB_EROM_CIA_MFG_SHIFT	20
++#define SSB_EROM_CIB_REV_MASK	0xff000000
++#define SSB_EROM_CIB_REV_SHIFT	24
++#define SSB_EROM_CIB_NMW_MASK	0x0007c000
++#define SSB_EROM_CIB_NSW_MASK	0x00f80000
++#define SSB_EROM_CIB_NSP_MASK	0x00003e00
++
++/***** Registers of AI config space *****/
++#define SSB_AI_RESETCTRL		0x800 /* maybe 0x804 for big endian */
++#define  SSB_AI_RESETCTRL_RESET	1
++#define SSB_AI_IOCTRL			0x408 /* maybe 0x40c for big endian */
++#define SSB_CF_FGC				0x0002
++#define SSB_CF_CLOCK_EN			0x001
++#define SSB_AI_oobselouta30		0x100
+ 
+ #endif /* LINUX_SSB_REGS_H_ */
