Module Name:    src
Committed By:   isaki
Date:           Sun Apr 21 07:49:16 UTC 2019

Modified Files:
        src/sys/dev/pci [isaki-audio2]: cs4280.c cs4281.c cs428x.c cs428x.h

Log Message:
Adapt cs428x families to audio2.
- recording on cs4280 seems to have its own conversion.
  I will see it later but first make it compilable.


To generate a diff of this commit:
cvs rdiff -u -r1.71 -r1.71.2.1 src/sys/dev/pci/cs4280.c
cvs rdiff -u -r1.54 -r1.54.2.1 src/sys/dev/pci/cs4281.c
cvs rdiff -u -r1.18 -r1.18.14.1 src/sys/dev/pci/cs428x.c
cvs rdiff -u -r1.16 -r1.16.42.1 src/sys/dev/pci/cs428x.h

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/pci/cs4280.c
diff -u src/sys/dev/pci/cs4280.c:1.71 src/sys/dev/pci/cs4280.c:1.71.2.1
--- src/sys/dev/pci/cs4280.c:1.71	Sat Mar 16 12:09:58 2019
+++ src/sys/dev/pci/cs4280.c	Sun Apr 21 07:49:16 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: cs4280.c,v 1.71 2019/03/16 12:09:58 isaki Exp $	*/
+/*	$NetBSD: cs4280.c,v 1.71.2.1 2019/04/21 07:49:16 isaki Exp $	*/
 
 /*
  * Copyright (c) 1999, 2000 Tatoku Ogaito.  All rights reserved.
@@ -52,7 +52,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cs4280.c,v 1.71 2019/03/16 12:09:58 isaki Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cs4280.c,v 1.71.2.1 2019/04/21 07:49:16 isaki Exp $");
 
 #include "midi.h"
 
@@ -70,8 +70,6 @@ __KERNEL_RCSID(0, "$NetBSD: cs4280.c,v 1
 
 #include <dev/audio_if.h>
 #include <dev/midi_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
 
 #include <dev/ic/ac97reg.h>
 #include <dev/ic/ac97var.h>
@@ -90,10 +88,10 @@ __KERNEL_RCSID(0, "$NetBSD: cs4280.c,v 1
 static int  cs4280_match(device_t, cfdata_t, void *);
 static void cs4280_attach(device_t, device_t, void *);
 static int  cs4280_intr(void *);
-static int  cs4280_query_encoding(void *, struct audio_encoding *);
-static int  cs4280_set_params(void *, int, int, audio_params_t *,
-			      audio_params_t *, stream_filter_list_t *,
-			      stream_filter_list_t *);
+static int  cs4280_query_format(void *, audio_format_query_t *);
+static int  cs4280_set_format(void *, int,
+			      const audio_params_t *, const audio_params_t *,
+			      audio_filter_reg_t *, audio_filter_reg_t *);
 static int  cs4280_halt_output(void *);
 static int  cs4280_halt_input(void *);
 static int  cs4280_getdev(void *, struct audio_device *);
@@ -159,8 +157,8 @@ static const struct cs4280_card_t cs4280
 #define CS4280_CARDS_SIZE (sizeof(cs4280_cards)/sizeof(cs4280_cards[0]))
 
 static const struct audio_hw_if cs4280_hw_if = {
-	.query_encoding		= cs4280_query_encoding,
-	.set_params		= cs4280_set_params,
+	.query_format		= cs4280_query_format,
+	.set_format		= cs4280_set_format,
 	.round_blocksize	= cs428x_round_blocksize,
 	.halt_output		= cs4280_halt_output,
 	.halt_input		= cs4280_halt_input,
@@ -171,7 +169,6 @@ static const struct audio_hw_if cs4280_h
 	.allocm			= cs428x_malloc,
 	.freem			= cs428x_free,
 	.round_buffersize	= cs428x_round_buffersize,
-	.mappage		= cs428x_mappage,
 	.get_props		= cs428x_get_props,
 	.trigger_output		= cs4280_trigger_output,
 	.trigger_input		= cs4280_trigger_input,
@@ -205,6 +202,26 @@ static struct audio_device cs4280_device
 	"cs4280"
 };
 
+/*
+ * XXX recording must be 16bit stereo and sample rate range from
+ *     11025Hz to 48000Hz.  However, it looks like to work with 8000Hz,
+ *     although data sheets say lower limit is 11025Hz.
+ * XXX The combination of available formats is complicated, so I use
+ *     a common format only.  Please fix it if not suitable.
+ */
+static const struct audio_format cs4280_formats[] = {
+	{
+		.mode		= AUMODE_PLAY | AUMODE_RECORD,
+		.encoding	= AUDIO_ENCODING_SLINEAR_LE,
+		.validbits	= 16,
+		.precision	= 16,
+		.channels	= 2,
+		.channel_mask	= AUFMT_STEREO,
+		.frequency_type	= 0,
+		.frequency	= { 8000, 48000 },
+	}
+};
+#define CS4280_NFORMATS __arraycount(cs4280_formats)
 
 static int
 cs4280_match(device_t parent, cfdata_t match, void *aux)
