On Fri, 2011-09-09 at 09:11 -0700, Greg KH wrote: > 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. > I wonder what the "generic" way is? I can see driver/base/power/sysfs.c using enabled/disabled strings, and some other sysfs files using 0/1 directly. Can you specify the generic way you mentioned or point to me some code I can refer to? Thanks. Thanks, Andiry -- 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