[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Initio IOI-9x00



<20010403003911N.h-masuda@ics.es.osaka-u.ac.jp>の記事において
h-masuda@ics.es.osaka-u.ac.jpさんは書きました。

>   timeout_{set,add,del} まわりとかでちょっとつまずきつつ、
> とりあえず compile だけ通るようにしてみたところ、なんとな
> く認識はされましたが、SCSI TAPE や SCSI CD-ROM が全部 sd
> になってしまうので、まだまだ修行が足りないようです。

timeout は OpenBSD で最近変わってるみたいなので、
他の昔からある driver の変更を確認してみるといいと
思います。 NetBSD だと callout_{init,reset,stop} に
直してやればいいんじゃないでしょうか。

> # とりあえず、siop.c あたりを参考にしてますが、もっといい参考コード
>    があれば教えて下さい。

siop は microcode 内蔵で chip 内でいろいろやってくれますが、
ぱっと見 initio のチップは driver で state 切り替えてる
みたいなので、とりあえず ncr53c9x あたりのほうが近いでしょうか。
bus_dma まわりについては siop を見た方がいいですが。

> scsibus0: waiting 2 seconds for devices to settle...
> sd0 at scsibus0 target 4 lun 0: <, , > SCSI0 0/direct fixed
> sd0: drive offline

scsi command は出ていってるけど data が入ってきてない
感じですねえ。 scsi command は tul_state_3() での
	bus_space_write_multi_1(iot, ioh, TUL_SFIFO,
	    pScb->SCB_CDB, pScb->SCB_CDBLen);
みたいに PIO で出してるので、 data の DMA 転送が
うまくできてないっぽいです。が、転送ができてないだけで
割り込みまわりはちゃんと動いてるみたいなので、がんばれば
もうすぐじゃないでしょうか。

iha_scsi_cmd() で xs->data を bus_dmamap_load() したあたりや
とか、 iha_init_tulip() や tul_alloc_scbs() で SCB の dmamap や
アドレス設定してるあたりからチェックするといいかもしれません。

あと、あまり本質でないですが OFFSETOF() は local で定義するより
stddef.h の offsetof() 使った方がいいですね。
---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp