2011/05/02

[beagleboard]musbだけ2.6.38に置き換えてみたが、認識しない

発想をかえてみよう。

今までは、2.6.38-rc4では修正されている、という情報を元に、kernelを新しくしようとしていた。
しかし、USBドライバさえ修正されるとよくなるのではないだろうか?

まずは、ここを見て、musb_platform_exit()を書き換えてみた。
書き換えたというか、idle timerのキャンセル処理を追加したようなことが書かれていると思い、2.6.38のソースを見て2.6.32に追加しただけ。
1行だけ。
。。。だめだった。USBがあると起動すらしない。
しかも、USB機器を外してもrebootするとpanicを起こしていた。

ならば、と、drivers/usb/musbをまるまる置き換えた。
そうすると、今度はrebootしてもすんなり!
しかし、USB機器を認識しない。。。

まあ、そうそう部品のようにはいかんということだ。

ん? musbはビルドすらされてないようだ。
そもそも、musbってなんだろう?

どうやら、Mentor Graphics社が開発したUSB実装のようだ。
USBコントローラがMentor Graphics社の場合に使うのかな。
sourceforgeでやるようになっているみたいだ。

musbのMakefileにも、こうある。

# for USB OTG silicon based on Mentor Graphics INVENTRA designs

INVENTRA、という単語は、menuconfigにも出てきていた。

・Inventra Highspeed Dual Role Controller (TI, ADI, ...) (USB_MUSB_HDRC)
・Inventra HDRC USB Peripheral (TI, ADI, ...) (USB_GADGET_MUSB_HDRC)
・Both host and peripheral: USB OTG (On The Go) Device (USB_MUSB_OTG)

今の.configで関係しているのはこのあたりだ。
しかし・・・やはりドライバだけを差し替えるというのは、無謀なようだ。

とりあえずわかったのは、musbがないとUSB機器を認識しないし、musbがなければrebootしてもpanicにならない、ということなのかな。
あら、ならば2.6.38でrebootしてもpanicにならなかったのは、単にそのせい?

make xconfigして、2.6.32と2.6.38を見比べると、「Inventra Highspeed Dual Role」のあたりがちょっと違った。
2.6.32は「OMAP 343x high speed USB support」となっている。
2.6.38は「Platform Glue Layer」となって、TUSB6010とかOMAP2430から選ぶようになっているのだ。

実装を見ると、2.6.38では間に1枚はさむようになっている。それがGlue Layerなのだろう。
musbだけ置き換える、というのはダメだな。

0 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。