On Fri, Sep 09, 2011 at 05:57:38PM +0800, Andiry Xu wrote: > This patch adds sysfs support to xHCI usb2 hardware LPM, so developer can > enable and disable usb2 hardware LPM manually for test purpose. > > Signed-off-by: Andiry Xu <andiry.xu@xxxxxxx> > --- > Documentation/ABI/testing/sysfs-bus-usb | 15 ++++++ > Documentation/usb/power-management.txt | 27 +++++++++++ > drivers/usb/core/sysfs.c | 73 ++++++++++++++++++++++++++++++- > 3 files changed, 114 insertions(+), 1 deletions(-) > > diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb > index 294aa86..8105179 100644 > --- a/Documentation/ABI/testing/sysfs-bus-usb > +++ b/Documentation/ABI/testing/sysfs-bus-usb > @@ -142,3 +142,18 @@ Description: > such devices. > Users: > usb_modeswitch > + > +What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm > +Date: September 2011 > +Contact: Andiry Xu <andiry.xu@xxxxxxx> > +Description: > + If CONFIG_USB_SUSPEND is set and a USB 2.0 lpm-capable device > + is plugged in to a xHCI host which support link PM, it will > + perform a LPM test; if the test is passed and host supports > + USB2 hardware LPM (xHCI 1.0 feature), USB2 hardware LPM will > + be enabled for the device and the USB device directory will > + contain a file named power/usb2_hardware_lpm. The file holds > + a string value (enable or disable) indicating whether or not > + USB2 hardware LPM is enabled for the device. Developer can > + write enable or disable to the file to enable/disable the > + feature. > diff --git a/Documentation/usb/power-management.txt b/Documentation/usb/power-management.txt > index c9ffa9c..7346d1b 100644 > --- a/Documentation/usb/power-management.txt > +++ b/Documentation/usb/power-management.txt > @@ -487,3 +487,30 @@ succeed, it may still remain active and thus cause the system to > resume as soon as the system suspend is complete. Or the remote > wakeup may fail and get lost. Which outcome occurs depends on timing > and on the hardware and firmware design. > + > + > + xHCI hardware link PM > + --------------------- > + > +xHCI host controller provides hardware link power management to usb2.0 > +(xHCI 1.0 feature) and usb3.0 devices which support link PM. By > +enabling hardware LPM, the host can automatically put the device into > +lower power state(L1 for usb2.0 devices, or U1/U2 for usb3.0 devices), > +which state device can enter and resume very quickly. > + > +The user interface for controlling USB2 hardware LPM is located in the > +power/ subdirectory of each USB device's sysfs directory, that is, in > +/sys/bus/usb/devices/.../power/ where "..." is the device's ID. The > +relevant attribute files is usb2_hardware_lpm. > + > + power/usb2_hardware_lpm > + > + When a USB2 device which support LPM is plugged to a > + xHCI host root hub which support software LPM, the > + host will run a software LPM test for it; if the device > + enters L1 state and resume successfully and the host > + supports USB2 hardware LPM, this file will show up and > + driver will enable hardware LPM for the device. You > + can write "enable" or "disable" to the file to > + enable/disable USB2 hardware LPM manually. This is for > + test purpose mainly. > diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c > index cf05b97..8366d5f 100644 > --- a/drivers/usb/core/sysfs.c > +++ b/drivers/usb/core/sysfs.c > @@ -412,6 +412,70 @@ set_level(struct device *dev, struct device_attribute *attr, > > static DEVICE_ATTR(level, S_IRUGO | S_IWUSR, show_level, set_level); > > +static const char enable_string[] = "enable"; > +static const char disable_string[] = "disable"; I think we have a "generic" way of doing "yes/no enable/disable 0/1 T/F" now with sysfs, so please use that and not these strings. thanks, greg k-h -- 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