WSL2-Linux-Kernel/sound/soc/codecs
Tzung-Bi Shih 62d5ae4caf
ASoC: max98090: save and restore SHDN when changing sensitive registers
According to the datasheet, there are some registers can only be changed
when SHDN is 0.  Changing these settings during SHDN = 1 can compromise
device stability and performance specifications.

Saves SHDN before writing to these sensitive registers and restores SHDN
afterward.

Here is the register list codec driver of max98090 wants to change:
M98090_REG_QUICK_SYSTEM_CLOCK		0x04
M98090_REG_QUICK_SAMPLE_RATE		0x05
M98090_REG_DAI_INTERFACE		0x06
M98090_REG_DAC_PATH			0x07
M98090_REG_MIC_DIRECT_TO_ADC		0x08
M98090_REG_LINE_TO_ADC			0x09
M98090_REG_ANALOG_MIC_LOOP		0x0A
M98090_REG_ANALOG_LINE_LOOP		0x0B
M98090_REG_SYSTEM_CLOCK			0x1B
M98090_REG_CLOCK_MODE			0x1C
M98090_REG_CLOCK_RATIO_NI_MSB		0x1D
M98090_REG_CLOCK_RATIO_NI_LSB		0x1E
M98090_REG_CLOCK_RATIO_MI_MSB		0x1F
M98090_REG_CLOCK_RATIO_MI_LSB		0x20
M98090_REG_MASTER_MODE			0x21
M98090_REG_INTERFACE_FORMAT		0x22
M98090_REG_TDM_CONTROL			0x23
M98090_REG_TDM_FORMAT			0x24
M98090_REG_IO_CONFIGURATION		0x25
M98090_REG_FILTER_CONFIG		0x26
M98090_REG_INPUT_ENABLE			0x3E
M98090_REG_OUTPUT_ENABLE		0x3F
M98090_REG_BIAS_CONTROL			0x42
M98090_REG_DAC_CONTROL			0x43
M98090_REG_ADC_CONTROL			0x44
M98090_REG_DRC_TIMING			0x33
M98090_REG_DRC_COMPRESSOR		0x34
M98090_REG_DRC_EXPANDER			0x35
M98090_REG_DSP_FILTER_ENABLE		0x41
M98090_REG_EQUALIZER_BASE		0x46
M98090_REG_RECORD_BIQUAD_BASE		0xAF
M98090_REG_DIGITAL_MIC_ENABLE		0x13
M98090_REG_DIGITAL_MIC_CONFIG		0x14

Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
Link: https://lore.kernel.org/r/20191128151908.180871-1-tzungbi@google.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2019-12-09 18:34:22 +00:00
..
88pm860x-codec.c ASoC: 88pm860x: remove unused variables 'pcm_switch_controls' and 'aif1_mux' 2019-08-15 15:07:25 +01:00
88pm860x-codec.h
Kconfig ASoC: More updates for v5.5 2019-11-25 14:27:41 +01:00
Makefile ASoC: tas2562: Introduce the TAS2562 amplifier 2019-10-10 15:19:31 +01:00
ab8500-codec.c
ab8500-codec.h
ac97.c
ad193x-i2c.c
ad193x-spi.c
ad193x.c ASoC: codecs: ad193x: make two arrays static const, makes object smaller 2019-09-09 10:50:51 +01:00
ad193x.h
ad1836.c
ad1836.h
ad1980.c
ad73311.c
ad73311.h
adau-utils.c
adau-utils.h
adau17x1.c
adau17x1.h
adau1373.c
adau1373.h
adau1701.c
adau1701.h
adau1761-i2c.c
adau1761-spi.c
adau1761.c ASoC: adau1761: Add ALC controls 2019-10-01 12:16:01 +01:00
adau1761.h
adau1781-i2c.c
adau1781-spi.c
adau1781.c
adau1781.h
adau1977-i2c.c
adau1977-spi.c
adau1977.c
adau1977.h
adau7002.c
adau7118-hw.c ASOC: Add ADAU7118 8 Channel PDM-to-I2S/TDM Converter driver 2019-10-10 15:06:09 +01:00
adau7118-i2c.c ASOC: Add ADAU7118 8 Channel PDM-to-I2S/TDM Converter driver 2019-10-10 15:06:09 +01:00
adau7118.c ASOC: adau7118: Change regulators id 2019-10-21 15:53:49 +01:00
adau7118.h ASOC: Add ADAU7118 8 Channel PDM-to-I2S/TDM Converter driver 2019-10-10 15:06:09 +01:00
adav80x.c
adav80x.h
adav801.c
adav803.c
ads117x.c
ak4104.c
ak4118.c
ak4458.c
ak4458.h
ak4535.c
ak4535.h
ak4554.c
ak4613.c
ak4641.c
ak4642.c
ak4671.c
ak4671.h
ak5386.c
ak5558.c
ak5558.h
alc5623.c
alc5623.h
alc5632.c
alc5632.h
arizona.c
arizona.h
bd28623.c
bt-sco.c
cpcap.c
cq93vc.c
cros_ec_codec.c ASoC: cros_ec_codec: Convert to the common vmalloc memalloc 2019-11-09 18:02:53 +01:00
cs35l32.c
cs35l32.h
cs35l33.c
cs35l33.h
cs35l34.c
cs35l34.h
cs35l35.c
cs35l35.h
cs35l36.c
cs35l36.h
cs42l42.c
cs42l42.h
cs42l51-i2c.c
cs42l51.c
cs42l51.h
cs42l52.c
cs42l52.h
cs42l56.c ASoC: cs42l56: remove unused variable 'adc_swap_enum' 2019-08-15 15:07:07 +01:00
cs42l56.h
cs42l73.c ASoC: cs42l73: remove unused variables 'vsp_output_mux' and 'xsp_output_mux' 2019-08-15 15:04:41 +01:00
cs42l73.h
cs42xx8-i2c.c
cs42xx8.c ASoC: cs42xx8: Force suspend/resume during system suspend/resume 2019-08-27 20:39:46 +01:00
cs42xx8.h
cs47l15.c
cs47l24.c
cs47l24.h
cs47l35.c
cs47l85.c
cs47l90.c
cs47l92.c
cs53l30.c
cs53l30.h
cs4265.c
cs4265.h
cs4270.c
cs4271-i2c.c
cs4271-spi.c
cs4271.c ASoC: cs4271: Fix a typo in the CS4171_NR_RATIOS 2019-07-31 12:07:12 +01:00
cs4271.h
cs4341.c
cs4349.c ASoC: cs4349: Use PM ops 'cs4349_runtime_pm' 2019-08-15 15:05:00 +01:00
cs4349.h
cs43130.c
cs43130.h
cx2072x.c ASoC: Spelling s/configr/configur/ 2019-10-25 11:06:57 +01:00
cx2072x.h
cx20442.c
cx20442.h
da732x.c
da732x.h
da732x_reg.h
da7210.c
da7213.c
da7213.h
da7218.c
da7218.h
da7219-aad.c
da7219-aad.h
da7219.c
da7219.h
da9055.c
dmic.c
es7134.c
es7241.c
es8316.c Merge branch 'asoc-5.4' into asoc-next 2019-09-15 10:31:44 +01:00
es8316.h
es8328-i2c.c
es8328-spi.c
es8328.c ASoC: es8328: Fix copy-paste error in es8328_right_line_controls 2019-08-15 15:06:49 +01:00
es8328.h
gtm601.c
hdac_hda.c Merge branch 'for-5.4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-5.5 2019-11-06 16:29:34 +00:00
hdac_hda.h ASoC: hdac_hda: add support for HDMI/DP as a HDA codec 2019-10-29 17:31:50 +00:00
hdac_hdmi.c ASoC: hdac_hdmi: Drop support for Icelake 2019-12-09 18:33:05 +00:00
hdac_hdmi.h
hdmi-codec.c ASoC: hdmi-codec: drop mutex locking again 2019-10-23 18:20:43 +01:00
ics43432.c
inno_rk3036.c ASoC: inno_rk3036: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:11:21 +01:00
inno_rk3036.h
isabelle.c
isabelle.h
jz4725b.c ASoC: codecs: jz4725b: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:10:35 +01:00
jz4740.c ASoC: jz4740: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:11:03 +01:00
l3.c
lm4857.c
lm49453.c
lm49453.h
lochnagar-sc.c
madera.c
madera.h ASoC: madera: Add support for using MCLK3 2019-10-01 17:44:47 +01:00
max9759.c
max9768.c
max9850.c ASoC: max9850: remove unused variable 'max9850_reg' 2019-08-09 18:12:39 +01:00
max9850.h
max9860.c
max9860.h
max9867.c
max9867.h
max9877.c
max9877.h
max98088.c
max98088.h
max98090.c ASoC: max98090: save and restore SHDN when changing sensitive registers 2019-12-09 18:34:22 +00:00
max98090.h ASoC: max98090: save and restore SHDN when changing sensitive registers 2019-12-09 18:34:22 +00:00
max98095.c
max98095.h
max98357a.c
max98371.c ASoC: max98371: remove unused variable 'max98371_noload_gain_tlv' 2019-08-15 15:05:18 +01:00
max98371.h
max98373.c ASoC: max98373: replace gpio_request with devm_gpio_request 2019-11-05 18:52:41 +00:00
max98373.h Merge branch 'asoc-5.3' into asoc-5.4 2019-08-20 18:28:43 +01:00
max98504.c
max98504.h
max98925.c
max98925.h
max98926.c ASoC: max98926: remove two unused variables 2019-08-09 18:12:38 +01:00
max98926.h
max98927.c
max98927.h
mc13783.c
mc13783.h
ml26124.c ASoC: ml26124: remove unused variable 'ngth' 2019-08-09 13:24:47 +01:00
ml26124.h
msm8916-wcd-analog.c Merge branch 'for-5.4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-5.5 2019-11-06 16:29:34 +00:00
msm8916-wcd-digital.c ASoC: msm8916-wcd-digital: add missing MIX2 path for RX1/2 2019-10-09 18:02:18 +01:00
mt6351.c ASoC: mt6351: remove unused variable 'mt_lineout_control' 2019-08-09 13:24:29 +01:00
mt6351.h
mt6358.c ASoC: mediatek: mt6358: support WoV 2019-10-21 13:52:22 +01:00
mt6358.h
nau8540.c
nau8540.h
nau8810.c
nau8810.h
nau8822.c
nau8822.h
nau8824.c
nau8824.h
nau8825.c
nau8825.h
pcm179x-i2c.c
pcm179x-spi.c
pcm179x.c
pcm179x.h
pcm186x-i2c.c
pcm186x-spi.c
pcm186x.c
pcm186x.h
pcm512x-i2c.c
pcm512x-spi.c
pcm512x.c
pcm512x.h
pcm1681.c
pcm1789-i2c.c
pcm1789.c
pcm1789.h
pcm3008.c
pcm3008.h
pcm3060-i2c.c
pcm3060-spi.c
pcm3060.c
pcm3060.h
pcm3168a-i2c.c
pcm3168a-spi.c
pcm3168a.c ASoC: pcm3168a: Update the RST gpio handling to align with documentation 2019-11-20 17:08:21 +00:00
pcm3168a.h
pcm5102a.c
rk3328_codec.c ASoC: rockchip: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:03:52 +01:00
rk3328_codec.h
rl6231.c
rl6231.h
rl6347a.c
rl6347a.h
rt274.c
rt274.h
rt286.c
rt286.h
rt298.c
rt298.h
rt1011.c ASoC: rt1011: some minor changes to improve readability 2019-10-31 14:20:17 +01:00
rt1011.h ASoC: rt1011: Read and apply r0 and temperature device property 2019-10-16 13:56:58 +01:00
rt1305.c ASoC: rt1305: make array pd static const, makes object smaller 2019-09-09 10:51:52 +01:00
rt1305.h
rt1308.c ASoC: rt1308: make array pd static const, makes object smaller 2019-09-09 10:52:07 +01:00
rt1308.h
rt5514-spi.c ASoC: rt5514-spi: Convert to the common vmalloc memalloc 2019-11-09 18:02:52 +01:00
rt5514-spi.h
rt5514.c
rt5514.h
rt5616.c
rt5616.h
rt5631.c
rt5631.h
rt5640.c
rt5640.h
rt5645.c Merge branch 'asoc-5.5' into asoc-next 2019-11-22 19:56:02 +00:00
rt5645.h
rt5651.c ASoC: intel: bytcr_rt5651: add null check to support_button_press 2019-10-01 18:33:02 +01:00
rt5651.h
rt5659.c
rt5659.h
rt5660.c
rt5660.h
rt5663.c ASoC: rt5663: clean up indentation issues 2019-10-01 12:14:29 +01:00
rt5663.h
rt5665.c
rt5665.h
rt5668.c
rt5668.h
rt5670-dsp.h
rt5670.c
rt5670.h
rt5677-spi.c ASoC: More updates for v5.5 2019-11-25 14:27:41 +01:00
rt5677-spi.h ASoC: rt5677: Add a PCM device for streaming hotword via SPI 2019-10-22 17:55:16 +01:00
rt5677.c ASoC: rt5677: rt5677_check_hotword() can be static 2019-11-18 12:55:59 +00:00
rt5677.h ASoC: rt5677: Set ADC clock to use PLL and enable ASRC 2019-11-11 13:02:06 +00:00
rt5682.c Merge branch 'asoc-5.5' into asoc-next 2019-11-22 19:56:02 +00:00
rt5682.h
sgtl5000.c
sgtl5000.h
si476x.c
sigmadsp-i2c.c
sigmadsp-regmap.c
sigmadsp.c
sigmadsp.h
simple-amplifier.c
sirf-audio-codec.c ASoC: sirf-audio: use devm_platform_ioremap_resource() to simplify code 2019-09-04 13:48:31 +01:00
sirf-audio-codec.h
spdif_receiver.c
spdif_transmitter.c
ssm2305.c
ssm2518.c
ssm2518.h
ssm2602-i2c.c
ssm2602-spi.c
ssm2602.c
ssm2602.h
ssm4567.c
sta32x.c
sta32x.h
sta350.c
sta350.h
sta529.c
stac9766.c
sti-sas.c
tas571x.c
tas571x.h
tas2552.c
tas2552.h
tas2562.c ASoC: tas2562: Introduce the TAS2562 amplifier 2019-10-10 15:19:31 +01:00
tas2562.h ASoC: tas2562: Fix misuse of GENMASK macro 2019-10-18 18:10:29 +01:00
tas2770.c ASoC: tas2770: clean up an indentation issue 2019-11-15 12:01:43 +00:00
tas2770.h ASoc: tas2770: Remove unused defines and variables 2019-10-07 19:08:42 +01:00
tas5086.c
tas5720.c
tas5720.h
tas6424.c
tas6424.h
tda7419.c
tfa9879.c
tfa9879.h
tlv320aic3x.c
tlv320aic3x.h
tlv320aic23-i2c.c
tlv320aic23-spi.c
tlv320aic23.c ASoC: tlv320aic23: remove unused variable 'tlv320aic23_rec_src' 2019-08-15 15:05:55 +01:00
tlv320aic23.h
tlv320aic26.c
tlv320aic26.h
tlv320aic31xx.c ASoC: tlv320aic31xx: Add HP output driver pop reduction controls 2019-12-09 18:33:42 +00:00
tlv320aic31xx.h ASoC: tlv320aic31xx: configure output common-mode voltage 2019-11-18 16:11:47 +00:00
tlv320aic32x4-clk.c
tlv320aic32x4-i2c.c
tlv320aic32x4-spi.c
tlv320aic32x4.c ASoC: tlv320aic32x4: add a check for devm_clk_get 2019-10-18 18:12:13 +01:00
tlv320aic32x4.h
tlv320dac33.c
tlv320dac33.h
tpa6130a2.c
tpa6130a2.h
ts3a227e.c
ts3a227e.h
tscs42xx.c
tscs42xx.h
tscs454.c ASoC: tscs454: remove unused variable 'PLL_48K_RATE' 2019-08-08 20:57:00 +01:00
tscs454.h
twl4030.c
twl6040.c ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
twl6040.h
uda134x.c
uda134x.h
uda1334.c ASoC: codecs: Add uda1334 codec driver 2019-07-31 12:26:47 +01:00
uda1380.c
uda1380.h
wcd-clsh-v2.c
wcd-clsh-v2.h
wcd9335.c ASoC: wcd9335: clean up indentation issue 2019-10-01 12:14:48 +01:00
wcd9335.h
wl1273.c
wl1273.h
wm0010.c
wm1250-ev1.c
wm2000.c
wm2000.h
wm2200.c ASoC: wm2200: add missed operations in remove and probe failure 2019-11-18 13:02:36 +00:00
wm2200.h
wm5100-tables.c
wm5100.c ASoC: wm5100: add missed pm_runtime_disable 2019-11-18 13:02:37 +00:00
wm5100.h
wm5102.c
wm5102.h
wm5110.c
wm5110.h
wm8350.c
wm8350.h
wm8400.c
wm8400.h
wm8510.c
wm8510.h
wm8523.c
wm8523.h
wm8524.c
wm8580.c
wm8580.h
wm8711.c
wm8711.h
wm8727.c
wm8728.c
wm8728.h
wm8731.c
wm8731.h
wm8737.c ASoC: wm8737: Fix copy-paste error in wm8737_snd_controls 2019-08-15 15:02:20 +01:00
wm8737.h
wm8741.c
wm8741.h
wm8750.c
wm8750.h
wm8753.c
wm8753.h
wm8770.c
wm8770.h
wm8776.c
wm8776.h
wm8782.c
wm8804-i2c.c
wm8804-spi.c
wm8804.c
wm8804.h
wm8900.c
wm8900.h
wm8903.c
wm8903.h
wm8904.c Merge branch 'asoc-5.5' into asoc-next 2019-11-22 19:56:02 +00:00
wm8904.h ASoC: wm8904: configure sysclk/FLL automatically 2019-11-11 19:42:56 +00:00
wm8940.c
wm8940.h
wm8955.c
wm8955.h
wm8958-dsp2.c ASoC: wm8958: use <asm/unaligned.h> to simplify code 2019-10-16 13:56:02 +01:00
wm8960.c
wm8960.h
wm8961.c
wm8961.h
wm8962.c
wm8962.h
wm8971.c
wm8971.h
wm8974.c
wm8974.h
wm8978.c
wm8978.h
wm8983.c
wm8983.h
wm8985.c
wm8985.h
wm8988.c ASoC: wm8988: fix typo in wm8988_right_line_controls 2019-08-22 18:28:43 +01:00
wm8988.h
wm8990.c
wm8990.h
wm8991.c
wm8991.h
wm8993.c
wm8993.h
wm8994.c Merge branch 'asoc-5.4' into asoc-5.5 2019-10-02 12:50:40 +01:00
wm8994.h ASoC: wm8994: Add support for setting MCLK clock rate 2019-10-01 12:10:10 +01:00
wm8995.c
wm8995.h
wm8996.c
wm8996.h
wm8997.c
wm8997.h
wm8998.c
wm8998.h
wm9081.c
wm9081.h
wm9090.c
wm9090.h
wm9705.c
wm9712.c
wm9713.c
wm9713.h
wm_adsp.c ASoC: wm_adsp: Expose mixer control API 2019-11-18 16:12:07 +00:00
wm_adsp.h ASoC: wm_adsp: Expose mixer control API 2019-11-18 16:12:07 +00:00
wm_hubs.c
wm_hubs.h
wmfw.h
zx_aud96p22.c