Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci Clear errors before beginning a transfer.
details: https://anonhg.NetBSD.org/src/rev/9968b69519a4
branches: trunk
changeset: 788744:9968b69519a4
user: soren <soren%NetBSD.org@localhost>
date: Thu Jul 18 22:14:54 2013 +0000
description:
Clear errors before beginning a transfer.
Closes PR port-i386/46792.
diffstat:
sys/dev/pci/ichsmb.c | 11 +++++++++--
sys/dev/pci/piixpm.c | 11 +++++++++--
2 files changed, 18 insertions(+), 4 deletions(-)
diffs (64 lines):
diff -r 709e5ae0f20c -r 9968b69519a4 sys/dev/pci/ichsmb.c
--- a/sys/dev/pci/ichsmb.c Thu Jul 18 22:14:48 2013 +0000
+++ b/sys/dev/pci/ichsmb.c Thu Jul 18 22:14:54 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ichsmb.c,v 1.31 2013/07/18 03:14:09 msaitoh Exp $ */
+/* $NetBSD: ichsmb.c,v 1.32 2013/07/18 22:14:54 soren Exp $ */
/* $OpenBSD: ichiic.c,v 1.18 2007/05/03 09:36:26 dlg Exp $ */
/*
@@ -22,7 +22,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ichsmb.c,v 1.31 2013/07/18 03:14:09 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ichsmb.c,v 1.32 2013/07/18 22:14:54 soren Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -224,6 +224,13 @@
"flags 0x%02x\n", device_xname(sc->sc_dev), op, addr, cmdlen,
len, flags));
+ /* Clear status bits */
+ bus_space_write_1(sc->sc_iot, sc->sc_ioh, LPCIB_SMB_HS,
+ LPCIB_SMB_HS_INTR | LPCIB_SMB_HS_DEVERR |
+ LPCIB_SMB_HS_BUSERR | LPCIB_SMB_HS_FAILED);
+ bus_space_barrier(sc->sc_iot, sc->sc_ioh, LPCIB_SMB_HS, 1,
+ BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE);
+
/* Wait for bus to be idle */
for (retries = 100; retries > 0; retries--) {
st = bus_space_read_1(sc->sc_iot, sc->sc_ioh, LPCIB_SMB_HS);
diff -r 709e5ae0f20c -r 9968b69519a4 sys/dev/pci/piixpm.c
--- a/sys/dev/pci/piixpm.c Thu Jul 18 22:14:48 2013 +0000
+++ b/sys/dev/pci/piixpm.c Thu Jul 18 22:14:54 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: piixpm.c,v 1.40 2012/02/14 15:08:07 pgoyette Exp $ */
+/* $NetBSD: piixpm.c,v 1.41 2013/07/18 22:14:54 soren Exp $ */
/* $OpenBSD: piixpm.c,v 1.20 2006/02/27 08:25:02 grange Exp $ */
/*
@@ -22,7 +22,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: piixpm.c,v 1.40 2012/02/14 15:08:07 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: piixpm.c,v 1.41 2013/07/18 22:14:54 soren Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -390,6 +390,13 @@
DPRINTF(("%s: exec: op %d, addr 0x%x, cmdlen %zu, len %zu, flags 0x%x\n",
device_xname(sc->sc_dev), op, addr, cmdlen, len, flags));
+ /* Clear status bits */
+ bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_HS,
+ PIIX_SMB_HS_INTR | PIIX_SMB_HS_DEVERR |
+ PIIX_SMB_HS_BUSERR | PIIX_SMB_HS_FAILED);
+ bus_space_barrier(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_HS, 1,
+ BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE);
+
/* Wait for bus to be idle */
for (retries = 100; retries > 0; retries--) {
st = bus_space_read_1(sc->sc_smb_iot, sc->sc_smb_ioh,
Home |
Main Index |
Thread Index |
Old Index