[Armadillo:08970] A-4x0 にSPIでSDカードスロットを増設

Yasuhisa Nakamura email@hidden
2013年 7月 5日 (金) 03:30:55 JST


中村です。

Armadillo-4x0で、SPIを使ってSDカードスロット(複数)を増設することを
考えています。

まだ試験するハードウェアの準備ができていないので、
(つい先ほど、日付が変わったころに思いついたばかりですので)
- カーネルは対応しているか?
- カーネルのビルドができるか?
ということを調べている段階です。

カーネルconfigでSPIを有効にすると"MMC/SD/SDIO card support"のところに
    <*>   MMC/SD/SDIO over SPI
が出てきましたので、これを有効(<*>)にしてビルドすると、
次のエラーで停止しました。

  CC      drivers/mmc/host/mmc_spi.o
drivers/mmc/host/mmc_spi.c: In function ‘mmc_spi_get_cd’:
drivers/mmc/host/mmc_spi.c:1152: error: ‘struct mmc_spi_platform_data’ has no member nam
ed ‘get_cd’
drivers/mmc/host/mmc_spi.c:1153: error: ‘struct mmc_spi_platform_data’ has no member nam
ed ‘get_cd’
drivers/mmc/host/mmc_spi.c: In function ‘mmc_spi_probe’:
drivers/mmc/host/mmc_spi.c:1344: error: ‘struct mmc_spi_platform_data’ has no member nam
ed ‘caps’
make[4]: *** [drivers/mmc/host/mmc_spi.o] エラー 1

エラーになったところを調べていくと、どうやら、
 drivers/mmc/host/mmc_spi.c
に対して、
 include/linux/spi/mmc_spi.h
が古いようです。

どこでミスマッチが起きたのかわかりませんが、
http://kernelnewbies.org/Linux_2_6_27
の「8.16. MMC」のところに
 - mmc_spi: add support for card-detection polling (commit)
というものがあり、その修正内容("commit"のリンク先)、は
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=619ef4b42128709de4d89d209b2c874f560deecd
によると、
 drivers/mmc/host/mmc_spi.c
 include/linux/spi/mmc_spi.h
の2つです。

今回のコンパイルエラーになった場所とピッタリ一致しており、
このとおりにmmc_spi.hを修正をしたところ、カーネルのビルドは
通りました。


ここで質問が2つあります。

質問1

上で引用した http://kernelnewbies.org/Linux_2_6_27 は、
2.6.27での修正内容の一覧です。(ですよね?)
A-420で使っているカーネルソースは linux-2.6.26-at16 です。

linux-2.6.26-at16 のmmc_spi.cが2.6.27のものになっている
理由は何でしょうか?

上に書いたコンパイルのテストではmmc_spi.hを直しましたが、そうではなく、
mmc_spi.cを直すべき(古いものに戻すべき)なのか?という疑問もあります。


質問2

自分で確かめられれば一番いいのですが、テストするハードウェアを
用意するのにはしばらく時間がかかりそうです。

そこで・・・
もし実績のある方がいらっしゃいましたら、「使えるよ!」とか、
「安定しないよ」とか、「他にも修正が必要だよ」とか・・・
情報をいただけますでしょうか?

よろしくお願いいたします。

-- 
なかむら




armadillo メーリングリストの案内