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 <[email protected]>
@@ -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),