Module Name: src
Committed By: martin
Date: Mon May 18 18:05:34 UTC 2020
Modified Files:
src/sys/dev/audio [netbsd-9]: audio.c
Log Message:
Pull up following revision(s) (requested by isaki in ticket #910):
sys/dev/audio/audio.c: revision 1.49
sys/dev/audio/audio.c: revision 1.61
sys/dev/audio/audio.c: revision 1.66
sys/dev/audio/audio.c: revision 1.67
Move #if DIAGNOSTIC..#endif to correct place.
It should ignore stray interrupts regardless of DIAGNOSTIC.
Improve an error message about round_blocksize.
Improve diagnostic messages.
Improve the blocksize notation.
The blocksize is expressed in bytes, and the millisecond notation
is supplementary information to make it easier to understand.
To generate a diff of this commit:
cvs rdiff -u -r1.28.2.13 -r1.28.2.14 src/sys/dev/audio/audio.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/audio/audio.c
diff -u src/sys/dev/audio/audio.c:1.28.2.13 src/sys/dev/audio/audio.c:1.28.2.14
--- src/sys/dev/audio/audio.c:1.28.2.13 Mon May 18 18:02:23 2020
+++ src/sys/dev/audio/audio.c Mon May 18 18:05:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: audio.c,v 1.28.2.13 2020/05/18 18:02:23 martin Exp $ */
+/* $NetBSD: audio.c,v 1.28.2.14 2020/05/18 18:05:34 martin Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -138,7 +138,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.28.2.13 2020/05/18 18:02:23 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.28.2.14 2020/05/18 18:05:34 martin Exp $");
#ifdef _KERNEL_OPT
#include "audio.h"
@@ -4783,6 +4783,7 @@ audio_mixer_init(struct audio_softc *sc,
const audio_format2_t *hwfmt, const audio_filter_reg_t *reg)
{
char codecbuf[64];
+ char blkdmsbuf[8];
audio_trackmixer_t *mixer;
void (*softint_handler)(void *);
int len;
@@ -4791,6 +4792,7 @@ audio_mixer_init(struct audio_softc *sc,
size_t bufsize;
int hwblks;
int blkms;
+ int blkdms;
int error;
KASSERT(hwfmt != NULL);
@@ -4827,8 +4829,13 @@ audio_mixer_init(struct audio_softc *sc,
if ((rounded * NBBY) % (mixer->hwbuf.fmt.stride *
mixer->hwbuf.fmt.channels) != 0) {
device_printf(sc->sc_dev,
- "blksize not configured %d -> %d\n",
- blksize, rounded);
+ "round_blocksize must return blocksize "
+ "divisible by framesize: "
+ "blksize=%d rounded=%d "
+ "stride=%ubit channels=%u\n",
+ blksize, rounded,
+ mixer->hwbuf.fmt.stride,
+ mixer->hwbuf.fmt.channels);
return EINVAL;
}
/* Recalculation */
@@ -4965,13 +4972,20 @@ audio_mixer_init(struct audio_softc *sc,
mixer->hwbuf.fmt.precision);
}
blkms = mixer->blktime_n * 1000 / mixer->blktime_d;
- aprint_normal_dev(sc->sc_dev, "%s:%d%s %dch %dHz, blk %dms for %s\n",
+ blkdms = (mixer->blktime_n * 10000 / mixer->blktime_d) % 10;
+ blkdmsbuf[0] = '\0';
+ if (blkdms != 0) {
+ snprintf(blkdmsbuf, sizeof(blkdmsbuf), ".%1d", blkdms);
+ }
+ aprint_normal_dev(sc->sc_dev,
+ "%s:%d%s %dch %dHz, blk %d bytes (%d%sms) for %s\n",
audio_encoding_name(mixer->track_fmt.encoding),
mixer->track_fmt.precision,
codecbuf,
mixer->track_fmt.channels,
mixer->track_fmt.sample_rate,
- blkms,
+ blksize,
+ blkms, blkdmsbuf,
(mode == AUMODE_PLAY) ? "playback" : "recording");
return 0;
@@ -5455,12 +5469,14 @@ audio_pintr(void *arg)
if (sc->sc_dying)
return;
-#if defined(DIAGNOSTIC)
if (sc->sc_pbusy == false) {
- device_printf(sc->sc_dev, "stray interrupt\n");
+#if defined(DIAGNOSTIC)
+ device_printf(sc->sc_dev,
+ "DIAGNOSTIC: %s raised stray interrupt\n",
+ device_xname(sc->hw_dev));
+#endif
return;
}
-#endif
mixer = sc->sc_pmixer;
mixer->hw_complete_counter += mixer->frames_per_block;
@@ -5728,12 +5744,14 @@ audio_rintr(void *arg)
if (sc->sc_dying)
return;
-#if defined(DIAGNOSTIC)
if (sc->sc_rbusy == false) {
- device_printf(sc->sc_dev, "stray interrupt\n");
+#if defined(DIAGNOSTIC)
+ device_printf(sc->sc_dev,
+ "DIAGNOSTIC: %s raised stray interrupt\n",
+ device_xname(sc->hw_dev));
+#endif
return;
}
-#endif
mixer = sc->sc_rmixer;
mixer->hw_complete_counter += mixer->frames_per_block;