dmaengine/dw_dmac: provide a mechanism to indicate private devices
authorJamie Iles <jamie@jamieiles.com>
Fri, 21 Jan 2011 14:11:54 +0000 (14:11 +0000)
committerDan Williams <dan.j.williams@intel.com>
Sun, 30 Jan 2011 07:10:55 +0000 (23:10 -0800)
Some platforms (e.g. Picochip PC3XX) have multiple DMA controllers
where some may be used for slave transfers and others for general
purpose memcpy type transfers. Add a .is_private boolean to the
platform data structure so that controllers can be marked as private
so that the DMA_PRIVATE capability will be set for that controller.

Signed-off-by: Jamie Iles <jamie.iles@picochip.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dma/dw_dmac.c
include/linux/dw_dmac.h

index a4cf261..08dab3b 100644 (file)
@@ -1341,6 +1341,8 @@ static int __init dw_probe(struct platform_device *pdev)
 
        dma_cap_set(DMA_MEMCPY, dw->dma.cap_mask);
        dma_cap_set(DMA_SLAVE, dw->dma.cap_mask);
+       if (pdata->is_private)
+               dma_cap_set(DMA_PRIVATE, dw->dma.cap_mask);
        dw->dma.dev = &pdev->dev;
        dw->dma.device_alloc_chan_resources = dwc_alloc_chan_resources;
        dw->dma.device_free_chan_resources = dwc_free_chan_resources;
index 8014eb8..deec66b 100644 (file)
 /**
  * struct dw_dma_platform_data - Controller configuration parameters
  * @nr_channels: Number of channels supported by hardware (max 8)
+ * @is_private: The device channels should be marked as private and not for
+ *     by the general purpose DMA channel allocator.
  */
 struct dw_dma_platform_data {
        unsigned int    nr_channels;
+       bool            is_private;
 };
 
 /**