Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/isaki-audio2]: src/sys/dev/isa Not yet fully adapted to audio2 but make ...
details: https://anonhg.NetBSD.org/src/rev/be3569b01c88
branches: isaki-audio2
changeset: 455971:be3569b01c88
user: isaki <isaki%NetBSD.org@localhost>
date: Sun Apr 21 06:17:02 2019 +0000
description:
Not yet fully adapted to audio2 but make it compilable.
- Drop FULLDUPLEX property. It is done in a tricky way.
diffstat:
sys/dev/isa/sbdsp.c | 120 ++-------------------------------------------------
1 files changed, 6 insertions(+), 114 deletions(-)
diffs (204 lines):
diff -r b9a72f89555b -r be3569b01c88 sys/dev/isa/sbdsp.c
--- a/sys/dev/isa/sbdsp.c Sun Apr 21 06:09:01 2019 +0000
+++ b/sys/dev/isa/sbdsp.c Sun Apr 21 06:17:02 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: sbdsp.c,v 1.139 2019/02/03 03:19:27 mrg Exp $ */
+/* $NetBSD: sbdsp.c,v 1.139.2.1 2019/04/21 06:17:02 isaki Exp $ */
/*-
* Copyright (c) 1999, 2008 The NetBSD Foundation, Inc.
@@ -74,7 +74,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sbdsp.c,v 1.139 2019/02/03 03:19:27 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sbdsp.c,v 1.139.2.1 2019/04/21 06:17:02 isaki Exp $");
#include "midi.h"
#include "mpu.h"
@@ -96,8 +96,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/isa/isavar.h>
#include <dev/isa/isadmavar.h>
@@ -412,9 +410,8 @@
SBVER_MAJOR(sc->sc_version), SBVER_MINOR(sc->sc_version),
sc->sc_model == SB_JAZZ ? ": <Jazz16>" : "");
- sc->sc_fullduplex = ISSB16CLASS(sc) &&
- sc->sc_drq8 != -1 && sc->sc_drq16 != -1 &&
- sc->sc_drq8 != sc->sc_drq16;
+ /* XXX It's not true full duplex. */
+ sc->sc_fullduplex = 0;
if (sc->sc_drq8 != -1) {
sc->sc_drq8_maxsize = isa_dmamaxsize(sc->sc_ic,
@@ -574,12 +571,10 @@
struct sbdsp_softc *sc;
struct sbmode *m;
u_int rate, tc, bmode;
- stream_filter_factory_t *swcode;
int model;
int chan;
struct audio_params *p;
- audio_params_t hw;
- stream_filter_list_t *fil;
+ audio_params_t hw __unused;
int mode;
sc = addr;
@@ -627,55 +622,17 @@
if (m->model == -1)
return EINVAL;
rate = p->sample_rate;
- swcode = NULL;
- fil = mode == AUMODE_PLAY ? pfil : rfil;
hw = *p;
tc = 1;
bmode = -1;
if (model == SB_16) {
switch (p->encoding) {
- case AUDIO_ENCODING_SLINEAR_BE:
- if (p->precision == 16) {
- hw.encoding = AUDIO_ENCODING_SLINEAR_LE;
- swcode = swap_bytes;
- }
/* FALLTHROUGH */
case AUDIO_ENCODING_SLINEAR:
case AUDIO_ENCODING_SLINEAR_LE:
bmode = SB_BMODE_SIGNED;
break;
- case AUDIO_ENCODING_ULINEAR_BE:
- if (p->precision == 16) {
- hw.encoding = AUDIO_ENCODING_ULINEAR_LE;
- swcode = swap_bytes;
- }
- /* FALLTHROUGH */
- case AUDIO_ENCODING_ULINEAR_LE:
- bmode = SB_BMODE_UNSIGNED;
- break;
-
- case AUDIO_ENCODING_ULAW:
- hw.encoding = AUDIO_ENCODING_ULINEAR_LE;
- if (mode == AUMODE_PLAY) {
- hw.precision = hw.validbits = 16;
- swcode = mulaw_to_linear16;
- m = &sbpmodes[PLAY16];
- } else
- swcode = linear8_to_mulaw;
- bmode = SB_BMODE_UNSIGNED;
- break;
-
- case AUDIO_ENCODING_ALAW:
- hw.encoding = AUDIO_ENCODING_ULINEAR_LE;
- if (mode == AUMODE_PLAY) {
- hw.precision = hw.validbits = 16;
- swcode = alaw_to_linear16;
- m = &sbpmodes[PLAY16];
- } else
- swcode = linear8_to_alaw;
- bmode = SB_BMODE_UNSIGNED;
- break;
default:
return EINVAL;
}
@@ -686,28 +643,6 @@
case AUDIO_ENCODING_SLINEAR:
case AUDIO_ENCODING_SLINEAR_LE:
break;
- case AUDIO_ENCODING_ULINEAR_LE:
- hw.encoding = AUDIO_ENCODING_SLINEAR_LE;
- swcode = change_sign16;
- break;
- case AUDIO_ENCODING_SLINEAR_BE:
- hw.encoding = AUDIO_ENCODING_SLINEAR_LE;
- swcode = swap_bytes;
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- hw.encoding = AUDIO_ENCODING_SLINEAR_LE;
- swcode = swap_bytes_change_sign16;
- break;
- case AUDIO_ENCODING_ULAW:
- hw.encoding = AUDIO_ENCODING_ULINEAR_LE;
- swcode = mode == AUMODE_PLAY ?
- mulaw_to_linear8 : linear8_to_mulaw;
- break;
- case AUDIO_ENCODING_ALAW:
- hw.encoding = AUDIO_ENCODING_ULINEAR_LE;
- swcode = mode == AUMODE_PLAY ?
- alaw_to_linear8 : linear8_to_alaw;
- break;
default:
return EINVAL;
}
@@ -715,32 +650,7 @@
p->sample_rate = SB_TC_TO_RATE(tc) / p->channels;
hw.sample_rate = p->sample_rate;
} else {
- switch (p->encoding) {
- case AUDIO_ENCODING_SLINEAR_BE:
- case AUDIO_ENCODING_SLINEAR_LE:
- case AUDIO_ENCODING_SLINEAR:
- hw.encoding = AUDIO_ENCODING_ULINEAR_LE;
- swcode = change_sign8;
- break;
- case AUDIO_ENCODING_ULINEAR_BE:
- case AUDIO_ENCODING_ULINEAR_LE:
- break;
- case AUDIO_ENCODING_ULAW:
- hw.encoding = AUDIO_ENCODING_ULINEAR_LE;
- swcode = mode == AUMODE_PLAY ?
- mulaw_to_linear8 : linear8_to_mulaw;
- break;
- case AUDIO_ENCODING_ALAW:
- hw.encoding = AUDIO_ENCODING_ULINEAR_LE;
- swcode = mode == AUMODE_PLAY ?
- alaw_to_linear8 : linear8_to_alaw;
- break;
- default:
- return EINVAL;
- }
- tc = SB_RATE_TO_TC(p->sample_rate * p->channels);
- p->sample_rate = SB_TC_TO_RATE(tc) / p->channels;
- hw.sample_rate = p->sample_rate;
+ panic("ulinear8 not supported; use set_format.");
}
chan = m->precision == 16 ? sc->sc_drq16 : sc->sc_drq8;
@@ -758,8 +668,6 @@
sc->sc_i.dmachan = chan;
}
- if (swcode != NULL)
- fil->append(fil, swcode, &hw);
DPRINTF(("sbdsp_set_params: model=%d, mode=%d, rate=%u, "
"prec=%d, chan=%d, enc=%d -> tc=%02x, cmd=%02x, "
"bmode=%02x, cmdchan=%02x\n", sc->sc_model, mode,
@@ -768,22 +676,6 @@
}
- if (sc->sc_fullduplex &&
- usemode == (AUMODE_PLAY | AUMODE_RECORD) &&
- sc->sc_i.dmachan == sc->sc_o.dmachan) {
- DPRINTF(("sbdsp_set_params: fd=%d, usemode=%d, idma=%d, "
- "odma=%d\n", sc->sc_fullduplex, usemode,
- sc->sc_i.dmachan, sc->sc_o.dmachan));
- if (sc->sc_o.dmachan == sc->sc_drq8) {
- /* Use 16 bit DMA for playing by expanding the samples. */
- hw.precision = hw.validbits = 16;
- pfil->append(pfil, linear8_to_linear16, &hw);
- sc->sc_o.modep = &sbpmodes[PLAY16];
- sc->sc_o.dmachan = sc->sc_drq16;
- } else {
- return EINVAL;
- }
- }
DPRINTF(("sbdsp_set_params ichan=%d, ochan=%d\n",
sc->sc_i.dmachan, sc->sc_o.dmachan));
Home |
Main Index |
Thread Index |
Old Index