Yoshinori Sato
ysato****@users*****
2006年 8月 4日 (金) 12:27:15 JST
At Mon, 24 Jul 2006 23:02:08 -0700, Yoichi Koyanagi wrote: > > 小柳です。こんにちは。 > > しつこく3069USBボードです。 > > On 2006/05/27, at 18:37, Yoichi Koyanagi wrote: > > これで Networkもusbメモリも使えてめでたしめでたし、 > > それじゃあhubをつないで同時に使おう! > > …と試したらまたダメで、hubは認識されるものの、10秒 > > ほどでdisconnectして > > しまい、どうもinterrupt packetがtimeoutしているよう > > です。 > > hubで分けられないと、usbが使えるメリットが激減…。 > > 一難去ってまた一難、といったところです。 > > 結局2.4.xカーネルをあきらめて、2.6.xをベースにドライ > バを調整したら、 > ようやくhub込みで動作するようになりました。 > > DRAMを4MBに拡張してあるボードが前提ですが、 > uClinux-dist-20051110 へのパッチと作業手順、実験結果を > > http://www.tinywillow.com/workshop/Lab/AE3069USB/ > > に置きました。 > もしこんなパッチで良ければ、適当にプロジェクトのCVSに取り > 込んで > いただいて構いません。お役に立てば幸いです。 > パッチ見ました。 で、ちょっと気になった所を。 ・linux-2.6.x/drivers/scsi/sd.c __GFP_DMA使えない方がおかしいので調べます。 いまどきこんなフラグはいらないような気もしますが… ・linux-2.6.x/drivers/usb/core/hub.c なんとなくgccの問題のような気がします。gccのバージョンはいくつですか? ・linux-2.6.x/drivers/usb/net/pegasus.c こんなんでどうでしょうか。 diff --git a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c index 7683926..3c824e3 100644 --- a/drivers/usb/net/pegasus.c +++ b/drivers/usb/net/pegasus.c @@ -40,6 +40,7 @@ #include <linux/module.h> #include <asm/byteorder.h> #include <asm/uaccess.h> +#include <asm/unaligned.h> #include "pegasus.h" /* @@ -651,7 +652,7 @@ static void read_bulk_callback(struct ur goto goon; } if (pegasus->chip == 0x8513) { - pkt_len = le32_to_cpu(*(__le32 *)urb->transfer_buffer); + pkt_len = le32_to_cpu(get_unaligned((__le32 *)urb->transfer_buffer)); pkt_len &= 0x0fff; pegasus->rx_skb->data += 2; } else { 他はよさそうなので取り込んでいきます。 kernelの修正は2.6.18のリリースには多分間に合わないので、2.6.19に入れることに なると思います。 で、勝手に"Signed-off-by: Yoichi Koyanagi <yk****@tinyw*****>"とか付けて送っても いいですか? -- Yoshinori Sato <ysato****@users*****>