Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754182AbZCJMRG (ORCPT ); Tue, 10 Mar 2009 08:17:06 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753915AbZCJMQy (ORCPT ); Tue, 10 Mar 2009 08:16:54 -0400 Received: from ns1.suse.de ([195.135.220.2]:41078 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753820AbZCJMQx (ORCPT ); Tue, 10 Mar 2009 08:16:53 -0400 Date: Tue, 10 Mar 2009 13:16:50 +0100 Message-ID: From: Takashi Iwai To: Clemens Ladisch Cc: Viral Mehta , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Subject: Re: [alsa-devel] [PATCH] [SOUND] recording gain control In-Reply-To: <49B62C1D.4080509@ladisch.de> References: <49B5F8F5.8040100@einfochips.com> <49B62C1D.4080509@ladisch.de> User-Agent: Wanderlust/2.12.0 (Your Wildest Dreams) SEMI/1.14.6 (Maruoka) FLIM/1.14.7 (=?ISO-8859-4?Q?Sanj=F2?=) APEL/10.6 Emacs/22.3 (x86_64-suse-linux-gnu) MULE/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2081 Lines: 51 At Tue, 10 Mar 2009 10:00:13 +0100, Clemens Ladisch wrote: > > (CC alsa-devel) > > Viral Mehta wrote: > > Hi, > > > > I am trying to do gain control while RECORDING for my Audio Mic device. > > > > My application opens /dev/mixer device and calls ioctl(fdmixer, > > MIXER_WRITE(SOUND_MIXER_MIC), ...) > > > > But, the call fails. It traces to sound/core/oss/mixer_oss.c file and > > snd_mixer_oss_put_volume1() function. > > It never falls in "if (slot->present & SNDRV_MIXER_OSS_PRESENT_CVOLUME)" > > as condition "if (slot->present & SNDRV_MIXER_OSS_PRESENT_PVOLUME) " > > comes as false. > > > > I think there is a bug in kernel and I think it should be like as below, > > > > --- sound/core/oss/mixer_oss.c 2008-12-03 13:24:02.000000000 +0530 > > +++ sound/core/oss/mixer_oss.c 2009-03-09 16:22:06.548766896 +0530 > > @@ -688,7 +688,7 @@ static int snd_mixer_oss_put_volume1(str > > > > if (slot->present & SNDRV_MIXER_OSS_PRESENT_PVOLUME) { > > snd_mixer_oss_put_volume1_vol(fmixer, pslot, > > slot->numid[SNDRV_MIXER_OSS_ITEM_PVOLUME], left, right); > > - if (slot->present & SNDRV_MIXER_OSS_PRESENT_CVOLUME) > > + } else if (slot->present & SNDRV_MIXER_OSS_PRESENT_CVOLUME) { > > snd_mixer_oss_put_volume1_vol(fmixer, pslot, > > slot->numid[SNDRV_MIXER_OSS_ITEM_CVOLUME], left, right); > > } else if (slot->present & SNDRV_MIXER_OSS_PRESENT_GVOLUME) { > > snd_mixer_oss_put_volume1_vol(fmixer, pslot, > > slot->numid[SNDRV_MIXER_OSS_ITEM_GVOLUME], left, right); > > Your mailer mangled the patch; see linux/Documentation/email-clients.txt. Also, the current code behaves intentionally so (as it's designed for mic-loopback volume). A more feasible fix would be to add another if check for *_CVOLUME instead of moving it. Takashi -- 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/