From linux-kernel-owner+willy=40w.ods.org-S261993AbVATVZ3@vger.kernel.org  Thu Jan 20 22:15:14 2005
Return-Path: <linux-kernel-owner+willy=40w.ods.org-S261993AbVATVZ3@vger.kernel.org>
Received: from vger.kernel.org (vger.kernel.org [12.107.209.244])
	by mail.w.ods.org (8.12.9/8.12.1) with ESMTP id j0KLSoac025507
	for <willy@w.ods.org>; Thu, 20 Jan 2005 22:28:51 +0100 (CET)
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
	id S261993AbVATVZ3 (ORCPT <rfc822;willy@w.ods.org>);
	Thu, 20 Jan 2005 16:25:29 -0500
Received: (majordomo@vger.kernel.org) by vger.kernel.org id S262009AbVATVZ3
	(ORCPT <rfc822;linux-kernel-outgoing>);
	Thu, 20 Jan 2005 16:25:29 -0500
Received: from ra.tuxdriver.com ([24.172.12.4]:5133 "EHLO ra.tuxdriver.com")
	by vger.kernel.org with ESMTP id S261993AbVATVZS (ORCPT
	<rfc822;linux-kernel@vger.kernel.org>);
	Thu, 20 Jan 2005 16:25:18 -0500
Received: from bilbo.tuxdriver.com (bilbo.tuxdriver.com [24.172.12.5])
	by ra.tuxdriver.com (8.11.6/8.11.6) with ESMTP id j0KLGFl24816;
	Thu, 20 Jan 2005 16:16:25 -0500
Received: from bilbo.tuxdriver.com (localhost.localdomain [127.0.0.1])
	by bilbo.tuxdriver.com (8.13.1/8.13.1) with ESMTP id j0KLNlBO008045;
	Thu, 20 Jan 2005 16:23:47 -0500
Received: (from linville@localhost)
	by bilbo.tuxdriver.com (8.13.1/8.13.1/Submit) id j0KLNk2d008044;
	Thu, 20 Jan 2005 16:23:46 -0500
Date: 	Thu, 20 Jan 2005 16:23:46 -0500
From: "John W. Linville" <linville@tuxdriver.com>
To: linux-kernel@vger.kernel.org, tv@lio96.de, herbert@gondor.apana.org.au,
       jgarzik@pobox.com, marcelo.tosatti@cyclades.com
Subject: [patch 2.4.29] i810_audio: offset LVI from CIV to avoid stalled start
Message-ID: <20050120212346.GD7687@tuxdriver.com>
Mail-Followup-To: linux-kernel@vger.kernel.org, tv@lio96.de,
	herbert@gondor.apana.org.au, jgarzik@pobox.com,
	marcelo.tosatti@cyclades.com
References: <20050120202258.GA7687@tuxdriver.com> <20050120210739.GC7687@tuxdriver.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20050120210739.GC7687@tuxdriver.com>
User-Agent: Mutt/1.4.1i
Sender: linux-kernel-owner@vger.kernel.org
Precedence: bulk
X-Mailing-List: 	linux-kernel@vger.kernel.org
Status: RO
Content-Length: 1794
Lines: 50

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>
---
(Use this one...it doesn't depend on a non-existent patch...)

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 16:20:07.360411333 -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 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(port, 1);
+
 		start(state);
 		while (!(inb(port + OFF_CR) & ((1<<4) | (1<<2))))
 			;
-- 
John W. Linville
linville@tuxdriver.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

