hal: audio_extn: enable speaker protection for tasha
Add speaker protection support for wsa speaker.
Change-Id: I5468b2875d0fd028e5c32f25c15b5de0095e7007
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 2fb50c1..8c17895 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -784,7 +784,7 @@
app_type = usecase->stream.out->app_type_cfg.app_type;
if (audio_extn_spkr_prot_is_enabled()) {
- acdb_dev_id = audio_extn_spkr_prot_get_acdb_id(usecase->out_snd_device);
+ acdb_dev_id = platform_get_spkr_prot_acdb_id(usecase->out_snd_device);
} else {
acdb_dev_id = acdb_device_table[usecase->out_snd_device];
}
@@ -1998,7 +1998,7 @@
else if ((usecase->type == PCM_HFP_CALL) || (usecase->type == PCM_CAPTURE))
snd_device = usecase->in_snd_device;
- acdb_dev_id = acdb_device_table[audio_extn_get_spkr_prot_snd_device(snd_device)];
+ acdb_dev_id = acdb_device_table[platform_get_spkr_prot_snd_device(snd_device)];
if (acdb_dev_id < 0) {
ALOGE("%s: Could not find acdb id for device(%d)",
__func__, snd_device);
@@ -4351,6 +4351,63 @@
return ret;
}
+bool platform_can_enable_spkr_prot_on_device(snd_device_t snd_device)
+{
+ bool ret = false;
+
+ if (snd_device == SND_DEVICE_OUT_SPEAKER ||
+ snd_device == SND_DEVICE_OUT_SPEAKER_VBAT ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_VBAT ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER) {
+ ret = true;
+ }
+
+ return ret;
+}
+
+int platform_get_spkr_prot_acdb_id(snd_device_t snd_device)
+{
+ int acdb_id;
+
+ switch(snd_device) {
+ case SND_DEVICE_OUT_SPEAKER:
+ acdb_id = platform_get_snd_device_acdb_id(SND_DEVICE_OUT_SPEAKER_PROTECTED);
+ break;
+ case SND_DEVICE_OUT_VOICE_SPEAKER:
+ acdb_id = platform_get_snd_device_acdb_id(SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED);
+ break;
+ case SND_DEVICE_OUT_SPEAKER_VBAT:
+ acdb_id = platform_get_snd_device_acdb_id(SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT);
+ break;
+ case SND_DEVICE_OUT_VOICE_SPEAKER_VBAT:
+ acdb_id = platform_get_snd_device_acdb_id(SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT);
+ break;
+ default:
+ acdb_id = -EINVAL;
+ break;
+ }
+ return acdb_id;
+}
+
+int platform_get_spkr_prot_snd_device(snd_device_t snd_device)
+{
+ if (!audio_extn_spkr_prot_is_enabled())
+ return snd_device;
+
+ switch(snd_device) {
+ case SND_DEVICE_OUT_SPEAKER:
+ return SND_DEVICE_OUT_SPEAKER_PROTECTED;
+ case SND_DEVICE_OUT_VOICE_SPEAKER:
+ return SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED;
+ case SND_DEVICE_OUT_SPEAKER_VBAT:
+ return SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT;
+ case SND_DEVICE_OUT_VOICE_SPEAKER_VBAT:
+ return SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT;
+ default:
+ return snd_device;
+ }
+}
+
/*
* This is a lookup table to map android audio input device to audio h/w interface (backend).
* The table can be extended for other input devices by adding appropriate entries.