diff options
author | Brad Smith <brad@cvs.openbsd.org> | 2006-03-07 20:46:47 +0000 |
---|---|---|
committer | Brad Smith <brad@cvs.openbsd.org> | 2006-03-07 20:46:47 +0000 |
commit | 68f73480e8e568e1ed023872984f4b600f27a175 (patch) | |
tree | 4e1e2cabff8d888a52fb6bad9b506022ccb2eec0 /sys | |
parent | 3749e2909f3f8eb6df96f9a31f9189fb6562609e (diff) |
Don't issue I2O_EXEC_IOP_CLEAR to AMI boards, since some
firmware revisions can't handle it.
From ad NetBSD
ok mickey@
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/i2o/iop.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/dev/i2o/iop.c b/sys/dev/i2o/iop.c index 7239d9b417e..dd38ba203dd 100644 --- a/sys/dev/i2o/iop.c +++ b/sys/dev/i2o/iop.c @@ -1,4 +1,4 @@ -/* $OpenBSD: iop.c,v 1.27 2005/11/19 02:18:00 pedro Exp $ */ +/* $OpenBSD: iop.c,v 1.28 2006/03/07 20:46:46 brad Exp $ */ /* $NetBSD: iop.c,v 1.12 2001/03/21 14:27:05 ad Exp $ */ /*- @@ -887,10 +887,18 @@ iop_shutdown(void *junk) continue; if ((sc->sc_flags & IOP_ONLINE) == 0) continue; + iop_simple_cmd(sc, I2O_TID_IOP, I2O_EXEC_SYS_QUIESCE, IOP_ICTX, 0, 5000); - iop_simple_cmd(sc, I2O_TID_IOP, I2O_EXEC_IOP_CLEAR, IOP_ICTX, - 0, 1000); + + if (letoh16(sc->sc_status.orgid) != I2O_ORG_AMI) { + /* + * Some AMI firmware revisions will go to sleep and + * never come back after this. + */ + iop_simple_cmd(sc, I2O_TID_IOP, I2O_EXEC_IOP_CLEAR, + IOP_ICTX, 0, 1000); + } } /* Wait. Some boards could still be flushing, stupidly enough. */ |