0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ixp425のpci

Last updated at Posted at 2023-04-07

ixp425にはUSBが入っているのですが1.0なのでターゲットのモジュールにはPCIにUSB 2.0にチップがぶら下がっています。

PICバスはリトルエンディアンでixp425はビッグエンディアンなので変換する必要があります。

変換用のbusアクセスをarm/xscale/ixp425_pci_asm.Sで用意しています。この中では__ARMEB__が定義されている場合は変換して処理して、そうでない場合はそのまま処理するようになっています。

ところがixp425にも変換機能があります。

image.png

これをevbarm/ixdp425/ixdp425_pci.cで設定します。

        PCI_CSR_WRITE_4(sc, PCI_CSR, CSR_IC | CSR_ABE | CSR_PDS);

なぜかCSR_ADSが抜けています。

image.png

おそらく変換を意図しているので、反対の反対なので、変換しない状態、すなわちリトルエンディアンになり、正しく処理されないようなきがします。

またEHCIなデバイスはプローブできてattachな処理が行われるのですが、レジスタが正しく見えません。

EHCIの先頭からバイトでダンプしたところです。

10 00 95 00 04 22 00 00 02 00 00 00 00

3バイト目(オフセット2)は2バイトのHCIVERSIONになりますが、なんだか変な値です。正しくは01,00です。エンディアンが逆であっても変です。

なんでかな。。。

関係ないですが、初期のチップ(ステップA0)にはバグがあって、arm/xscale/ixp425_pci.cでPCI_NP_HAVE_BUGが定義されていて、ワークアラウンドが入っています。

割り込み4本とリセットとクロックはGPIOを使っています。

NSLU2は同じようにPCIバスのUSB 2.0チップのNEC uPD720101が使われていて、動作していたようなのだが、なんで動かないかな。。。

自分の手元にあるターゲットは、SOCのGPIOのCLKを使わず、水晶発信器のクロックを使っているようだ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?