static const struct snd_kcontrol_new lo_amp_ctl = SOC_DAPM_SINGLE("Switch", CS42L73_PWRCTL3, 1, 1, 1); static const struct snd_kcontrol_new spk_amp_ctl = SOC_DAPM_SINGLE("Switch", CS42L73_PWRCTL3, 2, 1, 1); static const struct snd_kcontrol_new spklo_amp_ctl = SOC_DAPM_SINGLE("Switch", CS42L73_PWRCTL3, 4, 1, 1); static const struct snd_kcontrol_new ear_amp_ctl = SOC_DAPM_SINGLE("Switch", CS42L73_PWRCTL3, 3, 1, 1); static const struct snd_kcontrol_new cs42l73_snd_controls[] = { SOC_DOUBLE_R_SX_TLV("Headphone Analog Playback Volume", CS42L73_HPAAVOL, CS42L73_HPBAVOL, 0, 0x41, 0x4B, hpaloa_tlv), SOC_DOUBLE_R_SX_TLV("LineOut Analog Playback Volume", CS42L73_LOAAVOL, CS42L73_LOBAVOL, 0, 0x41, 0x4B, hpaloa_tlv), SOC_DOUBLE_R_SX_TLV("Input PGA Analog Volume", CS42L73_MICAPREPGAAVOL, CS42L73_MICBPREPGABVOL, 5, 0x34, 0x24, micpga_tlv), SOC_DOUBLE_R("MIC Preamp Switch", CS42L73_MICAPREPGAAVOL, CS42L73_MICBPREPGABVOL, 6, 1, 1), SOC_DOUBLE_R_SX_TLV("Input Path Digital Volume", CS42L73_IPADVOL, CS42L73_IPBDVOL, 0, 0xA0, 0x6C, ipd_tlv),
static const struct snd_kcontrol_new spkl_ctl = SOC_DAPM_SINGLE("Switch", CS42L52_PWRCTL3, 0, 1, 1); static const struct snd_kcontrol_new spkr_ctl = SOC_DAPM_SINGLE("Switch", CS42L52_PWRCTL3, 2, 1, 1); static const struct snd_kcontrol_new hpl_ctl = SOC_DAPM_SINGLE("Switch", CS42L52_PWRCTL3, 4, 1, 1); static const struct snd_kcontrol_new hpr_ctl = SOC_DAPM_SINGLE("Switch", CS42L52_PWRCTL3, 6, 1, 1); static const struct snd_kcontrol_new cs42l52_snd_controls[] = { SOC_DOUBLE_R_SX_TLV("Master Volume", CS42L52_MASTERA_VOL, CS42L52_MASTERB_VOL, 0, 0x34, 0xE4, hl_tlv), SOC_DOUBLE_R_SX_TLV("Headphone Volume", CS42L52_HPA_VOL, CS42L52_HPB_VOL, 0, 0x34, 0xCC, hpd_tlv), SOC_ENUM("Headphone Analog Gain", hp_gain_enum), SOC_DOUBLE_R_SX_TLV("Speaker Volume", CS42L52_SPKA_VOL, CS42L52_SPKB_VOL, 0, 0x1, 0xff, hl_tlv), SOC_DOUBLE_R_SX_TLV("Bypass Volume", CS42L52_PASSTHRUA_VOL, CS42L52_PASSTHRUB_VOL, 6, 0x18, 0x90, pga_tlv), SOC_DOUBLE("Bypass Mute", CS42L52_MISC_CTL, 4, 5, 1, 0), SOC_DOUBLE_R_TLV("MIC Gain Volume", CS42L52_MICA_CTL,
static const DECLARE_TLV_DB_SCALE(tone_tlv, -1050, 150, 0); static const DECLARE_TLV_DB_SCALE(aout_tlv, -11550, 50, 0); static const DECLARE_TLV_DB_SCALE(boost_tlv, 1600, 1600, 0); static const char *chan_mix[] = { "L R", "L+R", "R L", }; static const struct soc_enum cs42l51_chan_mix = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(chan_mix), chan_mix); static const struct snd_kcontrol_new cs42l51_snd_controls[] = { SOC_DOUBLE_R_SX_TLV("PCM Playback Volume", CS42L51_PCMA_VOL, CS42L51_PCMB_VOL, 7, 0xffffff99, 0x18, adc_pcm_tlv), SOC_DOUBLE_R("PCM Playback Switch", CS42L51_PCMA_VOL, CS42L51_PCMB_VOL, 7, 1, 1), SOC_DOUBLE_R_SX_TLV("Analog Playback Volume", CS42L51_AOUTA_VOL, CS42L51_AOUTB_VOL, 8, 0xffffff19, 0x18, aout_tlv), SOC_DOUBLE_R_SX_TLV("ADC Mixer Volume", CS42L51_ADCA_VOL, CS42L51_ADCB_VOL, 7, 0xffffff99, 0x18, adc_pcm_tlv), SOC_DOUBLE_R("ADC Mixer Switch", CS42L51_ADCA_VOL, CS42L51_ADCB_VOL, 7, 1, 1), SOC_SINGLE("Playback Deemphasis Switch", CS42L51_DAC_CTL, 3, 1, 0), SOC_SINGLE("Auto-Mute Switch", CS42L51_DAC_CTL, 2, 1, 0), SOC_SINGLE("Soft Ramp Switch", CS42L51_DAC_CTL, 1, 1, 0), SOC_SINGLE("Zero Cross Switch", CS42L51_DAC_CTL, 0, 0, 0),
static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -6350, 50, 0); static const DECLARE_TLV_DB_SCALE(adc_fgain_tlv, 0, 10, 0); static const DECLARE_TLV_DB_SCALE(adc_cgain_tlv, -2000, 50, 0); static const DECLARE_TLV_DB_SCALE(mic_pga_tlv, 0, 50, 0); static const DECLARE_TLV_DB_SCALE(hp_drv_tlv, 0, 100, 0); static const DECLARE_TLV_DB_SCALE(class_D_drv_tlv, 600, 600, 0); static const DECLARE_TLV_DB_SCALE(hp_vol_tlv, -6350, 50, 0); static const DECLARE_TLV_DB_SCALE(sp_vol_tlv, -6350, 50, 0); /* * controls to be exported to the user space */ static const struct snd_kcontrol_new aic31xx_snd_controls[] = { /* DAC Volume Control*/ SOC_DOUBLE_R_SX_TLV("DAC Playback Volume", AIC31XX_LDACVOL, AIC31XX_RDACVOL, 0, 0x81, 0xaf, dac_vol_tlv), /* HP driver mute control */ SOC_DOUBLE_R("HP Driver Playback Switch", AIC31XX_HPLGAIN, AIC31XX_HPRGAIN, 2, 1, 0), /* ADC FINE GAIN */ SOC_SINGLE_TLV("ADC Fine Capture Volume", AIC31XX_ADCFGA, 4, 4, 1, adc_fgain_tlv), /* ADC mute control */ SOC_SINGLE("ADC Capture Switch", AIC31XX_ADCFGA, 7, 1, 1), /* ADC COARSE GAIN */ SOC_DOUBLE_R_SX_TLV("ADC Capture Volume", AIC31XX_ADCVOL, AIC31XX_ADCVOL, 0, 0x28, 0x40, adc_cgain_tlv),
static const DECLARE_TLV_DB_SCALE(aout_tlv, -10200, 50, 0); static const DECLARE_TLV_DB_SCALE(boost_tlv, 1600, 1600, 0); static const char *chan_mix[] = { "L R", "L+R", "R L", }; static const struct soc_enum cs42l51_chan_mix = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(chan_mix), chan_mix); static const struct snd_kcontrol_new cs42l51_snd_controls[] = { SOC_DOUBLE_R_SX_TLV("PCM Playback Volume", CS42L51_PCMA_VOL, CS42L51_PCMB_VOL, 0, 0x19, 0x7F, adc_pcm_tlv), SOC_DOUBLE_R("PCM Playback Switch", CS42L51_PCMA_VOL, CS42L51_PCMB_VOL, 7, 1, 1), SOC_DOUBLE_R_SX_TLV("Analog Playback Volume", CS42L51_AOUTA_VOL, CS42L51_AOUTB_VOL, 0, 0x34, 0xE4, aout_tlv), SOC_DOUBLE_R_SX_TLV("ADC Mixer Volume", CS42L51_ADCA_VOL, CS42L51_ADCB_VOL, 0, 0x19, 0x7F, adc_pcm_tlv), SOC_DOUBLE_R("ADC Mixer Switch", CS42L51_ADCA_VOL, CS42L51_ADCB_VOL, 7, 1, 1), SOC_SINGLE("Playback Deemphasis Switch", CS42L51_DAC_CTL, 3, 1, 0), SOC_SINGLE("Auto-Mute Switch", CS42L51_DAC_CTL, 2, 1, 0), SOC_SINGLE("Soft Ramp Switch", CS42L51_DAC_CTL, 1, 1, 0), SOC_SINGLE("Zero Cross Switch", CS42L51_DAC_CTL, 0, 0, 0),