hal: Add open source HAL for Elliptic Ultrasound
Author: Balázs Triszka <balika011@gmail.com>
Date: Thu May 11 03:19:29 2017 +0200
msm8998: ultrasound: Initial open source hal for Elliptic Ultrasound
* Needed for proximity sensor on Xiaomi Mi MIX
[Arasthel]: Change PCM id for Mi MIX 2 implementation
Change-Id: Iaef2266bc1b853d7a9d1e2a906014c6c91019d5f
Signed-off-by: Balázs Triszka <balika011@gmail.com>
Author: Michael Bestas <mkbestas@lineageos.org>
Date: Sat Feb 10 00:28:00 2018 +0200
msm8998: ultrasound: Remove unused code
* Params ultrasound_set_manual_calibration and ultrasound_set_sensitivity
do not exist.
Change-Id: I0004949db19b6ab7d49f20e422984e06a970cfe9
Author: Demon Singur <demonsingur@gmail.com>
Date: Sat Apr 21 09:08:03 2018 +0000
msm8998: hal: Update ultrasound route hacks
Change-Id: If002503dfba0f005f73a4455d68bbcce9d2f617e
Change-Id: I119316f264afbda9faf24950edfbca3891aa9769
Author: Vol Zhdanov <wight554@gmail.com>
Date: Fri Feb 1 02:16:26 2019 +0000
hal: fix channels swap for elliptic ultrasound devices
Change-Id: Id45b075c4ad098c95fcb617da10c56d38565b9c8
Change-Id: Icb18f5b41483d33188be103e13b6c915b6e681b8
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 7d63d17..4a1d49c 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -482,6 +482,9 @@
[USECASE_AUDIO_PLAYBACK_PHONE] = {PHONE_PCM_DEVICE,
PHONE_PCM_DEVICE},
[USECASE_AUDIO_FM_TUNER_EXT] = {-1, -1},
+ [USECASE_AUDIO_ULTRASOUND_RX] = {ULTRASOUND_PCM_DEVICE, -1},
+ [USECASE_AUDIO_ULTRASOUND_TX] = {-1, ULTRASOUND_PCM_DEVICE},
+
};
/* Array to store sound devices */
@@ -584,6 +587,7 @@
[SND_DEVICE_OUT_BUS_SYS] = "bus-speaker",
[SND_DEVICE_OUT_BUS_NAV] = "bus-speaker",
[SND_DEVICE_OUT_BUS_PHN] = "bus-speaker",
+ [SND_DEVICE_OUT_ULTRASOUND_HANDSET] = "ultrasound-handset",
/* Capture sound devices */
[SND_DEVICE_IN_HANDSET_MIC] = "handset-mic",
@@ -722,6 +726,7 @@
[SND_DEVICE_IN_HANDSET_QMIC_AND_EC_REF_LOOPBACK] = "handset-qmic-and-ec-ref-loopback",
[SND_DEVICE_IN_HANDSET_6MIC_AND_EC_REF_LOOPBACK] = "handset-6mic-and-ec-ref-loopback",
[SND_DEVICE_IN_HANDSET_8MIC_AND_EC_REF_LOOPBACK] = "handset-8mic-and-ec-ref-loopback",
+ [SND_DEVICE_IN_ULTRASOUND_MIC] = "ultrasound-mic",
};
// Platform specific backend bit width table
@@ -1281,6 +1286,8 @@
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_PHONE)},
+ {TO_NAME_INDEX(USECASE_AUDIO_ULTRASOUND_RX)},
+ {TO_NAME_INDEX(USECASE_AUDIO_ULTRASOUND_TX)},
};
static const struct name_to_index usecase_type_index[USECASE_TYPE_MAX] = {
@@ -1748,7 +1755,11 @@
usecase = node_to_item(node, struct audio_usecase, list);
if (usecase != NULL && usecase->stream.out &&
- usecase->type == PCM_PLAYBACK) {
+ usecase->type == PCM_PLAYBACK
+#ifdef ELLIPTIC_ULTRASOUND_ENABLED
+ && usecase->id != USECASE_AUDIO_ULTRASOUND_RX
+#endif
+ ) {
int new_snd_device[2] = {0};
int i, num_devices = 1;
@@ -2230,6 +2241,7 @@
hw_interface_table[SND_DEVICE_OUT_BUS_SYS] = strdup("TERT_TDM_RX_0");
hw_interface_table[SND_DEVICE_OUT_BUS_NAV] = strdup("TERT_TDM_RX_1");
hw_interface_table[SND_DEVICE_OUT_BUS_PHN] = strdup("TERT_TDM_RX_2");
+ hw_interface_table[SND_DEVICE_OUT_ULTRASOUND_HANDSET] = strdup("SLIMBUS_0_RX");
hw_interface_table[SND_DEVICE_IN_HANDSET_MIC] = strdup("SLIMBUS_0_TX");
hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_SB] = strdup("SLIMBUS_0_TX");
hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_EXTERNAL] = strdup("SLIMBUS_0_TX");
@@ -2357,6 +2369,8 @@
hw_interface_table[SND_DEVICE_IN_CAMCORDER_SELFIE_PORTRAIT] = strdup("SLIMBUS_0_TX");
hw_interface_table[SND_DEVICE_IN_VOICE_HEARING_AID] = strdup("SLIMBUS_0_TX");
hw_interface_table[SND_DEVICE_IN_BUS] = strdup("TERT_TDM_TX_0");
+ hw_interface_table[SND_DEVICE_IN_ULTRASOUND_MIC] = strdup("SLIMBUS_0_TX");
+
my_data->max_mic_count = PLATFORM_DEFAULT_MIC_COUNT;
/*remove ALAC & APE from DSP decoder list based on software decoder availability*/
@@ -10598,6 +10612,9 @@
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
+#ifdef ELLIPTIC_ULTRASOUND_ENABLED
+ if (usecase->id != USECASE_AUDIO_ULTRASOUND_RX)
+#endif
if (usecase->stream.out && usecase->type == PCM_PLAYBACK &&
usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
/*
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index f638b44..e3dfe84 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -181,6 +181,7 @@
SND_DEVICE_OUT_BUS_SYS,
SND_DEVICE_OUT_BUS_NAV,
SND_DEVICE_OUT_BUS_PHN,
+ SND_DEVICE_OUT_ULTRASOUND_HANDSET,
SND_DEVICE_OUT_END,
/*
@@ -323,6 +324,7 @@
SND_DEVICE_IN_HANDSET_QMIC_AND_EC_REF_LOOPBACK,
SND_DEVICE_IN_HANDSET_6MIC_AND_EC_REF_LOOPBACK,
SND_DEVICE_IN_HANDSET_8MIC_AND_EC_REF_LOOPBACK,
+ SND_DEVICE_IN_ULTRASOUND_MIC,
SND_DEVICE_IN_END,
SND_DEVICE_MAX = SND_DEVICE_IN_END,
@@ -623,6 +625,8 @@
#define AFE_PROXY_PLAYBACK_PCM_DEVICE 7
#define AFE_PROXY_RECORD_PCM_DEVICE 8
+#define ULTRASOUND_PCM_DEVICE 10
+
#ifdef PLATFORM_MSM8x26
#ifdef EXTERNAL_BT_SUPPORTED
#define HFP_SCO_RX 10 // AUXPCM Hostless