* [xilinx-xlnx:pr/146 11930/14527] drivers/usb/dwc3/gadget_hibernation.c:383: warning: Function parameter or member '_dwc' not described in 'dwc3_gadget_exit_hibernation'
@ 2023-09-25 0:10 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2023-09-25 0:10 UTC (permalink / raw)
To: Manish Narani; +Cc: oe-kbuild-all, git, Michal Simek
Hi Manish,
FYI, the error/warning still remains.
tree: https://github.com/Xilinx/linux-xlnx pr/146
head: 38b0c0cf11566882cda99f8e4f2243924a684be5
commit: 719080ff0022e05bb4cb8043d62739feebcd8dbc [11930/14527] usb: dwc3: gadget: Add hibernation support when operating in gadget mode
config: arc-randconfig-r015-20230905 (https://download.01.org/0day-ci/archive/20230925/202309250831.tcStPIrW-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230925/202309250831.tcStPIrW-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309250831.tcStPIrW-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/usb/dwc3/gadget_hibernation.c:16: warning: cannot understand function prototype: 'u32 save_reg_addr[] = '
drivers/usb/dwc3/gadget_hibernation.c:74: warning: Function parameter or member 'epnum' not described in 'restart_ep0_trans'
>> drivers/usb/dwc3/gadget_hibernation.c:383: warning: Function parameter or member '_dwc' not described in 'dwc3_gadget_exit_hibernation'
>> drivers/usb/dwc3/gadget_hibernation.c:383: warning: Excess function parameter 'dwc' description in 'dwc3_gadget_exit_hibernation'
vim +383 drivers/usb/dwc3/gadget_hibernation.c
377
378 /**
379 * dwc3_gadget_exit_hibernation - Interrupt handler of wakeup
380 * @dwc: pointer to our controller context structure
381 */
382 void dwc3_gadget_exit_hibernation(void *_dwc)
> 383 {
384 struct dwc3 *dwc = (struct dwc3 *)(_dwc);
385
386 u32 reg, link_state;
387 int ret, retries;
388 bool enter_hiber = false;
389
390 /* On USB 2.0 we observed back to back wakeup interrupts */
391 if (!dwc->is_hibernated) {
392 dev_dbg(dwc->dev, "Not in hibernated state\n");
393 goto err;
394 }
395
396 restore_regs(dwc);
397
398 /* Initialize the core and restore the saved registers */
399 dwc3_core_init(dwc);
400
401 /* ask controller to save the non-sticky registers */
402 reg = dwc3_readl(dwc->regs, DWC3_DCTL);
403 reg |= DWC3_DCTL_CRS;
404 dwc3_writel(dwc->regs, DWC3_DCTL, reg);
405
406 /* Wait till non-sticky registers are restored */
407 retries = DWC3_NON_STICKY_RESTORE_RETRIES;
408 do {
409 reg = dwc3_readl(dwc->regs, DWC3_DSTS);
410 if (!(reg & DWC3_DSTS_RSS))
411 break;
412
413 udelay(DWC3_NON_STICKY_RESTORE_DELAY);
414 } while (--retries);
415
416 if (retries < 0 || (reg & DWC3_DSTS_SRE)) {
417 dev_err(dwc->dev, "Failed to restore non-sticky regs\n");
418 goto err;
419 }
420
421 /* restore ep0 endpoints */
422 ret = restore_ep0(dwc);
423 if (ret) {
424 dev_err(dwc->dev, "Failed in restorig EP0 states\n");
425 goto err;
426 }
427
428 /* start the controller */
429 ret = dwc3_gadget_run_stop(dwc, true, false);
430 if (ret < 0) {
431 dev_err(dwc->dev, "USB core failed to start on wakeup\n");
432 goto err;
433 }
434
435 /* Wait until device controller is ready */
436 retries = DWC3_DEVICE_CTRL_READY_RETRIES;
437 while (--retries) {
438 reg = dwc3_readl(dwc->regs, DWC3_DSTS);
439 if (reg & DWC3_DSTS_DCNRD)
440 udelay(DWC3_DEVICE_CTRL_READY_DELAY);
441 else
442 break;
443 }
444
445 if (retries < 0) {
446 dev_err(dwc->dev, "USB core failed to restore controller\n");
447 goto err;
448 }
449
450 /*
451 * As some suprious signals also cause wakeup event, wait for some time
452 * and check the link state to confirm if the wakeup signal is real
453 */
454 udelay(10);
455
456 link_state = dwc3_gadget_get_link_state(dwc);
457
458 /* check if the link state is in a valid state */
459 switch (link_state) {
460 case DWC3_LINK_STATE_RESET:
461 /* Reset devaddr */
462 reg = dwc3_readl(dwc->regs, DWC3_DCFG);
463 reg &= ~(DWC3_DCFG_DEVADDR_MASK);
464 dwc3_writel(dwc->regs, DWC3_DCFG, reg);
465
466 /* issue recovery on the link */
467 ret = dwc3_gadget_set_link_state(dwc, DWC3_LINK_STATE_RECOV);
468 if (ret < 0) {
469 dev_err(dwc->dev,
470 "Failed to set link state to Recovery\n");
471 goto err;
472 }
473
474 break;
475
476 case DWC3_LINK_STATE_SS_DIS:
477 /* Clear keep connect from reconnecting to HOST */
478 reg = dwc3_readl(dwc->regs, DWC3_DCTL);
479 reg &= ~DWC3_DCTL_KEEP_CONNECT;
480 dwc3_writel(dwc->regs, DWC3_DCTL, reg);
481 /* fall through */
482 case DWC3_LINK_STATE_U3:
483 /* Ignore wakeup event as the link is still in U3 state */
484 dev_dbg(dwc->dev, "False wakeup event %d\n", link_state);
485
486 if (!dwc->force_hiber_wake)
487 enter_hiber = true;
488 break;
489
490 default:
491 /* issue recovery on the link */
492 ret = dwc3_gadget_set_link_state(dwc, DWC3_LINK_STATE_RECOV);
493 if (ret < 0) {
494 dev_err(dwc->dev,
495 "Failed to set link state to Recovery\n");
496 goto err;
497 }
498
499 break;
500 }
501
502 if (link_state != DWC3_LINK_STATE_SS_DIS) {
503 /* Restore non EP0 EPs */
504 ret = restore_eps(dwc);
505 if (ret) {
506 dev_err(dwc->dev, "Failed restoring non-EP0 states\n");
507 goto err;
508 }
509 }
510
511 /* clear the flag */
512 dwc->is_hibernated = false;
513
514 if (enter_hiber) {
515 /*
516 * as the wakeup was because of the spurious signals,
517 * enter hibernation again
518 */
519 dwc3_gadget_enter_hibernation(dwc);
520 return;
521 }
522
523 dev_dbg(dwc->dev, "We are back from hibernation!\n");
524 return;
525
526 err:
527 dev_err(dwc->dev, "Fail in handling Wakeup Interrupt\n");
528 return;
529 }
530
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread* [xilinx-xlnx:pr/146 11930/14527] drivers/usb/dwc3/gadget_hibernation.c:383: warning: Function parameter or member '_dwc' not described in 'dwc3_gadget_exit_hibernation'
@ 2023-10-11 5:40 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2023-10-11 5:40 UTC (permalink / raw)
To: Manish Narani; +Cc: oe-kbuild-all, git, Michal Simek
Hi Manish,
FYI, the error/warning still remains.
tree: https://github.com/Xilinx/linux-xlnx pr/146
head: 38b0c0cf11566882cda99f8e4f2243924a684be5
commit: 719080ff0022e05bb4cb8043d62739feebcd8dbc [11930/14527] usb: dwc3: gadget: Add hibernation support when operating in gadget mode
config: arm64-defconfig (https://download.01.org/0day-ci/archive/20231011/202310111301.DiF8Nlc9-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231011/202310111301.DiF8Nlc9-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310111301.DiF8Nlc9-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/usb/dwc3/gadget_hibernation.c:16: warning: cannot understand function prototype: 'u32 save_reg_addr[] = '
drivers/usb/dwc3/gadget_hibernation.c:74: warning: Function parameter or member 'epnum' not described in 'restart_ep0_trans'
>> drivers/usb/dwc3/gadget_hibernation.c:383: warning: Function parameter or member '_dwc' not described in 'dwc3_gadget_exit_hibernation'
>> drivers/usb/dwc3/gadget_hibernation.c:383: warning: Excess function parameter 'dwc' description in 'dwc3_gadget_exit_hibernation'
vim +383 drivers/usb/dwc3/gadget_hibernation.c
377
378 /**
379 * dwc3_gadget_exit_hibernation - Interrupt handler of wakeup
380 * @dwc: pointer to our controller context structure
381 */
382 void dwc3_gadget_exit_hibernation(void *_dwc)
> 383 {
384 struct dwc3 *dwc = (struct dwc3 *)(_dwc);
385
386 u32 reg, link_state;
387 int ret, retries;
388 bool enter_hiber = false;
389
390 /* On USB 2.0 we observed back to back wakeup interrupts */
391 if (!dwc->is_hibernated) {
392 dev_dbg(dwc->dev, "Not in hibernated state\n");
393 goto err;
394 }
395
396 restore_regs(dwc);
397
398 /* Initialize the core and restore the saved registers */
399 dwc3_core_init(dwc);
400
401 /* ask controller to save the non-sticky registers */
402 reg = dwc3_readl(dwc->regs, DWC3_DCTL);
403 reg |= DWC3_DCTL_CRS;
404 dwc3_writel(dwc->regs, DWC3_DCTL, reg);
405
406 /* Wait till non-sticky registers are restored */
407 retries = DWC3_NON_STICKY_RESTORE_RETRIES;
408 do {
409 reg = dwc3_readl(dwc->regs, DWC3_DSTS);
410 if (!(reg & DWC3_DSTS_RSS))
411 break;
412
413 udelay(DWC3_NON_STICKY_RESTORE_DELAY);
414 } while (--retries);
415
416 if (retries < 0 || (reg & DWC3_DSTS_SRE)) {
417 dev_err(dwc->dev, "Failed to restore non-sticky regs\n");
418 goto err;
419 }
420
421 /* restore ep0 endpoints */
422 ret = restore_ep0(dwc);
423 if (ret) {
424 dev_err(dwc->dev, "Failed in restorig EP0 states\n");
425 goto err;
426 }
427
428 /* start the controller */
429 ret = dwc3_gadget_run_stop(dwc, true, false);
430 if (ret < 0) {
431 dev_err(dwc->dev, "USB core failed to start on wakeup\n");
432 goto err;
433 }
434
435 /* Wait until device controller is ready */
436 retries = DWC3_DEVICE_CTRL_READY_RETRIES;
437 while (--retries) {
438 reg = dwc3_readl(dwc->regs, DWC3_DSTS);
439 if (reg & DWC3_DSTS_DCNRD)
440 udelay(DWC3_DEVICE_CTRL_READY_DELAY);
441 else
442 break;
443 }
444
445 if (retries < 0) {
446 dev_err(dwc->dev, "USB core failed to restore controller\n");
447 goto err;
448 }
449
450 /*
451 * As some suprious signals also cause wakeup event, wait for some time
452 * and check the link state to confirm if the wakeup signal is real
453 */
454 udelay(10);
455
456 link_state = dwc3_gadget_get_link_state(dwc);
457
458 /* check if the link state is in a valid state */
459 switch (link_state) {
460 case DWC3_LINK_STATE_RESET:
461 /* Reset devaddr */
462 reg = dwc3_readl(dwc->regs, DWC3_DCFG);
463 reg &= ~(DWC3_DCFG_DEVADDR_MASK);
464 dwc3_writel(dwc->regs, DWC3_DCFG, reg);
465
466 /* issue recovery on the link */
467 ret = dwc3_gadget_set_link_state(dwc, DWC3_LINK_STATE_RECOV);
468 if (ret < 0) {
469 dev_err(dwc->dev,
470 "Failed to set link state to Recovery\n");
471 goto err;
472 }
473
474 break;
475
476 case DWC3_LINK_STATE_SS_DIS:
477 /* Clear keep connect from reconnecting to HOST */
478 reg = dwc3_readl(dwc->regs, DWC3_DCTL);
479 reg &= ~DWC3_DCTL_KEEP_CONNECT;
480 dwc3_writel(dwc->regs, DWC3_DCTL, reg);
481 /* fall through */
482 case DWC3_LINK_STATE_U3:
483 /* Ignore wakeup event as the link is still in U3 state */
484 dev_dbg(dwc->dev, "False wakeup event %d\n", link_state);
485
486 if (!dwc->force_hiber_wake)
487 enter_hiber = true;
488 break;
489
490 default:
491 /* issue recovery on the link */
492 ret = dwc3_gadget_set_link_state(dwc, DWC3_LINK_STATE_RECOV);
493 if (ret < 0) {
494 dev_err(dwc->dev,
495 "Failed to set link state to Recovery\n");
496 goto err;
497 }
498
499 break;
500 }
501
502 if (link_state != DWC3_LINK_STATE_SS_DIS) {
503 /* Restore non EP0 EPs */
504 ret = restore_eps(dwc);
505 if (ret) {
506 dev_err(dwc->dev, "Failed restoring non-EP0 states\n");
507 goto err;
508 }
509 }
510
511 /* clear the flag */
512 dwc->is_hibernated = false;
513
514 if (enter_hiber) {
515 /*
516 * as the wakeup was because of the spurious signals,
517 * enter hibernation again
518 */
519 dwc3_gadget_enter_hibernation(dwc);
520 return;
521 }
522
523 dev_dbg(dwc->dev, "We are back from hibernation!\n");
524 return;
525
526 err:
527 dev_err(dwc->dev, "Fail in handling Wakeup Interrupt\n");
528 return;
529 }
530
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-10-11 5:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-25 0:10 [xilinx-xlnx:pr/146 11930/14527] drivers/usb/dwc3/gadget_hibernation.c:383: warning: Function parameter or member '_dwc' not described in 'dwc3_gadget_exit_hibernation' kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2023-10-11 5:40 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.