From: Corey Minyard <cminy...@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 <cminy...@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); _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev