Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: codecs: wcd937x: fix AUX PA sequencing and mixer controls

Enable AUX PA sequencing during AUX DAC DAPM events and keep the
AUX-specific RX supplies enabled while the path is active.

Add the missing AUX-related mixer controls, including CLSH PA and
DSD left/right switches, so AUX playback can be routed from userspace.

Signed-off-by: Ajay Kumar Nandam <ajay.nandam@oss.qualcomm.com>
Link: https://patch.msgid.link/20260420180221.785113-1-ajay.nandam@oss.qualcomm.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Ajay Kumar Nandam and committed by
Mark Brown
74c876bf dad701bd

+25 -1
+25 -1
sound/soc/codecs/wcd937x.c
··· 547 547 WCD937X_DIGITAL_CDC_ANA_CLK_CTL, 548 548 BIT(2), BIT(2)); 549 549 snd_soc_component_update_bits(component, 550 + WCD937X_AUX_AUXPA, 551 + BIT(4), BIT(4)); 552 + snd_soc_component_update_bits(component, 550 553 WCD937X_DIGITAL_CDC_DIG_CLK_CTL, 551 554 BIT(2), BIT(2)); 552 555 snd_soc_component_update_bits(component, ··· 565 562 snd_soc_component_update_bits(component, 566 563 WCD937X_DIGITAL_CDC_ANA_CLK_CTL, 567 564 BIT(2), 0x00); 565 + snd_soc_component_update_bits(component, 566 + WCD937X_AUX_AUXPA, 567 + BIT(4), 0x00); 568 568 break; 569 569 } 570 570 ··· 736 730 snd_soc_component_update_bits(component, 737 731 WCD937X_ANA_RX_SUPPLIES, 738 732 BIT(1), BIT(1)); 733 + /* Enable AUX PA related RX supplies */ 734 + snd_soc_component_update_bits(component, 735 + WCD937X_ANA_RX_SUPPLIES, 736 + BIT(6), BIT(6)); 737 + snd_soc_component_update_bits(component, 738 + WCD937X_ANA_RX_SUPPLIES, 739 + BIT(7), BIT(7)); 739 740 enable_irq(wcd937x->aux_pdm_wd_int); 740 741 break; 741 742 case SND_SOC_DAPM_PRE_PMD: 742 743 disable_irq_nosync(wcd937x->aux_pdm_wd_int); 744 + snd_soc_component_update_bits(component, 745 + WCD937X_ANA_RX_SUPPLIES, 746 + BIT(6), 0x00); 747 + snd_soc_component_update_bits(component, 748 + WCD937X_ANA_RX_SUPPLIES, 749 + BIT(7), 0x00); 743 750 break; 744 751 case SND_SOC_DAPM_POST_PMD: 745 752 usleep_range(2000, 2010); ··· 2070 2051 wcd937x_get_swr_port, wcd937x_set_swr_port), 2071 2052 SOC_SINGLE_EXT("LO Switch", WCD937X_LO, 0, 1, 0, 2072 2053 wcd937x_get_swr_port, wcd937x_set_swr_port), 2073 - 2054 + SOC_SINGLE_EXT("CLSH PA Switch", WCD937X_CLSH, 0, 1, 0, 2055 + wcd937x_get_swr_port, wcd937x_set_swr_port), 2056 + SOC_SINGLE_EXT("DSD_L Switch", WCD937X_DSD_L, 0, 1, 0, 2057 + wcd937x_get_swr_port, wcd937x_set_swr_port), 2058 + SOC_SINGLE_EXT("DSD_R Switch", WCD937X_DSD_R, 0, 1, 0, 2059 + wcd937x_get_swr_port, wcd937x_set_swr_port), 2074 2060 SOC_SINGLE_EXT("ADC1 Switch", WCD937X_ADC1, 1, 1, 0, 2075 2061 wcd937x_get_swr_port, wcd937x_set_swr_port), 2076 2062 SOC_SINGLE_EXT("ADC2 Switch", WCD937X_ADC2, 1, 1, 0,