[alsa-devel] How to apply a SOC_DAPM_MUX if two there are two different input register for left and right channel?

Oleksandr Müller sanj3k at gmail.com
Wed Sep 6 15:35:36 CEST 2017


Hello guys,

I have some trouble I want to implement a mux within the mixer 
application for the VIN source of my adc. Taking a look into the 
datasheet of the TI-PCM1863 adc I get the information that the VIN left 
register is at the 0x06 and the VIN right register is at the 0x07 
address. Right now my code would look like this and here comes the 
problem it seems that there is only a SOC_ENUM_SINGLE_DECL or a 
SOC_ENUM_DOUBLE_DECL but no SOC_ENUM_DOUBLE_R_DECL because the 
DOUBLE_DECL only allows shiftl and shiftr as the input parameters but I 
would need a regl regr parameter. Is the only option to duplicate the 
code and define a VIN_L_MUX and a VIN_R_MUX?

static const char * const pcm1863_adc_vin_src[] = {
         "VIN1", "VIN2", "VIN3", "VIN4"
};

static SOC_ENUM_SINGLE_DECL(
         pcm1863_adc_vin_enum, PCM1863_ADC1_INPUT_SEL_L,
         PCM1863_SEL_L_SHIFT, pcm1863_vin_src);

static const struct snd_kcontrol_new pcm1863_adc_vin_mux =
         SOC_DAPM_ENUM("ADC VIN Source", pcm1863_adc_vin_enum);

static const struct snd_soc_dapm_widget pcm1863_dapm_widgets[] = {
         [...]
         SND_SOC_DAPM_MUX("ADC VIN Mux", SND_SOC_NOPM, 0, 0,
                                 &pcm1863_adc_vin_mux),
};

- Sanj3k



More information about the Alsa-devel mailing list