summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorjmcneill <jmcneill@NetBSD.org>2003-01-09 01:25:13 +0000
committerjmcneill <jmcneill@NetBSD.org>2003-01-09 01:25:13 +0000
commit41e9687a33e07afb53e0d7dd5dea896c875b0072 (patch)
treeabe52377cb8a0c1bfd874f88964c56ecc7d9b254 /sys/dev
parent3d7c8fcb5158f1187be7a4411f6db822409f25cc (diff)
A few fallbacks:
1. If _FDE fails, fall-back to the old-style of drive probing. 2. If _FDI fails on a drive, assume a 1.44MB 3.5" floppy drive.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/acpi/fdc_acpi.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/sys/dev/acpi/fdc_acpi.c b/sys/dev/acpi/fdc_acpi.c
index ae61040e357..d20a0cf86e0 100644
--- a/sys/dev/acpi/fdc_acpi.c
+++ b/sys/dev/acpi/fdc_acpi.c
@@ -1,4 +1,4 @@
-/* $NetBSD: fdc_acpi.c,v 1.3 2003/01/09 00:22:39 jmcneill Exp $ */
+/* $NetBSD: fdc_acpi.c,v 1.4 2003/01/09 01:25:13 jmcneill Exp $ */
/*
* Copyright (c) 2002 Jared D. McNeill <jmcneill@invisible.ca>
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fdc_acpi.c,v 1.3 2003/01/09 00:22:39 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fdc_acpi.c,v 1.4 2003/01/09 01:25:13 jmcneill Exp $");
#include "rnd.h"
@@ -223,11 +223,16 @@ fdc_acpi_attach(struct device *parent, struct device *self, void *aux)
if (sc->sc_present >= 0) {
sc->sc_known = 1;
fdc_acpi_getknownfds(asc);
- fdcattach(sc);
} else {
- printf("%s: unable to enumerate floppy drives\n",
+ /*
+ * XXX if there is no _FDE control method, attempt to
+ * probe without pnp
+ */
+ printf("%s: unable to enumerate, attempting normal probe\n",
sc->sc_dev.dv_xname);
}
+
+ fdcattach(sc);
}
static int
@@ -300,8 +305,12 @@ fdc_acpi_getknownfds(struct fdc_acpi_softc *asc)
continue;
rv = acpi_eval_struct(asc->sc_node->ad_handle, "_FDI", &buf);
if (rv != AE_OK) {
+#ifdef ACPI_FDC_DEBUG
printf("%s: failed to evalulate _FDI: %x on drive %d\n",
sc->sc_dev.dv_xname, rv, i);
+#endif
+ /* XXX if _FDI fails, assume 1.44MB floppy */
+ sc->sc_knownfds[i] = &fdc_acpi_fdtypes[0];
continue;
}
fdi = (ACPI_OBJECT *)buf.Pointer;