diff options
-rw-r--r-- | sound/soc/codecs/cs42l56.c | 64 |
1 files changed, 45 insertions, 19 deletions
diff --git a/sound/soc/codecs/cs42l56.c b/sound/soc/codecs/cs42l56.c index fdc4bd27b0df..e5ef223be86c 100644 --- a/sound/soc/codecs/cs42l56.c +++ b/sound/soc/codecs/cs42l56.c | |||
@@ -318,24 +318,32 @@ static const struct soc_enum adca_swap_enum = | |||
318 | ARRAY_SIZE(left_swap_text), | 318 | ARRAY_SIZE(left_swap_text), |
319 | left_swap_text, | 319 | left_swap_text, |
320 | swap_values); | 320 | swap_values); |
321 | static const struct snd_kcontrol_new adca_swap_mux = | ||
322 | SOC_DAPM_ENUM("Route", adca_swap_enum); | ||
321 | 323 | ||
322 | static const struct soc_enum pcma_swap_enum = | 324 | static const struct soc_enum pcma_swap_enum = |
323 | SOC_VALUE_ENUM_SINGLE(CS42L56_CHAN_MIX_SWAP, 4, 3, | 325 | SOC_VALUE_ENUM_SINGLE(CS42L56_CHAN_MIX_SWAP, 4, 3, |
324 | ARRAY_SIZE(left_swap_text), | 326 | ARRAY_SIZE(left_swap_text), |
325 | left_swap_text, | 327 | left_swap_text, |
326 | swap_values); | 328 | swap_values); |
329 | static const struct snd_kcontrol_new pcma_swap_mux = | ||
330 | SOC_DAPM_ENUM("Route", pcma_swap_enum); | ||
327 | 331 | ||
328 | static const struct soc_enum adcb_swap_enum = | 332 | static const struct soc_enum adcb_swap_enum = |
329 | SOC_VALUE_ENUM_SINGLE(CS42L56_CHAN_MIX_SWAP, 2, 3, | 333 | SOC_VALUE_ENUM_SINGLE(CS42L56_CHAN_MIX_SWAP, 2, 3, |
330 | ARRAY_SIZE(right_swap_text), | 334 | ARRAY_SIZE(right_swap_text), |
331 | right_swap_text, | 335 | right_swap_text, |
332 | swap_values); | 336 | swap_values); |
337 | static const struct snd_kcontrol_new adcb_swap_mux = | ||
338 | SOC_DAPM_ENUM("Route", adcb_swap_enum); | ||
333 | 339 | ||
334 | static const struct soc_enum pcmb_swap_enum = | 340 | static const struct soc_enum pcmb_swap_enum = |
335 | SOC_VALUE_ENUM_SINGLE(CS42L56_CHAN_MIX_SWAP, 6, 3, | 341 | SOC_VALUE_ENUM_SINGLE(CS42L56_CHAN_MIX_SWAP, 6, 3, |
336 | ARRAY_SIZE(right_swap_text), | 342 | ARRAY_SIZE(right_swap_text), |
337 | right_swap_text, | 343 | right_swap_text, |
338 | swap_values); | 344 | swap_values); |
345 | static const struct snd_kcontrol_new pcmb_swap_mux = | ||
346 | SOC_DAPM_ENUM("Route", pcmb_swap_enum); | ||
339 | 347 | ||
340 | static const struct snd_kcontrol_new hpa_switch = | 348 | static const struct snd_kcontrol_new hpa_switch = |
341 | SOC_DAPM_SINGLE("Switch", CS42L56_PWRCTL_2, 6, 1, 1); | 349 | SOC_DAPM_SINGLE("Switch", CS42L56_PWRCTL_2, 6, 1, 1); |
@@ -467,11 +475,6 @@ static const struct snd_kcontrol_new cs42l56_snd_controls[] = { | |||
467 | SOC_SINGLE("ADCA Invert", CS42L56_MISC_ADC_CTL, 2, 1, 1), | 475 | SOC_SINGLE("ADCA Invert", CS42L56_MISC_ADC_CTL, 2, 1, 1), |
468 | SOC_SINGLE("ADCB Invert", CS42L56_MISC_ADC_CTL, 3, 1, 1), | 476 | SOC_SINGLE("ADCB Invert", CS42L56_MISC_ADC_CTL, 3, 1, 1), |
469 | 477 | ||
470 | SOC_ENUM("PCMA Swap", pcma_swap_enum), | ||
471 | SOC_ENUM("PCMB Swap", pcmb_swap_enum), | ||
472 | SOC_ENUM("ADCA Swap", adca_swap_enum), | ||
473 | SOC_ENUM("ADCB Swap", adcb_swap_enum), | ||
474 | |||
475 | SOC_DOUBLE("HPF Switch", CS42L56_HPF_CTL, 5, 7, 1, 1), | 478 | SOC_DOUBLE("HPF Switch", CS42L56_HPF_CTL, 5, 7, 1, 1), |
476 | SOC_DOUBLE("HPF Freeze Switch", CS42L56_HPF_CTL, 4, 6, 1, 1), | 479 | SOC_DOUBLE("HPF Freeze Switch", CS42L56_HPF_CTL, 4, 6, 1, 1), |
477 | SOC_ENUM("HPFA Corner Freq", hpfa_freq_enum), | 480 | SOC_ENUM("HPFA Corner Freq", hpfa_freq_enum), |
@@ -570,6 +573,16 @@ static const struct snd_soc_dapm_widget cs42l56_dapm_widgets[] = { | |||
570 | SND_SOC_DAPM_ADC("ADCA", NULL, CS42L56_PWRCTL_1, 1, 1), | 573 | SND_SOC_DAPM_ADC("ADCA", NULL, CS42L56_PWRCTL_1, 1, 1), |
571 | SND_SOC_DAPM_ADC("ADCB", NULL, CS42L56_PWRCTL_1, 2, 1), | 574 | SND_SOC_DAPM_ADC("ADCB", NULL, CS42L56_PWRCTL_1, 2, 1), |
572 | 575 | ||
576 | SND_SOC_DAPM_MUX("ADCA Swap Mux", SND_SOC_NOPM, 0, 0, | ||
577 | &adca_swap_mux), | ||
578 | SND_SOC_DAPM_MUX("ADCB Swap Mux", SND_SOC_NOPM, 0, 0, | ||
579 | &adcb_swap_mux), | ||
580 | |||
581 | SND_SOC_DAPM_MUX("PCMA Swap Mux", SND_SOC_NOPM, 0, 0, | ||
582 | &pcma_swap_mux), | ||
583 | SND_SOC_DAPM_MUX("PCMB Swap Mux", SND_SOC_NOPM, 0, 0, | ||
584 | &pcmb_swap_mux), | ||
585 | |||
573 | SND_SOC_DAPM_DAC("DACA", NULL, SND_SOC_NOPM, 0, 0), | 586 | SND_SOC_DAPM_DAC("DACA", NULL, SND_SOC_NOPM, 0, 0), |
574 | SND_SOC_DAPM_DAC("DACB", NULL, SND_SOC_NOPM, 0, 0), | 587 | SND_SOC_DAPM_DAC("DACB", NULL, SND_SOC_NOPM, 0, 0), |
575 | 588 | ||
@@ -607,8 +620,19 @@ static const struct snd_soc_dapm_route cs42l56_audio_map[] = { | |||
607 | {"Digital Output Mux", NULL, "ADCA"}, | 620 | {"Digital Output Mux", NULL, "ADCA"}, |
608 | {"Digital Output Mux", NULL, "ADCB"}, | 621 | {"Digital Output Mux", NULL, "ADCB"}, |
609 | 622 | ||
610 | {"ADCB", NULL, "ADCB Mux"}, | 623 | {"ADCB", NULL, "ADCB Swap Mux"}, |
611 | {"ADCA", NULL, "ADCA Mux"}, | 624 | {"ADCA", NULL, "ADCA Swap Mux"}, |
625 | |||
626 | {"ADCA Swap Mux", NULL, "ADCA"}, | ||
627 | {"ADCB Swap Mux", NULL, "ADCB"}, | ||
628 | |||
629 | {"DACA", "Left", "ADCA Swap Mux"}, | ||
630 | {"DACA", "LR 2", "ADCA Swap Mux"}, | ||
631 | {"DACA", "Right", "ADCA Swap Mux"}, | ||
632 | |||
633 | {"DACB", "Left", "ADCB Swap Mux"}, | ||
634 | {"DACB", "LR 2", "ADCB Swap Mux"}, | ||
635 | {"DACB", "Right", "ADCB Swap Mux"}, | ||
612 | 636 | ||
613 | {"ADCA Mux", NULL, "AIN3A"}, | 637 | {"ADCA Mux", NULL, "AIN3A"}, |
614 | {"ADCA Mux", NULL, "AIN2A"}, | 638 | {"ADCA Mux", NULL, "AIN2A"}, |
@@ -633,30 +657,32 @@ static const struct snd_soc_dapm_route cs42l56_audio_map[] = { | |||
633 | {"PGAB Input Mux", NULL, "AIN2B"}, | 657 | {"PGAB Input Mux", NULL, "AIN2B"}, |
634 | {"PGAB Input Mux", NULL, "AIN3B"}, | 658 | {"PGAB Input Mux", NULL, "AIN3B"}, |
635 | 659 | ||
636 | {"LOB", NULL, "Lineout Right"}, | 660 | {"LOB", "Switch", "LINEOUTB Input Mux"}, |
637 | {"LOA", NULL, "Lineout Left"}, | 661 | {"LOA", "Switch", "LINEOUTA Input Mux"}, |
638 | |||
639 | {"Lineout Right", "Switch", "LINEOUTB Input Mux"}, | ||
640 | {"Lineout Left", "Switch", "LINEOUTA Input Mux"}, | ||
641 | 662 | ||
642 | {"LINEOUTA Input Mux", "PGAA", "PGAA"}, | 663 | {"LINEOUTA Input Mux", "PGAA", "PGAA"}, |
643 | {"LINEOUTB Input Mux", "PGAB", "PGAB"}, | 664 | {"LINEOUTB Input Mux", "PGAB", "PGAB"}, |
644 | {"LINEOUTA Input Mux", "DACA", "DACA"}, | 665 | {"LINEOUTA Input Mux", "DACA", "DACA"}, |
645 | {"LINEOUTB Input Mux", "DACB", "DACB"}, | 666 | {"LINEOUTB Input Mux", "DACB", "DACB"}, |
646 | 667 | ||
647 | {"HPA", NULL, "Headphone Left"}, | 668 | {"HPA", "Switch", "HPB Input Mux"}, |
648 | {"HPB", NULL, "Headphone Right"}, | 669 | {"HPB", "Switch", "HPA Input Mux"}, |
649 | |||
650 | {"Headphone Right", "Switch", "HPB Input Mux"}, | ||
651 | {"Headphone Left", "Switch", "HPA Input Mux"}, | ||
652 | 670 | ||
653 | {"HPA Input Mux", "PGAA", "PGAA"}, | 671 | {"HPA Input Mux", "PGAA", "PGAA"}, |
654 | {"HPB Input Mux", "PGAB", "PGAB"}, | 672 | {"HPB Input Mux", "PGAB", "PGAB"}, |
655 | {"HPA Input Mux", "DACA", "DACA"}, | 673 | {"HPA Input Mux", "DACA", "DACA"}, |
656 | {"HPB Input Mux", "DACB", "DACB"}, | 674 | {"HPB Input Mux", "DACB", "DACB"}, |
657 | 675 | ||
658 | {"DACB", NULL, "HiFi Playback"}, | 676 | {"DACA", NULL, "PCMA Swap Mux"}, |
659 | {"DACA", NULL, "HiFi Playback"}, | 677 | {"DACB", NULL, "PCMB Swap Mux"}, |
678 | |||
679 | {"PCMB Swap Mux", "Left", "HiFi Playback"}, | ||
680 | {"PCMB Swap Mux", "LR 2", "HiFi Playback"}, | ||
681 | {"PCMB Swap Mux", "Right", "HiFi Playback"}, | ||
682 | |||
683 | {"PCMA Swap Mux", "Left", "HiFi Playback"}, | ||
684 | {"PCMA Swap Mux", "LR 2", "HiFi Playback"}, | ||
685 | {"PCMA Swap Mux", "Right", "HiFi Playback"}, | ||
660 | 686 | ||
661 | }; | 687 | }; |
662 | 688 | ||