Re: [PATCH 4/4] dmaengine: fsl-edma: integrate TCD64 support for i.MX95

From: kernel test robot
Date: Fri Nov 10 2023 - 15:42:02 EST


Hi Frank,

kernel test robot noticed the following build errors:

[auto build test ERROR on next-20231109]
[also build test ERROR on linus/master v6.6]
[cannot apply to vkoul-dmaengine/next v6.6 v6.6-rc7 v6.6-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Frank-Li/dmaengine-fsl-edma-involve-help-macro-fsl_edma_set-get-_tcd/20231110-053023
base: next-20231109
patch link: https://lore.kernel.org/r/20231109212059.1894646-5-Frank.Li%40nxp.com
patch subject: [PATCH 4/4] dmaengine: fsl-edma: integrate TCD64 support for i.MX95
config: csky-allmodconfig (https://download.01.org/0day-ci/archive/20231110/202311101713.0LTPV63a-lkp@xxxxxxxxx/config)
compiler: csky-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231110/202311101713.0LTPV63a-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311101713.0LTPV63a-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

In file included from include/linux/swab.h:5,
from include/uapi/linux/byteorder/little_endian.h:14,
from include/linux/byteorder/little_endian.h:5,
from arch/csky/include/uapi/asm/byteorder.h:6,
from include/asm-generic/bitops/le.h:6,
from arch/csky/include/asm/bitops.h:77,
from include/linux/bitops.h:68,
from include/linux/log2.h:12,
from include/asm-generic/div64.h:55,
from ./arch/csky/include/generated/asm/div64.h:1,
from include/linux/math.h:6,
from include/linux/math64.h:6,
from include/linux/time.h:6,
from include/linux/stat.h:19,
from include/linux/module.h:13,
from drivers/dma/fsl-edma-main.c:12:
drivers/dma/fsl-edma-common.h: In function 'edma_readq':
>> drivers/dma/fsl-edma-common.h:344:31: error: implicit declaration of function 'readq'; did you mean 'readw'? [-Werror=implicit-function-declaration]
344 | return swab64(readq(addr));
| ^~~~~
include/uapi/linux/swab.h:128:54: note: in definition of macro '__swab64'
128 | #define __swab64(x) (__u64)__builtin_bswap64((__u64)(x))
| ^
drivers/dma/fsl-edma-common.h:344:24: note: in expansion of macro 'swab64'
344 | return swab64(readq(addr));
| ^~~~~~
In file included from drivers/dma/fsl-edma-main.c:22:
drivers/dma/fsl-edma-common.h: In function 'edma_writeq':
>> drivers/dma/fsl-edma-common.h:399:17: error: implicit declaration of function 'writeq'; did you mean 'writel'? [-Werror=implicit-function-declaration]
399 | writeq(swab64(val), addr);
| ^~~~~~
| writel
cc1: some warnings being treated as errors
--
In file included from include/linux/swab.h:5,
from include/uapi/linux/byteorder/little_endian.h:14,
from include/linux/byteorder/little_endian.h:5,
from arch/csky/include/uapi/asm/byteorder.h:6,
from include/asm-generic/bitops/le.h:6,
from arch/csky/include/asm/bitops.h:77,
from include/linux/bitops.h:68,
from include/linux/log2.h:12,
from include/asm-generic/div64.h:55,
from ./arch/csky/include/generated/asm/div64.h:1,
from include/linux/math.h:6,
from include/linux/math64.h:6,
from include/linux/time.h:6,
from include/linux/stat.h:19,
from include/linux/module.h:13,
from drivers/dma/mcf-edma-main.c:6:
drivers/dma/fsl-edma-common.h: In function 'edma_readq':
>> drivers/dma/fsl-edma-common.h:344:31: error: implicit declaration of function 'readq'; did you mean 'readw'? [-Werror=implicit-function-declaration]
344 | return swab64(readq(addr));
| ^~~~~
include/uapi/linux/swab.h:128:54: note: in definition of macro '__swab64'
128 | #define __swab64(x) (__u64)__builtin_bswap64((__u64)(x))
| ^
drivers/dma/fsl-edma-common.h:344:24: note: in expansion of macro 'swab64'
344 | return swab64(readq(addr));
| ^~~~~~
In file included from drivers/dma/mcf-edma-main.c:12:
drivers/dma/fsl-edma-common.h: In function 'edma_writeq':
>> drivers/dma/fsl-edma-common.h:399:17: error: implicit declaration of function 'writeq'; did you mean 'writel'? [-Werror=implicit-function-declaration]
399 | writeq(swab64(val), addr);
| ^~~~~~
| writel
drivers/dma/mcf-edma-main.c: In function 'mcf_edma_probe':
drivers/dma/mcf-edma-main.c:205:46: warning: dereferencing 'void *' pointer
205 | iowrite32(0x0, &mcf_chan->tcd->csr);
| ^~
drivers/dma/mcf-edma-main.c:205:46: error: request for member 'csr' in something not a structure or union
cc1: some warnings being treated as errors


vim +344 drivers/dma/fsl-edma-common.h

333
334 /*
335 * R/W functions for big- or little-endian registers:
336 * The eDMA controller's endian is independent of the CPU core's endian.
337 * For the big-endian IP module, the offset for 8-bit or 16-bit registers
338 * should also be swapped opposite to that in little-endian IP.
339 */
340 static inline u64 edma_readq(struct fsl_edma_engine *edma, void __iomem *addr)
341 {
342 /* ioread64 and ioread64be was not defined at some platform */
343 if (edma->big_endian)
> 344 return swab64(readq(addr));
345 else
346 return readq(addr);
347 }
348
349 static inline u32 edma_readl(struct fsl_edma_engine *edma, void __iomem *addr)
350 {
351 if (edma->big_endian)
352 return ioread32be(addr);
353 else
354 return ioread32(addr);
355 }
356
357 static inline u16 edma_readw(struct fsl_edma_engine *edma, void __iomem *addr)
358 {
359 if (edma->big_endian)
360 return ioread16be(addr);
361 else
362 return ioread16(addr);
363 }
364
365 static inline void edma_writeb(struct fsl_edma_engine *edma,
366 u8 val, void __iomem *addr)
367 {
368 /* swap the reg offset for these in big-endian mode */
369 if (edma->big_endian)
370 iowrite8(val, (void __iomem *)((unsigned long)addr ^ 0x3));
371 else
372 iowrite8(val, addr);
373 }
374
375 static inline void edma_writew(struct fsl_edma_engine *edma,
376 u16 val, void __iomem *addr)
377 {
378 /* swap the reg offset for these in big-endian mode */
379 if (edma->big_endian)
380 iowrite16be(val, (void __iomem *)((unsigned long)addr ^ 0x2));
381 else
382 iowrite16(val, addr);
383 }
384
385 static inline void edma_writel(struct fsl_edma_engine *edma,
386 u32 val, void __iomem *addr)
387 {
388 if (edma->big_endian)
389 iowrite32be(val, addr);
390 else
391 iowrite32(val, addr);
392 }
393
394 static inline void edma_writeq(struct fsl_edma_engine *edma,
395 u64 val, void __iomem *addr)
396 {
397 /* iowrite64 and iowrite64be was not defined at some platform */
398 if (edma->big_endian)
> 399 writeq(swab64(val), addr);
400 else
401 writeq(val, addr);
402 }
403

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki