[xilinx-xlnx:xlnx_rebase_v5.15 394/1080] drivers/usb/dwc3/otg.c:291:13: warning: variable 'osts' set but not used

kernel test robot lkp at intel.com
Wed Apr 6 10:10:50 PDT 2022


tree:   https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.15
head:   6474115d882fd9e82731ac2473875dc3e8ac9acc
commit: d0fdd1b604fc3e7687a1033469542076a6bb8733 [394/1080] usb: dwc3: gadget: Add new platform_data.h file
config: sparc-randconfig-r032-20220406 (https://download.01.org/0day-ci/archive/20220407/202204070132.GjEw2GSR-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 11.2.0
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/Xilinx/linux-xlnx/commit/d0fdd1b604fc3e7687a1033469542076a6bb8733
        git remote add xilinx-xlnx https://github.com/Xilinx/linux-xlnx
        git fetch --no-tags xilinx-xlnx xlnx_rebase_v5.15
        git checkout d0fdd1b604fc3e7687a1033469542076a6bb8733
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=sparc SHELL=/bin/bash drivers/usb/dwc3/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>

All warnings (new ones prefixed by >>):

   drivers/usb/dwc3/otg.c: In function 'start_host':
>> drivers/usb/dwc3/otg.c:291:13: warning: variable 'osts' set but not used [-Wunused-but-set-variable]
     291 |         u32 osts;
         |             ^~~~
   drivers/usb/dwc3/otg.c: At top level:
>> drivers/usb/dwc3/otg.c:418:5: warning: no previous prototype for 'dwc3_otg_host_release' [-Wmissing-prototypes]
     418 | int dwc3_otg_host_release(struct usb_hcd *hcd)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/usb/dwc3/otg.c:1323:5: warning: no previous prototype for 'otg_main_thread' [-Wmissing-prototypes]
    1323 | int otg_main_thread(void *data)
         |     ^~~~~~~~~~~~~~~
>> drivers/usb/dwc3/otg.c:1885:5: warning: no previous prototype for 'otg_host_release' [-Wmissing-prototypes]
    1885 | int otg_host_release(struct usb_otg *otg)
         |     ^~~~~~~~~~~~~~~~
   drivers/usb/dwc3/otg.c: In function 'store_hnp':
   drivers/usb/dwc3/otg.c:1975:20: error: 'dwc->gadget' is a pointer; did you mean to use '->'?
    1975 |         dwc->gadget.host_request_flag = 1;
         |                    ^
         |                    ->
   drivers/usb/dwc3/otg.c: At top level:
>> drivers/usb/dwc3/otg.c:2040:6: warning: no previous prototype for 'dwc_usb3_remove_dev_files' [-Wmissing-prototypes]
    2040 | void dwc_usb3_remove_dev_files(struct device *dev)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/usb/dwc3/otg.c:2050:5: warning: no previous prototype for 'dwc3_otg_create_dev_files' [-Wmissing-prototypes]
    2050 | int dwc3_otg_create_dev_files(struct device *dev)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~


vim +/osts +291 drivers/usb/dwc3/otg.c

d50e8d7c931f49 Piyush Mehta 2022-01-26  285  
d50e8d7c931f49 Piyush Mehta 2022-01-26  286  static int start_host(struct dwc3_otg *otg)
d50e8d7c931f49 Piyush Mehta 2022-01-26  287  {
d50e8d7c931f49 Piyush Mehta 2022-01-26  288  	int ret = -ENODEV;
d50e8d7c931f49 Piyush Mehta 2022-01-26  289  	int flg;
d50e8d7c931f49 Piyush Mehta 2022-01-26  290  	u32 octl;
d50e8d7c931f49 Piyush Mehta 2022-01-26 @291  	u32 osts;
d50e8d7c931f49 Piyush Mehta 2022-01-26  292  	u32 ocfg;
d50e8d7c931f49 Piyush Mehta 2022-01-26  293  	u32 dctl;
d50e8d7c931f49 Piyush Mehta 2022-01-26  294  	struct usb_hcd *hcd;
d50e8d7c931f49 Piyush Mehta 2022-01-26  295  	struct xhci_hcd *xhci;
d50e8d7c931f49 Piyush Mehta 2022-01-26  296  
d50e8d7c931f49 Piyush Mehta 2022-01-26  297  	otg_dbg(otg, "\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  298  
d50e8d7c931f49 Piyush Mehta 2022-01-26  299  	if (!otg->otg.host)
d50e8d7c931f49 Piyush Mehta 2022-01-26  300  		return -ENODEV;
d50e8d7c931f49 Piyush Mehta 2022-01-26  301  
d50e8d7c931f49 Piyush Mehta 2022-01-26  302  	/*
d50e8d7c931f49 Piyush Mehta 2022-01-26  303  	 * Prevent the host USBCMD.HCRST from resetting OTG core by setting
d50e8d7c931f49 Piyush Mehta 2022-01-26  304  	 * OCFG.OTGSftRstMsk
d50e8d7c931f49 Piyush Mehta 2022-01-26  305  	 */
d50e8d7c931f49 Piyush Mehta 2022-01-26  306  	ocfg = otg_read(otg, OCFG);
d50e8d7c931f49 Piyush Mehta 2022-01-26  307  	ocfg |= DWC3_OCFG_SFTRSTMASK;
d50e8d7c931f49 Piyush Mehta 2022-01-26  308  	otg_write(otg, OCFG, ocfg);
d50e8d7c931f49 Piyush Mehta 2022-01-26  309  
d50e8d7c931f49 Piyush Mehta 2022-01-26  310  	dctl = otg_read(otg, DCTL);
d50e8d7c931f49 Piyush Mehta 2022-01-26  311  	if (dctl & DWC3_DCTL_RUN_STOP) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  312  		otg_dbg(otg, "Disabling the RUN/STOP bit\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  313  		dctl &= ~DWC3_DCTL_RUN_STOP;
d50e8d7c931f49 Piyush Mehta 2022-01-26  314  		otg_write(otg, DCTL, dctl);
d50e8d7c931f49 Piyush Mehta 2022-01-26  315  	}
d50e8d7c931f49 Piyush Mehta 2022-01-26  316  
d50e8d7c931f49 Piyush Mehta 2022-01-26  317  	if (!set_peri_mode(otg, PERI_MODE_HOST)) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  318  		otg_err(otg, "Failed to start host\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  319  		return -EINVAL;
d50e8d7c931f49 Piyush Mehta 2022-01-26  320  	}
d50e8d7c931f49 Piyush Mehta 2022-01-26  321  
d50e8d7c931f49 Piyush Mehta 2022-01-26  322  	hcd = container_of(otg->otg.host, struct usb_hcd, self);
d50e8d7c931f49 Piyush Mehta 2022-01-26  323  	xhci = hcd_to_xhci(hcd);
d50e8d7c931f49 Piyush Mehta 2022-01-26  324  	otg_dbg(otg, "hcd=%p xhci=%p\n", hcd, xhci);
d50e8d7c931f49 Piyush Mehta 2022-01-26  325  
d50e8d7c931f49 Piyush Mehta 2022-01-26  326  	if (otg->host_started) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  327  		otg_info(otg, "Host already started\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  328  		goto skip;
d50e8d7c931f49 Piyush Mehta 2022-01-26  329  	}
d50e8d7c931f49 Piyush Mehta 2022-01-26  330  
d50e8d7c931f49 Piyush Mehta 2022-01-26  331  	/* Start host driver */
d50e8d7c931f49 Piyush Mehta 2022-01-26  332  
d50e8d7c931f49 Piyush Mehta 2022-01-26  333  	*(struct xhci_hcd **)hcd->hcd_priv = xhci;
d50e8d7c931f49 Piyush Mehta 2022-01-26  334  	ret = usb_add_hcd(hcd, otg->hcd_irq, IRQF_SHARED);
d50e8d7c931f49 Piyush Mehta 2022-01-26  335  	if (ret) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  336  		otg_err(otg, "%s: failed to start primary hcd, ret=%d\n",
d50e8d7c931f49 Piyush Mehta 2022-01-26  337  			__func__, ret);
d50e8d7c931f49 Piyush Mehta 2022-01-26  338  		return ret;
d50e8d7c931f49 Piyush Mehta 2022-01-26  339  	}
d50e8d7c931f49 Piyush Mehta 2022-01-26  340  
d50e8d7c931f49 Piyush Mehta 2022-01-26  341  	*(struct xhci_hcd **)xhci->shared_hcd->hcd_priv = xhci;
d50e8d7c931f49 Piyush Mehta 2022-01-26  342  	if (xhci->shared_hcd) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  343  		ret = usb_add_hcd(xhci->shared_hcd, otg->hcd_irq, IRQF_SHARED);
d50e8d7c931f49 Piyush Mehta 2022-01-26  344  		if (ret) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  345  			otg_err(otg,
d50e8d7c931f49 Piyush Mehta 2022-01-26  346  				"%s: failed to start secondary hcd, ret=%d\n",
d50e8d7c931f49 Piyush Mehta 2022-01-26  347  				__func__, ret);
d50e8d7c931f49 Piyush Mehta 2022-01-26  348  			usb_remove_hcd(hcd);
d50e8d7c931f49 Piyush Mehta 2022-01-26  349  			return ret;
d50e8d7c931f49 Piyush Mehta 2022-01-26  350  		}
d50e8d7c931f49 Piyush Mehta 2022-01-26  351  	}
d50e8d7c931f49 Piyush Mehta 2022-01-26  352  
d50e8d7c931f49 Piyush Mehta 2022-01-26  353  	otg->host_started = 1;
d50e8d7c931f49 Piyush Mehta 2022-01-26  354  skip:
d50e8d7c931f49 Piyush Mehta 2022-01-26  355  	hcd->self.otg_port = 1;
d50e8d7c931f49 Piyush Mehta 2022-01-26  356  	if (xhci->shared_hcd)
d50e8d7c931f49 Piyush Mehta 2022-01-26  357  		xhci->shared_hcd->self.otg_port = 1;
d50e8d7c931f49 Piyush Mehta 2022-01-26  358  
d50e8d7c931f49 Piyush Mehta 2022-01-26  359  	set_capabilities(otg);
d50e8d7c931f49 Piyush Mehta 2022-01-26  360  
d50e8d7c931f49 Piyush Mehta 2022-01-26  361  	/* Power the port only for A-host */
d50e8d7c931f49 Piyush Mehta 2022-01-26  362  	if (otg->otg.state == OTG_STATE_A_WAIT_VRISE) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  363  		/* Spin on xhciPrtPwr bit until it becomes 1 */
d50e8d7c931f49 Piyush Mehta 2022-01-26  364  		osts = otg_read(otg, OSTS);
d50e8d7c931f49 Piyush Mehta 2022-01-26  365  		flg = otg3_handshake(otg, OSTS,
d50e8d7c931f49 Piyush Mehta 2022-01-26  366  				OSTS_XHCI_PRT_PWR,
d50e8d7c931f49 Piyush Mehta 2022-01-26  367  				OSTS_XHCI_PRT_PWR,
d50e8d7c931f49 Piyush Mehta 2022-01-26  368  				1000);
d50e8d7c931f49 Piyush Mehta 2022-01-26  369  		if (flg) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  370  			otg_dbg(otg, "Port is powered by xhci-hcd\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  371  			/* Set port power control bit */
d50e8d7c931f49 Piyush Mehta 2022-01-26  372  			octl = otg_read(otg, OCTL);
d50e8d7c931f49 Piyush Mehta 2022-01-26  373  			octl |= OCTL_PRT_PWR_CTL;
d50e8d7c931f49 Piyush Mehta 2022-01-26  374  			otg_write(otg, OCTL, octl);
d50e8d7c931f49 Piyush Mehta 2022-01-26  375  		} else {
d50e8d7c931f49 Piyush Mehta 2022-01-26  376  			otg_dbg(otg, "Port is not powered by xhci-hcd\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  377  		}
d50e8d7c931f49 Piyush Mehta 2022-01-26  378  	}
d50e8d7c931f49 Piyush Mehta 2022-01-26  379  
d50e8d7c931f49 Piyush Mehta 2022-01-26  380  	return ret;
d50e8d7c931f49 Piyush Mehta 2022-01-26  381  }
d50e8d7c931f49 Piyush Mehta 2022-01-26  382  
d50e8d7c931f49 Piyush Mehta 2022-01-26  383  static int stop_host(struct dwc3_otg *otg)
d50e8d7c931f49 Piyush Mehta 2022-01-26  384  {
d50e8d7c931f49 Piyush Mehta 2022-01-26  385  	struct usb_hcd *hcd;
d50e8d7c931f49 Piyush Mehta 2022-01-26  386  	struct xhci_hcd *xhci;
d50e8d7c931f49 Piyush Mehta 2022-01-26  387  
d50e8d7c931f49 Piyush Mehta 2022-01-26  388  	otg_dbg(otg, "\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  389  
d50e8d7c931f49 Piyush Mehta 2022-01-26  390  	if (!otg->host_started) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  391  		otg_info(otg, "Host already stopped\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  392  		return 1;
d50e8d7c931f49 Piyush Mehta 2022-01-26  393  	}
d50e8d7c931f49 Piyush Mehta 2022-01-26  394  
d50e8d7c931f49 Piyush Mehta 2022-01-26  395  	if (!otg->otg.host)
d50e8d7c931f49 Piyush Mehta 2022-01-26  396  		return -ENODEV;
d50e8d7c931f49 Piyush Mehta 2022-01-26  397  
d50e8d7c931f49 Piyush Mehta 2022-01-26  398  	otg_dbg(otg, "%s: turn off host %s\n",
d50e8d7c931f49 Piyush Mehta 2022-01-26  399  		__func__, otg->otg.host->bus_name);
d50e8d7c931f49 Piyush Mehta 2022-01-26  400  
d50e8d7c931f49 Piyush Mehta 2022-01-26  401  	if (work_pending(&otg->hp_work.work)) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  402  		while (!cancel_delayed_work(&otg->hp_work))
d50e8d7c931f49 Piyush Mehta 2022-01-26  403  			msleep(20);
d50e8d7c931f49 Piyush Mehta 2022-01-26  404  	}
d50e8d7c931f49 Piyush Mehta 2022-01-26  405  
d50e8d7c931f49 Piyush Mehta 2022-01-26  406  	hcd = container_of(otg->otg.host, struct usb_hcd, self);
d50e8d7c931f49 Piyush Mehta 2022-01-26  407  	xhci = hcd_to_xhci(hcd);
d50e8d7c931f49 Piyush Mehta 2022-01-26  408  
d50e8d7c931f49 Piyush Mehta 2022-01-26  409  	if (xhci->shared_hcd)
d50e8d7c931f49 Piyush Mehta 2022-01-26  410  		usb_remove_hcd(xhci->shared_hcd);
d50e8d7c931f49 Piyush Mehta 2022-01-26  411  	usb_remove_hcd(hcd);
d50e8d7c931f49 Piyush Mehta 2022-01-26  412  
d50e8d7c931f49 Piyush Mehta 2022-01-26  413  	otg->host_started = 0;
d50e8d7c931f49 Piyush Mehta 2022-01-26  414  	otg->dev_enum = 0;
d50e8d7c931f49 Piyush Mehta 2022-01-26  415  	return 0;
d50e8d7c931f49 Piyush Mehta 2022-01-26  416  }
d50e8d7c931f49 Piyush Mehta 2022-01-26  417  
d50e8d7c931f49 Piyush Mehta 2022-01-26 @418  int dwc3_otg_host_release(struct usb_hcd *hcd)
d50e8d7c931f49 Piyush Mehta 2022-01-26  419  {
d50e8d7c931f49 Piyush Mehta 2022-01-26  420  	struct usb_bus *bus;
d50e8d7c931f49 Piyush Mehta 2022-01-26  421  	struct usb_device *rh;
d50e8d7c931f49 Piyush Mehta 2022-01-26  422  	struct usb_device *udev;
d50e8d7c931f49 Piyush Mehta 2022-01-26  423  
d50e8d7c931f49 Piyush Mehta 2022-01-26  424  	if (!hcd)
d50e8d7c931f49 Piyush Mehta 2022-01-26  425  		return -EINVAL;
d50e8d7c931f49 Piyush Mehta 2022-01-26  426  
d50e8d7c931f49 Piyush Mehta 2022-01-26  427  	bus = &hcd->self;
d50e8d7c931f49 Piyush Mehta 2022-01-26  428  	if (!bus->otg_port)
d50e8d7c931f49 Piyush Mehta 2022-01-26  429  		return 0;
d50e8d7c931f49 Piyush Mehta 2022-01-26  430  
d50e8d7c931f49 Piyush Mehta 2022-01-26  431  	rh = bus->root_hub;
d50e8d7c931f49 Piyush Mehta 2022-01-26  432  	udev = usb_hub_find_child(rh, bus->otg_port);
d50e8d7c931f49 Piyush Mehta 2022-01-26  433  	if (!udev)
d50e8d7c931f49 Piyush Mehta 2022-01-26  434  		return 0;
d50e8d7c931f49 Piyush Mehta 2022-01-26  435  
d50e8d7c931f49 Piyush Mehta 2022-01-26  436  	if (udev->config && udev->parent == udev->bus->root_hub) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  437  		struct usb_otg20_descriptor *desc;
d50e8d7c931f49 Piyush Mehta 2022-01-26  438  
d50e8d7c931f49 Piyush Mehta 2022-01-26  439  		if (__usb_get_extra_descriptor(udev->rawdescriptors[0],
d50e8d7c931f49 Piyush Mehta 2022-01-26  440  				le16_to_cpu(udev->config[0].desc.wTotalLength),
d7c92a2d32b6fe Piyush Mehta 2022-01-26  441  				USB_DT_OTG, (void **)&desc, sizeof(*desc)) ==
d7c92a2d32b6fe Piyush Mehta 2022-01-26  442  				0) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  443  			int err;
d50e8d7c931f49 Piyush Mehta 2022-01-26  444  
d50e8d7c931f49 Piyush Mehta 2022-01-26  445  			dev_info(&udev->dev, "found OTG descriptor\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  446  			if ((desc->bcdOTG >= 0x0200) &&
d50e8d7c931f49 Piyush Mehta 2022-01-26  447  			    (udev->speed == USB_SPEED_HIGH)) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  448  				err = usb_control_msg(udev,
d50e8d7c931f49 Piyush Mehta 2022-01-26  449  						usb_sndctrlpipe(udev, 0),
d50e8d7c931f49 Piyush Mehta 2022-01-26  450  						USB_REQ_SET_FEATURE, 0,
d50e8d7c931f49 Piyush Mehta 2022-01-26  451  						USB_DEVICE_TEST_MODE,
d50e8d7c931f49 Piyush Mehta 2022-01-26  452  						7 << 8,
d50e8d7c931f49 Piyush Mehta 2022-01-26  453  						NULL, 0, USB_CTRL_SET_TIMEOUT);
d50e8d7c931f49 Piyush Mehta 2022-01-26  454  				if (err < 0) {
d50e8d7c931f49 Piyush Mehta 2022-01-26  455  					dev_info(&udev->dev,
d50e8d7c931f49 Piyush Mehta 2022-01-26  456  						"can't initiate HNP from host: %d\n",
d50e8d7c931f49 Piyush Mehta 2022-01-26  457  						err);
d50e8d7c931f49 Piyush Mehta 2022-01-26  458  					return -1;
d50e8d7c931f49 Piyush Mehta 2022-01-26  459  				}
d50e8d7c931f49 Piyush Mehta 2022-01-26  460  			}
d50e8d7c931f49 Piyush Mehta 2022-01-26  461  		} else {
d50e8d7c931f49 Piyush Mehta 2022-01-26  462  			dev_info(&udev->dev, "didn't find OTG descriptor\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  463  		}
d50e8d7c931f49 Piyush Mehta 2022-01-26  464  	} else {
d50e8d7c931f49 Piyush Mehta 2022-01-26  465  		dev_info(&udev->dev,
d50e8d7c931f49 Piyush Mehta 2022-01-26  466  			 "udev->config NULL or udev->parent != udev->bus->root_hub\n");
d50e8d7c931f49 Piyush Mehta 2022-01-26  467  	}
d50e8d7c931f49 Piyush Mehta 2022-01-26  468  
d50e8d7c931f49 Piyush Mehta 2022-01-26  469  	return 0;
d50e8d7c931f49 Piyush Mehta 2022-01-26  470  }
d50e8d7c931f49 Piyush Mehta 2022-01-26  471  

:::::: The code at line 291 was first introduced by commit
:::::: d50e8d7c931f49b3c396fd2aa71dc6f76604f61d usb: dwc3: otg: fix broken OTG HNP feature

:::::: TO: Piyush Mehta <piyush.mehta at xilinx.com>
:::::: CC: Michal Simek <michal.simek at xilinx.com>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp



More information about the linux-arm-kernel mailing list