Module Name:    src
Committed By:   nat
Date:           Thu Feb 23 23:13:27 UTC 2017

Modified Files:
        src/sys/dev/pad: pad.c padvar.h

Log Message:
Update pad due to changes in audio.  sc_bytes_count and BYTESTOSLEEP are
no longer required.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/pad/pad.c
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/pad/padvar.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/pad/pad.c
diff -u src/sys/dev/pad/pad.c:1.27 src/sys/dev/pad/pad.c:1.28
--- src/sys/dev/pad/pad.c:1.27	Thu Jan 26 04:10:27 2017
+++ src/sys/dev/pad/pad.c	Thu Feb 23 23:13:27 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: pad.c,v 1.27 2017/01/26 04:10:27 nat Exp $ */
+/* $NetBSD: pad.c,v 1.28 2017/02/23 23:13:27 nat Exp $ */
 
 /*-
  * Copyright (c) 2007 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pad.c,v 1.27 2017/01/26 04:10:27 nat Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pad.c,v 1.28 2017/02/23 23:13:27 nat Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -321,7 +321,6 @@ pad_open(dev_t dev, int flags, int fmt, 
 	}
 	
 	getmicrotime(&sc->sc_last);
-	sc->sc_bytes_count = 0;
 
 	return 0;
 }
@@ -342,8 +341,7 @@ pad_close(dev_t dev, int flags, int fmt,
 }
 
 #define PAD_BYTES_PER_SEC (44100 * sizeof(int16_t) * 2)
-#define TIMENEXTREAD	(20 * 1000)
-#define BYTESTOSLEEP ((PAD_BYTES_PER_SEC / (1000000 / TIMENEXTREAD)) + PAD_BLKSIZE)
+#define TIMENEXTREAD	(PAD_BLKSIZE * 1000 / PAD_BYTES_PER_SEC)
 
 int
 pad_read(dev_t dev, struct uio *uio, int flags)
@@ -371,27 +369,20 @@ pad_read(dev_t dev, struct uio *uio, int
 		nowusec = (now.tv_sec * 1000000) + now.tv_usec;
 		lastusec = (sc->sc_last.tv_sec * 1000000) +
 		     sc->sc_last.tv_usec;
-		if (lastusec + TIMENEXTREAD > nowusec &&
-		     sc->sc_bytes_count >= BYTESTOSLEEP) {
+		if (lastusec + TIMENEXTREAD > nowusec) {
 			wait_ticks = (hz * ((lastusec + TIMENEXTREAD) -
 			     nowusec)) / 1000000;
 			if (wait_ticks > 0) {
 				kpause("padwait", TRUE, wait_ticks,
-				     &sc->sc_lock);
+				    &sc->sc_lock);
 			}
-
-			sc->sc_bytes_count -= BYTESTOSLEEP;
-			getmicrotime(&sc->sc_last);
-		} else if (sc->sc_bytes_count >= BYTESTOSLEEP) {
-			sc->sc_bytes_count -= BYTESTOSLEEP;
-			getmicrotime(&sc->sc_last);
-		} else if (lastusec + TIMENEXTREAD <= nowusec)
-			getmicrotime(&sc->sc_last);
-
+		}
+		sc->sc_last.tv_sec =
+			(lastusec + TIMENEXTREAD) / 1000000;
+		sc->sc_last.tv_usec =
+			(lastusec + TIMENEXTREAD) % 1000000;
 		err = pad_get_block(sc, &pb, min(uio->uio_resid, PAD_BLKSIZE));
 		if (!err) {
-			sc->sc_bytes_count += pb.pb_len;
-
 			mutex_exit(&sc->sc_lock);
 			err = uiomove(pb.pb_ptr, pb.pb_len, uio);
 			continue;

Index: src/sys/dev/pad/padvar.h
diff -u src/sys/dev/pad/padvar.h:1.6 src/sys/dev/pad/padvar.h:1.7
--- src/sys/dev/pad/padvar.h:1.6	Fri Feb 26 13:17:04 2016
+++ src/sys/dev/pad/padvar.h	Thu Feb 23 23:13:27 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: padvar.h,v 1.6 2016/02/26 13:17:04 nat Exp $ */
+/* $NetBSD: padvar.h,v 1.7 2017/02/23 23:13:27 nat Exp $ */
 
 /*-
  * Copyright (c) 2007 Jared D. McNeill <jmcne...@invisible.ca>
@@ -52,7 +52,6 @@ typedef struct pad_softc {
 
 	uint8_t		sc_swvol;
 	struct timeval	sc_last;
-	int		sc_bytes_count;
 } pad_softc_t;
 
 #endif /* !_SYS_DEV_PAD_PADVAR_H */

Reply via email to