Module Name: src Committed By: bouyer Date: Mon Aug 29 18:34:43 UTC 2011
Modified Files: src/sys/arch/evbmips/loongson/dev: gcscpcib_pci.c src/sys/arch/i386/pci: gcscpcib_pci.c src/sys/dev/ic: gcscpcib.c gcscpcibvar.h Log Message: Add a flags argument to gcscpcib_attach(). Add a flag argument which cause the waychdog to not be attached. Use it to disable the watchdog on loongson-based platforms, where the CS5536's reset output is not wired to the CPU reset line :( To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/evbmips/loongson/dev/gcscpcib_pci.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/i386/pci/gcscpcib_pci.c cvs rdiff -u -r1.1 -r1.2 src/sys/dev/ic/gcscpcib.c \ src/sys/dev/ic/gcscpcibvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/evbmips/loongson/dev/gcscpcib_pci.c diff -u src/sys/arch/evbmips/loongson/dev/gcscpcib_pci.c:1.1 src/sys/arch/evbmips/loongson/dev/gcscpcib_pci.c:1.2 --- src/sys/arch/evbmips/loongson/dev/gcscpcib_pci.c:1.1 Sat Aug 27 13:42:45 2011 +++ src/sys/arch/evbmips/loongson/dev/gcscpcib_pci.c Mon Aug 29 18:34:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: gcscpcib_pci.c,v 1.1 2011/08/27 13:42:45 bouyer Exp $ */ +/* $NetBSD: gcscpcib_pci.c,v 1.2 2011/08/29 18:34:42 bouyer Exp $ */ /* $OpenBSD: gcscpcib.c,v 1.6 2007/11/17 17:02:47 mbalmer Exp $ */ /* @@ -25,7 +25,7 @@ * machine-dependent attachement. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gcscpcib_pci.c,v 1.1 2011/08/27 13:42:45 bouyer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gcscpcib_pci.c,v 1.2 2011/08/29 18:34:42 bouyer Exp $"); #include <sys/param.h> @@ -92,7 +92,7 @@ /* Attach the PCI-ISA bridge at first */ pcibattach(parent, self, aux); /* then attach gcscpcib itself */ - gcscpcib_attach(self, &sc->sc_gcscpcib, pa->pa_iot); + gcscpcib_attach(self, &sc->sc_gcscpcib, pa->pa_iot, GCSCATTACH_NO_WDT); } uint64_t Index: src/sys/arch/i386/pci/gcscpcib_pci.c diff -u src/sys/arch/i386/pci/gcscpcib_pci.c:1.1 src/sys/arch/i386/pci/gcscpcib_pci.c:1.2 --- src/sys/arch/i386/pci/gcscpcib_pci.c:1.1 Sat Aug 27 12:47:49 2011 +++ src/sys/arch/i386/pci/gcscpcib_pci.c Mon Aug 29 18:34:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: gcscpcib_pci.c,v 1.1 2011/08/27 12:47:49 bouyer Exp $ */ +/* $NetBSD: gcscpcib_pci.c,v 1.2 2011/08/29 18:34:42 bouyer Exp $ */ /* $OpenBSD: gcscpcib.c,v 1.6 2007/11/17 17:02:47 mbalmer Exp $ */ /* @@ -25,7 +25,7 @@ * machine-dependent attachement. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gcscpcib_pci.c,v 1.1 2011/08/27 12:47:49 bouyer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gcscpcib_pci.c,v 1.2 2011/08/29 18:34:42 bouyer Exp $"); #include <sys/param.h> @@ -92,7 +92,7 @@ /* Attach the PCI-ISA bridge at first */ pcibattach(parent, self, aux); /* then attach gcscpcib itself */ - gcscpcib_attach(self, &sc->sc_gcscpcib, pa->pa_iot); + gcscpcib_attach(self, &sc->sc_gcscpcib, pa->pa_iot, 0); } uint64_t Index: src/sys/dev/ic/gcscpcib.c diff -u src/sys/dev/ic/gcscpcib.c:1.1 src/sys/dev/ic/gcscpcib.c:1.2 --- src/sys/dev/ic/gcscpcib.c:1.1 Sat Aug 27 12:47:49 2011 +++ src/sys/dev/ic/gcscpcib.c Mon Aug 29 18:34:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: gcscpcib.c,v 1.1 2011/08/27 12:47:49 bouyer Exp $ */ +/* $NetBSD: gcscpcib.c,v 1.2 2011/08/29 18:34:42 bouyer Exp $ */ /* $OpenBSD: gcscpcib.c,v 1.6 2007/11/17 17:02:47 mbalmer Exp $ */ /* @@ -24,7 +24,7 @@ * AMD CS5535/CS5536 series LPC bridge also containing timer, watchdog and GPIO. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gcscpcib.c,v 1.1 2011/08/27 12:47:49 bouyer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gcscpcib.c,v 1.2 2011/08/29 18:34:42 bouyer Exp $"); #include "gpio.h" @@ -84,7 +84,7 @@ void gcscpcib_attach(device_t self, struct gcscpcib_softc *sc, - bus_space_tag_t iot) + bus_space_tag_t iot, int flags) { struct timecounter *tc = &sc->sc_timecounter; bus_addr_t wdtbase; @@ -109,6 +109,9 @@ tc->tc_priv = sc; tc_init(tc); + if (flags & GCSCATTACH_NO_WDT) + goto gpio; + /* Attach the watchdog timer */ wdtbase = gcsc_rdmsr(MSR_LBAR_MFGPT) & 0xffff; if (bus_space_map(sc->sc_iot, wdtbase, 64, 0, &sc->sc_ioh)) { @@ -295,10 +298,11 @@ period * AMD553X_WDT_TICK); /* enable watchdog action */ - DPRINTF(("%s: enable watchdog action. (MFGPT0_CMP2= %d)\n", __func__, + DPRINTF(("%s: enable watchdog action. (MFGPT0_CMP2= %d)", __func__, bus_space_read_2(sc->sc_iot, sc->sc_ioh, AMD553X_MFGPTX_CMP2(sc->sc_wdt_mfgpt)))); AMD553X_MFGPTx_NR_ENABLE(sc->sc_wdt_mfgpt, AMD553X_MFGPT0_C2_RSTEN); + DPRINTF((" AMD553X_MFGPT_NR 0x%" PRIx64 "\n", gcsc_rdmsr(AMD553X_MFGPT_NR))); } static int Index: src/sys/dev/ic/gcscpcibvar.h diff -u src/sys/dev/ic/gcscpcibvar.h:1.1 src/sys/dev/ic/gcscpcibvar.h:1.2 --- src/sys/dev/ic/gcscpcibvar.h:1.1 Sat Aug 27 12:47:49 2011 +++ src/sys/dev/ic/gcscpcibvar.h Mon Aug 29 18:34:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: gcscpcibvar.h,v 1.1 2011/08/27 12:47:49 bouyer Exp $ */ +/* $NetBSD: gcscpcibvar.h,v 1.2 2011/08/29 18:34:42 bouyer Exp $ */ /* $OpenBSD: gcscpcib.c,v 1.6 2007/11/17 17:02:47 mbalmer Exp $ */ /* @@ -45,7 +45,8 @@ #endif }; -void gcscpcib_attach(device_t, struct gcscpcib_softc *, bus_space_tag_t); +void gcscpcib_attach(device_t, struct gcscpcib_softc *, bus_space_tag_t, int); +#define GCSCATTACH_NO_WDT 0x0001 /* do not attach watchdog */ uint64_t gcsc_rdmsr(uint); void gcsc_wrmsr(uint, uint64_t);