summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2006-04-17 18:27:31 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2006-04-17 18:27:31 +0000
commit088173efc33e62f61f3141d60f4ccfc5aa9b1201 (patch)
tree6f537c93d183f4b678c5970f643ded5cc02607c6
parentbdd3b5767a97dc8033ee3aef6794580824c7814a (diff)
On MVME188, clear SYSFAIL and set up a decent VME data transfer timeout,
instead of relying on what the BUG leaves us with.
-rw-r--r--sys/arch/mvme88k/dev/syscon.c7
-rw-r--r--sys/arch/mvme88k/dev/vme.c13
2 files changed, 15 insertions, 5 deletions
diff --git a/sys/arch/mvme88k/dev/syscon.c b/sys/arch/mvme88k/dev/syscon.c
index bc02b437717..0d1111f5889 100644
--- a/sys/arch/mvme88k/dev/syscon.c
+++ b/sys/arch/mvme88k/dev/syscon.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: syscon.c,v 1.24 2006/04/15 15:45:21 miod Exp $ */
+/* $OpenBSD: syscon.c,v 1.25 2006/04/17 18:27:30 miod Exp $ */
/*
* Copyright (c) 1999 Steve Murphree, Jr.
* All rights reserved.
@@ -130,6 +130,11 @@ sysconattach(parent, self, args)
printf("\n");
/*
+ * Clear SYSFAIL if lit.
+ */
+ *(volatile u_int32_t *)MVME188_UCSR |= UCSR_DRVSFBIT;
+
+ /*
* pseudo driver, abort interrupt handler
*/
sc->sc_abih.ih_fn = sysconabort;
diff --git a/sys/arch/mvme88k/dev/vme.c b/sys/arch/mvme88k/dev/vme.c
index 51e90a062a3..daf63f9fe3d 100644
--- a/sys/arch/mvme88k/dev/vme.c
+++ b/sys/arch/mvme88k/dev/vme.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vme.c,v 1.41 2006/04/17 18:26:26 miod Exp $ */
+/* $OpenBSD: vme.c,v 1.42 2006/04/17 18:27:30 miod Exp $ */
/*
* Copyright (c) 2004, Miodrag Vallat.
* Copyright (c) 1999 Steve Murphree, Jr.
@@ -584,11 +584,16 @@ void
vmesyscon_init(sc)
struct vmesoftc *sc;
{
+ u_int32_t ucsr;
+
/*
- * Nothing to do - though we ought to check the settings and
- * print them. Abort button vector has already been setup in
- * sysconattach().
+ * Force a reasonable timeout for VME data transfers.
+ * We can not disable this, this would cause autoconf to hang
+ * on the first missing device we'll probe.
*/
+ ucsr = *(volatile u_int32_t*)MVME188_UCSR;
+ ucsr = (ucsr & ~VTOSELBITS) | VTO128US;
+ *(volatile u_int32_t *)MVME188_UCSR = ucsr;
}
#endif /* NSYSCON */