Re: [PATCH v3 2/5] usb: dwc3: Add remote wakeup handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Elson,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on usb/usb-testing]
[also build test WARNING on usb/usb-next usb/usb-linus linus/master v6.2-rc7 next-20230207]
[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/Elson-Roy-Serrao/usb-gadget-Properly-configure-the-device-for-remote-wakeup/20230207-031528
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
patch link:    https://lore.kernel.org/r/1675710806-9735-3-git-send-email-quic_eserrao%40quicinc.com
patch subject: [PATCH v3 2/5] usb: dwc3: Add remote wakeup handling
config: i386-randconfig-a002-20230206 (https://download.01.org/0day-ci/archive/20230207/202302071850.VZRjtYXx-lkp@xxxxxxxxx/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/e0d9f3f5f168e36cdb599617634010326a1412af
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Elson-Roy-Serrao/usb-gadget-Properly-configure-the-device-for-remote-wakeup/20230207-031528
        git checkout e0d9f3f5f168e36cdb599617634010326a1412af
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/usb/dwc3/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

>> drivers/usb/dwc3/gadget.c:2318:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
           case DWC3_LINK_STATE_RESET:
           ^
   drivers/usb/dwc3/gadget.c:2318:2: note: insert 'break;' to avoid fall-through
           case DWC3_LINK_STATE_RESET:
           ^
           break; 
   1 warning generated.


vim +2318 drivers/usb/dwc3/gadget.c

72246da40f3719af Felipe Balbi           2011-08-19  2291  
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2292  static int __dwc3_gadget_wakeup(struct dwc3 *dwc, bool async)
72246da40f3719af Felipe Balbi           2011-08-19  2293  {
d6011f6fc21b4d4a Nicolas Saenz Julienne 2016-08-16  2294  	int			retries;
72246da40f3719af Felipe Balbi           2011-08-19  2295  
218ef7b647e3367c Felipe Balbi           2016-04-04  2296  	int			ret;
72246da40f3719af Felipe Balbi           2011-08-19  2297  	u32			reg;
72246da40f3719af Felipe Balbi           2011-08-19  2298  
72246da40f3719af Felipe Balbi           2011-08-19  2299  	u8			link_state;
72246da40f3719af Felipe Balbi           2011-08-19  2300  
72246da40f3719af Felipe Balbi           2011-08-19  2301  	/*
72246da40f3719af Felipe Balbi           2011-08-19  2302  	 * According to the Databook Remote wakeup request should
72246da40f3719af Felipe Balbi           2011-08-19  2303  	 * be issued only when the device is in early suspend state.
72246da40f3719af Felipe Balbi           2011-08-19  2304  	 *
72246da40f3719af Felipe Balbi           2011-08-19  2305  	 * We can check that via USB Link State bits in DSTS register.
72246da40f3719af Felipe Balbi           2011-08-19  2306  	 */
72246da40f3719af Felipe Balbi           2011-08-19  2307  	reg = dwc3_readl(dwc->regs, DWC3_DSTS);
72246da40f3719af Felipe Balbi           2011-08-19  2308  
72246da40f3719af Felipe Balbi           2011-08-19  2309  	link_state = DWC3_DSTS_USBLNKST(reg);
72246da40f3719af Felipe Balbi           2011-08-19  2310  
72246da40f3719af Felipe Balbi           2011-08-19  2311  	switch (link_state) {
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2312  	case DWC3_LINK_STATE_U3:	/* in HS, means SUSPEND */
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2313  		if (!dwc->rw_configured) {
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2314  			dev_err(dwc->dev,
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2315  				"device not configured for remote wakeup\n");
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2316  			return -EINVAL;
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2317  		}
d0550cd20e52558e Thinh Nguyen           2020-01-31 @2318  	case DWC3_LINK_STATE_RESET:
72246da40f3719af Felipe Balbi           2011-08-19  2319  	case DWC3_LINK_STATE_RX_DET:	/* in HS, means Early Suspend */
c560e76319a94a3b Thinh Nguyen           2021-04-19  2320  	case DWC3_LINK_STATE_U2:	/* in HS, means Sleep (L1) */
c560e76319a94a3b Thinh Nguyen           2021-04-19  2321  	case DWC3_LINK_STATE_U1:
d0550cd20e52558e Thinh Nguyen           2020-01-31  2322  	case DWC3_LINK_STATE_RESUME:
72246da40f3719af Felipe Balbi           2011-08-19  2323  		break;
72246da40f3719af Felipe Balbi           2011-08-19  2324  	default:
218ef7b647e3367c Felipe Balbi           2016-04-04  2325  		return -EINVAL;
72246da40f3719af Felipe Balbi           2011-08-19  2326  	}
72246da40f3719af Felipe Balbi           2011-08-19  2327  
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2328  	if (async)
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2329  		dwc3_gadget_enable_linksts_evts(dwc, true);
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2330  
8598bde7fa125e85 Felipe Balbi           2012-01-02  2331  	ret = dwc3_gadget_set_link_state(dwc, DWC3_LINK_STATE_RECOV);
8598bde7fa125e85 Felipe Balbi           2012-01-02  2332  	if (ret < 0) {
8598bde7fa125e85 Felipe Balbi           2012-01-02  2333  		dev_err(dwc->dev, "failed to put link in Recovery\n");
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2334  		dwc3_gadget_enable_linksts_evts(dwc, false);
218ef7b647e3367c Felipe Balbi           2016-04-04  2335  		return ret;
8598bde7fa125e85 Felipe Balbi           2012-01-02  2336  	}
72246da40f3719af Felipe Balbi           2011-08-19  2337  
802fde983e8a3391 Paul Zimmerman         2012-04-27  2338  	/* Recent versions do this automatically */
9af21dd6faeba593 Thinh Nguyen           2020-04-11  2339  	if (DWC3_VER_IS_PRIOR(DWC3, 194A)) {
72246da40f3719af Felipe Balbi           2011-08-19  2340  		/* write zeroes to Link Change Request */
fcc023c726b5879d Felipe Balbi           2012-05-24  2341  		reg = dwc3_readl(dwc->regs, DWC3_DCTL);
72246da40f3719af Felipe Balbi           2011-08-19  2342  		reg &= ~DWC3_DCTL_ULSTCHNGREQ_MASK;
72246da40f3719af Felipe Balbi           2011-08-19  2343  		dwc3_writel(dwc->regs, DWC3_DCTL, reg);
802fde983e8a3391 Paul Zimmerman         2012-04-27  2344  	}
72246da40f3719af Felipe Balbi           2011-08-19  2345  
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2346  	/*
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2347  	 * Since link status change events are enabled we will receive
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2348  	 * an U0 event when wakeup is successful. So bail out.
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2349  	 */
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2350  	if (async)
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2351  		return 0;
e0d9f3f5f168e36c Elson Roy Serrao       2023-02-06  2352  
1d046793958f128d Paul Zimmerman         2012-02-15  2353  	/* poll until Link State changes to ON */
d6011f6fc21b4d4a Nicolas Saenz Julienne 2016-08-16  2354  	retries = 20000;
72246da40f3719af Felipe Balbi           2011-08-19  2355  
d6011f6fc21b4d4a Nicolas Saenz Julienne 2016-08-16  2356  	while (retries--) {
72246da40f3719af Felipe Balbi           2011-08-19  2357  		reg = dwc3_readl(dwc->regs, DWC3_DSTS);
72246da40f3719af Felipe Balbi           2011-08-19  2358  
72246da40f3719af Felipe Balbi           2011-08-19  2359  		/* in HS, means ON */
72246da40f3719af Felipe Balbi           2011-08-19  2360  		if (DWC3_DSTS_USBLNKST(reg) == DWC3_LINK_STATE_U0)
72246da40f3719af Felipe Balbi           2011-08-19  2361  			break;
72246da40f3719af Felipe Balbi           2011-08-19  2362  	}
72246da40f3719af Felipe Balbi           2011-08-19  2363  
72246da40f3719af Felipe Balbi           2011-08-19  2364  	if (DWC3_DSTS_USBLNKST(reg) != DWC3_LINK_STATE_U0) {
72246da40f3719af Felipe Balbi           2011-08-19  2365  		dev_err(dwc->dev, "failed to send remote wakeup\n");
218ef7b647e3367c Felipe Balbi           2016-04-04  2366  		return -EINVAL;
72246da40f3719af Felipe Balbi           2011-08-19  2367  	}
72246da40f3719af Felipe Balbi           2011-08-19  2368  
218ef7b647e3367c Felipe Balbi           2016-04-04  2369  	return 0;
218ef7b647e3367c Felipe Balbi           2016-04-04  2370  }
218ef7b647e3367c Felipe Balbi           2016-04-04  2371  

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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux