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 driver non-duplex driver.

Drivers that currently support playing but not recording need a little
adjustment for this.

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, we can losen audio_open()'s DIAGNOSTIC
check to make get_props() optional and then only do the duplex check if
the driver provides this function.

This allows us to simply remove get_props() from full-duplex drivers
without adding any other code and without changing functionality.

This includes all audio drivers under sys/dev/pci/ (the unfinished
maestro(4) being the only exception here).

Remaining drivers needing adjustment can then be dealt with later;
after this, the actual removal from the API can be done.

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]

I can't build-test luna88k, alpha or hppa, but the mechanical removal
should be identical to what works on the above mentioned architectures.

Feedback? Objection? OK?


diff --git a/sys/arch/hppa/gsc/harmony.c b/sys/arch/hppa/gsc/harmony.c
index fea73b0a973..36db8071c0f 100644
--- a/sys/arch/hppa/gsc/harmony.c
+++ b/sys/arch/hppa/gsc/harmony.c
@@ -67,7 +67,6 @@ int     harmony_query_devinfo(void *addr, mixer_devinfo_t *);
 void *  harmony_allocm(void *, int, size_t, int, int);
 void    harmony_freem(void *, void *, int);
 size_t  harmony_round_buffersize(void *, int, size_t);
-int     harmony_get_props(void *);
 int     harmony_trigger_output(void *, void *, void *, int,
     void (*intr)(void *), void *, struct audio_params *);
 int     harmony_trigger_input(void *, void *, void *, int,
@@ -87,7 +86,6 @@ const struct audio_hw_if harmony_sa_hw_if = {
        .allocm = harmony_allocm,
        .freem = harmony_freem,
        .round_buffersize = harmony_round_buffersize,
-       .get_props = harmony_get_props,
        .trigger_output = harmony_trigger_output,
        .trigger_input = harmony_trigger_input,
 };
@@ -878,12 +876,6 @@ harmony_round_buffersize(void *vsc, int direction, size_t 
size)
        return ((size + HARMONY_BUFSIZE - 1) & (size_t)(-HARMONY_BUFSIZE));
 }
 
-int
-harmony_get_props(void *vsc)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 int
 harmony_trigger_output(void *vsc, void *start, void *end, int blksize,
     void (*intr)(void *), void *intrarg, struct audio_params *param)
diff --git a/sys/arch/macppc/dev/aoa.c b/sys/arch/macppc/dev/aoa.c
index 30e7b4a8b43..9e24b3e9f46 100644
--- a/sys/arch/macppc/dev/aoa.c
+++ b/sys/arch/macppc/dev/aoa.c
@@ -77,7 +77,6 @@ const struct audio_hw_if aoa_hw_if = {
        .query_devinfo = i2s_query_devinfo,
        .allocm = i2s_allocm,
        .round_buffersize = i2s_round_buffersize,
-       .get_props = i2s_get_props,
        .trigger_output = i2s_trigger_output,
        .trigger_input = i2s_trigger_input,
 };
diff --git a/sys/arch/macppc/dev/awacs.c b/sys/arch/macppc/dev/awacs.c
index c6e06235354..c9333bc9abb 100644
--- a/sys/arch/macppc/dev/awacs.c
+++ b/sys/arch/macppc/dev/awacs.c
@@ -108,7 +108,6 @@ int awacs_set_port(void *, mixer_ctrl_t *);
 int awacs_get_port(void *, mixer_ctrl_t *);
 int awacs_query_devinfo(void *, mixer_devinfo_t *);
 size_t awacs_round_buffersize(void *, int, size_t);
-int awacs_get_props(void *);
 void *awacs_allocm(void *, int, size_t, int, int);
 
 static inline u_int awacs_read_reg(struct awacs_softc *, int);
@@ -138,7 +137,6 @@ const struct audio_hw_if awacs_hw_if = {
        .query_devinfo = awacs_query_devinfo,
        .allocm = awacs_allocm,
        .round_buffersize = awacs_round_buffersize,
-       .get_props = awacs_get_props,
        .trigger_output = awacs_trigger_output,
        .trigger_input = awacs_trigger_input,
 };
@@ -862,12 +860,6 @@ awacs_allocm(void *h, int dir, size_t size, int type, int 
flags)
        return p->addr;
 }
 
-int
-awacs_get_props(void *h)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 int
 awacs_trigger_output(void *h, void *start, void *end, int bsize,
     void (*intr)(void *), void *arg, struct audio_params *param)
diff --git a/sys/arch/macppc/dev/daca.c b/sys/arch/macppc/dev/daca.c
index f7768432c37..cf1c0d7ab12 100644
--- a/sys/arch/macppc/dev/daca.c
+++ b/sys/arch/macppc/dev/daca.c
@@ -83,7 +83,6 @@ const struct audio_hw_if daca_hw_if = {
        .query_devinfo = i2s_query_devinfo,
        .allocm = i2s_allocm,
        .round_buffersize = i2s_round_buffersize,
-       .get_props = i2s_get_props,
        .trigger_output = i2s_trigger_output,
        .trigger_input = i2s_trigger_input,
 };
diff --git a/sys/arch/macppc/dev/i2s.c b/sys/arch/macppc/dev/i2s.c
index f8f3595ac41..dd2e74804ff 100644
--- a/sys/arch/macppc/dev/i2s.c
+++ b/sys/arch/macppc/dev/i2s.c
@@ -580,12 +580,6 @@ i2s_round_buffersize(void *h, int dir, size_t size)
        return size;
 }
 
