Re: [PATCH 9/9 v4] usbcore: add sysfs support to xHCI usb2 hardware LPM

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

 



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


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

  Powered by Linux