Module Name: src
Committed By: jmcneill
Date: Sun Nov 20 15:48:53 UTC 2011
Modified Files:
src/sys/arch/amiga/dev [jmcneill-audiomp3]: melody.c
src/sys/arch/amigappc/amigappc [jmcneill-audiomp3]: machdep.c
src/sys/dev/ic [jmcneill-audiomp3]: tms320av110.c tms320av110var.h
Log Message:
adapt to audiomp api changes
To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.16.4.1 src/sys/arch/amiga/dev/melody.c
cvs rdiff -u -r1.48 -r1.48.4.1 src/sys/arch/amigappc/amigappc/machdep.c
cvs rdiff -u -r1.21 -r1.21.36.1 src/sys/dev/ic/tms320av110.c
cvs rdiff -u -r1.10 -r1.10.36.1 src/sys/dev/ic/tms320av110var.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/amiga/dev/melody.c
diff -u src/sys/arch/amiga/dev/melody.c:1.16 src/sys/arch/amiga/dev/melody.c:1.16.4.1
--- src/sys/arch/amiga/dev/melody.c:1.16 Tue Jul 19 15:55:27 2011
+++ src/sys/arch/amiga/dev/melody.c Sun Nov 20 15:48:52 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: melody.c,v 1.16 2011/07/19 15:55:27 dyoung Exp $ */
+/* $NetBSD: melody.c,v 1.16.4.1 2011/11/20 15:48:52 jmcneill Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: melody.c,v 1.16 2011/07/19 15:55:27 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: melody.c,v 1.16.4.1 2011/11/20 15:48:52 jmcneill Exp $");
/*
* Melody audio driver.
@@ -111,6 +111,10 @@ melody_attach(struct device *parent, str
sc->sc_tav.sc_dif = 0;
sc->sc_tav.sc_pcm_div = 12;
+ mutex_init(&sc->sc_tav.sc_lock, MUTEX_DEFAULT, IPL_NONE);
+ mutex_init(&sc->sc_tav.sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED);
+ cv_init(&sc->sc_tav.sc_cv, device_xname(self));
+
/*
* Attach option boards now. They might provide additional
* functionality to our audio part.
Index: src/sys/arch/amigappc/amigappc/machdep.c
diff -u src/sys/arch/amigappc/amigappc/machdep.c:1.48 src/sys/arch/amigappc/amigappc/machdep.c:1.48.4.1
--- src/sys/arch/amigappc/amigappc/machdep.c:1.48 Sun Jul 17 20:54:36 2011
+++ src/sys/arch/amigappc/amigappc/machdep.c Sun Nov 20 15:48:53 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.48 2011/07/17 20:54:36 joerg Exp $ */
+/* $NetBSD: machdep.c,v 1.48.4.1 2011/11/20 15:48:53 jmcneill Exp $ */
/*
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.48 2011/07/17 20:54:36 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.48.4.1 2011/11/20 15:48:53 jmcneill Exp $");
#include <sys/param.h>
#include <sys/mount.h>
@@ -241,7 +241,7 @@ amigappc_install_handlers(void)
intr_establish(1, IST_LEVEL, IPL_BIO, lev1_intr, NULL);
intr_establish(2, IST_LEVEL, IPL_BIO, ports_intr, &isr_ports);
intr_establish(3, IST_LEVEL, IPL_TTY, lev3_intr, NULL);
- intr_establish(4, IST_LEVEL, IPL_AUDIO, lev4_intr, NULL);
+ intr_establish(4, IST_LEVEL, IPL_SCHED, lev4_intr, NULL);
intr_establish(5, IST_LEVEL, IPL_SERIAL, lev5_intr, NULL);
intr_establish(6, IST_LEVEL, IPL_SERIAL, exter_intr, &isr_exter);
}
Index: src/sys/dev/ic/tms320av110.c
diff -u src/sys/dev/ic/tms320av110.c:1.21 src/sys/dev/ic/tms320av110.c:1.21.36.1
--- src/sys/dev/ic/tms320av110.c:1.21 Mon Apr 28 20:23:51 2008
+++ src/sys/dev/ic/tms320av110.c Sun Nov 20 15:48:52 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: tms320av110.c,v 1.21 2008/04/28 20:23:51 martin Exp $ */
+/* $NetBSD: tms320av110.c,v 1.21.36.1 2011/11/20 15:48:52 jmcneill Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tms320av110.c,v 1.21 2008/04/28 20:23:51 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tms320av110.c,v 1.21.36.1 2011/11/20 15:48:52 jmcneill Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -72,6 +72,7 @@ int tav_set_port(void *, mixer_ctrl_t *)
int tav_get_port(void *, mixer_ctrl_t *);
int tav_query_devinfo(void *, mixer_devinfo_t *);
int tav_get_props(void *);
+void tav_get_locks(void *, kmutex_t **, kmutex_t **);
const struct audio_hw_if tav_audio_if = {
tav_open,
@@ -98,7 +99,11 @@ const struct audio_hw_if tav_audio_if =
0 /* round_buffersize */, /* optional */
0 /* mappage */, /* optional */
tav_get_props,
- 0 /* dev_ioctl */ /* optional */
+ 0, /* trigger_output */
+ 0, /* trigger_input */
+ 0, /* dev_ioctl */ /* optional */
+ 0, /* powerhook */ /* optional */
+ tav_get_locks,
};
void
@@ -146,6 +151,9 @@ tms320av110_intr(void *p)
uint16_t intlist;
sc = p;
+
+ mutex_spin_enter(&sc->sc_intr_lock);
+
intlist = tav_read_short(sc->sc_iot, sc->sc_ioh, TAV_INTR)
/* & tav_read_short(sc->sc_iot, sc->sc_ioh, TAV_INTR_EN)*/;
@@ -161,9 +169,11 @@ tms320av110_intr(void *p)
}
if (intlist & TAV_INTR_PCM_OUTPUT_UNDERFLOW) {
- wakeup(sc);
+ cv_broadcast(&sc->sc_cv);
}
+ mutex_spin_exit(&sc->sc_intr_lock);
+
return 1;
}
@@ -211,8 +221,10 @@ tav_drain(void *hdl)
iot = sc->sc_iot;
ioh = sc->sc_ioh;
+ mutex_spin_enter(&sc->sc_intr_lock);
+
/*
- * tsleep waiting for underflow interrupt.
+ * wait for underflow interrupt.
*/
if (tav_read_short(iot, ioh, TAV_BUFF)) {
mask = tav_read_short(iot, ioh, TAV_INTR_EN);
@@ -220,8 +232,10 @@ tav_drain(void *hdl)
mask|TAV_INTR_PCM_OUTPUT_UNDERFLOW);
/* still more than zero? */
- if (tav_read_short(iot, ioh, TAV_BUFF))
- (void)tsleep(sc, PCATCH, "tavdrain", 32*hz);
+ if (tav_read_short(iot, ioh, TAV_BUFF)) {
+ (void)cv_timedwait_sig(&sc->sc_cv,
+ &sc->sc_intr_lock, 32*hz);
+ }
/* can be really that long for mpeg */
@@ -230,6 +244,8 @@ tav_drain(void *hdl)
mask & ~TAV_INTR_PCM_OUTPUT_UNDERFLOW);
}
+ mutex_spin_exit(&sc->sc_intr_lock);
+
return 0;
}
@@ -371,6 +387,16 @@ tav_get_props(void *hdl)
return 0;
}
+void
+tav_get_locks(void *hdl, kmutex_t **intr, kmutex_t **thread)
+{
+ struct tav_softc *sc;
+
+ sc = hdl;
+ *intr = &sc->sc_intr_lock;
+ *thread = &sc->sc_lock;
+}
+
int
tav_set_params(void *hdl, int setmode, int usemode, audio_params_t *p,
audio_params_t *r, stream_filter_list_t *pfil, stream_filter_list_t *rfil)
Index: src/sys/dev/ic/tms320av110var.h
diff -u src/sys/dev/ic/tms320av110var.h:1.10 src/sys/dev/ic/tms320av110var.h:1.10.36.1
--- src/sys/dev/ic/tms320av110var.h:1.10 Mon Apr 28 20:23:51 2008
+++ src/sys/dev/ic/tms320av110var.h Sun Nov 20 15:48:52 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: tms320av110var.h,v 1.10 2008/04/28 20:23:51 martin Exp $ */
+/* $NetBSD: tms320av110var.h,v 1.10.36.1 2011/11/20 15:48:52 jmcneill Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -46,6 +46,9 @@
struct tav_softc {
struct device sc_dev;
+ kmutex_t sc_lock;
+ kmutex_t sc_intr_lock;
+ kcondvar_t sc_cv;
bus_space_tag_t sc_iot;
bus_space_handle_t sc_ioh;