hal: updates for DEVICE_OUT_LINE
- support dual-route
- change ACDB ID to 77 for gain tuning independent of headset
Bug 17722311
Change-Id: I5c574dc08e26fa053f60337acb17fb5b73ebbaa1
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 0d462a1..887f4f2 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -134,6 +134,7 @@
[SND_DEVICE_OUT_HEADPHONES] = "headphones",
[SND_DEVICE_OUT_LINE] = "line",
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = "speaker-and-headphones",
+ [SND_DEVICE_OUT_SPEAKER_AND_LINE] = "speaker-and-line",
[SND_DEVICE_OUT_VOICE_HANDSET] = "voice-handset",
[SND_DEVICE_OUT_VOICE_HAC_HANDSET] = "voice-hac-handset",
[SND_DEVICE_OUT_VOICE_SPEAKER] = "voice-speaker",
@@ -203,13 +204,14 @@
[SND_DEVICE_OUT_SPEAKER_REVERSE] = 15,
[SND_DEVICE_OUT_SPEAKER_SAFE] = 15,
[SND_DEVICE_OUT_HEADPHONES] = 10,
- [SND_DEVICE_OUT_LINE] = 10,
+ [SND_DEVICE_OUT_LINE] = 77,
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = 10,
+ [SND_DEVICE_OUT_SPEAKER_AND_LINE] = 77,
[SND_DEVICE_OUT_VOICE_HANDSET] = ACDB_ID_VOICE_HANDSET,
[SND_DEVICE_OUT_VOICE_SPEAKER] = ACDB_ID_VOICE_SPEAKER,
[SND_DEVICE_OUT_VOICE_HAC_HANDSET] = 53,
[SND_DEVICE_OUT_VOICE_HEADPHONES] = 10,
- [SND_DEVICE_OUT_VOICE_LINE] = 10,
+ [SND_DEVICE_OUT_VOICE_LINE] = 77,
[SND_DEVICE_OUT_HDMI] = 18,
[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = 15,
[SND_DEVICE_OUT_BT_SCO] = 22,
@@ -282,6 +284,7 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_HEADPHONES)},
{TO_NAME_INDEX(SND_DEVICE_OUT_LINE)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_LINE)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HANDSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_SPEAKER)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HEADPHONES)},
@@ -620,6 +623,8 @@
backend_table[SND_DEVICE_OUT_SPEAKER_REVERSE] = strdup("speaker");
backend_table[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] =
strdup("speaker-and-headphones");
+ backend_table[SND_DEVICE_OUT_SPEAKER_AND_LINE] =
+ strdup("speaker-and-line");
}
if (my_data->ext_earpiece) {
@@ -1214,6 +1219,9 @@
} else if (devices == (AUDIO_DEVICE_OUT_WIRED_HEADSET |
AUDIO_DEVICE_OUT_SPEAKER)) {
snd_device = SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES;
+ } else if (devices == (AUDIO_DEVICE_OUT_LINE |
+ AUDIO_DEVICE_OUT_SPEAKER)) {
+ snd_device = SND_DEVICE_OUT_SPEAKER_AND_LINE;
} else if (devices == (AUDIO_DEVICE_OUT_AUX_DIGITAL |
AUDIO_DEVICE_OUT_SPEAKER)) {
snd_device = SND_DEVICE_OUT_SPEAKER_AND_HDMI;
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 59f48e0..a785fa0 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -44,6 +44,7 @@
SND_DEVICE_OUT_HEADPHONES,
SND_DEVICE_OUT_LINE,
SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES,
+ SND_DEVICE_OUT_SPEAKER_AND_LINE,
SND_DEVICE_OUT_VOICE_HANDSET,
SND_DEVICE_OUT_VOICE_SPEAKER,
SND_DEVICE_OUT_VOICE_HEADPHONES,