On 20-12-14 23:35:56, kernel test robot wrote:
> Hi Pawel,
>
> I love your patch! Perhaps something to improve:
>
> [auto build test WARNING on next-20201211]
> [cannot apply to peter.chen-usb/ci-for-usb-next v5.10 v5.10-rc7 v5.10-rc6 v5.10]
Sorry, I changed the branch name to reflect the branch does not only queue
chipidea USB patches.
next branch: for-usb-next
fixes branch: for-usb-fixes
Peter
Hi Peter,
Thanks for the feedback, we'll update it on the CI system.
Best Regards,
Rong Chen
> [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://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit-scm...]
>
> url:
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub....
> base: 3cc2bd440f2171f093b3a8480a4b54d8c270ed38
> config: riscv-allmodconfig (attached as .config)
> compiler: riscv64-linux-gcc (GCC) 9.3.0
> reproduce (this is a W=1 build):
> wget
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fraw.git...
-O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> #
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub....
> git remote add linux-review
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub....
> git fetch --no-tags linux-review
Pawel-Laszczak/usb-cdns3-Adds-missing-__iomem-markers/20201214-205353
> git checkout 315bfcf1e0604de6ecfc1856cf5820876390f16c
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=riscv
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp(a)intel.com>
>
> All warnings (new ones prefixed by >>):
>
> In file included from arch/riscv/include/asm/io.h:23,
> from include/linux/io.h:13,
> from include/linux/irq.h:20,
> from include/asm-generic/hardirq.h:17,
> from ./arch/riscv/include/generated/asm/hardirq.h:1,
> from include/linux/hardirq.h:10,
> from include/linux/interrupt.h:11,
> from drivers/usb/cdns3/drd.c:13:
> drivers/usb/cdns3/drd.c: In function 'cdns_otg_disable_irq':
> drivers/usb/cdns3/drd.c:159:31: error: dereferencing pointer to incomplete type
'struct cdns_otg_irq_reg'
> 159 | writel(0, &cdns->otg_irq_regs->ien);
> | ^~
> arch/riscv/include/asm/mmio.h:93:76: note: in definition of macro
'writel_cpu'
> 93 | #define writel_cpu(v, c) ((void)__raw_writel((__force u32)cpu_to_le32(v),
(c)))
> |
^
> drivers/usb/cdns3/drd.c:159:2: note: in expansion of macro 'writel'
> 159 | writel(0, &cdns->otg_irq_regs->ien);
> | ^~~~~~
> drivers/usb/cdns3/drd.c: In function 'cdns_drd_init':
> drivers/usb/cdns3/drd.c:409:22: error: assignment to 'struct cdns_otg_irq_reg
*' from incompatible pointer type 'struct cdns_otg_irq_regs *'
[-Werror=incompatible-pointer-types]
> 409 | cdns->otg_irq_regs = (struct cdns_otg_irq_regs __iomem *)
> | ^
> In file included from include/linux/byteorder/little_endian.h:5,
> from arch/riscv/include/uapi/asm/byteorder.h:10,
> from include/asm-generic/bitops/le.h:6,
> from arch/riscv/include/asm/bitops.h:202,
> from include/linux/bitops.h:32,
> from include/linux/kernel.h:11,
> from drivers/usb/cdns3/drd.c:12:
>>> drivers/usb/cdns3/drd.c:421:33: warning: passing argument 1 of
'__raw_readl' makes pointer from integer without a cast [-Wint-conversion]
> 421 | if (readl(cdns->otg_cdnsp_regs->did) == OTG_CDNSP_DID) {
> | ~~~~~~~~~~~~~~~~~~~~^~~~~
> | |
> | __le32 {aka unsigned int}
> include/uapi/linux/byteorder/little_endian.h:34:51: note: in definition of macro
'__le32_to_cpu'
> 34 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
> | ^
> arch/riscv/include/asm/mmio.h:140:47: note: in expansion of macro
'readl_cpu'
> 140 | #define readl(c) ({ u32 __v; __io_br(); __v = readl_cpu(c); __io_ar(__v);
__v; })
> | ^~~~~~~~~
> drivers/usb/cdns3/drd.c:421:7: note: in expansion of macro 'readl'
> 421 | if (readl(cdns->otg_cdnsp_regs->did) == OTG_CDNSP_DID) {
> | ^~~~~
> In file included from arch/riscv/include/asm/io.h:23,
> from include/linux/io.h:13,
> from include/linux/irq.h:20,
> from include/asm-generic/hardirq.h:17,
> from ./arch/riscv/include/generated/asm/hardirq.h:1,
> from include/linux/hardirq.h:10,
> from include/linux/interrupt.h:11,
> from drivers/usb/cdns3/drd.c:13:
> arch/riscv/include/asm/mmio.h:63:60: note: expected 'const volatile void
*' but argument is of type '__le32' {aka 'unsigned int'}
> 63 | static inline u32 __raw_readl(const volatile void __iomem *addr)
> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
> drivers/usb/cdns3/drd.c:422:23: error: assignment to 'struct cdns_otg_irq_reg
*' from incompatible pointer type 'struct cdns_otg_irq_regs *'
[-Werror=incompatible-pointer-types]
> 422 | cdns->otg_irq_regs = (struct cdns_otg_irq_regs __iomem *)
> | ^
> drivers/usb/cdns3/drd.c:426:23: error: assignment to 'struct cdns_otg_irq_reg
*' from incompatible pointer type 'struct cdns_otg_irq_regs *'
[-Werror=incompatible-pointer-types]
> 426 | cdns->otg_irq_regs = (struct cdns_otg_irq_regs __iomem *)
> | ^
> cc1: some warnings being treated as errors
>
> vim +/__raw_readl +421 drivers/usb/cdns3/drd.c
>
> 383
> 384 int cdns_drd_init(struct cdns *cdns)
> 385 {
> 386 void __iomem *regs;
> 387 u32 state;
> 388 int ret;
> 389
> 390 regs = devm_ioremap_resource(cdns->dev, &cdns->otg_res);
> 391 if (IS_ERR(regs))
> 392 return PTR_ERR(regs);
> 393
> 394 /* Detection of DRD version. Controller has been released
> 395 * in three versions. All are very similar and are software compatible,
> 396 * but they have same changes in register maps.
> 397 * The first register in oldest version is command register and it's
> 398 * read only. Driver should read 0 from it. On the other hand, in v1
> 399 * and v2 the first register contains device ID number which is not
> 400 * set to 0. Driver uses this fact to detect the proper version of
> 401 * controller.
> 402 */
> 403 cdns->otg_v0_regs = regs;
> 404 if (!readl(&cdns->otg_v0_regs->cmd)) {
> 405 cdns->version = CDNS3_CONTROLLER_V0;
> 406 cdns->otg_v1_regs = NULL;
> 407 cdns->otg_cdnsp_regs = NULL;
> 408 cdns->otg_regs = regs;
> 409 cdns->otg_irq_regs = (struct cdns_otg_irq_regs __iomem *)
> 410 &cdns->otg_v0_regs->ien;
> 411 writel(1, &cdns->otg_v0_regs->simulate);
> 412 dev_dbg(cdns->dev, "DRD version v0 (%08x)\n",
> 413 readl(&cdns->otg_v0_regs->version));
> 414 } else {
> 415 cdns->otg_v0_regs = NULL;
> 416 cdns->otg_v1_regs = regs;
> 417 cdns->otg_cdnsp_regs = regs;
> 418
> 419 cdns->otg_regs = (void __iomem *)&cdns->otg_v1_regs->cmd;
> 420
> > 421 if (readl(cdns->otg_cdnsp_regs->did) == OTG_CDNSP_DID) {
> 422 cdns->otg_irq_regs = (struct cdns_otg_irq_regs __iomem *)
> 423 &cdns->otg_cdnsp_regs->ien;
> 424 cdns->version = CDNSP_CONTROLLER_V2;
> 425 } else {
> 426 cdns->otg_irq_regs = (struct cdns_otg_irq_regs __iomem *)
> 427 &cdns->otg_v1_regs->ien;
> 428 writel(1, &cdns->otg_v1_regs->simulate);
> 429 cdns->version = CDNS3_CONTROLLER_V1;
> 430 }
> 431
> 432 dev_dbg(cdns->dev, "DRD version v1 (ID: %08x, rev: %08x)\n",
> 433 readl(&cdns->otg_v1_regs->did),
> 434 readl(&cdns->otg_v1_regs->rid));
> 435 }
> 436
> 437 state = OTGSTS_STRAP(readl(&cdns->otg_regs->sts));
> 438
> 439 /* Update dr_mode according to STRAP configuration. */
> 440 cdns->dr_mode = USB_DR_MODE_OTG;
> 441
> 442 if ((cdns->version == CDNSP_CONTROLLER_V2 &&
> 443 state == OTGSTS_CDNSP_STRAP_HOST) ||
> 444 (cdns->version != CDNSP_CONTROLLER_V2 &&
> 445 state == OTGSTS_STRAP_HOST)) {
> 446 dev_dbg(cdns->dev, "Controller strapped to HOST\n");
> 447 cdns->dr_mode = USB_DR_MODE_HOST;
> 448 } else if ((cdns->version == CDNSP_CONTROLLER_V2 &&
> 449 state == OTGSTS_CDNSP_STRAP_GADGET) ||
> 450 (cdns->version != CDNSP_CONTROLLER_V2 &&
> 451 state == OTGSTS_STRAP_GADGET)) {
> 452 dev_dbg(cdns->dev, "Controller strapped to PERIPHERAL\n");
> 453 cdns->dr_mode = USB_DR_MODE_PERIPHERAL;
> 454 }
> 455
> 456 ret = devm_request_threaded_irq(cdns->dev, cdns->otg_irq,
> 457 cdns_drd_irq,
> 458 cdns_drd_thread_irq,
> 459 IRQF_SHARED,
> 460 dev_name(cdns->dev), cdns);
> 461 if (ret) {
> 462 dev_err(cdns->dev, "couldn't get otg_irq\n");
> 463 return ret;
> 464 }
> 465
> 466 state = readl(&cdns->otg_regs->sts);
> 467 if (OTGSTS_OTG_NRDY(state)) {
> 468 dev_err(cdns->dev, "Cadence USB3 OTG device not ready\n");
> 469 return -ENODEV;
> 470 }
> 471
> 472 return 0;
> 473 }
> 474
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
>
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.0...