diff options
author | Vinod Koul <vinod.koul@intel.com> | 2013-09-02 08:10:40 -0400 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2013-09-02 08:10:40 -0400 |
commit | 355cdafe14d72c616dc804a756f3af4f4df4fe8c (patch) | |
tree | 592ef60b65da9a539daa84f5d1cf52cf483b362b /drivers/dma | |
parent | 4770ee44359ad454992d544cf14f8d330a93f5ca (diff) | |
parent | ca38ff133eb85b64e62b508a7726ea0247edd359 (diff) |
Merge branch 'topic/api_caps' into for-linus
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/pl330.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index cfd2d703fcb5..36ed30116ee0 100644 --- a/drivers/dma/pl330.c +++ b/drivers/dma/pl330.c | |||
@@ -2870,6 +2870,32 @@ static irqreturn_t pl330_irq_handler(int irq, void *data) | |||
2870 | return IRQ_NONE; | 2870 | return IRQ_NONE; |
2871 | } | 2871 | } |
2872 | 2872 | ||
2873 | #define PL330_DMA_BUSWIDTHS \ | ||
2874 | BIT(DMA_SLAVE_BUSWIDTH_UNDEFINED) | \ | ||
2875 | BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | \ | ||
2876 | BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | \ | ||
2877 | BIT(DMA_SLAVE_BUSWIDTH_4_BYTES) | \ | ||
2878 | BIT(DMA_SLAVE_BUSWIDTH_8_BYTES) | ||
2879 | |||
2880 | static int pl330_dma_device_slave_caps(struct dma_chan *dchan, | ||
2881 | struct dma_slave_caps *caps) | ||
2882 | { | ||
2883 | caps->src_addr_widths = PL330_DMA_BUSWIDTHS; | ||
2884 | caps->dstn_addr_widths = PL330_DMA_BUSWIDTHS; | ||
2885 | caps->directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); | ||
2886 | caps->cmd_pause = false; | ||
2887 | caps->cmd_terminate = true; | ||
2888 | |||
2889 | /* | ||
2890 | * This is the limit for transfers with a buswidth of 1, larger | ||
2891 | * buswidths will have larger limits. | ||
2892 | */ | ||
2893 | caps->max_sg_len = 1900800; | ||
2894 | caps->max_sg_nr = 0; | ||
2895 | |||
2896 | return 0; | ||
2897 | } | ||
2898 | |||
2873 | static int | 2899 | static int |
2874 | pl330_probe(struct amba_device *adev, const struct amba_id *id) | 2900 | pl330_probe(struct amba_device *adev, const struct amba_id *id) |
2875 | { | 2901 | { |
@@ -2975,6 +3001,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) | |||
2975 | pd->device_prep_slave_sg = pl330_prep_slave_sg; | 3001 | pd->device_prep_slave_sg = pl330_prep_slave_sg; |
2976 | pd->device_control = pl330_control; | 3002 | pd->device_control = pl330_control; |
2977 | pd->device_issue_pending = pl330_issue_pending; | 3003 | pd->device_issue_pending = pl330_issue_pending; |
3004 | pd->device_slave_caps = pl330_dma_device_slave_caps; | ||
2978 | 3005 | ||
2979 | ret = dma_async_device_register(pd); | 3006 | ret = dma_async_device_register(pd); |
2980 | if (ret) { | 3007 | if (ret) { |