diff options
author | Michael Shalayeff <mickey@cvs.openbsd.org> | 2004-06-17 05:40:33 +0000 |
---|---|---|
committer | Michael Shalayeff <mickey@cvs.openbsd.org> | 2004-06-17 05:40:33 +0000 |
commit | a25ddba9b5b59e4627d4c0b0162db1108dd6a6b7 (patch) | |
tree | 4a72859bed9ac074220f0b2f063f146a9642991e /sys/arch | |
parent | 7763521e97c1d83ae308ff352cf7c9a45d96c94c (diff) |
fix coalescing config writes errata
Diffstat (limited to 'sys/arch')
-rw-r--r-- | sys/arch/hppa/dev/dino.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/arch/hppa/dev/dino.c b/sys/arch/hppa/dev/dino.c index 90836648631..7985d91084c 100644 --- a/sys/arch/hppa/dev/dino.c +++ b/sys/arch/hppa/dev/dino.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dino.c,v 1.5 2004/02/13 20:39:31 mickey Exp $ */ +/* $OpenBSD: dino.c,v 1.6 2004/06/17 05:40:32 mickey Exp $ */ /* * Copyright (c) 2003 Michael Shalayeff @@ -194,6 +194,11 @@ dino_conf_write(void *v, pcitag_t tag, int reg, pcireg_t data) { struct dino_softc *sc = v; volatile struct dino_regs *r = sc->sc_regs; + pcireg_t data1; + + /* fix coalescing config writes errata by interleaving w/ a read */ + r->pci_addr = tag | PCI_ID_REG; + data1 = r->pci_conf_data; r->pci_addr = tag | reg; r->pci_conf_data = htole32(data); |