diff options
| -rw-r--r-- | sound/soc/codecs/tlv320aic3x.c | 126 |
1 files changed, 83 insertions, 43 deletions
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index 546d16b7d38f..470fbfb4b386 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c | |||
| @@ -350,16 +350,6 @@ static const struct snd_kcontrol_new aic3x_snd_controls[] = { | |||
| 350 | DACL1_2_LLOPM_VOL, DACR1_2_RLOPM_VOL, | 350 | DACL1_2_LLOPM_VOL, DACR1_2_RLOPM_VOL, |
| 351 | 0, 118, 1, output_stage_tlv), | 351 | 0, 118, 1, output_stage_tlv), |
| 352 | 352 | ||
| 353 | SOC_DOUBLE_R_TLV("Mono Line2 Bypass Volume", | ||
| 354 | LINE2L_2_MONOLOPM_VOL, LINE2R_2_MONOLOPM_VOL, | ||
| 355 | 0, 118, 1, output_stage_tlv), | ||
| 356 | SOC_DOUBLE_R_TLV("Mono PGA Bypass Volume", | ||
| 357 | PGAL_2_MONOLOPM_VOL, PGAR_2_MONOLOPM_VOL, | ||
| 358 | 0, 118, 1, output_stage_tlv), | ||
| 359 | SOC_DOUBLE_R_TLV("Mono DAC Playback Volume", | ||
| 360 | DACL1_2_MONOLOPM_VOL, DACR1_2_MONOLOPM_VOL, | ||
| 361 | 0, 118, 1, output_stage_tlv), | ||
| 362 | |||
| 363 | SOC_DOUBLE_R_TLV("HP Line2 Bypass Volume", | 353 | SOC_DOUBLE_R_TLV("HP Line2 Bypass Volume", |
| 364 | LINE2L_2_HPLOUT_VOL, LINE2R_2_HPROUT_VOL, | 354 | LINE2L_2_HPLOUT_VOL, LINE2R_2_HPROUT_VOL, |
| 365 | 0, 118, 1, output_stage_tlv), | 355 | 0, 118, 1, output_stage_tlv), |
| @@ -383,7 +373,6 @@ static const struct snd_kcontrol_new aic3x_snd_controls[] = { | |||
| 383 | /* Output pin mute controls */ | 373 | /* Output pin mute controls */ |
| 384 | SOC_DOUBLE_R("Line Playback Switch", LLOPM_CTRL, RLOPM_CTRL, 3, | 374 | SOC_DOUBLE_R("Line Playback Switch", LLOPM_CTRL, RLOPM_CTRL, 3, |
| 385 | 0x01, 0), | 375 | 0x01, 0), |
| 386 | SOC_SINGLE("Mono Playback Switch", MONOLOPM_CTRL, 3, 0x01, 0), | ||
| 387 | SOC_DOUBLE_R("HP Playback Switch", HPLOUT_CTRL, HPROUT_CTRL, 3, | 376 | SOC_DOUBLE_R("HP Playback Switch", HPLOUT_CTRL, HPROUT_CTRL, 3, |
| 388 | 0x01, 0), | 377 | 0x01, 0), |
| 389 | SOC_DOUBLE_R("HPCOM Playback Switch", HPLCOM_CTRL, HPRCOM_CTRL, 3, | 378 | SOC_DOUBLE_R("HPCOM Playback Switch", HPLCOM_CTRL, HPRCOM_CTRL, 3, |
| @@ -412,6 +401,20 @@ static const struct snd_kcontrol_new aic3x_snd_controls[] = { | |||
| 412 | SOC_ENUM("ADC HPF Cut-off", aic3x_enum[ADC_HPF_ENUM]), | 401 | SOC_ENUM("ADC HPF Cut-off", aic3x_enum[ADC_HPF_ENUM]), |
| 413 | }; | 402 | }; |
| 414 | 403 | ||
| 404 | static const struct snd_kcontrol_new aic3x_mono_controls[] = { | ||
| 405 | SOC_DOUBLE_R_TLV("Mono Line2 Bypass Volume", | ||
| 406 | LINE2L_2_MONOLOPM_VOL, LINE2R_2_MONOLOPM_VOL, | ||
| 407 | 0, 118, 1, output_stage_tlv), | ||
| 408 | SOC_DOUBLE_R_TLV("Mono PGA Bypass Volume", | ||
| 409 | PGAL_2_MONOLOPM_VOL, PGAR_2_MONOLOPM_VOL, | ||
| 410 | 0, 118, 1, output_stage_tlv), | ||
| 411 | SOC_DOUBLE_R_TLV("Mono DAC Playback Volume", | ||
| 412 | DACL1_2_MONOLOPM_VOL, DACR1_2_MONOLOPM_VOL, | ||
| 413 | 0, 118, 1, output_stage_tlv), | ||
| 414 | |||
| 415 | SOC_SINGLE("Mono Playback Switch", MONOLOPM_CTRL, 3, 0x01, 0), | ||
| 416 | }; | ||
| 417 | |||
| 415 | /* | 418 | /* |
| 416 | * Class-D amplifier gain. From 0 to 18 dB in 6 dB steps | 419 | * Class-D amplifier gain. From 0 to 18 dB in 6 dB steps |
| 417 | */ | 420 | */ |
| @@ -565,9 +568,6 @@ static const struct snd_soc_dapm_widget aic3x_dapm_widgets[] = { | |||
| 565 | SND_SOC_DAPM_PGA("Right HP Out", HPROUT_CTRL, 0, 0, NULL, 0), | 568 | SND_SOC_DAPM_PGA("Right HP Out", HPROUT_CTRL, 0, 0, NULL, 0), |
| 566 | SND_SOC_DAPM_PGA("Right HP Com", HPRCOM_CTRL, 0, 0, NULL, 0), | 569 | SND_SOC_DAPM_PGA("Right HP Com", HPRCOM_CTRL, 0, 0, NULL, 0), |
| 567 | 570 | ||
| 568 | /* Mono Output */ | ||
| 569 | SND_SOC_DAPM_PGA("Mono Out", MONOLOPM_CTRL, 0, 0, NULL, 0), | ||
| 570 | |||
| 571 | /* Inputs to Left ADC */ | 571 | /* Inputs to Left ADC */ |
| 572 | SND_SOC_DAPM_ADC("Left ADC", "Left Capture", LINE1L_2_LADC_CTRL, 2, 0), | 572 | SND_SOC_DAPM_ADC("Left ADC", "Left Capture", LINE1L_2_LADC_CTRL, 2, 0), |
| 573 | SND_SOC_DAPM_MIXER("Left PGA Mixer", SND_SOC_NOPM, 0, 0, | 573 | SND_SOC_DAPM_MIXER("Left PGA Mixer", SND_SOC_NOPM, 0, 0, |
| @@ -626,9 +626,6 @@ static const struct snd_soc_dapm_widget aic3x_dapm_widgets[] = { | |||
| 626 | SND_SOC_DAPM_MIXER("Right Line Mixer", SND_SOC_NOPM, 0, 0, | 626 | SND_SOC_DAPM_MIXER("Right Line Mixer", SND_SOC_NOPM, 0, 0, |
| 627 | &aic3x_right_line_mixer_controls[0], | 627 | &aic3x_right_line_mixer_controls[0], |
| 628 | ARRAY_SIZE(aic3x_right_line_mixer_controls)), | 628 | ARRAY_SIZE(aic3x_right_line_mixer_controls)), |
| 629 | SND_SOC_DAPM_MIXER("Mono Mixer", SND_SOC_NOPM, 0, 0, | ||
| 630 | &aic3x_mono_mixer_controls[0], | ||
| 631 | ARRAY_SIZE(aic3x_mono_mixer_controls)), | ||
| 632 | SND_SOC_DAPM_MIXER("Left HP Mixer", SND_SOC_NOPM, 0, 0, | 629 | SND_SOC_DAPM_MIXER("Left HP Mixer", SND_SOC_NOPM, 0, 0, |
| 633 | &aic3x_left_hp_mixer_controls[0], | 630 | &aic3x_left_hp_mixer_controls[0], |
| 634 | ARRAY_SIZE(aic3x_left_hp_mixer_controls)), | 631 | ARRAY_SIZE(aic3x_left_hp_mixer_controls)), |
| @@ -644,7 +641,6 @@ static const struct snd_soc_dapm_widget aic3x_dapm_widgets[] = { | |||
| 644 | 641 | ||
| 645 | SND_SOC_DAPM_OUTPUT("LLOUT"), | 642 | SND_SOC_DAPM_OUTPUT("LLOUT"), |
| 646 | SND_SOC_DAPM_OUTPUT("RLOUT"), | 643 | SND_SOC_DAPM_OUTPUT("RLOUT"), |
| 647 | SND_SOC_DAPM_OUTPUT("MONO_LOUT"), | ||
| 648 | SND_SOC_DAPM_OUTPUT("HPLOUT"), | 644 | SND_SOC_DAPM_OUTPUT("HPLOUT"), |
| 649 | SND_SOC_DAPM_OUTPUT("HPROUT"), | 645 | SND_SOC_DAPM_OUTPUT("HPROUT"), |
| 650 | SND_SOC_DAPM_OUTPUT("HPLCOM"), | 646 | SND_SOC_DAPM_OUTPUT("HPLCOM"), |
| @@ -666,6 +662,17 @@ static const struct snd_soc_dapm_widget aic3x_dapm_widgets[] = { | |||
| 666 | SND_SOC_DAPM_OUTPUT("Detection"), | 662 | SND_SOC_DAPM_OUTPUT("Detection"), |
| 667 | }; | 663 | }; |
| 668 | 664 | ||
| 665 | static const struct snd_soc_dapm_widget aic3x_dapm_mono_widgets[] = { | ||
| 666 | /* Mono Output */ | ||
| 667 | SND_SOC_DAPM_PGA("Mono Out", MONOLOPM_CTRL, 0, 0, NULL, 0), | ||
| 668 | |||
| 669 | SND_SOC_DAPM_MIXER("Mono Mixer", SND_SOC_NOPM, 0, 0, | ||
| 670 | &aic3x_mono_mixer_controls[0], | ||
| 671 | ARRAY_SIZE(aic3x_mono_mixer_controls)), | ||
| 672 | |||
| 673 | SND_SOC_DAPM_OUTPUT("MONO_LOUT"), | ||
| 674 | }; | ||
| 675 | |||
| 669 | static const struct snd_soc_dapm_widget aic3007_dapm_widgets[] = { | 676 | static const struct snd_soc_dapm_widget aic3007_dapm_widgets[] = { |
| 670 | /* Class-D outputs */ | 677 | /* Class-D outputs */ |
| 671 | SND_SOC_DAPM_PGA("Left Class-D Out", CLASSD_CTRL, 3, 0, NULL, 0), | 678 | SND_SOC_DAPM_PGA("Left Class-D Out", CLASSD_CTRL, 3, 0, NULL, 0), |
| @@ -754,17 +761,6 @@ static const struct snd_soc_dapm_route intercon[] = { | |||
| 754 | {"Right Line Out", NULL, "Right DAC Mux"}, | 761 | {"Right Line Out", NULL, "Right DAC Mux"}, |
| 755 | {"RLOUT", NULL, "Right Line Out"}, | 762 | {"RLOUT", NULL, "Right Line Out"}, |
| 756 | 763 | ||
| 757 | /* Mono Output */ | ||
| 758 | {"Mono Mixer", "Line2L Bypass Switch", "Left Line2L Mux"}, | ||
| 759 | {"Mono Mixer", "PGAL Bypass Switch", "Left PGA Mixer"}, | ||
| 760 | {"Mono Mixer", "DACL1 Switch", "Left DAC Mux"}, | ||
| 761 | {"Mono Mixer", "Line2R Bypass Switch", "Right Line2R Mux"}, | ||
| 762 | {"Mono Mixer", "PGAR Bypass Switch", "Right PGA Mixer"}, | ||
| 763 | {"Mono Mixer", "DACR1 Switch", "Right DAC Mux"}, | ||
| 764 | |||
| 765 | {"Mono Out", NULL, "Mono Mixer"}, | ||
| 766 | {"MONO_LOUT", NULL, "Mono Out"}, | ||
| 767 | |||
| 768 | /* Left HP Output */ | 764 | /* Left HP Output */ |
| 769 | {"Left HP Mixer", "Line2L Bypass Switch", "Left Line2L Mux"}, | 765 | {"Left HP Mixer", "Line2L Bypass Switch", "Left Line2L Mux"}, |
| 770 | {"Left HP Mixer", "PGAL Bypass Switch", "Left PGA Mixer"}, | 766 | {"Left HP Mixer", "PGAL Bypass Switch", "Left PGA Mixer"}, |
| @@ -820,6 +816,18 @@ static const struct snd_soc_dapm_route intercon[] = { | |||
| 820 | {"HPRCOM", NULL, "Right HP Com"}, | 816 | {"HPRCOM", NULL, "Right HP Com"}, |
| 821 | }; | 817 | }; |
| 822 | 818 | ||
| 819 | static const struct snd_soc_dapm_route intercon_mono[] = { | ||
| 820 | /* Mono Output */ | ||
| 821 | {"Mono Mixer", "Line2L Bypass Switch", "Left Line2L Mux"}, | ||
| 822 | {"Mono Mixer", "PGAL Bypass Switch", "Left PGA Mixer"}, | ||
| 823 | {"Mono Mixer", "DACL1 Switch", "Left DAC Mux"}, | ||
| 824 | {"Mono Mixer", "Line2R Bypass Switch", "Right Line2R Mux"}, | ||
| 825 | {"Mono Mixer", "PGAR Bypass Switch", "Right PGA Mixer"}, | ||
| 826 | {"Mono Mixer", "DACR1 Switch", "Right DAC Mux"}, | ||
| 827 | {"Mono Out", NULL, "Mono Mixer"}, | ||
| 828 | {"MONO_LOUT", NULL, "Mono Out"}, | ||
| 829 | }; | ||
| 830 | |||
| 823 | static const struct snd_soc_dapm_route intercon_3007[] = { | 831 | static const struct snd_soc_dapm_route intercon_3007[] = { |
| 824 | /* Class-D outputs */ | 832 | /* Class-D outputs */ |
| 825 | {"Left Class-D Out", NULL, "Left Line Out"}, | 833 | {"Left Class-D Out", NULL, "Left Line Out"}, |
| @@ -833,11 +841,20 @@ static int aic3x_add_widgets(struct snd_soc_codec *codec) | |||
| 833 | struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); | 841 | struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); |
| 834 | struct snd_soc_dapm_context *dapm = &codec->dapm; | 842 | struct snd_soc_dapm_context *dapm = &codec->dapm; |
| 835 | 843 | ||
| 836 | if (aic3x->model == AIC3X_MODEL_3007) { | 844 | switch (aic3x->model) { |
| 845 | case AIC3X_MODEL_3X: | ||
| 846 | case AIC3X_MODEL_33: | ||
| 847 | snd_soc_dapm_new_controls(dapm, aic3x_dapm_mono_widgets, | ||
| 848 | ARRAY_SIZE(aic3x_dapm_mono_widgets)); | ||
| 849 | snd_soc_dapm_add_routes(dapm, intercon_mono, | ||
| 850 | ARRAY_SIZE(intercon_mono)); | ||
| 851 | break; | ||
| 852 | case AIC3X_MODEL_3007: | ||
| 837 | snd_soc_dapm_new_controls(dapm, aic3007_dapm_widgets, | 853 | snd_soc_dapm_new_controls(dapm, aic3007_dapm_widgets, |
| 838 | ARRAY_SIZE(aic3007_dapm_widgets)); | 854 | ARRAY_SIZE(aic3007_dapm_widgets)); |
| 839 | snd_soc_dapm_add_routes(dapm, intercon_3007, | 855 | snd_soc_dapm_add_routes(dapm, intercon_3007, |
| 840 | ARRAY_SIZE(intercon_3007)); | 856 | ARRAY_SIZE(intercon_3007)); |
| 857 | break; | ||
| 841 | } | 858 | } |
| 842 | 859 | ||
| 843 | return 0; | 860 | return 0; |
| @@ -1218,6 +1235,24 @@ static int aic3x_resume(struct snd_soc_codec *codec) | |||
| 1218 | return 0; | 1235 | return 0; |
| 1219 | } | 1236 | } |
| 1220 | 1237 | ||
| 1238 | static void aic3x_mono_init(struct snd_soc_codec *codec) | ||
| 1239 | { | ||
| 1240 | /* DAC to Mono Line Out default volume and route to Output mixer */ | ||
| 1241 | snd_soc_write(codec, DACL1_2_MONOLOPM_VOL, DEFAULT_VOL | ROUTE_ON); | ||
| 1242 | snd_soc_write(codec, DACR1_2_MONOLOPM_VOL, DEFAULT_VOL | ROUTE_ON); | ||
| 1243 | |||
| 1244 | /* unmute all outputs */ | ||
| 1245 | snd_soc_update_bits(codec, MONOLOPM_CTRL, UNMUTE, UNMUTE); | ||
| 1246 | |||
| 1247 | /* PGA to Mono Line Out default volume, disconnect from Output Mixer */ | ||
| 1248 | snd_soc_write(codec, PGAL_2_MONOLOPM_VOL, DEFAULT_VOL); | ||
| 1249 | snd_soc_write(codec, PGAR_2_MONOLOPM_VOL, DEFAULT_VOL); | ||
| 1250 | |||
| 1251 | /* Line2 to Mono Out default volume, disconnect from Output Mixer */ | ||
| 1252 | snd_soc_write(codec, LINE2L_2_MONOLOPM_VOL, DEFAULT_VOL); | ||
| 1253 | snd_soc_write(codec, LINE2R_2_MONOLOPM_VOL, DEFAULT_VOL); | ||
| 1254 | } | ||
| 1255 | |||
| 1221 | /* | 1256 | /* |
| 1222 | * initialise the AIC3X driver | 1257 | * initialise the AIC3X driver |
| 1223 | * register the mixer and dsp interfaces with the kernel | 1258 | * register the mixer and dsp interfaces with the kernel |
| @@ -1241,14 +1276,10 @@ static int aic3x_init(struct snd_soc_codec *codec) | |||
| 1241 | /* DAC to Line Out default volume and route to Output mixer */ | 1276 | /* DAC to Line Out default volume and route to Output mixer */ |
| 1242 | snd_soc_write(codec, DACL1_2_LLOPM_VOL, DEFAULT_VOL | ROUTE_ON); | 1277 | snd_soc_write(codec, DACL1_2_LLOPM_VOL, DEFAULT_VOL | ROUTE_ON); |
| 1243 | snd_soc_write(codec, DACR1_2_RLOPM_VOL, DEFAULT_VOL | ROUTE_ON); | 1278 | snd_soc_write(codec, DACR1_2_RLOPM_VOL, DEFAULT_VOL | ROUTE_ON); |
| 1244 | /* DAC to Mono Line Out default volume and route to Output mixer */ | ||
| 1245 | snd_soc_write(codec, DACL1_2_MONOLOPM_VOL, DEFAULT_VOL | ROUTE_ON); | ||
| 1246 | snd_soc_write(codec, DACR1_2_MONOLOPM_VOL, DEFAULT_VOL | ROUTE_ON); | ||
| 1247 | 1279 | ||
| 1248 | /* unmute all outputs */ | 1280 | /* unmute all outputs */ |
| 1249 | snd_soc_update_bits(codec, LLOPM_CTRL, UNMUTE, UNMUTE); | 1281 | snd_soc_update_bits(codec, LLOPM_CTRL, UNMUTE, UNMUTE); |
| 1250 | snd_soc_update_bits(codec, RLOPM_CTRL, UNMUTE, UNMUTE); | 1282 | snd_soc_update_bits(codec, RLOPM_CTRL, UNMUTE, UNMUTE); |
| 1251 | snd_soc_update_bits(codec, MONOLOPM_CTRL, UNMUTE, UNMUTE); | ||
| 1252 | snd_soc_update_bits(codec, HPLOUT_CTRL, UNMUTE, UNMUTE); | 1283 | snd_soc_update_bits(codec, HPLOUT_CTRL, UNMUTE, UNMUTE); |
| 1253 | snd_soc_update_bits(codec, HPROUT_CTRL, UNMUTE, UNMUTE); | 1284 | snd_soc_update_bits(codec, HPROUT_CTRL, UNMUTE, UNMUTE); |
| 1254 | snd_soc_update_bits(codec, HPLCOM_CTRL, UNMUTE, UNMUTE); | 1285 | snd_soc_update_bits(codec, HPLCOM_CTRL, UNMUTE, UNMUTE); |
| @@ -1269,9 +1300,6 @@ static int aic3x_init(struct snd_soc_codec *codec) | |||
| 1269 | /* PGA to Line Out default volume, disconnect from Output Mixer */ | 1300 | /* PGA to Line Out default volume, disconnect from Output Mixer */ |
| 1270 | snd_soc_write(codec, PGAL_2_LLOPM_VOL, DEFAULT_VOL); | 1301 | snd_soc_write(codec, PGAL_2_LLOPM_VOL, DEFAULT_VOL); |
| 1271 | snd_soc_write(codec, PGAR_2_RLOPM_VOL, DEFAULT_VOL); | 1302 | snd_soc_write(codec, PGAR_2_RLOPM_VOL, DEFAULT_VOL); |
| 1272 | /* PGA to Mono Line Out default volume, disconnect from Output Mixer */ | ||
| 1273 | snd_soc_write(codec, PGAL_2_MONOLOPM_VOL, DEFAULT_VOL); | ||
| 1274 | snd_soc_write(codec, PGAR_2_MONOLOPM_VOL, DEFAULT_VOL); | ||
| 1275 | 1303 | ||
| 1276 | /* Line2 to HP Bypass default volume, disconnect from Output Mixer */ | 1304 | /* Line2 to HP Bypass default volume, disconnect from Output Mixer */ |
| 1277 | snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL); | 1305 | snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL); |
| @@ -1281,12 +1309,15 @@ static int aic3x_init(struct snd_soc_codec *codec) | |||
| 1281 | /* Line2 Line Out default volume, disconnect from Output Mixer */ | 1309 | /* Line2 Line Out default volume, disconnect from Output Mixer */ |
| 1282 | snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL); | 1310 | snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL); |
| 1283 | snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL); | 1311 | snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL); |
| 1284 | /* Line2 to Mono Out default volume, disconnect from Output Mixer */ | ||
| 1285 | snd_soc_write(codec, LINE2L_2_MONOLOPM_VOL, DEFAULT_VOL); | ||
| 1286 | snd_soc_write(codec, LINE2R_2_MONOLOPM_VOL, DEFAULT_VOL); | ||
| 1287 | 1312 | ||
| 1288 | if (aic3x->model == AIC3X_MODEL_3007) { | 1313 | switch (aic3x->model) { |
| 1314 | case AIC3X_MODEL_3X: | ||
| 1315 | case AIC3X_MODEL_33: | ||
| 1316 | aic3x_mono_init(codec); | ||
| 1317 | break; | ||
| 1318 | case AIC3X_MODEL_3007: | ||
| 1289 | snd_soc_write(codec, CLASSD_CTRL, 0); | 1319 | snd_soc_write(codec, CLASSD_CTRL, 0); |
| 1320 | break; | ||
| 1290 | } | 1321 | } |
| 1291 | 1322 | ||
| 1292 | return 0; | 1323 | return 0; |
| @@ -1343,8 +1374,17 @@ static int aic3x_probe(struct snd_soc_codec *codec) | |||
| 1343 | (aic3x->setup->gpio_func[1] & 0xf) << 4); | 1374 | (aic3x->setup->gpio_func[1] & 0xf) << 4); |
| 1344 | } | 1375 | } |
| 1345 | 1376 | ||
| 1346 | if (aic3x->model == AIC3X_MODEL_3007) | 1377 | switch (aic3x->model) { |
| 1347 | snd_soc_add_codec_controls(codec, &aic3x_classd_amp_gain_ctrl, 1); | 1378 | case AIC3X_MODEL_3X: |
| 1379 | case AIC3X_MODEL_33: | ||
| 1380 | snd_soc_add_codec_controls(codec, aic3x_mono_controls, | ||
| 1381 | ARRAY_SIZE(aic3x_mono_controls)); | ||
| 1382 | break; | ||
| 1383 | case AIC3X_MODEL_3007: | ||
| 1384 | snd_soc_add_codec_controls(codec, | ||
| 1385 | &aic3x_classd_amp_gain_ctrl, 1); | ||
| 1386 | break; | ||
| 1387 | } | ||
| 1348 | 1388 | ||
| 1349 | /* set mic bias voltage */ | 1389 | /* set mic bias voltage */ |
| 1350 | switch (aic3x->micbias_vg) { | 1390 | switch (aic3x->micbias_vg) { |
