diff options
| -rw-r--r-- | arch/arm/plat-samsung/dma-ops.c | 9 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/include/plat/dma-ops.h | 1 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/include/plat/dma-pl330.h | 3 |
3 files changed, 11 insertions, 2 deletions
diff --git a/arch/arm/plat-samsung/dma-ops.c b/arch/arm/plat-samsung/dma-ops.c index 889c2c22325e..2cded872f22b 100644 --- a/arch/arm/plat-samsung/dma-ops.c +++ b/arch/arm/plat-samsung/dma-ops.c | |||
| @@ -24,11 +24,18 @@ static unsigned samsung_dmadev_request(enum dma_ch dma_ch, | |||
| 24 | struct dma_chan *chan; | 24 | struct dma_chan *chan; |
| 25 | dma_cap_mask_t mask; | 25 | dma_cap_mask_t mask; |
| 26 | struct dma_slave_config slave_config; | 26 | struct dma_slave_config slave_config; |
| 27 | void *filter_param; | ||
| 27 | 28 | ||
| 28 | dma_cap_zero(mask); | 29 | dma_cap_zero(mask); |
| 29 | dma_cap_set(info->cap, mask); | 30 | dma_cap_set(info->cap, mask); |
| 30 | 31 | ||
| 31 | chan = dma_request_channel(mask, pl330_filter, (void *)dma_ch); | 32 | /* |
| 33 | * If a dma channel property of a device node from device tree is | ||
| 34 | * specified, use that as the fliter parameter. | ||
| 35 | */ | ||
| 36 | filter_param = (dma_ch == DMACH_DT_PROP) ? (void *)info->dt_dmach_prop : | ||
| 37 | (void *)dma_ch; | ||
| 38 | chan = dma_request_channel(mask, pl330_filter, filter_param); | ||
| 32 | 39 | ||
| 33 | if (info->direction == DMA_FROM_DEVICE) { | 40 | if (info->direction == DMA_FROM_DEVICE) { |
| 34 | memset(&slave_config, 0, sizeof(struct dma_slave_config)); | 41 | memset(&slave_config, 0, sizeof(struct dma_slave_config)); |
diff --git a/arch/arm/plat-samsung/include/plat/dma-ops.h b/arch/arm/plat-samsung/include/plat/dma-ops.h index 4c1a363526cf..22eafc310bd7 100644 --- a/arch/arm/plat-samsung/include/plat/dma-ops.h +++ b/arch/arm/plat-samsung/include/plat/dma-ops.h | |||
| @@ -31,6 +31,7 @@ struct samsung_dma_info { | |||
| 31 | enum dma_slave_buswidth width; | 31 | enum dma_slave_buswidth width; |
| 32 | dma_addr_t fifo; | 32 | dma_addr_t fifo; |
| 33 | struct s3c2410_dma_client *client; | 33 | struct s3c2410_dma_client *client; |
| 34 | struct property *dt_dmach_prop; | ||
| 34 | }; | 35 | }; |
| 35 | 36 | ||
| 36 | struct samsung_dma_ops { | 37 | struct samsung_dma_ops { |
diff --git a/arch/arm/plat-samsung/include/plat/dma-pl330.h b/arch/arm/plat-samsung/include/plat/dma-pl330.h index 2e55e5958674..c5eaad529de5 100644 --- a/arch/arm/plat-samsung/include/plat/dma-pl330.h +++ b/arch/arm/plat-samsung/include/plat/dma-pl330.h | |||
| @@ -21,7 +21,8 @@ | |||
| 21 | * use these just as IDs. | 21 | * use these just as IDs. |
| 22 | */ | 22 | */ |
| 23 | enum dma_ch { | 23 | enum dma_ch { |
| 24 | DMACH_UART0_RX, | 24 | DMACH_DT_PROP = -1, |
| 25 | DMACH_UART0_RX = 0, | ||
| 25 | DMACH_UART0_TX, | 26 | DMACH_UART0_TX, |
| 26 | DMACH_UART1_RX, | 27 | DMACH_UART1_RX, |
| 27 | DMACH_UART1_TX, | 28 | DMACH_UART1_TX, |
