Hi Eric, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on slave-dma/next] [also build test WARNING on next-20180504] [cannot apply to linus/master v4.17-rc3] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Baolin-Wang/dmaengine-sprd-Optimize-the-sprd_dma_prep_dma_memcpy/20180505-071137 base: https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/slave-dma.git next reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) >> drivers/dma/sprd-dma.c:780:57: sparse: mixing different enum types drivers/dma/sprd-dma.c:780:57: int enum dma_slave_buswidth versus drivers/dma/sprd-dma.c:780:57: int enum sprd_dma_datawidth drivers/dma/sprd-dma.c:787:57: sparse: mixing different enum types drivers/dma/sprd-dma.c:787:57: int enum dma_slave_buswidth versus drivers/dma/sprd-dma.c:787:57: int enum sprd_dma_datawidth vim +780 drivers/dma/sprd-dma.c 755 756 static struct dma_async_tx_descriptor * 757 sprd_dma_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, 758 unsigned int sglen, enum dma_transfer_direction dir, 759 unsigned long flags, void *context) 760 { 761 struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); 762 struct sprd_dma_config *slave_cfg = &schan->slave_cfg; 763 struct sprd_dma_desc *sdesc; 764 struct scatterlist *sg; 765 int ret, i; 766 767 /* TODO: now we only support one sg for each DMA configuration. */ 768 if (!is_slave_direction(dir) || sglen > 1) 769 return NULL; 770 771 sdesc = kzalloc(sizeof(*sdesc), GFP_NOWAIT); 772 if (!sdesc) 773 return NULL; 774 775 for_each_sg(sgl, sg, sglen, i) { 776 if (dir == DMA_MEM_TO_DEV) { 777 slave_cfg->src_addr = sg_dma_address(sg); 778 slave_cfg->dst_addr = slave_cfg->cfg.dst_addr; 779 slave_cfg->src_step = > 780 sprd_dma_get_step(slave_cfg->cfg.src_addr_width); 781 slave_cfg->dst_step = SPRD_DMA_NONE_STEP; 782 } else { 783 slave_cfg->src_addr = slave_cfg->cfg.src_addr; 784 slave_cfg->dst_addr = sg_dma_address(sg); 785 slave_cfg->src_step = SPRD_DMA_NONE_STEP; 786 slave_cfg->dst_step = 787 sprd_dma_get_step(slave_cfg->cfg.dst_addr_width); 788 } 789 790 slave_cfg->block_len = sg_dma_len(sg); 791 slave_cfg->transcation_len = sg_dma_len(sg); 792 } 793 794 slave_cfg->req_mode = 795 (flags >> SPRD_DMA_REQ_SHIFT) & SPRD_DMA_REQ_MODE_MASK; 796 slave_cfg->int_mode = flags & SPRD_DMA_INT_MASK; 797 798 ret = sprd_dma_config(chan, sdesc, slave_cfg); 799 if (ret) { 800 kfree(sdesc); 801 return NULL; 802 } 803 804 return vchan_tx_prep(&schan->vc, &sdesc->vd, flags); 805 } 806 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html