diff --git a/target/linux/generic/patches-3.18/021-ssb_sprom.patch b/target/linux/generic/patches-3.18/021-ssb_sprom.patch
new file mode 100644
index 0000000000000000000000000000000000000000..52d8080dfeaf3cb61fcc5185a52ab78c862bdfbb
--- /dev/null
+++ b/target/linux/generic/patches-3.18/021-ssb_sprom.patch
@@ -0,0 +1,32 @@
+--- a/include/linux/ssb/ssb.h
++++ b/include/linux/ssb/ssb.h
+@@ -29,10 +29,13 @@ struct ssb_sprom {
+ 	u8 il0mac[6] __aligned(sizeof(u16));	/* MAC address for 802.11b/g */
+ 	u8 et0mac[6] __aligned(sizeof(u16));	/* MAC address for Ethernet */
+ 	u8 et1mac[6] __aligned(sizeof(u16));	/* MAC address for 802.11a */
++	u8 et2mac[6] __aligned(sizeof(u16));	/* MAC address for extra Ethernet */
+ 	u8 et0phyaddr;		/* MII address for enet0 */
+ 	u8 et1phyaddr;		/* MII address for enet1 */
++	u8 et2phyaddr;		/* MII address for enet2 */
+ 	u8 et0mdcport;		/* MDIO for enet0 */
+ 	u8 et1mdcport;		/* MDIO for enet1 */
++	u8 et2mdcport;		/* MDIO for enet2 */
+ 	u16 dev_id;		/* Device ID overriding e.g. PCI ID */
+ 	u16 board_rev;		/* Board revision number from SPROM. */
+ 	u16 board_num;		/* Board number from SPROM. */
+@@ -88,11 +91,14 @@ struct ssb_sprom {
+ 	u32 ofdm5glpo;		/* 5.2GHz OFDM power offset */
+ 	u32 ofdm5gpo;		/* 5.3GHz OFDM power offset */
+ 	u32 ofdm5ghpo;		/* 5.8GHz OFDM power offset */
++	u32 boardflags;
++	u32 boardflags2;
++	u32 boardflags3;
++	/* TODO: Switch all drivers to new u32 fields and drop below ones */
+ 	u16 boardflags_lo;	/* Board flags (bits 0-15) */
+ 	u16 boardflags_hi;	/* Board flags (bits 16-31) */
+ 	u16 boardflags2_lo;	/* Board flags (bits 32-47) */
+ 	u16 boardflags2_hi;	/* Board flags (bits 48-63) */
+-	/* TODO store board flags in a single u64 */
+ 
+ 	struct ssb_sprom_core_pwr_info core_pwr_info[4];
+ 
diff --git a/target/linux/generic/patches-4.0/021-ssb_sprom.patch b/target/linux/generic/patches-4.0/021-ssb_sprom.patch
new file mode 100644
index 0000000000000000000000000000000000000000..52d8080dfeaf3cb61fcc5185a52ab78c862bdfbb
--- /dev/null
+++ b/target/linux/generic/patches-4.0/021-ssb_sprom.patch
@@ -0,0 +1,32 @@
+--- a/include/linux/ssb/ssb.h
++++ b/include/linux/ssb/ssb.h
+@@ -29,10 +29,13 @@ struct ssb_sprom {
+ 	u8 il0mac[6] __aligned(sizeof(u16));	/* MAC address for 802.11b/g */
+ 	u8 et0mac[6] __aligned(sizeof(u16));	/* MAC address for Ethernet */
+ 	u8 et1mac[6] __aligned(sizeof(u16));	/* MAC address for 802.11a */
++	u8 et2mac[6] __aligned(sizeof(u16));	/* MAC address for extra Ethernet */
+ 	u8 et0phyaddr;		/* MII address for enet0 */
+ 	u8 et1phyaddr;		/* MII address for enet1 */
++	u8 et2phyaddr;		/* MII address for enet2 */
+ 	u8 et0mdcport;		/* MDIO for enet0 */
+ 	u8 et1mdcport;		/* MDIO for enet1 */
++	u8 et2mdcport;		/* MDIO for enet2 */
+ 	u16 dev_id;		/* Device ID overriding e.g. PCI ID */
+ 	u16 board_rev;		/* Board revision number from SPROM. */
+ 	u16 board_num;		/* Board number from SPROM. */
+@@ -88,11 +91,14 @@ struct ssb_sprom {
+ 	u32 ofdm5glpo;		/* 5.2GHz OFDM power offset */
+ 	u32 ofdm5gpo;		/* 5.3GHz OFDM power offset */
+ 	u32 ofdm5ghpo;		/* 5.8GHz OFDM power offset */
++	u32 boardflags;
++	u32 boardflags2;
++	u32 boardflags3;
++	/* TODO: Switch all drivers to new u32 fields and drop below ones */
+ 	u16 boardflags_lo;	/* Board flags (bits 0-15) */
+ 	u16 boardflags_hi;	/* Board flags (bits 16-31) */
+ 	u16 boardflags2_lo;	/* Board flags (bits 32-47) */
+ 	u16 boardflags2_hi;	/* Board flags (bits 48-63) */
+-	/* TODO store board flags in a single u64 */
+ 
+ 	struct ssb_sprom_core_pwr_info core_pwr_info[4];
+