Module Name: src Committed By: macallan Date: Wed Nov 16 22:05:19 UTC 2016
Modified Files: src/sys/dev/pci: voyager.c Log Message: add more plumbing to pass a clockframe around so pwmclock can work again Hi nick! To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/dev/pci/voyager.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/voyager.c diff -u src/sys/dev/pci/voyager.c:1.11 src/sys/dev/pci/voyager.c:1.12 --- src/sys/dev/pci/voyager.c:1.11 Fri Jan 1 20:48:15 2016 +++ src/sys/dev/pci/voyager.c Wed Nov 16 22:05:19 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: voyager.c,v 1.11 2016/01/01 20:48:15 macallan Exp $ */ +/* $NetBSD: voyager.c,v 1.12 2016/11/16 22:05:19 macallan Exp $ */ /* * Copyright (c) 2009, 2011 Michael Lorenz @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: voyager.c,v 1.11 2016/01/01 20:48:15 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: voyager.c,v 1.12 2016/11/16 22:05:19 macallan Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -88,6 +88,8 @@ struct voyager_softc { struct voyager_intr sc_intrs[32]; }; +void *voyager_cookie = NULL; + static int voyager_match(device_t, cfdata_t, void *); static void voyager_attach(device_t, device_t, void *); static int voyager_print(void *, const char *); @@ -162,6 +164,8 @@ voyager_attach(device_t parent, device_t sc->sc_iot = pa->pa_iot; sc->sc_dev = self; + voyager_cookie = sc; + pci_aprint_devinfo(pa, NULL); if (pci_mapreg_map(pa, 0x14, PCI_MAPREG_TYPE_MEM, 0, @@ -195,7 +199,8 @@ voyager_attach(device_t parent, device_t } intrstr = pci_intr_string(sc->sc_pc, ih, intrbuf, sizeof(intrbuf)); - sc->sc_ih = pci_intr_establish(sc->sc_pc, ih, IPL_AUDIO, voyager_intr, sc); + sc->sc_ih = pci_intr_establish(sc->sc_pc, ih, IPL_VM, + voyager_intr, NULL); /* so we get the clock frame instead */ if (sc->sc_ih == NULL) { aprint_error_dev(self, "couldn't establish interrupt"); if (intrstr != NULL) @@ -389,7 +394,7 @@ voyager_twiddle_bits(void *cookie, int r static int voyager_intr(void *cookie) { - struct voyager_softc *sc = cookie; + struct voyager_softc *sc = voyager_cookie; struct voyager_intr *ih; uint32_t intrs; uint32_t mask, bit; @@ -405,7 +410,11 @@ voyager_intr(void *cookie) intrs &= ~bit; ih = &sc->sc_intrs[num]; if (ih->vih_func != NULL) { - ih->vih_func(ih->vih_arg); + if (ih->vih_arg == NULL) { + ih->vih_func(cookie); + } else { + ih->vih_func(ih->vih_arg); + } } ih->vih_count.ev_count++; }