Module Name:    src
Committed By:   soren
Date:           Thu Jul 18 22:14:54 UTC 2013

Modified Files:
        src/sys/dev/pci: ichsmb.c piixpm.c

Log Message:
Clear errors before beginning a transfer.

Closes PR port-i386/46792.


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/dev/pci/ichsmb.c
cvs rdiff -u -r1.40 -r1.41 src/sys/dev/pci/piixpm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/ichsmb.c
diff -u src/sys/dev/pci/ichsmb.c:1.31 src/sys/dev/pci/ichsmb.c:1.32
--- src/sys/dev/pci/ichsmb.c:1.31	Thu Jul 18 03:14:09 2013
+++ src/sys/dev/pci/ichsmb.c	Thu Jul 18 22:14:54 2013
@@ -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 @@ ichsmb_i2c_exec(void *cookie, i2c_op_t o
 	    "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);

Index: src/sys/dev/pci/piixpm.c
diff -u src/sys/dev/pci/piixpm.c:1.40 src/sys/dev/pci/piixpm.c:1.41
--- src/sys/dev/pci/piixpm.c:1.40	Tue Feb 14 15:08:07 2012
+++ src/sys/dev/pci/piixpm.c	Thu Jul 18 22:14:54 2013
@@ -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 @@ piixpm_i2c_exec(void *cookie, i2c_op_t o
 	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,

Reply via email to