Hi Robert, I love your patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v4.16] [cannot apply to arm-soc/for-next next-20180329] [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/Robert-Jarzmik/ARM-pxa-switch-to-DMA-slave-maps/20180402-233029 reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) drivers/mtd/nand/marvell_nand.c:2621:17: sparse: undefined identifier 'pxad_filter_fn' >> drivers/mtd/nand/marvell_nand.c:2621:17: sparse: call with no type! In file included from drivers/mtd/nand/marvell_nand.c:21:0: drivers/mtd/nand/marvell_nand.c: In function 'marvell_nfc_init_dma': drivers/mtd/nand/marvell_nand.c:2621:42: error: 'pxad_filter_fn' undeclared (first use in this function); did you mean 'dma_filter_fn'? dma_request_slave_channel_compat(mask, pxad_filter_fn, ^ include/linux/dmaengine.h:1408:46: note: in definition of macro 'dma_request_slave_channel_compat' __dma_request_slave_channel_compat(&(mask), x, y, dev, name) ^ drivers/mtd/nand/marvell_nand.c:2621:42: note: each undeclared identifier is reported only once for each function it appears in dma_request_slave_channel_compat(mask, pxad_filter_fn, ^ include/linux/dmaengine.h:1408:46: note: in definition of macro 'dma_request_slave_channel_compat' __dma_request_slave_channel_compat(&(mask), x, y, dev, name) ^ vim +2621 drivers/mtd/nand/marvell_nand.c 02f26ecf Miquel Raynal 2018-01-09 2588 02f26ecf Miquel Raynal 2018-01-09 2589 static int marvell_nfc_init_dma(struct marvell_nfc *nfc) 02f26ecf Miquel Raynal 2018-01-09 2590 { 02f26ecf Miquel Raynal 2018-01-09 2591 struct platform_device *pdev = container_of(nfc->dev, 02f26ecf Miquel Raynal 2018-01-09 2592 struct platform_device, 02f26ecf Miquel Raynal 2018-01-09 2593 dev); 02f26ecf Miquel Raynal 2018-01-09 2594 struct dma_slave_config config = {}; 02f26ecf Miquel Raynal 2018-01-09 2595 struct resource *r; 02f26ecf Miquel Raynal 2018-01-09 2596 dma_cap_mask_t mask; 02f26ecf Miquel Raynal 2018-01-09 2597 struct pxad_param param; 02f26ecf Miquel Raynal 2018-01-09 2598 int ret; 02f26ecf Miquel Raynal 2018-01-09 2599 02f26ecf Miquel Raynal 2018-01-09 2600 if (!IS_ENABLED(CONFIG_PXA_DMA)) { 02f26ecf Miquel Raynal 2018-01-09 2601 dev_warn(nfc->dev, 02f26ecf Miquel Raynal 2018-01-09 2602 "DMA not enabled in configuration\n"); 02f26ecf Miquel Raynal 2018-01-09 2603 return -ENOTSUPP; 02f26ecf Miquel Raynal 2018-01-09 2604 } 02f26ecf Miquel Raynal 2018-01-09 2605 02f26ecf Miquel Raynal 2018-01-09 2606 ret = dma_set_mask_and_coherent(nfc->dev, DMA_BIT_MASK(32)); 02f26ecf Miquel Raynal 2018-01-09 2607 if (ret) 02f26ecf Miquel Raynal 2018-01-09 2608 return ret; 02f26ecf Miquel Raynal 2018-01-09 2609 02f26ecf Miquel Raynal 2018-01-09 2610 r = platform_get_resource(pdev, IORESOURCE_DMA, 0); 02f26ecf Miquel Raynal 2018-01-09 2611 if (!r) { 02f26ecf Miquel Raynal 2018-01-09 2612 dev_err(nfc->dev, "No resource defined for data DMA\n"); 02f26ecf Miquel Raynal 2018-01-09 2613 return -ENXIO; 02f26ecf Miquel Raynal 2018-01-09 2614 } 02f26ecf Miquel Raynal 2018-01-09 2615 02f26ecf Miquel Raynal 2018-01-09 2616 param.drcmr = r->start; 02f26ecf Miquel Raynal 2018-01-09 2617 param.prio = PXAD_PRIO_LOWEST; 02f26ecf Miquel Raynal 2018-01-09 2618 dma_cap_zero(mask); 02f26ecf Miquel Raynal 2018-01-09 2619 dma_cap_set(DMA_SLAVE, mask); 02f26ecf Miquel Raynal 2018-01-09 2620 nfc->dma_chan = 02f26ecf Miquel Raynal 2018-01-09 @2621 dma_request_slave_channel_compat(mask, pxad_filter_fn, 02f26ecf Miquel Raynal 2018-01-09 2622 ¶m, nfc->dev, 02f26ecf Miquel Raynal 2018-01-09 2623 "data"); 02f26ecf Miquel Raynal 2018-01-09 2624 if (!nfc->dma_chan) { 02f26ecf Miquel Raynal 2018-01-09 2625 dev_err(nfc->dev, 02f26ecf Miquel Raynal 2018-01-09 2626 "Unable to request data DMA channel\n"); 02f26ecf Miquel Raynal 2018-01-09 2627 return -ENODEV; 02f26ecf Miquel Raynal 2018-01-09 2628 } 02f26ecf Miquel Raynal 2018-01-09 2629 02f26ecf Miquel Raynal 2018-01-09 2630 r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 02f26ecf Miquel Raynal 2018-01-09 2631 if (!r) 02f26ecf Miquel Raynal 2018-01-09 2632 return -ENXIO; 02f26ecf Miquel Raynal 2018-01-09 2633 02f26ecf Miquel Raynal 2018-01-09 2634 config.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; 02f26ecf Miquel Raynal 2018-01-09 2635 config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; 02f26ecf Miquel Raynal 2018-01-09 2636 config.src_addr = r->start + NDDB; 02f26ecf Miquel Raynal 2018-01-09 2637 config.dst_addr = r->start + NDDB; 02f26ecf Miquel Raynal 2018-01-09 2638 config.src_maxburst = 32; 02f26ecf Miquel Raynal 2018-01-09 2639 config.dst_maxburst = 32; 02f26ecf Miquel Raynal 2018-01-09 2640 ret = dmaengine_slave_config(nfc->dma_chan, &config); 02f26ecf Miquel Raynal 2018-01-09 2641 if (ret < 0) { 02f26ecf Miquel Raynal 2018-01-09 2642 dev_err(nfc->dev, "Failed to configure DMA channel\n"); 02f26ecf Miquel Raynal 2018-01-09 2643 return ret; 02f26ecf Miquel Raynal 2018-01-09 2644 } 02f26ecf Miquel Raynal 2018-01-09 2645 02f26ecf Miquel Raynal 2018-01-09 2646 /* 02f26ecf Miquel Raynal 2018-01-09 2647 * DMA must act on length multiple of 32 and this length may be 02f26ecf Miquel Raynal 2018-01-09 2648 * bigger than the destination buffer. Use this buffer instead 02f26ecf Miquel Raynal 2018-01-09 2649 * for DMA transfers and then copy the desired amount of data to 02f26ecf Miquel Raynal 2018-01-09 2650 * the provided buffer. 02f26ecf Miquel Raynal 2018-01-09 2651 */ c495a927 Miquel Raynal 2018-01-19 2652 nfc->dma_buf = kmalloc(MAX_CHUNK_SIZE, GFP_KERNEL | GFP_DMA); 02f26ecf Miquel Raynal 2018-01-09 2653 if (!nfc->dma_buf) 02f26ecf Miquel Raynal 2018-01-09 2654 return -ENOMEM; 02f26ecf Miquel Raynal 2018-01-09 2655 02f26ecf Miquel Raynal 2018-01-09 2656 nfc->use_dma = true; 02f26ecf Miquel Raynal 2018-01-09 2657 02f26ecf Miquel Raynal 2018-01-09 2658 return 0; 02f26ecf Miquel Raynal 2018-01-09 2659 } 02f26ecf Miquel Raynal 2018-01-09 2660 :::::: The code at line 2621 was first introduced by commit :::::: 02f26ecf8c772751d4b24744d487f6b1b20e75d4 mtd: nand: add reworked Marvell NAND controller driver :::::: TO: Miquel Raynal <miquel.raynal@xxxxxxxxxxxxxxxxxx> :::::: CC: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation