Module Name:    src
Committed By:   macallan
Date:           Sun Feb 20 07:40:24 UTC 2011

Modified Files:
        src/sys/arch/macppc/dev: awacs.c

Log Message:
bus_spacify, while there explicitly un-mute the headphone output when using
the beige G3's external mixer


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/macppc/dev/awacs.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/awacs.c
diff -u src/sys/arch/macppc/dev/awacs.c:1.39 src/sys/arch/macppc/dev/awacs.c:1.40
--- src/sys/arch/macppc/dev/awacs.c:1.39	Wed Dec 22 07:24:10 2010
+++ src/sys/arch/macppc/dev/awacs.c	Sun Feb 20 07:40:24 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: awacs.c,v 1.39 2010/12/22 07:24:10 macallan Exp $	*/
+/*	$NetBSD: awacs.c,v 1.40 2011/02/20 07:40:24 macallan Exp $	*/
 
 /*-
  * Copyright (c) 2000 Tsubai Masanari.  All rights reserved.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: awacs.c,v 1.39 2010/12/22 07:24:10 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: awacs.c,v 1.40 2011/02/20 07:40:24 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/audioio.h>
@@ -64,7 +64,10 @@
 struct awacs_softc {
 	device_t sc_dev;
 	int sc_flags;
-
+	bus_space_tag_t sc_tag;
+	bus_space_handle_t	sc_regh;
+	bus_space_handle_t	sc_idmah;
+	bus_space_handle_t	sc_odmah;
 	void (*sc_ointr)(void *);	/* DMA completion intr handler */
 	void *sc_oarg;			/* arg for sc_ointr() */
 	int sc_opages;			/* # of output pages */
@@ -89,7 +92,6 @@
 	device_t sc_sgsmix;
 #endif
 
-	char *sc_reg;
 	u_int sc_codecctl0;
 	u_int sc_codecctl1;
 	u_int sc_codecctl2;
@@ -313,7 +315,7 @@
 awacs_attach(device_t parent, device_t self, void *aux)
 {
 	struct awacs_softc *sc;
-	struct confargs *ca;
+	struct confargs *ca = aux;
 	int cirq, oirq, iirq, cirq_type, oirq_type, iirq_type;
 	int len = -1, perch;
 	int root_node;
@@ -321,15 +323,21 @@
 
 	sc = device_private(self);
 	sc->sc_dev = self;
-	ca = aux;
+	sc->sc_tag = ca->ca_tag;
 
-	sc->sc_reg = mapiodev(ca->ca_baseaddr + ca->ca_reg[0], ca->ca_reg[1]);
+	if (bus_space_map(sc->sc_tag, ca->ca_baseaddr + ca->ca_reg[0],
+	    ca->ca_reg[1], 0, &sc->sc_regh) != 0)
+		printf("couldn't map codec registers\n");
+	if (bus_space_map(sc->sc_tag, ca->ca_baseaddr + ca->ca_reg[2],
+	    ca->ca_reg[3], BUS_SPACE_MAP_LINEAR, &sc->sc_odmah) != 0)
+		printf("couldn't map DMA out registers\n");
+	if (bus_space_map(sc->sc_tag, ca->ca_baseaddr + ca->ca_reg[4],
+	    ca->ca_reg[5], BUS_SPACE_MAP_LINEAR, &sc->sc_idmah) != 0)
+		printf("couldn't map DMA in registers\n");
 
-	/* out */
-	sc->sc_odma = mapiodev(ca->ca_baseaddr + ca->ca_reg[2], ca->ca_reg[3]);
+	sc->sc_odma = bus_space_vaddr(sc->sc_tag, sc->sc_odmah);
+	sc->sc_idma = bus_space_vaddr(sc->sc_tag, sc->sc_idmah);
 	sc->sc_odmacmd = dbdma_alloc(20 * sizeof(struct dbdma_command));
-	/* in */
-	sc->sc_idma = mapiodev(ca->ca_baseaddr + ca->ca_reg[4], ca->ca_reg[5]);
 	sc->sc_idmacmd = dbdma_alloc(20 * sizeof(struct dbdma_command));
 
 	if (strcmp(ca->ca_name, "i2s") == 0) {
@@ -464,7 +472,7 @@
 		sc->sc_need_parallel_output = 1;
 		sc->sc_codecctl1 |= AWACS_PARALLEL_OUTPUT;
 	}
-
+	
 	if (awacs_check_headphones(sc)) {
 
                 /* default output to headphones */
@@ -559,6 +567,9 @@
 	printf("%s: using %s\n", device_xname(sc->sc_dev),
 	    device_xname(sc->sc_sgsmix));
 
+	sc->sc_codecctl1 &= ~AWACS_MUTE_HEADPHONE;
+	awacs_write_codec(sc, sc->sc_codecctl1);
+
 	awacs_select_output(sc, sc->sc_output_mask);
 	awacs_set_volume(sc, sc->vol_l, sc->vol_r);
 	awacs_set_bass(sc, 128);
@@ -572,19 +583,15 @@
 static inline u_int
 awacs_read_reg(struct awacs_softc *sc, int reg)
 {
-	char *addr;
 
-	addr = sc->sc_reg;
-	return in32rb(addr + reg);
+	return bus_space_read_4(sc->sc_tag, sc->sc_regh, reg);
 }
 
 static inline void
 awacs_write_reg(struct awacs_softc *sc, int reg, int val)
 {
-	char *addr;
 
-	addr = sc->sc_reg;
-	out32rb(addr + reg, val);
+	bus_space_write_4(sc->sc_tag, sc->sc_regh, reg, val);
 }
 
 static void

Reply via email to