summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRavi Kumar Alamanda <ralama@codeaurora.org>2015-07-09 19:30:54 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-09 19:30:54 +0000
commit8a25cdef5a77bd8505b70df76c7f4e737d6af555 (patch)
tree2ed8de708971902a091584a003ebe8d8a46cf596
parent45849f6968a68593f61bd9dc71b91fa1c7dc6ad1 (diff)
parent3b86d472a707dd29cd692909fc80cf45a8fec481 (diff)
downloadhardware_qcom_audio-8a25cdef5a77bd8505b70df76c7f4e737d6af555.tar.gz
hardware_qcom_audio-8a25cdef5a77bd8505b70df76c7f4e737d6af555.tar.bz2
hardware_qcom_audio-8a25cdef5a77bd8505b70df76c7f4e737d6af555.zip
am 3b86d472: hal: add speaker-safe headphones/line combo devices
* commit '3b86d472a707dd29cd692909fc80cf45a8fec481': hal: add speaker-safe headphones/line combo devices
-rwxr-xr-xhal/audio_extn/dsm_feedback.c6
-rw-r--r--hal/msm8974/platform.c35
-rw-r--r--hal/msm8974/platform.h2
3 files changed, 37 insertions, 6 deletions
diff --git a/hal/audio_extn/dsm_feedback.c b/hal/audio_extn/dsm_feedback.c
index e5c3c453..e340dae6 100755
--- a/hal/audio_extn/dsm_feedback.c
+++ b/hal/audio_extn/dsm_feedback.c
@@ -95,9 +95,11 @@ void audio_extn_dsm_feedback_enable(struct audio_device *adev,
if( snd_device == SND_DEVICE_OUT_SPEAKER ||
snd_device == SND_DEVICE_OUT_SPEAKER_REVERSE ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER ||
snd_device == SND_DEVICE_OUT_SPEAKER_SAFE ||
snd_device == SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES ||
- snd_device == SND_DEVICE_OUT_VOICE_SPEAKER ||
- snd_device == SND_DEVICE_OUT_SPEAKER_AND_LINE )
+ snd_device == SND_DEVICE_OUT_SPEAKER_AND_LINE ||
+ snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES ||
+ snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE )
start_dsm_feedback_processing(adev, benable);
}
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index a8005db5..1b6a569a 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -158,7 +158,9 @@ static const char * const device_table[SND_DEVICE_MAX] = {
[SND_DEVICE_OUT_HEADPHONES] = "headphones",
[SND_DEVICE_OUT_LINE] = "line",
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = "speaker-and-headphones",
+ [SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES] = "speaker-safe-and-headphones",
[SND_DEVICE_OUT_SPEAKER_AND_LINE] = "speaker-and-line",
+ [SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE] = "speaker-safe-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",
@@ -236,7 +238,9 @@ static int acdb_device_table[SND_DEVICE_MAX] = {
[SND_DEVICE_OUT_HEADPHONES] = 10,
[SND_DEVICE_OUT_LINE] = 77,
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = 10,
+ [SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES] = 10,
[SND_DEVICE_OUT_SPEAKER_AND_LINE] = 77,
+ [SND_DEVICE_OUT_SPEAKER_SAFE_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,
@@ -320,7 +324,9 @@ static const struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = {
{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_SAFE_AND_HEADPHONES)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_LINE)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_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)},
@@ -731,7 +737,9 @@ static void set_platform_defaults(struct platform_data * my_data __unused)
hw_interface_table[SND_DEVICE_OUT_HEADPHONES] = strdup("SLIMBUS_0_RX");
hw_interface_table[SND_DEVICE_OUT_LINE] = strdup("SLIMBUS_0_RX");
hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = strdup("SLIMBUS_0_RX");
+ hw_interface_table[SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES] = strdup("SLIMBUS_0_RX");
hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_LINE] = strdup("SLIMBUS_0_RX");
+ hw_interface_table[SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE] = strdup("SLIMBUS_0_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_HANDSET] = strdup("SLIMBUS_0_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_HAC_HANDSET] = strdup("SLIMBUS_0_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_SPEAKER] = strdup("SLIMBUS_0_RX");
@@ -1436,6 +1444,18 @@ bool platform_can_split_snd_device(snd_device_t snd_device,
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
new_snd_devices[1] = SND_DEVICE_OUT_LINE;
status = true;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE, SND_DEVICE_OUT_HEADPHONES)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE;
+ new_snd_devices[1] = SND_DEVICE_OUT_HEADPHONES;
+ status = true;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE, SND_DEVICE_OUT_LINE)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE;
+ new_snd_devices[1] = SND_DEVICE_OUT_LINE;
+ status = true;
}
return status;
}
@@ -1498,14 +1518,21 @@ snd_device_t platform_get_output_snd_device(void *platform, audio_devices_t devi
if (popcount(devices) == 2) {
if (devices == (AUDIO_DEVICE_OUT_WIRED_HEADPHONE |
- AUDIO_DEVICE_OUT_SPEAKER)) {
- snd_device = SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES;
- } else if (devices == (AUDIO_DEVICE_OUT_WIRED_HEADSET |
- AUDIO_DEVICE_OUT_SPEAKER)) {
+ AUDIO_DEVICE_OUT_SPEAKER) ||
+ 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_WIRED_HEADPHONE |
+ AUDIO_DEVICE_OUT_SPEAKER_SAFE) ||
+ devices == (AUDIO_DEVICE_OUT_WIRED_HEADSET |
+ AUDIO_DEVICE_OUT_SPEAKER_SAFE)) {
+ snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES;
+ } else if (devices == (AUDIO_DEVICE_OUT_LINE |
+ AUDIO_DEVICE_OUT_SPEAKER_SAFE)) {
+ snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_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 25b24d19..5b7068b2 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -45,7 +45,9 @@ enum {
SND_DEVICE_OUT_HEADPHONES,
SND_DEVICE_OUT_LINE,
SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES,
+ SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES,
SND_DEVICE_OUT_SPEAKER_AND_LINE,
+ SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE,
SND_DEVICE_OUT_VOICE_HANDSET,
SND_DEVICE_OUT_VOICE_SPEAKER,
SND_DEVICE_OUT_VOICE_HEADPHONES,