Re: About resume time optimization for bus resume routine

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

 



On Thu, Oct 11, 2012 at 03:20:51PM -0400, Alan Stern wrote:
> On Thu, 11 Oct 2012, Peter Chen wrote:
> 
> 
> > > 	There is a port on the root hub with suspend status clear
> > > 	and enabled status set (which implies there must be a device
> > > 	attached to the port, because disconnected ports can't be
> > > 	enabled).
> > > 
> > > Obviously if a port isn't enabled then it doesn't need any delay.
> > Is it ok to set one hcd flag, like hcd->unsuspended_device_on_port
> > to get condition at xxx_bus_suspend?
> 
> Only if you're willing to change all the host controller drivers to 
> make them set that flag!

Taking EHCI controller as an example, it just needs to change ehci_bus_resume,
if there is any enabled, unsuspended port, set hcd->unsuspended_device_on_port
> 
> usb_bus_resume() can poll the port statuses to see if there are any 
> enabled, unsuspended ports.  If there aren't any, the delay can be 
> skipped.
Taking EHCI controller as an example, you mean:

- Change hcd_bus_resume like below:

	status = hcd->driver->bus_resume(hcd);
	clear_bit(HCD_FLAG_WAKEUP_PENDING, &hcd->flags);
	if (status == 0) {
		char	buffer[6];

		status = hcd->driver->hub_status_data(hcd, buffer);
		if (status != 0) {
			/* There are any enabled unsuspended ports */
			/* TRSMRCY = 10 msec */
			msleep(10);
		spin_lock_irq(&hcd_root_hub_lock);
- Add get any enabled, unsuspended port as port change condition at
ehci_hub_status_data.

> 
> How does that sound?

So, you prefer the latter one?

-- 

Best Regards,
Peter Chen

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

  Powered by Linux