Module Name:    src
Committed By:   isaki
Date:           Wed Apr 24 12:01:50 UTC 2019

Modified Files:
        src/sys/arch/arm/imx [isaki-audio2]: imx23_digfilt.c

Log Message:
Adapt to audio2.
- move resetting sc_cmd_index from drain to halt_output since
  drain is obsoleted.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.1.24.1 src/sys/arch/arm/imx/imx23_digfilt.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/arch/arm/imx/imx23_digfilt.c
diff -u src/sys/arch/arm/imx/imx23_digfilt.c:1.1 src/sys/arch/arm/imx/imx23_digfilt.c:1.1.24.1
--- src/sys/arch/arm/imx/imx23_digfilt.c:1.1	Sat Jan 10 12:16:28 2015
+++ src/sys/arch/arm/imx/imx23_digfilt.c	Wed Apr 24 12:01:50 2019
@@ -1,4 +1,4 @@
-/* $Id: imx23_digfilt.c,v 1.1 2015/01/10 12:16:28 jmcneill Exp $ */
+/* $Id: imx23_digfilt.c,v 1.1.24.1 2019/04/24 12:01:50 isaki Exp $ */
 
 /*
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -39,7 +39,6 @@
 #include <sys/mutex.h>
 #include <sys/audioio.h>
 #include <dev/audio_if.h>
-#include <dev/auconv.h>
 #include <sys/mallocvar.h>
 #include <arm/imx/imx23_digfiltreg.h>
 #include <arm/imx/imx23_rtcvar.h>
@@ -56,11 +55,10 @@ static void digfilt_attach(device_t, dev
 static int digfilt_activate(device_t, enum devact);
 
 /* Audio driver interface. */
-static int digfilt_drain(void *);
-static int digfilt_query_encoding(void *, struct audio_encoding *);
-static int digfilt_set_params(void *, int, int, audio_params_t *,
-    audio_params_t *, stream_filter_list_t *,
-    stream_filter_list_t *);
+static int digfilt_query_format(void *, audio_format_query_t *);
+static int digfilt_set_format(void *, int,
+    const audio_params_t *, const audio_params_t *,
+    audio_filter_reg_t *, audio_filter_reg_t *);
 static int digfilt_round_blocksize(void *, int, int, const audio_params_t *);
 static int digfilt_init_output(void *, void *, int );
 static int digfilt_start_output(void *, void *, int, void (*)(void *), void *);
@@ -116,7 +114,6 @@ struct digfilt_softc {
 	device_t sc_dev;
 	device_t sc_audiodev;
 	struct audio_format sc_format;
-	struct audio_encoding_set *sc_encodings;
 	bus_space_handle_t sc_aihdl;
 	bus_space_handle_t sc_aohdl;
 	apbdma_softc_t sc_dmac;
@@ -151,9 +148,8 @@ CFATTACH_DECL3_NEW(digfilt,
 static const struct audio_hw_if digfilt_hw_if = {
 	.open = NULL,
 	.close = NULL,
-	.drain = digfilt_drain,
-	.query_encoding = digfilt_query_encoding,
-	.set_params = digfilt_set_params,
+	.query_format = digfilt_query_format,
+	.set_format = digfilt_set_format,
 	.round_blocksize = digfilt_round_blocksize,
 	.commit_settings = NULL,
 	.init_output = digfilt_init_output,
@@ -309,11 +305,6 @@ digfilt_attach(device_t parent, device_t
 	sc->sc_format.frequency[6] = 32000;
 	sc->sc_format.frequency[7] = 44100;
 
-	if (auconv_create_encodings(&sc->sc_format, 1, &sc->sc_encodings)) {
-		aprint_error_dev(self, "could not create encodings\n");
-		return;
-	}
-
 	sc->sc_audiodev = audio_attach_mi(&digfilt_hw_if, sc, sc->sc_dev);
 
 	/* Default mutes. */
@@ -359,41 +350,21 @@ digfilt_activate(device_t self, enum dev
 }
 
 static int
-digfilt_drain(void *priv)
+digfilt_query_format(void *priv, audio_format_query_t *afp)
 {
-
 	struct digfilt_softc *sc = priv;
 
-	apbdma_wait(sc->sc_dmac, 1);
-	sc->sc_cmd_index = 0;
-	
-	return 0;
-}
-
-static int
-digfilt_query_encoding(void *priv, struct audio_encoding *ae)
-{
-	struct digfilt_softc *sc = priv;
-	return auconv_query_encoding(sc->sc_encodings, ae);
+	return audio_query_format(&sc->sc_format, 1, afp);
 }
 
 static int
-digfilt_set_params(void *priv, int setmode, int usemode,
-    audio_params_t *play, audio_params_t *rec,
-    stream_filter_list_t *pfil, stream_filter_list_t *rfil)
+digfilt_set_format(void *priv, int setmode,
+    const audio_params_t *play, const audio_params_t *rec,
+    audio_filter_reg_t *pfil, audio_filter_reg_t *rfil)
 {
 	struct digfilt_softc *sc = priv;
-	int index;
-
-	if (play && (setmode & AUMODE_PLAY)) {
-		index = auconv_set_converter(&sc->sc_format, 1,
-		    AUMODE_PLAY, play, true, pfil);
-		if (index < 0)
-			return EINVAL;
-		sc->sc_pparam = pfil->req_size > 0 ?
-		    pfil->filters[0].param :
-		    *play;
 
+	if ((setmode & AUMODE_PLAY)) {
 		/* At this point bitrate should be figured out. */
 		digfilt_ao_set_rate(sc, sc->sc_pparam.sample_rate);
 	}
@@ -486,6 +457,9 @@ digfilt_start_output(void *priv, void *s
 static int
 digfilt_halt_output(void *priv)
 {
+	struct digfilt_softc *sc = priv;
+
+	sc->sc_cmd_index = 0;
 	return 0;
 }
 

Reply via email to