USB deepsleep
USB模块的deepsleep是依赖于PM管理系统的,deepsleep按流程可分为suspend、resume两个阶段。
设备remote_wakeup功能支持
常见支持remote_wakeup功能的设备:hub、mouse、keyboard。
以mouse为例,在设备的配置描述符的bmAttributes字段的第5字节,表示当前设备是否支持remote_wakeup功能,D5为1时,支持remote_wakeup功能;为0,则表示不支持。
---------------- Configuration Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x0022 (34 bytes)
bNumInterfaces : 0x01
bConfigurationValue : 0x01
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0xA0
D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x01 (yes)
D4…0: Reserved, set 0 : 0x00
MaxPower : 0x32 (100 mA)
(注意:尽管设备支持remote_wakeup功能,但是,不同厂商的设备,对remote_wakeup的实现是不一样的,会存在差异)
linux系统的usb power管理
/sys/bus/usb/device/…/power目录,为设备的power管理目录。(“…”表示设备名,如1-1)
power目录下的各节点属性如下:
详情请参考:linux-3.10\Documentation\usb\power-management.txt
设备的suspend
控制台输入命令如下:
cd /sys/bus/usb/devices/1-1/power/ //进入设备的power操作目录,1-1为roothub
echo “enabled” > wakeup //使能设备的wakeup功能
echo “auto” > control //允许设备自动进入休眠
mouse设备的电源指示灯熄灭。
设备的resume
操作mouse,如按下mouse左键等。
mouse设备的电源指示灯重新亮起。