Module Name:    src
Committed By:   isaki
Date:           Wed May  1 12:42:14 UTC 2019

Modified Files:
        src/sys/dev/usb [isaki-audio2]: uaudio.c

Log Message:
Adapt to audio2.
- Remove obsoleted or empty methods.
- Remove AUFMT_VALIDATE()/INVALIDATE().  At first, this flag is
  set/cleared but no one in the driver seems to refer at least now.
  And second, don't use such flag for other purpose.  If you need
  to do such thing, use .driver_data instead.


To generate a diff of this commit:
cvs rdiff -u -r1.158 -r1.158.2.1 src/sys/dev/usb/uaudio.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/uaudio.c
diff -u src/sys/dev/usb/uaudio.c:1.158 src/sys/dev/usb/uaudio.c:1.158.2.1
--- src/sys/dev/usb/uaudio.c:1.158	Sat Mar 16 12:09:58 2019
+++ src/sys/dev/usb/uaudio.c	Wed May  1 12:42:14 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: uaudio.c,v 1.158 2019/03/16 12:09:58 isaki Exp $	*/
+/*	$NetBSD: uaudio.c,v 1.158.2.1 2019/05/01 12:42:14 isaki Exp $	*/
 
 /*
  * Copyright (c) 1999, 2012 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uaudio.c,v 1.158 2019/03/16 12:09:58 isaki Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uaudio.c,v 1.158.2.1 2019/05/01 12:42:14 isaki Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -62,9 +62,6 @@ __KERNEL_RCSID(0, "$NetBSD: uaudio.c,v 1
 
 #include <sys/audioio.h>
 #include <dev/audio_if.h>
-#include <dev/audiovar.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
 
 #include <dev/usb/usb.h>
 #include <dev/usb/usbdi.h>
@@ -207,7 +204,6 @@ struct uaudio_softc {
 	device_t	sc_audiodev;
 	struct audio_format *sc_formats;
 	int		sc_nformats;
-	struct audio_encoding_set *sc_encodings;
 	u_int		sc_channel_config;
 	char		sc_dying;
 	struct audio_device sc_adev;
@@ -334,12 +330,10 @@ Static void	uaudio_chan_rintr
 	(struct usbd_xfer *, void *, usbd_status);
 
 Static int	uaudio_open(void *, int);
-Static void	uaudio_close(void *);
-Static int	uaudio_drain(void *);
-Static int	uaudio_query_encoding(void *, struct audio_encoding *);
-Static int	uaudio_set_params
-	(void *, int, int, struct audio_params *, struct audio_params *,
-	 stream_filter_list_t *, stream_filter_list_t *);
+Static int	uaudio_query_format(void *, audio_format_query_t *);
+Static int	uaudio_set_format
+     (void *, int, const audio_params_t *, const audio_params_t *,
+	 audio_filter_reg_t *, audio_filter_reg_t *);
 Static int	uaudio_round_blocksize(void *, int, int, const audio_params_t *);
 Static int	uaudio_trigger_output
 	(void *, void *, void *, int, void (*)(void *), void *,
@@ -358,10 +352,8 @@ Static void	uaudio_get_locks(void *, kmu
 
 Static const struct audio_hw_if uaudio_hw_if = {
 	.open			= uaudio_open,
-	.close			= uaudio_close,
-	.drain			= uaudio_drain,
-	.query_encoding		= uaudio_query_encoding,
-	.set_params		= uaudio_set_params,
+	.query_format		= uaudio_query_format,
+	.set_format		= uaudio_set_format,
 	.round_blocksize	= uaudio_round_blocksize,
 	.halt_output		= uaudio_halt_out_dma,
 	.halt_input		= uaudio_halt_in_dma,
@@ -540,7 +532,6 @@ uaudio_detach(device_t self, int flags)
 	if (sc->sc_formats != NULL)
 		kmem_free(sc->sc_formats,
 		    sizeof(struct audio_format) * sc->sc_nformats);
-	auconv_delete_encodings(sc->sc_encodings);
 
 	mutex_destroy(&sc->sc_lock);
 	mutex_destroy(&sc->sc_intr_lock);
@@ -549,20 +540,12 @@ uaudio_detach(device_t self, int flags)
 }
 
 Static int
-uaudio_query_encoding(void *addr, struct audio_encoding *fp)
+uaudio_query_format(void *addr, audio_format_query_t *afp)
 {
 	struct uaudio_softc *sc;
-	int flags;
 
 	sc = addr;
-	flags = sc->sc_altflags;
-	if (sc->sc_dying)
-		return EIO;
-
-	if (sc->sc_nalts == 0 || flags == 0)
-		return ENXIO;
-
-	return auconv_query_encoding(sc->sc_encodings, fp);
+	return audio_query_format(sc->sc_formats, sc->sc_nformats, afp);
 }
 
 Static const usb_interface_descriptor_t *
@@ -1848,14 +1831,6 @@ uaudio_identify_as(struct uaudio_softc *
 		sc->sc_alts[i].aformat = auf;
 	}
 
-	if (0 != auconv_create_encodings(sc->sc_formats, sc->sc_nformats,
-					 &sc->sc_encodings)) {
-		kmem_free(sc->sc_formats,
-		    sizeof(struct audio_format) * sc->sc_nformats);
-		sc->sc_formats = NULL;
-		return ENOMEM;
-	}
-
 	return USBD_NORMAL_COMPLETION;
 }
 
@@ -2185,27 +2160,6 @@ uaudio_open(void *addr, int flags)
 	return 0;
 }
 
-/*
- * Close function is called at splaudio().
- */
-Static void
-uaudio_close(void *addr)
-{
-}
-
-Static int
-uaudio_drain(void *addr)
-{
-	struct uaudio_softc *sc = addr;
-
-	KASSERT(mutex_owned(&sc->sc_intr_lock));
-
-	kpause("uaudiodr", false,
-	    mstohz(UAUDIO_NCHANBUFS * UAUDIO_NFRAMES), &sc->sc_intr_lock);
-
-	return 0;
-}
-
 Static int
 uaudio_halt_out_dma(void *addr)
 {
@@ -2718,7 +2672,6 @@ uaudio_chan_abort(struct uaudio_softc *s
 
 	as = &sc->sc_alts[ch->altidx];
 	as->sc_busy = 0;
-	AUFMT_VALIDATE(as->aformat);
 	if (sc->sc_nullalt >= 0) {
 		DPRINTF("set null alt=%d\n", sc->sc_nullalt);
 		usbd_set_interface(as->ifaceh, sc->sc_nullalt);
@@ -3021,15 +2974,12 @@ uaudio_chan_set_param(struct chan *ch, u
 }
 
 Static int
-uaudio_set_params(void *addr, int setmode, int usemode,
-		  struct audio_params *play, struct audio_params *rec,
-		  stream_filter_list_t *pfil, stream_filter_list_t *rfil)
+uaudio_set_format(void *addr, int setmode,
+		  const audio_params_t *play, const audio_params_t *rec,
+		  audio_filter_reg_t *pfil, audio_filter_reg_t *rfil)
 {
 	struct uaudio_softc *sc;
 	int paltidx, raltidx;
-	struct audio_params *p;
-	stream_filter_list_t *fil;
-	int mode, i;
 
 	sc = addr;
 	paltidx = -1;
@@ -3037,65 +2987,35 @@ uaudio_set_params(void *addr, int setmod
 	if (sc->sc_dying)
 		return EIO;
 
-	if (((usemode & AUMODE_PLAY) && sc->sc_playchan.pipe != NULL) ||
-	    ((usemode & AUMODE_RECORD) && sc->sc_recchan.pipe != NULL))
-		return EBUSY;
-
-	if ((usemode & AUMODE_PLAY) && sc->sc_playchan.altidx != -1) {
+	if ((setmode & AUMODE_PLAY) && sc->sc_playchan.altidx != -1) {
 		sc->sc_alts[sc->sc_playchan.altidx].sc_busy = 0;
-		AUFMT_VALIDATE(sc->sc_alts[sc->sc_playchan.altidx].aformat);
 	}
-	if ((usemode & AUMODE_RECORD) && sc->sc_recchan.altidx != -1) {
+	if ((setmode & AUMODE_RECORD) && sc->sc_recchan.altidx != -1) {
 		sc->sc_alts[sc->sc_recchan.altidx].sc_busy = 0;
-		AUFMT_VALIDATE(sc->sc_alts[sc->sc_recchan.altidx].aformat);
 	}
 
 	/* Some uaudio devices are unidirectional.  Don't try to find a
 	   matching mode for the unsupported direction. */
 	setmode &= sc->sc_mode;
 
-	for (mode = AUMODE_RECORD; mode != -1;
-	     mode = mode == AUMODE_RECORD ? AUMODE_PLAY : -1) {
-		if ((setmode & mode) == 0)
-			continue;
-
-		if (mode == AUMODE_PLAY) {
-			p = play;
-			fil = pfil;
-		} else {
-			p = rec;
-			fil = rfil;
-		}
-		i = auconv_set_converter(sc->sc_formats, sc->sc_nformats,
-					 mode, p, TRUE, fil);
-		if (i < 0)
-			return EINVAL;
-
-		if (mode == AUMODE_PLAY)
-			paltidx = i;
-		else
-			raltidx = i;
-	}
-
 	if ((setmode & AUMODE_PLAY)) {
-		p = pfil->req_size > 0 ? &pfil->filters[0].param : play;
-		/* XXX abort transfer if currently happening? */
-		uaudio_chan_init(&sc->sc_playchan, paltidx, p, 0);
+		paltidx = audio_indexof_format(sc->sc_formats, sc->sc_nformats,
+		    AUMODE_PLAY, play);
+		/* Transfer should have halted */
+		uaudio_chan_init(&sc->sc_playchan, paltidx, play, 0);
 	}
 	if ((setmode & AUMODE_RECORD)) {
-		p = rfil->req_size > 0 ? &rfil->filters[0].param : rec;
-		/* XXX abort transfer if currently happening? */
-		uaudio_chan_init(&sc->sc_recchan, raltidx, p,
-		    UGETW(sc->sc_alts[raltidx].edesc->wMaxPacketSize));
+		raltidx = audio_indexof_format(sc->sc_formats, sc->sc_nformats,
+		    AUMODE_RECORD, rec);
+		/* Transfer should have halted */
+		uaudio_chan_init(&sc->sc_recchan, raltidx, rec, 0);
 	}
 
-	if ((usemode & AUMODE_PLAY) && sc->sc_playchan.altidx != -1) {
+	if ((setmode & AUMODE_PLAY) && sc->sc_playchan.altidx != -1) {
 		sc->sc_alts[sc->sc_playchan.altidx].sc_busy = 1;
-		AUFMT_INVALIDATE(sc->sc_alts[sc->sc_playchan.altidx].aformat);
 	}
-	if ((usemode & AUMODE_RECORD) && sc->sc_recchan.altidx != -1) {
+	if ((setmode & AUMODE_RECORD) && sc->sc_recchan.altidx != -1) {
 		sc->sc_alts[sc->sc_recchan.altidx].sc_busy = 1;
-		AUFMT_INVALIDATE(sc->sc_alts[sc->sc_recchan.altidx].aformat);
 	}
 
 	DPRINTF("use altidx=p%d/r%d, altno=p%d/r%d\n",

Reply via email to