浏览代码

Merge branch 'topic/zx' into for-linus

Vinod Koul 8 年之前
父节点
当前提交
1ad651154b
共有 3 个文件被更改,包括 7 次插入5 次删除
  1. 2 2
      drivers/dma/Kconfig
  2. 1 1
      drivers/dma/Makefile
  3. 4 2
      drivers/dma/zx_dma.c

+ 2 - 2
drivers/dma/Kconfig

@@ -571,12 +571,12 @@ config XILINX_ZYNQMP_DMA
 	  Enable support for Xilinx ZynqMP DMA controller.
 	  Enable support for Xilinx ZynqMP DMA controller.
 
 
 config ZX_DMA
 config ZX_DMA
-	tristate "ZTE ZX296702 DMA support"
+	tristate "ZTE ZX DMA support"
 	depends on ARCH_ZX || COMPILE_TEST
 	depends on ARCH_ZX || COMPILE_TEST
 	select DMA_ENGINE
 	select DMA_ENGINE
 	select DMA_VIRTUAL_CHANNELS
 	select DMA_VIRTUAL_CHANNELS
 	help
 	help
-	  Support the DMA engine for ZTE ZX296702 platform devices.
+	  Support the DMA engine for ZTE ZX family platform devices.
 
 
 
 
 # driver files
 # driver files

+ 1 - 1
drivers/dma/Makefile

@@ -66,7 +66,7 @@ obj-$(CONFIG_TI_CPPI41) += cppi41.o
 obj-$(CONFIG_TI_DMA_CROSSBAR) += ti-dma-crossbar.o
 obj-$(CONFIG_TI_DMA_CROSSBAR) += ti-dma-crossbar.o
 obj-$(CONFIG_TI_EDMA) += edma.o
 obj-$(CONFIG_TI_EDMA) += edma.o
 obj-$(CONFIG_XGENE_DMA) += xgene-dma.o
 obj-$(CONFIG_XGENE_DMA) += xgene-dma.o
-obj-$(CONFIG_ZX_DMA) += zx296702_dma.o
+obj-$(CONFIG_ZX_DMA) += zx_dma.o
 obj-$(CONFIG_ST_FDMA) += st_fdma.o
 obj-$(CONFIG_ST_FDMA) += st_fdma.o
 
 
 obj-y += qcom/
 obj-y += qcom/

+ 4 - 2
drivers/dma/zx296702_dma.c → drivers/dma/zx_dma.c

@@ -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;