diff options
author | Takashi Iwai | 2019-08-06 12:28:08 +0200 |
---|---|---|
committer | Takashi Iwai | 2019-08-06 12:28:08 +0200 |
commit | c2913b140f901a705809f8b6c83998cf8147f848 (patch) | |
tree | 53686878548921b83e8d9db437c4437140561980 /sound/soc/rockchip/rockchip_max98090.c | |
parent | ALSA: usb-audio: Fix gpf in snd_usb_pipe_sanity_check (diff) | |
parent | ASoC: amd: acp3x: use dma address for acp3x dma driver (diff) | |
download | kernel-qcow2-linux-c2913b140f901a705809f8b6c83998cf8147f848.tar.gz kernel-qcow2-linux-c2913b140f901a705809f8b6c83998cf8147f848.tar.xz kernel-qcow2-linux-c2913b140f901a705809f8b6c83998cf8147f848.zip |
Merge tag 'asoc-fix-v5.3-rc3' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v5.3
A relatively large batch of mostly unremarkable fixes here, a couple of
small core fixes for fairly obscure issues, more comment/email updates
with no code impact than usual and a bunch of small driver fixes.
The support for new sample rates in the max98373 driver is a fix for the
fact that the driver declared support for those rates but would in fact
return an error if these rates were selected.
Diffstat (limited to 'sound/soc/rockchip/rockchip_max98090.c')
-rw-r--r-- | sound/soc/rockchip/rockchip_max98090.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/sound/soc/rockchip/rockchip_max98090.c b/sound/soc/rockchip/rockchip_max98090.c index c5fc24675a33..782e534d4c0d 100644 --- a/sound/soc/rockchip/rockchip_max98090.c +++ b/sound/soc/rockchip/rockchip_max98090.c @@ -61,6 +61,37 @@ static const struct snd_kcontrol_new rk_mc_controls[] = { SOC_DAPM_PIN_SWITCH("Speaker"), }; +static int rk_jack_event(struct notifier_block *nb, unsigned long event, + void *data) +{ + struct snd_soc_jack *jack = (struct snd_soc_jack *)data; + struct snd_soc_dapm_context *dapm = &jack->card->dapm; + + if (event & SND_JACK_MICROPHONE) + snd_soc_dapm_force_enable_pin(dapm, "MICBIAS"); + else + snd_soc_dapm_disable_pin(dapm, "MICBIAS"); + + snd_soc_dapm_sync(dapm); + + return 0; +} + +static struct notifier_block rk_jack_nb = { + .notifier_call = rk_jack_event, +}; + +static int rk_init(struct snd_soc_pcm_runtime *runtime) +{ + /* + * The jack has already been created in the rk_98090_headset_init() + * function. + */ + snd_soc_jack_notifier_register(&headset_jack, &rk_jack_nb); + + return 0; +} + static int rk_aif1_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) { @@ -119,6 +150,7 @@ SND_SOC_DAILINK_DEFS(hifi, static struct snd_soc_dai_link rk_dailink = { .name = "max98090", .stream_name = "Audio", + .init = rk_init, .ops = &rk_aif1_ops, /* set max98090 as slave */ .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | |