Platform : Qualcomm MSM8937

PMIC : Qualcomm PMI8940

OTG base on USB2.0,增加

  1. device 可當 host 也可當 peripheral。
  2. 增加 HNP 用來交換 host peripheral 的 protocol.
  3. 增加 SRP, 當 A-device 關掉 Vbus,B-device 用來向 A-device 請求 打開 Vbus.

OTG spec 定義 device 有兩種 roles,

  1. OTG A-device,id pin 接地, 是 power supplier,供 5V。
  2. OTG B-device,id pin floating,是 power consumer,消耗 5V。

    在初始化時,OTG A-device 會被預設為 host mode,OTG B-device 會被預設為 peripheral mode,

    之後可以在不重新插拔 cable 的狀況下,使用 HNP protocol 來調換 host 及 peripheral,但供電的角色 A-device B-device 是不變的,

    範例:

    印表機與數位相機,

    一條cable,id pin 接地的這端連到 printer,

    printer 為 OTG A-device,並初始化為 host mode,

    camera 為 OTG B-device,並初始化為 peripheral mode,

    但是 printer 不了解 camera 的 print job,所以發一個 HNP protocol,和 camera 交換 host 及 peripheral mode,

    交換後,printer 一樣是 OTG A-device power supplier,但為 peripheral mode,

    而 camera 一樣是 OTG B-device power consumer,但為 host mode,

    camera 就可以與 printer 溝通並印照片。

reference

https://en.wikipedia.org/wiki/USB_On-The-Go

battery charging spec (BC1.1 BC1.2) 有定義 id pin,

id pin 主要用來決定是否要供電給 otg device,及 启动usb主控制器,切換 host mode,

當 id pin 為 low 時,PMIC 需供電給 otg device,啟動 usb 主控制器,切換 host mode (手機插 otg device,手機切成 host mode),

id pin 並不影響 usb communication,

D+ D- 負責 protocol 溝通。

Micro-A plug (start Host mode)

Micro-B plug (start Peripheral mode)

Hardware

otg device id pin 可以接到 MSM8937的 USB_HS_ID ( usb phy ) pin,

也可以接到 PMI8940 的 USB_ID pin,

軟體需要做相對應的修改。

Software

kernel 需要做對應的修改

kernel/msm-3.18/Documentation/devicetree/bindings/usb/msm-hsusb.txt

 32 - qcom,hsusb-otg-otg-control: OTG control (VBUS and ID notifications)
33 can be one of
34 1 - PHY control
35 2 - PMIC control
36 3 - User control (via debugfs)

kernel/msm-3.18/arch/arm/boot/dts/qcom/msm8937.dtsi

1093         usb_otg: usb@78db000 {
1094 compatible = "qcom,hsusb-otg";
...
...
1112 qcom,hsusb-otg-otg-control = <2>; /* PMIC */

Reference

Qualcomm

MTK

最新文章

  1. MySQL高可用架构之MHA
  2. windows环境安装和配置Apache-Tomcat7.0
  3. exception &#39;DOMException&#39; with message &#39;Invalid Character Error&#39; Php + Mongodb
  4. Mono for android 如何动态添加View,线程内部如何更新UI.
  5. ASP.NET中使用 Response.Write(&quot;&lt;script&gt;alert(&#39;****&#39;);&lt;/script&gt;&quot;);后CSS界面发生变化的解决方法 (经验证)
  6. MapReduce计算模型
  7. delete、truncate与drop的区别
  8. UGUI实现NGUI的UIEventListener功能
  9. C#知识拾遗
  10. 关于npm安装报错 网络问题等等等
  11. JDBC-Batch 批量执行
  12. PHP----------安装包lnmp1.3-full安装的lnmp环境,如何安装PHP扩展
  13. Linux学习笔记13—Vi编辑器的学习
  14. Python的Numpy库简述
  15. 16位GUID
  16. 『实践』Android之短信验证码(用的Mob短信验证)
  17. hihocoder 1330 - 数组重排 - [hiho一下167周][最小公倍数]
  18. FastAdmin composer json 版本说明
  19. Requests库入门实例
  20. 面向对象之this关键字

热门文章

  1. 【bzoj4196】[Noi2015]软件包管理器 树链剖分+线段树
  2. POJ3525:Most Distant Point from the Sea——题解
  3. cdh版本的sqoop安装以及配置
  4. Vue语法笔记
  5. &quot;HK&quot;日常之冻结术
  6. Java Web用Freemarker生成带图片的Word文档
  7. bzoj 1189 [HNOI2007]紧急疏散evacuate 二分+网络流
  8. oepncv-学习笔记一
  9. 深入探析 Rational AppScan Standard Edition 多步骤操作
  10. 你还在用notifyDataSetChanged?