aboutsummaryrefslogtreecommitdiff
path: root/sys/pc98
diff options
context:
space:
mode:
authorKATO Takenori <kato@FreeBSD.org>1999-01-03 17:26:04 +0000
committerKATO Takenori <kato@FreeBSD.org>1999-01-03 17:26:04 +0000
commit4b6b2a8495bdb9acef94d8b7db6c2f8bb6fef485 (patch)
tree2ad9345af32887fdc3879bd79de51e4ed44ff870 /sys/pc98
parent0d3c3d394297676f4508ff939cc86276921b54fe (diff)
Notes
Diffstat (limited to 'sys/pc98')
-rw-r--r--sys/pc98/pc98/wd.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/sys/pc98/pc98/wd.c b/sys/pc98/pc98/wd.c
index e4648d61bb7c..bcf6733cfbd9 100644
--- a/sys/pc98/pc98/wd.c
+++ b/sys/pc98/pc98/wd.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)wd.c 7.2 (Berkeley) 5/9/91
- * $Id: wd.c,v 1.67 1998/12/17 08:42:10 kato Exp $
+ * $Id: wd.c,v 1.68 1998/12/25 09:05:17 kato Exp $
*/
/* TODO:
@@ -381,9 +381,11 @@ wdprobe(struct isa_device *dvp)
}
}
du->dk_altport = du->dk_port + wd_ctlr;
+#if 0
if ((PC98_SYSTEM_PARAMETER(0x55d) & 3) == 0) {
goto nodevice;
}
+#endif
outb(0x432,(du->dk_unit)%2);
#else /* IBM-PC */
outb(du->dk_port + wd_sdh, WDSD_IBM); /* set unit 0 */
@@ -407,11 +409,31 @@ wdprobe(struct isa_device *dvp)
if (inb(du->dk_port + wd_cyl_lo) == 0x14 &&
inb(du->dk_port + wd_cyl_hi) == 0xeb)
goto reset_ok;
+#ifdef PC98
+ du->dk_unit = 2;
+#else
du->dk_unit = 1;
+#endif
outb(du->dk_port + wd_sdh, WDSD_IBM | 0x10); /* slave */
if (inb(du->dk_port + wd_cyl_lo) == 0x14 &&
inb(du->dk_port + wd_cyl_hi) == 0xeb)
goto reset_ok;
+#ifdef PC98
+ du->dk_unit = 1;
+ outb(0x432,(du->dk_unit)%2);
+ if (wdreset(du) == 0)
+ goto reset_ok;
+ /* test for ATAPI signature */
+ outb(du->dk_port + wd_sdh, WDSD_IBM); /* master */
+ if (inb(du->dk_port + wd_cyl_lo) == 0x14 &&
+ inb(du->dk_port + wd_cyl_hi) == 0xeb)
+ goto reset_ok;
+ du->dk_unit = 3;
+ outb(du->dk_port + wd_sdh, WDSD_IBM | 0x10); /* slave */
+ if (inb(du->dk_port + wd_cyl_lo) == 0x14 &&
+ inb(du->dk_port + wd_cyl_hi) == 0xeb)
+ goto reset_ok;
+#endif
#endif
DELAY(RECOVERYTIME);
if (wdreset(du) != 0) {