[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:37570] Re: 1.25MB フォーマットのフロッピーを読むには? (一応解決)
後藤です。
On Sat, 28 Jun 2003 04:01:26 +0900
Wataru Gotoh <gotow@xxxxxxxxx> wrote:
> ただ、このチップのデータシートは手に入りましたので、少し悪あがきしてみ
> ようかとは思っています。
ということで、悪あがきしてみたところ、とりあえず何とかなりましたので報告
します。
橋本さんから教えていただいたページのパッチと説明を元に、私の環境用の処理
を追加してカーネルを再構築したところ、一応想定通りに動いているようです。
具体的な作業ですが、
まず粕川さんのページ(http://210.138.43.10/~kasukawa/linux/)で公開されて
いる kernel2.4.18 用のパッチを kernel-source-2.4.18 パッケージから展開し
たソースにあてました。
この時、drivers/block/Config.in への変更がはじかれたので、その分は手で修
正しています。
そして drivers/block 以下の、Config.in と
floppy.c に変更を加えました(最後に diff をつけておきます)
/boot/config-2.4.18-bf2.4 を使用して make oldconfig を行ない、追加分の設
定をしました。("1232KB (1.25MB) format support" と
"3mode fdd support for National Semiconductor PC87306" を yes に)
あとは普通に make-kpkg で deb を作りインストールしました。
その後、1.25MB と 1.44MB のメディアを交互にマウントしてみたり、読み書き
をさせてみたりしましたが、特に問題なく動いているようです。
どちらのメディアも /dev/fd0 を指定するだけで、ちゃんとマウントできます。
ただ、私が追加したコードは、かなり ad-hoc なものだと思いますので、もし利
用する方は気をつけてください。
一応、Debian のカーネルパッケージにすんなりあたるように、私の環境で改め
て取り直した diff も有るんですが、アーカイブに残るようにここに投稿した方
が良いでしょうか?
もしそうなら、どのような形式で投稿するのが良いのでしょう?
ちなみに大きさは生のテキストで 10KB ほどです。
それでは最後になりましたが、フォローをくださったみなさんと、有用なパッチ
と情報を公開してくださっている粕川さんに、感謝いたします。
どうもありがとうございました。
--
Wataru Gotoh <gotow@xxxxxxxxx>
----- diff ここから -----
--- Config.in.old Mon Jun 30 14:01:14 2003
+++ Config.in Mon Jun 30 14:01:14 2003
@@ -17,6 +17,7 @@
bool ' 3mode fdd support for Winbond W83977' CONFIG_FDC_W83977
bool ' 3mode fdd support for iTE86xx' CONFIG_FDC_IT86xx
bool ' 3mode fdd support for iTE87xx' CONFIG_FDC_IT87xx
+ bool ' 3mode fdd support for National Semiconductor PC87306' CONFIG_FDC_PC87306
fi
fi
if [ "$CONFIG_AMIGA" = "y" ]; then
--- floppy.c.old Mon Jun 30 14:01:14 2003
+++ floppy.c Mon Jun 30 14:54:41 2003
@@ -2114,6 +2114,27 @@
outb(0x02, 0x2f);
}
#endif /* CONFIG_FDC_IT87xx */
+#ifdef CONFIG_FDC_PC87306
+ /* Mode command send.
+ * 1st 0b00000001
+ * 2nd 0b00000010
+ * 3rd 0b00000000
+ * 4th 0b(DENSEL:2)001000
+ * 00=LOW,01=HIGH,11=Default
+ * 5th 0b00000000
+ */
+ output_byte(0x01);
+ output_byte(0x02);
+ output_byte(0x00);
+ if (rpm360) {
+ output_byte(0x08);
+ /* (0x08 | 0x00) */
+ }
+ else {
+ output_byte(0x08 | 0xc0);
+ }
+ output_byte(0x0);
+#endif /* CONFIG_FDC_PC87306 */
sti();
}
#endif /* CONFIG_FD1232 */