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;