From e1e985d87d189d557fc2a4e0a13758e94ff8ff1d Mon Sep 17 00:00:00 2001 From: Benson Leung Date: Thu, 14 Jan 2016 14:37:37 -0800 Subject: [PATCH] CHROMIUM: ASoc: Intel: boards: support headset button function for nau88l25 Map the 4 buttons from the Android reference headset to KEY_MEDIA, KEY_VOICECOMMAND, KEY_VOLUMEUP, and KEY_VOLUMEDOWN. Signed-off-by: Benson Leung BUG=chrome-os-partner:49333 TEST=Run evtest, selecting the input event for sklnau8825adi Using the Nominal headphones from the kit, check that the buttons for "KEY_VOLUMEDOWN", "KEY_VOLUMEUP", "KEY_MEDIA", and code 582 (?) (should be voice search, but evtest doesn't understand) All of these buttons should work properly. Change-Id: I392c388c0d088f85bea65f6f7a570939ed5e90f4 Reviewed-on: https://chromium-review.googlesource.com/322251 Commit-Ready: Benson Leung Tested-by: Benson Leung Reviewed-by: Anatol Pomazau Reviewed-by: Dylan Reid --- sound/soc/intel/boards/skl_nau88l25_ssm4567.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sound/soc/intel/boards/skl_nau88l25_ssm4567.c b/sound/soc/intel/boards/skl_nau88l25_ssm4567.c index e84bddfdb7456..3cc83d44a1e84 100644 --- a/sound/soc/intel/boards/skl_nau88l25_ssm4567.c +++ b/sound/soc/intel/boards/skl_nau88l25_ssm4567.c @@ -18,6 +18,7 @@ * GNU General Public License for more details. */ +#include #include #include #include @@ -201,6 +202,7 @@ static int skylake_nau8825_codec_init(struct snd_soc_pcm_runtime *rtd) { int ret; struct snd_soc_codec *codec = rtd->codec; + struct snd_soc_jack *jack; /* * 4 buttons here map to the google Reference headset @@ -215,6 +217,12 @@ static int skylake_nau8825_codec_init(struct snd_soc_pcm_runtime *rtd) return ret; } + jack = &skylake_headset; + + snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_MEDIA); + snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); + snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); + snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN); nau8825_enable_jack_detect(codec, &skylake_headset); snd_soc_dapm_ignore_suspend(&rtd->card->dapm, "SoC DMIC");