From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Mon, 21 May 2001 19:36:57 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Mon, 21 May 2001 19:36:47 -0400 Received: from www.cscw.msu.edu ([35.8.233.178]:269 "EHLO cscw.msu.edu") by vger.kernel.org with ESMTP id ; Mon, 21 May 2001 19:36:35 -0400 To: linux-kernel@vger.kernel.org Subject: [patch] Bug-fix for Maestro dock/hardware volume control patch Reply-To: pfaffben@msu.edu MIME-Version: 1.0 (generated by SEMI 1.14.3 - "Ushinoya") Content-Type: text/plain; charset=US-ASCII From: Ben Pfaff Date: 21 May 2001 19:35:30 -0400 Message-ID: <87wv7axol9.fsf@msu.edu> User-Agent: Chaos/1.13.1 SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.3 Emacs/20.7 (i386-debian-linux-gnu) MULE/4.0 (HANANOEN) Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This patch, to be applied on top of the patch sent to linux-kernel last week, fixes a bug which caused the driver to crash on insertion if a hardware volume button had been pushed. --- linux-2.4.4-ac12.vanilla/drivers/sound/maestro.c Mon May 21 19:18:49 2001 +++ linux-2.4.5pre1/drivers/sound/maestro.c Mon May 21 18:27:39 2001 @@ -3226,7 +3359,7 @@ outw(w, iobase+0x18); w=inw(iobase+0x18); - w|=1<<6; /* Hardware volume control interrupt on. */ + w&=~(1<<6); /* Hardware volume control interrupt off... for now. */ outw(w, iobase+0x18); w=inw(iobase+0x18); @@ -3549,6 +3680,15 @@ kfree(card); return 0; } + + /* Turn on hardware volume control interrupt. + This has to come after we grab the IRQ above, + or a crash will result on installation if a button has been pressed, + because in that case we'll get an immediate interrupt. */ + n = inw(iobase+0x18); + n|=(1<<6); + outw(n, iobase+0x18); + /* now go to sleep 'till something interesting happens */ maestro_power(card,ACPI_D2); -- Ben Pfaff MSU Student - Debian GNU/Linux Maintainer - GNU Developer Personal webpage: http://www.msu.edu/user/pfaffben