Module Name: src Committed By: macallan Date: Thu Mar 29 06:56:54 UTC 2018
Modified Files: src/sys/arch/macppc/dev: snapper.c Log Message: deal with PowerMac7,* mac-io/i2s/sound reg properties now we map the right registers on G5 and get DMA interrupts. Still no sound but - well - progress To generate a diff of this commit: cvs rdiff -u -r1.44 -r1.45 src/sys/arch/macppc/dev/snapper.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/arch/macppc/dev/snapper.c diff -u src/sys/arch/macppc/dev/snapper.c:1.44 src/sys/arch/macppc/dev/snapper.c:1.45 --- src/sys/arch/macppc/dev/snapper.c:1.44 Sat Mar 24 16:22:48 2018 +++ src/sys/arch/macppc/dev/snapper.c Thu Mar 29 06:56:54 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: snapper.c,v 1.44 2018/03/24 16:22:48 macallan Exp $ */ +/* $NetBSD: snapper.c,v 1.45 2018/03/29 06:56:54 macallan Exp $ */ /* Id: snapper.c,v 1.11 2002/10/31 17:42:13 tsubai Exp */ /* Id: i2s.c,v 1.12 2005/01/15 14:32:35 tsubai Exp */ @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: snapper.c,v 1.44 2018/03/24 16:22:48 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: snapper.c,v 1.45 2018/03/29 06:56:54 macallan Exp $"); #include <sys/param.h> #include <sys/audioio.h> @@ -763,6 +763,12 @@ snapper_attach(device_t parent, device_t sc->sc_baseaddr = ca->ca_baseaddr; OF_getprop(soundbus, "reg", reg, sizeof reg); + /* deal with messed up properties on PowerMac7,3 abd friends */ + if (reg[0] == 0) { + reg[0] += ca->ca_reg[0]; + reg[2] += ca->ca_reg[2]; + reg[4] += ca->ca_reg[2]; + } reg[0] += ca->ca_baseaddr; reg[2] += ca->ca_baseaddr; reg[4] += ca->ca_baseaddr; @@ -770,6 +776,17 @@ snapper_attach(device_t parent, device_t sc->sc_node = ca->ca_node; sc->sc_tag = ca->ca_tag; +#ifdef SNAPPER_DEBUG + { + int i; + printf("\n"); + for (i = 0; i < 6; i++) { + printf(" %08x", reg[i]); + } + printf("\n"); + } +#endif + bus_space_map(sc->sc_tag, reg[0], reg[1], 0, &sc->sc_bsh); bus_space_map(sc->sc_tag, reg[2], reg[3], BUS_SPACE_MAP_LINEAR, &sc->sc_odmah); @@ -779,6 +796,8 @@ snapper_attach(device_t parent, device_t sc->sc_odma = bus_space_vaddr(sc->sc_tag, sc->sc_odmah); sc->sc_idma = bus_space_vaddr(sc->sc_tag, sc->sc_idmah); + DPRINTF("reg %08x odma %08x\n", (uint32_t)sc->sc_bsh, (uint32_t)sc->sc_odmah); + OF_getprop(soundbus, "interrupts", intr, sizeof intr); cirq = intr[0]; oirq = intr[2];