Module Name: src Committed By: isaki Date: Sat Feb 29 06:25:33 UTC 2020
Modified Files: src/sys/dev/pci: gcscaudio.c Log Message: round_blocksize must return a multiple of the framesize. It's not divisible when blk=GCSCAUDI_PRD_SIZE_MAX and channels=4. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/dev/pci/gcscaudio.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/pci/gcscaudio.c diff -u src/sys/dev/pci/gcscaudio.c:1.18 src/sys/dev/pci/gcscaudio.c:1.19 --- src/sys/dev/pci/gcscaudio.c:1.18 Sat Jun 8 08:02:38 2019 +++ src/sys/dev/pci/gcscaudio.c Sat Feb 29 06:25:33 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: gcscaudio.c,v 1.18 2019/06/08 08:02:38 isaki Exp $ */ +/* $NetBSD: gcscaudio.c,v 1.19 2020/02/29 06:25:33 isaki Exp $ */ /*- * Copyright (c) 2008 SHIMIZU Ryo <r...@nerv.org> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gcscaudio.c,v 1.18 2019/06/08 08:02:38 isaki Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gcscaudio.c,v 1.19 2020/02/29 06:25:33 isaki Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -549,9 +549,10 @@ static int gcscaudio_round_blocksize(void *arg, int blk, int mode, const audio_params_t *param) { - blk &= -4; + if (blk > GCSCAUDIO_PRD_SIZE_MAX) blk = GCSCAUDIO_PRD_SIZE_MAX; + blk = rounddown(blk, param->channels * param->precision / NBBY); return blk; }