diff options
author | Klemens Nanni <kn@cvs.openbsd.org> | 2022-10-26 20:19:10 +0000 |
---|---|---|
committer | Klemens Nanni <kn@cvs.openbsd.org> | 2022-10-26 20:19:10 +0000 |
commit | b3fe5d25736242646ad4720ae465600b98535108 (patch) | |
tree | e627aad857a9e5ce1b387b607988565bafb24eae /sys/dev/pci/esa.c | |
parent | 9543cc6d3abbc2670d3dd05054df7453ed421348 (diff) |
Make audio(9) get_props() optional, remove it from duplex drivers
The property bits of audio(9) are obsolete and ought to be removed
completely.
sys/dev/audio.c:audio_open() currently uses get_props() to bail out if
read *and* write was requested on a non-duplex driver.
Drivers that currently support playing but not recording need adjustment
before the API can be cleaned up.
Drivers that advertise themselves as full duplex, i.e. those that always
return AUDIO_PROP_FULLDUPLEX unconditionally in their get_props() currently
always succeed this check.
As this is the only property, losen audio_open()'s DIAGNOSTIC check and only
do the duplex check if the driver provides get_props().
This allows for simple removal of get_props() from full-duplex drivers
without adding any other code or without changing functionality.
This includes all audio drivers under sys/dev/pci/ (maestro(4) being the
only unfinished exception here).
Other drivers as well as the API change can then follow in smaller diffs.
This builds on amd64, arm64, i386, macppc and sparc64.
amd64 with azalia(4) still plays, records as well as plays and records
at the same time on my X230 as tested with
$ aucat -i play.wav [-o rec.wav]
alpha and hppa tests by miod
OK ratchov miod
Diffstat (limited to 'sys/dev/pci/esa.c')
-rw-r--r-- | sys/dev/pci/esa.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/sys/dev/pci/esa.c b/sys/dev/pci/esa.c index 55603e28afd..86f92bd1a17 100644 --- a/sys/dev/pci/esa.c +++ b/sys/dev/pci/esa.c @@ -1,4 +1,4 @@ -/* $OpenBSD: esa.c,v 1.40 2022/10/19 19:14:16 kn Exp $ */ +/* $OpenBSD: esa.c,v 1.41 2022/10/26 20:19:08 kn Exp $ */ /* $NetBSD: esa.c,v 1.12 2002/03/24 14:17:35 jmcneill Exp $ */ /* @@ -110,7 +110,6 @@ int esa_query_devinfo(void *, mixer_devinfo_t *); void * esa_malloc(void *, int, size_t, int, int); void esa_free(void *, void *, int); size_t esa_round_buffersize(void *, int, size_t); -int esa_get_props(void *); int esa_trigger_output(void *, void *, void *, int, void (*)(void *), void *, struct audio_params *); @@ -165,7 +164,6 @@ const struct audio_hw_if esa_hw_if = { .allocm = esa_malloc, .freem = esa_free, .round_buffersize = esa_round_buffersize, - .get_props = esa_get_props, .trigger_output = esa_trigger_output, .trigger_input = esa_trigger_input, }; @@ -489,12 +487,6 @@ esa_round_buffersize(void *hdl, int direction, size_t bufsize) } int -esa_get_props(void *hdl) -{ - return (AUDIO_PROP_FULLDUPLEX); -} - -int esa_trigger_output(void *hdl, void *start, void *end, int blksize, void (*intr)(void *), void *intrarg, struct audio_params *param) |