Module Name: src Committed By: jmcneill Date: Tue Jan 23 21:49:20 UTC 2024
Modified Files: src/sys/arch/evbppc/wii/dev: bwai.c Log Message: wii: Use A/V encoder volume controls instead of using a software filter. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/evbppc/wii/dev/bwai.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/evbppc/wii/dev/bwai.c diff -u src/sys/arch/evbppc/wii/dev/bwai.c:1.1 src/sys/arch/evbppc/wii/dev/bwai.c:1.2 --- src/sys/arch/evbppc/wii/dev/bwai.c:1.1 Mon Jan 22 21:28:15 2024 +++ src/sys/arch/evbppc/wii/dev/bwai.c Tue Jan 23 21:49:20 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: bwai.c,v 1.1 2024/01/22 21:28:15 jmcneill Exp $ */ +/* $NetBSD: bwai.c,v 1.2 2024/01/23 21:49:20 jmcneill Exp $ */ /*- * Copyright (c) 2024 Jared McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bwai.c,v 1.1 2024/01/22 21:28:15 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bwai.c,v 1.2 2024/01/23 21:49:20 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -42,6 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: bwai.c,v 1.1 #include <machine/wii.h> #include "mainbus.h" +#include "avenc.h" #include "bwai.h" #define AI_CONTROL 0x00 @@ -62,7 +63,6 @@ struct bwai_softc { struct audio_dai_device sc_dai; - uint8_t sc_swvol; void (*sc_intr)(void *); void *sc_intrarg; @@ -123,36 +123,16 @@ bwai_dsp_init(kmutex_t *intr_lock) return &sc->sc_dai; } -static void -bwai_swvol_codec(audio_filter_arg_t *arg) -{ - struct bwai_softc * const sc = arg->context; - const aint_t *src; - int16_t *dst; - u_int sample_count; - u_int i; - - src = arg->src; - dst = arg->dst; - sample_count = arg->count * arg->srcfmt->channels; - for (i = 0; i < sample_count; i++) { - aint2_t v = (aint2_t)(*src++); - v = v * sc->sc_swvol / 255; - *dst++ = (aint_t)v; - } -} - static int bwai_set_port(void *priv, mixer_ctrl_t *mc) { - struct bwai_softc * const sc = priv; - if (mc->dev != BWAI_OUTPUT_MASTER_VOLUME && mc->dev != BWAI_INPUT_DAC_VOLUME) { return ENXIO; } - sc->sc_swvol = mc->un.value.level[AUDIO_MIXER_LEVEL_LEFT]; + avenc_set_volume(mc->un.value.level[AUDIO_MIXER_LEVEL_LEFT], + mc->un.value.level[AUDIO_MIXER_LEVEL_RIGHT]); return 0; } @@ -160,15 +140,13 @@ bwai_set_port(void *priv, mixer_ctrl_t * static int bwai_get_port(void *priv, mixer_ctrl_t *mc) { - struct bwai_softc * const sc = priv; - if (mc->dev != BWAI_OUTPUT_MASTER_VOLUME && mc->dev != BWAI_INPUT_DAC_VOLUME) { return ENXIO; } - mc->un.value.level[AUDIO_MIXER_LEVEL_LEFT] = sc->sc_swvol; - mc->un.value.level[AUDIO_MIXER_LEVEL_RIGHT] = sc->sc_swvol; + avenc_get_volume(&mc->un.value.level[AUDIO_MIXER_LEVEL_LEFT], + &mc->un.value.level[AUDIO_MIXER_LEVEL_RIGHT]); return 0; } @@ -220,11 +198,6 @@ bwai_set_format(void *priv, int setmode, const audio_params_t *play, const audio_params_t *rec, audio_filter_reg_t *pfil, audio_filter_reg_t *rfil) { - struct bwai_softc * const sc = priv; - - pfil->codec = bwai_swvol_codec; - pfil->context = sc; - return 0; } @@ -308,7 +281,6 @@ bwai_attach(device_t parent, device_t se sc->sc_dai.dai_hw_if = &bwai_hw_if; sc->sc_dai.dai_dev = self; sc->sc_dai.dai_priv = sc; - sc->sc_swvol = 255; } CFATTACH_DECL_NEW(bwai, sizeof(struct bwai_softc),