diff --git a/target/linux/generic/patches-2.6.31/942-ssb_add_dma_dev.patch b/target/linux/generic/patches-2.6.31/942-ssb_add_dma_dev.patch
new file mode 100644
index 0000000000000000000000000000000000000000..9251e2873992711ffc42dce99596e4f8d3608c18
--- /dev/null
+++ b/target/linux/generic/patches-2.6.31/942-ssb_add_dma_dev.patch
@@ -0,0 +1,29 @@
+--- a/drivers/ssb/main.c
++++ b/drivers/ssb/main.c
+@@ -461,6 +461,7 @@
+ #ifdef CONFIG_SSB_PCIHOST
+ 			sdev->irq = bus->host_pci->irq;
+ 			dev->parent = &bus->host_pci->dev;
++			sdev->dma_dev = dev->parent;
+ #endif
+ 			break;
+ 		case SSB_BUSTYPE_PCMCIA:
+@@ -473,6 +474,7 @@
+ 			break;
+ 		case SSB_BUSTYPE_SSB:
+ 			dev->dma_mask = &dev->coherent_dma_mask;
++			sdev->dma_dev = dev;
+ 			break;
+ 		}
+ 
+--- a/include/linux/ssb/ssb.h
++++ b/include/linux/ssb/ssb.h
+@@ -167,7 +167,7 @@
+ 	 * is an optimization. */
+ 	const struct ssb_bus_ops *ops;
+ 
+-	struct device *dev;
++	struct device *dev, *dma_dev;
+ 
+ 	struct ssb_bus *bus;
+ 	struct ssb_device_id id;