@@ -550,161 +567,20 @@ cs4280_intr(void *p)
 }
 
 static int
-cs4280_query_encoding(void *addr, struct audio_encoding *fp)
+cs4280_query_format(void *addr, audio_format_query_t *afp)
 {
-	switch (fp->index) {
-	case 0:
-		strcpy(fp->name, AudioEulinear);
-		fp->encoding = AUDIO_ENCODING_ULINEAR;
-		fp->precision = 8;
-		fp->flags = 0;
-		break;
-	case 1:
-		strcpy(fp->name, AudioEmulaw);
-		fp->encoding = AUDIO_ENCODING_ULAW;
-		fp->precision = 8;
-		fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
-		break;
-	case 2:
-		strcpy(fp->name, AudioEalaw);
-		fp->encoding = AUDIO_ENCODING_ALAW;
-		fp->precision = 8;
-		fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
-		break;
-	case 3:
-		strcpy(fp->name, AudioEslinear);
-		fp->encoding = AUDIO_ENCODING_SLINEAR;
-		fp->precision = 8;
-		fp->flags = 0;
-		break;
-	case 4:
-		strcpy(fp->name, AudioEslinear_le);
-		fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
-		fp->precision = 16;
-		fp->flags = 0;
-		break;
-	case 5:
-		strcpy(fp->name, AudioEulinear_le);
-		fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
-		fp->precision = 16;
-		fp->flags = 0;
-		break;
-	case 6:
-		strcpy(fp->name, AudioEslinear_be);
-		fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
-		fp->precision = 16;
-		fp->flags = 0;
-		break;
-	case 7:
-		strcpy(fp->name, AudioEulinear_be);
-		fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
-		fp->precision = 16;
-		fp->flags = 0;
-		break;
-	default:
-		return EINVAL;
-	}
-	return 0;
+
+	return audio_query_format(cs4280_formats, CS4280_NFORMATS, afp);
 }
 
 static int
