linux/sound/soc/rockchip
Enric Balletbo i Serra f86621cd6c
SoC: rockchip: rockchip_max98090: Enable MICBIAS for headset keypress detection
The TS3A227E says that the headset keypress detection needs the MICBIAS
power in order to report the key events to ensure proper operation
The headset keypress detection needs the MICBIAS power in order to report
the key events all the time as long as MIC is present. So MICBIAS pin
is forced on when a MICROPHONE is detected.

On Veyron Minnie I observed that if the MICBIAS power is not present and
the key press detection is activated (just because it is enabled when you
insert a headset), it randomly reports a keypress on insert.
E.g. (KEY_PLAYPAUSE)

 Event: (SW_HEADPHONE_INSERT), value 1
 Event: (SW_MICROPHONE_INSERT), value 1
 Event: -------------- SYN_REPORT ------------
 Event: (KEY_PLAYPAUSE), value 1

Userspace thinks that KEY_PLAYPAUSE is pressed and produces the annoying
effect that the media player starts a play/pause loop.

Note that, although most of the time the key reported is the one
associated with BTN_0, not always this is true. On my tests I also saw
different keys reported

Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Link: https://lore.kernel.org/r/20190719173929.24065-1-enric.balletbo@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2019-07-22 13:00:48 +01:00
..
Kconfig Linux 5.2-rc6 2019-06-26 12:39:34 +01:00
Makefile ASoC: rockchip: add config for rockchip dmaengine pcm register 2018-06-18 12:54:38 +01:00
rk3288_hdmi_analog.c ASoC: rockchip: rk3288_hdmi_analog: consider CPU-Platform possibility 2019-06-28 15:14:20 +01:00
rk3399_gru_sound.c ASoC: rockchip: rk3399_gru_sound: consider CPU-Platform possibility 2019-06-28 15:20:44 +01:00
rockchip_i2s.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rockchip_i2s.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rockchip_max98090.c SoC: rockchip: rockchip_max98090: Enable MICBIAS for headset keypress detection 2019-07-22 13:00:48 +01:00
rockchip_pcm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rockchip_pcm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rockchip_pdm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
rockchip_pdm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
rockchip_rt5645.c ASoC: rockchip: rockchip_rt5645: consider CPU-Platform possibility 2019-06-28 15:15:01 +01:00
rockchip_spdif.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rockchip_spdif.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00