summaryrefslogtreecommitdiffstats
path: root/sys/dev/pci
diff options
context:
space:
mode:
authorratchov <ratchov@openbsd.org>2015-05-11 06:46:21 +0000
committerratchov <ratchov@openbsd.org>2015-05-11 06:46:21 +0000
commitac2bb4f35e5a57326fc135134dc640899d0b5bd0 (patch)
tree1e63826ec7e7e40856b73e4c184d951aa1cec1ea /sys/dev/pci
parentWhoops, need to pass through O_ACCMODE flags to the underlying __*_open() (diff)
downloadwireguard-openbsd-ac2bb4f35e5a57326fc135134dc640899d0b5bd0.tar.xz
wireguard-openbsd-ac2bb4f35e5a57326fc135134dc640899d0b5bd0.zip
Remove all audio format conversion code from the kernel (btw holding
the kernel_lock), as we already do better conversions in user-mode. Yet, no need for every single driver to fiddle with the conversion code as they are done transparently by common MI code. With help from armani and miod, support from mpi ok armani@
Diffstat (limited to 'sys/dev/pci')
-rw-r--r--sys/dev/pci/auacer.c119
-rw-r--r--sys/dev/pci/auglx.c370
-rw-r--r--sys/dev/pci/auich.c424
-rw-r--r--sys/dev/pci/auixp.c241
-rw-r--r--sys/dev/pci/autri.c52
-rw-r--r--sys/dev/pci/auvia.c80
-rw-r--r--sys/dev/pci/azalia.c42
-rw-r--r--sys/dev/pci/cmpci.c122
-rw-r--r--sys/dev/pci/cs4280.c92
-rw-r--r--sys/dev/pci/cs4281.c52
-rw-r--r--sys/dev/pci/eap.c84
-rw-r--r--sys/dev/pci/emuxki.c99
-rw-r--r--sys/dev/pci/esa.c62
-rw-r--r--sys/dev/pci/eso.c73
-rw-r--r--sys/dev/pci/files.pci38
-rw-r--r--sys/dev/pci/fms.c99
-rw-r--r--sys/dev/pci/maestro.c32
-rw-r--r--sys/dev/pci/neo.c81
-rw-r--r--sys/dev/pci/sv.c72
-rw-r--r--sys/dev/pci/yds.c94
20 files changed, 166 insertions, 2162 deletions
diff --git a/sys/dev/pci/auacer.c b/sys/dev/pci/auacer.c
index 7a9fd7e905e..57fd2ebf120 100644
--- a/sys/dev/pci/auacer.c
+++ b/sys/dev/pci/auacer.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: auacer.c,v 1.17 2015/03/14 03:38:48 jsg Exp $ */
+/* $OpenBSD: auacer.c,v 1.18 2015/05/11 06:46:21 ratchov Exp $ */
/* $NetBSD: auacer.c,v 1.3 2004/11/10 04:20:26 kent Exp $ */
/*-
@@ -51,8 +51,6 @@
#include <sys/audioio.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <machine/bus.h>
@@ -449,53 +447,11 @@ auacer_query_encoding(void *v, struct audio_encoding *aep)
switch (aep->index) {
case 0:
- strlcpy(aep->name, AudioEulinear, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 1:
- strlcpy(aep->name, AudioEmulaw, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULAW;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(aep->name, AudioEalaw, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ALAW;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(aep->name, AudioEslinear, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_SLINEAR;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
strlcpy(aep->name, AudioEslinear_le, sizeof aep->name);
aep->encoding = AUDIO_ENCODING_SLINEAR_LE;
aep->precision = 16;
aep->flags = 0;
break;
- case 5:
- strlcpy(aep->name, AudioEulinear_le, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR_LE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(aep->name, AudioEslinear_be, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_SLINEAR_BE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(aep->name, AudioEulinear_be, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR_BE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return (EINVAL);
}
@@ -567,81 +523,12 @@ auacer_set_params(void *v, int setmode, int usemode, struct audio_params *play,
continue;
p->sample_rate = auacer_fixup_rate(p->sample_rate);
- p->factor = 1;
- if (p->precision == 8)
- p->factor *= 2;
- p->sw_code = NULL;
-
+ p->precision = 16;
+ p->encoding = AUDIO_ENCODING_SLINEAR_LE;
if (mode == AUMODE_RECORD) {
if (p->channels > 2)
p->channels = 2;
}
-
- switch (p->encoding) {
- case AUDIO_ENCODING_SLINEAR_BE:
- if (p->precision == 16) {
- p->sw_code = swap_bytes;
- } else {
- if (mode == AUMODE_PLAY)
- p->sw_code = linear8_to_linear16_le;
- else
- p->sw_code = linear16_to_linear8_le;
- }
- break;
-
- case AUDIO_ENCODING_SLINEAR_LE:
- if (p->precision != 16) {
- if (mode == AUMODE_PLAY)
- p->sw_code = linear8_to_linear16_le;
- else
- p->sw_code = linear16_to_linear8_le;
- }
- break;
-
- case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16) {
- if (mode == AUMODE_PLAY)
- p->sw_code =
- swap_bytes_change_sign16_le;
- else
- p->sw_code =
- change_sign16_swap_bytes_le;
- } else {
- if (mode == AUMODE_PLAY)
- p->sw_code = ulinear8_to_linear16_le;
- else
- p->sw_code = linear16_to_ulinear8_le;
- }
- break;
-
- case AUDIO_ENCODING_ULINEAR_LE:
- if (p->precision == 16) {
- p->sw_code = change_sign16_le;
- } else {
- if (mode == AUMODE_PLAY)
- p->sw_code = ulinear8_to_linear16_le;
- else
- p->sw_code = linear16_to_ulinear8_le;
- }
- break;
-
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY)
- p->sw_code = mulaw_to_slinear16_le;
- else
- p->sw_code = slinear16_to_mulaw_le;
- break;
-
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY)
- p->sw_code = alaw_to_slinear16_le;
- else
- p->sw_code = slinear16_to_alaw_le;
- break;
-
- default:
- return (EINVAL);
- }
p->bps = AUDIO_BPS(p->precision);
p->msb = 1;
diff --git a/sys/dev/pci/auglx.c b/sys/dev/pci/auglx.c
index 3b679f1e3e9..1e9b71cf337 100644
--- a/sys/dev/pci/auglx.c
+++ b/sys/dev/pci/auglx.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: auglx.c,v 1.12 2014/07/12 18:48:51 tedu Exp $ */
+/* $OpenBSD: auglx.c,v 1.13 2015/05/11 06:46:21 ratchov Exp $ */
/*
* Copyright (c) 2008 Marc Balmer <mbalmer@openbsd.org>
@@ -51,8 +51,6 @@
#include <dev/pci/pcivar.h>
#include <dev/pci/pcidevs.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
@@ -484,53 +482,11 @@ auglx_query_encoding(void *v, struct audio_encoding *aep)
{
switch (aep->index) {
case 0:
- strlcpy(aep->name, AudioEulinear, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 1:
- strlcpy(aep->name, AudioEmulaw, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULAW;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(aep->name, AudioEalaw, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ALAW;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(aep->name, AudioEslinear, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_SLINEAR;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
strlcpy(aep->name, AudioEslinear_le, sizeof aep->name);
aep->encoding = AUDIO_ENCODING_SLINEAR_LE;
aep->precision = 16;
aep->flags = 0;
break;
- case 5:
- strlcpy(aep->name, AudioEulinear_le, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR_LE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(aep->name, AudioEslinear_be, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_SLINEAR_BE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(aep->name, AudioEulinear_be, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR_BE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return EINVAL;
}
@@ -550,175 +506,9 @@ auglx_set_params(void *v, int setmode, int usemode, struct audio_params *play,
u_int orate;
if (setmode & AUMODE_PLAY) {
- play->factor = 1;
- play->sw_code = NULL;
- if (play->precision > 16)
- play->precision = 16;
- if (play->channels > 2)
- play->channels = 2;
- switch(play->encoding) {
- case AUDIO_ENCODING_ULAW:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = mulaw_to_slinear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = mulaw_to_slinear16_le;
- break;
- default:
- return EINVAL;
- }
- break;
- case AUDIO_ENCODING_SLINEAR_LE:
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = linear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = linear8_to_linear16_le;
- break;
- default:
- return EINVAL;
- }
- break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = noswap_bytes_mts;
- break;
- case 2:
- break;
- default:
- return EINVAL;
- }
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_ULINEAR_LE:
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = ulinear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = ulinear8_to_linear16_le;
- break;
- default:
- return EINVAL;
- }
- break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = change_sign16_le_mts;
- break;
- case 2:
- play->sw_code = change_sign16_le;
- break;
- default:
- return EINVAL;
- }
- break;
- default:
- return EINVAL;
- }
- break;
- case AUDIO_ENCODING_ALAW:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = alaw_to_slinear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = alaw_to_slinear16_le;
- break;
- default:
- return EINVAL;
- }
- break;
- case AUDIO_ENCODING_SLINEAR_BE:
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = linear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = linear8_to_linear16_le;
- break;
- default:
- return EINVAL;
- }
- break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = swap_bytes_mts;
- break;
- case 2:
- play->sw_code = swap_bytes;
- break;
- default:
- return EINVAL;
- }
- break;
- default:
- return EINVAL;
- }
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = ulinear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = ulinear8_to_linear16_le;
- break;
- default:
- return EINVAL;
- }
- break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = swap_bytes_change_sign16_le_mts;
- break;
- case 2:
- play->sw_code = swap_bytes_change_sign16_le;
- break;
- default:
- return EINVAL;
- }
- break;
- default:
- return EINVAL;
- }
- break;
- default:
- return EINVAL;
- }
+ play->precision = 16;
+ play->channels = 2;
+ play->encoding = AUDIO_ENCODING_SLINEAR_LE;
play->bps = AUDIO_BPS(play->precision);
play->msb = 1;
@@ -744,155 +534,9 @@ auglx_set_params(void *v, int setmode, int usemode, struct audio_params *play,
}
if (setmode & AUMODE_RECORD) {
- rec->factor = 1;
- rec->sw_code = 0;
- if (rec->precision > 16)
- rec->precision = 16;
- if (rec->channels > 2)
- rec->channels = 2;
- switch(rec->encoding) {
- case AUDIO_ENCODING_ULAW:
- switch (rec->channels) {
- case 1:
- rec->sw_code = slinear16_to_mulaw_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = slinear16_to_mulaw_le;
- rec->factor = 2;
- break;
- }
- break;
- case AUDIO_ENCODING_ALAW:
- switch (rec->channels) {
- case 1:
- rec->sw_code = slinear16_to_alaw_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = slinear16_to_alaw_le;
- rec->factor = 2;
- break;
- }
- break;
- case AUDIO_ENCODING_SLINEAR_LE:
- switch (rec->precision) {
- case 8:
- switch (rec->channels) {
- case 1:
- rec->sw_code = linear16_to_linear8_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = linear16_to_linear8_le;
- rec->factor = 2;
- break;
- }
- break;
- case 16:
- switch (rec->channels) {
- case 1:
- rec->sw_code = linear16_decimator;
- rec->factor = 2;
- break;
- case 2:
- break;
- }
- break;
- default:
- return EINVAL;
- }
- break;
- case AUDIO_ENCODING_ULINEAR_LE:
- switch (rec->precision) {
- case 8:
- switch (rec->channels) {
- case 1:
- rec->sw_code = linear16_to_ulinear8_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = linear16_to_ulinear8_le;
- rec->factor = 2;
- break;
- }
- break;
- case 16:
- switch (rec->channels) {
- case 1:
- rec->sw_code = change_sign16_le_stm;
- rec->factor = 2;
- break;
- case 2:
- rec->sw_code = change_sign16_le;
- break;
- }
- break;
- default:
- return EINVAL;
- }
- break;
- case AUDIO_ENCODING_SLINEAR_BE:
- switch (rec->precision) {
- case 8:
- switch (rec->channels) {
- case 1:
- rec->sw_code = linear16_to_linear8_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = linear16_to_linear8_le;
- rec->factor = 2;
- break;
- }
- break;
- case 16:
- switch (rec->channels) {
- case 1:
- rec->sw_code = swap_bytes_stm;
- rec->factor = 2;
- break;
- case 2:
- rec->sw_code = swap_bytes;
- break;
- }
- break;
- default:
- return EINVAL;
- }
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- switch (rec->precision) {
- case 8:
- switch (rec->channels) {
- case 1:
- rec->sw_code = linear16_to_ulinear8_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = linear16_to_ulinear8_le;
- rec->factor = 2;
- break;
- }
- break;
- case 16:
- switch (rec->channels) {
- case 1:
- rec->sw_code = change_sign16_swap_bytes_le_stm;
- rec->factor = 2;
- break;
- case 2:
- rec->sw_code = change_sign16_swap_bytes_le;
- break;
- }
- break;
- default:
- return EINVAL;
- }
- break;
- default:
- return EINVAL;
- }
+ rec->precision = 16;
+ rec->channels = 2;
+ rec->encoding = AUDIO_ENCODING_ULINEAR_LE;
rec->bps = AUDIO_BPS(rec->precision);
rec->msb = 1;
diff --git a/sys/dev/pci/auich.c b/sys/dev/pci/auich.c
index 94adc5a3b71..c22915c169a 100644
--- a/sys/dev/pci/auich.c
+++ b/sys/dev/pci/auich.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: auich.c,v 1.103 2015/03/14 03:38:48 jsg Exp $ */
+/* $OpenBSD: auich.c,v 1.104 2015/05/11 06:46:21 ratchov Exp $ */
/*
* Copyright (c) 2000,2001 Michael Shalayeff
@@ -44,8 +44,6 @@
#include <sys/audioio.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <machine/bus.h>
@@ -686,76 +684,17 @@ auich_get_default_params(void *addr, int mode, struct audio_params *params)
int
auich_query_encoding(void *v, struct audio_encoding *aep)
{
- struct auich_softc *sc = v;
- if (sc->sc_spdif) {
- switch (aep->index) {
- case 0:
- strlcpy(aep->name, AudioEslinear_le, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_SLINEAR_LE;
- aep->precision = 16;
- aep->flags = 0;
- aep->bps = 2;
- aep->msb = 1;
- return (0);
- default:
- return (EINVAL);
- }
- } else {
- switch (aep->index) {
- case 0:
- strlcpy(aep->name, AudioEulinear, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR;
- aep->precision = 8;
- aep->flags = 0;
- break;
- case 1:
- strlcpy(aep->name, AudioEmulaw, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULAW;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(aep->name, AudioEalaw, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ALAW;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(aep->name, AudioEslinear, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_SLINEAR;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
- strlcpy(aep->name, AudioEslinear_le, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_SLINEAR_LE;
- aep->precision = 16;
- aep->flags = 0;
- break;
- case 5:
- strlcpy(aep->name, AudioEulinear_le, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR_LE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(aep->name, AudioEslinear_be, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_SLINEAR_BE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(aep->name, AudioEulinear_be, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR_BE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- default:
- return (EINVAL);
- }
- aep->bps = AUDIO_BPS(aep->precision);
+ switch (aep->index) {
+ case 0:
+ strlcpy(aep->name, AudioEslinear_le, sizeof aep->name);
+ aep->encoding = AUDIO_ENCODING_SLINEAR_LE;
+ aep->precision = 16;
+ aep->flags = 0;
+ aep->bps = 2;
aep->msb = 1;
return (0);
+ default:
+ return (EINVAL);
}
}
@@ -780,190 +719,29 @@ auich_set_params(void *v, int setmode, int usemode,
}
}
if (setmode & AUMODE_PLAY) {
- play->factor = 1;
- play->sw_code = NULL;
- if (play->precision > 16)
- play->precision = 16;
+ play->precision = 16;
switch(play->encoding) {
- case AUDIO_ENCODING_ULAW:
- if (play->channels > 2)
- play->channels = 2;
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = mulaw_to_slinear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = mulaw_to_slinear16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
case AUDIO_ENCODING_SLINEAR_LE:
- switch (play->precision) {
- case 8:
- if (play->channels > 2)
- play->channels = 2;
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = linear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = linear8_to_linear16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- case 16:
- if (play->channels > 6)
- play->channels = 6;
- if (play->channels > 1)
- play->channels &= ~1;
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = noswap_bytes_mts;
- break;
- case 2:
- break;
- case 4:
- ext_id = codec->vtbl->get_caps(codec);
- if (!(ext_id & AC97_EXT_AUDIO_SDAC))
- play->channels = 2;
- break;
- case 6:
- ext_id = codec->vtbl->get_caps(codec);
- if ((ext_id & AC97_BITS_6CH) !=
- AC97_BITS_6CH)
- play->channels = 2;
- break;
- default:
- return (EINVAL);
- }
- break;
- }
- break;
- case AUDIO_ENCODING_ULINEAR_LE:
- if (play->channels > 2)
- play->channels = 2;
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = ulinear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = ulinear8_to_linear16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = change_sign16_le_mts;
- break;
- case 2:
- play->sw_code = change_sign16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_ALAW:
- if (play->channels > 2)
- play->channels = 2;
+ if (play->channels > 6)
+ play->channels = 6;
+ if (play->channels > 1)
+ play->channels &= ~1;
switch (play->channels) {
case 1:
- play->factor = 4;
- play->sw_code = alaw_to_slinear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = alaw_to_slinear16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_SLINEAR_BE:
- if (play->channels > 2)
play->channels = 2;
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = linear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = linear8_to_linear16_le;
- break;
- default:
- return (EINVAL);
- }
break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = swap_bytes_mts;
- break;
- case 2:
- play->sw_code = swap_bytes;
- break;
- default:
- return (EINVAL);
- }
+ case 2:
break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- if (play->channels > 2)
- play->channels = 2;
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = ulinear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = ulinear8_to_linear16_le;
- break;
- default:
- return (EINVAL);
- }
+ case 4:
+ ext_id = codec->vtbl->get_caps(codec);
+ if (!(ext_id & AC97_EXT_AUDIO_SDAC))
+ play->channels = 2;
break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = swap_bytes_change_sign16_le_mts;
- break;
- case 2:
- play->sw_code = swap_bytes_change_sign16_le;
- break;
- default:
- return (EINVAL);
- }
+ case 6:
+ ext_id = codec->vtbl->get_caps(codec);
+ if ((ext_id & AC97_BITS_6CH) !=
+ AC97_BITS_6CH)
+ play->channels = 2;
break;
default:
return (EINVAL);
@@ -1014,155 +792,9 @@ auich_set_params(void *v, int setmode, int usemode,
}
if (setmode & AUMODE_RECORD) {
- rec->factor = 1;
- rec->sw_code = 0;
- if (rec->channels > 2)
- rec->channels = 2;
- if (rec->precision > 16)
- rec->precision = 16;
- switch(rec->encoding) {
- case AUDIO_ENCODING_ULAW:
- switch (rec->channels) {
- case 1:
- rec->sw_code = slinear16_to_mulaw_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = slinear16_to_mulaw_le;
- rec->factor = 2;
- break;
- }
- break;
- case AUDIO_ENCODING_ALAW:
- switch (rec->channels) {
- case 1:
- rec->sw_code = slinear16_to_alaw_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = slinear16_to_alaw_le;
- rec->factor = 2;
- break;
- }
- break;
- case AUDIO_ENCODING_SLINEAR_LE:
- switch (rec->precision) {
- case 8:
- switch (rec->channels) {
- case 1:
- rec->sw_code = linear16_to_linear8_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = linear16_to_linear8_le;
- rec->factor = 2;
- break;
- }
- break;
- case 16:
- switch (rec->channels) {
- case 1:
- rec->sw_code = linear16_decimator;
- rec->factor = 2;
- break;
- case 2:
- break;
- }
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_ULINEAR_LE:
- switch (rec->precision) {
- case 8:
- switch (rec->channels) {
- case 1:
- rec->sw_code = linear16_to_ulinear8_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = linear16_to_ulinear8_le;
- rec->factor = 2;
- break;
- }
- break;
- case 16:
- switch (rec->channels) {
- case 1:
- rec->sw_code = change_sign16_le_stm;
- rec->factor = 2;
- break;
- case 2:
- rec->sw_code = change_sign16_le;
- break;
- }
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_SLINEAR_BE:
- switch (rec->precision) {
- case 8:
- switch (rec->channels) {
- case 1:
- rec->sw_code = linear16_to_linear8_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = linear16_to_linear8_le;
- rec->factor = 2;
- break;
- }
- break;
- case 16:
- switch (rec->channels) {
- case 1:
- rec->sw_code = swap_bytes_stm;
- rec->factor = 2;
- break;
- case 2:
- rec->sw_code = swap_bytes;
- break;
- }
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- switch (rec->precision) {
- case 8:
- switch (rec->channels) {
- case 1:
- rec->sw_code = linear16_to_ulinear8_le_stm;
- rec->factor = 4;
- break;
- case 2:
- rec->sw_code = linear16_to_ulinear8_le;
- rec->factor = 2;
- break;
- }
- break;
- case 16:
- switch (rec->channels) {
- case 1:
- rec->sw_code = change_sign16_swap_bytes_le_stm;
- rec->factor = 2;
- break;
- case 2:
- rec->sw_code = change_sign16_swap_bytes_le;
- break;
- }
- break;
- default:
- return (EINVAL);
- }
- break;
- default:
- return (EINVAL);
- }
+ rec->channels = 2;
+ rec->precision = 16;
+ rec->encoding = AUDIO_ENCODING_SLINEAR_LE;
rec->bps = AUDIO_BPS(rec->precision);
rec->msb = 1;
diff --git a/sys/dev/pci/auixp.c b/sys/dev/pci/auixp.c
index 1291bfdb8fc..299d260e4c8 100644
--- a/sys/dev/pci/auixp.c
+++ b/sys/dev/pci/auixp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: auixp.c,v 1.34 2015/03/14 03:38:48 jsg Exp $ */
+/* $OpenBSD: auixp.c,v 1.35 2015/05/11 06:46:21 ratchov Exp $ */
/* $NetBSD: auixp.c,v 1.9 2005/06/27 21:13:09 thorpej Exp $ */
/*
@@ -68,8 +68,6 @@
#include <dev/pci/pcivar.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
#include <dev/pci/auixpreg.h>
@@ -222,53 +220,11 @@ auixp_query_encoding(void *hdl, struct audio_encoding *aep)
{
switch (aep->index) {
case 0:
- strlcpy(aep->name, AudioEulinear, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 1:
- strlcpy(aep->name, AudioEmulaw, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULAW;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(aep->name, AudioEalaw, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ALAW;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(aep->name, AudioEslinear, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_SLINEAR;
- aep->precision = 8;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
strlcpy(aep->name, AudioEslinear_le, sizeof aep->name);
aep->encoding = AUDIO_ENCODING_SLINEAR_LE;
aep->precision = 16;
aep->flags = 0;
break;
- case 5:
- strlcpy(aep->name, AudioEulinear_le, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR_LE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(aep->name, AudioEslinear_be, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_SLINEAR_BE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(aep->name, AudioEulinear_be, sizeof aep->name);
- aep->encoding = AUDIO_ENCODING_ULINEAR_BE;
- aep->precision = 16;
- aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return (EINVAL);
}
@@ -373,171 +329,10 @@ auixp_set_params(void *hdl, int setmode, int usemode,
co = (struct auixp_codec *) hdl;
if (setmode & AUMODE_PLAY) {
- play->factor = 1;
- play->sw_code = NULL;
- if (play->channels > 2)
- play->channels = 2;
- if (play->precision > 16)
- play->precision = 16;
+ play->channels = 2;
+ play->precision = 16;
switch(play->encoding) {
- case AUDIO_ENCODING_ULAW:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = mulaw_to_slinear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = mulaw_to_slinear16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
case AUDIO_ENCODING_SLINEAR_LE:
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = linear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = linear8_to_linear16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = noswap_bytes_mts;
- break;
- case 2:
- break;
- default:
- return (EINVAL);
- }
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_ULINEAR_LE:
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = ulinear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = ulinear8_to_linear16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = change_sign16_le_mts;
- break;
- case 2:
- play->sw_code = change_sign16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_ALAW:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = alaw_to_slinear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = alaw_to_slinear16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_SLINEAR_BE:
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = linear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = linear8_to_linear16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = swap_bytes_mts;
- break;
- case 2:
- play->sw_code = swap_bytes;
- break;
- default:
- return (EINVAL);
- }
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- switch (play->precision) {
- case 8:
- switch (play->channels) {
- case 1:
- play->factor = 4;
- play->sw_code = ulinear8_to_linear16_le_mts;
- break;
- case 2:
- play->factor = 2;
- play->sw_code = ulinear8_to_linear16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- case 16:
- switch (play->channels) {
- case 1:
- play->factor = 2;
- play->sw_code = swap_bytes_change_sign16_le_mts;
- break;
- case 2:
- play->sw_code = swap_bytes_change_sign16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
- default:
- return (EINVAL);
- }
break;
default:
return (EINVAL);
@@ -566,36 +361,10 @@ auixp_set_params(void *hdl, int setmode, int usemode,
}
if (setmode & AUMODE_RECORD) {
- rec->factor = 1;
- rec->sw_code = 0;
- if (rec->channels > 2)
- rec->channels = 2;
- if (rec->precision > 16)
- rec->precision = 16;
+ rec->channels = 2;
+ rec->precision = 16;
switch(rec->encoding) {
- case AUDIO_ENCODING_ULAW:
- rec->sw_code = ulinear8_to_mulaw;
- break;
case AUDIO_ENCODING_SLINEAR_LE:
- if (rec->precision == 8)
- rec->sw_code = change_sign8;
- break;
- case AUDIO_ENCODING_ULINEAR_LE:
- if (rec->precision == 16)
- rec->sw_code = change_sign16_le;
- break;
- case AUDIO_ENCODING_ALAW:
- rec->sw_code = ulinear8_to_alaw;
- break;
- case AUDIO_ENCODING_SLINEAR_BE:
- if (rec->precision == 16)
- rec->sw_code = swap_bytes;
- else
- rec->sw_code = change_sign8;
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- if (rec->precision == 16)
- rec->sw_code = swap_bytes_change_sign16_le;
break;
default:
return (EINVAL);
diff --git a/sys/dev/pci/autri.c b/sys/dev/pci/autri.c
index 50d11713885..1ba41523840 100644
--- a/sys/dev/pci/autri.c
+++ b/sys/dev/pci/autri.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: autri.c,v 1.36 2014/07/12 18:48:51 tedu Exp $ */
+/* $OpenBSD: autri.c,v 1.37 2015/05/11 06:46:21 ratchov Exp $ */
/*
* Copyright (c) 2001 SOMEYA Yoshihiko and KUROSAWA Takahiro.
@@ -50,8 +50,6 @@
#include <sys/audioio.h>
#include <dev/audio_if.h>
#include <dev/midi_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
#include <dev/ic/mpuvar.h>
@@ -912,47 +910,23 @@ autri_query_encoding(void *addr, struct audio_encoding *fp)
fp->flags = 0;
break;
case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
strlcpy(fp->name, AudioEslinear, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR;
fp->precision = 8;
fp->flags = 0;
break;
- case 4:
+ case 2:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
+ case 3:
strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 6:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return (EINVAL);
}
@@ -983,31 +957,15 @@ autri_set_params(void *addr, int setmode, int usemode, struct audio_params *play
p->precision = 16;
if (p->channels > 2)
p->channels = 2;
- p->factor = 1;
- p->sw_code = 0;
switch (p->encoding) {
case AUDIO_ENCODING_SLINEAR_BE:
case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16)
- p->sw_code = swap_bytes;
+ if (p->precision != 16)
+ return EINVAL;
break;
case AUDIO_ENCODING_SLINEAR_LE:
case AUDIO_ENCODING_ULINEAR_LE:
break;
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY)
- p->sw_code = mulaw_to_ulinear8;
- else
- p->sw_code = ulinear8_to_mulaw;
-
- break;
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY)
- p->sw_code = alaw_to_ulinear8;
- else
- p->sw_code = ulinear8_to_alaw;
-
- break;
default:
return (EINVAL);
}
diff --git a/sys/dev/pci/auvia.c b/sys/dev/pci/auvia.c
index aed047d83dc..a68db8c2c89 100644
--- a/sys/dev/pci/auvia.c
+++ b/sys/dev/pci/auvia.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: auvia.c,v 1.54 2015/05/07 01:55:43 jsg Exp $ */
+/* $OpenBSD: auvia.c,v 1.55 2015/05/11 06:46:21 ratchov Exp $ */
/* $NetBSD: auvia.c,v 1.28 2002/11/04 16:38:49 kent Exp $ */
/*-
@@ -48,8 +48,6 @@
#include <dev/pci/pcivar.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
@@ -543,47 +541,11 @@ auvia_query_encoding(void *addr, struct audio_encoding *fp)
fp->flags = 0;
break;
case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(fp->name, AudioEslinear, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
- strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return (EINVAL);
}
@@ -603,7 +565,7 @@ auvia_set_params_sub(struct auvia_softc *sc, struct auvia_softc_chan *ch,
if (!(sc->sc_flags & AUVIA_FLAGS_VT8233)) {
regval = (p->channels == 2 ? AUVIA_RPMODE_STEREO : 0)
- | (p->precision * p->factor == 16 ?
+ | (p->precision == 16 ?
AUVIA_RPMODE_16BIT : 0)
| AUVIA_RPMODE_INTR_FLAG | AUVIA_RPMODE_INTR_EOL
| AUVIA_RPMODE_AUTOSTART;
@@ -728,45 +690,15 @@ auvia_set_params(void *addr, int setmode, int usemode,
}
}
- p->factor = 1;
- p->sw_code = 0;
switch (p->encoding) {
- case AUDIO_ENCODING_SLINEAR_BE:
- if (p->precision == 16)
- p->sw_code = swap_bytes;
- else
- p->sw_code = change_sign8;
- break;
case AUDIO_ENCODING_SLINEAR_LE:
if (p->precision != 16)
- p->sw_code = change_sign8;
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16)
- p->sw_code = mode == AUMODE_PLAY?
- swap_bytes_change_sign16_le :
- change_sign16_swap_bytes_le;
+ return EINVAL;
break;
case AUDIO_ENCODING_ULINEAR_LE:
- if (p->precision == 16)
- p->sw_code = change_sign16_le;
- break;
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = mulaw_to_slinear16_le;
- } else
- p->sw_code = ulinear8_to_mulaw;
- break;
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = alaw_to_slinear16_le;
- } else
- p->sw_code = ulinear8_to_alaw;
- break;
- case AUDIO_ENCODING_SLINEAR:
- case AUDIO_ENCODING_ULINEAR:
+ case AUDIO_ENCODING_ULINEAR_BE:
+ if (p->precision != 8)
+ return EINVAL;
break;
default:
return (EINVAL);
diff --git a/sys/dev/pci/azalia.c b/sys/dev/pci/azalia.c
index b126ef615b3..3fba10ecd0f 100644
--- a/sys/dev/pci/azalia.c
+++ b/sys/dev/pci/azalia.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: azalia.c,v 1.220 2015/02/10 06:19:44 dlg Exp $ */
+/* $OpenBSD: azalia.c,v 1.221 2015/05/11 06:46:21 ratchov Exp $ */
/* $NetBSD: azalia.c,v 1.20 2006/05/07 08:31:44 kent Exp $ */
/*-
@@ -47,7 +47,6 @@
#include <sys/types.h>
#include <sys/timeout.h>
#include <dev/audio_if.h>
-#include <dev/auconv.h>
#include <dev/pci/pcidevs.h>
#include <dev/pci/pcivar.h>
@@ -3910,8 +3909,6 @@ azalia_get_default_params(void *addr, int mode, struct audio_params *params)
params->bps = 2;
params->msb = 1;
params->channels = 2;
- params->sw_code = NULL;
- params->factor = 1;
}
int
@@ -3944,7 +3941,6 @@ azalia_match_format(codec_t *codec, int mode, audio_params_t *par)
int
azalia_set_params_sub(codec_t *codec, int mode, audio_params_t *par)
{
- void (*swcode)(void *, u_char *, int) = NULL;
char *cmode;
int i, j;
uint ochan, oenc, opre;
@@ -3965,20 +3961,6 @@ azalia_set_params_sub(codec_t *codec, int mode, audio_params_t *par)
}
i = azalia_match_format(codec, mode, par);
- if (i == codec->nformats && par->channels == 1) {
- /* find a 2 channel format and emulate mono */
- par->channels = 2;
- i = azalia_match_format(codec, mode, par);
- if (i != codec->nformats) {
- par->factor = 2;
- if (mode == AUMODE_RECORD)
- swcode = linear16_decimator;
- else
- swcode = noswap_bytes_mts;
- par->channels = 1;
- }
- }
- par->channels = ochan;
if (i == codec->nformats && (par->precision != 16 || par->encoding !=
AUDIO_ENCODING_SLINEAR_LE)) {
/* try with default encoding/precision */
@@ -3986,20 +3968,6 @@ azalia_set_params_sub(codec_t *codec, int mode, audio_params_t *par)
par->precision = 16;
i = azalia_match_format(codec, mode, par);
}
- if (i == codec->nformats && par->channels == 1) {
- /* find a 2 channel format and emulate mono */
- par->channels = 2;
- i = azalia_match_format(codec, mode, par);
- if (i != codec->nformats) {
- par->factor = 2;
- if (mode == AUMODE_RECORD)
- swcode = linear16_decimator;
- else
- swcode = noswap_bytes_mts;
- par->channels = 1;
- }
- }
- par->channels = ochan;
if (i == codec->nformats && par->channels != 2) {
/* try with default channels */
par->encoding = oenc;
@@ -4045,7 +4013,6 @@ azalia_set_params_sub(codec_t *codec, int mode, audio_params_t *par)
return EINVAL;
}
}
- par->sw_code = swcode;
par->bps = AUDIO_BPS(par->precision);
par->msb = 1;
@@ -4328,11 +4295,8 @@ azalia_params2fmt(const audio_params_t *param, uint16_t *fmt)
DPRINTFN(1, ("%s: prec=%d, chan=%d, rate=%ld\n", __func__,
param->precision, param->channels, param->sample_rate));
- /* Only mono is emulated, and it is emulated from stereo. */
- if (param->sw_code != NULL)
- ret |= 1;
- else
- ret |= param->channels - 1;
+ /* XXX: can channels be >2 ? */
+ ret |= param->channels - 1;
switch (param->precision) {
case 8:
diff --git a/sys/dev/pci/cmpci.c b/sys/dev/pci/cmpci.c
index cb84442f414..d4e4d9940ad 100644
--- a/sys/dev/pci/cmpci.c
+++ b/sys/dev/pci/cmpci.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmpci.c,v 1.38 2015/03/14 03:38:48 jsg Exp $ */
+/* $OpenBSD: cmpci.c,v 1.39 2015/05/11 06:46:21 ratchov Exp $ */
/* $NetBSD: cmpci.c,v 1.25 2004/10/26 06:32:20 xtraeme Exp $ */
/*
@@ -62,8 +62,6 @@ int cmpcidebug = 0;
#include <dev/audio_if.h>
#include <dev/midi_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/pci/cmpcireg.h>
#include <dev/pci/cmpcivar.h>
@@ -654,47 +652,11 @@ cmpci_query_encoding(void *handle, struct audio_encoding *fp)
fp->flags = 0;
break;
case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(fp->name, AudioEslinear, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
- strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return EINVAL;
}
@@ -713,8 +675,6 @@ cmpci_get_default_params(void *addr, int mode, struct audio_params *params)
params->bps = 2;
params->msb = 1;
params->channels = 2;
- params->sw_code = NULL;
- params->factor = 1;
}
int
@@ -778,7 +738,6 @@ cmpci_set_params(void *handle, int setmode, int usemode,
/* format */
if (p->precision > 16)
p->precision = 16;
- p->sw_code = NULL;
switch (p->channels) {
case 1:
md_format = CMPCI_REG_FORMAT_MONO;
@@ -851,83 +810,16 @@ cmpci_set_params(void *handle, int setmode, int usemode,
return (EINVAL);
}
switch (p->encoding) {
- case AUDIO_ENCODING_ULAW:
- if (mode & AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = mulaw_to_slinear16_le;
- md_format |= CMPCI_REG_FORMAT_16BIT;
- } else {
- p->sw_code = ulinear8_to_mulaw;
- md_format |= CMPCI_REG_FORMAT_8BIT;
- }
- break;
- case AUDIO_ENCODING_ALAW:
- if (mode & AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = alaw_to_slinear16_le;
- md_format |= CMPCI_REG_FORMAT_16BIT;
- } else {
- p->sw_code = ulinear8_to_alaw;
- md_format |= CMPCI_REG_FORMAT_8BIT;
- }
- break;
case AUDIO_ENCODING_SLINEAR_LE:
- switch (p->precision) {
- case 8:
- p->sw_code = change_sign8;
- md_format |= CMPCI_REG_FORMAT_8BIT;
- break;
- case 16:
- md_format |= CMPCI_REG_FORMAT_16BIT;
- break;
- default:
- return (EINVAL);
- }
- break;
- case AUDIO_ENCODING_SLINEAR_BE:
- switch (p->precision) {
- case 8:
- md_format |= CMPCI_REG_FORMAT_8BIT;
- p->sw_code = change_sign8;
- break;
- case 16:
- md_format |= CMPCI_REG_FORMAT_16BIT;
- p->sw_code = swap_bytes;
- break;
- default:
+ if (p->precision != 16)
return (EINVAL);
- }
+ md_format |= CMPCI_REG_FORMAT_16BIT;
break;
case AUDIO_ENCODING_ULINEAR_LE:
- switch (p->precision) {
- case 8:
- md_format |= CMPCI_REG_FORMAT_8BIT;
- break;
- case 16:
- md_format |= CMPCI_REG_FORMAT_16BIT;
- p->sw_code = change_sign16_le;
- break;
- default:
- return (EINVAL);
- }
- break;
case AUDIO_ENCODING_ULINEAR_BE:
- switch (p->precision) {
- case 8:
- md_format |= CMPCI_REG_FORMAT_8BIT;
- break;
- case 16:
- md_format |= CMPCI_REG_FORMAT_16BIT;
- if (mode & AUMODE_PLAY)
- p->sw_code =
- swap_bytes_change_sign16_le;
- else
- p->sw_code =
- change_sign16_swap_bytes_le;
- break;
- default:
+ if (p->precision != 8)
return (EINVAL);
- }
+ md_format |= CMPCI_REG_FORMAT_8BIT;
break;
default:
return (EINVAL);
@@ -2015,7 +1907,7 @@ cmpci_trigger_output(void *handle, void *start, void *end, int blksize,
reg_enable = CMPCI_REG_CH0_ENABLE;
}
- chan->bps = (param->channels > 1 ? 2 : 1) * param->bps * param->factor;
+ chan->bps = (param->channels > 1 ? 2 : 1) * param->bps;
if (!chan->bps)
return EINVAL;
@@ -2060,7 +1952,7 @@ cmpci_trigger_input(void *handle, void *start, void *end, int blksize,
cmpci_set_in_ports(sc);
- chan->bps = param->channels * param->bps * param->factor;
+ chan->bps = param->channels * param->bps;
if (!chan->bps)
return EINVAL;
diff --git a/sys/dev/pci/cs4280.c b/sys/dev/pci/cs4280.c
index 266079dca8f..8a4cf871614 100644
--- a/sys/dev/pci/cs4280.c
+++ b/sys/dev/pci/cs4280.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cs4280.c,v 1.46 2015/03/14 03:38:48 jsg Exp $ */
+/* $OpenBSD: cs4280.c,v 1.47 2015/05/11 06:46:22 ratchov Exp $ */
/* $NetBSD: cs4280.c,v 1.5 2000/06/26 04:56:23 simonb Exp $ */
/*
@@ -78,8 +78,6 @@ int cs4280debug = 0;
#include <sys/audioio.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
@@ -1020,53 +1018,11 @@ cs4280_query_encoding(void *addr, struct audio_encoding *fp)
{
switch (fp->index) {
case 0:
- strlcpy(fp->name, AudioEulinear, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR;
- fp->precision = 8;
- fp->flags = 0;
- break;
- case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(fp->name, AudioEslinear, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR;
- fp->precision = 8;
- fp->flags = 0;
- break;
- case 4:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
- strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
- fp->precision = 16;
- fp->flags = 0;
- break;
- case 6:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = 0;
- break;
- case 7:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = 0;
- break;
default:
return (EINVAL);
}
@@ -1116,51 +1072,11 @@ cs4280_set_params(void *addr, int setmode, int usemode,
p->precision = 16;
if (p->channels > 2)
p->channels = 2;
- p->factor = 1;
- p->sw_code = 0;
/* capturing data is slinear */
switch (p->encoding) {
- case AUDIO_ENCODING_SLINEAR_BE:
- if (mode == AUMODE_RECORD) {
- if (p->precision == 16)
- p->sw_code = swap_bytes;
- }
- break;
case AUDIO_ENCODING_SLINEAR_LE:
break;
- case AUDIO_ENCODING_ULINEAR_BE:
- if (mode == AUMODE_RECORD) {
- if (p->precision == 16)
- p->sw_code = change_sign16_swap_bytes_le;
- else
- p->sw_code = change_sign8;
- }
- break;
- case AUDIO_ENCODING_ULINEAR_LE:
- if (mode == AUMODE_RECORD) {
- if (p->precision == 16)
- p->sw_code = change_sign16_le;
- else
- p->sw_code = change_sign8;
- }
- break;
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = mulaw_to_slinear16_le;
- } else {
- p->sw_code = slinear8_to_mulaw;
- }
- break;
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = alaw_to_slinear16_le;
- } else {
- p->sw_code = slinear8_to_alaw;
- }
- break;
default:
return (EINVAL);
}
@@ -1445,8 +1361,8 @@ cs4280_trigger_output(void *addr, void *start, void *end, int blksize,
pdtc |= CS4280_MK_PDTC(param->precision * param->channels);
BA1WRITE4(sc, CS4280_PDTC, pdtc);
- DPRINTF(("param: precision=%d factor=%d channels=%d encoding=%d\n",
- param->precision, param->factor, param->channels,
+ DPRINTF(("param: precision=%d channels=%d encoding=%d\n",
+ param->precision, param->channels,
param->encoding));
for (p = sc->sc_dmas; p != NULL && BUFADDR(p) != start; p = p->next)
;
@@ -1483,7 +1399,7 @@ cs4280_trigger_output(void *addr, void *start, void *end, int blksize,
/* set PFIE */
pfie = BA1READ4(sc, CS4280_PFIE) & ~PFIE_MASK;
- if (param->precision * param->factor == 8)
+ if (param->precision == 8)
pfie |= PFIE_8BIT;
if (param->channels == 1)
pfie |= PFIE_MONO;
diff --git a/sys/dev/pci/cs4281.c b/sys/dev/pci/cs4281.c
index a78944334fe..0d2b8cd9a7e 100644
--- a/sys/dev/pci/cs4281.c
+++ b/sys/dev/pci/cs4281.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cs4281.c,v 1.31 2014/07/12 18:48:51 tedu Exp $ */
+/* $OpenBSD: cs4281.c,v 1.32 2015/05/11 06:46:22 ratchov Exp $ */
/* $Tera: cs4281.c,v 1.18 2000/12/27 14:24:45 tacha Exp $ */
/*
@@ -55,8 +55,6 @@
#include <sys/audioio.h>
#include <dev/audio_if.h>
#include <dev/midi_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
@@ -448,42 +446,30 @@ cs4281_query_encoding(addr, fp)
fp->flags = 0;
break;
case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
strlcpy(fp->name, AudioEslinear, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR;
fp->precision = 8;
fp->flags = 0;
break;
- case 4:
+ case 2:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
+ case 3:
strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 6:
+ case 4:
strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
fp->precision = 16;
fp->flags = 0;
break;
- case 7:
+ case 5:
strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
fp->precision = 16;
@@ -530,8 +516,6 @@ cs4281_set_params(addr, setmode, usemode, play, rec)
p->precision = 16;
if (p->channels > 2)
p->channels = 2;
- p->factor = 1;
- p->sw_code = 0;
switch (p->encoding) {
case AUDIO_ENCODING_SLINEAR_BE:
@@ -542,20 +526,6 @@ cs4281_set_params(addr, setmode, usemode, play, rec)
break;
case AUDIO_ENCODING_ULINEAR_LE:
break;
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY) {
- p->sw_code = mulaw_to_slinear8;
- } else {
- p->sw_code = slinear8_to_mulaw;
- }
- break;
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY) {
- p->sw_code = alaw_to_slinear8;
- } else {
- p->sw_code = slinear8_to_alaw;
- }
- break;
default:
return (EINVAL);
}
@@ -634,8 +604,8 @@ cs4281_trigger_output(addr, start, end, blksize, intr, arg, param)
/* stop playback DMA */
BA0WRITE4(sc, CS4281_DCR0, BA0READ4(sc, CS4281_DCR0) | DCRn_MSK);
- DPRINTF(("param: precision=%d factor=%d channels=%d encoding=%d\n",
- param->precision, param->factor, param->channels,
+ DPRINTF(("param: precision=%d channels=%d encoding=%d\n",
+ param->precision, param->channels,
param->encoding));
for (p = sc->sc_dmas; p != NULL && BUFADDR(p) != start; p = p->next)
;
@@ -662,7 +632,7 @@ cs4281_trigger_output(addr, start, end, blksize, intr, arg, param)
}
dma_count = sc->dma_size;
- if (param->precision * param->factor != 8)
+ if (param->precision != 8)
dma_count /= 2; /* 16 bit */
if (param->channels > 1)
dma_count /= 2; /* Stereo */
@@ -674,7 +644,7 @@ cs4281_trigger_output(addr, start, end, blksize, intr, arg, param)
/* set playback format */
fmt = BA0READ4(sc, CS4281_DMR0) & ~DMRn_FMTMSK;
- if (param->precision * param->factor == 8)
+ if (param->precision == 8)
fmt |= DMRn_SIZE8;
if (param->channels == 1)
fmt |= DMRn_MONO;
@@ -756,7 +726,7 @@ cs4281_trigger_input(addr, start, end, blksize, intr, arg, param)
sc->sc_rn = sc->sc_rs;
dma_count = sc->dma_size;
- if (param->precision * param->factor == 8)
+ if (param->precision == 8)
dma_count /= 2;
if (param->channels > 1)
dma_count /= 2;
@@ -768,7 +738,7 @@ cs4281_trigger_input(addr, start, end, blksize, intr, arg, param)
/* set recording format */
fmt = BA0READ4(sc, CS4281_DMR1) & ~DMRn_FMTMSK;
- if (param->precision * param->factor == 8)
+ if (param->precision == 8)
fmt |= DMRn_SIZE8;
if (param->channels == 1)
fmt |= DMRn_MONO;
diff --git a/sys/dev/pci/eap.c b/sys/dev/pci/eap.c
index 1c77404505b..872e674ff41 100644
--- a/sys/dev/pci/eap.c
+++ b/sys/dev/pci/eap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: eap.c,v 1.50 2015/03/14 03:38:48 jsg Exp $ */
+/* $OpenBSD: eap.c,v 1.51 2015/05/11 06:46:22 ratchov Exp $ */
/* $NetBSD: eap.c,v 1.46 2001/09/03 15:07:37 reinoud Exp $ */
/*
@@ -61,8 +61,6 @@
#include <sys/audioio.h>
#include <dev/audio_if.h>
#include <dev/midi_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
#include <machine/bus.h>
@@ -875,47 +873,11 @@ eap_query_encoding(void *addr, struct audio_encoding *fp)
fp->flags = 0;
break;
case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(fp->name, AudioEslinear, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
- strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return (EINVAL);
}
@@ -974,45 +936,15 @@ eap_set_params(void *addr, int setmode, int usemode,
p->precision = 16;
if (p->channels > 2)
p->channels = 2;
- p->factor = 1;
- p->sw_code = 0;
switch (p->encoding) {
- case AUDIO_ENCODING_SLINEAR_BE:
- if (p->precision == 16)
- p->sw_code = swap_bytes;
- else
- p->sw_code = change_sign8;
- break;
case AUDIO_ENCODING_SLINEAR_LE:
if (p->precision != 16)
- p->sw_code = change_sign8;
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16) {
- if (mode == AUMODE_PLAY)
- p->sw_code = swap_bytes_change_sign16_le;
- else
- p->sw_code = change_sign16_swap_bytes_le;
- }
+ return EINVAL;
break;
case AUDIO_ENCODING_ULINEAR_LE:
- if (p->precision == 16)
- p->sw_code = change_sign16_le;
- break;
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = mulaw_to_slinear16_le;
- } else
- p->sw_code = ulinear8_to_mulaw;
- break;
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = alaw_to_slinear16_le;
- } else
- p->sw_code = ulinear8_to_alaw;
- break;
+ case AUDIO_ENCODING_ULINEAR_BE:
+ if (p->precision != 8)
+ return EINVAL;
default:
return (EINVAL);
}
@@ -1079,9 +1011,9 @@ eap_trigger_output(
mtx_enter(&audio_lock);
sic = EREAD4(sc, EAP_SIC);
sic &= ~(EAP_P2_S_EB | EAP_P2_S_MB | EAP_INC_BITS);
- sic |= EAP_SET_P2_ST_INC(0) | EAP_SET_P2_END_INC(param->precision * param->factor / 8);
+ sic |= EAP_SET_P2_ST_INC(0) | EAP_SET_P2_END_INC(param->precision / 8);
sampshift = 0;
- if (param->precision * param->factor == 16) {
+ if (param->precision == 16) {
sic |= EAP_P2_S_EB;
sampshift++;
}
@@ -1150,7 +1082,7 @@ eap_trigger_input(
sic = EREAD4(sc, EAP_SIC);
sic &= ~(EAP_R1_S_EB | EAP_R1_S_MB);
sampshift = 0;
- if (param->precision * param->factor == 16) {
+ if (param->precision == 16) {
sic |= EAP_R1_S_EB;
sampshift++;
}
diff --git a/sys/dev/pci/emuxki.c b/sys/dev/pci/emuxki.c
index 63cc9235f6c..3abce7857e3 100644
--- a/sys/dev/pci/emuxki.c
+++ b/sys/dev/pci/emuxki.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: emuxki.c,v 1.47 2015/03/14 03:38:48 jsg Exp $ */
+/* $OpenBSD: emuxki.c,v 1.48 2015/05/11 06:46:22 ratchov Exp $ */
/* $NetBSD: emuxki.c,v 1.1 2001/10/17 18:39:41 jdolecek Exp $ */
/*-
@@ -63,15 +63,11 @@
#include <dev/pci/pcidevs.h>
#include <dev/audio_if.h>
-#include <dev/auconv.h>
-#include <dev/mulaw.h>
#include <dev/ic/ac97.h>
#include <dev/pci/emuxkireg.h>
#include <dev/pci/emuxkivar.h>
-#define slinear16_to_ulinear8_le linear16_to_ulinear8_le;
-
/* autconf goo */
int emuxki_match(struct device *, void *, void *);
void emuxki_attach(struct device *, struct device *, void *);
@@ -2098,47 +2094,11 @@ emuxki_query_encoding(void *addr, struct audio_encoding *fp)
fp->flags = 0;
break;
case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(fp->name, AudioEslinear, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
- strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return (EINVAL);
}
@@ -2155,8 +2115,6 @@ emuxki_set_vparms(struct emuxki_voice *voice, struct audio_params *p)
mode = (voice->use & EMU_VOICE_USE_PLAY) ?
AUMODE_PLAY : AUMODE_RECORD;
- p->factor = 1;
- p->sw_code = NULL;
if (p->channels > 2)
p->channels = 2;
if (p->precision > 16)
@@ -2171,64 +2129,19 @@ emuxki_set_vparms(struct emuxki_voice *voice, struct audio_params *p)
b16 = (p->precision == 16);
else {
b16 = 1;
- if (p->precision == 8)
- p->factor *= 2;
+ p->precision = 16;
}
switch (p->encoding) {
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = mulaw_to_slinear16_le;
- b16 = 1;
- } else
- p->sw_code = slinear16_to_mulaw_le;
- break;
-
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = alaw_to_slinear16_le;
- b16 = 1;
- } else
- p->sw_code = slinear16_to_alaw_le;
- break;
-
case AUDIO_ENCODING_SLINEAR_LE:
- if (p->precision == 8) {
- if (mode == AUMODE_PLAY)
- p->sw_code = change_sign8;
- else
- p->sw_code = linear16_to_linear8_le;
- }
+ if (p->precision != 16)
+ return EINVAL;
break;
case AUDIO_ENCODING_ULINEAR_LE:
- if (p->precision == 16)
- p->sw_code = change_sign16_le;
- else if (mode == AUMODE_RECORD)
- p->sw_code = slinear16_to_ulinear8_le;
- break;
-
- case AUDIO_ENCODING_SLINEAR_BE:
- if (p->precision == 16)
- p->sw_code = swap_bytes;
- else {
- if (mode == AUMODE_PLAY)
- p->sw_code = change_sign8;
- else
- p->sw_code = linear16_to_linear8_le;
- }
- break;
-
case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16) {
- if (mode == AUMODE_PLAY)
- p->sw_code = swap_bytes_change_sign16_le;
- else
- p->sw_code = change_sign16_swap_bytes_le;
- } else if (mode == AUMODE_RECORD)
- p->sw_code = slinear16_to_ulinear8_le;
+ if (p->precision != 8)
+ return EINVAL;
break;
default:
diff --git a/sys/dev/pci/esa.c b/sys/dev/pci/esa.c
index 0c590636bee..0dc5db2bbed 100644
--- a/sys/dev/pci/esa.c
+++ b/sys/dev/pci/esa.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: esa.c,v 1.28 2014/07/12 18:48:51 tedu Exp $ */
+/* $OpenBSD: esa.c,v 1.29 2015/05/11 06:46:22 ratchov Exp $ */
/* $NetBSD: esa.c,v 1.12 2002/03/24 14:17:35 jmcneill Exp $ */
/*
@@ -61,8 +61,6 @@
#include <dev/pci/pcivar.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
#include <dev/pci/esareg.h>
@@ -166,19 +164,7 @@ int esa_resume(struct esa_softc *);
static audio_encoding_t esa_encoding[] = {
{ 0, AudioEulinear, AUDIO_ENCODING_ULINEAR, 8, 1, 1, 0 },
- { 1, AudioEmulaw, AUDIO_ENCODING_ULAW, 8, 1, 1,
- AUDIO_ENCODINGFLAG_EMULATED },
- { 2, AudioEalaw, AUDIO_ENCODING_ALAW, 8, 1, 1,
- AUDIO_ENCODINGFLAG_EMULATED },
- { 3, AudioEslinear, AUDIO_ENCODING_SLINEAR, 8, 1, 1,
- AUDIO_ENCODINGFLAG_EMULATED },
- { 4, AudioEslinear_le, AUDIO_ENCODING_SLINEAR_LE, 16, 2, 1, 0 },
- { 5, AudioEulinear_le, AUDIO_ENCODING_ULINEAR_LE, 16, 2, 1,
- AUDIO_ENCODINGFLAG_EMULATED },
- { 6, AudioEslinear_be, AUDIO_ENCODING_SLINEAR_BE, 16, 2, 1,
- AUDIO_ENCODINGFLAG_EMULATED },
- { 7, AudioEulinear_be, AUDIO_ENCODING_ULINEAR_BE, 16, 2, 1,
- AUDIO_ENCODINGFLAG_EMULATED }
+ { 1, AudioEslinear_le, AUDIO_ENCODING_SLINEAR_LE, 16, 2, 1, 0 }
};
#define ESA_NENCODINGS 8
@@ -292,47 +278,15 @@ esa_set_params(void *hdl, int setmode, int usemode, struct audio_params *play,
if (p->channels > 2)
p->channels = 2;
- p->factor = 1;
- p->sw_code = 0;
-
switch(p->encoding) {
- case AUDIO_ENCODING_SLINEAR_BE:
- if (p->precision == 16)
- p->sw_code = swap_bytes;
- else
- p->sw_code = change_sign8;
- break;
case AUDIO_ENCODING_SLINEAR_LE:
if (p->precision != 16)
- p->sw_code = change_sign8;
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16) {
- if (mode == AUMODE_PLAY)
- p->sw_code =
- swap_bytes_change_sign16_le;
- else
- p->sw_code =
- change_sign16_swap_bytes_le;
- }
+ return EINVAL;
break;
case AUDIO_ENCODING_ULINEAR_LE:
- if (p->precision == 16)
- p->sw_code = change_sign16_le;
- break;
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = mulaw_to_slinear16_le;
- } else
- p->sw_code = ulinear8_to_mulaw;
- break;
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = alaw_to_slinear16_le;
- } else
- p->sw_code = ulinear8_to_alaw;
+ case AUDIO_ENCODING_ULINEAR_BE:
+ if (p->precision != 8)
+ return EINVAL;
break;
default:
return (EINVAL);
@@ -369,7 +323,7 @@ esa_commit_settings(void *hdl)
esa_write_assp(sc, ESA_MEMTYPE_INTERNAL_DATA,
vc->play.data_offset + ESA_SRC3_MODE_OFFSET,
data);
- if (p->precision * p->factor == 8)
+ if (p->precision == 8)
data = 1;
else
data = 0;
@@ -392,7 +346,7 @@ esa_commit_settings(void *hdl)
esa_write_assp(sc, ESA_MEMTYPE_INTERNAL_DATA,
vc->rec.data_offset + ESA_SRC3_MODE_OFFSET,
data);
- if (r->precision * r->factor == 8)
+ if (r->precision == 8)
data = 1;
else
data = 0;
diff --git a/sys/dev/pci/eso.c b/sys/dev/pci/eso.c
index cf78cb92cb7..73aa1b2a3cf 100644
--- a/sys/dev/pci/eso.c
+++ b/sys/dev/pci/eso.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: eso.c,v 1.39 2014/07/12 18:48:51 tedu Exp $ */
+/* $OpenBSD: eso.c,v 1.40 2015/05/11 06:46:22 ratchov Exp $ */
/* $NetBSD: eso.c,v 1.48 2006/12/18 23:13:39 kleink Exp $ */
/*
@@ -46,9 +46,6 @@
#include <dev/audio_if.h>
#include <dev/midi_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
-
#include <dev/ic/mpuvar.h>
#include <dev/ic/i8237reg.h>
#include <dev/pci/esoreg.h>
@@ -672,47 +669,23 @@ eso_query_encoding(void *hdl, struct audio_encoding *fp)
fp->flags = 0;
break;
case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
strlcpy(fp->name, AudioEslinear, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR;
fp->precision = 8;
fp->flags = 0;
break;
- case 4:
+ case 2:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
+ case 3:
strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 6:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return (EINVAL);
}
@@ -731,8 +704,6 @@ eso_get_default_params(void *addr, int mode, struct audio_params *params)
params->bps = 2;
params->msb = 1;
params->channels = 2;
- params->sw_code = NULL;
- params->factor = 1;
}
int
@@ -760,33 +731,15 @@ eso_set_params(void *hdl, int setmode, int usemode,
if (p->channels > 2)
p->channels = 2;
- p->factor = 1;
- p->sw_code = NULL;
switch (p->encoding) {
case AUDIO_ENCODING_SLINEAR_BE:
case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16)
- p->sw_code = swap_bytes;
+ if (p->precision != 8)
+ return EINVAL;
break;
case AUDIO_ENCODING_SLINEAR_LE:
case AUDIO_ENCODING_ULINEAR_LE:
break;
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = mulaw_to_ulinear16_le;
- } else {
- p->sw_code = ulinear8_to_mulaw;
- }
- break;
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = alaw_to_ulinear16_le;
- } else {
- p->sw_code = ulinear8_to_alaw;
- }
- break;
default:
return (EINVAL);
}
@@ -1726,9 +1679,9 @@ eso_trigger_output(void *hdl, void *start, void *end, int blksize,
DPRINTF((
"%s: trigger_output: start %p, end %p, blksize %d, intr %p(%p)\n",
sc->sc_dev.dv_xname, start, end, blksize, intr, arg));
- DPRINTF(("%s: param: rate %lu, encoding %u, precision %u, channels %u, sw_code %p, factor %d\n",
+ DPRINTF(("%s: param: rate %lu, encoding %u, precision %u, channels %u\n",
sc->sc_dev.dv_xname, param->sample_rate, param->encoding,
- param->precision, param->channels, param->sw_code, param->factor));
+ param->precision, param->channels));
/* Find DMA buffer. */
for (ed = sc->sc_dmas; ed != NULL && KVADDR(ed) != start;
@@ -1747,7 +1700,7 @@ eso_trigger_output(void *hdl, void *start, void *end, int blksize,
/* Compute drain timeout. */
sc->sc_pdrain = hz * (blksize * 3 / 2) /
- (param->sample_rate * param->channels * param->bps * param->factor);
+ (param->sample_rate * param->channels * param->bps);
/* DMA transfer count (in `words'!) reload using 2's complement. */
blksize = -(blksize >> 1);
@@ -1756,7 +1709,7 @@ eso_trigger_output(void *hdl, void *start, void *end, int blksize,
/* Update DAC to reflect DMA count and audio parameters. */
/* Note: we cache A2C2 in order to avoid r/m/w at interrupt time. */
- if (param->precision * param->factor == 16)
+ if (param->precision == 16)
sc->sc_a2c2 |= ESO_MIXREG_A2C2_16BIT;
else
sc->sc_a2c2 &= ~ESO_MIXREG_A2C2_16BIT;
@@ -1802,9 +1755,9 @@ eso_trigger_input(void *hdl, void *start, void *end, int blksize,
DPRINTF((
"%s: trigger_input: start %p, end %p, blksize %d, intr %p(%p)\n",
sc->sc_dev.dv_xname, start, end, blksize, intr, arg));
- DPRINTF(("%s: param: rate %lu, encoding %u, precision %u, channels %u, sw_code %p, factor %d\n",
+ DPRINTF(("%s: param: rate %lu, encoding %u, precision %u, channels %u\n",
sc->sc_dev.dv_xname, param->sample_rate, param->encoding,
- param->precision, param->channels, param->sw_code, param->factor));
+ param->precision, param->channels));
/*
* If we failed to configure the Audio 1 DMA controller, bail here
@@ -1830,7 +1783,7 @@ eso_trigger_input(void *hdl, void *start, void *end, int blksize,
/* Compute drain timeout. */
sc->sc_rdrain = hz * (blksize * 3 / 2) /
- (param->sample_rate * param->channels * param->bps * param->factor);
+ (param->sample_rate * param->channels * param->bps);
/* Set up ADC DMA converter parameters. */
actl = eso_read_ctlreg(sc, ESO_CTLREG_ACTL);
@@ -1853,7 +1806,7 @@ eso_trigger_input(void *hdl, void *start, void *end, int blksize,
/* Set up and enable Audio 1 DMA FIFO. */
a1c1 = ESO_CTLREG_A1C1_RESV1 | ESO_CTLREG_A1C1_FIFOENB;
- if (param->precision * param->factor == 16)
+ if (param->precision == 16)
a1c1 |= ESO_CTLREG_A1C1_16BIT;
if (param->channels == 2)
a1c1 |= ESO_CTLREG_A1C1_STEREO;
diff --git a/sys/dev/pci/files.pci b/sys/dev/pci/files.pci
index 33391cc0002..2483a060a24 100644
--- a/sys/dev/pci/files.pci
+++ b/sys/dev/pci/files.pci
@@ -1,4 +1,4 @@
-# $OpenBSD: files.pci,v 1.314 2015/04/09 18:58:22 deraadt Exp $
+# $OpenBSD: files.pci,v 1.315 2015/05/11 06:46:22 ratchov Exp $
# $NetBSD: files.pci,v 1.20 1996/09/24 17:47:15 christos Exp $
#
# Config file and device description for machine-independent PCI code.
@@ -112,27 +112,27 @@ attach ips at pci
file dev/pci/ips.c ips
# Ensoniq AudioPCI S5016, 1371
-device eap: audio, auconv, mulaw, ac97, midibus
+device eap: audio, ac97, midibus
attach eap at pci
file dev/pci/eap.c eap
# ESS Solo-1 PCI AudioDrive
-device eso {}: audio, auconv, mulaw, midibus
+device eso {}: audio, midibus
attach eso at pci
file dev/pci/eso.c eso
# Acer Labs M5455
-device auacer: audio, auconv, mulaw, ac97
+device auacer: audio, ac97
attach auacer at pci
file dev/pci/auacer.c auacer
# Intel 810/820/440MX ICH audio with AC'97
-device auich: audio, auconv, mulaw, ac97
+device auich: audio, ac97
attach auich at pci
file dev/pci/auich.c auich
# Intel 82801 HDA
-device azalia: audio, auconv, mulaw, ac97
+device azalia: audio, ac97
attach azalia at pci
file dev/pci/azalia.c azalia
file dev/pci/azalia_codec.c azalia
@@ -143,53 +143,53 @@ attach envy at pci
file dev/pci/envy.c envy
# Creative Labs EMU10k1 (SBLive! series and PCI512)
-device emu: audio, auconv, mulaw, ac97
+device emu: audio, ac97
attach emu at pci
file dev/pci/emuxki.c emu
# Trident 4DWAVE based PCI audio (including SiS 7018, ALi M5451)
-device autri: audio, auconv, mulaw, ac97, midibus
+device autri: audio, ac97, midibus
attach autri at pci
file dev/pci/autri.c autri
# ATI SB200/300/400 series AC'97 Audio
-device auixp: audio, auconv, mulaw, ac97
+device auixp: audio, ac97
attach auixp at pci
file dev/pci/auixp.c auixp
# CS4280 CrystalClear Audio
-device clcs: audio, auconv, mulaw, ac97, firmload
+device clcs: audio, ac97, firmload
attach clcs at pci
file dev/pci/cs4280.c clcs
# CS4281 CrystalClear Audio
-device clct: audio, auconv, mulaw, ac97
+device clct: audio, ac97
attach clct at pci
file dev/pci/cs4281.c clct
# ESS Maestro
-device maestro: audio, auconv, mulaw, ac97
+device maestro: audio, ac97
attach maestro at pci
file dev/pci/maestro.c maestro
# ESS Maestro3
-device esa: audio, auconv, mulaw, ac97
+device esa: audio, ac97
attach esa at pci
file dev/pci/esa.c esa
# Yamaha YMF Audio
-device yds {}: audio, auconv, mulaw, ac97, firmload
+device yds {}: audio, ac97, firmload
attach yds at pci
file dev/pci/yds.c yds
# Forte Media FM801
-device fms: audio, auconv, mulaw, ac97, midibus, tea5757, radiobus
+device fms: audio, ac97, midibus, tea5757, radiobus
attach fms at pci
file dev/pci/fms.c fms
file dev/pci/fmsradio.c fms & radio
# VIA VT82C686A AC'97 Audio
-device auvia: audio, auconv, mulaw, ac97
+device auvia: audio, ac97
attach auvia at pci
file dev/pci/auvia.c auvia
@@ -272,7 +272,7 @@ attach siop at pci with siop_pci: siop_pci_common
file dev/pci/siop_pci.c siop_pci
# NeoMagic 256AV and 256ZX
-device neo: audio, auconv, mulaw, ac97, firmload
+device neo: audio, ac97, firmload
attach neo at pci
file dev/pci/neo.c neo
@@ -324,7 +324,7 @@ attach txp at pci
file dev/pci/if_txp.c txp
# S3 SonicVibes (S3 617)
-device sv: audio, auconv, mulaw
+device sv: audio
attach sv at pci
file dev/pci/sv.c sv
@@ -575,7 +575,7 @@ attach iwm at pci
file dev/pci/if_iwm.c iwm
# C-Media CMI8x38 Audio Chip
-device cmpci {}: audio, auconv, mulaw
+device cmpci {}: audio
attach cmpci at pci
file dev/pci/cmpci.c cmpci
diff --git a/sys/dev/pci/fms.c b/sys/dev/pci/fms.c
index 25b6885f7fd..58cef866471 100644
--- a/sys/dev/pci/fms.c
+++ b/sys/dev/pci/fms.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fms.c,v 1.26 2014/07/12 18:48:51 tedu Exp $ */
+/* $OpenBSD: fms.c,v 1.27 2015/05/11 06:46:22 ratchov Exp $ */
/* $NetBSD: fms.c,v 1.5.4.1 2000/06/30 16:27:50 simonb Exp $ */
/*-
@@ -50,9 +50,6 @@
#include <dev/pci/pcivar.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
-
#include <dev/ic/ac97.h>
#if 0
#include <dev/ic/mpuvar.h>
@@ -439,53 +436,17 @@ fms_query_encoding(void *addr, struct audio_encoding *fp)
switch (fp->index) {
case 0:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 1:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 2:
+ case 1:
strlcpy(fp->name, AudioEulinear, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_ULINEAR;
fp->precision = 8;
fp->flags = 0;
break;
- case 3:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
- strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 5:
- strlcpy(fp->name, AudioEslinear, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return EINVAL;
}
@@ -532,34 +493,15 @@ fms_set_params(void *addr, int setmode, int usemode, struct audio_params *play,
int i;
if (setmode & AUMODE_PLAY) {
- play->factor = 1;
- play->sw_code = 0;
switch(play->encoding) {
- case AUDIO_ENCODING_ULAW:
- play->factor = 2;
- play->sw_code = mulaw_to_slinear16_le;
- break;
case AUDIO_ENCODING_SLINEAR_LE:
- if (play->precision == 8)
- play->sw_code = change_sign8;
+ if (play->precision != 16)
+ return EINVAL;
break;
case AUDIO_ENCODING_ULINEAR_LE:
- if (play->precision == 16)
- play->sw_code = change_sign16_le;
- break;
- case AUDIO_ENCODING_ALAW:
- play->factor = 2;
- play->sw_code = alaw_to_slinear16_le;
- break;
- case AUDIO_ENCODING_SLINEAR_BE:
- if (play->precision == 16)
- play->sw_code = swap_bytes;
- else
- play->sw_code = change_sign8;
- break;
case AUDIO_ENCODING_ULINEAR_BE:
- if (play->precision == 16)
- play->sw_code = change_sign16_swap_bytes_le;
+ if (play->precision != 8)
+ return EINVAL;
break;
default:
return EINVAL;
@@ -572,38 +514,21 @@ fms_set_params(void *addr, int setmode, int usemode, struct audio_params *play,
;
play->sample_rate = fms_rates[i].rate;
sc->sc_play_reg = (play->channels == 2 ? FM_PLAY_STEREO : 0) |
- (play->precision * play->factor == 16 ? FM_PLAY_16BIT : 0) |
+ (play->precision == 16 ? FM_PLAY_16BIT : 0) |
(i << 8);
}
if (setmode & AUMODE_RECORD) {
- rec->factor = 1;
- rec->sw_code = 0;
switch(rec->encoding) {
- case AUDIO_ENCODING_ULAW:
- rec->sw_code = ulinear8_to_mulaw;
- break;
case AUDIO_ENCODING_SLINEAR_LE:
- if (rec->precision == 8)
- rec->sw_code = change_sign8;
+ if (rec->precision != 16)
+ return EINVAL;
break;
case AUDIO_ENCODING_ULINEAR_LE:
- if (rec->precision == 16)
- rec->sw_code = change_sign16_le;
- break;
- case AUDIO_ENCODING_ALAW:
- rec->sw_code = ulinear8_to_alaw;
- break;
- case AUDIO_ENCODING_SLINEAR_BE:
- if (rec->precision == 16)
- rec->sw_code = swap_bytes;
- else
- rec->sw_code = change_sign8;
- break;
case AUDIO_ENCODING_ULINEAR_BE:
- if (rec->precision == 16)
- rec->sw_code = swap_bytes_change_sign16_le;
+ if (rec->precision != 8)
+ return EINVAL;
break;
default:
return EINVAL;
@@ -617,7 +542,7 @@ fms_set_params(void *addr, int setmode, int usemode, struct audio_params *play,
rec->sample_rate = fms_rates[i].rate;
sc->sc_rec_reg =
(rec->channels == 2 ? FM_REC_STEREO : 0) |
- (rec->precision * rec->factor == 16 ? FM_REC_16BIT : 0) |
+ (rec->precision == 16 ? FM_REC_16BIT : 0) |
(i << 8);
}
diff --git a/sys/dev/pci/maestro.c b/sys/dev/pci/maestro.c
index 890eae1a4b0..54434d5ac10 100644
--- a/sys/dev/pci/maestro.c
+++ b/sys/dev/pci/maestro.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: maestro.c,v 1.38 2014/09/13 16:06:37 doug Exp $ */
+/* $OpenBSD: maestro.c,v 1.39 2015/05/11 06:46:22 ratchov Exp $ */
/* $FreeBSD: /c/ncvs/src/sys/dev/sound/pci/maestro.c,v 1.3 2000/11/21 12:22:11 julian Exp $ */
/*
* FreeBSD's ESS Agogo/Maestro driver
@@ -59,8 +59,6 @@
#include <sys/audioio.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
@@ -943,17 +941,7 @@ maestro_query_devinfo(void *self, mixer_devinfo_t *cp)
struct audio_encoding maestro_tab[] = {
{0, AudioEslinear_le, AUDIO_ENCODING_SLINEAR_LE, 16, 2, 1, 0},
{1, AudioEslinear, AUDIO_ENCODING_SLINEAR, 8, 1, 1, 0},
- {2, AudioEulinear, AUDIO_ENCODING_ULINEAR, 8, 1, 1, 0},
- {3, AudioEslinear_be, AUDIO_ENCODING_SLINEAR_BE, 16, 2, 1,
- AUDIO_ENCODINGFLAG_EMULATED},
- {4, AudioEulinear_le, AUDIO_ENCODING_ULINEAR_LE, 16, 2, 1,
- AUDIO_ENCODINGFLAG_EMULATED},
- {5, AudioEulinear_be, AUDIO_ENCODING_ULINEAR_BE, 16, 2, 1,
- AUDIO_ENCODINGFLAG_EMULATED},
- {6, AudioEmulaw, AUDIO_ENCODING_ULAW, 8, 1, 1,
- AUDIO_ENCODINGFLAG_EMULATED},
- {7, AudioEalaw, AUDIO_ENCODING_ALAW, 8, 1, 1,
- AUDIO_ENCODINGFLAG_EMULATED}
+ {2, AudioEulinear, AUDIO_ENCODING_ULINEAR, 8, 1, 1, 0}
};
int
@@ -1046,8 +1034,6 @@ maestro_set_params(void *hdl, int setmode, int usemode,
else if (play->sample_rate > 48000)
play->sample_rate = 48000;
- play->factor = 1;
- play->sw_code = NULL;
if (play->channels > 2)
play->channels = 2;
@@ -1055,24 +1041,12 @@ maestro_set_params(void *hdl, int setmode, int usemode,
if (play->channels == 2)
sc->play.mode |= MAESTRO_STEREO;
- if (play->encoding == AUDIO_ENCODING_ULAW) {
- play->factor = 2;
- play->sw_code = mulaw_to_slinear16_le;
- } else if (play->encoding == AUDIO_ENCODING_ALAW) {
- play->factor = 2;
- play->sw_code = alaw_to_slinear16_le;
- } else if (play->precision == 8) {
+ if (play->precision == 8) {
sc->play.mode |= MAESTRO_8BIT;
if (play->encoding == AUDIO_ENCODING_ULINEAR_LE ||
play->encoding == AUDIO_ENCODING_ULINEAR_BE)
sc->play.mode |= MAESTRO_UNSIGNED;
}
- else if (play->encoding == AUDIO_ENCODING_ULINEAR_LE)
- play->sw_code = change_sign16_le;
- else if (play->encoding == AUDIO_ENCODING_SLINEAR_BE)
- play->sw_code = swap_bytes;
- else if (play->encoding == AUDIO_ENCODING_ULINEAR_BE)
- play->sw_code = change_sign16_swap_bytes_le;
else if (play->encoding != AUDIO_ENCODING_SLINEAR_LE)
return (EINVAL);
diff --git a/sys/dev/pci/neo.c b/sys/dev/pci/neo.c
index 503eb352ab1..cfd183a26ee 100644
--- a/sys/dev/pci/neo.c
+++ b/sys/dev/pci/neo.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: neo.c,v 1.29 2013/11/15 16:46:27 brad Exp $ */
+/* $OpenBSD: neo.c,v 1.30 2015/05/11 06:46:22 ratchov Exp $ */
/*
* Copyright (c) 1999 Cameron Grant <gandalf@vilnya.demon.co.uk>
@@ -43,8 +43,6 @@
#include <sys/audioio.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
#include <dev/pci/neoreg.h>
@@ -761,47 +759,11 @@ neo_query_encoding(void *addr, struct audio_encoding *fp)
fp->flags = 0;
break;
case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(fp->name, AudioEslinear, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
- strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return (EINVAL);
}
@@ -853,44 +815,15 @@ neo_set_params(void *addr, int setmode, int usemode,
NM_PLAYBACK_REG_OFFSET : NM_RECORD_REG_OFFSET;
nm_wr(sc, base + NM_RATE_REG_OFFSET, x, 1);
- p->factor = 1;
- p->sw_code = 0;
switch (p->encoding) {
- case AUDIO_ENCODING_SLINEAR_BE:
- if (p->precision == 16)
- p->sw_code = swap_bytes;
- else
- p->sw_code = change_sign8;
- break;
case AUDIO_ENCODING_SLINEAR_LE:
if (p->precision != 16)
- p->sw_code = change_sign8;
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16) {
- if (mode == AUMODE_PLAY)
- p->sw_code = swap_bytes_change_sign16_le;
- else
- p->sw_code = change_sign16_swap_bytes_le;
- }
+ return EINVAL;
break;
case AUDIO_ENCODING_ULINEAR_LE:
- if (p->precision == 16)
- p->sw_code = change_sign16_le;
- break;
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = mulaw_to_slinear16_le;
- } else
- p->sw_code = ulinear8_to_mulaw;
- break;
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->sw_code = alaw_to_slinear16_le;
- } else
- p->sw_code = ulinear8_to_alaw;
+ case AUDIO_ENCODING_ULINEAR_BE:
+ if (p->precision != 8)
+ return EINVAL;
break;
default:
return (EINVAL);
@@ -919,7 +852,7 @@ neo_trigger_output(void *addr, void *start, void *end, int blksize,
sc->pintr = intr;
sc->parg = arg;
- ssz = (param->precision * param->factor == 16)? 2 : 1;
+ ssz = (param->precision == 16) ? 2 : 1;
if (param->channels == 2)
ssz <<= 1;
@@ -950,7 +883,7 @@ neo_trigger_input(void *addr, void *start, void *end, int blksize,
sc->rintr = intr;
sc->rarg = arg;
- ssz = (param->precision * param->factor == 16)? 2 : 1;
+ ssz = (param->precision == 16) ? 2 : 1;
if (param->channels == 2)
ssz <<= 1;
diff --git a/sys/dev/pci/sv.c b/sys/dev/pci/sv.c
index 5fef1c652cb..a7da7cf8b18 100644
--- a/sys/dev/pci/sv.c
+++ b/sys/dev/pci/sv.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sv.c,v 1.31 2014/07/12 18:48:52 tedu Exp $ */
+/* $OpenBSD: sv.c,v 1.32 2015/05/11 06:46:22 ratchov Exp $ */
/*
* Copyright (c) 1998 Constantine Paul Sapuntzakis
@@ -48,8 +48,6 @@
#include <sys/audioio.h>
#include <dev/audio_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/i8237reg.h>
#include <dev/ic/s3_617.h>
@@ -587,48 +585,12 @@ sv_query_encoding(void *addr, struct audio_encoding *fp)
fp->precision = 8;
fp->flags = 0;
break;
- case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(fp->name, AudioEslinear, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
+ case 1:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
- strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return (EINVAL);
}
@@ -643,41 +605,19 @@ sv_set_params(void *addr, int setmode, int usemode,
struct audio_params *p, struct audio_params *r)
{
struct sv_softc *sc = addr;
- void (*pswcode)(void *, u_char *buf, int cnt);
- void (*rswcode)(void *, u_char *buf, int cnt);
u_int32_t mode, val;
u_int8_t reg;
- pswcode = rswcode = 0;
switch (p->encoding) {
- case AUDIO_ENCODING_SLINEAR_BE:
- if (p->precision == 16)
- rswcode = pswcode = swap_bytes;
- else
- pswcode = rswcode = change_sign8;
- break;
case AUDIO_ENCODING_SLINEAR_LE:
if (p->precision != 16)
- pswcode = rswcode = change_sign8;
+ return EINVAL;
break;
case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16) {
- pswcode = swap_bytes_change_sign16_le;
- rswcode = change_sign16_swap_bytes_le;
- }
- break;
case AUDIO_ENCODING_ULINEAR_LE:
- if (p->precision == 16)
- pswcode = rswcode = change_sign16_le;
+ if (p->precision != 8)
+ return EINVAL;
break;
- case AUDIO_ENCODING_ULAW:
- pswcode = mulaw_to_ulinear8;
- rswcode = ulinear8_to_mulaw;
- break;
- case AUDIO_ENCODING_ALAW:
- pswcode = alaw_to_ulinear8;
- rswcode = ulinear8_to_alaw;
- break;
default:
return (EINVAL);
}
@@ -695,8 +635,6 @@ sv_set_params(void *addr, int setmode, int usemode,
if (p->sample_rate > 48000)
p->sample_rate = 48000;
- p->sw_code = pswcode;
- r->sw_code = rswcode;
p->bps = AUDIO_BPS(p->precision);
r->bps = AUDIO_BPS(r->precision);
p->msb = r->msb = 1;
diff --git a/sys/dev/pci/yds.c b/sys/dev/pci/yds.c
index fdb3aa991c8..b63db724c69 100644
--- a/sys/dev/pci/yds.c
+++ b/sys/dev/pci/yds.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: yds.c,v 1.49 2015/03/14 03:38:49 jsg Exp $ */
+/* $OpenBSD: yds.c,v 1.50 2015/05/11 06:46:22 ratchov Exp $ */
/* $NetBSD: yds.c,v 1.5 2001/05/21 23:55:04 minoura Exp $ */
/*
@@ -54,8 +54,6 @@
#include <sys/audioio.h>
#include <dev/audio_if.h>
#include <dev/midi_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
#include <dev/ic/ac97.h>
#include <machine/bus.h>
@@ -943,7 +941,7 @@ yds_intr(void *p)
N_PLAY_SLOT_CTRL_BANK,
BUS_DMASYNC_POSTWRITE|
BUS_DMASYNC_POSTREAD);
- dma = sc->pbankp[nbank]->pgstart * sc->sc_play.factor;
+ dma = sc->pbankp[nbank]->pgstart;
cpu = sc->sc_play.offset;
blk = sc->sc_play.blksize;
len = sc->sc_play.length;
@@ -1106,47 +1104,11 @@ yds_query_encoding(void *addr, struct audio_encoding *fp)
fp->flags = 0;
break;
case 1:
- strlcpy(fp->name, AudioEmulaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 2:
- strlcpy(fp->name, AudioEalaw, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ALAW;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 3:
- strlcpy(fp->name, AudioEslinear, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR;
- fp->precision = 8;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 4:
strlcpy(fp->name, AudioEslinear_le, sizeof fp->name);
fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
fp->precision = 16;
fp->flags = 0;
break;
- case 5:
- strlcpy(fp->name, AudioEulinear_le, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 6:
- strlcpy(fp->name, AudioEslinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
- case 7:
- strlcpy(fp->name, AudioEulinear_be, sizeof fp->name);
- fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
- fp->precision = 16;
- fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
- break;
default:
return (EINVAL);
}
@@ -1185,46 +1147,15 @@ yds_set_params(void *addr, int setmode, int usemode,
if (p->channels > 2)
p->channels = 2;
- p->factor = 1;
- p->sw_code = 0;
switch (p->encoding) {
- case AUDIO_ENCODING_SLINEAR_BE:
- if (p->precision == 16)
- p->sw_code = swap_bytes;
- else
- p->sw_code = change_sign8;
- break;
case AUDIO_ENCODING_SLINEAR_LE:
if (p->precision != 16)
- p->sw_code = change_sign8;
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16) {
- if (mode == AUMODE_PLAY)
- p->sw_code = swap_bytes_change_sign16_le;
- else
- p->sw_code = change_sign16_swap_bytes_le;
- }
+ return EINVAL;
break;
case AUDIO_ENCODING_ULINEAR_LE:
- if (p->precision == 16)
- p->sw_code = change_sign16_le;
- break;
- case AUDIO_ENCODING_ULAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->precision = 16;
- p->sw_code = mulaw_to_slinear16_le;
- } else
- p->sw_code = ulinear8_to_mulaw;
- break;
- case AUDIO_ENCODING_ALAW:
- if (mode == AUMODE_PLAY) {
- p->factor = 2;
- p->precision = 16;
- p->sw_code = alaw_to_slinear16_le;
- } else
- p->sw_code = ulinear8_to_alaw;
+ case AUDIO_ENCODING_ULINEAR_BE:
+ if (p->precision != 8)
+ return EINVAL;
break;
default:
return (EINVAL);
@@ -1366,13 +1297,6 @@ yds_trigger_output(void *addr, void *start, void *end, int blksize,
*sc->ptbl = channels; /* Num of play */
- sc->sc_play.factor = 1;
- if (param->channels == 2)
- sc->sc_play.factor *= 2;
- if (param->precision != 8)
- sc->sc_play.factor *= 2;
- l /= sc->sc_play.factor;
-
psb = sc->pbankp[0];
memset(psb, 0, sizeof(*psb));
psb->format = ((channels == 2 ? PSLT_FORMAT_STEREO : 0) |
@@ -1479,12 +1403,6 @@ yds_trigger_input(void *addr, void *start, void *end, int blksize,
l = ((char *)end - (char *)start);
sc->sc_rec.length = l;
- sc->sc_rec.factor = 1;
- if (param->channels == 2)
- sc->sc_rec.factor *= 2;
- if (param->precision != 8)
- sc->sc_rec.factor *= 2;
-
rsb = &sc->rbank[0];
memset(rsb, 0, sizeof(*rsb));
rsb->pgbase = s;