USBのSUSPENDについて検索すると、Renesasのページが見つかった。
よくわからんが、Hi-SpeedモードではSUSPENDとRESETの区別はつかないらしい(どちらもD+, D-をLに落とすため)。
こっちのページには、USBを接続してからの流れが書いてあった。
ふむふむ。
ここで「Enumeration」という言葉が出てくる。
kernelのログにもよく出てくるのだ。「Enumerationできなかった」という形で。
どうやら、セットアップステージからはじまる一連の流れらしい。
ついでなので検索してみると、興味深いページが出てきた。
こちらによると、SETUPでGET_DESCRIPTORのあと、Hostからリセット要求が来ている、とある。
Renesasのページでは、SUSPENDとRESETの区別はつかないとある(状況次第だが)。
そう考えると、同じ状況のように見える。
この方は、RESETに対して特に何もしていないとのことであった。
MUSBでは、musb_g_suspend()を呼び出している。
<7>musb_g_suspend 1903: devctl 99
このdevctlは、MUSBのレジスタらしく、0x99だ。
MUSB_DEVCTL_BDEVICE 0x80
MUSB_DEVCTL_VBUS 0x18
MUSB_DEVCTL_SESSION 0x01
この3つをORすると、0x99になる。
推測だが、「USB-B側で動作していて、VBUS供給されていて、通信中」というところか。
USB-B側になっている場合、ドライバにSUSPEND要求を出している。
それが、
<7>android_usb gadget: suspend composite
ということか。
なんとなく、話がつながったように思える。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。