powerpc: Add coherent_dma_mask to mv64x60 devices
authorCorey Minyard <cminyard@mvista.com>
Wed, 3 Feb 2010 05:08:17 +0000 (05:08 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 17 Feb 2010 03:02:47 +0000 (14:02 +1100)
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>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/sysdev/mv64x60_dev.c

index b6bd775d2e222d765e5bbad2e986c5d9ac19def3..31acd3b1718b8f09be498fd2a15d82aa72464ca5 100644 (file)
@@ -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_setup(struct device_node *np, int id)
        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_setup(struct device_node *np, int id,
        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;