Re: [RFC PATCH] dma: at_xdmac: creation of the atmel eXtended DMA Controller driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 27, 2014 at 10:35:36AM +0200, Ludovic Desroches wrote:
> +static struct dma_chan *at_xdmac_xlate(struct of_phandle_args *dma_spec,
> +                                    struct of_dma *of_dma)
> +{
> +     struct at_xdmac_chan    *atchan;
> +     struct dma_chan         *chan;
> +     dma_cap_mask_t          mask;
> +     struct platform_device  *pdev = of_find_device_by_node(dma_spec->np);

No need to search through all the device nodes, you can look up the
device from of_dma->of_dma_data.

> +     if (dma_spec->args_count != 2) {
> +             dev_err(&pdev->dev, "dma phandler args: bad number of args\n");
> +             return NULL;
> +     }
> +
> +     dma_cap_zero(mask);
> +     dma_cap_set(DMA_SLAVE, mask);
> +     chan = dma_request_channel(mask, NULL, NULL);
> +     if (!chan) {
> +             dev_err(&pdev->dev, "can't get a dma channel\n");
> +             return NULL;
> +     }

You must use dma_get_any_slave_channel. dma_request_channel gives you a
channel from a random dma engine that is present in the system, not
necessarily the one you are managing here.

	Arnd
--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux