Module Name: src Committed By: isaki Date: Sat Aug 5 05:22:55 UTC 2017
Modified Files: src/sys/arch/x68k/dev: vs.c Log Message: Remove temporary VS_USE_PREC8 option. vs(4) now supports slinear16be and slinear8 (but now work yet). To generate a diff of this commit: cvs rdiff -u -r1.41 -r1.42 src/sys/arch/x68k/dev/vs.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/x68k/dev/vs.c diff -u src/sys/arch/x68k/dev/vs.c:1.41 src/sys/arch/x68k/dev/vs.c:1.42 --- src/sys/arch/x68k/dev/vs.c:1.41 Mon Jul 31 14:53:08 2017 +++ src/sys/arch/x68k/dev/vs.c Sat Aug 5 05:22:55 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: vs.c,v 1.41 2017/07/31 14:53:08 isaki Exp $ */ +/* $NetBSD: vs.c,v 1.42 2017/08/05 05:22:55 isaki Exp $ */ /* * Copyright (c) 2001 Tetsuya Isaki. All rights reserved. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vs.c,v 1.41 2017/07/31 14:53:08 isaki Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vs.c,v 1.42 2017/08/05 05:22:55 isaki Exp $"); #include "audio.h" #include "vs.h" @@ -56,7 +56,6 @@ __KERNEL_RCSID(0, "$NetBSD: vs.c,v 1.41 #include <arch/x68k/dev/vsvar.h> -//#define VS_USE_PREC8 /* for debugging */ #ifdef VS_DEBUG #define DPRINTF(y,x) if (vs_debug >= (y)) printf x static int vs_debug; @@ -330,15 +329,16 @@ vs_query_encoding(void *hdl, struct audi DPRINTF(1, ("vs_query_encoding\n")); if (fp->index == 0) { -#if defined(VS_USE_PREC8) strcpy(fp->name, AudioEslinear); fp->encoding = AUDIO_ENCODING_SLINEAR; fp->precision = 8; -#else + fp->flags = 0; + return 0; + } + if (fp->index == 1) { strcpy(fp->name, AudioEslinear_be); fp->encoding = AUDIO_ENCODING_SLINEAR_BE; fp->precision = 16; -#endif fp->flags = 0; return 0; } @@ -379,6 +379,8 @@ vs_set_params(void *hdl, int setmode, in stream_filter_list_t *pfil, stream_filter_list_t *rfil) { struct vs_softc *sc; + stream_filter_factory_t *pconv; + stream_filter_factory_t *rconv; int rate; sc = hdl; @@ -400,11 +402,14 @@ vs_set_params(void *hdl, int setmode, in return EINVAL; } -#if defined(VS_USE_PREC8) - if (play->precision != 8 || play->encoding != AUDIO_ENCODING_SLINEAR) { -#else - if (play->precision != 16 || play->encoding != AUDIO_ENCODING_SLINEAR_BE) { -#endif + if (play->precision == 8 && play->encoding == AUDIO_ENCODING_SLINEAR) { + pconv = msm6258_linear8_to_adpcm; + rconv = msm6258_adpcm_to_linear8; + } else if (play->precision == 16 && + play->encoding == AUDIO_ENCODING_SLINEAR_BE) { + pconv = msm6258_slinear16_to_adpcm; + rconv = msm6258_adpcm_to_slinear16; + } else { DPRINTF(1, ("prec/enc not matched\n")); return EINVAL; } @@ -419,22 +424,14 @@ vs_set_params(void *hdl, int setmode, in play->encoding = AUDIO_ENCODING_ADPCM; play->validbits = 4; play->precision = 4; -#if defined(VS_USE_PREC8) - pfil->append(pfil, msm6258_linear8_to_adpcm, play); -#else - pfil->append(pfil, msm6258_slinear16_to_adpcm, play); -#endif + pfil->append(pfil, pconv, play); } if ((setmode & AUMODE_RECORD) != 0) { rfil->append(rfil, null_filter, rec); rec->encoding = AUDIO_ENCODING_ADPCM; rec->validbits = 4; rec->precision = 4; -#if defined(VS_USE_PREC8) - rfil->append(rfil, msm6258_adpcm_to_linear8, rec); -#else - rfil->append(rfil, msm6258_adpcm_to_slinear16, rec); -#endif + rfil->append(rfil, rconv, rec); } DPRINTF(1, ("accepted\n"));