-int
-i2s_get_props(void *h)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 int
 i2s_trigger_output(void *h, void *start, void *end, int bsize,
     void (*intr)(void *), void *arg, struct audio_params *param)
diff --git a/sys/arch/macppc/dev/i2svar.h b/sys/arch/macppc/dev/i2svar.h
index efece60bed6..e25fa8902d3 100644
--- a/sys/arch/macppc/dev/i2svar.h
+++ b/sys/arch/macppc/dev/i2svar.h
@@ -104,7 +104,6 @@ int i2s_set_port(void *, mixer_ctrl_t *);
 int i2s_get_port(void *, mixer_ctrl_t *);
 int i2s_query_devinfo(void *, mixer_devinfo_t *);
 size_t i2s_round_buffersize(void *, int, size_t);
-int i2s_get_props(void *);
 int i2s_trigger_output(void *, void *, void *, int, void (*)(void *),
     void *, struct audio_params *);
 int i2s_trigger_input(void *, void *, void *, int, void (*)(void *),
diff --git a/sys/arch/macppc/dev/onyx.c b/sys/arch/macppc/dev/onyx.c
index 7ed4aae82f2..14b7dc85efb 100644
--- a/sys/arch/macppc/dev/onyx.c
+++ b/sys/arch/macppc/dev/onyx.c
@@ -92,7 +92,6 @@ const struct audio_hw_if onyx_hw_if = {
        .query_devinfo = i2s_query_devinfo,
        .allocm = i2s_allocm,
        .round_buffersize = i2s_round_buffersize,
-       .get_props = i2s_get_props,
        .trigger_output = i2s_trigger_output,
        .trigger_input = i2s_trigger_input,
 };
diff --git a/sys/arch/macppc/dev/snapper.c b/sys/arch/macppc/dev/snapper.c
index 56f21b05da2..8ce22cb6696 100644
--- a/sys/arch/macppc/dev/snapper.c
+++ b/sys/arch/macppc/dev/snapper.c
@@ -89,7 +89,6 @@ const struct audio_hw_if snapper_hw_if = {
        .query_devinfo = i2s_query_devinfo,
        .allocm = i2s_allocm,
        .round_buffersize = i2s_round_buffersize,
-       .get_props = i2s_get_props,
        .trigger_output = i2s_trigger_output,
        .trigger_input = i2s_trigger_input,
 };
diff --git a/sys/arch/macppc/dev/tumbler.c b/sys/arch/macppc/dev/tumbler.c
index 0b89e030e14..900916c5716 100644
--- a/sys/arch/macppc/dev/tumbler.c
+++ b/sys/arch/macppc/dev/tumbler.c
@@ -87,7 +87,6 @@ const struct audio_hw_if tumbler_hw_if = {
        .query_devinfo = i2s_query_devinfo,
        .allocm = i2s_allocm,
        .round_buffersize = i2s_round_buffersize,
-       .get_props = i2s_get_props,
        .trigger_output = i2s_trigger_output,
        .trigger_input = i2s_trigger_input,
 };
diff --git a/sys/arch/sparc64/dev/ce4231.c b/sys/arch/sparc64/dev/ce4231.c
index b4425d8ebe4..91465a56faf 100644
--- a/sys/arch/sparc64/dev/ce4231.c
+++ b/sys/arch/sparc64/dev/ce4231.c
@@ -144,7 +144,6 @@ int ce4231_get_port(void *, mixer_ctrl_t *);
 int    ce4231_query_devinfo(void *addr, mixer_devinfo_t *);
 void * ce4231_alloc(void *, int, size_t, int, int);
 void   ce4231_free(void *, void *, int);
-int    ce4231_get_props(void *);
 int    ce4231_trigger_output(void *, void *, void *, int,
     void (*intr)(void *), void *arg, struct audio_params *);
 int    ce4231_trigger_input(void *, void *, void *, int,
@@ -163,7 +162,6 @@ const struct audio_hw_if ce4231_sa_hw_if = {
        .query_devinfo = ce4231_query_devinfo,
        .allocm = ce4231_alloc,
        .freem = ce4231_free,
-       .get_props = ce4231_get_props,
        .trigger_output = ce4231_trigger_output,
        .trigger_input = ce4231_trigger_input,
 };
@@ -1051,12 +1049,6 @@ onoff:
        return (err);
 }
 
-int
-ce4231_get_props(void *addr)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 /*
  * Hardware interrupt handler
  */
diff --git a/sys/dev/audio.c b/sys/dev/audio.c
index e06f51361b5..3011e6ef98c 100644
--- a/sys/dev/audio.c
+++ b/sys/dev/audio.c
@@ -1209,8 +1209,7 @@ audio_attach(struct device *parent, struct device *self, 
void *aux)
            ops->halt_input == 0 ||
            ops->set_port == 0 ||
            ops->get_port == 0 ||
-           ops->query_devinfo == 0 ||
-           ops->get_props == 0) {
+           ops->query_devinfo == 0) {
                printf("%s: missing method\n", DEVNAME(sc));
                sc->ops = 0;
                return;
@@ -1477,7 +1476,6 @@ int
 audio_open(struct audio_softc *sc, int flags)
 {
        int error;
-       int props;
 
        if (sc->mode)
                return EBUSY;
@@ -1493,11 +1491,13 @@ audio_open(struct audio_softc *sc, int flags)
                sc->mode |= AUMODE_PLAY;
        if (flags & FREAD)
                sc->mode |= AUMODE_RECORD;
-       props = sc->ops->get_props(sc->arg);
-       if (sc->mode == (AUMODE_PLAY | AUMODE_RECORD)) {
-               if (!(props & AUDIO_PROP_FULLDUPLEX)) {
-                       error = ENOTTY;
-                       goto bad;
+       if (sc->ops->get_props) {
+               int props = sc->ops->get_props(sc->arg);
+               if (sc->mode == (AUMODE_PLAY | AUMODE_RECORD)) {
+                       if (!(props & AUDIO_PROP_FULLDUPLEX)) {
+                               error = ENOTTY;
+                               goto bad;
+                       }
                }
        }
 
diff --git a/sys/dev/ic/am7930.c b/sys/dev/ic/am7930.c
index ad7d08b0167..41ccd1d15e5 100644
--- a/sys/dev/ic/am7930.c
+++ b/sys/dev/ic/am7930.c
@@ -178,6 +178,10 @@ am7930_init(struct am7930_softc *sc, int flag)
        }
 }
 
+/*
+ * XXX chip is full-duplex, but really attach-dependent.
+ * For now we know of no half-duplex attachments.
+ */
 int
 am7930_open(void *addr, int flags)
 {
@@ -316,16 +320,6 @@ am7930_halt_input(void *addr)
        return 0;
 }
 
-/*
- * XXX chip is full-duplex, but really attach-dependent.
- * For now we know of no half-duplex attachments.
- */
-int
-am7930_get_props(void *addr)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 /*
  * Attach-dependent channel set/query
  */
diff --git a/sys/dev/ic/am7930var.h b/sys/dev/ic/am7930var.h
index 2b8d8d02552..5cbfbedbeb7 100644
--- a/sys/dev/ic/am7930var.h
+++ b/sys/dev/ic/am7930var.h
@@ -112,7 +112,6 @@ int am7930_commit_settings(void *);
 int    am7930_round_blocksize(void *, int);
 int    am7930_halt_output(void *);
 int    am7930_halt_input(void *);
-int    am7930_get_props(void *);
 int    am7930_set_port(void *, mixer_ctrl_t *);
 int    am7930_get_port(void *, mixer_ctrl_t *);
 int    am7930_query_devinfo(void *, mixer_devinfo_t *);
diff --git a/sys/dev/pci/auacer.c b/sys/dev/pci/auacer.c
index bfb41fbf3fb..c815fedf739 100644
--- a/sys/dev/pci/auacer.c
+++ b/sys/dev/pci/auacer.c
@@ -162,7 +162,6 @@ int auacer_query_devinfo(void *, mixer_devinfo_t *);
 void   *auacer_allocm(void *, int, size_t, int, int);
 void   auacer_freem(void *, void *, int);
 size_t auacer_round_buffersize(void *, int, size_t);
-int    auacer_get_props(void *);
 int    auacer_trigger_output(void *, void *, void *, int, void (*)(void *),
            void *, struct audio_params *);
 int    auacer_trigger_input(void *, void *, void *, int, void (*)(void *),
@@ -192,7 +191,6 @@ const struct audio_hw_if auacer_hw_if = {
        .allocm = auacer_allocm,
        .freem = auacer_freem,
        .round_buffersize = auacer_round_buffersize,
-       .get_props = auacer_get_props,
        .trigger_output = auacer_trigger_output,
        .trigger_input = auacer_trigger_input,
 };
@@ -632,12 +630,6 @@ auacer_round_buffersize(void *v, int direction, size_t 
size)
        return size;
 }
 
-int
-auacer_get_props(void *v)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 static void
 auacer_add_entry(struct auacer_chan *chan)
 {
diff --git a/sys/dev/pci/auglx.c b/sys/dev/pci/auglx.c
index d37871add31..c2eeb73a116 100644
--- a/sys/dev/pci/auglx.c
+++ b/sys/dev/pci/auglx.c
@@ -223,7 +223,6 @@ int auglx_query_devinfo(void *, mixer_devinfo_t *);
 void *auglx_allocm(void *, int, size_t, int, int);
 void auglx_freem(void *, void *, int);
 size_t auglx_round_buffersize(void *, int, size_t);
-int auglx_get_props(void *);
 int auglx_trigger_output(void *, void *, void *, int, void (*)(void *),
     void *, struct audio_params *);
 int auglx_trigger_input(void *, void *, void *, int, void (*)(void *),
@@ -247,7 +246,6 @@ const struct audio_hw_if auglx_hw_if = {
        .allocm = auglx_allocm,
        .freem = auglx_freem,
        .round_buffersize = auglx_round_buffersize,
-       .get_props = auglx_get_props,
        .trigger_output = auglx_trigger_output,
        .trigger_input = auglx_trigger_input,
 };
@@ -617,12 +615,6 @@ auglx_round_buffersize(void *v, int direction, size_t size)
        return size;
 }
 
-int
-auglx_get_props(void *v)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 int
 auglx_intr(void *v)
 {
diff --git a/sys/dev/pci/auich.c b/sys/dev/pci/auich.c
index 9258dffe120..faa3828ca0d 100644
--- a/sys/dev/pci/auich.c
+++ b/sys/dev/pci/auich.c
@@ -302,7 +302,6 @@ int auich_query_devinfo(void *, mixer_devinfo_t *);
 void *auich_allocm(void *, int, size_t, int, int);
 void auich_freem(void *, void *, int);
 size_t auich_round_buffersize(void *, int, size_t);
-int auich_get_props(void *);
 void auich_trigger_pipe(struct auich_softc *, int, struct auich_ring *);
 void auich_intr_pipe(struct auich_softc *, int, struct auich_ring *);
 int auich_trigger_output(void *, void *, void *, int, void (*)(void *),
@@ -328,7 +327,6 @@ const struct audio_hw_if auich_hw_if = {
        .allocm = auich_allocm,
        .freem = auich_freem,
        .round_buffersize = auich_round_buffersize,
-       .get_props = auich_get_props,
        .trigger_output = auich_trigger_output,
        .trigger_input = auich_trigger_input,
 };
@@ -917,12 +915,6 @@ auich_round_buffersize(void *v, int direction, size_t size)
        return size;
 }
 
-int
-auich_get_props(void *v)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 int
 auich_intr(void *v)
 {
diff --git a/sys/dev/pci/auixp.c b/sys/dev/pci/auixp.c
index 3a5e0fbd937..d60241b1946 100644
--- a/sys/dev/pci/auixp.c
+++ b/sys/dev/pci/auixp.c
@@ -117,7 +117,6 @@ int auixp_get_port(void *, mixer_ctrl_t *);
 int    auixp_query_devinfo(void *, mixer_devinfo_t *);
 void * auixp_malloc(void *, int, size_t, int, int);
 void   auixp_free(void *, void *, int);
-int    auixp_get_props(void *);
 int    auixp_intr(void *);
 int    auixp_allocmem(struct auixp_softc *, size_t, size_t,
     struct auixp_dma *);
@@ -167,7 +166,6 @@ const struct audio_hw_if auixp_hw_if = {
        .query_devinfo = auixp_query_devinfo,
        .allocm = auixp_malloc,
        .freem = auixp_free,
-       .get_props = auixp_get_props,
        .trigger_output = auixp_trigger_output,
        .trigger_input = auixp_trigger_input,
 };
@@ -438,13 +436,6 @@ auixp_query_devinfo(void *hdl, mixer_devinfo_t *di)
        return co->codec_if->vtbl->query_devinfo(co->codec_if, di);
 }
 
-int
-auixp_get_props(void *hdl)
-{
-
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 
 /*
  * A dma descriptor has dma->nsegs segments defined in dma->segs set up when
diff --git a/sys/dev/pci/autri.c b/sys/dev/pci/autri.c
index 5e026bd5c24..af2b9fb7907 100644
--- a/sys/dev/pci/autri.c
+++ b/sys/dev/pci/autri.c
@@ -134,7 +134,6 @@ int autri_mixer_set_port(void *, mixer_ctrl_t *);
 int    autri_mixer_get_port(void *, mixer_ctrl_t *);
 void   *autri_malloc(void *, int, size_t, int, int);
 void   autri_free(void *, void *, int);
-int    autri_get_props(void *);
 int    autri_query_devinfo(void *addr, mixer_devinfo_t *dip);
 
 int    autri_get_portnum_by_name(struct autri_softc *, char *, char *, char *);
@@ -151,7 +150,6 @@ const struct audio_hw_if autri_hw_if = {
        .query_devinfo = autri_query_devinfo,
        .allocm = autri_malloc,
        .freem = autri_free,
-       .get_props = autri_get_props,
        .trigger_output = autri_trigger_output,
        .trigger_input = autri_trigger_input,
 };
@@ -1023,12 +1021,6 @@ autri_find_dma(struct autri_softc *sc, void *addr)
        return p;
 }
 
-int
-autri_get_props(void *addr)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 void
 autri_setup_channel(struct autri_softc *sc, int mode, struct audio_params 
*param)
 {
diff --git a/sys/dev/pci/auvia.c b/sys/dev/pci/auvia.c
index 90339003055..3d0cb29966e 100644
--- a/sys/dev/pci/auvia.c
+++ b/sys/dev/pci/auvia.c
@@ -87,7 +87,6 @@ int   auvia_query_devinfo(void *, mixer_devinfo_t *);
 void * auvia_malloc(void *, int, size_t, int, int);
 void   auvia_free(void *, void *, int);
 size_t auvia_round_buffersize(void *, int, size_t);
-int    auvia_get_props(void *);
 int    auvia_build_dma_ops(struct auvia_softc *, struct auvia_softc_chan *,
        struct auvia_dma *, void *, void *, int);
 int    auvia_trigger_output(void *, void *, void *, int, void (*)(void *),
@@ -191,7 +190,6 @@ const struct audio_hw_if auvia_hw_if = {
        .allocm = auvia_malloc,
        .freem = auvia_free,
        .round_buffersize = auvia_round_buffersize,
-       .get_props = auvia_get_props,
        .trigger_output = auvia_trigger_output,
        .trigger_input = auvia_trigger_input,
 };
@@ -791,12 +789,6 @@ auvia_round_buffersize(void *addr, int direction, size_t 
bufsize)
        return bufsize;
 }
 
-int
-auvia_get_props(void *addr)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 
 int
 auvia_build_dma_ops(struct auvia_softc *sc, struct auvia_softc_chan *ch,
diff --git a/sys/dev/pci/azalia.c b/sys/dev/pci/azalia.c
index 5e73a2d9b57..541d877ee0e 100644
--- a/sys/dev/pci/azalia.c
+++ b/sys/dev/pci/azalia.c
@@ -264,7 +264,6 @@ int azalia_query_devinfo(void *, mixer_devinfo_t *);
 void   *azalia_allocm(void *, int, size_t, int, int);
 void   azalia_freem(void *, void *, int);
 size_t azalia_round_buffersize(void *, int, size_t);
-int    azalia_get_props(void *);
 int    azalia_trigger_output(void *, void *, void *, int,
        void (*)(void *), void *, audio_params_t *);
 int    azalia_trigger_input(void *, void *, void *, int,
@@ -301,7 +300,6 @@ const struct audio_hw_if azalia_hw_if = {
        .allocm = azalia_allocm,
        .freem = azalia_freem,
        .round_buffersize = azalia_round_buffersize,
-       .get_props = azalia_get_props,
        .trigger_output = azalia_trigger_output,
        .trigger_input = azalia_trigger_input,
        .set_blksz = azalia_set_blksz,
@@ -4137,12 +4135,6 @@ azalia_round_buffersize(void *v, int dir, size_t size)
        return size;
 }
 
-int
-azalia_get_props(void *v)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 int
 azalia_trigger_output(void *v, void *start, void *end, int blk,
     void (*intr)(void *), void *arg, audio_params_t *param)
diff --git a/sys/dev/pci/cmpci.c b/sys/dev/pci/cmpci.c
index ff3561ce355..430c0ff8a7c 100644
--- a/sys/dev/pci/cmpci.c
+++ b/sys/dev/pci/cmpci.c
@@ -141,7 +141,6 @@ int cmpci_query_devinfo(void *, mixer_devinfo_t *);
 void *cmpci_malloc(void *, int, size_t, int, int);
 void cmpci_free(void *, void *, int);
 size_t cmpci_round_buffersize(void *, int, size_t);
-int cmpci_get_props(void *);
 int cmpci_trigger_output(void *, void *, void *, int,
                                     void (*)(void *), void *,
                                     struct audio_params *);
@@ -162,7 +161,6 @@ const struct audio_hw_if cmpci_hw_if = {
        .allocm = cmpci_malloc,
        .freem = cmpci_free,
        .round_buffersize = cmpci_round_buffersize,
-       .get_props = cmpci_get_props,
        .trigger_output = cmpci_trigger_output,
        .trigger_input = cmpci_trigger_input,
 };
@@ -1757,13 +1755,6 @@ cmpci_round_buffersize(void *handle, int direction, 
size_t bufsize)
        return bufsize;
 }
 
-/* ARGSUSED */
-int
-cmpci_get_props(void *handle)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 int
 cmpci_trigger_output(void *handle, void *start, void *end, int blksize,
     void (*intr)(void *), void *arg, struct audio_params *param)
diff --git a/sys/dev/pci/cs4280.c b/sys/dev/pci/cs4280.c
index 1ca4e019b59..3de0f350f50 100644
--- a/sys/dev/pci/cs4280.c
+++ b/sys/dev/pci/cs4280.c
@@ -206,7 +206,6 @@ int cs4280_mixer_get_port(void *, mixer_ctrl_t *);
 int    cs4280_query_devinfo(void *addr, mixer_devinfo_t *dip);
 void   *cs4280_malloc(void *, int, size_t, int, int);
 void   cs4280_free(void *, void *, int);
-int    cs4280_get_props(void *);
 int    cs4280_trigger_output(void *, void *, void *, int, void (*)(void *),
            void *, struct audio_params *);
 int    cs4280_trigger_input(void *, void *, void *, int, void (*)(void *),
@@ -245,7 +244,6 @@ const struct audio_hw_if cs4280_hw_if = {
        .query_devinfo = cs4280_query_devinfo,
        .allocm = cs4280_malloc,
        .freem = cs4280_free,
-       .get_props = cs4280_get_props,
        .trigger_output = cs4280_trigger_output,
        .trigger_input = cs4280_trigger_input,
 };
@@ -1051,12 +1049,6 @@ cs4280_round_blocksize(void *hdl, int blk)
        return (blk < CS4280_ICHUNK ? CS4280_ICHUNK : blk & -CS4280_ICHUNK);
 }
 
-int
-cs4280_get_props(void *hdl)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 int
 cs4280_mixer_get_port(void *addr, mixer_ctrl_t *cp)
 {
diff --git a/sys/dev/pci/cs4281.c b/sys/dev/pci/cs4281.c
index a92c55d46fe..1bd08f6c4c2 100644
--- a/sys/dev/pci/cs4281.c
+++ b/sys/dev/pci/cs4281.c
@@ -166,7 +166,6 @@ int cs4281_init(struct cs4281_softc *);
 int cs4281_open(void *, int);
 void cs4281_close(void *);
 int cs4281_round_blocksize(void *, int);
-int cs4281_get_props(void *);
 int cs4281_attach_codec(void *, struct ac97_codec_if *);
 int cs4281_read_codec(void *, u_int8_t , u_int16_t *);
 int cs4281_write_codec(void *, u_int8_t, u_int16_t);
@@ -207,7 +206,6 @@ const struct audio_hw_if cs4281_hw_if = {
        .allocm = cs4281_malloc,
        .freem = cs4281_free,
        .round_buffersize = cs4281_round_buffersize,
-       .get_props = cs4281_get_props,
        .trigger_output = cs4281_trigger_output,
        .trigger_input = cs4281_trigger_input,
 };
@@ -1185,12 +1183,6 @@ cs4281_round_buffersize(void *addr, int direction, 
size_t size)
        return (DMA_SIZE);
 }
 
-int
-cs4281_get_props(void *addr)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 /* AC97 */
 int
 cs4281_attach_codec(void *addr, struct ac97_codec_if *codec_if)
diff --git a/sys/dev/pci/eap.c b/sys/dev/pci/eap.c
index f1280d09c37..eccb34038fd 100644
--- a/sys/dev/pci/eap.c
+++ b/sys/dev/pci/eap.c
@@ -176,7 +176,6 @@ int eap1371_mixer_get_port(void *, mixer_ctrl_t *);
 int    eap1370_query_devinfo(void *, mixer_devinfo_t *);
 void   *eap_malloc(void *, int, size_t, int, int);
 void   eap_free(void *, void *, int);
-int    eap_get_props(void *);
 void   eap1370_set_mixer(struct eap_softc *sc, int a, int d);
 u_int32_t eap1371_src_wait(struct eap_softc *sc);
 void   eap1371_src_write(struct eap_softc *sc, int a, int d);
@@ -206,7 +205,6 @@ const struct audio_hw_if eap1370_hw_if = {
        .query_devinfo = eap1370_query_devinfo,
        .allocm = eap_malloc,
        .freem = eap_free,
-       .get_props = eap_get_props,
        .trigger_output = eap_trigger_output,
        .trigger_input = eap_trigger_input,
 };
@@ -223,7 +221,6 @@ const struct audio_hw_if eap1371_hw_if = {
        .query_devinfo = eap1371_query_devinfo,
        .allocm = eap_malloc,
        .freem = eap_free,
-       .get_props = eap_get_props,
        .trigger_output = eap_trigger_output,
        .trigger_input = eap_trigger_input,
 };
@@ -1479,12 +1476,6 @@ eap_free(void *addr, void *ptr, int pool)
        }
 }
 
-int
-eap_get_props(void *addr)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 enum ac97_host_flags
 eap_flags_codec(void *v)
 {
diff --git a/sys/dev/pci/emuxki.c b/sys/dev/pci/emuxki.c
index 7d32dec5e6f..a9c892f1b48 100644
--- a/sys/dev/pci/emuxki.c
+++ b/sys/dev/pci/emuxki.c
@@ -178,8 +178,6 @@ int emuxki_query_devinfo(void *, mixer_devinfo_t *);
 void   *emuxki_allocm(void *, int, size_t, int, int);
 void   emuxki_freem(void *, void *, int);
 
-int    emuxki_get_props(void *);
-
 /* Interrupt handler */
 int  emuxki_intr(void *);
 
@@ -224,7 +222,6 @@ const struct audio_hw_if emuxki_hw_if = {
        .allocm = emuxki_allocm,
        .freem = emuxki_freem,
        .round_buffersize = emuxki_round_buffersize,
-       .get_props = emuxki_get_props,
        .trigger_output = emuxki_trigger_output,
        .trigger_input = emuxki_trigger_input,
 };
@@ -2259,12 +2256,6 @@ emuxki_round_buffersize(void *addr, int direction, 
size_t bsize)
        return (bsize);
 }
 
-int
-emuxki_get_props(void *addr)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 int
 emuxki_trigger_output(void *addr, void *start, void *end, int blksize,
                       void (*inth) (void *), void *inthparam,
diff --git a/sys/dev/pci/envy.c b/sys/dev/pci/envy.c
index ab95ab039bb..7606cdd8c03 100644
--- a/sys/dev/pci/envy.c
+++ b/sys/dev/pci/envy.c
@@ -111,7 +111,6 @@ int envy_halt_input(void *);
 int envy_query_devinfo(void *, struct mixer_devinfo *);
 int envy_get_port(void *, struct mixer_ctrl *);
 int envy_set_port(void *, struct mixer_ctrl *);
-int envy_get_props(void *);
 #if NMIDI > 0
 int envy_midi_open(void *, int, void (*)(void *, int),
     void (*)(void *), void *);
@@ -191,7 +190,6 @@ const struct audio_hw_if envy_hw_if = {
        .query_devinfo = envy_query_devinfo,
        .allocm = envy_allocm,
        .freem = envy_freem,
-       .get_props = envy_get_props,
        .trigger_output = envy_trigger_output,
        .trigger_input = envy_trigger_input,
 };
@@ -2431,12 +2429,6 @@ envy_set_port(void *self, struct mixer_ctrl *ctl)
        return ENXIO;
 }
 
-int
-envy_get_props(void *self)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 #if NMIDI > 0
 int
 envy_midi_open(void *self, int flags,
diff --git a/sys/dev/pci/esa.c b/sys/dev/pci/esa.c
index 55603e28afd..e530ff5f814 100644
--- a/sys/dev/pci/esa.c
+++ b/sys/dev/pci/esa.c
@@ -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,
 };
@@ -488,12 +486,6 @@ esa_round_buffersize(void *hdl, int direction, size_t 
bufsize)
        return (vc->play.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,
diff --git a/sys/dev/pci/eso.c b/sys/dev/pci/eso.c
index 87e7c8f652d..e8682ad0e53 100644
--- a/sys/dev/pci/eso.c
+++ b/sys/dev/pci/eso.c
@@ -116,7 +116,6 @@ int eso_query_devinfo(void *, mixer_devinfo_t *);
 void * eso_allocm(void *, int, size_t, int, int);
 void   eso_freem(void *, void *, int);
 size_t eso_round_buffersize(void *, int, size_t);
-int    eso_get_props(void *);
 int    eso_trigger_output(void *, void *, void *, int,
                    void (*)(void *), void *, struct audio_params *);
 int    eso_trigger_input(void *, void *, void *, int,
@@ -136,7 +135,6 @@ const struct audio_hw_if eso_hw_if = {
        .allocm = eso_allocm,
        .freem = eso_freem,
        .round_buffersize = eso_round_buffersize,
-       .get_props = eso_get_props,
        .trigger_output = eso_trigger_output,
        .trigger_input = eso_trigger_input,
 };
@@ -1560,13 +1558,6 @@ eso_round_buffersize(void *hdl, int direction, size_t 
bufsize)
        return (bufsize);
 }
 
-/* ARGSUSED */
-int
-eso_get_props(void *hdl)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 int
 eso_trigger_output(void *hdl, void *start, void *end, int blksize,
     void (*intr)(void *), void *arg, struct audio_params *param)
diff --git a/sys/dev/pci/fms.c b/sys/dev/pci/fms.c
index 9a154ea32bd..4982f87ca8b 100644
--- a/sys/dev/pci/fms.c
+++ b/sys/dev/pci/fms.c
@@ -85,7 +85,6 @@ int   fms_get_port(void *, mixer_ctrl_t *);
 int    fms_query_devinfo(void *, mixer_devinfo_t *);
 void   *fms_malloc(void *, int, size_t, int, int);
 void   fms_free(void *, void *, int);
-int    fms_get_props(void *);
 int    fms_trigger_output(void *, void *, void *, int, void (*)(void *),
                           void *, struct audio_params *);
 int    fms_trigger_input(void *, void *, void *, int, void (*)(void *),
@@ -111,7 +110,6 @@ const struct audio_hw_if fms_hw_if = {
        .query_devinfo = fms_query_devinfo,
        .allocm = fms_malloc,
        .freem = fms_free,
-       .get_props = fms_get_props,
        .trigger_output = fms_trigger_output,
        .trigger_input = fms_trigger_input,
 };
@@ -624,12 +622,6 @@ fms_free(void *addr, void *ptr, int pool)
        panic("fms_free: trying to free unallocated memory");
 }
 
-int
-fms_get_props(void *addr)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 int
 fms_query_devinfo(void *addr, mixer_devinfo_t *dip)
 {
diff --git a/sys/dev/pci/neo.c b/sys/dev/pci/neo.c
index 0057e54b3b5..836b29356e9 100644
--- a/sys/dev/pci/neo.c
+++ b/sys/dev/pci/neo.c
@@ -199,7 +199,6 @@ int neo_query_devinfo(void *, mixer_devinfo_t *);
 void   *neo_malloc(void *, int, size_t, int, int);
 void   neo_free(void *, void *, int);
 size_t neo_round_buffersize(void *, int, size_t);
-int    neo_get_props(void *);
 void   neo_set_mixer(struct neo_softc *sc, int a, int d);
 
 struct cfdriver neo_cd = {
@@ -250,7 +249,6 @@ const struct audio_hw_if neo_hw_if = {
        .allocm = neo_malloc,
        .freem = neo_free,
        .round_buffersize = neo_round_buffersize,
-       .get_props = neo_get_props,
        .trigger_output = neo_trigger_output,
        .trigger_input = neo_trigger_input,
 
@@ -925,10 +923,3 @@ neo_round_buffersize(void *addr, int direction, size_t 
size)
 {
        return (NM_BUFFSIZE);
 }
-
-
-int
-neo_get_props(void *addr)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
diff --git a/sys/dev/pci/sv.c b/sys/dev/pci/sv.c
index 1d019e616ee..c54596d5a9e 100644
--- a/sys/dev/pci/sv.c
+++ b/sys/dev/pci/sv.c
@@ -142,7 +142,6 @@ int sv_mixer_get_port(void *, mixer_ctrl_t *);
 int    sv_query_devinfo(void *, mixer_devinfo_t *);
 void   *sv_malloc(void *, int, size_t, int, int);
 void   sv_free(void *, void *, int);
-int    sv_get_props(void *);
 
 void    sv_dumpregs(struct sv_softc *sc);
 
@@ -162,7 +161,6 @@ const struct audio_hw_if sv_hw_if = {
        .query_devinfo = sv_query_devinfo,
        .allocm = sv_malloc,
        .freem = sv_free,
-       .get_props = sv_get_props,
 };
 
 
@@ -1301,9 +1299,3 @@ sv_free(void *addr, void *ptr, int pool)
                 }
         }
 }
-
-int
-sv_get_props(void *addr)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
diff --git a/sys/dev/pci/yds.c b/sys/dev/pci/yds.c
index 3cf060f58bb..31980c1c9eb 100644
--- a/sys/dev/pci/yds.c
+++ b/sys/dev/pci/yds.c
@@ -166,7 +166,6 @@ int yds_mixer_get_port(void *, mixer_ctrl_t *);
 void   *yds_malloc(void *, int, size_t, int, int);
 void   yds_free(void *, void *, int);
 size_t yds_round_buffersize(void *, int, size_t);
-int    yds_get_props(void *);
 int    yds_query_devinfo(void *addr, mixer_devinfo_t *dip);
 
 int     yds_attach_codec(void *sc, struct ac97_codec_if *);
@@ -212,7 +211,6 @@ static const struct audio_hw_if yds_hw_if = {
        .allocm = yds_malloc,
        .freem = yds_free,
        .round_buffersize = yds_round_buffersize,
-       .get_props = yds_get_props,
        .trigger_output = yds_trigger_output,
        .trigger_input = yds_trigger_input,
 };
@@ -1560,12 +1558,6 @@ yds_round_buffersize(void *addr, int direction, size_t 
size)
        return (size);
 }
 
-int
-yds_get_props(void *addr)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 int
 yds_activate(struct device *self, int act)
 {
diff --git a/sys/dev/sbus/cs4231.c b/sys/dev/sbus/cs4231.c
index 9ef430ff6a2..1aca795cda9 100644
--- a/sys/dev/sbus/cs4231.c
+++ b/sys/dev/sbus/cs4231.c
@@ -145,7 +145,6 @@ int cs4231_get_port(void *, mixer_ctrl_t *);
 int    cs4231_query_devinfo(void *, mixer_devinfo_t *);
 void * cs4231_alloc(void *, int, size_t, int, int);
 void   cs4231_free(void *, void *, int);
-int    cs4231_get_props(void *);
 int    cs4231_trigger_output(void *, void *, void *, int,
     void (*)(void *), void *, struct audio_params *);
 int    cs4231_trigger_input(void *, void *, void *, int,
@@ -164,7 +163,6 @@ const struct audio_hw_if cs4231_sa_hw_if = {
        .query_devinfo = cs4231_query_devinfo,
        .allocm = cs4231_alloc,
        .freem = cs4231_free,
-       .get_props = cs4231_get_props,
        .trigger_output = cs4231_trigger_output,
        .trigger_input = cs4231_trigger_input,
 };
@@ -1179,12 +1177,6 @@ cs4231_query_devinfo(void *vsc, mixer_devinfo_t *dip)
        return (err);
 }
 
-int
-cs4231_get_props(void *vsc)
-{
-       return (AUDIO_PROP_FULLDUPLEX);
-}
-
 /*
  * Hardware interrupt handler
  */
diff --git a/sys/dev/tc/bba.c b/sys/dev/tc/bba.c
index ea1050c7bb8..5b54de2ab1a 100644
--- a/sys/dev/tc/bba.c
+++ b/sys/dev/tc/bba.c
@@ -146,7 +146,6 @@ int bba_halt_input(void *);
 void   *bba_allocm(void *, int, size_t, int, int);
 void   bba_freem(void *, void *, int);
 size_t bba_round_buffersize(void *, int, size_t);
-int    bba_get_props(void *);
 int    bba_trigger_output(void *, void *, void *, int,
            void (*)(void *), void *, struct audio_params *);
 int    bba_trigger_input(void *, void *, void *, int,
@@ -166,7 +165,6 @@ const struct audio_hw_if bba_hw_if = {
        .allocm = bba_allocm,
        .freem = bba_freem,
        .round_buffersize = bba_round_buffersize,
-       .get_props = bba_get_props,
        .trigger_output = bba_trigger_output,
        .trigger_input = bba_trigger_input,
 };
@@ -575,12 +573,6 @@ bba_intr(void *v)
        return 0;
 }
 
-int
-bba_get_props(void *v)
-{
-       return am7930_get_props(v);
-}
-
 int
 bba_round_blocksize(void *v, int blk)
 {
diff --git a/sys/dev/usb/uaudio.c b/sys/dev/usb/uaudio.c
index e16b925c9c8..b732554adc9 100644
--- a/sys/dev/usb/uaudio.c
+++ b/sys/dev/usb/uaudio.c
@@ -430,7 +430,6 @@ int uaudio_halt_input(void *);
 int uaudio_query_devinfo(void *, struct mixer_devinfo *);
 int uaudio_get_port(void *, struct mixer_ctrl *);
 int uaudio_set_port(void *, struct mixer_ctrl *);
-int uaudio_get_props(void *);
 
 int uaudio_process_unit(struct uaudio_softc *,
     struct uaudio_unit *, int,
@@ -477,7 +476,6 @@ const struct audio_hw_if uaudio_hw_if = {
        .set_port = uaudio_set_port,
        .get_port = uaudio_get_port,
        .query_devinfo = uaudio_query_devinfo,
-       .get_props = uaudio_get_props,
        .trigger_output = uaudio_trigger_output,
        .trigger_input = uaudio_trigger_input,
        .copy_output = uaudio_copy_output,
@@ -4174,12 +4172,6 @@ uaudio_halt_input(void *self)
        return 0;
 }
 
-int
-uaudio_get_props(void *self)
-{
-       return AUDIO_PROP_FULLDUPLEX;
-}
-
 int
 uaudio_get_port_do(struct uaudio_softc *sc, struct mixer_ctrl *ctl)
 {

Reply via email to