[alsa-devel] HCTL element callback

Camilo Polymeris cpolymeris at gmail.com
Fri Sep 3 09:29:26 CEST 2010


On Fri, 2010-09-03 at 09:16 +0200, Jaroslav Kysela wrote:
> On Fri, 3 Sep 2010, Camilo Polymeris wrote:
> 
> > On Fri, 2010-09-03 at 08:35 +0200, Jaroslav Kysela wrote:
> >> On Thu, 2 Sep 2010, Camilo Polymeris wrote:
> >>
> >>> Hello.
> >>> I am writing this mixer app:
> >>> http://emutrix.googlecode.com
> >>>
> >>> I have trouble with callbacks. So far I have implemented callbacks for
> >>> the master volume fader and clock rate selection (integer and enum,
> >>> resp.)
> >>> But "pad" callbacks (boolean) won't work. In fact, I have noticed that
> >>> alsamixer 1.0.22 also doesn't react to pad changes from the application.
> >>> But the driver reacts to both as expected, so we're dealing with the
> >>> same element.
> >>
> >> It seems like a bug in the emu driver. The elem put callbacks does not
> >> check for changes (they should return 1).
> >>
> >> Does this patch help?
> >>
> >> diff --git a/sound/pci/emu10k1/emumixer.c b/sound/pci/emu10k1/emumixer.c
> >> index 05afe06..7bd1c1a 100644
> >> --- a/sound/pci/emu10k1/emumixer.c
> >> +++ b/sound/pci/emu10k1/emumixer.c
> >> @@ -622,6 +622,7 @@ static int snd_emu1010_adc_pads_put(struct snd_kcontrol *kcontrol, struct snd_ct
> >>   	if (cache != emu->emu1010.adc_pads) {
> >>   		snd_emu1010_fpga_write(emu, EMU_HANA_ADC_PADS, cache );
> >>   	        emu->emu1010.adc_pads = cache;
> >> +	        return 1;
> >>   	}
> >>
> >>   	return 0;
> >> @@ -670,6 +671,7 @@ static int snd_emu1010_dac_pads_put(struct snd_kcontrol *kcontrol, struct snd_ct
> >>   	if (cache != emu->emu1010.dac_pads) {
> >>   		snd_emu1010_fpga_write(emu, EMU_HANA_DAC_PADS, cache );
> >>   	        emu->emu1010.dac_pads = cache;
> >> +	        return 1;
> >>   	}
> >>
> >>   	return 0;
> >>
> >>  					Jaroslav
> >>
> >> -----
> >> Jaroslav Kysela <perex at perex.cz>
> >> Linux Kernel Sound Maintainer
> >> ALSA Project, Red Hat, Inc.
> >>
> >
> >
> > Hello.
> > I think it doesn't help. I applied the patch, built the sources,
> > installed them (with 'make install') and reloaded alsa (with 'alsa
> > reload'). That should have installed the new module, right?
> > If so, the patch didn't help. I am not very experienced with kernel
> > stuff, so if I did something wrong, please tell me and I'll try again.
> 
> Reboot your machine at first to ensure that you have loaded new ALSA 
> kernel modules.
> 
>  					Jaroslav
> 
> -----
> Jaroslav Kysela <perex at perex.cz>
> Linux Kernel Sound Maintainer
> ALSA Project, Red Hat, Inc.
> 

Very nice. That worked. Thanks!
By the way, I have noticed two small errors (I think) with element
names:
* Pads are labeled 14dB, but they are actually ~12dB (intended as
-10dBV/+4dBu)
* Enum items (inputs) are labeled 0202 SPDIF Left/Right, but the
connector is on the 1010 card. The outputs are ok.
Are you keeping those for backwards-compatibility?

Again, thanks.
Camilo



More information about the Alsa-devel mailing list