-cs4280_set_params(void *addr, int setmode, int usemode,
-    audio_params_t *play, audio_params_t *rec, stream_filter_list_t *pfil,
-    stream_filter_list_t *rfil)
+cs4280_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)
 {
-	audio_params_t hw;
 	struct cs428x_softc *sc;
-	struct audio_params *p;
-	stream_filter_list_t *fil;
-	int mode;
 
 	sc = addr;
-	for (mode = AUMODE_RECORD; mode != -1;
-	    mode = mode == AUMODE_RECORD ? AUMODE_PLAY : -1 ) {
-		if ((setmode & mode) == 0)
-			continue;
-
-		p = mode == AUMODE_PLAY ? play : rec;
-
-		if (p == play) {
-			DPRINTFN(5,("play: sample=%d precision=%d channels=%d\n",
-				p->sample_rate, p->precision, p->channels));
-			/* play back data format may be 8- or 16-bit and
-			 * either stereo or mono.
-			 * playback rate may range from 8000Hz to 48000Hz
-			 */
-			if (p->sample_rate < 8000 || p->sample_rate > 48000 ||
-			    (p->precision != 8 && p->precision != 16) ||
-			    (p->channels != 1  && p->channels != 2) ) {
-				return EINVAL;
-			}
-		} else {
-			DPRINTFN(5,("rec: sample=%d precision=%d channels=%d\n",
-				p->sample_rate, p->precision, p->channels));
-			/* capture data format must be 16bit stereo
-			 * and sample rate range from 11025Hz to 48000Hz.
-			 *
-			 * XXX: it looks like to work with 8000Hz,
-			 *	although data sheets say lower limit is
-			 *	11025 Hz.
-			 */
-
-			if (p->sample_rate < 8000 || p->sample_rate > 48000 ||
-			    (p->precision != 8 && p->precision != 16) ||
-			    (p->channels  != 1 && p->channels  != 2) ) {
-				return EINVAL;
-			}
-		}
-		fil = mode == AUMODE_PLAY ? pfil : rfil;
-		hw = *p;
-		hw.encoding = AUDIO_ENCODING_SLINEAR_LE;
-
-		/* capturing data is slinear */
-		switch (p->encoding) {
-		case AUDIO_ENCODING_SLINEAR_BE:
-			if (mode == AUMODE_RECORD && p->precision == 16) {
-				fil->append(fil, swap_bytes, &hw);
-			}
-			break;
-		case AUDIO_ENCODING_SLINEAR_LE:
-			break;
-		case AUDIO_ENCODING_ULINEAR_BE:
-			if (mode == AUMODE_RECORD) {
-				fil->append(fil, p->precision == 16
-					    ? swap_bytes_change_sign16
-					    : change_sign8, &hw);
-			}
-			break;
-		case AUDIO_ENCODING_ULINEAR_LE:
-			if (mode == AUMODE_RECORD) {
-				fil->append(fil, p->precision == 16
-					    ? change_sign16 : change_sign8,
-					    &hw);
-			}
-			break;
-		case AUDIO_ENCODING_ULAW:
-			if (mode == AUMODE_PLAY) {
-				hw.precision = 16;
-				hw.validbits = 16;
-				fil->append(fil, mulaw_to_linear16, &hw);
-			} else {
-				fil->append(fil, linear8_to_mulaw, &hw);
-			}
-			break;
-		case AUDIO_ENCODING_ALAW:
-			if (mode == AUMODE_PLAY) {
-				hw.precision = 16;
-				hw.validbits = 16;
-				fil->append(fil, alaw_to_linear16, &hw);
-			} else {
-				fil->append(fil, linear8_to_alaw, &hw);
-			}
-			break;
-		default:
-			return EINVAL;
-		}
-	}
-
 	/* set sample rate */
 	cs4280_set_dac_rate(sc, play->sample_rate);
 	cs4280_set_adc_rate(sc, rec->sample_rate);
@@ -815,19 +691,8 @@ cs4280_trigger_output(void *addr, void *
 
 	/* set PFIE */
 	pfie = BA1READ4(sc, CS4280_PFIE) & ~PFIE_MASK;
-
-	if (param->precision == 8)
-		pfie |= PFIE_8BIT;
-	if (param->channels == 1)
-		pfie |= PFIE_MONO;
-
-	if (param->encoding == AUDIO_ENCODING_ULINEAR_BE ||
-	    param->encoding == AUDIO_ENCODING_SLINEAR_BE)
+	if (param->encoding == AUDIO_ENCODING_SLINEAR_BE)
 		pfie |= PFIE_SWAPPED;
-	if (param->encoding == AUDIO_ENCODING_ULINEAR_BE ||
-	    param->encoding == AUDIO_ENCODING_ULINEAR_LE)
-		pfie |= PFIE_UNSIGNED;
-
 	BA1WRITE4(sc, CS4280_PFIE, pfie | PFIE_PI_ENABLE);
 
 	sc->sc_prate = param->sample_rate;

Index: src/sys/dev/pci/cs4281.c
diff -u src/sys/dev/pci/cs4281.c:1.54 src/sys/dev/pci/cs4281.c:1.54.2.1
--- src/sys/dev/pci/cs4281.c:1.54	Sat Mar 16 12:09:58 2019
+++ src/sys/dev/pci/cs4281.c	Sun Apr 21 07:49:16 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: cs4281.c,v 1.54 2019/03/16 12:09:58 isaki Exp $	*/
+/*	$NetBSD: cs4281.c,v 1.54.2.1 2019/04/21 07:49:16 isaki Exp $	*/
 
 /*
  * Copyright (c) 2000 Tatoku Ogaito.  All rights reserved.
@@ -43,7 +43,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cs4281.c,v 1.54 2019/03/16 12:09:58 isaki Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cs4281.c,v 1.54.2.1 2019/04/21 07:49:16 isaki Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -61,8 +61,6 @@ __KERNEL_RCSID(0, "$NetBSD: cs4281.c,v 1
 #include <sys/audioio.h>
 #include <dev/audio_if.h>
 #include <dev/midi_if.h>
-#include <dev/mulaw.h>
-#include <dev/auconv.h>
 
 #include <dev/ic/ac97reg.h>
 #include <dev/ic/ac97var.h>
@@ -83,10 +81,10 @@ __KERNEL_RCSID(0, "$NetBSD: cs4281.c,v 1
 static int	cs4281_match(device_t, cfdata_t, void *);
 static void	cs4281_attach(device_t, device_t, void *);
 static int	cs4281_intr(void *);
-static int	cs4281_query_encoding(void *, struct audio_encoding *);
-static int	cs4281_set_params(void *, int, int, audio_params_t *,
-				  audio_params_t *, stream_filter_list_t *,
-				  stream_filter_list_t *);
+static int	cs4281_query_format(void *, audio_format_query_t *);
+static int	cs4281_set_format(void *, int,
+				 const audio_params_t *, const audio_params_t *,
+				 audio_filter_reg_t *, audio_filter_reg_t *);
 static int	cs4281_halt_output(void *);
 static int	cs4281_halt_input(void *);
 static int	cs4281_getdev(void *, struct audio_device *);
@@ -110,8 +108,8 @@ static bool	cs4281_suspend(device_t, con
 static bool	cs4281_resume(device_t, const pmf_qual_t *);
 
 static const struct audio_hw_if cs4281_hw_if = {
-	.query_encoding		= cs4281_query_encoding,
-	.set_params		= cs4281_set_params,
+	.query_format		= cs4281_query_format,
+	.set_format		= cs4281_set_format,
 	.round_blocksize	= cs428x_round_blocksize,
 	.halt_output		= cs4281_halt_output,
 	.halt_input		= cs4281_halt_input,
@@ -122,7 +120,6 @@ static const struct audio_hw_if cs4281_h
 	.allocm			= cs428x_malloc,
 	.freem			= cs428x_free,
 	.round_buffersize	= cs428x_round_buffersize,
-	.mappage		= cs428x_mappage,
 	.get_props		= cs428x_get_props,
 	.trigger_output		= cs4281_trigger_output,
 	.trigger_input		= cs4281_trigger_input,
@@ -156,6 +153,19 @@ static struct audio_device cs4281_device
 	"cs4281"
 };
 
+static const struct audio_format cs4281_formats[] = {
+	{
+		.mode		= AUMODE_PLAY | AUMODE_RECORD,
+		.encoding	= AUDIO_ENCODING_SLINEAR_NE,
+		.validbits	= 16,
+		.precision	= 16,
+		.channels	= 2,
+		.channel_mask	= AUFMT_STEREO,
+		.frequency_type	= 6,
+		.frequency	= { 8000, 11025, 16000, 22050, 44100, 48000 },
+	},
+};
+#define CS4281_NFORMATS __arraycount(cs4281_formats)
 
 static int
 cs4281_match(device_t parent, cfdata_t match, void *aux)
@@ -384,129 +394,20 @@ cs4281_intr(void *p)
 }
 
 static int
-cs4281_query_encoding(void *addr, struct audio_encoding *fp)
+cs4281_query_format(void *addr, audio_format_query_t *afp)
 {
 
-	switch (fp->index) {
-	case 0:
-		strcpy(fp->name, AudioEulinear);
-		fp->encoding = AUDIO_ENCODING_ULINEAR;
-		fp->precision = 8;
-		fp->flags = 0;
-		break;
-	case 1:
-		strcpy(fp->name, AudioEmulaw);
-		fp->encoding = AUDIO_ENCODING_ULAW;
-		fp->precision = 8;
-		fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
-		break;
-	case 2:
-		strcpy(fp->name, AudioEalaw);
-		fp->encoding = AUDIO_ENCODING_ALAW;
-		fp->precision = 8;
-		fp->flags = AUDIO_ENCODINGFLAG_EMULATED;
-		break;
-	case 3:
-		strcpy(fp->name, AudioEslinear);
-		fp->encoding = AUDIO_ENCODING_SLINEAR;
-		fp->precision = 8;
-		fp->flags = 0;
-		break;
-	case 4:
-		strcpy(fp->name, AudioEslinear_le);
-		fp->encoding = AUDIO_ENCODING_SLINEAR_LE;
-		fp->precision = 16;
-		fp->flags = 0;
-		break;
-	case 5:
-		strcpy(fp->name, AudioEulinear_le);
-		fp->encoding = AUDIO_ENCODING_ULINEAR_LE;
-		fp->precision = 16;
-		fp->flags = 0;
-		break;
-	case 6:
-		strcpy(fp->name, AudioEslinear_be);
-		fp->encoding = AUDIO_ENCODING_SLINEAR_BE;
-		fp->precision = 16;
-		fp->flags = 0;
-		break;
-	case 7:
-		strcpy(fp->name, AudioEulinear_be);
-		fp->encoding = AUDIO_ENCODING_ULINEAR_BE;
-		fp->precision = 16;
-		fp->flags = 0;
-		break;
-	default:
-		return EINVAL;
-	}
-	return 0;
+	return audio_query_format(cs4281_formats, CS4281_NFORMATS, afp);
 }
 
 static int
-cs4281_set_params(void *addr, int setmode, int usemode,
-    audio_params_t *play, audio_params_t *rec, stream_filter_list_t *pfil,
-    stream_filter_list_t *rfil)
+cs4281_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)
 {
-	audio_params_t hw;
 	struct cs428x_softc *sc;
-	audio_params_t *p;
-	stream_filter_list_t *fil;
-	int mode;
 
 	sc = addr;
-	for (mode = AUMODE_RECORD; mode != -1;
-	    mode = mode == AUMODE_RECORD ? AUMODE_PLAY : -1) {
-		if ((setmode & mode) == 0)
-			continue;
-
-		p = mode == AUMODE_PLAY ? play : rec;
-
-		if (p == play) {
-			DPRINTFN(5,
-			    ("play: sample=%u precision=%u channels=%u\n",
-			    p->sample_rate, p->precision, p->channels));
-			if (p->sample_rate < 6023 || p->sample_rate > 48000 ||
-			    (p->precision != 8 && p->precision != 16) ||
-			    (p->channels != 1  && p->channels != 2)) {
-				return EINVAL;
-			}
-		} else {
-			DPRINTFN(5,
-			    ("rec: sample=%u precision=%u channels=%u\n",
-			    p->sample_rate, p->precision, p->channels));
-			if (p->sample_rate < 6023 || p->sample_rate > 48000 ||
-			    (p->precision != 8 && p->precision != 16) ||
-			    (p->channels != 1 && p->channels != 2)) {
-				return EINVAL;
-			}
-		}
-		hw = *p;
-		fil = mode == AUMODE_PLAY ? pfil : rfil;
-
-		switch (p->encoding) {
-		case AUDIO_ENCODING_SLINEAR_BE:
-			break;
-		case AUDIO_ENCODING_SLINEAR_LE:
-			break;
-		case AUDIO_ENCODING_ULINEAR_BE:
-			break;
-		case AUDIO_ENCODING_ULINEAR_LE:
-			break;
-		case AUDIO_ENCODING_ULAW:
-			hw.encoding = AUDIO_ENCODING_SLINEAR_LE;
-			fil->append(fil, mode == AUMODE_PLAY ? mulaw_to_linear8
-				    :  linear8_to_mulaw, &hw);
-			break;
-		case AUDIO_ENCODING_ALAW:
-			hw.encoding = AUDIO_ENCODING_SLINEAR_LE;
-			fil->append(fil, mode == AUMODE_PLAY ? alaw_to_linear8
-				    : linear8_to_alaw, &hw);
-			break;
-		default:
-			return EINVAL;
-		}
-	}
-
 	/* set sample rate */
 	cs4281_set_dac_rate(sc, play->sample_rate);
 	cs4281_set_adc_rate(sc, rec->sample_rate);
@@ -607,16 +508,8 @@ cs4281_trigger_output(void *addr, void *
 
 	/* set playback format */
 	fmt = BA0READ4(sc, CS4281_DMR0) & ~DMRn_FMTMSK;
-	if (param->precision == 8)
-		fmt |= DMRn_SIZE8;
-	if (param->channels == 1)
-		fmt |= DMRn_MONO;
-	if (param->encoding == AUDIO_ENCODING_ULINEAR_BE ||
-	    param->encoding == AUDIO_ENCODING_SLINEAR_BE)
+	if (param->encoding == AUDIO_ENCODING_SLINEAR_BE)
 		fmt |= DMRn_BEND;
-	if (param->encoding == AUDIO_ENCODING_ULINEAR_BE ||
-	    param->encoding == AUDIO_ENCODING_ULINEAR_LE)
-		fmt |= DMRn_USIGN;
 	BA0WRITE4(sc, CS4281_DMR0, fmt);
 
 	/* set sample rate */
@@ -695,16 +588,8 @@ cs4281_trigger_input(void *addr, void *s
 
 	/* set recording format */
 	fmt = BA0READ4(sc, CS4281_DMR1) & ~DMRn_FMTMSK;
-	if (param->precision == 8)
-		fmt |= DMRn_SIZE8;
-	if (param->channels == 1)
-		fmt |= DMRn_MONO;
-	if (param->encoding == AUDIO_ENCODING_ULINEAR_BE ||
-	    param->encoding == AUDIO_ENCODING_SLINEAR_BE)
+	if (param->encoding == AUDIO_ENCODING_SLINEAR_BE)
 		fmt |= DMRn_BEND;
-	if (param->encoding == AUDIO_ENCODING_ULINEAR_BE ||
-	    param->encoding == AUDIO_ENCODING_ULINEAR_LE)
-		fmt |= DMRn_USIGN;
 	BA0WRITE4(sc, CS4281_DMR1, fmt);
 
 	/* set sample rate */

Index: src/sys/dev/pci/cs428x.c
diff -u src/sys/dev/pci/cs428x.c:1.18 src/sys/dev/pci/cs428x.c:1.18.14.1
--- src/sys/dev/pci/cs428x.c:1.18	Thu Jun  1 02:45:11 2017
+++ src/sys/dev/pci/cs428x.c	Sun Apr 21 07:49:16 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: cs428x.c,v 1.18 2017/06/01 02:45:11 chs Exp $	*/
+/*	$NetBSD: cs428x.c,v 1.18.14.1 2019/04/21 07:49:16 isaki Exp $	*/
 
 /*
  * Copyright (c) 2000 Tatoku Ogaito.  All rights reserved.
@@ -33,7 +33,7 @@
 /* Common functions for CS4280 and CS4281 */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cs428x.c,v 1.18 2017/06/01 02:45:11 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cs428x.c,v 1.18.14.1 2019/04/21 07:49:16 isaki Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -165,29 +165,6 @@ cs428x_round_buffersize(void *addr, int 
 	return size;
 }
 
-paddr_t
-cs428x_mappage(void *addr, void *mem, off_t off, int prot)
-{
-	struct cs428x_softc *sc;
-	struct cs428x_dma *p;
-
-	sc = addr;
-
-	if (off < 0)
-		return -1;
-
-	for (p = sc->sc_dmas; p && BUFADDR(p) != mem; p = p->next)
-		continue;
-
-	if (p == NULL) {
-		DPRINTF(("cs428x_mappage: bad buffer address\n"));
-		return -1;
-	}
-
-	return (bus_dmamem_mmap(sc->sc_dmatag, p->segs, p->nsegs,
-	    off, prot, BUS_DMA_WAITOK));
-}
-
 int
 cs428x_get_props(void *addr)
 {

Index: src/sys/dev/pci/cs428x.h
diff -u src/sys/dev/pci/cs428x.h:1.16 src/sys/dev/pci/cs428x.h:1.16.42.1
--- src/sys/dev/pci/cs428x.h:1.16	Sat Oct 27 17:18:31 2012
+++ src/sys/dev/pci/cs428x.h	Sun Apr 21 07:49:16 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: cs428x.h,v 1.16 2012/10/27 17:18:31 chs Exp $	*/
+/*	$NetBSD: cs428x.h,v 1.16.42.1 2019/04/21 07:49:16 isaki Exp $	*/
 
 /*
  * Copyright (c) 2000 Tatoku Ogaito.  All rights reserved.
@@ -184,7 +184,6 @@ int  cs428x_query_devinfo(void *, mixer_
 void *cs428x_malloc(void *, int, size_t);
 size_t cs428x_round_buffersize(void *, int, size_t);
 void cs428x_free(void *, void *, size_t);
-paddr_t cs428x_mappage(void *, void *, off_t, int);
 void cs428x_get_locks(void *, kmutex_t **, kmutex_t **);
 
 /* internal functions */

Reply via email to