summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2004-06-17 05:40:33 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2004-06-17 05:40:33 +0000
commita25ddba9b5b59e4627d4c0b0162db1108dd6a6b7 (patch)
tree4a72859bed9ac074220f0b2f063f146a9642991e /sys/arch
parent7763521e97c1d83ae308ff352cf7c9a45d96c94c (diff)
fix coalescing config writes errata
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/hppa/dev/dino.c7
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);