M001のdmesgにも色々吐き出されてておもしろい。
バイブレータドライバをロードしてたり、有線のGigabit Ethernetドライバが動いてたり、PS/2ポートが生きてたり、initでいらんコマンド動かしてたり。
手がかりを探すにはもってこいの資料だったりする。
で、Wifiをon/offしたときのログ。
wifi power up:D8110064|0x4,D811008C|0x4,D81100B4|0x4一部省略してる。
gpio op: 0xD8110064 | 0x4
gpio op: 0xD811008C | 0x4
gpio op: 0xD81100B4 | 0x4
usbcore: registered new interface driver rt2870
usb 1-1: new high speed USB device using ehci_hcd and address 2
usb 1-1: configuration #1 chosen from 1 choice
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
usb 1-1.3: new high speed USB device using ehci_hcd and address 3
usb 1-1.3: configuration #1 chosen from 1 choice
usb 1-1.4: new high speed USB device using ehci_hcd and address 4
usb 1-1.4: configuration #1 chosen from 1 choice
Wifi onにすると、gpioを使ってCPU内部のコントローラ状態が変更される。
それが2~4行目。
んで、rt2870用のドライバ(rt3070だけどね)が登録され使用できるようになる。
と、同時にUSB機器が認識され始める。
このときの、USB機器の接続状態はこんな感じ
WM8505内蔵コントローラ最初に、埋め込みHubが address 2 として見つけられ、USB hub found. 4 ports detected されている。
+----> 埋め込みHub
+----> rt3070(Wifi)
+----> USBメモリ
次に、その先に繋がってるデバイス address 3 と 4 が見つけられているのが分かる(WifiとUSBメモリ)
次に、Wifi off のときのログ
wifi power down:D8110064|0x4,D811008C|0x4,D81100B4&~0x4同じく、gpioを使ってコントローラの状態を変更している。
gpio op: 0xD8110064 | 0x4
gpio op: 0xD811008C | 0x4
gpio op: 0xD81100B4 & 0xFFFFFFFB
- rtusb exit
usb 1-1: USB disconnect, address 2
usb 1-1.3: USB disconnect, address 3
usb 1-1.4: USB disconnect, address 4
すると、勝手に address 2 (埋め込みHub)が disconnect になり、自動的にその先にぶら下がっているデバイス、address 3, 4 も disconnectになる。
これが、Wifi offにするとHubにぶら下がってる他のデバイスが使えなくなる原因。
on/offのシーケンスを考えるに、
事前に実行される gpioのコントローラ状態変更がキーになってるっぽい。
あるビットをマスクすることで、内部のUSBコントローラをスリープにしてしまうのかもしれない。
うーん、、、困ったな。
wifi power up:D8110064|0x4,D811008C|0x4,D81100B4|0x4と
wifi power down:D8110064|0x4,D811008C|0x4,D81100B4&~0x4実際にこの処理をどこかで行っているハズ。
探したんだけど、、、
見つからない。(´・ω・`)
0 件のコメント:
コメントを投稿