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