hc
2024-05-14 bedbef8ad3e75a304af6361af235302bcc61d06b
kernel/sound/soc/codecs/wm8904.c
....@@ -697,6 +697,7 @@
697697 int dcs_mask;
698698 int dcs_l, dcs_r;
699699 int dcs_l_reg, dcs_r_reg;
700
+ int an_out_reg;
700701 int timeout;
701702 int pwr_reg;
702703
....@@ -712,6 +713,7 @@
712713 dcs_mask = WM8904_DCS_ENA_CHAN_0 | WM8904_DCS_ENA_CHAN_1;
713714 dcs_r_reg = WM8904_DC_SERVO_8;
714715 dcs_l_reg = WM8904_DC_SERVO_9;
716
+ an_out_reg = WM8904_ANALOGUE_OUT1_LEFT;
715717 dcs_l = 0;
716718 dcs_r = 1;
717719 break;
....@@ -720,6 +722,7 @@
720722 dcs_mask = WM8904_DCS_ENA_CHAN_2 | WM8904_DCS_ENA_CHAN_3;
721723 dcs_r_reg = WM8904_DC_SERVO_6;
722724 dcs_l_reg = WM8904_DC_SERVO_7;
725
+ an_out_reg = WM8904_ANALOGUE_OUT2_LEFT;
723726 dcs_l = 2;
724727 dcs_r = 3;
725728 break;
....@@ -792,6 +795,10 @@
792795 snd_soc_component_update_bits(component, reg,
793796 WM8904_HPL_ENA_OUTP | WM8904_HPR_ENA_OUTP,
794797 WM8904_HPL_ENA_OUTP | WM8904_HPR_ENA_OUTP);
798
+
799
+ /* Update volume, requires PGA to be powered */
800
+ val = snd_soc_component_read(component, an_out_reg);
801
+ snd_soc_component_write(component, an_out_reg, val);
795802 break;
796803
797804 case SND_SOC_DAPM_POST_PMU:
....@@ -2299,6 +2306,9 @@
22992306 regmap_update_bits(wm8904->regmap, WM8904_BIAS_CONTROL_0,
23002307 WM8904_POBCTRL, 0);
23012308
2309
+ /* Fill the cache for the ADC test register */
2310
+ regmap_read(wm8904->regmap, WM8904_ADC_TEST_0, &val);
2311
+
23022312 /* Can leave the device powered off until we need it */
23032313 regcache_cache_only(wm8904->regmap, true);
23042314 regulator_bulk_disable(ARRAY_SIZE(wm8904->supplies), wm8904->supplies);