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

TDK CF works fine (was Re: TDK 96M CF doesn't work?)



あおやまと申します。

TDK の CF が使えないと以前レポートしましたが、dev/pcmcia/pcmcia_cis.c 
を修正して動くようになりました。動かなかった原因は、TDK の CF の CIS
tuple がうまく読めなかったからだったようです。

TDK の CF の tuple は以下のようになっています。

At Mon, 26 Jun 2000 22:09:10 +0900,
Kenji Aoyama / 青山健治 <aoyama@nk.mcu.or.jp> wrote:

> === ブート時のログ ===
 (略)
> pcmcia0: CIS tuple chain:
 (略)
> CISTPL_VERS_1
>  15 0b 04 01 54 44 4b 20 54 43 5f 4d ff
   +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c

ソースを見ると、ここの文字列(上記+4以降)の最後は 0x0 があってから 0xff 
があることを仮定しているようです。実際他のカードではそうなっていました。

そこで、下記のように修正してみたところ、きちんとブートして動くようにな
りました。

以上ご報告まで。

-------- パッチここから
--- pcmcia_cis.c.orig	Mon Feb 21 12:26:41 2000
+++ pcmcia_cis.c	Sun Jul  2 18:13:14 2000
@@ -778,8 +778,19 @@
 			for (count = 0, start = 0, i = 0;
 			    (count < 4) && ((i + 4) < 256); i++) {
 				ch = pcmcia_tuple_read_1(tuple, 2 + i);
+#if 0
 				if (ch == 0xff)
 					break;
+#else
+				if (ch == 0xff) {
+					if (i > start) {
+						state->card->cis1_info_buf[i] = 0;
+						state->card->cis1_info[count] =
+						    state->card->cis1_info_buf + start;
+					}
+					break;
+				}
+#endif
 				state->card->cis1_info_buf[i] = ch;
 				if (ch == 0) {
 					state->card->cis1_info[count] =
-------- パッチここまで
--
Kenji Aoyama / aoyama@nk.mcu.or.jp (at home, UUCP)