auto_stop = (new_state == UHCI_RH_AUTO_STOPPED); dev_dbg(uhci_dev(uhci), "%s%s\n", __FUNCTION__, (auto_stop ? " (auto-stop)" : ""));
__acquires(uhci->lock){	int auto_stop;	int int_enable;	auto_stop = (new_state == UHCI_RH_AUTO_STOPPED);	dev_dbg(uhci_dev(uhci), "%s%s\n", __FUNCTION__,			(auto_stop ? " (auto-stop)" : ""));	/* If we get a suspend request when we're already auto-stopped	 * then there's nothing to do.	 */	if (uhci->rh_state == UHCI_RH_AUTO_STOPPED) {		uhci->rh_state = new_state;		return;	}	/* Enable resume-detect interrupts if they work.	 * Then enter Global Suspend mode, still configured.	 */	uhci->working_RD = 1;	int_enable = USBINTR_RESUME;	if (resume_detect_interrupts_are_broken(uhci)) {		uhci->working_RD = int_enable = 0;	}	outw(int_enable, uhci->io_addr + USBINTR);	outw(USBCMD_EGSM | USBCMD_CF, uhci->io_addr + USBCMD);	mb();	udelay(5);	/* If we're auto-stopping then no devices have been attached	 * for a while, so there shouldn't be any active URBs and the	 * controller should stop after a few microseconds.  Otherwise	 * we will give the controller one frame to stop.	 */	if (!auto_stop && !(inw(uhci->io_addr + USBSTS) & USBSTS_HCH)) {		uhci->rh_state = UHCI_RH_SUSPENDING;		spin_unlock_irq(&uhci->lock);		msleep(1);		spin_lock_irq(&uhci->lock);		if (uhci->hc_inaccessible)	/* Died */			return;	}	if (!(inw(uhci->io_addr + USBSTS) & USBSTS_HCH))		dev_warn(uhci_dev(uhci), "Controller not stopped yet!\n");	uhci_get_current_frame_number(uhci);	smp_wmb();	uhci->rh_state = new_state;	uhci->is_stopped = UHCI_IS_STOPPED;	uhci_to_hcd(uhci)->poll_rh = !int_enable;	uhci_scan_schedule(uhci, NULL);}