diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2006-04-17 18:27:31 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2006-04-17 18:27:31 +0000 |
commit | 088173efc33e62f61f3141d60f4ccfc5aa9b1201 (patch) | |
tree | 6f537c93d183f4b678c5970f643ded5cc02607c6 /sys/arch/mvme88k/dev | |
parent | bdd3b5767a97dc8033ee3aef6794580824c7814a (diff) |
On MVME188, clear SYSFAIL and set up a decent VME data transfer timeout,
instead of relying on what the BUG leaves us with.
Diffstat (limited to 'sys/arch/mvme88k/dev')
-rw-r--r-- | sys/arch/mvme88k/dev/syscon.c | 7 | ||||
-rw-r--r-- | sys/arch/mvme88k/dev/vme.c | 13 |
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 */ |