powerpc: Add coherent_dma_mask to mv64x60 devices

Submitted by Corey Minyard on Feb. 3, 2010, 3:08 p.m.

Details

Message ID 20100203150817.GA13461@minyard.local
State Accepted, archived
Commit e0508b1516ad4423499d4118a9037ae0aa4e9c2f
Delegated to: Benjamin Herrenschmidt
Headers show

Commit Message

Corey Minyard Feb. 3, 2010, 3:08 p.m.
From: Corey Minyard <cminyard@mvista.com>

DMA ops requires that coherent_dma_mask be set properly for a device,
but this was not being done for devices on the MV64x60 that use DMA.
Both the serial and ethernet devices need this or they won't be able
to allocate memory.

Signed-off-by: Corey Minyard <cminyard@mvista.com>
---
Mark Greer pointed me to the right place, I believe this is the
correct way to handle the problem.

Patch hide | download patch | download mbox

Index: linux-2.6/arch/powerpc/sysdev/mv64x60_dev.c
===================================================================
--- linux-2.6.orig/arch/powerpc/sysdev/mv64x60_dev.c
+++ linux-2.6/arch/powerpc/sysdev/mv64x60_dev.c
@@ -16,6 +16,7 @@ 
 #include <linux/mv643xx.h>
 #include <linux/platform_device.h>
 #include <linux/of_platform.h>
+#include <linux/dma-mapping.h>
 
 #include <asm/prom.h>
 
@@ -189,6 +190,7 @@  static int __init mv64x60_mpsc_device_se
 	pdev = platform_device_alloc(MPSC_CTLR_NAME, port_number);
 	if (!pdev)
 		return -ENOMEM;
+	pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
 
 	err = platform_device_add_resources(pdev, r, 5);
 	if (err)
@@ -302,6 +304,7 @@  static int __init mv64x60_eth_device_set
 	if (!pdev)
 		return -ENOMEM;
 
+	pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
 	err = platform_device_add_resources(pdev, r, 1);
 	if (err)
 		goto error;