Re: [PATCH 1/2] ASoC: rt711: remap buttons
On Thu, Jun 17, 2021 at 01:19:05PM +0000, Shuming [范書銘] wrote:
This patch uses the same mapping as the machine driver: BTN_0 : KEY_PLAYPAUSE BTN_1 : KEY_VOICECOMMAND BTN_2 : KEY_VOLUMEUP BTN_3 : KEY_VOLUMEDOWN
Which machine driver? Can't there be multiple machine drivers, and if they're already overriding things why do this?
The rt711 codec is designed in the Intel platform only for now.
I'm sure your sales team would be happy to change that!
The machine driver is 'sof_sdw.c' that resides under sound/soc/intel/boards. It seems Intel uses the same mapping in all other Intel machine drivers. Please check the commit as below. https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/commit/?id...
Sure, but if the machine drivers for these platforms already do the right thing why change the CODEC driver?
Hi Sathya, Do you know why the m/c driver uses this mapping?
I'd guess it's just because that's the standard set of headphone buttons that Intel uses for their platforms.
On 6/17/21 8:27 AM, Mark Brown wrote:
On Thu, Jun 17, 2021 at 01:19:05PM +0000, Shuming [范書銘] wrote:
This patch uses the same mapping as the machine driver: BTN_0 : KEY_PLAYPAUSE BTN_1 : KEY_VOICECOMMAND BTN_2 : KEY_VOLUMEUP BTN_3 : KEY_VOLUMEDOWN
Which machine driver? Can't there be multiple machine drivers, and if they're already overriding things why do this?
The rt711 codec is designed in the Intel platform only for now.
I'm sure your sales team would be happy to change that!
The machine driver is 'sof_sdw.c' that resides under sound/soc/intel/boards. It seems Intel uses the same mapping in all other Intel machine drivers. Please check the commit as below. https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/commit/?id...
Sure, but if the machine drivers for these platforms already do the right thing why change the CODEC driver?
Hi Sathya, Do you know why the m/c driver uses this mapping?
I'd guess it's just because that's the standard set of headphone buttons that Intel uses for their platforms.
Intel has no specific requirement, we just follow what the Google 4-button description says [1]
That said, I can't recall why half of the machine drivers follow one pattern and the other half a different one.
Same as spec: sof_da7219_max98373.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);
sof_cs42l42.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);
swap wrt. spec: sof_sdw_rt711.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
kbl_rt5663_max98927.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
Brent, Curtis, Jimmy, can you comment on the order?
[1] https://source.android.com/devices/accessories/headset/plug-headset-spec#con...
On Thu, Jun 17, 2021 at 7:23 AM Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com wrote:
On 6/17/21 8:27 AM, Mark Brown wrote:
On Thu, Jun 17, 2021 at 01:19:05PM +0000, Shuming [范書銘] wrote:
This patch uses the same mapping as the machine driver: BTN_0 : KEY_PLAYPAUSE BTN_1 : KEY_VOICECOMMAND BTN_2 : KEY_VOLUMEUP BTN_3 : KEY_VOLUMEDOWN
Which machine driver? Can't there be multiple machine drivers, and if they're already overriding things why do this?
The rt711 codec is designed in the Intel platform only for now.
I'm sure your sales team would be happy to change that!
The machine driver is 'sof_sdw.c' that resides under sound/soc/intel/boards. It seems Intel uses the same mapping in all other Intel machine drivers. Please check the commit as below. https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/commit/?id...
Sure, but if the machine drivers for these platforms already do the right thing why change the CODEC driver?
Hi Sathya, Do you know why the m/c driver uses this mapping?
I'd guess it's just because that's the standard set of headphone buttons that Intel uses for their platforms.
Intel has no specific requirement, we just follow what the Google 4-button description says [1]
That said, I can't recall why half of the machine drivers follow one pattern and the other half a different one.
Same as spec: sof_da7219_max98373.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);
sof_cs42l42.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);
swap wrt. spec: sof_sdw_rt711.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
kbl_rt5663_max98927.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
Brent, Curtis, Jimmy, can you comment on the order?
Sorry for the late reply, I couldn't figure out why this slipped by my email filter, I guess I should look closer next time. Soraka has been checked (kbl_rt5663_max98927) and yes the mapping does appear to be incorrect, volume up key returns voice command in evtest. Sathya will have to check the headset button mapping, on rt711 but my guess is it is also incorrect.
[1] https://source.android.com/devices/accessories/headset/plug-headset-spec#con...
Intel has no specific requirement, we just follow what the Google 4-button description says [1]
That said, I can't recall why half of the machine drivers follow one pattern and the other half a different one.
Same as spec: sof_da7219_max98373.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);
sof_cs42l42.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);
swap wrt. spec: sof_sdw_rt711.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
kbl_rt5663_max98927.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
Brent, Curtis, Jimmy, can you comment on the order?
Sorry for the late reply, I couldn't figure out why this slipped by my email filter, I guess I should look closer next time. Soraka has been checked (kbl_rt5663_max98927) and yes the mapping does appear to be incorrect, volume up key returns voice command in evtest. Sathya will have to check the headset button mapping, on rt711 but my guess is it is also incorrect.
I stand corrected, misread the datasheet. So rt711 and rt5663 are correct based on datasheet specs but when grabbing an off the shelf headphone they did not work with the volume up. Hmm, I wonder if this split is "what usually works" and "what is correct."
swap wrt. spec: sof_sdw_rt711.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0,
KEY_PLAYPAUSE);
sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1,
KEY_VOICECOMMAND);
sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2,
KEY_VOLUMEUP);
sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3,
KEY_VOLUMEDOWN);
kbl_rt5663_max98927.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
Brent, Curtis, Jimmy, can you comment on the order?
Sorry for the late reply, I couldn't figure out why this slipped by my email filter, I guess I should look closer next time. Soraka has been checked (kbl_rt5663_max98927) and yes the mapping does appear to be incorrect, volume up key returns voice command in evtest. Sathya will have to check the headset button mapping, on rt711 but my guess is it is also incorrect.
I stand corrected, misread the datasheet. So rt711 and rt5663 are correct based on datasheet specs but when grabbing an off the shelf headphone they did not work with the volume up. Hmm, I wonder if this split is "what usually works" and "what is correct."
Thanks for your reply, Curtis. This patch just changes the mapping to let the button function work properly.
Hi Mark, Do I need to resend the patch? Or any comments?
------Please consider the environment before printing this e-mail.
On Wed, Jun 30, 2021 at 06:01:52AM +0000, Shuming [范書銘] wrote:
Do I need to resend the patch? Or any comments?
None of this has answered my original question - to repeat why would we change the defaults in the CODEC driver given that the machines can already set what they want anyway and apparently are already doing so?
Intel has no specific requirement, we just follow what the Google 4-button description says [1]
That said, I can't recall why half of the machine drivers follow one pattern and the other half a different one.
Same as spec: sof_da7219_max98373.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); sof_da7219_max98373.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);
sof_cs42l42.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); sof_cs42l42.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);
swap wrt. spec: sof_sdw_rt711.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); sof_sdw_rt711.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
kbl_rt5663_max98927.c: snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); kbl_rt5663_max98927.c- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
Brent, Curtis, Jimmy, can you comment on the order?
[1] https://source.android.com/devices/accessories/headset/plug-headset- spec#control-function_mapping
Hi Pierre,
I just shared the link [1] with ODM and codec vendor to double check the mapping is following the requirement.
Regards, Brent
participants (5)
-
Curtis Malainey
-
Lu, Brent
-
Mark Brown
-
Pierre-Louis Bossart
-
Shuming [范書銘]