[PATCH] powerpc: Add DMA mask to MPSC serial and network and UART device to serial
Corey Minyard
minyard at acm.org
Sat Jan 30 11:04:07 EST 2010
From: Corey Minyard <cminyard at mvista.com>
The MPSC drivers that use DMA need to set coherent_dma_mask to allow
dma_alloc_xxx routines to work properly. Also, the mpsc serial driver
needed to set pi->port.dev to register properly. With these fixes,
the MPSC drivers seem to work again.
Signed-off-by: Corey Minyard <cminyard at mvista.com>
---
I'm not really sure about where to set the coherent_dma_mask, it seems
like a more general place would be better but I couldn't find it.
Without these, the console stops working after the switchover and
the network driver fails to allocate buffers. With these, my board
boots up and works fine.
Index: linux-2.6.31/drivers/serial/mpsc.c
===================================================================
--- linux-2.6.31.orig/drivers/serial/mpsc.c
+++ linux-2.6.31/drivers/serial/mpsc.c
@@ -2071,6 +2071,9 @@ static int mpsc_drv_probe(struct platfor
if (!(rc = mpsc_drv_map_regs(pi, dev))) {
mpsc_drv_get_platform_data(pi, dev, dev->id);
+ dev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
+ pi->port.dev = &dev->dev;
+
if (!(rc = mpsc_make_ready(pi))) {
spin_lock_init(&pi->tx_lock);
if (!(rc = uart_add_one_port(&mpsc_reg,
Index: linux-2.6.31/drivers/net/mv643xx_eth.c
===================================================================
--- linux-2.6.31.orig/drivers/net/mv643xx_eth.c
+++ linux-2.6.31/drivers/net/mv643xx_eth.c
@@ -2916,7 +2916,7 @@ static int mv643xx_eth_probe(struct plat
mp->shared = platform_get_drvdata(pd->shared);
mp->base = mp->shared->base + 0x0400 + (pd->port_number << 10);
mp->port_num = pd->port_number;
-
+ pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
mp->dev = dev;
set_params(mp, pd);
More information about the Linuxppc-dev
mailing list