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

[pbsd-mg2] Re: GIU-ISA bridge



 | ISA バスを逸脱するというのがどういう意味かちょっとかからいないので
 | すが、割り込みを giu のポートにつなぐだけで OK なのは、ISA バスから
 | の逸脱といえるのではないでしょうか。

 うーん、Vr41x1で提供しているISA bus interfaceということです。
ICUが何かというのは、基本的には問題ではないはず。

 | 簡単にいうと、MC-R300 や Everex Freestyle の PCIC が2個ついていて、
 | pcic0 の IRQ3 が GIU の port 9 に、
 | pcic1 の IRQ3 が GIU の port 10 に接続されているような場合です。
 | これが、N-N で接続が固定でない場合です。

 この辺ちょっとわかってないんですが、pcic1は
pcic1 at isa0 port 0x3e2-0x3e3 iomem 0x74000-0x77fff
pcic1: controller 1 (Intel 82365SL Revision 1) has socket A only
 で見えるやつですよね(MC-R300で)。これもPCICはIRQ3だと認識して、なおか
つGIUには10番でつながってるんですか...ISA接続にすると問題は、

 1. ISAバスのlocatorのirqをPCICの理解するIRQにすると、
  → isa_intr_establishでGIUのポートへのマッピングが一意につかない。
 2. ISAバスのlocatorのirqをGIUのポート番号にすると、
  → PCICが理解できない。

 ちょっとテストにMC-R300でGIUの10番にpcic1 at isa? port 0x3e2 iomem
0x74000 iosiz 0x4000をつなげてみたんですが、どうもGIUの10番を設定する
と、LCDが消えます。(それでもカーネル自身は問題なく動いている)これはな
んだろう?
 とりあえず、問題となるpcic1をいじりたいんですけど、ちょっと何につながっ
てるのかわかりませんでした。具体的にどのマシンで、何につながってるんで
しょう?

 | ですから、デバイス+irq# → giu port というマッピングが必要に
 | なります。
[...]
 | 1. giu の先の isa バス上のデバイスの attach の際に、isa_chip を
 |    giu の sc ではなく、それぞれ uniq な alloc された小さな構造体
 |    にして、それぞれのデバイスの区別がつくようにする。
 | 2. それぞれのデバイスは locator 'irq' で giu の port を指定されて
 |    いるので、その giu port を識別子として、IRQ#<->giu portのマップ
 |    を1.の小さな構造体からリンクする。
 | 3. isa_irq_alloc() では1.の構造体が第一引数として渡ってくるので、
 |    N-N のマップを参照して正しい giu port を発見できる。

 なるほど。デバイスにくっついてるなら、
pcic0	at isa? port 0x3e0 iomem 0x70000 iosiz 0x4000 irq 0x00090003
 としてisa_intr_establishでIRQと一緒にGIUの指定もするとか。でもこれだ
けだと、pcicのつくpcmciaバスにリダイレクトの情報がつたわらないんですよ
ね。それで、1)をすることになるんですが、するとMI ISAコードをそのまま使
わずにという手になりますよね。だとすれば、今のpcic_vrgiu.cのままの方が、
pcicの下につくcardのinterruptをpcicがredirectするというターゲットの特
徴をそのまま実装してる分、素直かも。
 ちょっとまだ、ISAバスとして実装するには時期尚早ですかね?

# Mobile Gear IIの資料をメーカに請求してみた人いますか?
# いなければ、とりあえず請求してみようかと思ってるんですけど。
---
UCHIYAMA Yasushi
uch@nop.or.jp