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

[debian-users:13080] KXL-810AN CD-ROM Drive



佐野@浜松です。

IBM TP235 で hamm + α の環境 (kernel 2.0.36, pcmcia-cs 3.0.7) に
しています。

今日、職場に Let's Note S22 用として KXL-810AN が届いていたので、
ちょっとばかり借用して、 nin_cs, mps110_cs, qlogic_cs などのドライバー
で動作するかどうか試してみましたが、結論はすべて NG でした。

やったことは以下のとおり。

(前段階)
 potato の binary-i386 から admin の pcmcia-source_3.0.7-2.deb と
 base の kernel-source-2.0.36_2.0.36-2.deb をインストールし、
 make menuconfig 後 make-kpkg --zImage --revision my.0.1 で
カスタムパッケージ作成、インストール。この時点で IBM の Portable CD-ROM
 CD-20X が動作することを確認。ただしこのドライブ、 CD-DA は機能しない。

# そもそも、 PC に接続せずに単体でスイッチを使って Audio CD を再生
# させても非常に音質が悪い。オーディオ再生には使えないと思うべし。

(1)
ワークビットの Web Page から nin_cs.c, nin_cs.h, sc3-unix.html (説明) を
ダウンロード

(2)
安達さんのページを経由して mps110.tar.gz をダウンロード

(3)
最初、説明に従って /usr/src/modules/pcmcia-cs/modules/ 以下に
 pcmcia-cs 3.0.7 では  /usr/src/modules/pcmcia-cs/clients/ 以下に
 aha152x_cs.c, fdomain_cs.c などが存在することを発見。

 nin_cs.c, nin_cs.h および mps110.tar.gz 中の mps110_cs.c.290 を
 /usr/src/modules/pcmcia-cs/clients/ 以下にそれぞれコピー
(mps110_cs.c.290 -> mps110_cs.c とファイル名変更)

(4)
 /usr/src/modules/pcmcia-cs/clients/Makefile を編集。変更したのは

SCSI=$(LINUX)/drivers/scsi

ifdef CONFIG_SCSI
MODULES := ${MODULES} qlogic_cs.o aha152x_cs.o fdomain_cs.o nin_cs.o mps110_cs.o
SRCS := ${SRCS} qlogic_cs.c aha152x_cs.c fdomain_cs.c nin_cs.c mps110_cs.c
endif

この部分で、 MODULES, SRCS に nin_cs.{o,c} と mps110_cs.{o,c} を
追加しています。

(5)
 make してみるとエラーが出るので、一部編集。

$ diff -u mps110_cs.c.290 /usr/src/modules/pcmcia-cs/clients/mps110_cs.c 
--- mps110_cs.c.290     Sun Dec  8 23:41:05 1996
+++ /usr/src/modules/pcmcia-cs/clients/mps110_cs.c      Mon Feb 22 13:53:34 1999
@@ -72,7 +72,7 @@
 int mps110_command(Scsi_Cmnd *);
 int mps110_queuecommand(Scsi_Cmnd *, void (* done)(Scsi_Cmnd *));
 int mps110_abort(Scsi_Cmnd *);
-int mps110_reset(Scsi_Cmnd *);
+int mps110_reset(Scsi_Cmnd *, unsigned int );
 #if (LINUX_VERSION_CODE > VERSION(1,2,13))
 int mps110_biosparam(Disk * , kdev_t, int []);
 #else
@@ -698,7 +698,7 @@
 /*----------------------------------------------------------------*/
 /* reset SCSI bus                                                 */
 /*----------------------------------------------------------------*/
-int    mps110_reset(Scsi_Cmnd * cmd)
+int    mps110_reset(Scsi_Cmnd * cmd, unsigned int j)
 {
     mabort = 2;
     mp_zap();
@@ -1035,7 +1035,7 @@
     case CS_EVENT_CARD_RESET:
        if (link->state & DEV_CONFIG) {
            CardServices(RequestConfiguration, link->handle, &link->conf);
-           mps110_reset(NULL);
+           mps110_reset(NULL, 0);
        }
        break;
     }

