Re: how to trigger function in usb_device_pm_ops

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

 



On Wed, 2 Oct 2013, yoma sophian wrote:

> hi alan:
> 
> 2013/10/2 Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>:
> > On Wed, 2 Oct 2013, yoma sophian wrote:
> >
> >> 1. in susped, we will gate our ehci clk
> >> in resumt, we need to release clk gating to let ehci control work.
> >> and above are platform specific behavior need to do
> >> there seems no such place to do above 2 things.
> >
> > You don't do these things in the USB suspend routine; you do them in
> > the controller suspend routine.  For example, take a look at
> > s5p_ehci_suspend() and s5p_ehci_resume() in ehci-s5p.c.
> I found what you mentioned.
> 1. When will platform register dev_pm_ops be called? Is it called
> before or after usb_device_pm_ops ?

The platform suspend routine is called after the USB suspend routine.  
The platform resume routine is called before the USB resume routine.

> 2. in ehci-s5p.c, it create a ".of_match_table".
>     Under what circumstance, the match will happen?
>     That mean how could I make sure the .pm I register in
> platform_driver will be matched and activated in the feature?

The of_match_table entry is used during probe.  It matters only for
drivers that use Open Firmware (i.e., Device Tree).

> >> 2. in ehci_bus_resume, which handle ehci go back from both suspend/hibernate.
> >>     This function handle ehci basic register default setting, such as
> >> re-init operational registers and restore CMD_RUN, framelist size, and
> >> irq threshold
> 
> Why don't we put "handle basic register default setting, such as
> re-init operational registers and restore CMD_RUN, framelist size, and
> irq threshold" as pci_suspend and pci_resume like xhci does?

Some of those things could indeed be moved from ehci_bus_resume to 
ehci_resume.  Not CMD_RUN, though.

However, xHCI is fundamentally different from EHCI.  A single xHCI 
controller manages two physically independent buses: a SuperSpeed bus 
and a full/low/high-speed bus.  An EHCI controller, on the other hand, 
manages only one bus.  Therefore the drivers need to be somewhat 
different.

> That mean ehci_bus_resume will handle both "usb port resume" and
> "system hibernate" jobs. But xhci_bus_resume only handle "usb port
> resume", right?

No.  ehci_bus_resume and xhci_bus_resume both handle bus resume jobs, 
whereas ehci_resume and xhci_resume both handle controller resume jobs.

Bus suspend means putting an entire USB bus into low-power mode.  In 
particular, it means the controller should stop sending packets 
(even SOF packets).

Controller suspend means putting the controller itself into low-power 
mode.

System sleep (which includes system suspend and system hibernate) 
involves both sorts of job: bus suspend/resume _and_ controller 
suspend/resume.

Alan Stern

--
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