[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 メーリングリストの案内