usb suspend/resume

1. 简介


做USB 这么长时间以来,一直埋头在各种gadget, android framework以及芯片bug,很少涉及到usb core层,今天有机会,正好看了suspend/resume, 下面就以一个具体的实例来回顾下usb suspend/resume。


从上图可以看出,这个实例用的是 Synopsys的usb控制器(dwc),下面来具体介绍下suspen/resume


2. suspend


usb suspend从device开始,然后到host,针对device或者host,则是先suspend每一个interface,然后才是device或host本身,接下来我们看下这个实例的suspend过程


2.1. suspend U盘


usb_dev_suspend --> usb_suspend --> usb_suspend_both

从usb_suspend_both的code中可以看出我们前面提到了一个原则 “先suspend interface, 然后是设备本身"

1168 static int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
1169 {
1170     int         status = 0;
1171     int         i = 0, n = 0;
1172     struct usb_interface    *intf;
1173 
1174     if (udev->state == USB_STATE_NOTATTACHED ||
1175             udev->state == USB_STATE_SUSPENDED)
1176         goto done;
1177 
1178     /* Suspend all the interfaces and then udev itself */
1179     if (udev->actconfig) {
1180         n = udev->actconfig->desc.bNumInterfaces;
1181         printk("%s interface:%d\n", __func__, n);
1182         for (i = n - 1; i >= 0; --i) {
1183            
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值