AtherosのMIPS SOCにはSPIサポートがあります。
初期のAR5の時代のものとAR7以降のものとAR934xで拡張された仕様があるようです。
AR7系が多いので、これを見ると非常に原始的なSPIサポートで、クロックビットを操作してバイトの8ビットを送信して、その時の受信データがレジスタに入るという仕様でした。
さすがにこれではパフォーマンスがでません。
よくよくデーターシートを見るとSerial Flashの内容が0x1f000000からのメモリアドレスにマップされる機構があって、これを使うと高速にアクセスできるようです。
以前書いたflashの記事でもfreescaleのimxで同じ機能があるって教えてもらいました。
実はAR5をやってたときに、なんとなくきがついていたのですが、あまりまじめに調べていませんでした。
Ralinkの同じくらいのクロックのSOCが早いと感じたのはこのためかもしれません。
結局AR934Xで拡張された32Bit単位での処理を実装してみました。