--- nin_cs.c	Mon Jan 25 17:32:01 1999
+++ /usr/src/modules/pcmcia-cs/clients/nin_cs.c	Mon Feb 22 14:17:30 1999
@@ -165,7 +165,7 @@
 int ninja3_command(Scsi_Cmnd *);
 int ninja3_queuecommand(Scsi_Cmnd *, void (* done)(Scsi_Cmnd *));
 int ninja3_abort(Scsi_Cmnd *);
-int ninja3_reset(Scsi_Cmnd *);
+int ninja3_reset(Scsi_Cmnd *, unsigned int);
 #if (LINUX_VERSION_CODE > VERSION(1,2,13))
 int ninja3_biosparam(Disk * , kdev_t, int []);
 #else
@@ -1382,7 +1382,7 @@
 	int  baseAddress = DevExt->BaseAddress;
 	unsigned char	dataByte;
 	unsigned char	CountL,CountM, CountH;
-	unsigned long	Count, Counter;
+	unsigned int	Count, Counter;
 
 	dataByte = 0;
 	((PPOINTER_CLEAR)&dataByte)->PointerClear = 1;
@@ -1423,9 +1423,11 @@
 					char*  Buffer,
 					u_long Length )
 {
-/*	u_int port = BaseAddress+WFIFODATA;*/
+/*	u_int port = BaseAddress+WFIFODATA; */
 	if ( Length & 0x3 ) {
-		Ns3DebugPrint(0x01,(KERN_DEBUG "SCSI_READ_FIFOW [%x] (%x)byte", Buffer , Length));
+		Ns3DebugPrint(0x01,
+		 (KERN_DEBUG "SCSI_READ_FIFOW [%x] %d byte",
+                   (int)Buffer, (int)Length));
 		SCSI_READ_FIFOW(BaseAddress, (char *)Buffer , Length);
 	}	else {
 		SCSI_READ_FIFOD(BaseAddress, Buffer , Length);
@@ -3740,7 +3742,7 @@
 /*----------------------------------------------------------------*/
 /* reset SCSI bus                                                 */
 /*----------------------------------------------------------------*/
-int	ninja3_reset(Scsi_Cmnd * cmd)
+int	ninja3_reset(Scsi_Cmnd * cmd, unsigned int j)
 {
     mabort = 2;
 /*

これで一応 make 時のエラーは出なくなりました。

(6)
 /etc/pcmcia/config に以下を追加

--- config	1999/02/22 01:07:30	1.1
+++ config	1999/02/22 05:48:56
@@ -84,6 +84,12 @@
 device "teles_cs"
   class "teles" module "teles_cs"
 
+device "mps110_cs"
+  class "scsi" module "mps110_cs"
+
+device "nin_cs"
+  class "scsi" module "nin_cs"
+
 #
 # Ethernet adapter definitions
 #
@@ -1074,6 +1080,17 @@
 card "TDK NetworkFlyer LAK-CB100X"
   manfid 0x0105, 0x0500
   bind "tulip_cb"
+
+card "Workbit NinjaSCSI-3"
+  version "WBT", "NinjaSCSI-3", "*"
+  bind "nin_cs"
+
+#card "Panasonic KXL-810AN"
+#  manfid 0x0032, 0x0604
+#  version "KME ", "KXLC004", "01"
+#  bind "nin_cs"
+#  bind "mps110_cs"
+#  bind "qlogic_cs"
 
 # Include local configuration settings
 source ./config.opts

(7)
cd /usr/src/linux; make-kpkg --zImage --revision=pika.0.1 modules_image
として pcmcia-modules パッケージを作成。

(8)
/etc/pcmcia/config にコメントとして追加した KXL-810AN 用の
エントリーを、まず

card "Panasonic KXL-810AN"
  version "KME ", "KXLC004", "01"
  bind "nin_cs"

として、 (7) で作成したパッケージをインストール後、念のために再度
 /etc/init.d/pcmcia stop;  /etc/init.d/pcmcia start; を実行。

(9)
いよいよ、 KXL-810AN の PC カードを挿入。だが認識しない。
 /var/log/syslog には

Feb 22 11:24:40 pika cardmgr[15846]: initializing socket 1
Feb 22 11:24:40 pika cardmgr[15846]: unsupported card in socket 1
Feb 22 11:24:40 pika cardmgr[15846]:   product info: "KME ", "KXLC004", "01"
Feb 22 11:24:40 pika cardmgr[15846]:   manfid: 0x0032, 0x0604  function: 8 (SCSI

という情報が記録されている。

(10)
 /etc/pcmcia/config のエントリーを

card "Panasonic KXL-810AN"
  manfid 0x0032, 0x0604
  bind "nin_cs"

として、再度 /etc/init.d/pcmcia stop;  /etc/init.d/pcmcia start; を実行。
この状態で PC カードを挿入すると (nin_cs.h の DEBUG 関連をすべて有効に
してあるためメッセージが多くなっています) syslog には

Feb 22 12:16:28 pika cardmgr[950]: socket 0: Panasonic KXL-810AN
Feb 22 12:16:29 pika cardmgr[950]: executing: 'insmod /lib/modules/2.0.36/pcmcia/nin_cs.o'
Feb 22 12:16:29 pika kernel: ninja3_config[240] 
Feb 22 12:16:29 pika kernel:  <7>mbase[240] minitid[7] irq[9] 
Feb 22 12:16:29 pika kernel: ninja3_detect ninja3_detect mbase[240] minitid[7] irq[9] 
Feb 22 12:16:29 pika kernel: ninja3_detect end 
Feb 22 12:16:29 pika kernel: ninja3_detect end 
Feb 22 12:16:29 pika kernel: scsi0 : NinjaSCSI-3 Driver version 0.10, iobase at 240 
Feb 22 12:16:29 pika kernel: scsi : 1 host. 
Feb 22 12:16:29 pika kernel: Test Unit Ready <7>00 <7>00 <7>00 <7>00 <7>00 <7> 
Feb 22 12:16:29 pika kernel: ); residual=0; buffers=0; phase |<7>; phase[0] (<7>; next=0x00000000 
Feb 22 12:16:35 pika kernel: COMMAND <7>[0]<7>[0]<7>[0]<7>[0]<7>[0]<7>[0]-- Start Arbitration -- scsi : aborting command due to timeout : pid 0, scsi0, channel 0, id 0, lun 0 Test Unit Ready 00 00 00 00 00  
Feb 22 12:16:35 pika kernel: int3: 0000 
Feb 22 12:16:35 pika kernel: CPU:    0 
Feb 22 12:16:35 pika kernel: EIP:    0010:[<00000006>] 
Feb 22 12:16:35 pika kernel: EFLAGS: 00000202 
Feb 22 12:16:35 pika kernel: eax: 00000000   ebx: 00c01018   ecx: 001d8e6b   edx: 00ff0003 
Feb 22 12:16:35 pika kernel: esi: 00000293   edi: 00000000   ebp: 00ec6318   esp: 001d6fac 
Feb 22 12:16:35 pika kernel: ds: 0018   es: 0018   fs: 002b   gs: 0018   ss: 0018 
Feb 22 12:16:35 pika kernel: Process swapper (pid: 0, process nr: 0, stackpage=001d50c0) 
Feb 22 12:16:35 pika kernel: Stack: 001ae68f 00c01018 00c01018 00ec6318 00000202: 001d7000 001ad1d8 00c01018  
Feb 22 12:16:35 pika kernel:        00000003 00c01018 001aeb46 00c01018 00040000 00212f40 00000001 00112c7c  
Feb 22 12:16:35 pika kernel:        00000001 ffffffff 00000001 00000001 05829000  
Feb 22 12:16:35 pika kernel: Call Trace: [scsi_abort+279/508] [scsi_times_out+64/296] [scsi_main_timeout+134/168] [timer_bh+248/820]  
Feb 22 12:16:35 pika kernel: Code: 00 f0 c3 e2 00 f0 49 cc 00 f0 49 cc 00 f0 54 ff 00 f0 49 cc  
Feb 22 12:16:35 pika kernel: Aiee, killing interrupt handler 
Feb 22 12:16:35 pika kerneld: error: exit: Identifier removed
Feb 22 12:16:35 pika kernel: kfree of non-kmalloced memory: 001d7108, next= 00212db0, order=244556 
Feb 22 12:16:35 pika kernel: kfree of non-kmalloced memory: 001d70f8, next= 00212db0, order=244556 
Feb 22 12:16:35 pika kernel: kfree of non-kmalloced memory: 001d760c, next= 00212db0, order=244556 
Feb 22 12:16:35 pika kernel: idle task may not sleep 
Feb 22 12:16:35 pika last message repeated 4 times
Feb 22 12:16:36 pika kernel: SCSI host 0 abort (pid 0) timed out - resetting 
Feb 22 12:16:36 pika kernel: SCSI bus is being reset for host 0 channel 0. 
Feb 22 12:16:36 pika kernel: ninja3_reset 
Feb 22 12:16:46 pika kernel: SCSI host 0 abort (pid 0) timed out - resetting 
Feb 22 12:16:46 pika kernel: SCSI bus is being reset for host 0 channel 0. 
Feb 22 12:16:46 pika kernel: ninja3_reset 
Feb 22 12:16:56 pika kernel: SCSI host 0 abort (pid 0) timed out - resetting 
Feb 22 12:16:56 pika kernel: SCSI bus is being reset for host 0 channel 0. 
(中略)
Feb 22 12:17:56 pika kernel: ninja3_reset 
Feb 22 12:18:03 pika kernel: scsi_done[3] 
Feb 22 12:18:03 pika kernel: Request Sense <7>00 <7>00 <7>00 <7>10 <7>00 <7> 
Feb 22 12:18:03 pika kernel: ); residual=0; buffers=0; phase |<7>; phase[0] (<7>; next=0x00000000 
Feb 22 12:18:03 pika kernel: COMMAND <7>[3]<7>[0]<7>[0]<7>[0]<7>[10]<7>[0]-- Start Arbitration -- <7>scsi_done[3] 
Feb 22 12:18:03 pika kernel: scsi_done[3] 
Feb 22 12:18:03 pika kernel: Request Sense <7>00 <7>00 <7>00 <7>10 <7>00 <7> 
Feb 22 12:18:03 pika kernel: ); residual=0; buffers=0; phase |<7>; phase[0] (<7>; next=0x00000000 
Feb 22 12:18:03 pika kernel: COMMAND <7>[3]<7>[0]<7>[0]<7>[0]<7>[10]<7>[0]-- Start Arbitration -- <7>scsi_done[3] 
Feb 22 12:18:03 pika kernel: scsi_done[3] 
Feb 22 12:18:03 pika kernel: Request Sense <7>00 <7>00 <7>00 <7>10 <7>00 <7> 
Feb 22 12:18:03 pika kernel: ); residual=0; buffers=0; phase |<7>; phase[0] (<7>; next=0x00000000 
Feb 22 12:18:03 pika kernel: COMMAND <7>[3]<7>[0]<7>[0]<7>[0]<7>[10]<7>[0]-- Start Arbitration -- <7>scsi_done[3] 
Feb 22 12:18:03 pika kernel: scsi_done[3] 
Feb 22 12:18:03 pika kernel: Request Sense <7>00 <7>00 <7>00 <7>10 <7>00 <7> 
Feb 22 12:18:03 pika kernel: ); residual=0; buffers=0; phase |<7>; phase[0] (<7>; next=0x00000000 
Feb 22 12:18:03 pika kernel: COMMAND <7>[3]<7>[0]<7>[0]<7>[0]<7>[10]<7>[0]-- Start Arbitration -- <7>scsi_done[3] 
Feb 22 12:18:03 pika kernel: scsi_done[3] 
Feb 22 12:18:03 pika kernel: ninja3_event end 
Feb 22 12:18:03 pika kernel: Device busy??? 

という感じでした。

(11)
 /etc/pcmcia/config のエントリーを

card "Panasonic KXL-810AN"
  manfid 0x0032, 0x0604
  bind "mps110_cs"

として、再度 /etc/init.d/pcmcia stop;  /etc/init.d/pcmcia start; を実行。
この状態で PC カードを挿入すると syslog には

Feb 22 14:27:13 pika cardmgr[193]: socket 1: Panasonic KXL-810AN
Feb 22 14:27:13 pika kernel: cs: memory probe 0x0d0000-0x0dffff: clean. 
Feb 22 14:27:14 pika cardmgr[193]: executing: 'insmod /lib/modules/2.0.36/pcmcia/mps110_cs.o'
Feb 22 14:27:14 pika kernel: scsi0 : mPS110 Driver version 1.00, iobase at 240 
Feb 22 14:27:14 pika kernel: scsi : 1 host. 
Feb 22 14:27:20 pika kernel: scsi : aborting command due to timeout : pid 0, scsi0, channel 0, id 0, lun 0 Test Unit Ready 00 00 00 00 00  
Feb 22 14:27:26 pika kernel: scsi : aborting command due to timeout : pid 1, scsi0, channel 0, id 1, lun 0 Test Unit Ready 00 00 00 00 00  
Feb 22 14:27:32 pika kernel: scsi : aborting command due to timeout : pid 2, scsi0, channel 0, id 2, lun 0 Test Unit Ready 00 00 00 00 00  
Feb 22 14:27:38 pika kernel: scsi : aborting command due to timeout : pid 3, scsi0, channel 0, id 3, lun 0 Test Unit Ready 00 00 00 00 00  
Feb 22 14:27:44 pika kernel: scsi : aborting command due to timeout : pid 4, scsi0, channel 0, id 4, lun 0 Test Unit Ready 00 00 00 00 00  
Feb 22 14:27:50 pika kernel: scsi : aborting command due to timeout : pid 5, scsi0, channel 0, id 5, lun 0 Test Unit Ready 00 00 00 00 00  
Feb 22 14:27:56 pika kernel: scsi : aborting command due to timeout : pid 6, scsi0, channel 0, id 6, lun 0 Test Unit Ready 00 00 00 00 00  
Feb 22 14:27:56 pika cardmgr[193]: executing: './scsi start n/a'
Feb 22 14:27:56 pika cardmgr[193]: + open() failed: No such file or directory
Feb 22 14:27:56 pika cardmgr[193]: executing: './scsi check n/a'
Feb 22 14:27:56 pika cardmgr[193]: + open() failed: No such file or directory
Feb 22 14:27:56 pika cardmgr[193]: shutting down socket 1
Feb 22 14:27:56 pika cardmgr[193]: executing: './scsi stop n/a'
Feb 22 14:27:56 pika cardmgr[193]: + open() failed: No such file or directory
Feb 22 14:27:56 pika cardmgr[193]: + /dev/n/a: No such file or directory
Feb 22 14:27:56 pika cardmgr[193]: stop cmd exited with status 1
Feb 22 14:27:56 pika kernel: scsi : 0 hosts. 

となりました。

(12)
最後に、ものは試しと /etc/pcmcia/config のエントリーを

card "Panasonic KXL-810AN"
  manfid 0x0032, 0x0604
  bind "qlogic_cs"

として、再度 /etc/init.d/pcmcia stop;  /etc/init.d/pcmcia start; を実行。
この状態で PC カードを挿入すると syslog には

Feb 22 14:19:34 pika cardmgr[776]: socket 1: Panasonic KXL-810AN
Feb 22 14:19:34 pika cardmgr[776]: executing: 'insmod /lib/modules/2.0.36/pcmcia/qlogic_cs.o'
Feb 22 14:19:34 pika kernel: Ql: Using preset base address of 240 
Feb 22 14:19:34 pika kernel: Ql: Using preset IRQ 9 
Feb 22 14:19:34 pika kernel: scsi0 : Qlogicfas Driver version 0.45, chip 00 at 240, IRQ 9, TPdma:1 
Feb 22 14:19:34 pika kernel: scsi : 1 host. 
Feb 22 14:19:40 pika kernel: scsi : aborting command due to timeout : pid 0, scsi0, channel 0, id 0, lun 0 Test Unit Ready 00 00 00 00 00  

となり、そのまま固まってしまいます。 Ctrl+Alt+Del も効かないため
電源スイッチで強制終了させました。

結局、現在一般に入手できるコードで KXL-810AN を動作させられる
ドライバーは無いみたいですね。私もここまでやって疲れてしまったので
とりあえず「使えないもの」と諦めてしまいました。

以上、何かの参考にでもなれば。

-- 
     #わたしのおうちは浜松市、「夜のお菓子」で有名さ。
    <xlj06203@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)