[PATCH] mtd: nand: pxa3xx_nand: fix dmaengine initialization

Ezequiel Garcia ezequiel at vanguardiasur.com.ar
Fri Feb 26 17:51:13 PST 2016


On 12 February 2016 at 19:29, Robert Jarzmik <robert.jarzmik at free.fr> wrote:
> When the driver is initialized in a pure device-tree platform, the
> driver's probe fails allocating the dma channel :
> [  525.624435] pxa3xx-nand 43100000.nand: no resource defined for data DMA
> [  525.632088] pxa3xx-nand 43100000.nand: alloc nand resource failed
>
> The reason is that the DMA IO resource is not acquired through platform
> resources but by OF bindings.
>
> Fix this by ensuring that DMA IO resources are only queried in the non
> device-tree case.
>
> Fixes: 8f5ba31aa565 ("mtd: nand: pxa3xx-nand: switch to dmaengine")
> Signed-off-by: Robert Jarzmik <robert.jarzmik at free.fr>
> ---
>  drivers/mtd/nand/pxa3xx_nand.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
> index a168cbcc1086..afd487d4b67f 100644
> --- a/drivers/mtd/nand/pxa3xx_nand.c
> +++ b/drivers/mtd/nand/pxa3xx_nand.c
> @@ -1750,7 +1750,7 @@ static int alloc_nand_resource(struct platform_device *pdev)
>         if (ret < 0)
>                 return ret;
>
> -       if (use_dma) {
> +       if (!np && use_dma) {
>                 r = platform_get_resource(pdev, IORESOURCE_DMA, 0);
>                 if (r == NULL) {
>                         dev_err(&pdev->dev,

Looking through the kernel tree, this change seems to be correct.

However, I'm still wondering how DMA resources are obtained in the
device-tree case. Can you explain it to me?
-- 
Ezequiel García, VanguardiaSur
www.vanguardiasur.com.ar



More information about the linux-mtd mailing list