]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/arm/plat-samsung/dma-ops.c
Merge branch 'for-linus' of git://selinuxproject.org/~jmorris/linux-security
[karo-tx-linux.git] / arch / arm / plat-samsung / dma-ops.c
index 93a994a5dd8f546c53ea2d80af751336d0f84184..2cded872f22b3debd634282a408d67169ceff981 100644 (file)
 
 #include <mach/dma.h>
 
-static inline bool pl330_filter(struct dma_chan *chan, void *param)
-{
-       struct dma_pl330_peri *peri = chan->private;
-       return peri->peri_id == (unsigned)param;
-}
-
 static unsigned samsung_dmadev_request(enum dma_ch dma_ch,
                                struct samsung_dma_info *info)
 {
        struct dma_chan *chan;
        dma_cap_mask_t mask;
        struct dma_slave_config slave_config;
+       void *filter_param;
 
        dma_cap_zero(mask);
        dma_cap_set(info->cap, mask);
 
-       chan = dma_request_channel(mask, pl330_filter, (void *)dma_ch);
+       /*
+        * If a dma channel property of a device node from device tree is
+        * specified, use that as the fliter parameter.
+        */
+       filter_param = (dma_ch == DMACH_DT_PROP) ? (void *)info->dt_dmach_prop :
+                               (void *)dma_ch;
+       chan = dma_request_channel(mask, pl330_filter, filter_param);
 
        if (info->direction == DMA_FROM_DEVICE) {
                memset(&slave_config, 0, sizeof(struct dma_slave_config));