2011/05/28

MUSBのSUSPENDとRESETを無効にしてみるが、そういう問題ではない

理由は不明だが、SETUPトークンの次にUSB HostからRESET/SUSPENDが来ることがあるようなので、MUSBのSUSPENDを無効にしてみよう。

<7>musb_interrupt 1530: ** IRQ peripheral usb000c tx0000 rx0000
<7>musb_stage0_irq 385: <== Power=f0, DevCtl=99, int_usb=0xc
<7>musb_stage0_irq 647: BUS RESET as b_peripheral
<7>musb_g_reset 1995: <== B-Device addr=0 driver 'android_usb'
<7>musb_g_disconnect 1939: devctl 99


・・・単にSUSPENDしないだけで、その次にRESETされてるのを忘れていた。
では、毒喰らわば、ということで、リセットも無効にしてみた。
しかし、単にリセットしないだけで、結局SETUPからリトライされている。
しまいには「peripheral reset irq lost!」なんて怒られてしまった。

Host側のdmesgは、こうなっていた。

[25684.100447] usb 1-4.4: new high speed USB device using ehci_hcd and address 105
[25684.210418] usb 1-4.4: no configurations
[25684.210428] usb 1-4.4: can't read configurations, error -22
[25684.300428] usb 1-4.4: new high speed USB device using ehci_hcd and address 106
[25684.410404] usb 1-4.4: no configurations
[25684.410414] usb 1-4.4: can't read configurations, error -22
[25684.500423] usb 1-4.4: new high speed USB device using ehci_hcd and address 107
[25684.530485] usb 1-4.4: no configurations
[25684.530495] usb 1-4.4: can't read configurations, error -22
[25684.620363] usb 1-4.4: new high speed USB device using ehci_hcd and address 108
[25684.650607] usb 1-4.4: no configurations
[25684.650617] usb 1-4.4: can't read configurations, error -22
[25684.660101] hub 1-4:1.0: unable to enumerate USB device on port 4

うん、昔から変わってない。
「unable to enumeration」だ。



「peripheral reset irq lost!」が気になったので、追ってみた。
これは、SETUPパケットを読んだ後、通信速度が未定だった場合に出ている。
ということは、あのRESETには通信速度を決める意味があるのか?

確かに、musb_g_reset()内でmusb->g.speedを決める処理があった。
決める箇所は、ここか、「reset irq lost!」のところだけだ。
通信速度g.speedは、状態を見極める意味で使われているところがままある。

もしや、と、通信速度が決定したらRESETさせない、とすると・・・同じだった。
うーん、どうもそういう問題ではないようだ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。