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