Lines Matching +full:left +full:- +full:right
1 // SPDX-License-Identifier: GPL-2.0-or-later
59 /* Input - Gain, Select and Filter Registers */
72 /* Output - Gain, Select and Filter Registers */
289 0x0, 0x10, TLV_DB_SCALE_ITEM(-5400, 0, 0),
290 /* -54dB to 15dB */
291 0x11, 0x3f, TLV_DB_SCALE_ITEM(-5400, 150, 0)
296 /* -78dB to 12dB */
297 0x08, 0x7f, TLV_DB_SCALE_ITEM(-7800, 75, 0)
306 static const DECLARE_TLV_DB_SCALE(mic_vol_tlv, -600, 600, 0);
307 static const DECLARE_TLV_DB_SCALE(mixin_gain_tlv, -450, 150, 0);
308 static const DECLARE_TLV_DB_SCALE(eq_gain_tlv, -1050, 150, 0);
309 static const DECLARE_TLV_DB_SCALE(hp_vol_tlv, -5700, 100, 0);
310 static const DECLARE_TLV_DB_SCALE(lineout_vol_tlv, -4800, 100, 0);
311 static const DECLARE_TLV_DB_SCALE(alc_threshold_tlv, -9450, 150, 0);
383 "ADC output left", "ADC output right", "AIF input left",
384 "AIF input right"
393 /* MIC PGA Left source select */
401 /* MIC PGA Right source select */
458 /* Select the left or right channel and capture data */ in da9055_get_alc_data()
484 if (ucontrol->value.integer.value[0]) { in da9055_put_alc_sw()
494 /* Mute Mic PGA Left and Right */ in da9055_put_alc_sw()
504 /* Enable ADC Left and Right */ in da9055_put_alc_sw()
510 /* Calculate average for Left and Right data */ in da9055_put_alc_sw()
511 /* Left Data */ in da9055_put_alc_sw()
514 /* Right Data */ in da9055_put_alc_sw()
519 offset_l = -avg_left_data; in da9055_put_alc_sw()
520 offset_r = -avg_right_data; in da9055_put_alc_sw()
642 SOC_SINGLE("DAC Left Invert", DA9055_DIG_CTRL, 3, 1, 0),
643 SOC_SINGLE("DAC Right Invert", DA9055_DIG_CTRL, 7, 1, 0),
692 /* Mic PGA Left Source */
696 /* Mic PGA Right Source */
700 /* In Mixer Left */
702 SOC_DAPM_SINGLE("Aux Left Switch", DA9055_MIXIN_L_SELECT, 0, 1, 0),
703 SOC_DAPM_SINGLE("Mic Left Switch", DA9055_MIXIN_L_SELECT, 1, 1, 0),
704 SOC_DAPM_SINGLE("Mic Right Switch", DA9055_MIXIN_L_SELECT, 2, 1, 0),
707 /* In Mixer Right */
709 SOC_DAPM_SINGLE("Aux Right Switch", DA9055_MIXIN_R_SELECT, 0, 1, 0),
710 SOC_DAPM_SINGLE("Mic Right Switch", DA9055_MIXIN_R_SELECT, 1, 1, 0),
711 SOC_DAPM_SINGLE("Mic Left Switch", DA9055_MIXIN_R_SELECT, 2, 1, 0),
712 SOC_DAPM_SINGLE("Mixin Left Switch", DA9055_MIXIN_R_SELECT, 3, 1, 0),
715 /* DAC Left Source */
719 /* DAC Right Source */
723 /* Out Mixer Left */
725 SOC_DAPM_SINGLE("Aux Left Switch", DA9055_MIXOUT_L_SELECT, 0, 1, 0),
726 SOC_DAPM_SINGLE("Mixin Left Switch", DA9055_MIXOUT_L_SELECT, 1, 1, 0),
727 SOC_DAPM_SINGLE("Mixin Right Switch", DA9055_MIXOUT_L_SELECT, 2, 1, 0),
728 SOC_DAPM_SINGLE("DAC Left Switch", DA9055_MIXOUT_L_SELECT, 3, 1, 0),
729 SOC_DAPM_SINGLE("Aux Left Invert Switch", DA9055_MIXOUT_L_SELECT,
731 SOC_DAPM_SINGLE("Mixin Left Invert Switch", DA9055_MIXOUT_L_SELECT,
733 SOC_DAPM_SINGLE("Mixin Right Invert Switch", DA9055_MIXOUT_L_SELECT,
737 /* Out Mixer Right */
739 SOC_DAPM_SINGLE("Aux Right Switch", DA9055_MIXOUT_R_SELECT, 0, 1, 0),
740 SOC_DAPM_SINGLE("Mixin Right Switch", DA9055_MIXOUT_R_SELECT, 1, 1, 0),
741 SOC_DAPM_SINGLE("Mixin Left Switch", DA9055_MIXOUT_R_SELECT, 2, 1, 0),
742 SOC_DAPM_SINGLE("DAC Right Switch", DA9055_MIXOUT_R_SELECT, 3, 1, 0),
743 SOC_DAPM_SINGLE("Aux Right Invert Switch", DA9055_MIXOUT_R_SELECT,
745 SOC_DAPM_SINGLE("Mixin Right Invert Switch", DA9055_MIXOUT_R_SELECT,
747 SOC_DAPM_SINGLE("Mixin Left Invert Switch", DA9055_MIXOUT_R_SELECT,
773 SND_SOC_DAPM_MUX("Mic Left Source", SND_SOC_NOPM, 0, 0,
775 SND_SOC_DAPM_MUX("Mic Right Source", SND_SOC_NOPM, 0, 0,
779 SND_SOC_DAPM_PGA("Mic Left", DA9055_MIC_L_CTRL, 7, 0, NULL, 0),
780 SND_SOC_DAPM_PGA("Mic Right", DA9055_MIC_R_CTRL, 7, 0, NULL, 0),
781 SND_SOC_DAPM_PGA("Aux Left", DA9055_AUX_L_CTRL, 7, 0, NULL, 0),
782 SND_SOC_DAPM_PGA("Aux Right", DA9055_AUX_R_CTRL, 7, 0, NULL, 0),
783 SND_SOC_DAPM_PGA("MIXIN Left", DA9055_MIXIN_L_CTRL, 7, 0, NULL, 0),
784 SND_SOC_DAPM_PGA("MIXIN Right", DA9055_MIXIN_R_CTRL, 7, 0, NULL, 0),
791 SND_SOC_DAPM_MIXER("In Mixer Left", SND_SOC_NOPM, 0, 0,
794 SND_SOC_DAPM_MIXER("In Mixer Right", SND_SOC_NOPM, 0, 0,
799 SND_SOC_DAPM_ADC("ADC Left", "Capture", DA9055_ADC_L_CTRL, 7, 0),
800 SND_SOC_DAPM_ADC("ADC Right", "Capture", DA9055_ADC_R_CTRL, 7, 0),
805 SND_SOC_DAPM_MUX("DAC Left Source", SND_SOC_NOPM, 0, 0,
807 SND_SOC_DAPM_MUX("DAC Right Source", SND_SOC_NOPM, 0, 0,
811 SND_SOC_DAPM_AIF_IN("AIFIN Left", "Playback", 0, SND_SOC_NOPM, 0, 0),
812 SND_SOC_DAPM_AIF_IN("AIFIN Right", "Playback", 0, SND_SOC_NOPM, 0, 0),
815 SND_SOC_DAPM_DAC("DAC Left", "Playback", DA9055_DAC_L_CTRL, 7, 0),
816 SND_SOC_DAPM_DAC("DAC Right", "Playback", DA9055_DAC_R_CTRL, 7, 0),
819 SND_SOC_DAPM_MIXER("Out Mixer Left", SND_SOC_NOPM, 0, 0,
822 SND_SOC_DAPM_MIXER("Out Mixer Right", SND_SOC_NOPM, 0, 0,
827 SND_SOC_DAPM_SWITCH("Headphone Left Enable", SND_SOC_NOPM, 0, 0,
829 SND_SOC_DAPM_SWITCH("Headphone Right Enable", SND_SOC_NOPM, 0, 0,
835 SND_SOC_DAPM_PGA("MIXOUT Left", DA9055_MIXOUT_L_CTRL, 7, 0, NULL, 0),
836 SND_SOC_DAPM_PGA("MIXOUT Right", DA9055_MIXOUT_R_CTRL, 7, 0, NULL, 0),
838 SND_SOC_DAPM_PGA("Headphone Left", DA9055_HP_L_CTRL, 7, 0, NULL, 0),
839 SND_SOC_DAPM_PGA("Headphone Right", DA9055_HP_R_CTRL, 7, 0, NULL, 0),
852 {"Mic Left Source", "MIC1_P_N", "MIC1"},
853 {"Mic Left Source", "MIC1_P", "MIC1"},
854 {"Mic Left Source", "MIC1_N", "MIC1"},
855 {"Mic Left Source", "MIC2_L", "MIC2"},
857 {"Mic Right Source", "MIC2_R_L", "MIC2"},
858 {"Mic Right Source", "MIC2_R", "MIC2"},
859 {"Mic Right Source", "MIC2_L", "MIC2"},
861 {"Mic Left", NULL, "Mic Left Source"},
862 {"Mic Right", NULL, "Mic Right Source"},
864 {"Aux Left", NULL, "AUXL"},
865 {"Aux Right", NULL, "AUXR"},
867 {"In Mixer Left", "Mic Left Switch", "Mic Left"},
868 {"In Mixer Left", "Mic Right Switch", "Mic Right"},
869 {"In Mixer Left", "Aux Left Switch", "Aux Left"},
871 {"In Mixer Right", "Mic Right Switch", "Mic Right"},
872 {"In Mixer Right", "Mic Left Switch", "Mic Left"},
873 {"In Mixer Right", "Aux Right Switch", "Aux Right"},
874 {"In Mixer Right", "Mixin Left Switch", "MIXIN Left"},
876 {"MIXIN Left", NULL, "In Mixer Left"},
877 {"ADC Left", NULL, "MIXIN Left"},
879 {"MIXIN Right", NULL, "In Mixer Right"},
880 {"ADC Right", NULL, "MIXIN Right"},
882 {"ADC Left", NULL, "AIF"},
883 {"ADC Right", NULL, "AIF"},
886 {"AIFIN Left", NULL, "AIF"},
887 {"AIFIN Right", NULL, "AIF"},
889 {"DAC Left Source", "ADC output left", "ADC Left"},
890 {"DAC Left Source", "ADC output right", "ADC Right"},
891 {"DAC Left Source", "AIF input left", "AIFIN Left"},
892 {"DAC Left Source", "AIF input right", "AIFIN Right"},
894 {"DAC Right Source", "ADC output left", "ADC Left"},
895 {"DAC Right Source", "ADC output right", "ADC Right"},
896 {"DAC Right Source", "AIF input left", "AIFIN Left"},
897 {"DAC Right Source", "AIF input right", "AIFIN Right"},
899 {"DAC Left", NULL, "DAC Left Source"},
900 {"DAC Right", NULL, "DAC Right Source"},
902 {"Out Mixer Left", "Aux Left Switch", "Aux Left"},
903 {"Out Mixer Left", "Mixin Left Switch", "MIXIN Left"},
904 {"Out Mixer Left", "Mixin Right Switch", "MIXIN Right"},
905 {"Out Mixer Left", "Aux Left Invert Switch", "Aux Left"},
906 {"Out Mixer Left", "Mixin Left Invert Switch", "MIXIN Left"},
907 {"Out Mixer Left", "Mixin Right Invert Switch", "MIXIN Right"},
908 {"Out Mixer Left", "DAC Left Switch", "DAC Left"},
910 {"Out Mixer Right", "Aux Right Switch", "Aux Right"},
911 {"Out Mixer Right", "Mixin Right Switch", "MIXIN Right"},
912 {"Out Mixer Right", "Mixin Left Switch", "MIXIN Left"},
913 {"Out Mixer Right", "Aux Right Invert Switch", "Aux Right"},
914 {"Out Mixer Right", "Mixin Right Invert Switch", "MIXIN Right"},
915 {"Out Mixer Right", "Mixin Left Invert Switch", "MIXIN Left"},
916 {"Out Mixer Right", "DAC Right Switch", "DAC Right"},
918 {"MIXOUT Left", NULL, "Out Mixer Left"},
919 {"Headphone Left Enable", "Switch", "MIXOUT Left"},
920 {"Headphone Left", NULL, "Headphone Left Enable"},
921 {"Headphone Left", NULL, "Charge Pump"},
922 {"HPL", NULL, "Headphone Left"},
924 {"MIXOUT Right", NULL, "Out Mixer Right"},
925 {"Headphone Right Enable", "Switch", "MIXOUT Right"},
926 {"Headphone Right", NULL, "Headphone Right Enable"},
927 {"Headphone Right", NULL, "Charge Pump"},
928 {"HPR", NULL, "Headphone Right"},
930 {"MIXOUT Right", NULL, "Out Mixer Right"},
931 {"Lineout Enable", "Switch", "MIXOUT Right"},
1051 struct snd_soc_component *component = dai->component; in da9055_hw_params()
1070 return -EINVAL; in da9055_hw_params()
1119 return -EINVAL; in da9055_hw_params()
1122 if (da9055->mclk_rate) { in da9055_hw_params()
1127 * Non-PLL Mode in da9055_hw_params()
1136 if (da9055->mclk_rate && (da9055->mclk_rate != sysclk)) { in da9055_hw_params()
1138 if (!da9055->master) { in da9055_hw_params()
1159 struct snd_soc_component *component = codec_dai->component; in da9055_set_dai_fmt()
1175 return -EINVAL; in da9055_set_dai_fmt()
1180 (da9055->master != mode)) in da9055_set_dai_fmt()
1181 return -EINVAL; in da9055_set_dai_fmt()
1183 da9055->master = mode; in da9055_set_dai_fmt()
1200 return -EINVAL; in da9055_set_dai_fmt()
1216 struct snd_soc_component *component = dai->component; in da9055_mute()
1239 struct snd_soc_component *component = codec_dai->component; in da9055_set_dai_sysclk()
1254 da9055->mclk_rate = freq; in da9055_set_dai_sysclk()
1257 dev_err(codec_dai->dev, "Unsupported MCLK value %d\n", in da9055_set_dai_sysclk()
1259 return -EINVAL; in da9055_set_dai_sysclk()
1263 dev_err(codec_dai->dev, "Unknown clock source %d\n", clk_id); in da9055_set_dai_sysclk()
1264 return -EINVAL; in da9055_set_dai_sysclk()
1282 struct snd_soc_component *component = codec_dai->component; in da9055_set_dai_pll()
1291 if (!da9055->master && (fout != 2822400)) in da9055_set_dai_pll()
1298 (da9055->master == da9055_pll_div[cnt].mode) && in da9055_set_dai_pll()
1317 dev_err(codec_dai->dev, "Error in setting up PLL\n"); in da9055_set_dai_pll()
1318 return -EINVAL; in da9055_set_dai_pll()
1332 .name = "da9055-hifi",
1426 if (da9055->pdata) { in da9055_probe()
1428 if (da9055->pdata->micbias_source) { in da9055_probe()
1437 switch (da9055->pdata->micbias) { in da9055_probe()
1444 (da9055->pdata->micbias) << 4); in da9055_probe()
1478 struct da9055_platform_data *pdata = dev_get_platdata(&i2c->dev); in da9055_i2c_probe()
1481 da9055 = devm_kzalloc(&i2c->dev, sizeof(struct da9055_priv), in da9055_i2c_probe()
1484 return -ENOMEM; in da9055_i2c_probe()
1487 da9055->pdata = pdata; in da9055_i2c_probe()
1491 da9055->regmap = devm_regmap_init_i2c(i2c, &da9055_regmap_config); in da9055_i2c_probe()
1492 if (IS_ERR(da9055->regmap)) { in da9055_i2c_probe()
1493 ret = PTR_ERR(da9055->regmap); in da9055_i2c_probe()
1494 dev_err(&i2c->dev, "regmap_init() failed: %d\n", ret); in da9055_i2c_probe()
1498 ret = devm_snd_soc_register_component(&i2c->dev, in da9055_i2c_probe()
1501 dev_err(&i2c->dev, "Failed to register da9055 component: %d\n", in da9055_i2c_probe()
1515 { "da9055-codec", 0 },
1522 { .compatible = "dlg,da9055-codec", },
1531 .name = "da9055-codec",