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);