From: Radoslaw Biernacki <rad@semihalf.com>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>,
Liam Girdwood <liam.r.girdwood@linux.intel.com>,
Jie Yang <yang.jie@linux.intel.com>,
Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>
Cc: Ben Zhang <benzh@chromium.org>, Marcin Wojtas <mw@semihalf.com>,
Alex Levin <levinale@google.com>,
Chinyue Chen <chinyue@chromium.org>,
Benson Leung <bleung@chromium.org>,
Radoslaw Biernacki <rad@semihalf.com>,
alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org
Subject: [PATCH] ASoC: Intel: Boards: Support headset button function for nau88l25max and nau88l25ssm
Date: Fri, 8 May 2020 00:03:32 +0200 [thread overview]
Message-ID: <20200507220332.24686-1-rad@semihalf.com> (raw)
Map the buttons from the Android reference headset to
KEY_PLAYPAUSE, KEY_VOICECOMMAND, KEY_VOLUMEUP, and KEY_VOLUMEDOWN.
KEY_PLAYPAUSE is used instead of KEY_MEDIA for BTN_0 as it is more
logical and have much broader userspace support. Like Chrome OS
use it to play/pause of video and audio. KEY_PLAYPAUSE is also
supported by Android (USB headset spec requires KEY_PLAYPAUSE
for BTN_0.)
https://source.android.com/devices/accessories/headset/usb-headset-spec
Signed-off-by: Chinyue Chen <chinyue@chromium.org>
Signed-off-by: Benson Leung <bleung@chromium.org>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
---
sound/soc/intel/boards/skl_nau88l25_max98357a.c | 7 +++++++
sound/soc/intel/boards/skl_nau88l25_ssm4567.c | 7 +++++++
2 files changed, 14 insertions(+)
diff --git a/sound/soc/intel/boards/skl_nau88l25_max98357a.c b/sound/soc/intel/boards/skl_nau88l25_max98357a.c
index d7b8154c43a4..103ea94c3bd1 100644
--- a/sound/soc/intel/boards/skl_nau88l25_max98357a.c
+++ b/sound/soc/intel/boards/skl_nau88l25_max98357a.c
@@ -6,6 +6,7 @@
* Copyright (C) 2015, Intel Corporation. All rights reserved.
*/
+#include <linux/input.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <sound/core.h>
@@ -158,6 +159,7 @@ static int skylake_nau8825_codec_init(struct snd_soc_pcm_runtime *rtd)
{
int ret;
struct snd_soc_component *component = asoc_rtd_to_codec(rtd, 0)->component;
+ struct snd_soc_jack *jack;
/*
* Headset buttons map to the google Reference headset.
@@ -172,6 +174,11 @@ 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_PLAYPAUSE);
+ 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(component, &skylake_headset);
snd_soc_dapm_ignore_suspend(&rtd->card->dapm, "SoC DMIC");
diff --git a/sound/soc/intel/boards/skl_nau88l25_ssm4567.c b/sound/soc/intel/boards/skl_nau88l25_ssm4567.c
index 4b317bcf6ea0..1528e72c3a11 100644
--- a/sound/soc/intel/boards/skl_nau88l25_ssm4567.c
+++ b/sound/soc/intel/boards/skl_nau88l25_ssm4567.c
@@ -10,6 +10,7 @@
* Copyright (C) 2015, Intel Corporation. All rights reserved.
*/
+#include <linux/input.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <sound/core.h>
@@ -177,6 +178,7 @@ static int skylake_nau8825_codec_init(struct snd_soc_pcm_runtime *rtd)
{
int ret;
struct snd_soc_component *component = asoc_rtd_to_codec(rtd, 0)->component;
+ struct snd_soc_jack *jack;
/*
* 4 buttons here map to the google Reference headset
@@ -191,6 +193,11 @@ 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_PLAYPAUSE);
+ 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(component, &skylake_headset);
snd_soc_dapm_ignore_suspend(&rtd->card->dapm, "SoC DMIC");
base-commit: f8729a41aa17f5eb5291a0e78926154e948bb4ad
--
2.17.1
next reply other threads:[~2020-05-07 22:03 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-07 22:03 Radoslaw Biernacki [this message]
2020-05-08 14:45 ` [PATCH] ASoC: Intel: Boards: Support headset button function for nau88l25max and nau88l25ssm Pierre-Louis Bossart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200507220332.24686-1-rad@semihalf.com \
--to=rad@semihalf.com \
--cc=alsa-devel@alsa-project.org \
--cc=benzh@chromium.org \
--cc=bleung@chromium.org \
--cc=chinyue@chromium.org \
--cc=levinale@google.com \
--cc=liam.r.girdwood@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mw@semihalf.com \
--cc=perex@perex.cz \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=tiwai@suse.com \
--cc=yang.jie@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox