|
@@ -26,7 +26,7 @@
|
|
|
|
|
|
#define DRIVER_NAME "zx-dma"
|
|
#define DRIVER_NAME "zx-dma"
|
|
#define DMA_ALIGN 4
|
|
#define DMA_ALIGN 4
|
|
-#define DMA_MAX_SIZE (0x10000 - PAGE_SIZE)
|
|
|
|
|
|
+#define DMA_MAX_SIZE (0x10000 - 512)
|
|
#define LLI_BLOCK_SIZE (4 * PAGE_SIZE)
|
|
#define LLI_BLOCK_SIZE (4 * PAGE_SIZE)
|
|
|
|
|
|
#define REG_ZX_SRC_ADDR 0x00
|
|
#define REG_ZX_SRC_ADDR 0x00
|
|
@@ -365,7 +365,8 @@ static enum dma_status zx_dma_tx_status(struct dma_chan *chan,
|
|
|
|
|
|
bytes = 0;
|
|
bytes = 0;
|
|
clli = zx_dma_get_curr_lli(p);
|
|
clli = zx_dma_get_curr_lli(p);
|
|
- index = (clli - ds->desc_hw_lli) / sizeof(struct zx_desc_hw);
|
|
|
|
|
|
+ index = (clli - ds->desc_hw_lli) /
|
|
|
|
+ sizeof(struct zx_desc_hw) + 1;
|
|
for (; index < ds->desc_num; index++) {
|
|
for (; index < ds->desc_num; index++) {
|
|
bytes += ds->desc_hw[index].src_x;
|
|
bytes += ds->desc_hw[index].src_x;
|
|
/* end of lli */
|
|
/* end of lli */
|
|
@@ -812,6 +813,7 @@ static int zx_dma_probe(struct platform_device *op)
|
|
INIT_LIST_HEAD(&d->slave.channels);
|
|
INIT_LIST_HEAD(&d->slave.channels);
|
|
dma_cap_set(DMA_SLAVE, d->slave.cap_mask);
|
|
dma_cap_set(DMA_SLAVE, d->slave.cap_mask);
|
|
dma_cap_set(DMA_MEMCPY, d->slave.cap_mask);
|
|
dma_cap_set(DMA_MEMCPY, d->slave.cap_mask);
|
|
|
|
+ dma_cap_set(DMA_CYCLIC, d->slave.cap_mask);
|
|
dma_cap_set(DMA_PRIVATE, d->slave.cap_mask);
|
|
dma_cap_set(DMA_PRIVATE, d->slave.cap_mask);
|
|
d->slave.dev = &op->dev;
|
|
d->slave.dev = &op->dev;
|
|
d->slave.device_free_chan_resources = zx_dma_free_chan_resources;
|
|
d->slave.device_free_chan_resources = zx_dma_free_chan_resources;
|