Module Name:    src
Committed By:   snj
Date:           Fri Jan 15 04:21:59 UTC 2010

Modified Files:
        src/doc [netbsd-5]: CHANGES-5.1
        src/sys/dev/pci [netbsd-5]: auich.c

Log Message:
Revert ticket 1218.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.173 -r1.1.2.174 src/doc/CHANGES-5.1
cvs rdiff -u -r1.127.10.1 -r1.127.10.2 src/sys/dev/pci/auich.c

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

Modified files:

Index: src/doc/CHANGES-5.1
diff -u src/doc/CHANGES-5.1:1.1.2.173 src/doc/CHANGES-5.1:1.1.2.174
--- src/doc/CHANGES-5.1:1.1.2.173	Tue Jan 12 09:11:09 2010
+++ src/doc/CHANGES-5.1	Fri Jan 15 04:21:58 2010
@@ -1,4 +1,4 @@
-# $NetBSD: CHANGES-5.1,v 1.1.2.173 2010/01/12 09:11:09 snj Exp $
+# $NetBSD: CHANGES-5.1,v 1.1.2.174 2010/01/15 04:21:58 snj Exp $
 
 A complete list of changes from the NetBSD 5.0 release to the NetBSD 5.1
 release:
@@ -15825,13 +15825,6 @@
 	if swap is not on the second partition.  Fixes PR install/42148.
 	[cegger, ticket #1217]
 
-sys/dev/pci/auich.c				1.133
-
-	Ensure that the memory or i/o space we need is accessible at attach
-	and resume.  Rework register mapping code path, using 'goto', so
-	duplicate code is reduced.  Addresses PR/39652.
-	[jakllsch, ticket #1218]
-
 sys/dev/usb/uhidev.c				1.46
 
 	The Dell DRAC5 gives us a zero-length report immediately following

Index: src/sys/dev/pci/auich.c
diff -u src/sys/dev/pci/auich.c:1.127.10.1 src/sys/dev/pci/auich.c:1.127.10.2
--- src/sys/dev/pci/auich.c:1.127.10.1	Sat Jan  9 01:35:16 2010
+++ src/sys/dev/pci/auich.c	Fri Jan 15 04:21:59 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: auich.c,v 1.127.10.1 2010/01/09 01:35:16 snj Exp $	*/
+/*	$NetBSD: auich.c,v 1.127.10.2 2010/01/15 04:21:59 snj Exp $	*/
 
 /*-
  * Copyright (c) 2000, 2004, 2005 The NetBSD Foundation, Inc.
@@ -111,7 +111,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: auich.c,v 1.127.10.1 2010/01/09 01:35:16 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: auich.c,v 1.127.10.2 2010/01/15 04:21:59 snj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -209,11 +209,8 @@
 	int  sc_sts_reg;
 	/* 440MX workaround */
 	int  sc_dmamap_flags;
-	/* flags */
-	int  sc_iose	:1,
-	     sc_csr_io	:1,
-	     sc_csr_mem	:1,
-		     	:29;
+	/* Native mode? */
+	int  sc_native_mode;
 
 	/* sysctl */
 	struct sysctllog *sc_log;
@@ -479,55 +476,46 @@
 	if (d->id == PCIID_ICH4 || d->id == PCIID_ICH5 || d->id == PCIID_ICH6
 	    || d->id == PCIID_ICH7 || d->id == PCIID_I6300ESB
 	    || d->id == PCIID_ICH4MODEM) {
+		sc->sc_native_mode = 1;
 		/*
 		 * Use native mode for Intel 6300ESB and ICH4/ICH5/ICH6/ICH7
 		 */
-
-		sc->sc_csr_mem = 1;
-		v = pci_conf_read(pa->pa_pc, pa->pa_tag,
-		    PCI_COMMAND_STATUS_REG);
-		pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG,
-			       v | PCI_COMMAND_MEM_ENABLE);
-		pa->pa_flags |= PCI_FLAGS_MEM_ENABLED;
-
 		if (pci_mapreg_map(pa, ICH_MMBAR, PCI_MAPREG_TYPE_MEM, 0,
-		    &sc->iot, &sc->mix_ioh, NULL, &sc->mix_size)) {
-			goto retry_map;
+				   &sc->iot, &sc->mix_ioh, NULL, &sc->mix_size)) {
+			v = pci_conf_read(pa->pa_pc, pa->pa_tag, ICH_CFG);
+			pci_conf_write(pa->pa_pc, pa->pa_tag, ICH_CFG,
+				       v | ICH_CFG_IOSE);
+			if (pci_mapreg_map(pa, ICH_NAMBAR, PCI_MAPREG_TYPE_IO,
+					   0, &sc->iot, &sc->mix_ioh, NULL,
+					   &sc->mix_size)) {
+				aprint_error_dev(self, "can't map codec i/o space\n");
+				return;
+			}
 		}
 		if (pci_mapreg_map(pa, ICH_MBBAR, PCI_MAPREG_TYPE_MEM, 0,
-		    &sc->iot, &sc->aud_ioh, NULL, &sc->aud_size)) {
-			goto retry_map;
+				   &sc->iot, &sc->aud_ioh, NULL, &sc->aud_size)) {
+			v = pci_conf_read(pa->pa_pc, pa->pa_tag, ICH_CFG);
+			pci_conf_write(pa->pa_pc, pa->pa_tag, ICH_CFG,
+				       v | ICH_CFG_IOSE);
+			if (pci_mapreg_map(pa, ICH_NABMBAR, PCI_MAPREG_TYPE_IO,
+					   0, &sc->iot, &sc->aud_ioh, NULL,
+					   &sc->aud_size)) {
+				aprint_error_dev(self, "can't map device i/o space\n");
+				return;
+			}
+		}
+	} else {
+		if (pci_mapreg_map(pa, ICH_NAMBAR, PCI_MAPREG_TYPE_IO, 0,
+				   &sc->iot, &sc->mix_ioh, NULL, &sc->mix_size)) {
+			aprint_error_dev(self, "can't map codec i/o space\n");
+			return;
+		}
+		if (pci_mapreg_map(pa, ICH_NABMBAR, PCI_MAPREG_TYPE_IO, 0,
+				   &sc->iot, &sc->aud_ioh, NULL, &sc->aud_size)) {
+			aprint_error_dev(self, "can't map device i/o space\n");
+			return;
 		}
-		goto map_done;
-	} else
-		goto non_native_map;
-
-retry_map:
-	sc->sc_iose = 1;
-	v = pci_conf_read(pa->pa_pc, pa->pa_tag, ICH_CFG);
-	pci_conf_write(pa->pa_pc, pa->pa_tag, ICH_CFG,
-		       v | ICH_CFG_IOSE);
-
-non_native_map:
-	sc->sc_csr_io = 1;
-	v = pci_conf_read(pa->pa_pc, pa->pa_tag,
-	    PCI_COMMAND_STATUS_REG);
-	pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG,
-		       v | PCI_COMMAND_IO_ENABLE);
-	pa->pa_flags |= PCI_FLAGS_IO_ENABLED;
-
-	if (pci_mapreg_map(pa, ICH_NAMBAR, PCI_MAPREG_TYPE_IO, 0,
-			   &sc->iot, &sc->mix_ioh, NULL, &sc->mix_size)) {
-		aprint_error_dev(self, "can't map codec i/o space\n");
-		return;
-	}
-	if (pci_mapreg_map(pa, ICH_NABMBAR, PCI_MAPREG_TYPE_IO, 0,
-			   &sc->iot, &sc->aud_ioh, NULL, &sc->aud_size)) {
-		aprint_error_dev(self, "can't map device i/o space\n");
-		return;
 	}
-
-map_done:
 	sc->dmat = pa->pa_dmat;
 
 	/* enable bus mastering */
@@ -1588,19 +1576,12 @@
 	struct auich_softc *sc = device_private(dv);
 	pcireg_t v;
 
-	if (sc->sc_iose) {
+	if (sc->sc_native_mode) {
 		v = pci_conf_read(sc->sc_pc, sc->sc_pt, ICH_CFG);
 		pci_conf_write(sc->sc_pc, sc->sc_pt, ICH_CFG,
 			       v | ICH_CFG_IOSE);
 	}
 
-	v = pci_conf_read(sc->sc_pc, sc->sc_pt, PCI_COMMAND_STATUS_REG);
-	if (sc->sc_csr_io)
-		v |= PCI_COMMAND_IO_ENABLE;
-	if (sc->sc_csr_mem)
-		v |= PCI_COMMAND_MEM_ENABLE;
-	pci_conf_write(sc->sc_pc, sc->sc_pt, PCI_COMMAND_STATUS_REG, v);
-
 	auich_reset_codec(sc);
 	DELAY(1000);
 	(sc->codec_if->vtbl->restore_ports)(sc->codec_if);

Reply via email to