Replace audio(9) get_props() with duplex check in open() in partial duplex drivers
authorkn <kn@openbsd.org>
Fri, 28 Oct 2022 14:55:46 +0000 (14:55 +0000)
committerkn <kn@openbsd.org>
Fri, 28 Oct 2022 14:55:46 +0000 (14:55 +0000)
commitf9485f68395b00332d56d8587cf423a224aeda8c
treea68a2d730d337542d1d3c25bb41b7e84adfe06a3
parent99acee14adedf06a250aaae2661fad6eb8f61e88
Replace audio(9) get_props() with duplex check in open() in partial duplex drivers

Make drivers which do *not* adverise AUDIO_PROP_FULLDPLEX return ENXIO
in their open() if full-duplex mode was requested.

This way, sys/dev/audio.c:audio_open() will fail immediately rather than
later through the to-be-removed get_props() check.

This is the first round for drivers with logic in their get_props(), i.e.
those that only support full-duplex mode for specific hardware:

ess(4), gus(4), pas(4) and sb(4)

All of these are i386/GENERIC only and share code through
sys/dev/isa/{ad1848,sbdsp}{.c,var.h} which are not used by any other kernel.

i386/GENERIC.MP builds and boots with this diff.
OK ratchov miod
sys/dev/isa/ad1848.c
sys/dev/isa/ad1848var.h
sys/dev/isa/ess.c
sys/dev/isa/gus.c
sys/dev/isa/gusvar.h
sys/dev/isa/pas.c
sys/dev/isa/sb.c
sys/dev/isa/sbdsp.c
sys/dev/isa/sbdspvar.h