Module Name: src Committed By: jmcneill Date: Tue Sep 2 09:58:02 UTC 2014
Modified Files: src/sys/arch/arm/broadcom: bcm2835_vcaudio.c Log Message: use a fixed frequency (48kHz) and configure the audio server at attach time, instead of at the beginning of playback To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/broadcom/bcm2835_vcaudio.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/arm/broadcom/bcm2835_vcaudio.c diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.3 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.4 --- src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.3 Mon May 5 08:13:31 2014 +++ src/sys/arch/arm/broadcom/bcm2835_vcaudio.c Tue Sep 2 09:58:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: bcm2835_vcaudio.c,v 1.3 2014/05/05 08:13:31 skrll Exp $ */ +/* $NetBSD: bcm2835_vcaudio.c,v 1.4 2014/09/02 09:58:02 jmcneill Exp $ */ /*- * Copyright (c) 2013 Jared D. McNeill <jmcne...@invisible.ca> @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.3 2014/05/05 08:13:31 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.4 2014/09/02 09:58:02 jmcneill Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -242,7 +242,7 @@ vcaudio_init(struct vcaudio_softc *sc) sc->sc_format.channels = 2; sc->sc_format.channel_mask = AUFMT_STEREO; sc->sc_format.frequency_type = 0; - sc->sc_format.frequency[0] = 8000; + sc->sc_format.frequency[0] = 48000; sc->sc_format.frequency[1] = 48000; error = auconv_create_encodings(&sc->sc_format, 1, &sc->sc_encodings); @@ -298,6 +298,17 @@ vcaudio_init(struct vcaudio_softc *sc) } memset(&msg, 0, sizeof(msg)); + msg.type = VC_AUDIO_MSG_TYPE_CONFIG; + msg.u.config.channels = 2; + msg.u.config.samplerate = 48000; + msg.u.config.bps = 16; + error = vcaudio_msg_sync(sc, &msg, sizeof(msg)); + if (error) { + device_printf(sc->sc_dev, "couldn't send CONFIG message (%d)\n", + error); + } + + memset(&msg, 0, sizeof(msg)); msg.type = VC_AUDIO_MSG_TYPE_CONTROL; msg.u.control.volume = vol2pct(sc->sc_volume); msg.u.control.dest = VCAUDIO_DEST_AUTO; @@ -393,17 +404,6 @@ vcaudio_worker(struct work *wk, void *pr #endif memset(&msg, 0, sizeof(msg)); - msg.type = VC_AUDIO_MSG_TYPE_CONFIG; - msg.u.config.channels = sc->sc_pparam.channels; - msg.u.config.samplerate = sc->sc_pparam.sample_rate; - msg.u.config.bps = sc->sc_pparam.precision; - error = vcaudio_msg_sync(sc, &msg, sizeof(msg)); - if (error) { - printf("%s: failed to config (%d)\n", __func__, error); - goto done; - } - - memset(&msg, 0, sizeof(msg)); msg.type = VC_AUDIO_MSG_TYPE_START; error = vchi_msg_queue(sc->sc_service, &msg, sizeof(msg), VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL);