public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch 2.4.29] i810_audio: offset LVI from CIV to avoid stalled start
@ 2005-01-20 20:22 John W. Linville
  2005-01-20 20:27 ` Herbert Xu
  2005-01-20 21:07 ` John W. Linville
  0 siblings, 2 replies; 12+ messages in thread
From: John W. Linville @ 2005-01-20 20:22 UTC (permalink / raw)
  To: linux-kernel; +Cc: tv, herbert, jgarzik, marcelo.tosatti

Offset LVI past CIV when starting DAC/ADC in order to prevent
stalled start.

Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Thomas Voegtle <tv@lio96.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
---
This fixes a "no sound" problem with Wolfenstein Enemy Territory and
(apparently) other games using the Quake3 engine.  It probably affects
some other OSS applications as well.

This recreates some code that had been removed from the i810_audio
driver around 5/2004.

 drivers/sound/i810_audio.c |   10 ++++++++++
 1 files changed, 10 insertions(+)

--- i810_audio-2.4/drivers/sound/i810_audio.c.orig	2005-01-20 14:41:43.914734688 -0500
+++ i810_audio-2.4/drivers/sound/i810_audio.c	2005-01-20 14:41:43.916734414 -0500
@@ -1062,10 +1062,20 @@
 	if (count < fragsize)
 		return;
 
+	/* if we are currently stopped, then our CIV is actually set to our
+	 * *last* sg segment and we are ready to wrap to the next.  However,
+	 * if we set our LVI to the last sg segment, then it won't wrap to
+	 * the next sg segment, it won't even get a start.  So, instead, when
+	 * we are stopped, we set both the LVI value and also we increment
+	 * the CIV value to the next sg segment to be played so that when
+	 * we call start, things will operate properly
+	 */
 	if (!dmabuf->enable && dmabuf->ready) {
 		if (!(dmabuf->trigger & trigger))
 			return;
 
+		CIV_TO_LVI(state->card, port, 1);
+
 		start(state);
 		while (!(inb(port + OFF_CR) & ((1<<4) | (1<<2))))
 			;
-- 
John W. Linville
linville@tuxdriver.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2005-08-03 18:41 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-20 20:22 [patch 2.4.29] i810_audio: offset LVI from CIV to avoid stalled start John W. Linville
2005-01-20 20:27 ` Herbert Xu
2005-01-20 21:07 ` John W. Linville
2005-01-20 21:23   ` John W. Linville
2005-01-20 22:01     ` John W. Linville
2005-01-20 22:07       ` Herbert Xu
2005-01-22  3:02         ` Herbert Xu
2005-01-23 14:48           ` John W. Linville
2005-01-23 14:54     ` John W. Linville
2005-08-03 18:18     ` [patch 2.4.32-pre1] " John W. Linville
2005-08-03 18:35       ` John W. Linville
2005-08-03 18:36       ` [patch 2.4.32-pre1 (corrected)] " John W. Linville

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox