diff options
author | Joonyoung Shim <jy0922.shim@samsung.com> | 2009-04-22 00:13:34 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-04-23 05:15:08 -0400 |
commit | 1a787e7ad242312af0afb2156596d42ee5e0c6bc (patch) | |
tree | 251fca85f426f995504e92ab25719ae4e0043ff5 /sound/soc/codecs/twl4030.c | |
parent | 291ce18ceb84aca79368369885eec2d329ae16c5 (diff) |
ASoC: TWL4030: Add VDL path support
Add DAPMs for VDL(Voice Down Link) path. To support VDL path, we have
to change DAPMs of outputs(Earpiece, PreDrive Left/Right, Headset
Left/Right, Carkit Left/Right) from mux to mixer.
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/codecs/twl4030.c')
-rw-r--r-- | sound/soc/codecs/twl4030.c | 256 |
1 files changed, 126 insertions, 130 deletions
diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c index cc2968cf6409..fdf88dfbcff9 100644 --- a/sound/soc/codecs/twl4030.c +++ b/sound/soc/codecs/twl4030.c | |||
@@ -321,104 +321,60 @@ static void twl4030_power_down(struct snd_soc_codec *codec) | |||
321 | } | 321 | } |
322 | 322 | ||
323 | /* Earpiece */ | 323 | /* Earpiece */ |
324 | static const char *twl4030_earpiece_texts[] = | 324 | static const struct snd_kcontrol_new twl4030_dapm_earpiece_controls[] = { |
325 | {"Off", "DACL1", "DACL2", "DACR1"}; | 325 | SOC_DAPM_SINGLE("Voice", TWL4030_REG_EAR_CTL, 0, 1, 0), |
326 | 326 | SOC_DAPM_SINGLE("AudioL1", TWL4030_REG_EAR_CTL, 1, 1, 0), | |
327 | static const unsigned int twl4030_earpiece_values[] = | 327 | SOC_DAPM_SINGLE("AudioL2", TWL4030_REG_EAR_CTL, 2, 1, 0), |
328 | {0x0, 0x1, 0x2, 0x4}; | 328 | SOC_DAPM_SINGLE("AudioR1", TWL4030_REG_EAR_CTL, 3, 1, 0), |
329 | 329 | }; | |
330 | static const struct soc_enum twl4030_earpiece_enum = | ||
331 | SOC_VALUE_ENUM_SINGLE(TWL4030_REG_EAR_CTL, 1, 0x7, | ||
332 | ARRAY_SIZE(twl4030_earpiece_texts), | ||
333 | twl4030_earpiece_texts, | ||
334 | twl4030_earpiece_values); | ||
335 | |||
336 | static const struct snd_kcontrol_new twl4030_dapm_earpiece_control = | ||
337 | SOC_DAPM_VALUE_ENUM("Route", twl4030_earpiece_enum); | ||
338 | 330 | ||
339 | /* PreDrive Left */ | 331 | /* PreDrive Left */ |
340 | static const char *twl4030_predrivel_texts[] = | 332 | static const struct snd_kcontrol_new twl4030_dapm_predrivel_controls[] = { |
341 | {"Off", "DACL1", "DACL2", "DACR2"}; | 333 | SOC_DAPM_SINGLE("Voice", TWL4030_REG_PREDL_CTL, 0, 1, 0), |
342 | 334 | SOC_DAPM_SINGLE("AudioL1", TWL4030_REG_PREDL_CTL, 1, 1, 0), | |
343 | static const unsigned int twl4030_predrivel_values[] = | 335 | SOC_DAPM_SINGLE("AudioL2", TWL4030_REG_PREDL_CTL, 2, 1, 0), |
344 | {0x0, 0x1, 0x2, 0x4}; | 336 | SOC_DAPM_SINGLE("AudioR2", TWL4030_REG_PREDL_CTL, 3, 1, 0), |
345 | 337 | }; | |
346 | static const struct soc_enum twl4030_predrivel_enum = | ||
347 | SOC_VALUE_ENUM_SINGLE(TWL4030_REG_PREDL_CTL, 1, 0x7, | ||
348 | ARRAY_SIZE(twl4030_predrivel_texts), | ||
349 | twl4030_predrivel_texts, | ||
350 | twl4030_predrivel_values); | ||
351 | |||
352 | static const struct snd_kcontrol_new twl4030_dapm_predrivel_control = | ||
353 | SOC_DAPM_VALUE_ENUM("Route", twl4030_predrivel_enum); | ||
354 | 338 | ||
355 | /* PreDrive Right */ | 339 | /* PreDrive Right */ |
356 | static const char *twl4030_predriver_texts[] = | 340 | static const struct snd_kcontrol_new twl4030_dapm_predriver_controls[] = { |
357 | {"Off", "DACR1", "DACR2", "DACL2"}; | 341 | SOC_DAPM_SINGLE("Voice", TWL4030_REG_PREDR_CTL, 0, 1, 0), |
358 | 342 | SOC_DAPM_SINGLE("AudioR1", TWL4030_REG_PREDR_CTL, 1, 1, 0), | |
359 | static const unsigned int twl4030_predriver_values[] = | 343 | SOC_DAPM_SINGLE("AudioR2", TWL4030_REG_PREDR_CTL, 2, 1, 0), |
360 | {0x0, 0x1, 0x2, 0x4}; | 344 | SOC_DAPM_SINGLE("AudioL2", TWL4030_REG_PREDR_CTL, 3, 1, 0), |
361 | 345 | }; | |
362 | static const struct soc_enum twl4030_predriver_enum = | ||
363 | SOC_VALUE_ENUM_SINGLE(TWL4030_REG_PREDR_CTL, 1, 0x7, | ||
364 | ARRAY_SIZE(twl4030_predriver_texts), | ||
365 | twl4030_predriver_texts, | ||
366 | twl4030_predriver_values); | ||
367 | |||
368 | static const struct snd_kcontrol_new twl4030_dapm_predriver_control = | ||
369 | SOC_DAPM_VALUE_ENUM("Route", twl4030_predriver_enum); | ||
370 | 346 | ||
371 | /* Headset Left */ | 347 | /* Headset Left */ |
372 | static const char *twl4030_hsol_texts[] = | 348 | static const struct snd_kcontrol_new twl4030_dapm_hsol_controls[] = { |
373 | {"Off", "DACL1", "DACL2"}; | 349 | SOC_DAPM_SINGLE("Voice", TWL4030_REG_HS_SEL, 0, 1, 0), |
374 | 350 | SOC_DAPM_SINGLE("AudioL1", TWL4030_REG_HS_SEL, 1, 1, 0), | |
375 | static const struct soc_enum twl4030_hsol_enum = | 351 | SOC_DAPM_SINGLE("AudioL2", TWL4030_REG_HS_SEL, 2, 1, 0), |
376 | SOC_ENUM_SINGLE(TWL4030_REG_HS_SEL, 1, | 352 | }; |
377 | ARRAY_SIZE(twl4030_hsol_texts), | ||
378 | twl4030_hsol_texts); | ||
379 | |||
380 | static const struct snd_kcontrol_new twl4030_dapm_hsol_control = | ||
381 | SOC_DAPM_ENUM("Route", twl4030_hsol_enum); | ||
382 | 353 | ||
383 | /* Headset Right */ | 354 | /* Headset Right */ |
384 | static const char *twl4030_hsor_texts[] = | 355 | static const struct snd_kcontrol_new twl4030_dapm_hsor_controls[] = { |
385 | {"Off", "DACR1", "DACR2"}; | 356 | SOC_DAPM_SINGLE("Voice", TWL4030_REG_HS_SEL, 3, 1, 0), |
386 | 357 | SOC_DAPM_SINGLE("AudioR1", TWL4030_REG_HS_SEL, 4, 1, 0), | |
387 | static const struct soc_enum twl4030_hsor_enum = | 358 | SOC_DAPM_SINGLE("AudioR2", TWL4030_REG_HS_SEL, 5, 1, 0), |
388 | SOC_ENUM_SINGLE(TWL4030_REG_HS_SEL, 4, | 359 | }; |
389 | ARRAY_SIZE(twl4030_hsor_texts), | ||
390 | twl4030_hsor_texts); | ||
391 | |||
392 | static const struct snd_kcontrol_new twl4030_dapm_hsor_control = | ||
393 | SOC_DAPM_ENUM("Route", twl4030_hsor_enum); | ||
394 | 360 | ||
395 | /* Carkit Left */ | 361 | /* Carkit Left */ |
396 | static const char *twl4030_carkitl_texts[] = | 362 | static const struct snd_kcontrol_new twl4030_dapm_carkitl_controls[] = { |
397 | {"Off", "DACL1", "DACL2"}; | 363 | SOC_DAPM_SINGLE("Voice", TWL4030_REG_PRECKL_CTL, 0, 1, 0), |
398 | 364 | SOC_DAPM_SINGLE("AudioL1", TWL4030_REG_PRECKL_CTL, 1, 1, 0), | |
399 | static const struct soc_enum twl4030_carkitl_enum = | 365 | SOC_DAPM_SINGLE("AudioL2", TWL4030_REG_PRECKL_CTL, 2, 1, 0), |
400 | SOC_ENUM_SINGLE(TWL4030_REG_PRECKL_CTL, 1, | 366 | }; |
401 | ARRAY_SIZE(twl4030_carkitl_texts), | ||
402 | twl4030_carkitl_texts); | ||
403 | |||
404 | static const struct snd_kcontrol_new twl4030_dapm_carkitl_control = | ||
405 | SOC_DAPM_ENUM("Route", twl4030_carkitl_enum); | ||
406 | 367 | ||
407 | /* Carkit Right */ | 368 | /* Carkit Right */ |
408 | static const char *twl4030_carkitr_texts[] = | 369 | static const struct snd_kcontrol_new twl4030_dapm_carkitr_controls[] = { |
409 | {"Off", "DACR1", "DACR2"}; | 370 | SOC_DAPM_SINGLE("Voice", TWL4030_REG_PRECKR_CTL, 0, 1, 0), |
410 | 371 | SOC_DAPM_SINGLE("AudioR1", TWL4030_REG_PRECKR_CTL, 1, 1, 0), | |
411 | static const struct soc_enum twl4030_carkitr_enum = | 372 | SOC_DAPM_SINGLE("AudioR2", TWL4030_REG_PRECKR_CTL, 2, 1, 0), |
412 | SOC_ENUM_SINGLE(TWL4030_REG_PRECKR_CTL, 1, | 373 | }; |
413 | ARRAY_SIZE(twl4030_carkitr_texts), | ||
414 | twl4030_carkitr_texts); | ||
415 | |||
416 | static const struct snd_kcontrol_new twl4030_dapm_carkitr_control = | ||
417 | SOC_DAPM_ENUM("Route", twl4030_carkitr_enum); | ||
418 | 374 | ||
419 | /* Handsfree Left */ | 375 | /* Handsfree Left */ |
420 | static const char *twl4030_handsfreel_texts[] = | 376 | static const char *twl4030_handsfreel_texts[] = |
421 | {"Voice", "DACL1", "DACL2", "DACR2"}; | 377 | {"Voice", "AudioL1", "AudioL2", "AudioR2"}; |
422 | 378 | ||
423 | static const struct soc_enum twl4030_handsfreel_enum = | 379 | static const struct soc_enum twl4030_handsfreel_enum = |
424 | SOC_ENUM_SINGLE(TWL4030_REG_HFL_CTL, 0, | 380 | SOC_ENUM_SINGLE(TWL4030_REG_HFL_CTL, 0, |
@@ -430,7 +386,7 @@ SOC_DAPM_ENUM("Route", twl4030_handsfreel_enum); | |||
430 | 386 | ||
431 | /* Handsfree Right */ | 387 | /* Handsfree Right */ |
432 | static const char *twl4030_handsfreer_texts[] = | 388 | static const char *twl4030_handsfreer_texts[] = |
433 | {"Voice", "DACR1", "DACR2", "DACL2"}; | 389 | {"Voice", "AudioR1", "AudioR2", "AudioL2"}; |
434 | 390 | ||
435 | static const struct soc_enum twl4030_handsfreer_enum = | 391 | static const struct soc_enum twl4030_handsfreer_enum = |
436 | SOC_ENUM_SINGLE(TWL4030_REG_HFR_CTL, 0, | 392 | SOC_ENUM_SINGLE(TWL4030_REG_HFR_CTL, 0, |
@@ -829,6 +785,12 @@ static DECLARE_TLV_DB_SCALE(digital_fine_tlv, -6300, 100, 1); | |||
829 | static DECLARE_TLV_DB_SCALE(digital_coarse_tlv, 0, 600, 0); | 785 | static DECLARE_TLV_DB_SCALE(digital_coarse_tlv, 0, 600, 0); |
830 | 786 | ||
831 | /* | 787 | /* |
788 | * Voice Downlink GAIN volume control: | ||
789 | * from -37 to 12 dB in 1 dB steps (mute instead of -37 dB) | ||
790 | */ | ||
791 | static DECLARE_TLV_DB_SCALE(digital_voice_downlink_tlv, -3700, 100, 1); | ||
792 | |||
793 | /* | ||
832 | * Analog playback gain | 794 | * Analog playback gain |
833 | * -24 dB to 12 dB in 2 dB steps | 795 | * -24 dB to 12 dB in 2 dB steps |
834 | */ | 796 | */ |
@@ -892,6 +854,16 @@ static const struct snd_kcontrol_new twl4030_snd_controls[] = { | |||
892 | TWL4030_REG_ARXL2_APGA_CTL, TWL4030_REG_ARXR2_APGA_CTL, | 854 | TWL4030_REG_ARXL2_APGA_CTL, TWL4030_REG_ARXR2_APGA_CTL, |
893 | 1, 1, 0), | 855 | 1, 1, 0), |
894 | 856 | ||
857 | /* Common voice downlink gain controls */ | ||
858 | SOC_SINGLE_TLV("DAC Voice Digital Downlink Volume", | ||
859 | TWL4030_REG_VRXPGA, 0, 0x31, 0, digital_voice_downlink_tlv), | ||
860 | |||
861 | SOC_SINGLE_TLV("DAC Voice Analog Downlink Volume", | ||
862 | TWL4030_REG_VDL_APGA_CTL, 3, 0x12, 1, analog_tlv), | ||
863 | |||
864 | SOC_SINGLE("DAC Voice Analog Downlink Switch", | ||
865 | TWL4030_REG_VDL_APGA_CTL, 1, 1, 0), | ||
866 | |||
895 | /* Separate output gain controls */ | 867 | /* Separate output gain controls */ |
896 | SOC_DOUBLE_R_TLV_TWL4030("PreDriv Playback Volume", | 868 | SOC_DOUBLE_R_TLV_TWL4030("PreDriv Playback Volume", |
897 | TWL4030_REG_PREDL_CTL, TWL4030_REG_PREDR_CTL, | 869 | TWL4030_REG_PREDL_CTL, TWL4030_REG_PREDR_CTL, |
@@ -956,6 +928,8 @@ static const struct snd_soc_dapm_widget twl4030_dapm_widgets[] = { | |||
956 | SND_SOC_NOPM, 0, 0), | 928 | SND_SOC_NOPM, 0, 0), |
957 | SND_SOC_DAPM_DAC("DAC Left2", "Left Rear Playback", | 929 | SND_SOC_DAPM_DAC("DAC Left2", "Left Rear Playback", |
958 | SND_SOC_NOPM, 0, 0), | 930 | SND_SOC_NOPM, 0, 0), |
931 | SND_SOC_DAPM_DAC("DAC Voice", "Voice Playback", | ||
932 | TWL4030_REG_AVDAC_CTL, 4, 0), | ||
959 | 933 | ||
960 | /* Analog PGAs */ | 934 | /* Analog PGAs */ |
961 | SND_SOC_DAPM_PGA("ARXR1_APGA", TWL4030_REG_ARXR1_APGA_CTL, | 935 | SND_SOC_DAPM_PGA("ARXR1_APGA", TWL4030_REG_ARXR1_APGA_CTL, |
@@ -966,6 +940,8 @@ static const struct snd_soc_dapm_widget twl4030_dapm_widgets[] = { | |||
966 | 0, 0, NULL, 0), | 940 | 0, 0, NULL, 0), |
967 | SND_SOC_DAPM_PGA("ARXL2_APGA", TWL4030_REG_ARXL2_APGA_CTL, | 941 | SND_SOC_DAPM_PGA("ARXL2_APGA", TWL4030_REG_ARXL2_APGA_CTL, |
968 | 0, 0, NULL, 0), | 942 | 0, 0, NULL, 0), |
943 | SND_SOC_DAPM_PGA("VDL_APGA", TWL4030_REG_VDL_APGA_CTL, | ||
944 | 0, 0, NULL, 0), | ||
969 | 945 | ||
970 | /* Analog bypasses */ | 946 | /* Analog bypasses */ |
971 | SND_SOC_DAPM_SWITCH_E("Right1 Analog Loopback", SND_SOC_NOPM, 0, 0, | 947 | SND_SOC_DAPM_SWITCH_E("Right1 Analog Loopback", SND_SOC_NOPM, 0, 0, |
@@ -998,26 +974,35 @@ static const struct snd_soc_dapm_widget twl4030_dapm_widgets[] = { | |||
998 | SND_SOC_DAPM_MIXER("Analog L2 Playback Mixer", TWL4030_REG_AVDAC_CTL, | 974 | SND_SOC_DAPM_MIXER("Analog L2 Playback Mixer", TWL4030_REG_AVDAC_CTL, |
999 | 3, 0, NULL, 0), | 975 | 3, 0, NULL, 0), |
1000 | 976 | ||
1001 | /* Output MUX controls */ | 977 | /* Output MIXER controls */ |
1002 | /* Earpiece */ | 978 | /* Earpiece */ |
1003 | SND_SOC_DAPM_VALUE_MUX("Earpiece Mux", SND_SOC_NOPM, 0, 0, | 979 | SND_SOC_DAPM_MIXER("Earpiece Mixer", SND_SOC_NOPM, 0, 0, |
1004 | &twl4030_dapm_earpiece_control), | 980 | &twl4030_dapm_earpiece_controls[0], |
981 | ARRAY_SIZE(twl4030_dapm_earpiece_controls)), | ||
1005 | /* PreDrivL/R */ | 982 | /* PreDrivL/R */ |
1006 | SND_SOC_DAPM_VALUE_MUX("PredriveL Mux", SND_SOC_NOPM, 0, 0, | 983 | SND_SOC_DAPM_MIXER("PredriveL Mixer", SND_SOC_NOPM, 0, 0, |
1007 | &twl4030_dapm_predrivel_control), | 984 | &twl4030_dapm_predrivel_controls[0], |
1008 | SND_SOC_DAPM_VALUE_MUX("PredriveR Mux", SND_SOC_NOPM, 0, 0, | 985 | ARRAY_SIZE(twl4030_dapm_predrivel_controls)), |
1009 | &twl4030_dapm_predriver_control), | 986 | SND_SOC_DAPM_MIXER("PredriveR Mixer", SND_SOC_NOPM, 0, 0, |
987 | &twl4030_dapm_predriver_controls[0], | ||
988 | ARRAY_SIZE(twl4030_dapm_predriver_controls)), | ||
1010 | /* HeadsetL/R */ | 989 | /* HeadsetL/R */ |
1011 | SND_SOC_DAPM_MUX_E("HeadsetL Mux", SND_SOC_NOPM, 0, 0, | 990 | SND_SOC_DAPM_MIXER_E("HeadsetL Mixer", SND_SOC_NOPM, 0, 0, |
1012 | &twl4030_dapm_hsol_control, headsetl_event, | 991 | &twl4030_dapm_hsol_controls[0], |
1013 | SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD), | 992 | ARRAY_SIZE(twl4030_dapm_hsol_controls), headsetl_event, |
1014 | SND_SOC_DAPM_MUX("HeadsetR Mux", SND_SOC_NOPM, 0, 0, | 993 | SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD), |
1015 | &twl4030_dapm_hsor_control), | 994 | SND_SOC_DAPM_MIXER("HeadsetR Mixer", SND_SOC_NOPM, 0, 0, |
995 | &twl4030_dapm_hsor_controls[0], | ||
996 | ARRAY_SIZE(twl4030_dapm_hsor_controls)), | ||
1016 | /* CarkitL/R */ | 997 | /* CarkitL/R */ |
1017 | SND_SOC_DAPM_MUX("CarkitL Mux", SND_SOC_NOPM, 0, 0, | 998 | SND_SOC_DAPM_MIXER("CarkitL Mixer", SND_SOC_NOPM, 0, 0, |
1018 | &twl4030_dapm_carkitl_control), | 999 | &twl4030_dapm_carkitl_controls[0], |
1019 | SND_SOC_DAPM_MUX("CarkitR Mux", SND_SOC_NOPM, 0, 0, | 1000 | ARRAY_SIZE(twl4030_dapm_carkitl_controls)), |
1020 | &twl4030_dapm_carkitr_control), | 1001 | SND_SOC_DAPM_MIXER("CarkitR Mixer", SND_SOC_NOPM, 0, 0, |
1002 | &twl4030_dapm_carkitr_controls[0], | ||
1003 | ARRAY_SIZE(twl4030_dapm_carkitr_controls)), | ||
1004 | |||
1005 | /* Output MUX controls */ | ||
1021 | /* HandsfreeL/R */ | 1006 | /* HandsfreeL/R */ |
1022 | SND_SOC_DAPM_MUX_E("HandsfreeL Mux", TWL4030_REG_HFL_CTL, 5, 0, | 1007 | SND_SOC_DAPM_MUX_E("HandsfreeL Mux", TWL4030_REG_HFL_CTL, 5, 0, |
1023 | &twl4030_dapm_handsfreel_control, handsfree_event, | 1008 | &twl4030_dapm_handsfreel_control, handsfree_event, |
@@ -1082,50 +1067,61 @@ static const struct snd_soc_dapm_route intercon[] = { | |||
1082 | {"ARXL2_APGA", NULL, "Analog L2 Playback Mixer"}, | 1067 | {"ARXL2_APGA", NULL, "Analog L2 Playback Mixer"}, |
1083 | {"ARXR2_APGA", NULL, "Analog R2 Playback Mixer"}, | 1068 | {"ARXR2_APGA", NULL, "Analog R2 Playback Mixer"}, |
1084 | 1069 | ||
1070 | {"VDL_APGA", NULL, "DAC Voice"}, | ||
1071 | |||
1085 | /* Internal playback routings */ | 1072 | /* Internal playback routings */ |
1086 | /* Earpiece */ | 1073 | /* Earpiece */ |
1087 | {"Earpiece Mux", "DACL1", "ARXL1_APGA"}, | 1074 | {"Earpiece Mixer", "Voice", "VDL_APGA"}, |
1088 | {"Earpiece Mux", "DACL2", "ARXL2_APGA"}, | 1075 | {"Earpiece Mixer", "AudioL1", "ARXL1_APGA"}, |
1089 | {"Earpiece Mux", "DACR1", "ARXR1_APGA"}, | 1076 | {"Earpiece Mixer", "AudioL2", "ARXL2_APGA"}, |
1077 | {"Earpiece Mixer", "AudioR1", "ARXR1_APGA"}, | ||
1090 | /* PreDrivL */ | 1078 | /* PreDrivL */ |
1091 | {"PredriveL Mux", "DACL1", "ARXL1_APGA"}, | 1079 | {"PredriveL Mixer", "Voice", "VDL_APGA"}, |
1092 | {"PredriveL Mux", "DACL2", "ARXL2_APGA"}, | 1080 | {"PredriveL Mixer", "AudioL1", "ARXL1_APGA"}, |
1093 | {"PredriveL Mux", "DACR2", "ARXR2_APGA"}, | 1081 | {"PredriveL Mixer", "AudioL2", "ARXL2_APGA"}, |
1082 | {"PredriveL Mixer", "AudioR2", "ARXR2_APGA"}, | ||
1094 | /* PreDrivR */ | 1083 | /* PreDrivR */ |
1095 | {"PredriveR Mux", "DACR1", "ARXR1_APGA"}, | 1084 | {"PredriveR Mixer", "Voice", "VDL_APGA"}, |
1096 | {"PredriveR Mux", "DACR2", "ARXR2_APGA"}, | 1085 | {"PredriveR Mixer", "AudioR1", "ARXR1_APGA"}, |
1097 | {"PredriveR Mux", "DACL2", "ARXL2_APGA"}, | 1086 | {"PredriveR Mixer", "AudioR2", "ARXR2_APGA"}, |
1087 | {"PredriveR Mixer", "AudioL2", "ARXL2_APGA"}, | ||
1098 | /* HeadsetL */ | 1088 | /* HeadsetL */ |
1099 | {"HeadsetL Mux", "DACL1", "ARXL1_APGA"}, | 1089 | {"HeadsetL Mixer", "Voice", "VDL_APGA"}, |
1100 | {"HeadsetL Mux", "DACL2", "ARXL2_APGA"}, | 1090 | {"HeadsetL Mixer", "AudioL1", "ARXL1_APGA"}, |
1091 | {"HeadsetL Mixer", "AudioL2", "ARXL2_APGA"}, | ||
1101 | /* HeadsetR */ | 1092 | /* HeadsetR */ |
1102 | {"HeadsetR Mux", "DACR1", "ARXR1_APGA"}, | 1093 | {"HeadsetR Mixer", "Voice", "VDL_APGA"}, |
1103 | {"HeadsetR Mux", "DACR2", "ARXR2_APGA"}, | 1094 | {"HeadsetR Mixer", "AudioR1", "ARXR1_APGA"}, |
1095 | {"HeadsetR Mixer", "AudioR2", "ARXR2_APGA"}, | ||
1104 | /* CarkitL */ | 1096 | /* CarkitL */ |
1105 | {"CarkitL Mux", "DACL1", "ARXL1_APGA"}, | 1097 | {"CarkitL Mixer", "Voice", "VDL_APGA"}, |
1106 | {"CarkitL Mux", "DACL2", "ARXL2_APGA"}, | 1098 | {"CarkitL Mixer", "AudioL1", "ARXL1_APGA"}, |
1099 | {"CarkitL Mixer", "AudioL2", "ARXL2_APGA"}, | ||
1107 | /* CarkitR */ | 1100 | /* CarkitR */ |
1108 | {"CarkitR Mux", "DACR1", "ARXR1_APGA"}, | 1101 | {"CarkitR Mixer", "Voice", "VDL_APGA"}, |
1109 | {"CarkitR Mux", "DACR2", "ARXR2_APGA"}, | 1102 | {"CarkitR Mixer", "AudioR1", "ARXR1_APGA"}, |
1103 | {"CarkitR Mixer", "AudioR2", "ARXR2_APGA"}, | ||
1110 | /* HandsfreeL */ | 1104 | /* HandsfreeL */ |
1111 | {"HandsfreeL Mux", "DACL1", "ARXL1_APGA"}, | 1105 | {"HandsfreeL Mux", "Voice", "VDL_APGA"}, |
1112 | {"HandsfreeL Mux", "DACL2", "ARXL2_APGA"}, | 1106 | {"HandsfreeL Mux", "AudioL1", "ARXL1_APGA"}, |
1113 | {"HandsfreeL Mux", "DACR2", "ARXR2_APGA"}, | 1107 | {"HandsfreeL Mux", "AudioL2", "ARXL2_APGA"}, |
1108 | {"HandsfreeL Mux", "AudioR2", "ARXR2_APGA"}, | ||
1114 | /* HandsfreeR */ | 1109 | /* HandsfreeR */ |
1115 | {"HandsfreeR Mux", "DACR1", "ARXR1_APGA"}, | 1110 | {"HandsfreeR Mux", "Voice", "VDL_APGA"}, |
1116 | {"HandsfreeR Mux", "DACR2", "ARXR2_APGA"}, | 1111 | {"HandsfreeR Mux", "AudioR1", "ARXR1_APGA"}, |
1117 | {"HandsfreeR Mux", "DACL2", "ARXL2_APGA"}, | 1112 | {"HandsfreeR Mux", "AudioR2", "ARXR2_APGA"}, |
1113 | {"HandsfreeR Mux", "AudioL2", "ARXL2_APGA"}, | ||
1118 | 1114 | ||
1119 | /* outputs */ | 1115 | /* outputs */ |
1120 | {"OUTL", NULL, "ARXL2_APGA"}, | 1116 | {"OUTL", NULL, "ARXL2_APGA"}, |
1121 | {"OUTR", NULL, "ARXR2_APGA"}, | 1117 | {"OUTR", NULL, "ARXR2_APGA"}, |
1122 | {"EARPIECE", NULL, "Earpiece Mux"}, | 1118 | {"EARPIECE", NULL, "Earpiece Mixer"}, |
1123 | {"PREDRIVEL", NULL, "PredriveL Mux"}, | 1119 | {"PREDRIVEL", NULL, "PredriveL Mixer"}, |
1124 | {"PREDRIVER", NULL, "PredriveR Mux"}, | 1120 | {"PREDRIVER", NULL, "PredriveR Mixer"}, |
1125 | {"HSOL", NULL, "HeadsetL Mux"}, | 1121 | {"HSOL", NULL, "HeadsetL Mixer"}, |
1126 | {"HSOR", NULL, "HeadsetR Mux"}, | 1122 | {"HSOR", NULL, "HeadsetR Mixer"}, |
1127 | {"CARKITL", NULL, "CarkitL Mux"}, | 1123 | {"CARKITL", NULL, "CarkitL Mixer"}, |
1128 | {"CARKITR", NULL, "CarkitR Mux"}, | 1124 | {"CARKITR", NULL, "CarkitR Mixer"}, |
1129 | {"HFL", NULL, "HandsfreeL Mux"}, | 1125 | {"HFL", NULL, "HandsfreeL Mux"}, |
1130 | {"HFR", NULL, "HandsfreeR Mux"}, | 1126 | {"HFR", NULL, "HandsfreeR Mux"}, |
1131 | 1127 | ||