usb suspend
来源:互联网 发布:linux for循环 编辑:程序博客网 时间:2024/05/17 08:04
global suspend
host停止一切传输(包括SOF token),在总线上的每一个usb device看到usb bus上空闲状态超过3ms,就会进入suspend状态。
selective suspend
usb总线通过向hub的某个port发送SetPortFeature(PORT_SUSPEND),这样,这个port上的usb device看到port上空闲状态超过3ms,就会进入suspend状态。
通俗点讲,global suspend就是usb bus停止活动,所有的usb device都进入suspend状态,selective suspend就是usb roothub的某个port停止活动,挂在这个port上的usb device就会进入suspend状态。
ehci host controller suspend的时候会调用到两个函数usb_port_suspend和ehci_bus_suspend
usb_port_suspend set_port_feature(hub->hdev, port1, USB_PORT_FEAT_SUSPEND); usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), USB_REQ_SET_FEATURE, USB_RT_PORT, feature, port1, NULL, 0, 1000); <==> rh_urb_enqueue rh_call_control (hcd, urb); hcd->driver->hub_control (hcd, typeReq, wValue, wIndex, tbuf, wLength); <==> ehci_hub_control
在ehci_hub_control根据不同的Request字段和RequestType字段,这里是SetPortFeature,并且value字段是USB_PORT_FEAT_SUSPEND,找到那个case,然后往roothub上那个port对应的port_status寄存器(就是PORTSC寄存器)写PORT_SUSPEND,让那个port进入suspend状态。
另外一个函数ehci_bus_suspend,里面会遍历所有的usb port,然后也是写对应port的port_status寄存器的PORT_SUSPEND,依次让所有的port都进入suspend状态。然后填写相关ehci寄存器,让ehci controller也进入suspend状态。
- usb suspend
- USB 2.0 suspend resume
- usb suspend/resume
- 说说usb suspend/resume
- 苦逼的usb suspend
- Linux下USB suspend/resume源码分析
- Linux下USB suspend/resume源码分析
- USB驱动Suspend&Resume 调用流程分析
- Linux下USB suspend/resume源码分析
- Linux下USB suspend/resume源码分析
- 解决了USB中suspend和resume的一个问题
- How Your USB device's suspend callback be called
- USB的挂起和唤醒 (Suspend and Resume)
- USB的挂起和唤醒 (Suspend and Resume)
- USB的挂起和唤醒 (Suspend and Resume)
- USB的挂起和唤醒 (Suspend and Resume)
- USB的挂起和唤醒(Suspend and Resume)
- EZ-USB的挂起恢复机制:suspend-resume mechanism
- HTML-表格
- centos6.5环境disconf管理端安装配置详解
- X SERVER 优化
- C# Stream作用
- automake快速搭建工程
- usb suspend
- Android greenDAO数据库配置教程
- vundle管理VIM插件
- git The requested URL returned error:443
- Maven Dependency设置
- Codeforce 721C(DAG上dp)
- 32位色和16位色
- 内存管理
- Android项目共享到GitHub_总结篇