Merge "pal: Add sleep during second stage processing."
diff --git a/Pal.cpp b/Pal.cpp
index 336521d..82e9529 100644
--- a/Pal.cpp
+++ b/Pal.cpp
@@ -282,13 +282,14 @@
return status;
}
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
if (!rm->isActiveStream(stream_handle)) {
status = -EINVAL;
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
return status;
}
- rm->unlockValidStreamMutex();
+
+ rm->unlockActiveStream();
s = reinterpret_cast<Stream *>(stream_handle);
s->setCachedState(STREAM_IDLE);
@@ -339,21 +340,20 @@
goto exit;
}
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
if (!rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
status = -EINVAL;
goto exit;
}
-
s = reinterpret_cast<Stream *>(stream_handle);
status = rm->increaseStreamUserCounter(s);
if (0 != status) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
PAL_ERR(LOG_TAG, "failed to increase stream user count");
goto exit;
}
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
s->getStreamAttributes(&sAttr);
if (sAttr.type == PAL_STREAM_VOICE_UI)
@@ -361,9 +361,9 @@
status = s->start();
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
if (0 != status) {
PAL_ERR(LOG_TAG, "stream start failed. status %d", status);
@@ -394,9 +394,9 @@
goto exit;
}
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
if (!rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
status = -EINVAL;
goto exit;
}
@@ -404,17 +404,17 @@
s = reinterpret_cast<Stream *>(stream_handle);
status = rm->increaseStreamUserCounter(s);
if (0 != status) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
PAL_ERR(LOG_TAG, "failed to increase stream user count");
goto exit;
}
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
s->setCachedState(STREAM_STOPPED);
status = s->stop();
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
if (0 != status) {
PAL_ERR(LOG_TAG, "stream stop failed. status : %d", status);
@@ -430,41 +430,18 @@
{
Stream *s = NULL;
int status;
- std::shared_ptr<ResourceManager> rm = NULL;
-
- rm = ResourceManager::getInstance();
- if (!rm) {
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- status = -EINVAL;
- return status;
- }
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle) || !buf) {
- rm->unlockValidStreamMutex();
+ if (!stream_handle || !buf) {
status = -EINVAL;
PAL_ERR(LOG_TAG, "Invalid input parameters status %d", status);
return status;
}
-
PAL_VERBOSE(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
-
status = s->write(buf);
if (status < 0) {
PAL_ERR(LOG_TAG, "stream write failed status %d", status);
+ return status;
}
-
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
-
PAL_VERBOSE(LOG_TAG, "Exit. status %d", status);
return status;
}
@@ -473,40 +450,18 @@
{
Stream *s = NULL;
int status;
- std::shared_ptr<ResourceManager> rm = NULL;
-
- rm = ResourceManager::getInstance();
- if (!rm) {
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- status = -EINVAL;
- return status;
- }
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle) || !buf) {
- rm->unlockValidStreamMutex();
+ if (!stream_handle || !buf) {
status = -EINVAL;
PAL_ERR(LOG_TAG, "Invalid input parameters status %d", status);
return status;
}
-
PAL_VERBOSE(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
-
status = s->read(buf);
if (status < 0) {
PAL_ERR(LOG_TAG, "stream read failed status %d", status);
+ return status;
}
-
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
PAL_VERBOSE(LOG_TAG, "Exit. status %d", status);
return status;
}
@@ -516,18 +471,8 @@
{
Stream *s = NULL;
int status;
- std::shared_ptr<ResourceManager> rm = NULL;
- rm = ResourceManager::getInstance();
- if (!rm) {
- status = -EINVAL;
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- return status;
- }
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ if (!stream_handle) {
status = -EINVAL;
PAL_ERR(LOG_TAG, "Invalid input parameters status %d", status);
return status;
@@ -535,22 +480,11 @@
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
-
status = s->getParameters(param_id, (void **)param_payload);
if (0 != status) {
PAL_ERR(LOG_TAG, "get parameters failed status %d param_id %u", status, param_id);
+ return status;
}
-
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
PAL_DBG(LOG_TAG, "Exit. status %d", status);
return status;
}
@@ -562,46 +496,29 @@
int status;
std::shared_ptr<ResourceManager> rm = NULL;
+ if (!stream_handle) {
+ status = -EINVAL;
+ PAL_ERR(LOG_TAG, "Invalid stream handle, status %d", status);
+ return status;
+ }
+ PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK param_id %d", stream_handle,
+ param_id);
+ s = reinterpret_cast<Stream *>(stream_handle);
+ if (PAL_PARAM_ID_UIEFFECT == param_id) {
+ status = s->setEffectParameters((void *)param_payload);
+ } else {
+ status = s->setParameters(param_id, (void *)param_payload);
+ }
+ if (0 != status) {
+ PAL_ERR(LOG_TAG, "set parameters failed status %d param_id %u", status, param_id);
+ return status;
+ }
rm = ResourceManager::getInstance();
if (!rm) {
status = -EINVAL;
PAL_ERR(LOG_TAG, "Invalid resource manager");
return status;
}
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
- status = -EINVAL;
- PAL_ERR(LOG_TAG, "Invalid stream handle, status %d", status);
- return status;
- }
-
- PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK param_id %d", stream_handle,
- param_id);
- s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
-
- if (PAL_PARAM_ID_UIEFFECT == param_id) {
- status = s->setEffectParameters((void *)param_payload);
- } else {
- status = s->setParameters(param_id, (void *)param_payload);
- }
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
-
- if (0 != status) {
- PAL_ERR(LOG_TAG, "set parameters failed status %d param_id %u", status, param_id);
- return status;
- }
-
if (param_id == PAL_PARAM_ID_STOP_BUFFERING) {
PAL_DBG(LOG_TAG, "Buffering stopped, handle deferred LPI<->NLPI switch");
rm->handleDeferredSwitch();
@@ -631,9 +548,9 @@
}
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
if (!rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
status = -EINVAL;
return status;
}
@@ -641,19 +558,19 @@
s = reinterpret_cast<Stream *>(stream_handle);
status = rm->increaseStreamUserCounter(s);
if (0 != status) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
PAL_ERR(LOG_TAG, "failed to increase stream user count");
return status;
}
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
s->lockStreamMutex();
status = s->setVolume(volume);
s->unlockStreamMutex();
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
if (0 != status) {
PAL_ERR(LOG_TAG, "setVolume failed with status %d", status);
@@ -684,9 +601,9 @@
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
if (!rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
status = -EINVAL;
goto exit;
}
@@ -694,20 +611,20 @@
s = reinterpret_cast<Stream *>(stream_handle);
status = rm->increaseStreamUserCounter(s);
if (0 != status) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
PAL_ERR(LOG_TAG, "failed to increase stream user count");
goto exit;
}
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
status = s->mute(state);
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
if (0 != status) {
PAL_ERR(LOG_TAG, "mute failed with status %d", status);
- return status;
+ goto exit;
}
exit:
@@ -719,18 +636,8 @@
{
Stream *s = NULL;
int status;
- std::shared_ptr<ResourceManager> rm = NULL;
- rm = ResourceManager::getInstance();
- if (!rm) {
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- status = -EINVAL;
- return status;
- }
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ if (!stream_handle) {
status = -EINVAL;
PAL_ERR(LOG_TAG, "Invalid stream handle status %d", status);
return status;
@@ -738,21 +645,11 @@
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
-
status = s->pause();
if (0 != status) {
PAL_ERR(LOG_TAG, "pal_stream_pause failed with status %d", status);
+ return status;
}
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
PAL_DBG(LOG_TAG, "Exit. status %d", status);
return status;
}
@@ -761,18 +658,8 @@
{
Stream *s = NULL;
int status;
- std::shared_ptr<ResourceManager> rm = NULL;
- rm = ResourceManager::getInstance();
- if (!rm) {
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- status = -EINVAL;
- return status;
- }
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ if (!stream_handle) {
status = -EINVAL;
PAL_ERR(LOG_TAG, "Invalid stream handle status %d", status);
return status;
@@ -780,21 +667,13 @@
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
status = s->resume();
if (0 != status) {
PAL_ERR(LOG_TAG, "resume failed with status %d", status);
+ return status;
}
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
+
PAL_DBG(LOG_TAG, "Exit. status %d", status);
return status;
}
@@ -820,9 +699,11 @@
goto exit;
}
- rm->lockValidStreamMutex();
+ PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
+
+ rm->lockActiveStream();
if (!rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
status = -EINVAL;
goto exit;
}
@@ -830,17 +711,17 @@
s = reinterpret_cast<Stream *>(stream_handle);
status = rm->increaseStreamUserCounter(s);
if (0 != status) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
PAL_ERR(LOG_TAG, "failed to increase stream user count");
goto exit;
}
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
status = s->drain(type);
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
if (0 != status) {
PAL_ERR(LOG_TAG, "drain failed with status %d", status);
@@ -855,18 +736,8 @@
{
Stream *s = NULL;
int status;
- std::shared_ptr<ResourceManager> rm = NULL;
- rm = ResourceManager::getInstance();
- if (!rm) {
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- status = -EINVAL;
- return status;
- }
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ if (!stream_handle) {
status = -EINVAL;
PAL_ERR(LOG_TAG, "Invalid stream handle status %d", status);
return status;
@@ -874,22 +745,13 @@
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
status = s->flush();
if (0 != status) {
PAL_ERR(LOG_TAG, "flush failed with status %d", status);
+ return status;
}
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
PAL_DBG(LOG_TAG, "Exit. status %d", status);
return status;
}
@@ -898,18 +760,8 @@
{
Stream *s = NULL;
int status;
- std::shared_ptr<ResourceManager> rm = NULL;
- rm = ResourceManager::getInstance();
- if (!rm) {
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- status = -EINVAL;
- return status;
- }
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ if (!stream_handle) {
status = -EINVAL;
PAL_ERR(LOG_TAG, "Invalid stream handle status %d", status);
return status;
@@ -917,22 +769,12 @@
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
status = s->suspend();
if (0 != status) {
PAL_ERR(LOG_TAG, "suspend failed with status %d", status);
}
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
PAL_DBG(LOG_TAG, "Exit. status %d", status);
return status;
}
@@ -943,40 +785,21 @@
{
Stream *s = NULL;
int status;
- std::shared_ptr<ResourceManager> rm = NULL;
- rm = ResourceManager::getInstance();
- if (!rm) {
- PAL_ERR(LOG_TAG, "Invalid resource manager");
+ if (!stream_handle) {
status = -EINVAL;
- return status;
- }
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
- status = -EINVAL;
- PAL_ERR(LOG_TAG, "Invalid stream handle status %d", status);
+ PAL_ERR(LOG_TAG, "Invalid input parameters status %d", status);
return status;
}
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
status = s->setBufInfo(in_buffer_cfg, out_buffer_cfg);
if (0 != status) {
PAL_ERR(LOG_TAG, "pal_stream_set_buffer_size failed with status %d", status);
+ return status;
}
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
PAL_DBG(LOG_TAG, "Exit. status %d", status);
return status;
}
@@ -989,32 +812,27 @@
std::shared_ptr<ResourceManager> rm = NULL;
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK\n", stream_handle);
+ if (!stream_handle) {
+ PAL_ERR(LOG_TAG, "Invalid input parameters status %d\n", status);
+ return status;
+ }
+
rm = ResourceManager::getInstance();
if (!rm) {
PAL_ERR(LOG_TAG, "Invalid resource manager");
return status;
}
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
- status = -EINVAL;
- PAL_ERR(LOG_TAG, "Invalid stream handle status %d", status);
- return status;
- }
- s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
- status = s->getTimestamp(stime);
+ PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK\n", stream_handle);
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
+ rm->lockActiveStream();
+ if (rm->isActiveStream(stream_handle)) {
+ s = reinterpret_cast<Stream *>(stream_handle);
+ status = s->getTimestamp(stime);
+ } else {
+ PAL_ERR(LOG_TAG, "stream handle in stale state.\n");
+ }
+ rm->unlockActiveStream();
if (0 != status) {
PAL_ERR(LOG_TAG, "pal_get_timestamp failed with status %d\n", status);
@@ -1034,18 +852,8 @@
{
Stream *s = NULL;
int status = 0;
- std::shared_ptr<ResourceManager> rm = NULL;
- rm = ResourceManager::getInstance();
- if (!rm) {
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- status = -EINVAL;
- return status;
- }
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ if (!stream_handle) {
status = -EINVAL;
PAL_ERR(LOG_TAG, "Invalid stream handle status %d", status);
return status;
@@ -1053,22 +861,11 @@
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
-
status = s->addRemoveEffect(effect, enable);
if (0 != status) {
PAL_ERR(LOG_TAG, "pal_add_effect failed with status %d", status);
+ return status;
}
-
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
PAL_DBG(LOG_TAG, "Exit. status %d", status);
return status;
@@ -1107,9 +904,11 @@
return status;
}
- rm->lockValidStreamMutex();
+ PAL_INFO(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
+
+ rm->lockActiveStream();
if (!rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
status = -EINVAL;
return status;
}
@@ -1119,11 +918,11 @@
s = reinterpret_cast<Stream *>(stream_handle);
status = rm->increaseStreamUserCounter(s);
if (0 != status) {
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
PAL_ERR(LOG_TAG, "failed to increase stream user count");
return status;
}
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
s->getStreamAttributes(&sattr);
@@ -1247,9 +1046,9 @@
}
exit:
- rm->lockValidStreamMutex();
+ rm->lockActiveStream();
rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
+ rm->unlockActiveStream();
if (pDevices)
free(pDevices);
PAL_INFO(LOG_TAG, "Exit. status %d", status);
@@ -1261,18 +1060,8 @@
{
int status = 0;
Stream *s = NULL;
- std::shared_ptr<ResourceManager> rm = NULL;
- rm = ResourceManager::getInstance();
- if (!rm) {
- status = -EINVAL;
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- return status;
- }
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
+ if (!stream_handle) {
status = -EINVAL;
PAL_ERR(LOG_TAG, "Invalid stream handle status %d", status);
return status;
@@ -1281,19 +1070,8 @@
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
-
status = s->getTagsWithModuleInfo(size, payload);
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
PAL_DBG(LOG_TAG, "Exit. Stream handle: %pK, status %d", stream_handle, status);
return status;
}
@@ -1349,41 +1127,20 @@
{
Stream *s = NULL;
int status;
- std::shared_ptr<ResourceManager> rm = NULL;
- rm = ResourceManager::getInstance();
- if (!rm) {
+ if (!stream_handle) {
status = -EINVAL;
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- return status;
- }
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
- status = -EINVAL;
- PAL_ERR(LOG_TAG, "Invalid stream handle status %d", status);
+ PAL_ERR(LOG_TAG, "Invalid input parameters status %d", status);
return status;
}
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
-
status = s->GetMmapPosition(position);
if (0 != status) {
PAL_ERR(LOG_TAG, "pal_stream_get_mmap_position failed with status %d", status);
+ return status;
}
-
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
PAL_DBG(LOG_TAG, "Exit. status %d", status);
return status;
}
@@ -1394,41 +1151,20 @@
{
Stream *s = NULL;
int status;
- std::shared_ptr<ResourceManager> rm = NULL;
- rm = ResourceManager::getInstance();
- if (!rm) {
+ if (!stream_handle) {
status = -EINVAL;
- PAL_ERR(LOG_TAG, "Invalid resource manager");
- return status;
- }
-
- rm->lockValidStreamMutex();
- if (!stream_handle || !rm->isActiveStream(stream_handle)) {
- rm->unlockValidStreamMutex();
- status = -EINVAL;
- PAL_ERR(LOG_TAG, "Invalid stream handle status %d", status);
+ PAL_ERR(LOG_TAG, "Invalid input parameters status %d", status);
return status;
}
PAL_DBG(LOG_TAG, "Enter. Stream handle :%pK", stream_handle);
s = reinterpret_cast<Stream *>(stream_handle);
- status = rm->increaseStreamUserCounter(s);
- if (0 != status) {
- rm->unlockValidStreamMutex();
- PAL_ERR(LOG_TAG, "failed to increase stream user count");
- return status;
- }
- rm->unlockValidStreamMutex();
-
status = s->createMmapBuffer(min_size_frames, info);
if (0 != status) {
PAL_ERR(LOG_TAG, "pal_stream_create_mmap_buffer failed with status %d", status);
+ return status;
}
-
- rm->lockValidStreamMutex();
- rm->decreaseStreamUserCounter(s);
- rm->unlockValidStreamMutex();
PAL_DBG(LOG_TAG, "Exit. status %d", status);
return status;
}
diff --git a/configs/kalama/mixer_paths_kalama_aim.xml b/configs/kalama/mixer_paths_kalama_aim.xml
new file mode 100644
index 0000000..dd86f3d
--- /dev/null
+++ b/configs/kalama/mixer_paths_kalama_aim.xml
@@ -0,0 +1,1509 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
+
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of The Linux Foundation nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Changes from Qualcomm Innovation Center, Inc. are provided under the following license:
+*
+* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted (subject to the limitations in the
+* disclaimer below) provided that the following conditions are met:
+*
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+*
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+*
+* * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
+* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+
+<mixer>
+ <!-- These are the initial mixer settings -->
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="0" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="0" />
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_1" value="0" />
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_2" value="0" />
+
+ <!-- WSA controls -->
+ <ctl name="WSA RX0 MUX" value="ZERO" />
+ <ctl name="WSA RX1 MUX" value="ZERO" />
+ <ctl name="WSA_RX0 INP0" value="ZERO" />
+ <ctl name="WSA_RX1 INP0" value="ZERO" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="0" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="0" />
+ <ctl name="WSA PBR Enable" value="0" />
+ <ctl name="Idle Detect" value="0" />
+ <ctl name="WSA SPKRRECV" value="0" />
+ <ctl name="SpkrLeft COMP Switch" value="0" />
+ <ctl name="SpkrRight COMP Switch" value="0" />
+ <ctl name="SpkrLeft VISENSE Switch" value="0" />
+ <ctl name="SpkrRight VISENSE Switch" value="0" />
+ <ctl name="SpkrLeft CPS Switch" value="0" />
+ <ctl name="SpkrRight CPS Switch" value="0" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="0" />
+ <ctl name="SpkrRight SWR DAC_Port Switch" value="0" />
+ <ctl name="SpkrLeft PBR Switch" value="0" />
+ <ctl name="SpkrRight PBR Switch" value="0" />
+ <ctl name="SpkrLeft WSA MODE" value="0" />
+ <ctl name="SpkrRight WSA MODE" value="0" />
+
+ <!-- RX Controls -->
+ <ctl name="RX_MACRO RX0 MUX" value="ZERO" />
+ <ctl name="RX_MACRO RX1 MUX" value="ZERO" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="ZERO" />
+ <ctl name="RX INT0_1 MIX1 INP1" value="ZERO" />
+ <ctl name="RX INT0_1 MIX1 INP2" value="ZERO" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="ZERO" />
+ <ctl name="RX INT1_1 MIX1 INP1" value="ZERO" />
+ <ctl name="RX INT1_1 MIX1 INP2" value="ZERO" />
+ <ctl name="RX INT0 DEM MUX" value="NORMAL_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="NORMAL_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="0" />
+ <ctl name="RX_COMP2 Switch" value="0" />
+ <ctl name="HPHL_COMP Switch" value="0" />
+ <ctl name="HPHR_COMP Switch" value="0" />
+ <ctl name="EAR_RDAC Switch" value="0" />
+ <ctl name="HPHL_RDAC Switch" value="0" />
+ <ctl name="HPHR_RDAC Switch" value="0" />
+ <ctl name="AUX_RDAC Switch" value="0" />
+ <ctl name="RX_FIR Filter" value="OFF" />
+ <ctl name="RX_EAR Mode" value="OFF" />
+
+ <!-- TX Controls -->
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC3" value="0" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC2 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC3 MUX" value="SWR_MIC" />
+ <ctl name="VA DMIC MUX0" value="ZERO" />
+ <ctl name="VA DMIC MUX1" value="ZERO" />
+ <ctl name="VA DMIC MUX2" value="ZERO" />
+ <ctl name="VA DMIC MUX3" value="ZERO" />
+ <ctl name="VA SMIC MUX0" value="ZERO" />
+ <ctl name="VA SMIC MUX1" value="ZERO" />
+ <ctl name="VA SMIC MUX2" value="ZERO" />
+ <ctl name="VA SMIC MUX3" value="ZERO" />
+ <ctl name="VA_DEC0 MODE" value="ADC_DEFAULT" />
+ <ctl name="ADC2_BCS Disable" value="0" />
+ <ctl name="ADC1_MIXER Switch" value="0" />
+ <ctl name="ADC2_MIXER Switch" value="0" />
+ <ctl name="ADC3_MIXER Switch" value="0" />
+ <ctl name="ADC4_MIXER Switch" value="0" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ <ctl name="DEC0_BCS Switch" value="0" />
+ <ctl name="ADC2_BCS Disable" value="0" />
+ <ctl name="ADC3 MUX" value="INP4" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="VA_AMIC1_MIXER Switch" value="0" />
+ <ctl name="VA_AMIC2_MIXER Switch" value="0" />
+ <ctl name="VA_AMIC3_MIXER Switch" value="0" />
+ <ctl name="VA_AMIC4_MIXER Switch" value="0" />
+ <ctl name="VA_AMIC5_MIXER Switch" value="0" />
+ <ctl name="AMIC1_MIXER Switch" value="0" />
+ <ctl name="AMIC2_MIXER Switch" value="0" />
+ <ctl name="AMIC3_MIXER Switch" value="0" />
+ <ctl name="AMIC4_MIXER Switch" value="0" />
+ <ctl name="AMIC5_MIXER Switch" value="0" />
+
+ <ctl name="TX_AIF1_CAP Mixer DEC0" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC5" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC6" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC7" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC0" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC1" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC2" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC3" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC4" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC5" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC6" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC7" value="0" />
+ <ctl name="TX DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX0" value="ZERO" />
+ <ctl name="TX SMIC MUX0" value="ZERO" />
+ <ctl name="TX DEC1 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX1" value="ZERO" />
+ <ctl name="TX SMIC MUX1" value="ZERO" />
+ <ctl name="TX DEC2 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX2" value="ZERO" />
+ <ctl name="TX SMIC MUX2" value="ZERO" />
+ <ctl name="TX DEC3 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX3" value="ZERO" />
+ <ctl name="TX SMIC MUX3" value="ZERO" />
+ <ctl name="TX DEC4 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX4" value="ZERO" />
+ <ctl name="TX SMIC MUX4" value="ZERO" />
+ <ctl name="TX DEC5 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX5" value="ZERO" />
+ <ctl name="TX SMIC MUX5" value="ZERO" />
+ <ctl name="TX DEC6 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX6" value="ZERO" />
+ <ctl name="TX SMIC MUX6" value="ZERO" />
+ <ctl name="TX DEC7 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX7" value="ZERO" />
+ <ctl name="TX SMIC MUX7" value="ZERO" />
+
+ <!-- Volume controls -->
+ <ctl name="WSA_RX0 Digital Volume" value="84" />
+ <ctl name="WSA_RX1 Digital Volume" value="84" />
+ <ctl name="RX_RX0 Digital Volume" value="84" />
+ <ctl name="RX_RX1 Digital Volume" value="84" />
+ <ctl name="RX_RX2 Digital Volume" value="84" />
+ <ctl name="HPHL Volume" value="20" />
+ <ctl name="HPHR Volume" value="20" />
+
+ <ctl name="TX_DEC0 Volume" value="84" />
+ <ctl name="TX_DEC1 Volume" value="84" />
+ <ctl name="TX_DEC2 Volume" value="84" />
+ <ctl name="TX_DEC3 Volume" value="84" />
+ <ctl name="TX_DEC4 Volume" value="84" />
+ <ctl name="TX_DEC5 Volume" value="84" />
+ <ctl name="TX_DEC6 Volume" value="84" />
+ <ctl name="TX_DEC7 Volume" value="84" />
+
+ <ctl name="ADC1 Volume" value="12" />
+ <ctl name="ADC2 Volume" value="12" />
+ <ctl name="ADC3 Volume" value="12" />
+ <ctl name="ADC4 Volume" value="12" />
+
+ <ctl name="VA_DEC0 Volume" value="84" />
+ <ctl name="VA_DEC1 Volume" value="84" />
+ <ctl name="VA_DEC2 Volume" value="84" />
+ <ctl name="VA_DEC3 Volume" value="84" />
+
+ <!-- Compander controls -->
+ <ctl name="WSA_COMP1 Switch" value="0" />
+ <ctl name="WSA_COMP2 Switch" value="0" />
+
+ <!-- Headphone class-H mode -->
+ <ctl name="RX_HPH_PWR_MODE" value="ULP" />
+ <ctl name="RX HPH Mode" value="CLS_H_ULP" />
+
+ <!-- IIR/voice anc -->
+ <ctl name="IIR0 Band1" value="00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" />
+ <ctl name="IIR0 Band2" value="00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" />
+ <ctl name="IIR0 Band3" value="00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" />
+ <ctl name="IIR0 Band4" value="00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" />
+ <ctl name="IIR0 Band5" value="00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" />
+ <ctl name="IIR0 Enable Band1" value="0" />
+ <ctl name="IIR0 Enable Band2" value="0" />
+ <ctl name="IIR0 Enable Band3" value="0" />
+ <ctl name="IIR0 Enable Band4" value="0" />
+ <ctl name="IIR0 Enable Band5" value="0" />
+ <ctl name="IIR0 INP0 Volume" value="40" />
+ <ctl name="IIR0 INP0 MUX" value="ZERO" />
+ <ctl name="IIR0 INP1 MUX" value="ZERO" />
+ <ctl name="IIR0 INP2 MUX" value="ZERO" />
+ <ctl name="IIR0 INP3 MUX" value="ZERO" />
+
+ <!-- vbat related data -->
+ <ctl name="GSM mode Enable" value="OFF" />
+ <ctl name="WSA_Softclip0 Enable" value="0" />
+ <ctl name="WSA_Softclip1 Enable" value="0" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="0" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="0" />
+
+ <!-- Codec controls end -->
+
+ <!-- defaults for mmap record -->
+
+ <!-- HIFI Filter coefficients for headphones path -->
+ <path name="hifi-filter-coefficients">
+ <ctl name="RX0 FIR Coeff Num" value="8" />
+ <ctl name="RX0 FIR Coeff Group0" value="08 00 00 00 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" />
+ <ctl name="RX0 FIR Coeff Group1" value="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" />
+ <ctl name="RX1 FIR Coeff Num" value="8" />
+ <ctl name="RX1 FIR Coeff Group0" value="08 00 00 00 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" />
+ <ctl name="RX1 FIR Coeff Group1" value="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" />
+ </path>
+
+ <!-- These are audio route (FE to BE) specific mixer settings -->
+ <path name="gsm-mode">
+ <ctl name="GSM mode Enable" value="ON" />
+ </path>
+
+
+ <!-- These are actual sound device specific mixer settings -->
+
+ <path name="amic2">
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="SWR_MIC10" />
+ <ctl name="DEC0_BCS Switch" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ <ctl name="ADC2 Volume" value="20" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX3_CH3" />
+ <ctl name="MBHC ChMap" value="SWRM_TX1_CH3" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="BCS Channel" value="CH2" />
+ <ctl name="HDR12 MUX" value="NO_HDR12" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="AMIC2_MIXER Switch" value="1" />
+ </path>
+
+ <path name="amic5">
+ <ctl name="TX DEC3 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX3" value="SWR_MIC9" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="TX3 MODE" value="ADC_LP" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="AMIC5_MIXER Switch" value="1" />
+ </path>
+
+ <path name="amic6">
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="SWR_MIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="ADC3 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="ADC3 MUX" value="INP6" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="AMIC6_MIXER Switch" value="1" />
+ </path>
+
+ <path name="dmic1">
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="DMIC1 ChMap" value="SWRM_TX1_CH2" />
+ <ctl name="DMIC1_MIXER Switch" value="1" />
+ </path>
+
+ <path name="dmic2">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
+ </path>
+
+ <path name="dmic3">
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="DMIC3 ChMap" value="SWRM_TX1_CH4" />
+ <ctl name="DMIC3_MIXER Switch" value="1" />
+ </path>
+
+ <path name="dmic4">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC3" />
+ </path>
+
+ <path name="dmic5">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
+ </path>
+
+ <path name="dmic6">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC5" />
+ </path>
+
+ <path name="speaker">
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA RX1 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_RX1 INP0" value="RX1" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="WSA_COMP2 Switch" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft CPS Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrRight COMP Switch" value="1" />
+ <ctl name="SpkrRight VISENSE Switch" value="1" />
+ <ctl name="SpkrRight CPS Switch" value="1" />
+ <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrLeft PBR Switch" value="1" />
+ <ctl name="SpkrRight PBR Switch" value="1" />
+ <ctl name="WSA PBR Enable" value="1" />
+ <ctl name="Idle Detect" value="1" />
+ </path>
+
+ <path name="haptics-dev">
+ <ctl name="SWR DAC_Port Switch" value="1" />
+ </path>
+
+ <path name="speaker-mono">
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft CPS Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrLeft PBR Switch" value="1" />
+ <ctl name="WSA PBR Enable" value="1" />
+ <ctl name="Idle Detect" value="1" />
+ </path>
+
+ <path name="speaker-mono-2">
+ <ctl name="WSA RX1 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX1 INP0" value="RX1" />
+ <ctl name="WSA_COMP2 Switch" value="1" />
+ <ctl name="SpkrRight COMP Switch" value="1" />
+ <ctl name="SpkrRight VISENSE Switch" value="1" />
+ <ctl name="SpkrRight CPS Switch" value="1" />
+ <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrRight PBR Switch" value="1" />
+ <ctl name="WSA PBR Enable" value="1" />
+ <ctl name="Idle Detect" value="1" />
+ </path>
+
+ <path name="speaker-mono-vbat">
+ <path name="speaker-mono" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ </path>
+
+ <path name="speaker-mono-2-vbat">
+ <path name="speaker-mono-2" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" />
+ </path>
+
+ <path name="speaker-vbat">
+ <path name="speaker" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" />
+ </path>
+
+ <path name="speaker-hdk">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="speaker-fluid">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="speaker-liquid">
+ <path name="speaker" />
+ </path>
+
+ <path name="speaker-safe">
+ <path name="speaker-mono"/>
+ </path>
+
+ <path name="speaker-hdk-vbat">
+ <path name="speaker-mono-vbat" />
+ </path>
+
+ <path name="speaker-fluid-vbat">
+ <path name="speaker-mono-vbat" />
+ </path>
+
+ <path name="speaker-liquid-vbat">
+ <path name="speaker-vbat" />
+ </path>
+
+ <path name="speaker-safe-vbat">
+ <path name="speaker-mono-vbat"/>
+ </path>
+
+ <path name="sidetone-iir">
+ <ctl name="IIR0 Enable Band1" value="1" />
+ <ctl name="IIR0 Enable Band2" value="1" />
+ <ctl name="IIR0 Enable Band3" value="1" />
+ <ctl name="IIR0 Enable Band4" value="1" />
+ <ctl name="IIR0 Enable Band5" value="1" />
+ </path>
+
+ <path name="sidetone-headphones">
+ <path name="sidetone-iir" />
+ <ctl name="IIR0 INP0 Volume" value="40" />
+ <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="RX INT0 MIX2 INP" value="SRC0" />
+ <ctl name="RX INT1 MIX2 INP" value="SRC0" />
+ </path>
+
+ <path name="sidetone-handset">
+ <path name="sidetone-iir" />
+ <ctl name="IIR0 INP0 Volume" value="40" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ <ctl name="RX INT2 MIX2 INP" value="SRC0" />
+ <ctl name="WSA_RX0 INT0 SIDETONE MIX" value="SRC0" />
+ </path>
+
+ <path name="sidetone-heaphone-handset-mic">
+ <path name="sidetone-iir" />
+ <ctl name="IIR0 INP0 Volume" value="0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ <ctl name="RX INT0 MIX2 INP" value="SRC0" />
+ <ctl name="RX INT1 MIX2 INP" value="SRC0" />
+ </path>
+
+ <path name="afe-sidetone">
+ <ctl name="Voice Sidetone Enable" value="1" />
+ </path>
+
+ <path name="play-fm">
+ </path>
+
+ <path name="speaker-mic">
+ <path name="amic5" />
+ </path>
+
+ <path name="speaker-mic-liquid">
+ <path name="amic5" />
+ </path>
+
+ <path name="speaker-mic-sbc">
+ </path>
+
+ <path name="speaker-protected">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
+ <path name="speaker" />
+ </path>
+
+ <path name="voice-speaker-protected">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="voice-speaker-2-protected">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
+ <path name="speaker-mono-2" />
+ </path>
+
+ <path name="voice-speaker-stereo-protected">
+ <path name="speaker-protected" />
+ </path>
+
+ <path name="speaker-protected-vbat">
+ <path name="speaker-protected" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" />
+ </path>
+
+ <path name="voice-speaker-protected-vbat">
+ <path name="voice-speaker-protected" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ </path>
+
+ <path name="voice-speaker-2-protected-vbat">
+ <path name="voice-speaker-2-protected" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" />
+ </path>
+
+ <path name="voice-speaker-stereo-protected-vbat">
+ <path name="speaker-protected-vbat" />
+ </path>
+
+ <path name="vi-feedback">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
+ </path>
+
+ <path name="vi-feedback-mono-1">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
+ </path>
+
+ <path name="vi-feedback-mono-2">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
+ </path>
+
+ <path name="cps-feedback">
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_1" value="1" />
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_2" value="1" />
+ </path>
+
+ <path name="cps-feedback-mono-1">
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_1" value="1" />
+ </path>
+
+ <path name="cps-feedback-mono-2">
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_2" value="1" />
+ </path>
+
+ <path name="handset">
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="Idle Detect" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft CPS Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="EAR SPKR PA Gain" value="G_6_DB" />
+ <ctl name="WSA_RX0 Digital Volume" value="60" />
+ </path>
+
+ <path name="handset-vbat">
+ <path name="handset" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ </path>
+
+ <path name="handset-mic">
+ <path name="amic6" />
+ </path>
+
+ <path name="handset-mic-unprocessed">
+ <path name="amic6" />
+ <ctl name="TX_DEC2 Volume" value="102" />
+ </path>
+
+ <path name="ultrasound-handset">
+ <ctl name="WSA RX_MIX0 MUX" value="AIF_MIX1_PB" />
+ <ctl name="WSA_RX0 MIX INP" value="RX_MIX0" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="Idle Detect" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="WSA PBR Enable" value="1" />
+ <ctl name="EAR SPKR PA Gain" value="G_6_DB" />
+ </path>
+
+ <path name="ultrasound-handset-vbat">
+ <path name="ultrasound-handset" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ </path>
+
+ <path name="ultrasound-mic">
+ <path name="amic6" />
+ </path>
+
+ <path name="headphones">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX_MACRO RX1 MUX" value="AIF1_PB" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX1" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="RX_COMP2 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHR_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ <ctl name="HPHR_RDAC Switch" value="1" />
+ </path>
+
+ <path name="headphones-and-haptics">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX_MACRO RX1 MUX" value="AIF1_PB" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX1" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="RX_COMP2 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHR_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ <ctl name="HPHR_RDAC Switch" value="1" />
+ <ctl name="SWR DAC_Port Switch" value="1" />
+ </path>
+
+ <path name="headphones-44.1">
+ <path name="headphones" />
+ </path>
+
+ <path name="headphones-hifi-filter">
+ <ctl name="RX_FIR Filter" value="ON" />
+ <path name="headphones" />
+ </path>
+
+ <path name="hph-highquality-mode">
+ </path>
+
+ <path name="hph-lowpower-mode">
+ </path>
+
+ <path name="true-native-mode">
+ </path>
+
+ <path name="line">
+ <path name="headphones" />
+ </path>
+
+ <path name="headset-mic">
+ <ctl name="TX_DEC0 Volume" value="84" />
+ <path name="amic2" />
+ </path>
+
+ <path name="headset-mic-liquid">
+ <path name="amic2" />
+ </path>
+
+ <path name="voice-handset">
+ <ctl name="WSA_RX0 Digital Volume" value="60" />
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-tmus">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-hac">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-hdk">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-tmus-hdk">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-speaker">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="voice-speaker-stereo">
+ <ctl name="WSA_RX0 Digital Volume" value="60" />
+ <path name="speaker" />
+ </path>
+
+ <path name="voice-speaker-2">
+ <path name="speaker-mono-2" />
+ </path>
+
+ <path name="voice-speaker-hdk">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="voice-speaker-fluid">
+ <path name="speaker-fluid" />
+ </path>
+
+ <path name="voice-speaker-vbat">
+ <path name="speaker-mono-vbat" />
+ </path>
+
+ <path name="voice-speaker-stereo-vbat">
+ <ctl name="WSA_RX0 Digital Volume" value="60" />
+ <path name="speaker-vbat" />
+ </path>
+
+ <path name="voice-speaker-2-vbat">
+ <path name="speaker-mono-2-vbat" />
+ </path>
+
+ <path name="voice-speaker-hdk-vbat">
+ <path name="speaker-mono-vbat" />
+ </path>
+
+ <path name="voice-speaker-fluid-vbat">
+ <path name="speaker-fluid-vbat" />
+ </path>
+
+ <path name="voice-speaker-mic">
+ <path name="speaker-mic" />
+ </path>
+
+ <path name="voice-headphones">
+ <path name="headphones" />
+ </path>
+
+ <path name="voice-headset">
+ <path name="headphones" />
+ </path>
+
+ <path name="voice-line">
+ <path name="voice-headphones" />
+ </path>
+
+ <path name="voice-headset-mic">
+ <path name="headset-mic" />
+ </path>
+
+ <path name="speaker-and-headphones">
+ <path name="headphones" />
+ <path name="speaker" />
+ </path>
+
+ <path name="speaker-and-headphones-hifi-filter">
+ <path name="headphones-hifi-filter" />
+ <path name="speaker" />
+ </path>
+
+ <path name="speaker-safe-and-headphones">
+ <path name="headphones" />
+ <path name="speaker-safe" />
+ </path>
+
+ <path name="speaker-and-line">
+ <path name="speaker-and-headphones" />
+ </path>
+
+ <path name="speaker-and-headphones-liquid">
+ <path name="headphones" />
+ <path name="speaker" />
+ </path>
+
+ <path name="speaker-and-line-liquid">
+ <path name="speaker-and-headphones-liquid" />
+ </path>
+
+ <path name="usb-headphones">
+ </path>
+
+ <path name="usb-headset">
+ </path>
+
+ <path name="usb-headset-mic">
+ </path>
+
+ <path name="speaker-and-usb-headphones">
+ <path name="speaker" />
+ <path name="usb-headphones" />
+ </path>
+
+ <path name="speaker-safe-and-usb-headphones">
+ <path name="speaker-safe" />
+ <path name="usb-headphones" />
+ </path>
+
+ <path name="bt-sco">
+ </path>
+
+ <path name="bt-sco-mic">
+ </path>
+
+ <path name="bt-sco-wb">
+ </path>
+
+ <path name="bt-sco-mic-wb">
+ </path>
+
+ <path name="bt-sco-swb">
+ </path>
+
+ <path name="bt-sco-mic-swb">
+ </path>
+
+ <path name="bt-a2dp">
+ </path>
+
+ <path name="bt-a2dp-mic">
+ </path>
+
+ <path name="bt-ble">
+ </path>
+
+ <path name="bt-ble-mic">
+ </path>
+
+ <path name="va-mic-mono">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC9" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC4 Volume" value="10" />
+ <ctl name="VA_AMIC5_MIXER Switch" value="1" />
+ </path>
+
+ <path name="va-mic-dmic">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC1 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC9" />
+ <ctl name="VA SMIC MUX1" value="SWR_MIC4" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC3 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="ADC3 Volume" value="10" />
+ <ctl name="ADC4 Volume" value="10" />
+ <ctl name="VA_AMIC5_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC6_MIXER Switch" value="1" />
+ <ctl name="AMIC6_MIXER Switch" value="1" />
+ </path>
+
+ <path name="va-mic-tmic">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC2 MUX" value="SWR_MIC" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC1 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC9" />
+ <ctl name="VA SMIC MUX1" value="SWR_MIC4" />
+ <ctl name="VA SMIC MUX2" value="SWR_MIC1" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="ADC3 MUX" value="INP6" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC3 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="DMIC1 ChMap" value="SWRM_TX1_CH1" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="DMIC1_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC5_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC6_MIXER Switch" value="1" />
+ <ctl name="AMIC6_MIXER Switch" value="1" />
+ </path>
+
+ <path name="va-mic-qmic">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC3 MUX" value="SWR_MIC" />
+ <ctl name="VA_DEC2 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC1 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC3 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA DEC2 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC9" />
+ <ctl name="VA SMIC MUX1" value="SWR_MIC4" />
+ <ctl name="VA SMIC MUX3" value="SWR_MIC8" />
+ <ctl name="VA SMIC MUX2" value="SWR_MIC5" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ <ctl name="TX3 MODE" value="ADC_LP" />
+ <ctl name="ADC2_BCS Disable" value="1" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ <ctl name="ADC3 MUX" value="INP4" />
+ <ctl name="HDR12 MUX" value="NO_HDR12" />
+ <ctl name="HDR34 MUX" value="NO_HDR34" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="ADC3 ChMap" value="SWRM_TX3_CH1" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="ADC1 Volume" value="10" />
+ <ctl name="ADC2 Volume" value="10" />
+ <ctl name="ADC3 Volume" value="10" />
+ <ctl name="ADC4 Volume" value="10" />
+ <ctl name="VA_AMIC5_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC1_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC3_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC4_MIXER Switch" value="1" />
+ </path>
+
+ <path name="va-mic">
+ <path name="va-mic-mono" />
+ </path>
+
+ <path name="va-mic-mono-lpi">
+ <ctl name="VA_DEC0 Volume" value="96" />
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC4" />
+ <ctl name="ADC3 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="ADC3 MUX" value="INP6" />
+ <ctl name="VA_AMIC6_MIXER Switch" value="1" />
+ <ctl name="AMIC6_MIXER Switch" value="1" />
+ </path>
+
+ <path name="va-mic-dmic-lpi">
+ <ctl name="VA_DEC0 Volume" value="96" />
+ <ctl name="VA_DEC1 Volume" value="96" />
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC1 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC9" />
+ <ctl name="VA SMIC MUX1" value="SWR_MIC4" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC3 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC5_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC6_MIXER Switch" value="1" />
+ <ctl name="AMIC6_MIXER Switch" value="1" />
+ </path>
+
+ <path name="va-mic-tmic-lpi">
+ <ctl name="VA_DEC0 Volume" value="96" />
+ <ctl name="VA_DEC1 Volume" value="96" />
+ <ctl name="VA_DEC2 Volume" value="96" />
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC2 MUX" value="SWR_MIC" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC1 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC9" />
+ <ctl name="VA SMIC MUX1" value="SWR_MIC4" />
+ <ctl name="VA SMIC MUX2" value="SWR_MIC1" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="ADC3 MUX" value="INP6" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC3 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="DMIC1 ChMap" value="SWRM_TX1_CH1" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="DMIC1_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC5_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC6_MIXER Switch" value="1" />
+ <ctl name="AMIC6_MIXER Switch" value="1" />
+ </path>
+
+ <path name="va-mic-qmic-lpi">
+ <ctl name="VA_DEC0 Volume" value="96" />
+ <ctl name="VA_DEC1 Volume" value="96" />
+ <ctl name="VA_DEC2 Volume" value="96" />
+ <ctl name="VA_DEC3 Volume" value="96" />
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC2 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC3 MUX" value="SWR_MIC" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC1 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC9" />
+ <ctl name="VA SMIC MUX1" value="SWR_MIC4" />
+ <ctl name="VA SMIC MUX2" value="SWR_MIC1" />
+ <ctl name="VA SMIC MUX3" value="SWR_MIC3" />
+ <ctl name="TX3 MODE" value="ADC_LP" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="ADC3 MUX" value="INP6" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC3 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="DMIC1 ChMap" value="SWRM_TX1_CH1" />
+ <ctl name="DMIC3 ChMap" value="SWRM_TX1_CH4" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="DMIC1_MIXER Switch" value="1" />
+ <ctl name="DMIC3_MIXER Switch" value="1" />
+ <ctl name="AMIC5_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC5_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC6_MIXER Switch" value="1" />
+ <ctl name="AMIC6_MIXER Switch" value="1" />
+ </path>
+
+ <path name="va-mic-lpi">
+ <path name="va-mic-mono-lpi" />
+ </path>
+
+ <path name="headset-va-mic-lpi">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC10" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX3_CH3" />
+ <ctl name="HDR12 MUX" value="NO_HDR12" />
+ <ctl name="ADC2_BCS Disable" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC2_MIXER Switch" value="1" />
+ </path>
+
+ <path name="headset-va-mic">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC10" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX3_CH3" />
+ <ctl name="HDR12 MUX" value="NO_HDR12" />
+ <ctl name="ADC2_BCS Disable" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC2_MIXER Switch" value="1" />
+ </path>
+
+ <path name="lpi-pcm-logging">
+ <ctl name="LPI PCM Logging Enable" value="1" />
+ </path>
+
+ <!-- Dual MIC devices -->
+ <path name="handset-dmic-endfire">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC3 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC4" />
+ <ctl name="TX SMIC MUX3" value="SWR_MIC5" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX3 MODE" value="ADC_LP" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="AMIC1_MIXER Switch" value="1" />
+ <ctl name="AMIC3_MIXER Switch" value="1" />
+ </path>
+
+ <path name="speaker-dmic-endfire">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC3 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC9" />
+ <ctl name="TX SMIC MUX3" value="SWR_MIC4" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="HDR34 MUX" value="NO_HDR34" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="AMIC5_MIXER Switch" value="1" />
+ <ctl name="AMIC1_MIXER Switch" value="1" />
+ </path>
+
+ <path name="dmic-endfire">
+ <path name="handset-dmic-endfire" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ </path>
+
+ <path name="dmic-endfire-liquid">
+ <path name="handset-dmic-endfire" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ </path>
+
+ <path name="handset-stereo-dmic-ef">
+ <path name="handset-dmic-endfire" />
+ </path>
+
+ <path name="speaker-stereo-dmic-ef">
+ <path name="speaker-dmic-endfire" />
+ </path>
+
+ <path name="voice-dmic-ef-tmus">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="voice-dmic-ef">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="voice-speaker-dmic-ef">
+ <path name="speaker-dmic-endfire" />
+ </path>
+
+ <path name="voice-rec-dmic-ef">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="voice-rec-dmic-ef-fluence">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="hearing-aid-mic">
+ <path name="voice-speaker-mic"/>
+ </path>
+
+ <path name="handset-stereo-dmic-ef-liquid">
+ <path name="handset-dmic-endfire" />
+ </path>
+
+ <path name="speaker-stereo-dmic-ef-liquid">
+ <path name="speaker-dmic-endfire" />
+ </path>
+
+ <path name="voice-dmic-ef-liquid-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="voice-speaker-dmic-ef-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="voice-rec-dmic-ef-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="voice-rec-dmic-ef-fluence-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="speaker-dmic-broadside">
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DEC1 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC9" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC4" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="HDR34 MUX" value="NO_HDR34" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="AMIC5_MIXER Switch" value="1" />
+ <ctl name="AMIC1_MIXER Switch" value="1" />
+ </path>
+
+ <path name="dmic-broadside">
+ <path name="speaker-dmic-broadside" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ </path>
+
+ <path name="voice-speaker-dmic-broadside">
+ <path name="dmic-broadside" />
+ </path>
+
+ <!-- Tri MIC devices -->
+ <path name="three-mic">
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DEC1 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC3 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC9" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC4" />
+ <ctl name="TX SMIC MUX3" value="SWR_MIC5" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ <ctl name="HDR34 MUX" value="NO_HDR34" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX3 MODE" value="ADC_LP" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="AMIC5_MIXER Switch" value="1" />
+ <ctl name="AMIC1_MIXER Switch" value="1" />
+ <ctl name="AMIC3_MIXER Switch" value="1" />
+ </path>
+
+ <path name="speaker-tmic">
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DEC1 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC3 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC9" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC4" />
+ <ctl name="TX SMIC MUX3" value="SWR_MIC5" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ <ctl name="HDR34 MUX" value="NO_HDR34" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX3 MODE" value="ADC_LP" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="AMIC5_MIXER Switch" value="1" />
+ <ctl name="AMIC1_MIXER Switch" value="1" />
+ <ctl name="AMIC3_MIXER Switch" value="1" />
+ </path>
+
+ <path name="voice-speaker-tmic">
+ <path name="speaker-tmic" />
+ </path>
+
+ <!-- Quad MIC devices -->
+ <path name="speaker-qmic">
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="1" />
+ <ctl name="TX DEC1 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC3 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC4 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC9" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC4" />
+ <ctl name="TX SMIC MUX3" value="SWR_MIC5" />
+ <ctl name="TX SMIC MUX4" value="SWR_MIC8" />
+ <ctl name="HDR34 MUX" value="NO_HDR34" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ <ctl name="ADC3 MUX" value="INP4" />
+ <ctl name="ADC2_BCS Disable" value="1" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX3 MODE" value="ADC_LP" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="ADC3 ChMap" value="SWRM_TX3_CH1" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="AMIC5_MIXER Switch" value="1" />
+ <ctl name="AMIC1_MIXER Switch" value="1" />
+ <ctl name="AMIC3_MIXER Switch" value="1" />
+ <ctl name="AMIC4_MIXER Switch" value="1" />
+ </path>
+
+ <path name="speaker-qmic-liquid">
+ </path>
+
+ <path name="voice-speaker-qmic">
+ <path name="speaker-qmic" />
+ </path>
+
+ <path name="quad-mic">
+ <path name="speaker-qmic" />
+ </path>
+
+ <path name="voice-speaker-qmic-liquid">
+ <path name="speaker-qmic-liquid" />
+ </path>
+
+ <path name="quad-mic-liquid">
+ <path name="speaker-qmic-liquid" />
+ </path>
+
+ <path name="handset-dual-amic-quad-adc-hdr">
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="1"/>
+ <ctl name="TX DEC1 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC2 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC3 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC4 MUX" value="SWR_MIC"/>
+ <ctl name="ADC3 MUX" value="INP4"/>
+ <ctl name="HDR12 MUX" value="HDR12"/>
+ <ctl name="HDR34 MUX" value="HDR34"/>
+ <ctl name="ADC4 MUX" value="INP5"/>
+ <ctl name="TX2 MODE" value="ADC_HIFI"/>
+ <ctl name="TX0 MODE" value="ADC_HIFI"/>
+ <ctl name="TX3 MODE" value="ADC_HIFI"/>
+ <ctl name="TX1 MODE" value="ADC_HIFI"/>
+ <ctl name="ADC3 ChMap" value="SWRM_TX3_CH1"/>
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1"/>
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2"/>
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2"/>
+ <ctl name="ADC3_MIXER Switch" value="1"/>
+ <ctl name="ADC1_MIXER Switch" value="1"/>
+ <ctl name="ADC4_MIXER Switch" value="1"/>
+ <ctl name="ADC2_MIXER Switch" value="1"/>
+ <ctl name="AMIC1_MIXER Switch" value="1"/>
+ <ctl name="AMIC5_MIXER Switch" value="1"/>
+ <ctl name="TX_DEC1 Volume" value="84"/>
+ <ctl name="TX_DEC2 Volume" value="84"/>
+ <ctl name="TX_DEC3 Volume" value="84"/>
+ <ctl name="TX_DEC4 Volume" value="84"/>
+ <ctl name="ADC1 Volume" value="16"/>
+ <ctl name="ADC2 Volume" value="0"/>
+ <ctl name="ADC3 Volume" value="0"/>
+ <ctl name="ADC4 Volume" value="16"/>
+ </path>
+
+ <path name="unprocessed-hdr-mic-landscape">
+ <path name="handset-dual-amic-quad-adc-hdr" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC9"/>
+ <ctl name="TX SMIC MUX2" value="SWR_MIC8"/>
+ <ctl name="TX SMIC MUX3" value="SWR_MIC4"/>
+ <ctl name="TX SMIC MUX4" value="SWR_MIC5"/>
+ </path>
+
+ <path name="unprocessed-hdr-mic-inverted-landscape">
+ <path name="handset-dual-amic-quad-adc-hdr" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC4"/>
+ <ctl name="TX SMIC MUX2" value="SWR_MIC5"/>
+ <ctl name="TX SMIC MUX3" value="SWR_MIC9"/>
+ <ctl name="TX SMIC MUX4" value="SWR_MIC8"/>
+ </path>
+
+ <path name="handset-single-amic-quad-adc">
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="1"/>
+ <ctl name="TX DEC1 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC2 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC3 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC4 MUX" value="SWR_MIC"/>
+ <ctl name="TX SMIC MUX1" value="SWR_MIC9"/>
+ <ctl name="TX SMIC MUX2" value="SWR_MIC8"/>
+ <ctl name="TX SMIC MUX3" value="SWR_MIC9"/>
+ <ctl name="TX SMIC MUX4" value="SWR_MIC8"/>
+ <ctl name="HDR34 MUX" value="HDR34"/>
+ <ctl name="TX2 MODE" value="ADC_HIFI"/>
+ <ctl name="TX3 MODE" value="ADC_HIFI"/>
+ <ctl name="ADC3 ChMap" value="SWRM_TX3_CH1"/>
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2"/>
+ <ctl name="ADC3_MIXER Switch" value="1"/>
+ <ctl name="ADC4_MIXER Switch" value="1"/>
+ <ctl name="AMIC5_MIXER Switch" value="1"/>
+ <ctl name="TX_DEC1 Volume" value="84"/>
+ <ctl name="TX_DEC2 Volume" value="84"/>
+ <ctl name="TX_DEC3 Volume" value="84"/>
+ <ctl name="TX_DEC4 Volume" value="84"/>
+ <ctl name="ADC3 Volume" value="0"/>
+ <ctl name="ADC4 Volume" value="16"/>
+ </path>
+
+ <path name="unprocessed-hdr-mic-portrait">
+ <path name="handset-single-amic-quad-adc" />
+ </path>
+
+ <path name="unprocessed-hdr-mic-inverted-portrait">
+ <path name="handset-single-amic-quad-adc" />
+ </path>
+
+ <!-- TTY devices -->
+
+ <path name="tty-headphones">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ </path>
+
+ <path name="voice-tty-full-headphones">
+ <path name="tty-headphones" />
+ </path>
+
+ <path name="voice-tty-full-headset">
+ <path name="tty-headphones" />
+ </path>
+
+ <path name="voice-tty-vco-headphones">
+ <path name="tty-headphones" />
+ </path>
+
+ <path name="voice-tty-vco-headset">
+ <path name="tty-headphones" />
+ </path>
+
+ <path name="voice-tty-hco-handset">
+ <path name="handset" />
+ </path>
+
+
+ <path name="voice-tty-hco-handset-hdk">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-tty-full-headset-mic">
+ <path name="amic2" />
+ <ctl name="ADC2 Volume" value="0" />
+ <ctl name="TX_DEC5 Volume" value="84" />
+ </path>
+
+ <path name="voice-tty-hco-headset-mic">
+ <ctl name="TX DEC6 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX6" value="SWR_MIC5" />
+ <ctl name="TX_AIF1_CAP Mixer DEC6" value="1" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="MBHC ChMap" value="SWRM_TX3_CH3" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="BCS Channel" value="CH10" />
+ <ctl name="HDR12 MUX" value="NO_HDR12" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="AMIC2_MIXER Switch" value="1" />
+ </path>
+
+ <path name="voice-tty-vco-handset-mic">
+ <path name="dmic3" />
+ </path>
+
+ <path name="unprocessed-handset-mic">
+ <path name="handset-mic" />
+ </path>
+
+ <path name="unprocessed-mic">
+ <path name="unprocessed-handset-mic" />
+ </path>
+
+ <path name="unprocessed-stereo-mic">
+ <path name="voice-rec-dmic-ef" />
+ </path>
+
+ <path name="unprocessed-three-mic">
+ <path name="three-mic" />
+ </path>
+
+ <path name="unprocessed-headset-mic">
+ <path name="headset-mic" />
+ </path>
+
+ <path name="echo-ref-record">
+ </path>
+
+</mixer>
diff --git a/configs/kalama/mixer_paths_kalama_rb5_gen2_dvt.xml b/configs/kalama/mixer_paths_kalama_rb5_gen2_dvt.xml
new file mode 100644
index 0000000..eb51d55
--- /dev/null
+++ b/configs/kalama/mixer_paths_kalama_rb5_gen2_dvt.xml
@@ -0,0 +1,1332 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
+
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of The Linux Foundation nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Changes from Qualcomm Innovation Center, Inc. are provided under the following license:
+*
+* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted (subject to the limitations in the
+* disclaimer below) provided that the following conditions are met:
+*
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+*
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+*
+* * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
+* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+
+<mixer>
+ <!-- These are the initial mixer settings -->
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="0" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="0" />
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_1" value="0" />
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_2" value="0" />
+
+ <!-- WSA controls -->
+ <ctl name="WSA RX0 MUX" value="ZERO" />
+ <ctl name="WSA RX1 MUX" value="ZERO" />
+ <ctl name="WSA_RX0 INP0" value="ZERO" />
+ <ctl name="WSA_RX1 INP0" value="ZERO" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="0" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="0" />
+ <ctl name="WSA PBR Enable" value="0" />
+ <ctl name="Idle Detect" value="0" />
+ <ctl name="WSA SPKRRECV" value="0" />
+ <ctl name="SpkrLeft COMP Switch" value="0" />
+ <ctl name="SpkrRight COMP Switch" value="0" />
+ <ctl name="SpkrLeft VISENSE Switch" value="0" />
+ <ctl name="SpkrRight VISENSE Switch" value="0" />
+ <ctl name="SpkrLeft CPS Switch" value="0" />
+ <ctl name="SpkrRight CPS Switch" value="0" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="0" />
+ <ctl name="SpkrRight SWR DAC_Port Switch" value="0" />
+ <ctl name="SpkrLeft PBR Switch" value="0" />
+ <ctl name="SpkrRight PBR Switch" value="0" />
+ <ctl name="SpkrLeft WSA MODE" value="0" />
+ <ctl name="SpkrRight WSA MODE" value="0" />
+
+ <!-- RX Controls -->
+ <ctl name="RX_MACRO RX0 MUX" value="ZERO" />
+ <ctl name="RX_MACRO RX1 MUX" value="ZERO" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="ZERO" />
+ <ctl name="RX INT0_1 MIX1 INP1" value="ZERO" />
+ <ctl name="RX INT0_1 MIX1 INP2" value="ZERO" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="ZERO" />
+ <ctl name="RX INT1_1 MIX1 INP1" value="ZERO" />
+ <ctl name="RX INT1_1 MIX1 INP2" value="ZERO" />
+ <ctl name="RX INT0 DEM MUX" value="NORMAL_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="NORMAL_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="0" />
+ <ctl name="RX_COMP2 Switch" value="0" />
+ <ctl name="HPHL_COMP Switch" value="0" />
+ <ctl name="HPHR_COMP Switch" value="0" />
+ <ctl name="EAR_RDAC Switch" value="0" />
+ <ctl name="HPHL_RDAC Switch" value="0" />
+ <ctl name="HPHR_RDAC Switch" value="0" />
+ <ctl name="AUX_RDAC Switch" value="0" />
+ <ctl name="RX_FIR Filter" value="OFF" />
+ <ctl name="RX_EAR Mode" value="OFF" />
+
+ <!-- TX Controls -->
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC3" value="0" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC2 MUX" value="SWR_MIC" />
+ <ctl name="VA DEC3 MUX" value="SWR_MIC" />
+ <ctl name="VA DMIC MUX0" value="ZERO" />
+ <ctl name="VA DMIC MUX1" value="ZERO" />
+ <ctl name="VA DMIC MUX2" value="ZERO" />
+ <ctl name="VA DMIC MUX3" value="ZERO" />
+ <ctl name="VA SMIC MUX0" value="ZERO" />
+ <ctl name="VA SMIC MUX1" value="ZERO" />
+ <ctl name="VA SMIC MUX2" value="ZERO" />
+ <ctl name="VA SMIC MUX3" value="ZERO" />
+ <ctl name="VA_DEC0 MODE" value="ADC_DEFAULT" />
+ <ctl name="ADC2_BCS Disable" value="0" />
+ <ctl name="ADC1_MIXER Switch" value="0" />
+ <ctl name="ADC2_MIXER Switch" value="0" />
+ <ctl name="ADC3_MIXER Switch" value="0" />
+ <ctl name="ADC4_MIXER Switch" value="0" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ <ctl name="DEC0_BCS Switch" value="0" />
+ <ctl name="ADC2_BCS Disable" value="0" />
+ <ctl name="ADC3 MUX" value="INP4" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="VA_AMIC1_MIXER Switch" value="0" />
+ <ctl name="VA_AMIC2_MIXER Switch" value="0" />
+ <ctl name="VA_AMIC3_MIXER Switch" value="0" />
+ <ctl name="VA_AMIC4_MIXER Switch" value="0" />
+ <ctl name="VA_AMIC5_MIXER Switch" value="0" />
+ <ctl name="AMIC1_MIXER Switch" value="0" />
+ <ctl name="AMIC2_MIXER Switch" value="0" />
+ <ctl name="AMIC3_MIXER Switch" value="0" />
+ <ctl name="AMIC4_MIXER Switch" value="0" />
+ <ctl name="AMIC5_MIXER Switch" value="0" />
+
+ <ctl name="TX_AIF1_CAP Mixer DEC0" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC5" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC6" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC7" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC0" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC1" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC2" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC3" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC4" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC5" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC6" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC7" value="0" />
+ <ctl name="TX DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX0" value="ZERO" />
+ <ctl name="TX SMIC MUX0" value="ZERO" />
+ <ctl name="TX DEC1 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX1" value="ZERO" />
+ <ctl name="TX SMIC MUX1" value="ZERO" />
+ <ctl name="TX DEC2 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX2" value="ZERO" />
+ <ctl name="TX SMIC MUX2" value="ZERO" />
+ <ctl name="TX DEC3 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX3" value="ZERO" />
+ <ctl name="TX SMIC MUX3" value="ZERO" />
+ <ctl name="TX DEC4 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX4" value="ZERO" />
+ <ctl name="TX SMIC MUX4" value="ZERO" />
+ <ctl name="TX DEC5 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX5" value="ZERO" />
+ <ctl name="TX SMIC MUX5" value="ZERO" />
+ <ctl name="TX DEC6 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX6" value="ZERO" />
+ <ctl name="TX SMIC MUX6" value="ZERO" />
+ <ctl name="TX DEC7 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX7" value="ZERO" />
+ <ctl name="TX SMIC MUX7" value="ZERO" />
+
+ <!-- Volume controls -->
+ <ctl name="WSA_RX0 Digital Volume" value="84" />
+ <ctl name="WSA_RX1 Digital Volume" value="84" />
+ <ctl name="RX_RX0 Digital Volume" value="84" />
+ <ctl name="RX_RX1 Digital Volume" value="84" />
+ <ctl name="RX_RX2 Digital Volume" value="84" />
+ <ctl name="HPHL Volume" value="20" />
+ <ctl name="HPHR Volume" value="20" />
+
+ <ctl name="TX_DEC0 Volume" value="84" />
+ <ctl name="TX_DEC1 Volume" value="84" />
+ <ctl name="TX_DEC2 Volume" value="84" />
+ <ctl name="TX_DEC3 Volume" value="84" />
+ <ctl name="TX_DEC4 Volume" value="84" />
+ <ctl name="TX_DEC5 Volume" value="84" />
+ <ctl name="TX_DEC6 Volume" value="84" />
+ <ctl name="TX_DEC7 Volume" value="84" />
+
+ <ctl name="ADC1 Volume" value="12" />
+ <ctl name="ADC2 Volume" value="12" />
+ <ctl name="ADC3 Volume" value="12" />
+ <ctl name="ADC4 Volume" value="12" />
+
+ <ctl name="VA_DEC0 Volume" value="84" />
+ <ctl name="VA_DEC1 Volume" value="84" />
+ <ctl name="VA_DEC2 Volume" value="84" />
+ <ctl name="VA_DEC3 Volume" value="84" />
+
+ <!-- Compander controls -->
+ <ctl name="WSA_COMP1 Switch" value="0" />
+ <ctl name="WSA_COMP2 Switch" value="0" />
+
+ <!-- Headphone class-H mode -->
+ <ctl name="RX_HPH_PWR_MODE" value="ULP" />
+ <ctl name="RX HPH Mode" value="CLS_H_ULP" />
+
+ <!-- IIR/voice anc -->
+ <ctl name="IIR0 Band1" value="00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" />
+ <ctl name="IIR0 Band2" value="00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" />
+ <ctl name="IIR0 Band3" value="00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" />
+ <ctl name="IIR0 Band4" value="00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" />
+ <ctl name="IIR0 Band5" value="00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" />
+ <ctl name="IIR0 Enable Band1" value="0" />
+ <ctl name="IIR0 Enable Band2" value="0" />
+ <ctl name="IIR0 Enable Band3" value="0" />
+ <ctl name="IIR0 Enable Band4" value="0" />
+ <ctl name="IIR0 Enable Band5" value="0" />
+ <ctl name="IIR0 INP0 Volume" value="40" />
+ <ctl name="IIR0 INP0 MUX" value="ZERO" />
+ <ctl name="IIR0 INP1 MUX" value="ZERO" />
+ <ctl name="IIR0 INP2 MUX" value="ZERO" />
+ <ctl name="IIR0 INP3 MUX" value="ZERO" />
+
+ <!-- vbat related data -->
+ <ctl name="GSM mode Enable" value="OFF" />
+ <ctl name="WSA_Softclip0 Enable" value="0" />
+ <ctl name="WSA_Softclip1 Enable" value="0" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="0" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="0" />
+
+ <!-- Codec controls end -->
+
+ <!-- defaults for mmap record -->
+
+ <!-- HIFI Filter coefficients for headphones path -->
+ <path name="hifi-filter-coefficients">
+ <ctl name="RX0 FIR Coeff Num" value="8" />
+ <ctl name="RX0 FIR Coeff Group0" value="08 00 00 00 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" />
+ <ctl name="RX0 FIR Coeff Group1" value="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" />
+ <ctl name="RX1 FIR Coeff Num" value="8" />
+ <ctl name="RX1 FIR Coeff Group0" value="08 00 00 00 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" />
+ <ctl name="RX1 FIR Coeff Group1" value="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" />
+ </path>
+
+ <!-- These are audio route (FE to BE) specific mixer settings -->
+ <path name="gsm-mode">
+ <ctl name="GSM mode Enable" value="ON" />
+ </path>
+
+
+ <!-- These are actual sound device specific mixer settings -->
+ <path name="amic1">
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="AMIC1_MIXER Switch" value="1" />
+ </path>
+
+ <path name="amic2">
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="SWR_MIC5" />
+ <ctl name="DEC0_BCS Switch" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="MBHC ChMap" value="SWRM_TX1_CH3" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="BCS Channel" value="CH2" />
+ <ctl name="HDR12 MUX" value="NO_HDR12" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="AMIC2_MIXER Switch" value="1" />
+ </path>
+
+
+ <path name="amic3">
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC5" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="ADC2_BCS Disable" value="1" />
+ <ctl name="HDR12 MUX" value="NO_HDR12" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="AMIC3_MIXER Switch" value="1" />
+ </path>
+
+ <path name="amic4">
+ <ctl name="TX DEC5 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX5" value="SWR_MIC8" />
+ <ctl name="TX_AIF1_CAP Mixer DEC5" value="1" />
+ <ctl name="ADC3 MUX" value="INP4" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ <ctl name="ADC3 ChMap" value="SWRM_TX3_CH1" />
+ <ctl name="HDR34 MUX" value="NO_HDR34" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="AMIC4_MIXER Switch" value="1" />
+ </path>
+
+ <path name="amic5">
+ <ctl name="TX DEC3 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX3" value="SWR_MIC9" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="TX3 MODE" value="ADC_LP" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="AMIC5_MIXER Switch" value="1" />
+ </path>
+
+ <path name="amic6">
+ <ctl name="TX DEC4 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX4" value="SWR_MIC4" />
+ <ctl name="TX_AIF2_CAP Mixer DEC4" value="1" />
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="AMIC1_MIXER Switch" value="1" />
+ </path>
+
+ <path name="dmic1">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC0" />
+ </path>
+
+ <path name="dmic2">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
+ </path>
+
+ <path name="dmic3">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
+ </path>
+
+ <path name="dmic4">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC3" />
+ </path>
+
+ <path name="dmic5">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
+ </path>
+
+ <path name="dmic6">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC5" />
+ </path>
+
+ <path name="speaker">
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA RX1 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_RX1 INP0" value="RX1" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="WSA_COMP2 Switch" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft CPS Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrRight COMP Switch" value="1" />
+ <ctl name="SpkrRight VISENSE Switch" value="1" />
+ <ctl name="SpkrRight CPS Switch" value="1" />
+ <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrLeft PBR Switch" value="1" />
+ <ctl name="SpkrRight PBR Switch" value="1" />
+ <ctl name="WSA PBR Enable" value="1" />
+ <ctl name="Idle Detect" value="1" />
+ </path>
+
+ <path name="haptics-dev">
+ <ctl name="SWR DAC_Port Switch" value="1" />
+ </path>
+
+ <path name="speaker-mono">
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft CPS Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrLeft PBR Switch" value="1" />
+ <ctl name="WSA PBR Enable" value="1" />
+ <ctl name="Idle Detect" value="1" />
+ </path>
+
+ <path name="speaker-mono-2">
+ <ctl name="WSA RX1 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX1 INP0" value="RX1" />
+ <ctl name="WSA_COMP2 Switch" value="1" />
+ <ctl name="SpkrRight COMP Switch" value="1" />
+ <ctl name="SpkrRight VISENSE Switch" value="1" />
+ <ctl name="SpkrRight CPS Switch" value="1" />
+ <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrRight PBR Switch" value="1" />
+ <ctl name="WSA PBR Enable" value="1" />
+ <ctl name="Idle Detect" value="1" />
+ </path>
+
+ <path name="speaker-mono-vbat">
+ <path name="speaker-mono" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ </path>
+
+ <path name="speaker-mono-2-vbat">
+ <path name="speaker-mono-2" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" />
+ </path>
+
+ <path name="speaker-vbat">
+ <path name="speaker" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" />
+ </path>
+
+ <path name="speaker-hdk">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="speaker-fluid">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="speaker-liquid">
+ <path name="speaker" />
+ </path>
+
+ <path name="speaker-safe">
+ <path name="speaker-mono"/>
+ </path>
+
+ <path name="speaker-hdk-vbat">
+ <path name="speaker-mono-vbat" />
+ </path>
+
+ <path name="speaker-fluid-vbat">
+ <path name="speaker-mono-vbat" />
+ </path>
+
+ <path name="speaker-liquid-vbat">
+ <path name="speaker-vbat" />
+ </path>
+
+ <path name="speaker-safe-vbat">
+ <path name="speaker-mono-vbat"/>
+ </path>
+
+ <path name="sidetone-iir">
+ <ctl name="IIR0 Enable Band1" value="1" />
+ <ctl name="IIR0 Enable Band2" value="1" />
+ <ctl name="IIR0 Enable Band3" value="1" />
+ <ctl name="IIR0 Enable Band4" value="1" />
+ <ctl name="IIR0 Enable Band5" value="1" />
+ </path>
+
+ <path name="sidetone-headphones">
+ <path name="sidetone-iir" />
+ <ctl name="IIR0 INP0 Volume" value="40" />
+ <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="RX INT0 MIX2 INP" value="SRC0" />
+ <ctl name="RX INT1 MIX2 INP" value="SRC0" />
+ </path>
+
+ <path name="sidetone-handset">
+ <path name="sidetone-iir" />
+ <ctl name="IIR0 INP0 Volume" value="40" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ <ctl name="RX INT2 MIX2 INP" value="SRC0" />
+ <ctl name="WSA_RX0 INT0 SIDETONE MIX" value="SRC0" />
+ </path>
+
+ <path name="sidetone-heaphone-handset-mic">
+ <path name="sidetone-iir" />
+ <ctl name="IIR0 INP0 Volume" value="0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ <ctl name="RX INT0 MIX2 INP" value="SRC0" />
+ <ctl name="RX INT1 MIX2 INP" value="SRC0" />
+ </path>
+
+ <path name="afe-sidetone">
+ <ctl name="Voice Sidetone Enable" value="1" />
+ </path>
+
+ <path name="play-fm">
+ </path>
+
+ <path name="speaker-mic">
+ <path name="dmic3" />
+ </path>
+
+ <path name="speaker-mic-liquid">
+ <path name="amic5" />
+ </path>
+
+ <path name="speaker-mic-sbc">
+ </path>
+
+ <path name="speaker-protected">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
+ <path name="speaker" />
+ </path>
+
+ <path name="voice-speaker-protected">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="voice-speaker-2-protected">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
+ <path name="speaker-mono-2" />
+ </path>
+
+ <path name="voice-speaker-stereo-protected">
+ <path name="speaker-protected" />
+ </path>
+
+ <path name="speaker-protected-vbat">
+ <path name="speaker-protected" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" />
+ </path>
+
+ <path name="voice-speaker-protected-vbat">
+ <path name="voice-speaker-protected" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ </path>
+
+ <path name="voice-speaker-2-protected-vbat">
+ <path name="voice-speaker-2-protected" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" />
+ </path>
+
+ <path name="voice-speaker-stereo-protected-vbat">
+ <path name="speaker-protected-vbat" />
+ </path>
+
+ <path name="vi-feedback">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
+ </path>
+
+ <path name="vi-feedback-mono-1">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
+ </path>
+
+ <path name="vi-feedback-mono-2">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
+ </path>
+
+ <path name="cps-feedback">
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_1" value="1" />
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_2" value="1" />
+ </path>
+
+ <path name="cps-feedback-mono-1">
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_1" value="1" />
+ </path>
+
+ <path name="cps-feedback-mono-2">
+ <ctl name="WSA_AIF_CPS Mixer WSA_SPKR_CPS_2" value="1" />
+ </path>
+
+ <path name="handset">
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="Idle Detect" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft CPS Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="EAR SPKR PA Gain" value="G_6_DB" />
+ <ctl name="WSA_RX0 Digital Volume" value="60" />
+ </path>
+
+ <path name="handset-vbat">
+ <path name="handset" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ </path>
+
+ <path name="handset-mic">
+ <path name="dmic3" />
+ </path>
+
+ <path name="handset-mic-unprocessed">
+ <path name="amic1" />
+ <ctl name="TX_DEC2 Volume" value="102" />
+ </path>
+
+ <path name="ultrasound-handset">
+ <ctl name="WSA RX_MIX0 MUX" value="AIF_MIX1_PB" />
+ <ctl name="WSA_RX0 MIX INP" value="RX_MIX0" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="Idle Detect" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="WSA PBR Enable" value="1" />
+ <ctl name="EAR SPKR PA Gain" value="G_6_DB" />
+ </path>
+
+ <path name="ultrasound-handset-vbat">
+ <path name="ultrasound-handset" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" />
+ </path>
+
+ <path name="ultrasound-mic">
+ <path name="amic6" />
+ </path>
+
+ <path name="headphones">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX_MACRO RX1 MUX" value="AIF1_PB" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX1" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="RX_COMP2 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHR_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ <ctl name="HPHR_RDAC Switch" value="1" />
+ </path>
+
+ <path name="headphones-and-haptics">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX_MACRO RX1 MUX" value="AIF1_PB" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX1" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="RX_COMP2 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHR_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ <ctl name="HPHR_RDAC Switch" value="1" />
+ <ctl name="SWR DAC_Port Switch" value="1" />
+ </path>
+
+ <path name="headphones-44.1">
+ <path name="headphones" />
+ </path>
+
+ <path name="headphones-hifi-filter">
+ <ctl name="RX_FIR Filter" value="ON" />
+ <path name="headphones" />
+ </path>
+
+ <path name="hph-highquality-mode">
+ </path>
+
+ <path name="hph-lowpower-mode">
+ </path>
+
+ <path name="true-native-mode">
+ </path>
+
+ <path name="line">
+ <path name="headphones" />
+ </path>
+
+ <path name="headset-mic">
+ <ctl name="TX_DEC0 Volume" value="84" />
+ <path name="amic2" />
+ </path>
+
+ <path name="headset-mic-liquid">
+ <path name="amic2" />
+ </path>
+
+ <path name="voice-handset">
+ <ctl name="WSA_RX0 Digital Volume" value="60" />
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-tmus">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-hac">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-hdk">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-tmus-hdk">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-speaker">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="voice-speaker-stereo">
+ <ctl name="WSA_RX0 Digital Volume" value="60" />
+ <path name="speaker" />
+ </path>
+
+ <path name="voice-speaker-2">
+ <path name="speaker-mono-2" />
+ </path>
+
+ <path name="voice-speaker-hdk">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="voice-speaker-fluid">
+ <path name="speaker-fluid" />
+ </path>
+
+ <path name="voice-speaker-vbat">
+ <path name="speaker-mono-vbat" />
+ </path>
+
+ <path name="voice-speaker-stereo-vbat">
+ <ctl name="WSA_RX0 Digital Volume" value="60" />
+ <path name="speaker-vbat" />
+ </path>
+
+ <path name="voice-speaker-2-vbat">
+ <path name="speaker-mono-2-vbat" />
+ </path>
+
+ <path name="voice-speaker-hdk-vbat">
+ <path name="speaker-mono-vbat" />
+ </path>
+
+ <path name="voice-speaker-fluid-vbat">
+ <path name="speaker-fluid-vbat" />
+ </path>
+
+ <path name="voice-speaker-mic">
+ <path name="speaker-mic" />
+ </path>
+
+ <path name="voice-headphones">
+ <path name="headphones" />
+ </path>
+
+ <path name="voice-headset">
+ <path name="headphones" />
+ </path>
+
+ <path name="voice-line">
+ <path name="voice-headphones" />
+ </path>
+
+ <path name="voice-headset-mic">
+ <path name="headset-mic" />
+ </path>
+
+ <path name="speaker-and-headphones">
+ <path name="headphones" />
+ <path name="speaker" />
+ </path>
+
+ <path name="speaker-and-headphones-hifi-filter">
+ <path name="headphones-hifi-filter" />
+ <path name="speaker" />
+ </path>
+
+ <path name="speaker-safe-and-headphones">
+ <path name="headphones" />
+ <path name="speaker-safe" />
+ </path>
+
+ <path name="speaker-and-line">
+ <path name="speaker-and-headphones" />
+ </path>
+
+ <path name="speaker-and-headphones-liquid">
+ <path name="headphones" />
+ <path name="speaker" />
+ </path>
+
+ <path name="speaker-and-line-liquid">
+ <path name="speaker-and-headphones-liquid" />
+ </path>
+
+ <path name="usb-headphones">
+ </path>
+
+ <path name="usb-headset">
+ </path>
+
+ <path name="speaker-and-usb-headphones">
+ <path name="speaker" />
+ <path name="usb-headphones" />
+ </path>
+
+ <path name="speaker-safe-and-usb-headphones">
+ <path name="speaker-safe" />
+ <path name="usb-headphones" />
+ </path>
+
+ <path name="bt-sco">
+ </path>
+
+ <path name="bt-sco-mic">
+ </path>
+
+ <path name="bt-sco-wb">
+ </path>
+
+ <path name="bt-sco-mic-wb">
+ </path>
+
+ <path name="bt-sco-swb">
+ </path>
+
+ <path name="bt-sco-mic-swb">
+ </path>
+
+ <path name="bt-a2dp">
+ </path>
+
+ <path name="bt-a2dp-mic">
+ </path>
+
+ <path name="bt-ble">
+ </path>
+
+ <path name="bt-ble-mic">
+ </path>
+
+ <path name="va-mic-mono">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX0" value="DMIC2" />
+ </path>
+
+ <path name="va-mic-dmic">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX0" value="DMIC2" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA DEC1 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX1" value="DMIC3" />
+ </path>
+
+ <path name="va-mic-tmic">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX0" value="DMIC2" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA DEC1 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX1" value="DMIC3" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="VA DEC2 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX2" value="DMIC4" />
+ </path>
+
+ <path name="va-mic-qmic">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX0" value="DMIC2" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA DEC1 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX1" value="DMIC3" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="VA DEC2 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX2" value="DMIC4" />
+ <ctl name="VA_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="VA DEC3 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX3" value="DMIC5" />
+ </path>
+
+ <path name="va-mic">
+ <path name="va-mic-mono" />
+ </path>
+
+ <path name="va-mic-mono-lpi">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX0" value="DMIC2" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ </path>
+
+ <path name="va-mic-dmic-lpi">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="VA DEC1 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX0" value="DMIC2" />
+ <ctl name="VA DMIC MUX1" value="DMIC3" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC1 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ </path>
+
+ <path name="va-mic-tmic-lpi">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="VA DEC1 MUX" value="MSM_DMIC" />
+ <ctl name="VA DEC2 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX0" value="DMIC2" />
+ <ctl name="VA DMIC MUX1" value="DMIC3" />
+ <ctl name="VA DMIC MUX2" value="DMIC4" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC1 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC2 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ </path>
+
+ <path name="va-mic-qmic-lpi">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="VA DEC1 MUX" value="MSM_DMIC" />
+ <ctl name="VA DEC3 MUX" value="MSM_DMIC" />
+ <ctl name="VA DEC2 MUX" value="MSM_DMIC" />
+ <ctl name="VA DMIC MUX0" value="DMIC2" />
+ <ctl name="VA DMIC MUX1" value="DMIC3" />
+ <ctl name="VA DMIC MUX2" value="DMIC4" />
+ <ctl name="VA DMIC MUX3" value="DMIC5" />
+ <ctl name="VA_DEC2 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC1 MODE" value="ADC_LOW_PWR" />
+ <ctl name="VA_DEC3 MODE" value="ADC_LOW_PWR" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ <ctl name="TX3 MODE" value="ADC_LP" />
+ </path>
+
+ <path name="va-mic-lpi">
+ <path name="va-mic-mono-lpi" />
+ </path>
+
+ <path name="headset-va-mic-lpi">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC5" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="HDR12 MUX" value="NO_HDR12" />
+ <ctl name="ADC2_BCS Disable" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC2_MIXER Switch" value="1" />
+ </path>
+
+ <path name="headset-va-mic">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="SWR_MIC5" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="HDR12 MUX" value="NO_HDR12" />
+ <ctl name="ADC2_BCS Disable" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="VA_AMIC2_MIXER Switch" value="1" />
+ </path>
+
+ <path name="lpi-pcm-logging">
+ <ctl name="LPI PCM Logging Enable" value="1" />
+ </path>
+
+ <!-- Dual MIC devices -->
+ <path name="handset-dmic-endfire">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" value="DMIC3" />
+ </path>
+
+ <path name="speaker-dmic-endfire">
+ <path name="handset-dmic-endfire" />
+ </path>
+
+ <path name="dmic-endfire">
+ <path name="handset-dmic-endfire" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ </path>
+
+ <path name="dmic-endfire-liquid">
+ <path name="handset-dmic-endfire" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ </path>
+
+ <path name="handset-stereo-dmic-ef">
+ <path name="handset-dmic-endfire" />
+ </path>
+
+ <path name="speaker-stereo-dmic-ef">
+ <path name="speaker-dmic-endfire" />
+ </path>
+
+ <path name="voice-dmic-ef-tmus">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="voice-dmic-ef">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="voice-speaker-dmic-ef">
+ <path name="speaker-dmic-endfire" />
+ </path>
+
+ <path name="voice-rec-dmic-ef">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="voice-rec-dmic-ef-fluence">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="hearing-aid-mic">
+ <path name="voice-speaker-mic"/>
+ </path>
+
+ <path name="handset-stereo-dmic-ef-liquid">
+ <path name="handset-dmic-endfire" />
+ </path>
+
+ <path name="speaker-stereo-dmic-ef-liquid">
+ <path name="speaker-dmic-endfire" />
+ </path>
+
+ <path name="voice-dmic-ef-liquid-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="voice-speaker-dmic-ef-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="voice-rec-dmic-ef-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="voice-rec-dmic-ef-fluence-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="speaker-dmic-broadside">
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DEC1 MUX" value="SWR_MIC" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC9" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC4" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ <ctl name="HDR34 MUX" value="NO_HDR34" />
+ <ctl name="TX2 MODE" value="ADC_LP" />
+ <ctl name="TX0 MODE" value="ADC_LP" />
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2" />
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="AMIC5_MIXER Switch" value="1" />
+ <ctl name="AMIC1_MIXER Switch" value="1" />
+ </path>
+
+ <path name="dmic-broadside">
+ <path name="speaker-dmic-broadside" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ </path>
+
+ <path name="voice-speaker-dmic-broadside">
+ <path name="dmic-broadside" />
+ </path>
+
+ <!-- Tri MIC devices -->
+ <path name="three-mic">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" value="DMIC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="1" />
+ <ctl name="TX DMIC MUX4" value="DMIC4" />
+ </path>
+
+ <path name="speaker-tmic">
+ <path name="three-tmic" />
+ </path>
+
+ <path name="voice-speaker-tmic">
+ <path name="speaker-tmic" />
+ </path>
+
+ <!-- Quad MIC devices -->
+ <path name="quad-mic">
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" value="DMIC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="1" />
+ <ctl name="TX DMIC MUX4" value="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC5" value="1" />
+ <ctl name="TX DMIC MUX5" value="DMIC5" />
+ </path>
+
+ <path name="speaker-qmic">
+ <path name="quad-mic" />
+ </path>
+
+ <path name="speaker-qmic-liquid">
+ </path>
+
+ <path name="voice-speaker-qmic">
+ <path name="speaker-qmic" />
+ </path>
+
+ <path name="voice-speaker-qmic-liquid">
+ <path name="speaker-qmic-liquid" />
+ </path>
+
+ <path name="quad-mic-liquid">
+ <path name="speaker-qmic-liquid" />
+ </path>
+
+ <path name="handset-dual-amic-quad-adc-hdr">
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="1"/>
+ <ctl name="TX DEC1 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC2 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC3 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC4 MUX" value="SWR_MIC"/>
+ <ctl name="ADC3 MUX" value="INP4"/>
+ <ctl name="HDR12 MUX" value="HDR12"/>
+ <ctl name="HDR34 MUX" value="HDR34"/>
+ <ctl name="ADC4 MUX" value="INP5"/>
+ <ctl name="TX2 MODE" value="ADC_HIFI"/>
+ <ctl name="TX0 MODE" value="ADC_HIFI"/>
+ <ctl name="TX3 MODE" value="ADC_HIFI"/>
+ <ctl name="TX1 MODE" value="ADC_HIFI"/>
+ <ctl name="ADC3 ChMap" value="SWRM_TX3_CH1"/>
+ <ctl name="ADC1 ChMap" value="SWRM_TX2_CH1"/>
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2"/>
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2"/>
+ <ctl name="ADC3_MIXER Switch" value="1"/>
+ <ctl name="ADC1_MIXER Switch" value="1"/>
+ <ctl name="ADC4_MIXER Switch" value="1"/>
+ <ctl name="ADC2_MIXER Switch" value="1"/>
+ <ctl name="AMIC1_MIXER Switch" value="1"/>
+ <ctl name="AMIC5_MIXER Switch" value="1"/>
+ <ctl name="TX_DEC1 Volume" value="84"/>
+ <ctl name="TX_DEC2 Volume" value="84"/>
+ <ctl name="TX_DEC3 Volume" value="84"/>
+ <ctl name="TX_DEC4 Volume" value="84"/>
+ <ctl name="ADC1 Volume" value="16"/>
+ <ctl name="ADC2 Volume" value="0"/>
+ <ctl name="ADC3 Volume" value="0"/>
+ <ctl name="ADC4 Volume" value="16"/>
+ </path>
+
+ <path name="unprocessed-hdr-mic-landscape">
+ <path name="handset-dual-amic-quad-adc-hdr" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC9"/>
+ <ctl name="TX SMIC MUX2" value="SWR_MIC8"/>
+ <ctl name="TX SMIC MUX3" value="SWR_MIC4"/>
+ <ctl name="TX SMIC MUX4" value="SWR_MIC5"/>
+ </path>
+
+ <path name="unprocessed-hdr-mic-inverted-landscape">
+ <path name="handset-dual-amic-quad-adc-hdr" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC4"/>
+ <ctl name="TX SMIC MUX2" value="SWR_MIC5"/>
+ <ctl name="TX SMIC MUX3" value="SWR_MIC9"/>
+ <ctl name="TX SMIC MUX4" value="SWR_MIC8"/>
+ </path>
+
+ <path name="handset-single-amic-quad-adc">
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="1"/>
+ <ctl name="TX DEC1 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC2 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC3 MUX" value="SWR_MIC"/>
+ <ctl name="TX DEC4 MUX" value="SWR_MIC"/>
+ <ctl name="TX SMIC MUX1" value="SWR_MIC9"/>
+ <ctl name="TX SMIC MUX2" value="SWR_MIC8"/>
+ <ctl name="TX SMIC MUX3" value="SWR_MIC9"/>
+ <ctl name="TX SMIC MUX4" value="SWR_MIC8"/>
+ <ctl name="HDR34 MUX" value="HDR34"/>
+ <ctl name="TX2 MODE" value="ADC_HIFI"/>
+ <ctl name="TX3 MODE" value="ADC_HIFI"/>
+ <ctl name="ADC3 ChMap" value="SWRM_TX3_CH1"/>
+ <ctl name="ADC4 ChMap" value="SWRM_TX3_CH2"/>
+ <ctl name="ADC3_MIXER Switch" value="1"/>
+ <ctl name="ADC4_MIXER Switch" value="1"/>
+ <ctl name="AMIC5_MIXER Switch" value="1"/>
+ <ctl name="TX_DEC1 Volume" value="84"/>
+ <ctl name="TX_DEC2 Volume" value="84"/>
+ <ctl name="TX_DEC3 Volume" value="84"/>
+ <ctl name="TX_DEC4 Volume" value="84"/>
+ <ctl name="ADC3 Volume" value="0"/>
+ <ctl name="ADC4 Volume" value="16"/>
+ </path>
+
+ <path name="unprocessed-hdr-mic-portrait">
+ <path name="handset-single-amic-quad-adc" />
+ </path>
+
+ <path name="unprocessed-hdr-mic-inverted-portrait">
+ <path name="handset-single-amic-quad-adc" />
+ </path>
+
+ <!-- TTY devices -->
+
+ <path name="tty-headphones">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ </path>
+
+ <path name="voice-tty-full-headphones">
+ <path name="tty-headphones" />
+ </path>
+
+ <path name="voice-tty-full-headset">
+ <path name="tty-headphones" />
+ </path>
+
+ <path name="voice-tty-vco-headphones">
+ <path name="tty-headphones" />
+ </path>
+
+ <path name="voice-tty-vco-headset">
+ <path name="tty-headphones" />
+ </path>
+
+ <path name="voice-tty-hco-handset">
+ <path name="handset" />
+ </path>
+
+
+ <path name="voice-tty-hco-handset-hdk">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-tty-full-headset-mic">
+ <path name="amic2" />
+ <ctl name="ADC2 Volume" value="0" />
+ <ctl name="TX_DEC5 Volume" value="84" />
+ </path>
+
+ <path name="voice-tty-hco-headset-mic">
+ <ctl name="TX DEC6 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX6" value="SWR_MIC5" />
+ <ctl name="TX_AIF1_CAP Mixer DEC6" value="1" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ <ctl name="ADC2 ChMap" value="SWRM_TX2_CH2" />
+ <ctl name="MBHC ChMap" value="SWRM_TX3_CH3" />
+ <ctl name="TX1 MODE" value="ADC_LP" />
+ <ctl name="BCS Channel" value="CH10" />
+ <ctl name="HDR12 MUX" value="NO_HDR12" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="AMIC2_MIXER Switch" value="1" />
+ </path>
+
+ <path name="voice-tty-vco-handset-mic">
+ <path name="dmic3" />
+ </path>
+
+ <path name="unprocessed-handset-mic">
+ <path name="handset-mic" />
+ </path>
+
+ <path name="unprocessed-mic">
+ <path name="unprocessed-handset-mic" />
+ </path>
+
+ <path name="unprocessed-stereo-mic">
+ <path name="voice-rec-dmic-ef" />
+ </path>
+
+ <path name="unprocessed-three-mic">
+ <path name="three-mic" />
+ </path>
+
+ <path name="unprocessed-headset-mic">
+ <path name="headset-mic" />
+ </path>
+
+ <path name="echo-ref-record">
+ </path>
+
+</mixer>
diff --git a/configs/kalama/resourcemanager_kalama_aim.xml b/configs/kalama/resourcemanager_kalama_aim.xml
new file mode 100644
index 0000000..14a0a55
--- /dev/null
+++ b/configs/kalama/resourcemanager_kalama_aim.xml
@@ -0,0 +1,1617 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
+
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of The Linux Foundation nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Changes from Qualcomm Innovation Center, Inc. are provided under the following license:
+*
+* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted (subject to the limitations in the
+* disclaimer below) provided that the following conditions are met:
+*
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+*
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+*
+* * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
+* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.-->
+
+<resource_manager_info>
+ <version>2.0</version>
+ <config_params>
+ <param key="native_audio_mode" value="multiple_mix_dsp"/>
+ <!-- Uncomment HIFI Filter Headphones related sections when set this
+ hifi_filter key to true -->
+ <param key="hifi_filter" value="false"/>
+ <param key="max_sessions" value="128"/>
+ <param key="max_nonTunnel_sessions" value="4"/>
+ <param key="logging_level" value ="3" />
+ <param key="context_manager_enable" value ="true" />
+ <param key="lpi_logging_enable" value ="false" />
+ <param key="upd_dedicated_be" value ="true" />
+ <param key="signal_handler" value ="true" />
+ <param key="device_mux_config" value ="false" />
+ <param key="upd_duty_cycle_enable" value="false" />
+ <param key="upd_virtual_port" value ="false" />
+ <param key="spkr_xmax_tmax_logging_enable" value ="false" />
+ </config_params>
+ <config_volume>
+ <use_volume_set_param>0</use_volume_set_param>
+ <supported_streams>
+ <supported_stream>PAL_STREAM_ULTRA_LOW_LATENCY</supported_stream>
+ <supported_stream>PAL_STREAM_COMPRESSED</supported_stream>
+ </supported_streams>
+ </config_volume>
+ <config_lpm>
+ <use_disable_lpm>1</use_disable_lpm>
+ <lpm_supported_streams>
+ <lpm_supported_stream>PAL_STREAM_LOW_LATENCY</lpm_supported_stream>
+ <lpm_supported_stream>PAL_STREAM_ULTRA_LOW_LATENCY</lpm_supported_stream>
+ </lpm_supported_streams>
+ </config_lpm>
+ <config_gapless key="gapless_supported" value="1"/>
+ <bt_codecs>
+ <codec codec_format="CODEC_TYPE_AAC" codec_type="enc|dec" codec_library="lib_bt_bundle.so" />
+ <codec codec_format="CODEC_TYPE_SBC" codec_type="enc|dec" codec_library="lib_bt_bundle.so" />
+ <codec codec_format="CODEC_TYPE_LDAC" codec_type="enc" codec_library="lib_bt_bundle.so" />
+ <codec codec_format="CODEC_TYPE_APTX" codec_type="enc" codec_library="lib_bt_aptx.so" />
+ <codec codec_format="CODEC_TYPE_APTX_HD" codec_type="enc" codec_library="lib_bt_aptx.so" />
+ <codec codec_format="CODEC_TYPE_APTX_AD" codec_type="enc" codec_library="lib_bt_aptx.so" />
+ <codec codec_format="CODEC_TYPE_APTX_DUAL_MONO" codec_type="enc" codec_library="lib_bt_aptx.so" />
+ <codec codec_format="CODEC_TYPE_APTX_AD_SPEECH" codec_type="enc|dec" codec_library="lib_bt_aptx.so" />
+ <codec codec_format="CODEC_TYPE_LC3" codec_type="enc|dec" codec_library="lib_bt_ble.so" />
+ <codec codec_format="CODEC_TYPE_APTX_AD_QLEA" codec_type="enc" codec_library="lib_bt_ble.so" />
+ </bt_codecs>
+ <gain_db_to_level_mapping>
+ <gain_level_map db="-59" level="5"/>
+ <gain_level_map db="-17.4" level="4"/>
+ <gain_level_map db="-13.8" level="3"/>
+ <gain_level_map db="-10.2" level="2"/>
+ <gain_level_map db="0" level="1"/>
+ </gain_db_to_level_mapping>
+ <config_voice>
+ <vsid>0xB3000000</vsid>
+ <loopbackDelay>1000</loopbackDelay>
+ <maxVolIndex>5</maxVolIndex>
+ <mode_map>
+ <modepair key="0x11C05000" value="0xB3000001"/>
+ <modepair key="0x11DC5000" value="0xB3000001"/>
+ <modepair key="0x12006000" value="0xB3000001"/>
+ <modepair key="0x121C6000" value="0xB3000001"/>
+ </mode_map>
+ </config_voice>
+ <sleep_monitor_vote_streams>
+ <low_power_stream_type>PAL_STREAM_VOICE_UI</low_power_stream_type>
+ <low_power_stream_type>PAL_STREAM_ACD</low_power_stream_type>
+ <low_power_stream_type>PAL_STREAM_ULTRASOUND</low_power_stream_type>
+ <low_power_stream_type>PAL_STREAM_SENSOR_PCM_DATA</low_power_stream_type>
+ <avoid_vote_stream_type>PAL_STREAM_CONTEXT_PROXY</avoid_vote_stream_type>
+ </sleep_monitor_vote_streams>
+ <group_device_cfg>
+ <upd_rx>
+ <snd_device name="handset" />
+ <group_dev sample_rate = "0" channels="0" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="1" />
+ </upd_rx>
+ <handset>
+ <group_dev sample_rate = "0" channels="0" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="1" />
+ </handset>
+ <speaker>
+ <group_dev sample_rate = "0" channels="0" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="3" />
+ </speaker>
+ <speaker_voice>
+ <group_dev sample_rate = "0" channels="0" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="1" />
+ </speaker_voice>
+ <upd_rx_handset>
+ <snd_device name="speaker" />
+ <devicepp_mfc sample_rate="96000" channels="2" bit_width="16" />
+ <group_dev sample_rate = "96000" channels="2" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="3" />
+ </upd_rx_handset>
+ <upd_rx_speaker>
+ <snd_device name="speaker" />
+ <devicepp_mfc sample_rate="96000" channels="2" bit_width="16" />
+ <group_dev sample_rate = "96000" channels="2" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="3" />
+ </upd_rx_speaker>
+ </group_device_cfg>
+ <!--
+ Usecase Priorities
+ ====================
+
+ Examples of usecases with their corresponding priorities,
+ ranked from 1 (highest priority).
+ 1 for voice
+ 2 for VOIP
+ 3 for playback/recording and (default priority assigned in the streamPriorityLUT map in ResourceManager.cpp)
+ 4 for UPD
+
+ In the event of concurrency on shared backend devices, the stream with the highest priority will determine the final device.
+ Example:
+ ========================================
+ usecase | priority | snd-devicename
+ ========================================
+ VOICE | 1 | voice-handset
+ VOIP | 2 | voip-handset
+ deepbuffer| 3 | speaker-mono
+
+ The final device will be voice-handset.
+ -->
+ <device_profile>
+ <in-device>
+ <id>PAL_DEVICE_IN_HANDSET_MIC</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-TX-3</back_end_name>
+ <max_channels>4</max_channels>
+ <channels>1</channels>
+ <samplerate>48000</samplerate>
+ <snd_device_name>handset-mic</snd_device_name>
+ <ec_enable>0</ec_enable>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <ec_enable>1</ec_enable>
+ <custom-config key="unprocessed-hdr-mic-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-portrait</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-portrait</snd_device_name>
+ </custom-config>
+ </usecase>
+ <!--Uncomment these lines instead of above lines if needing to enable EC per custom key
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="vr-mic">
+ <ec_enable>1</ec_enable>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <ec_enable>1</ec_enable>
+ <custom-config key="unprocessed-hdr-mic-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-portrait</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-portrait</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ <priority>2</priority>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <sidetone_mode>HW</sidetone_mode>
+ <bit_width>16</bit_width>
+ <ec_enable>1</ec_enable>
+ <custom-config key="dual-mic">
+ <channels>2</channels>
+ <snd_device_name>handset-dmic-endfire</snd_device_name>
+ </custom-config>
+ <custom-config key="quad-mic">
+ <channels>4</channels>
+ <snd_device_name>quad-mic</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ <custom-config key="dual-mic">
+ <channels>2</channels>
+ <snd_device_name>handset-dmic-endfire</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_RAW</name>
+ <snd_device_name>handset-mic-unprocessed</snd_device_name>
+ <custom-config key="unprocessed-hdr-mic-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-portrait</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-portrait</snd_device_name>
+ </custom-config>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_HANDSET</id>
+ <id>PAL_DEVICE_OUT_SPEAKER</id>
+ <id>PAL_DEVICE_OUT_WIRED_HEADPHONE</id>
+ <id>PAL_DEVICE_OUT_USB_DEVICE</id>
+ <id>PAL_DEVICE_OUT_USB_HEADSET</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_SPEAKER_MIC</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-TX-3</back_end_name>
+ <max_channels>4</max_channels>
+ <samplerate>48000</samplerate>
+ <channels>1</channels>
+ <ec_enable>0</ec_enable>
+ <snd_device_name>speaker-mic</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <ec_enable>1</ec_enable>
+ <custom-config key="unprocessed-hdr-mic-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-portrait</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-portrait</snd_device_name>
+ </custom-config>
+ </usecase>
+ <!--Uncomment these lines instead of above lines if needing to enable EC per custom key
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="vr-mic">
+ <ec_enable>1</ec_enable>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <ec_enable>1</ec_enable>
+ <custom-config key="unprocessed-hdr-mic-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-portrait</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-portrait</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ <priority>2</priority>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <sidetone_mode>OFF</sidetone_mode>
+ <bit_width>16</bit_width>
+ <ec_enable>1</ec_enable>
+ <custom-config key="dual-mic">
+ <channels>2</channels>
+ <snd_device_name>speaker-dmic-endfire</snd_device_name>
+ </custom-config>
+ <custom-config key="quad-mic">
+ <channels>4</channels>
+ <snd_device_name>quad-mic</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_LOOPBACK</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_SPEAKER</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_WIRED_HEADSET</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-TX-3</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>headset-mic</snd_device_name>
+ <ec_enable>0</ec_enable>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <!--Uncomment these lines instead of above lines if needing to enable EC per custom key
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="vr-mic">
+ <ec_enable>1</ec_enable>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <sidetone_mode>HW</sidetone_mode>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ <priority>1</priority>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_WIRED_HEADSET</id>
+ <id>PAL_DEVICE_OUT_WIRED_HEADPHONE</id>
+ <id>PAL_DEVICE_OUT_SPEAKER</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_BLUETOOTH_SCO_HEADSET</id>
+ <back_end_name>SLIM-DEV1-TX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <samplerate>8000</samplerate>
+ <bit_width>16</bit_width>
+ <snd_device_name>bt-sco-mic</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_SCO</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_HANDSET_VA_MIC</id>
+ <back_end_name>CODEC_DMA-LPAIF_VA-TX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ <snd_device_name>va-mic</snd_device_name>
+ <ec_enable>1</ec_enable>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_SPEAKER</id>
+ <id>PAL_DEVICE_OUT_HANDSET</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_A2DP</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE_BROADCAST</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_HEADSET_VA_MIC</id>
+ <back_end_name>CODEC_DMA-LPAIF_VA-TX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <snd_device_name>headset-va-mic</snd_device_name>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ <ec_enable>1</ec_enable>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_WIRED_HEADSET</id>
+ <id>PAL_DEVICE_OUT_WIRED_HEADPHONE</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_A2DP</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE_BROADCAST</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_USB_HEADSET</id>
+ <back_end_name>USB_AUDIO-TX</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <samplerate>48000</samplerate>
+ <ec_enable>0</ec_enable>
+ <snd_device_name>usb-headset-mic</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <!--Uncomment these lines instead of above lines if needing to enable EC per custom key
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="vr-mic">
+ <ec_enable>1</ec_enable>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <sidetone_mode>HW</sidetone_mode>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_USB_HEADSET</id>
+ <id>PAL_DEVICE_OUT_SPEAKER</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_FM_TUNER</id>
+ <back_end_name>MI2S-LPAIF-TX-SECONDARY</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <snd_device_name>play-fm</snd_device_name>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ <usecase>
+ <name>PAL_STREAM_LOOPBACK</name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_PROXY</id>
+ <back_end_name>PCM_RT_PROXY-TX-1</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <snd_device_name>afe-proxy</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_PROXY</name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_VI_FEEDBACK</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-TX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <samplerate>48000</samplerate>
+ <bit_width>32</bit_width>
+ <snd_device_name>vi-feedback</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <channels>1</channels>
+ <snd_device_name>vi-feedback-mono-2</snd_device_name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_CPS_FEEDBACK</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-TX-2</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <samplerate>24000</samplerate>
+ <bit_width>32</bit_width>
+ <snd_device_name>cps-feedback</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <channels>1</channels>
+ <snd_device_name>cps-feedback-mono-2</snd_device_name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_BLUETOOTH_A2DP</id>
+ <back_end_name>SLIM-DEV1-TX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-a2dp-mic</snd_device_name>
+ <samplerate>44100</samplerate>
+ <bit_width>16</bit_width>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_BLUETOOTH_BLE</id>
+ <back_end_name>SLIM-DEV1-TX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-ble-mic</snd_device_name>
+ <samplerate>44100</samplerate>
+ <bit_width>16</bit_width>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_TELEPHONY_RX</id>
+ <back_end_name>PCM_RT_PROXY-TX-1</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <snd_device_name>afe-proxy</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_PROXY</name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_ULTRASOUND_MIC</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-TX-4</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <samplerate>96000</samplerate>
+ <bit_width>16</bit_width>
+ <snd_device_name>ultrasound-mic</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_ULTRASOUND</name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_EXT_EC_REF</id>
+ <back_end_name>MI2S-LPAIF-TX-TERTIARY</back_end_name>
+ <snd_device_name>ext_ec_ref_tx</snd_device_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_ECHO_REF</id>
+ <back_end_name>PCM_DUMMY-TX-0</back_end_name>
+ <snd_device_name>echo-ref-record</snd_device_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <bit_width>16</bit_width>
+ <samplerate>48000</samplerate>
+ <usecase>
+ <name>PAL_STREAM_RAW</name>
+ </usecase>
+ </in-device>
+ <out-device>
+ <id>PAL_DEVICE_NONE</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-RX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <snd_device_name>none</snd_device_name>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_SPEAKER</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-RX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <samplerate>48000</samplerate>
+ <snd_device_name>speaker</snd_device_name>
+ <speaker_protection_enabled>1</speaker_protection_enabled>
+ <fractional_sr>0</fractional_sr>
+ <!-- To enable external EC reference the flag extec_ref_enabled must be added as 1 -->
+ <ext_ec_ref_enabled>0</ext_ec_ref_enabled>
+ <!-- Flag to specify cps mode which is applicable
+ Values: disable CPS: 0
+ CPS streaming: 1
+ ADSP control mode: 2
+ -->
+ <cps_mode>1</cps_mode>
+ <vbat_enabled>1</vbat_enabled>
+ <wsa2_enable>0</wsa2_enable>
+ <!--wsa registers physical addresses in decimal notation -->
+ <wsa_wr_cmd_reg_phy_addr>112279584</wsa_wr_cmd_reg_phy_addr>
+ <wsa_rd_cmd_reg_phy_addr>112279588</wsa_rd_cmd_reg_phy_addr>
+ <wsa_rd_fifo_reg_phy_addr>112279616</wsa_rd_fifo_reg_phy_addr>
+ <!--wsa2 registers physical addresses in decimal notation and to be updated only if wsa2 is enabled, else should be marked as 0-->
+ <wsa2_wr_cmd_reg_phy_addr>0</wsa2_wr_cmd_reg_phy_addr>
+ <wsa2_rd_cmd_reg_phy_addr>0</wsa2_rd_cmd_reg_phy_addr>
+ <wsa2_rd_fifo_reg_phy_addr>0</wsa2_rd_fifo_reg_phy_addr>
+ <!--specify the supported bit format on speaker end point -->
+ <!--this should be in the form of pal_audio_fmt_id-->
+ <!--e.g <supported_bit_format >PAL_AUDIO_FMT_PCM_S24_LE</supported_bit_format>-->
+ <!--We support 24 bit for speaker as of now, as some module in ADSP does not support Q31 format-->
+ <!--This can be changed to PAL_AUDIO_FMT_PCM_S32_LE if 32 bit e2e support is required-->
+ <supported_bit_format>PAL_AUDIO_FMT_PCM_S24_LE</supported_bit_format>
+ <!-- RAS should be enabled with speaker protection always -->
+ <ras_enabled>0</ras_enabled>
+ <!-- Flag to specify speaker in case Voice call is switched from
+ handset to speaker with only 1 speaker.
+ Values: Both speaker : 0
+ Right speaker: 1
+ Left speaker : 2
+ -->
+ <speaker_mono_right>0</speaker_mono_right>
+ <!-- Time in seconds for Quick cal. Set 0 to disable -->
+ <quick_cal_time>0</quick_cal_time>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <channels>1</channels>
+ <snd_device_name>speaker-mono-2</snd_device_name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_RX</name>
+ <priority>2</priority>
+ <channels>1</channels>
+ <snd_device_name>speaker-mono-2</snd_device_name>
+ </usecase>
+ <!--
+ Playback/Recording streams have a default priority of 3
+ (default priority assigned in the streamPriorityLUT map in ResourceManager.cpp).
+ Check the comments above "Usecase Priorities" for details.
+ -->
+ <!--
+ While the UPD runs on a shared backend, whenever a speaker usecase arises,
+ UPD must always switch to the speaker; it can only return to handset when
+ the last speaker usecase terminates.
+ Giving UPD the lowest priority is in line with the understanding of
+ priority settings.
+ -->
+ <usecase>
+ <name>PAL_STREAM_ULTRASOUND</name>
+ <priority>4</priority>
+ <samplerate>96000</samplerate>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_HANDSET</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-RX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <!-- To enable external EC reference the flag extec_ref_enabled must be added as 1 -->
+ <ext_ec_ref_enabled>0</ext_ec_ref_enabled>
+ <samplerate>48000</samplerate>
+ <fractional_sr>0</fractional_sr>
+ <snd_device_name>handset</snd_device_name>
+ <handset_protection_enabled>0</handset_protection_enabled>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <custom-config key="HAC">
+ <snd_device_name>voice-handset-hac</snd_device_name> <!-- override sound device name with HAC handset -->
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_RX</name>
+ <priority>2</priority>
+ <custom-config key="HAC">
+ <snd_device_name>voice-handset-hac</snd_device_name> <!-- override sound device name with HAC handset for voip -->
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRASOUND</name>
+ <priority>4</priority>
+ <samplerate>96000</samplerate>
+ <bit_width>16</bit_width>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_WIRED_HEADPHONE</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-RX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <fractional_sr>1</fractional_sr>
+ <snd_device_name>headphones</snd_device_name>
+ <!--HIFI Filter Headphones-Uncomment this when param key hifi_filter is true
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_PCM_OFFLOAD</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_RX</name>
+ <priority>2</priority>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_WIRED_HEADSET</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-RX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <fractional_sr>1</fractional_sr>
+ <snd_device_name>headphones</snd_device_name>
+ <!--HIFI Filter Headphones-Uncomment this when param key hifi_filter is true
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_PCM_OFFLOAD</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_RX</name>
+ <priority>2</priority>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_A2DP</id>
+ <back_end_name>SLIM-DEV1-RX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-a2dp</snd_device_name>
+ <samplerate>44100</samplerate>
+ <bit_width>16</bit_width>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE</id>
+ <back_end_name>SLIM-DEV1-RX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-ble</snd_device_name>
+ <samplerate>44100</samplerate>
+ <bit_width>16</bit_width>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE_BROADCAST</id>
+ <back_end_name>SLIM-DEV1-RX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-ble</snd_device_name>
+ <samplerate>44100</samplerate>
+ <bit_width>16</bit_width>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_SCO</id>
+ <back_end_name>SLIM-DEV1-RX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-sco</snd_device_name>
+ <samplerate>8000</samplerate>
+ <bit_width>16</bit_width>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_AUX_DIGITAL</id>
+ <back_end_name>DISPLAY_PORT-RX</back_end_name>
+ <max_channels>32</max_channels>
+ <channels>2</channels>
+ <snd_device_name>display-port</snd_device_name>
+ <fractional_sr>1</fractional_sr>
+ <!--specify the supported bit format on DP end point -->
+ <!--this should be in the form of pal_audio_fmt_id-->
+ <!--e.g <supported_bit_format >PAL_AUDIO_FMT_PCM_S24_3LE</supported_bit_format>-->
+ <!--We support 24 bit for DP as of now, as SPF needs to conform to IEC 60958 packet format -->
+ <!--This can be changed to PAL_AUDIO_FMT_PCM_S32_LE if 32 bit e2e support is required-->
+ <supported_bit_format>PAL_AUDIO_FMT_PCM_S24_3LE</supported_bit_format>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_HDMI</id>
+ <back_end_name>DISPLAY_PORT-RX</back_end_name>
+ <max_channels>32</max_channels>
+ <channels>2</channels>
+ <fractional_sr>1</fractional_sr>
+ <snd_device_name>display-port</snd_device_name>
+ <!--specify the supported bit format on HDMI end point -->
+ <!--this should be in the form of pal_audio_fmt_id-->
+ <!--e.g <supported_bit_format >PAL_AUDIO_FMT_PCM_S24_3LE</supported_bit_format>-->
+ <!--We support 24 bit for HDMI as of now, as SPF needs to conform to IEC 60958 packet format -->
+ <!--This can be changed to PAL_AUDIO_FMT_PCM_S32_LE if 32 bit e2e support is required-->
+ <supported_bit_format>PAL_AUDIO_FMT_PCM_S24_3LE</supported_bit_format>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_USB_DEVICE</id>
+ <back_end_name>USB_AUDIO-RX</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <snd_device_name>usb-headphones</snd_device_name>
+ <fractional_sr>1</fractional_sr>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_USB_HEADSET</id>
+ <back_end_name>USB_AUDIO-RX</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <snd_device_name>usb-headphones</snd_device_name>
+ <fractional_sr>1</fractional_sr>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_AUX_DIGITAL_1</id>
+ <back_end_name>DISPLAY_PORT-RX</back_end_name>
+ <max_channels>8</max_channels>
+ <channels>2</channels>
+ <snd_device_name>display-port</snd_device_name>
+ <fractional_sr>1</fractional_sr>
+ <!--specify the supported bit format on DP end point -->
+ <!--this should be in the form of pal_audio_fmt_id-->
+ <!--e.g <supported_bit_format >PAL_AUDIO_FMT_PCM_S24_3LE</supported_bit_format>-->
+ <!--We support 24 bit for DP as of now, as SPF needs to conform to IEC 60958 packet format -->
+ <!--This can be changed to PAL_AUDIO_FMT_PCM_S32_LE if 32 bit e2e support is required-->
+ <supported_bit_format>PAL_AUDIO_FMT_PCM_S24_3LE</supported_bit_format>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_PROXY</id>
+ <back_end_name>PCM_RT_PROXY-RX-1</back_end_name>
+ <max_channels>8</max_channels>
+ <channels>2</channels>
+ <snd_device_name>afe-proxy</snd_device_name>
+ <fractional_sr>0</fractional_sr>
+ <samplerate>48000</samplerate>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_HEARING_AID</id>
+ <back_end_name>PCM_RT_PROXY-RX-1</back_end_name>
+ <max_channels>8</max_channels>
+ <channels>2</channels>
+ <snd_device_name>afe-proxy</snd_device_name>
+ <fractional_sr>0</fractional_sr>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_HAPTICS_DEVICE</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-RX-6</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <snd_device_name>haptics-dev</snd_device_name>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_ULTRASOUND</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-RX-1</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <snd_device_name>ultrasound-handset</snd_device_name>
+ <samplerate>96000</samplerate>
+ <bit_width>16</bit_width>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_ULTRASOUND_DEDICATED</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-RX-1</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <snd_device_name>ultrasound-handset</snd_device_name>
+ <samplerate>96000</samplerate>
+ <bit_width>16</bit_width>
+ </out-device>
+ </device_profile>
+ <in_streams>
+ <in_stream>
+ <name>PAL_STREAM_VOIP_TX</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_VOICE_UI</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_ACD</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_PROXY</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_COMPRESSED</disabled_stream>
+ <disabled_stream>PAL_STREAM_ULTRA_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_RAW</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_COMPRESSED</disabled_stream>
+ <disabled_stream>PAL_STREAM_ULTRA_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_SENSOR_PCM_DATA</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ </in_streams>
+ <sound_trigger_platform_info>
+ <common_config>
+ <!-- Sound trigger streams common params -->
+ <param lpi_enable="true" />
+ <param support_nlpi_switch="true" />
+ <param support_device_switch="true" />
+ <param enable_debug_dumps="false" />
+ <param concurrent_capture="true" />
+ <param concurrent_voice_call="true" />
+ <param concurrent_voip_call="true" />
+ <param low_latency_bargein_enable="false" />
+ </common_config>
+ <capture_profile_list>
+ <!-- Common Profiles -->
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_LPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_LPI_AAD">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFECNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_RAW_LPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_RAW_LPI_AAD">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_FFNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_FFECNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <!-- ACD Specific Profiles -->
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_LPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_LPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <!-- Sensor PCM Data Specific Profiles -->
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFEC">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_FFEC">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <!-- SVA/Hotword Specific Profiles -->
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_NLPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_RAW_NLPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_RAW_LPI">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_RAW_LPI_AAD">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_RAW_NLPI">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_FFNS">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="TRI_MIC_16KHZ_16BIT_FFNS">
+ <param sample_rate="16000" />
+ <param channels="3" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-tmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="QUAD_MIC_16KHZ_16BIT_FFNS">
+ <param sample_rate="16000" />
+ <param channels="4" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-qmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_FFECNS">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="TRI_MIC_16KHZ_16BIT_FFECNS">
+ <param sample_rate="16000" />
+ <param channels="3" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-tmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="QUAD_MIC_16KHZ_16BIT_FFECNS">
+ <param sample_rate="16000" />
+ <param channels="4" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-qmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_CUSTOM_NS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_CUSTOM_NS">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="TRI_MIC_16KHZ_16BIT_CUSTOM_NS">
+ <param sample_rate="16000" />
+ <param channels="3" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-tmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="QUAD_MIC_16KHZ_16BIT_CUSTOM_NS">
+ <param sample_rate="16000" />
+ <param channels="4" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-qmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_CUSTOM_ECNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_CUSTOM_ECNS">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="TRI_MIC_16KHZ_16BIT_CUSTOM_ECNS">
+ <param sample_rate="16000" />
+ <param channels="3" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-tmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="QUAD_MIC_16KHZ_16BIT_CUSTOM_ECNS">
+ <param sample_rate="16000" />
+ <param channels="4" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-qmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_CUSTOM_NS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_CUSTOM_ECNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ </capture_profile_list>
+ <acd_platform_info>
+ <config>
+ <param acd_enable="true" />
+ </config>
+ <!-- ACD -->
+ <stream_config>
+ <name>QC_ACD</name>
+ <param vendor_uuid="4e93281b-296e-4d73-9833-2710c3c7c1db" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <!-- Module output channels -->
+ <param out_channels="1" />
+ <operating_modes>
+ <low_power capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_LPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_LPI" />
+ <high_performance capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFECNS" />
+ </operating_modes>
+ <sound_model_info>
+ <sound_model>
+ <name>ACD_SOUND_MODEL_ID_EVENT</name>
+ <bin>event.eai</bin>
+ <uuid>0x0B001007</uuid>
+ <contexts>
+ <context id="0x0800132D" /> <!-- EVENT_ALARM -->
+ <context id="0x0800132E" /> <!-- EVENT_BABYCRYING -->
+ <context id="0x0800132F" /> <!-- EVENT_DOGBARKING -->
+ <context id="0x08001330" /> <!-- EVENT_DOORBELL -->
+ <context id="0x08001331" /> <!-- EVENT_DOOROPENCLOSE -->
+ <context id="0x08001332" /> <!-- EVENT_CRASH -->
+ <context id="0x08001333" /> <!-- EVENT_GLASSBREAKING -->
+ <context id="0x08001334" /> <!-- EVENT_SIREN -->
+ <context id="0x080013CC" /> <!-- EVENT_CARHONK -->
+ <context id="0x080013CD" /> <!-- EVENT_GUNSHOT -->
+ <context id="0x080013CE" /> <!-- EVENT_PHONERING -->
+ <context id="0x080013CF" /> <!-- EVENT_SLEEPAPNEA -->
+ <context id="0x080013D0" /> <!-- EVENT_SNORING -->
+ <context id="0x080013D1" /> <!-- EVENT_CATMEOW -->
+ <context id="0x080013D2" /> <!-- EVENT_DOORKNOCK -->
+ <context id="0x080013D3" /> <!-- EVENT_WATERFLOW -->
+ <context id="0x080013D4" /> <!-- EVENT_FIREALARM -->
+ </contexts>
+ </sound_model>
+ <sound_model>
+ <name>ACD_SOUND_MODEL_ID_SPEECH</name>
+ <bin>speech.eai</bin>
+ <uuid>0x0B001008</uuid>
+ <contexts>
+ <context id="0x08001335" /> <!-- AMBIENCE_SPEECH -->
+ </contexts>
+ </sound_model>
+ <sound_model>
+ <name>ACD_SOUND_MODEL_ID_MUSIC</name>
+ <bin>music.eai</bin>
+ <uuid>0x0B001009</uuid>
+ <contexts>
+ <context id="0x08001336" /> <!-- AMBIENCE_MUSIC -->
+ </contexts>
+ </sound_model>
+ <sound_model>
+ <name>ACD_SOUND_MODEL_AMBIENCE_NOISE_SILENCE</name>
+ <bin></bin> <!-- Following contexts dont have a model, hence empty bin -->
+ <uuid>0xFFFFFFFF</uuid> <!-- Indicates no sound model -->
+ <contexts>
+ <context id="0x08001337" /> <!-- AMBIENCE_NOISY_SPL -->
+ <context id="0x08001338" /> <!-- AMBIENCE_SILENT_SPL -->
+ <context id="0x08001339" /> <!-- AMBIENCE_NOISY_SFLUX -->
+ <context id="0x0800133A" /> <!-- AMBIENCE_SILENT_SFLUX -->
+ </contexts>
+ </sound_model>
+ </sound_model_info>
+ </stream_config>
+ <!-- Sensor PCM Data -->
+ <stream_config>
+ <name>QC_SENSOR_PCM_DATA</name>
+ <param vendor_uuid="c88a2c89-7a55-498c-836f-5d7ec8582990" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <!-- Module output channels -->
+ <param out_channels="1" />
+ <operating_modes>
+ <low_power capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_RAW_LPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_LPI" />
+ <low_power_ns capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFNS" />
+ <high_performance capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFEC" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFEC" />
+ <high_performance_ns capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFECNS" />
+ </operating_modes>
+ </stream_config>
+ </acd_platform_info>
+ <!-- Voice UI -->
+ <vui_platform_info>
+ <config>
+ <!-- Voice UI Params used by apk to indicate the Voice UI version current platform supports -->
+ <param version="0x0103" />
+ <param enable_failure_detection="false" />
+ <param notify_second_stage_failure="false" />
+ <param mmap_enable="true" />
+ <param mmap_buffer_duration="5000" />
+ <!-- 5ms duration of data -->
+ <param mmap_frame_length="5" />
+ <!-- Move this flag to common_config if ACD/Sensor PCM Data support car mode in the future -->
+ <param transit_to_non_lpi_on_charging="false" />
+ </config>
+ <!-- Multiple stream_config tags can be listed, each with unique -->
+ <!-- vendor_uuid. The below tag represents QC Voice UI sound model -->
+ <!-- configuration. ISV must use their own unique vendor_uuid. -->
+ <stream_config>
+ <name>QC_VOICE_UI</name>
+ <param vendor_uuid="68ab2d40-e860-11e3-95ef-0002a5d5c51b" />
+ <param merge_first_stage_sound_models="false" />
+ <!--For now total 3 engines are supported, if more engine instances are needed,-->
+ <!-- do update acdb and usecaseKvManager.xml files by adding more instances -->
+ <param pdk_first_stage_max_engine_count="3"/>
+ <!-- Profile specific data which the algorithm can support -->
+ <param capture_keyword="2000" /> <!-- Default history buffer length -->
+ <param client_capture_read_delay="2000" /> <!-- reserved buffer duration for rt data -->
+ <param pre_roll_duration="500" /> <!-- Default preroll duration -->
+ <!-- durations in us -->
+ <param kw_start_tolerance="360000" />
+ <param kw_end_tolerance="240000" />
+ <param data_before_kw_start="360000" />
+ <param data_after_kw_end="480000" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <!-- Module output channels -->
+ <param out_channels="1" />
+ <operating_modes>
+ <low_power capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_RAW_LPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_LPI" />
+ <high_performance capture_profile_handset="DUAL_MIC_16KHZ_16BIT_FFECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFECNS" />
+ <high_performance_and_charging capture_profile_handset="DUAL_MIC_16KHZ_16BIT_FFECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFECNS" />
+ </operating_modes>
+ <sound_model_info>
+ <first_stage_module_params>
+ <param module_type="GMM" />
+ <param load_sound_model_ids="0xC0000008, 0x0800104C" />
+ <param wakeup_config_ids="0xC0000008, 0x08001049" />
+ <param buffering_config_ids="0xC0000008, 0x08001044" />
+ <param engine_reset_ids="0xC0000008, 0x08001051" />
+ </first_stage_module_params>
+ <first_stage_module_params>
+ <param module_type="PDK" />
+ <param load_sound_model_ids="0xC0000008, 0x0800124E" />
+ <param unload_sound_model_ids="0xC0000008, 0x08001250" />
+ <param wakeup_config_ids="0xC0000008, 0x08001049" />
+ <param buffering_config_ids="0xC0000008, 0x0800124F" />
+ <param engine_reset_ids="0xC0000008, 0x08001051" />
+ </first_stage_module_params>
+ <arm_ss_module_params>
+ <!-- Options are "KEYWORD_DETECTION", "USER_VERIFICATION", "CUSTOM_DETECTION" -->
+ <param sm_detection_type= "KEYWORD_DETECTION" />
+ <param sm_id="0x2" />
+ <param module_lib="libcapiv2svacnnvendor.so" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <param channel_count="1" />
+ </arm_ss_module_params>
+ <arm_ss_module_params>
+ <param sm_detection_type= "USER_VERIFICATION" />
+ <param sm_id="0x4" />
+ <param module_lib="libcapiv2uvvendor.so" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <param channel_count="1" />
+ </arm_ss_module_params>
+ <arm_ss_module_params>
+ <param sm_detection_type= "KEYWORD_DETECTION" />
+ <param sm_id="0x8" />
+ <param module_lib="libcapiv2svarnnvendor.so" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <param channel_count="1" />
+ </arm_ss_module_params>
+ <arm_ss_module_params>
+ <param sm_detection_type= "KEYWORD_DETECTION" />
+ <param sm_id="0x40" />
+ <param module_lib="libcapiv2udk7vendor.so" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <param channel_count="1" />
+ </arm_ss_module_params>
+ </sound_model_info>
+ </stream_config>
+ <!-- Hotword Voice UI-->
+ <stream_config>
+ <name>HOTWORD_VOICE_UI</name>
+ <param vendor_uuid="7038ddc8-30f2-11e6-b0ac-40a8f03d3f15" />
+ <param get_module_version="false" />
+ <param merge_first_stage_sound_models="false" />
+ <param capture_keyword="2000" />
+ <param client_capture_read_delay="2000" />
+ <param kw_start_tolerance="100" />
+ <param kw_end_tolerance="100" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <!-- Module output channels -->
+ <param out_channels="1" />
+ <operating_modes>
+ <low_power capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_RAW_LPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_LPI" />
+ <high_performance capture_profile_handset="DUAL_MIC_16KHZ_16BIT_RAW_NLPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_NLPI" />
+ <high_performance_and_charging capture_profile_handset="DUAL_MIC_16KHZ_16BIT_RAW_NLPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_NLPI" />
+ </operating_modes>
+ <sound_model_info>
+ <first_stage_module_params>
+ <param module_type="HOTWORD" />
+ <param load_sound_model_ids="0xC0000008, 0x0800104C" />
+ <param unload_sound_model_ids="0xC0000008, 0x00012C15" />
+ <param buffering_config_ids="0xC0000008, 0x08001044" />
+ <param version_ids="0xC0000008, 0x18000101" />
+ <param engine_reset_ids="0xC0000008, 0x08001051" />
+ </first_stage_module_params>
+ </sound_model_info>
+ </stream_config>
+ <!-- CUSTOM Voice UI-->
+ <stream_config>
+ <name>CUSTOM_VOICE_UI</name>
+ <!-- NOTE: Customer need to replace with their own uuid and match with sound model -->
+ <param vendor_uuid="c51c508a-ee1b-11ec-8ea0-0242ac120002" />
+ <param merge_first_stage_sound_models="false" />
+ <!-- Profile specific data which the algorithm can support -->
+ <param capture_keyword="2000" /> <!-- Default history buffer length -->
+ <param client_capture_read_delay="2000" /> <!-- reserved buffer duration for rt data -->
+ <param pre_roll_duration="500" /> <!-- Default preroll duration -->
+ <!-- durations in us -->
+ <param kw_start_tolerance="360000" />
+ <param kw_end_tolerance="240000" />
+ <param data_before_kw_start="360000" />
+ <param data_after_kw_end="480000" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <!-- Module output channels -->
+ <param out_channels="1" />
+ <operating_modes>
+ <low_power capture_profile_handset="DUAL_MIC_16KHZ_16BIT_CUSTOM_NS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_CUSTOM_NS" />
+ <high_performance capture_profile_handset="DUAL_MIC_16KHZ_16BIT_CUSTOM_ECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_CUSTOM_ECNS" />
+ <high_performance_and_charging capture_profile_handset="DUAL_MIC_16KHZ_16BIT_CUSTOM_ECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_CUSTOM_ECNS" />
+ </operating_modes>
+ <sound_model_info>
+ <first_stage_module_params>
+ <param module_type="CUSTOM1" />
+ <param load_sound_model_ids="0xC0000008, 0x0800104C" />
+ <param custom_config_ids="0xC0000008, 0x08001049" />
+ <param buffering_config_ids="0xC0000008, 0x08001044" />
+ <param engine_reset_ids="0xC0000008, 0x08001051" />
+ </first_stage_module_params>
+ </sound_model_info>
+ </stream_config>
+ </vui_platform_info>
+ </sound_trigger_platform_info>
+</resource_manager_info>
diff --git a/configs/kalama/resourcemanager_kalama_rb5_gen2_dvt.xml b/configs/kalama/resourcemanager_kalama_rb5_gen2_dvt.xml
new file mode 100644
index 0000000..6ef74c6
--- /dev/null
+++ b/configs/kalama/resourcemanager_kalama_rb5_gen2_dvt.xml
@@ -0,0 +1,1584 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
+
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of The Linux Foundation nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Changes from Qualcomm Innovation Center, Inc. are provided under the following license:
+*
+* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted (subject to the limitations in the
+* disclaimer below) provided that the following conditions are met:
+*
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+*
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+*
+* * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
+* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.-->
+
+<resource_manager_info>
+ <version>2.0</version>
+ <config_params>
+ <param key="native_audio_mode" value="multiple_mix_dsp"/>
+ <!-- Uncomment HIFI Filter Headphones related sections when set this
+ hifi_filter key to true -->
+ <param key="hifi_filter" value="false"/>
+ <param key="max_sessions" value="128"/>
+ <param key="max_nonTunnel_sessions" value="4"/>
+ <param key="logging_level" value ="3" />
+ <param key="context_manager_enable" value ="false" />
+ <param key="lpi_logging_enable" value ="false" />
+ <param key="upd_dedicated_be" value ="true" />
+ <param key="signal_handler" value ="true" />
+ <param key="device_mux_config" value ="false" />
+ <param key="upd_duty_cycle_enable" value="false" />
+ <param key="upd_virtual_port" value ="false" />
+ </config_params>
+ <config_volume>
+ <use_volume_set_param>0</use_volume_set_param>
+ <supported_streams>
+ <supported_stream>PAL_STREAM_ULTRA_LOW_LATENCY</supported_stream>
+ <supported_stream>PAL_STREAM_COMPRESSED</supported_stream>
+ </supported_streams>
+ </config_volume>
+ <config_lpm>
+ <use_disable_lpm>1</use_disable_lpm>
+ <lpm_supported_streams>
+ <lpm_supported_stream>PAL_STREAM_LOW_LATENCY</lpm_supported_stream>
+ <lpm_supported_stream>PAL_STREAM_ULTRA_LOW_LATENCY</lpm_supported_stream>
+ </lpm_supported_streams>
+ </config_lpm>
+ <config_gapless key="gapless_supported" value="1"/>
+ <bt_codecs>
+ <codec codec_format="CODEC_TYPE_AAC" codec_type="enc|dec" codec_library="lib_bt_bundle.so" />
+ <codec codec_format="CODEC_TYPE_SBC" codec_type="enc|dec" codec_library="lib_bt_bundle.so" />
+ <codec codec_format="CODEC_TYPE_LDAC" codec_type="enc" codec_library="lib_bt_bundle.so" />
+ <codec codec_format="CODEC_TYPE_APTX" codec_type="enc" codec_library="lib_bt_aptx.so" />
+ <codec codec_format="CODEC_TYPE_APTX_HD" codec_type="enc" codec_library="lib_bt_aptx.so" />
+ <codec codec_format="CODEC_TYPE_APTX_AD" codec_type="enc" codec_library="lib_bt_aptx.so" />
+ <codec codec_format="CODEC_TYPE_APTX_DUAL_MONO" codec_type="enc" codec_library="lib_bt_aptx.so" />
+ <codec codec_format="CODEC_TYPE_APTX_AD_SPEECH" codec_type="enc|dec" codec_library="lib_bt_aptx.so" />
+ <codec codec_format="CODEC_TYPE_LC3" codec_type="enc|dec" codec_library="lib_bt_ble.so" />
+ <codec codec_format="CODEC_TYPE_APTX_AD_QLEA" codec_type="enc" codec_library="lib_bt_ble.so" />
+ </bt_codecs>
+ <gain_db_to_level_mapping>
+ <gain_level_map db="-59" level="5"/>
+ <gain_level_map db="-17.4" level="4"/>
+ <gain_level_map db="-13.8" level="3"/>
+ <gain_level_map db="-10.2" level="2"/>
+ <gain_level_map db="0" level="1"/>
+ </gain_db_to_level_mapping>
+ <config_voice>
+ <vsid>0xB3000000</vsid>
+ <loopbackDelay>1000</loopbackDelay>
+ <maxVolIndex>5</maxVolIndex>
+ <mode_map>
+ <modepair key="0x11C05000" value="0xB3000001"/>
+ <modepair key="0x11DC5000" value="0xB3000001"/>
+ <modepair key="0x12006000" value="0xB3000001"/>
+ <modepair key="0x121C6000" value="0xB3000001"/>
+ </mode_map>
+ </config_voice>
+ <sleep_monitor_vote_streams>
+ <low_power_stream_type>PAL_STREAM_VOICE_UI</low_power_stream_type>
+ <low_power_stream_type>PAL_STREAM_ACD</low_power_stream_type>
+ <low_power_stream_type>PAL_STREAM_ULTRASOUND</low_power_stream_type>
+ <low_power_stream_type>PAL_STREAM_SENSOR_PCM_DATA</low_power_stream_type>
+ <avoid_vote_stream_type>PAL_STREAM_CONTEXT_PROXY</avoid_vote_stream_type>
+ </sleep_monitor_vote_streams>
+ <group_device_cfg>
+ <upd_rx>
+ <snd_device name="handset" />
+ <group_dev sample_rate = "0" channels="0" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="1" />
+ </upd_rx>
+ <handset>
+ <group_dev sample_rate = "0" channels="0" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="1" />
+ </handset>
+ <speaker>
+ <group_dev sample_rate = "0" channels="0" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="3" />
+ </speaker>
+ <speaker_voice>
+ <group_dev sample_rate = "0" channels="0" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="1" />
+ </speaker_voice>
+ <upd_rx_handset>
+ <snd_device name="speaker" />
+ <devicepp_mfc sample_rate="96000" channels="2" bit_width="16" />
+ <group_dev sample_rate = "96000" channels="2" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="3" />
+ </upd_rx_handset>
+ <upd_rx_speaker>
+ <snd_device name="speaker" />
+ <devicepp_mfc sample_rate="96000" channels="2" bit_width="16" />
+ <group_dev sample_rate = "96000" channels="2" bit_fmt="PAL_AUDIO_FMT_PCM_S16_LE" slot_mask="3" />
+ </upd_rx_speaker>
+ </group_device_cfg>
+ <!--
+ Usecase Priorities
+ ====================
+
+ Examples of usecases with their corresponding priorities,
+ ranked from 1 (highest priority).
+ 1 for voice
+ 2 for VOIP
+ 3 for playback/recording and (default priority assigned in the streamPriorityLUT map in ResourceManager.cpp)
+ 4 for UPD
+
+ In the event of concurrency on shared backend devices, the stream with the highest priority will determine the final device.
+ Example:
+ ========================================
+ usecase | priority | snd-devicename
+ ========================================
+ VOICE | 1 | voice-handset
+ VOIP | 2 | voip-handset
+ deepbuffer| 3 | speaker-mono
+
+ The final device will be voice-handset.
+ -->
+ <device_profile>
+ <in-device>
+ <id>PAL_DEVICE_IN_HANDSET_MIC</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-TX-3</back_end_name>
+ <max_channels>4</max_channels>
+ <channels>1</channels>
+ <samplerate>48000</samplerate>
+ <snd_device_name>handset-mic</snd_device_name>
+ <ec_enable>0</ec_enable>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <ec_enable>1</ec_enable>
+ <custom-config key="unprocessed-hdr-mic-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-portrait</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-portrait</snd_device_name>
+ </custom-config>
+ </usecase>
+ <!--Uncomment these lines instead of above lines if needing to enable EC per custom key
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="vr-mic">
+ <ec_enable>1</ec_enable>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <ec_enable>1</ec_enable>
+ <custom-config key="unprocessed-hdr-mic-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-portrait</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-portrait</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ <priority>2</priority>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <sidetone_mode>HW</sidetone_mode>
+ <bit_width>16</bit_width>
+ <ec_enable>1</ec_enable>
+ <custom-config key="dual-mic">
+ <channels>2</channels>
+ <snd_device_name>handset-dmic-endfire</snd_device_name>
+ </custom-config>
+ <custom-config key="quad-mic">
+ <channels>4</channels>
+ <snd_device_name>quad-mic</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ <custom-config key="dual-mic">
+ <channels>2</channels>
+ <snd_device_name>handset-dmic-endfire</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_RAW</name>
+ <snd_device_name>handset-mic-unprocessed</snd_device_name>
+ <custom-config key="unprocessed-hdr-mic-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-portrait</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-portrait</snd_device_name>
+ </custom-config>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_HANDSET</id>
+ <id>PAL_DEVICE_OUT_SPEAKER</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_SPEAKER_MIC</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-TX-3</back_end_name>
+ <max_channels>4</max_channels>
+ <samplerate>48000</samplerate>
+ <channels>1</channels>
+ <ec_enable>0</ec_enable>
+ <snd_device_name>speaker-mic</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <ec_enable>1</ec_enable>
+ <custom-config key="unprocessed-hdr-mic-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-portrait</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-portrait</snd_device_name>
+ </custom-config>
+ </usecase>
+ <!--Uncomment these lines instead of above lines if needing to enable EC per custom key
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="vr-mic">
+ <ec_enable>1</ec_enable>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <ec_enable>1</ec_enable>
+ <custom-config key="unprocessed-hdr-mic-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-portrait</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-landscape">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-landscape</snd_device_name>
+ </custom-config>
+ <custom-config key="unprocessed-hdr-mic-inverted-portrait">
+ <channels>4</channels>
+ <snd_device_name>unprocessed-hdr-mic-inverted-portrait</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ <priority>2</priority>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <sidetone_mode>OFF</sidetone_mode>
+ <bit_width>16</bit_width>
+ <ec_enable>1</ec_enable>
+ <custom-config key="dual-mic">
+ <channels>2</channels>
+ <snd_device_name>speaker-dmic-endfire</snd_device_name>
+ </custom-config>
+ <custom-config key="quad-mic">
+ <channels>4</channels>
+ <snd_device_name>quad-mic</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_LOOPBACK</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_SPEAKER</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_WIRED_HEADSET</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-TX-3</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>headset-mic</snd_device_name>
+ <ec_enable>0</ec_enable>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <!--Uncomment these lines instead of above lines if needing to enable EC per custom key
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="vr-mic">
+ <ec_enable>1</ec_enable>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <sidetone_mode>HW</sidetone_mode>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ <priority>1</priority>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_WIRED_HEADSET</id>
+ <id>PAL_DEVICE_OUT_WIRED_HEADPHONE</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_BLUETOOTH_SCO_HEADSET</id>
+ <back_end_name>SLIM-DEV1-TX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <samplerate>8000</samplerate>
+ <bit_width>16</bit_width>
+ <snd_device_name>bt-sco-mic</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_SCO</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_HANDSET_VA_MIC</id>
+ <back_end_name>CODEC_DMA-LPAIF_VA-TX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ <snd_device_name>va-mic</snd_device_name>
+ <ec_enable>1</ec_enable>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_SPEAKER</id>
+ <id>PAL_DEVICE_OUT_HANDSET</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_A2DP</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE_BROADCAST</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_HEADSET_VA_MIC</id>
+ <back_end_name>CODEC_DMA-LPAIF_VA-TX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <snd_device_name>headset-va-mic</snd_device_name>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ <ec_enable>1</ec_enable>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_WIRED_HEADSET</id>
+ <id>PAL_DEVICE_OUT_WIRED_HEADPHONE</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_A2DP</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE</id>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE_BROADCAST</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_USB_HEADSET</id>
+ <back_end_name>USB_AUDIO-TX</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <samplerate>48000</samplerate>
+ <ec_enable>0</ec_enable>
+ <snd_device_name>usb-headset-mic</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <!--Uncomment these lines instead of above lines if needing to enable EC per custom key
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="vr-mic">
+ <ec_enable>1</ec_enable>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <sidetone_mode>HW</sidetone_mode>
+ <ec_enable>1</ec_enable>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_USB_HEADSET</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_FM_TUNER</id>
+ <back_end_name>MI2S-LPAIF-TX-SECONDARY</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <snd_device_name>play-fm</snd_device_name>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ <usecase>
+ <name>PAL_STREAM_LOOPBACK</name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_PROXY</id>
+ <back_end_name>PCM_RT_PROXY-TX-1</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <snd_device_name>afe-proxy</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_PROXY</name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_VI_FEEDBACK</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-TX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <samplerate>48000</samplerate>
+ <bit_width>32</bit_width>
+ <snd_device_name>vi-feedback</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <channels>1</channels>
+ <snd_device_name>vi-feedback-mono-2</snd_device_name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_CPS_FEEDBACK</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-TX-2</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <samplerate>24000</samplerate>
+ <bit_width>32</bit_width>
+ <snd_device_name>cps-feedback</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <channels>1</channels>
+ <snd_device_name>cps-feedback-mono-2</snd_device_name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_BLUETOOTH_A2DP</id>
+ <back_end_name>SLIM-DEV1-TX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-a2dp-mic</snd_device_name>
+ <samplerate>44100</samplerate>
+ <bit_width>16</bit_width>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_BLUETOOTH_BLE</id>
+ <back_end_name>SLIM-DEV1-TX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-ble-mic</snd_device_name>
+ <samplerate>44100</samplerate>
+ <bit_width>16</bit_width>
+ <usecase>
+ <name>PAL_STREAM_LOW_LATENCY</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_TX</name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRA_LOW_LATENCY</name>
+ </usecase>
+ <ec_rx_device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE</id>
+ </ec_rx_device>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_TELEPHONY_RX</id>
+ <back_end_name>PCM_RT_PROXY-TX-1</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <snd_device_name>afe-proxy</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_PROXY</name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_ULTRASOUND_MIC</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-TX-4</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <samplerate>96000</samplerate>
+ <bit_width>16</bit_width>
+ <snd_device_name>ultrasound-mic</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_ULTRASOUND</name>
+ </usecase>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_EXT_EC_REF</id>
+ <back_end_name>MI2S-LPAIF-TX-TERTIARY</back_end_name>
+ <snd_device_name>ext_ec_ref_tx</snd_device_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </in-device>
+ <in-device>
+ <id>PAL_DEVICE_IN_ECHO_REF</id>
+ <back_end_name>PCM_DUMMY-TX-0</back_end_name>
+ <snd_device_name>echo-ref-record</snd_device_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <bit_width>16</bit_width>
+ <samplerate>48000</samplerate>
+ <usecase>
+ <name>PAL_STREAM_RAW</name>
+ </usecase>
+ </in-device>
+ <out-device>
+ <id>PAL_DEVICE_NONE</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-RX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <snd_device_name>none</snd_device_name>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_SPEAKER</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-RX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <samplerate>48000</samplerate>
+ <snd_device_name>speaker</snd_device_name>
+ <speaker_protection_enabled>1</speaker_protection_enabled>
+ <fractional_sr>0</fractional_sr>
+ <!-- To enable external EC reference the flag extec_ref_enabled must be added as 1 -->
+ <ext_ec_ref_enabled>0</ext_ec_ref_enabled>
+ <!-- Flag to specify cps mode which is applicable
+ Values: disable CPS: 0
+ CPS streaming: 1
+ ADSP control mode: 2
+ -->
+ <cps_mode>1</cps_mode>
+ <vbat_enabled>1</vbat_enabled>
+ <!--specify the supported bit format on speaker end point -->
+ <!--this should be in the form of pal_audio_fmt_id-->
+ <!--e.g <supported_bit_format >PAL_AUDIO_FMT_PCM_S24_LE</supported_bit_format>-->
+ <!--We support 24 bit for speaker as of now, as some module in ADSP does not support Q31 format-->
+ <!--This can be changed to PAL_AUDIO_FMT_PCM_S32_LE if 32 bit e2e support is required-->
+ <supported_bit_format>PAL_AUDIO_FMT_PCM_S24_LE</supported_bit_format>
+ <!-- RAS should be enabled with speaker protection always -->
+ <ras_enabled>0</ras_enabled>
+ <!-- Flag to specify speaker in case Voice call is switched from
+ handset to speaker with only 1 speaker.
+ Values: Both speaker : 0
+ Right speaker: 1
+ Left speaker : 2
+ -->
+ <speaker_mono_right>0</speaker_mono_right>
+ <!-- Time in seconds for Quick cal. Set 0 to disable -->
+ <quick_cal_time>0</quick_cal_time>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <channels>1</channels>
+ <snd_device_name>speaker-mono-2</snd_device_name>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_RX</name>
+ <priority>2</priority>
+ <channels>1</channels>
+ <snd_device_name>speaker-mono-2</snd_device_name>
+ </usecase>
+ <!--
+ Playback/Recording streams have a default priority of 3
+ (default priority assigned in the streamPriorityLUT map in ResourceManager.cpp).
+ Check the comments above "Usecase Priorities" for details.
+ -->
+ <!--
+ While the UPD runs on a shared backend, whenever a speaker usecase arises,
+ UPD must always switch to the speaker; it can only return to handset when
+ the last speaker usecase terminates.
+ Giving UPD the lowest priority is in line with the understanding of
+ priority settings.
+ -->
+ <usecase>
+ <name>PAL_STREAM_ULTRASOUND</name>
+ <priority>4</priority>
+ <samplerate>96000</samplerate>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_HANDSET</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-RX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <!-- To enable external EC reference the flag extec_ref_enabled must be added as 1 -->
+ <ext_ec_ref_enabled>0</ext_ec_ref_enabled>
+ <samplerate>48000</samplerate>
+ <fractional_sr>0</fractional_sr>
+ <snd_device_name>handset</snd_device_name>
+ <handset_protection_enabled>0</handset_protection_enabled>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <custom-config key="HAC">
+ <snd_device_name>voice-handset-hac</snd_device_name> <!-- override sound device name with HAC handset -->
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_RX</name>
+ <priority>2</priority>
+ <custom-config key="HAC">
+ <snd_device_name>voice-handset-hac</snd_device_name> <!-- override sound device name with HAC handset for voip -->
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_ULTRASOUND</name>
+ <priority>4</priority>
+ <samplerate>96000</samplerate>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_WIRED_HEADPHONE</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-RX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <fractional_sr>1</fractional_sr>
+ <snd_device_name>headphones</snd_device_name>
+ <!--HIFI Filter Headphones-Uncomment this when param key hifi_filter is true
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_PCM_OFFLOAD</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_RX</name>
+ <priority>2</priority>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_WIRED_HEADSET</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-RX-0</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <fractional_sr>1</fractional_sr>
+ <snd_device_name>headphones</snd_device_name>
+ <!--HIFI Filter Headphones-Uncomment this when param key hifi_filter is true
+ <usecase>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_PCM_OFFLOAD</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <custom-config key="hifi-filter_custom_key">
+ <snd_device_name>headphones-hifi-filter</snd_device_name>
+ </custom-config>
+ </usecase>
+ -->
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </usecase>
+ <usecase>
+ <name>PAL_STREAM_VOIP_RX</name>
+ <priority>2</priority>
+ <samplerate>48000</samplerate>
+ <bit_width>16</bit_width>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_A2DP</id>
+ <back_end_name>SLIM-DEV1-RX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-a2dp</snd_device_name>
+ <samplerate>44100</samplerate>
+ <bit_width>16</bit_width>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE</id>
+ <back_end_name>SLIM-DEV1-RX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-ble</snd_device_name>
+ <samplerate>44100</samplerate>
+ <bit_width>16</bit_width>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_BLE_BROADCAST</id>
+ <back_end_name>SLIM-DEV1-RX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-ble</snd_device_name>
+ <samplerate>44100</samplerate>
+ <bit_width>16</bit_width>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_BLUETOOTH_SCO</id>
+ <back_end_name>SLIM-DEV1-RX-7</back_end_name>
+ <max_channels>1</max_channels>
+ <channels>1</channels>
+ <snd_device_name>bt-sco</snd_device_name>
+ <samplerate>8000</samplerate>
+ <bit_width>16</bit_width>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_AUX_DIGITAL</id>
+ <back_end_name>DISPLAY_PORT-RX</back_end_name>
+ <max_channels>32</max_channels>
+ <channels>2</channels>
+ <snd_device_name>display-port</snd_device_name>
+ <fractional_sr>1</fractional_sr>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_HDMI</id>
+ <back_end_name>DISPLAY_PORT-RX</back_end_name>
+ <max_channels>32</max_channels>
+ <channels>2</channels>
+ <fractional_sr>1</fractional_sr>
+ <snd_device_name>display-port</snd_device_name>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_USB_DEVICE</id>
+ <back_end_name>USB_AUDIO-RX</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <snd_device_name>usb-headphones</snd_device_name>
+ <fractional_sr>1</fractional_sr>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_USB_HEADSET</id>
+ <back_end_name>USB_AUDIO-RX</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>2</channels>
+ <snd_device_name>usb-headphones</snd_device_name>
+ <fractional_sr>1</fractional_sr>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_AUX_DIGITAL_1</id>
+ <back_end_name>DISPLAY_PORT-RX</back_end_name>
+ <max_channels>8</max_channels>
+ <channels>2</channels>
+ <snd_device_name>display-port</snd_device_name>
+ <fractional_sr>1</fractional_sr>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_PROXY</id>
+ <back_end_name>PCM_RT_PROXY-RX-1</back_end_name>
+ <max_channels>8</max_channels>
+ <channels>2</channels>
+ <snd_device_name>afe-proxy</snd_device_name>
+ <fractional_sr>0</fractional_sr>
+ <samplerate>48000</samplerate>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_HEARING_AID</id>
+ <back_end_name>PCM_RT_PROXY-RX-1</back_end_name>
+ <max_channels>8</max_channels>
+ <channels>2</channels>
+ <snd_device_name>afe-proxy</snd_device_name>
+ <fractional_sr>0</fractional_sr>
+ <usecase>
+ <name>PAL_STREAM_VOICE_CALL</name>
+ <priority>1</priority>
+ </usecase>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_HAPTICS_DEVICE</id>
+ <back_end_name>CODEC_DMA-LPAIF_RXTX-RX-6</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <snd_device_name>haptics-dev</snd_device_name>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_ULTRASOUND</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-RX-1</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <snd_device_name>ultrasound-handset</snd_device_name>
+ <samplerate>96000</samplerate>
+ <bit_width>16</bit_width>
+ </out-device>
+ <out-device>
+ <id>PAL_DEVICE_OUT_ULTRASOUND_DEDICATED</id>
+ <back_end_name>CODEC_DMA-LPAIF_WSA-RX-1</back_end_name>
+ <max_channels>2</max_channels>
+ <channels>1</channels>
+ <snd_device_name>ultrasound-handset</snd_device_name>
+ <samplerate>96000</samplerate>
+ <bit_width>16</bit_width>
+ </out-device>
+ </device_profile>
+ <in_streams>
+ <in_stream>
+ <name>PAL_STREAM_VOIP_TX</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_DEEP_BUFFER</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_COMPRESSED</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_VOICE_UI</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_ACD</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_PROXY</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_COMPRESSED</disabled_stream>
+ <disabled_stream>PAL_STREAM_ULTRA_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_RAW</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_COMPRESSED</disabled_stream>
+ <disabled_stream>PAL_STREAM_ULTRA_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ <in_stream>
+ <name>PAL_STREAM_SENSOR_PCM_DATA</name>
+ <policies>
+ <ec_ref>
+ <disabled_stream>PAL_STREAM_LOW_LATENCY</disabled_stream>
+ <disabled_stream>PAL_STREAM_GENERIC</disabled_stream>
+ </ec_ref>
+ </policies>
+ </in_stream>
+ </in_streams>
+ <sound_trigger_platform_info>
+ <common_config>
+ <!-- Sound trigger streams common params -->
+ <param lpi_enable="true" />
+ <param support_nlpi_switch="true" />
+ <param support_device_switch="true" />
+ <param enable_debug_dumps="false" />
+ <param concurrent_capture="true" />
+ <param concurrent_voice_call="true" />
+ <param concurrent_voip_call="true" />
+ <param low_latency_bargein_enable="false" />
+ </common_config>
+ <capture_profile_list>
+ <!-- Common Profiles -->
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_LPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_LPI_AAD">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFECNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_RAW_LPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_RAW_LPI_AAD">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_FFNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_FFECNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <!-- ACD Specific Profiles -->
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_LPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_LPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <!-- Sensor PCM Data Specific Profiles -->
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFEC">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_FFEC">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <!-- SVA/Hotword Specific Profiles -->
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_NLPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_RAW_NLPI">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_RAW_LPI">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_RAW_LPI_AAD">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_RAW_NLPI">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_FFNS">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="TRI_MIC_16KHZ_16BIT_FFNS">
+ <param sample_rate="16000" />
+ <param channels="3" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-tmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="QUAD_MIC_16KHZ_16BIT_FFNS">
+ <param sample_rate="16000" />
+ <param channels="4" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-qmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_FFECNS">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="TRI_MIC_16KHZ_16BIT_FFECNS">
+ <param sample_rate="16000" />
+ <param channels="3" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-tmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="QUAD_MIC_16KHZ_16BIT_FFECNS">
+ <param sample_rate="16000" />
+ <param channels="4" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-qmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_CUSTOM_NS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_CUSTOM_NS">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="TRI_MIC_16KHZ_16BIT_CUSTOM_NS">
+ <param sample_rate="16000" />
+ <param channels="3" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-tmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="QUAD_MIC_16KHZ_16BIT_CUSTOM_NS">
+ <param sample_rate="16000" />
+ <param channels="4" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-qmic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_CUSTOM_ECNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-mono" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="DUAL_MIC_16KHZ_16BIT_CUSTOM_ECNS">
+ <param sample_rate="16000" />
+ <param channels="2" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-dmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="TRI_MIC_16KHZ_16BIT_CUSTOM_ECNS">
+ <param sample_rate="16000" />
+ <param channels="3" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-tmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="QUAD_MIC_16KHZ_16BIT_CUSTOM_ECNS">
+ <param sample_rate="16000" />
+ <param channels="4" />
+ <param bit_width="16" />
+ <param snd_name="va-mic-qmic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_CUSTOM_NS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic-lpi" />
+ <param ec_ref="false" />
+ </capture_profile>
+ <capture_profile name="SINGLE_MIC_16KHZ_16BIT_HEADSET_CUSTOM_ECNS">
+ <param sample_rate="16000" />
+ <param channels="1" />
+ <param bit_width="16" />
+ <param snd_name="headset-va-mic" />
+ <param ec_ref="true" />
+ </capture_profile>
+ </capture_profile_list>
+ <acd_platform_info>
+ <config>
+ <param acd_enable="true" />
+ </config>
+ <!-- ACD -->
+ <stream_config>
+ <name>QC_ACD</name>
+ <param vendor_uuid="4e93281b-296e-4d73-9833-2710c3c7c1db" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <!-- Module output channels -->
+ <param out_channels="1" />
+ <operating_modes>
+ <low_power capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_LPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_LPI" />
+ <high_performance capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFECNS" />
+ </operating_modes>
+ <sound_model_info>
+ <sound_model>
+ <name>ACD_SOUND_MODEL_ID_EVENT</name>
+ <bin>event.eai</bin>
+ <uuid>0x0B001007</uuid>
+ <contexts>
+ <context id="0x0800132D" /> <!-- EVENT_ALARM -->
+ <context id="0x0800132E" /> <!-- EVENT_BABYCRYING -->
+ <context id="0x0800132F" /> <!-- EVENT_DOGBARKING -->
+ <context id="0x08001330" /> <!-- EVENT_DOORBELL -->
+ <context id="0x08001331" /> <!-- EVENT_DOOROPENCLOSE -->
+ <context id="0x08001332" /> <!-- EVENT_CRASH -->
+ <context id="0x08001333" /> <!-- EVENT_GLASSBREAKING -->
+ <context id="0x08001334" /> <!-- EVENT_SIREN -->
+ <context id="0x080013CC" /> <!-- EVENT_CARHONK -->
+ <context id="0x080013CD" /> <!-- EVENT_GUNSHOT -->
+ <context id="0x080013CE" /> <!-- EVENT_PHONERING -->
+ <context id="0x080013CF" /> <!-- EVENT_SLEEPAPNEA -->
+ <context id="0x080013D0" /> <!-- EVENT_SNORING -->
+ <context id="0x080013D1" /> <!-- EVENT_CATMEOW -->
+ <context id="0x080013D2" /> <!-- EVENT_DOORKNOCK -->
+ <context id="0x080013D3" /> <!-- EVENT_WATERFLOW -->
+ <context id="0x080013D4" /> <!-- EVENT_FIREALARM -->
+ </contexts>
+ </sound_model>
+ <sound_model>
+ <name>ACD_SOUND_MODEL_ID_SPEECH</name>
+ <bin>speech.eai</bin>
+ <uuid>0x0B001008</uuid>
+ <contexts>
+ <context id="0x08001335" /> <!-- AMBIENCE_SPEECH -->
+ </contexts>
+ </sound_model>
+ <sound_model>
+ <name>ACD_SOUND_MODEL_ID_MUSIC</name>
+ <bin>music.eai</bin>
+ <uuid>0x0B001009</uuid>
+ <contexts>
+ <context id="0x08001336" /> <!-- AMBIENCE_MUSIC -->
+ </contexts>
+ </sound_model>
+ <sound_model>
+ <name>ACD_SOUND_MODEL_AMBIENCE_NOISE_SILENCE</name>
+ <bin></bin> <!-- Following contexts dont have a model, hence empty bin -->
+ <uuid>0xFFFFFFFF</uuid> <!-- Indicates no sound model -->
+ <contexts>
+ <context id="0x08001337" /> <!-- AMBIENCE_NOISY_SPL -->
+ <context id="0x08001338" /> <!-- AMBIENCE_SILENT_SPL -->
+ <context id="0x08001339" /> <!-- AMBIENCE_NOISY_SFLUX -->
+ <context id="0x0800133A" /> <!-- AMBIENCE_SILENT_SFLUX -->
+ </contexts>
+ </sound_model>
+ </sound_model_info>
+ </stream_config>
+ <!-- Sensor PCM Data -->
+ <stream_config>
+ <name>QC_SENSOR_PCM_DATA</name>
+ <param vendor_uuid="c88a2c89-7a55-498c-836f-5d7ec8582990" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <!-- Module output channels -->
+ <param out_channels="1" />
+ <operating_modes>
+ <low_power capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_RAW_LPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_LPI" />
+ <low_power_ns capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFNS" />
+ <high_performance capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFEC" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFEC" />
+ <high_performance_ns capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFECNS" />
+ </operating_modes>
+ </stream_config>
+ </acd_platform_info>
+ <!-- Voice UI -->
+ <vui_platform_info>
+ <config>
+ <!-- Voice UI Params used by apk to indicate the Voice UI version current platform supports -->
+ <param version="0x0103" />
+ <param enable_failure_detection="false" />
+ <param notify_second_stage_failure="false" />
+ <param mmap_enable="true" />
+ <param mmap_buffer_duration="5000" />
+ <!-- 5ms duration of data -->
+ <param mmap_frame_length="5" />
+ <!-- Move this flag to common_config if ACD/Sensor PCM Data support car mode in the future -->
+ <param transit_to_non_lpi_on_charging="false" />
+ </config>
+ <!-- Multiple stream_config tags can be listed, each with unique -->
+ <!-- vendor_uuid. The below tag represents QC Voice UI sound model -->
+ <!-- configuration. ISV must use their own unique vendor_uuid. -->
+ <stream_config>
+ <name>QC_VOICE_UI</name>
+ <param vendor_uuid="68ab2d40-e860-11e3-95ef-0002a5d5c51b" />
+ <param merge_first_stage_sound_models="false" />
+ <!--For now total 3 engines are supported, if more engine instances are needed,-->
+ <!-- do update acdb and usecaseKvManager.xml files by adding more instances -->
+ <param pdk_first_stage_max_engine_count="3"/>
+ <!-- Profile specific data which the algorithm can support -->
+ <param capture_keyword="2000" /> <!-- Default history buffer length -->
+ <param client_capture_read_delay="2000" /> <!-- reserved buffer duration for rt data -->
+ <param pre_roll_duration="500" /> <!-- Default preroll duration -->
+ <!-- durations in us -->
+ <param kw_start_tolerance="360000" />
+ <param kw_end_tolerance="240000" />
+ <param data_before_kw_start="360000" />
+ <param data_after_kw_end="480000" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <!-- Module output channels -->
+ <param out_channels="1" />
+ <operating_modes>
+ <low_power capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_LPI" />
+ <high_performance capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFECNS" />
+ <high_performance_and_charging capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_FFECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_FFECNS" />
+ </operating_modes>
+ <sound_model_info>
+ <first_stage_module_params>
+ <param module_type="GMM" />
+ <param load_sound_model_ids="0xC0000008, 0x0800104C" />
+ <param wakeup_config_ids="0xC0000008, 0x08001049" />
+ <param buffering_config_ids="0xC0000008, 0x08001044" />
+ <param engine_reset_ids="0xC0000008, 0x08001051" />
+ </first_stage_module_params>
+ <first_stage_module_params>
+ <param module_type="PDK" />
+ <param load_sound_model_ids="0xC0000008, 0x0800124E" />
+ <param unload_sound_model_ids="0xC0000008, 0x08001250" />
+ <param wakeup_config_ids="0xC0000008, 0x08001049" />
+ <param buffering_config_ids="0xC0000008, 0x0800124F" />
+ <param engine_reset_ids="0xC0000008, 0x08001051" />
+ </first_stage_module_params>
+ <arm_ss_module_params>
+ <!-- Options are "KEYWORD_DETECTION", "USER_VERIFICATION", "CUSTOM_DETECTION" -->
+ <param sm_detection_type= "KEYWORD_DETECTION" />
+ <param sm_id="0x2" />
+ <param module_lib="libcapiv2svacnnvendor.so" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <param channel_count="1" />
+ </arm_ss_module_params>
+ <arm_ss_module_params>
+ <param sm_detection_type= "USER_VERIFICATION" />
+ <param sm_id="0x4" />
+ <param module_lib="libcapiv2uvvendor.so" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <param channel_count="1" />
+ </arm_ss_module_params>
+ <arm_ss_module_params>
+ <param sm_detection_type= "KEYWORD_DETECTION" />
+ <param sm_id="0x8" />
+ <param module_lib="libcapiv2svarnnvendor.so" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <param channel_count="1" />
+ </arm_ss_module_params>
+ <arm_ss_module_params>
+ <param sm_detection_type= "KEYWORD_DETECTION" />
+ <param sm_id="0x40" />
+ <param module_lib="libcapiv2udk7vendor.so" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <param channel_count="1" />
+ </arm_ss_module_params>
+ </sound_model_info>
+ </stream_config>
+ <!-- Hotword Voice UI-->
+ <stream_config>
+ <name>HOTWORD_VOICE_UI</name>
+ <param vendor_uuid="7038ddc8-30f2-11e6-b0ac-40a8f03d3f15" />
+ <param get_module_version="false" />
+ <param merge_first_stage_sound_models="false" />
+ <param capture_keyword="2000" />
+ <param client_capture_read_delay="2000" />
+ <param kw_start_tolerance="100" />
+ <param kw_end_tolerance="100" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <!-- Module output channels -->
+ <param out_channels="1" />
+ <operating_modes>
+ <low_power capture_profile_handset="SINGLE_MIC_16KHZ_16BIT_RAW_LPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_LPI" />
+ <high_performance capture_profile_handset="DUAL_MIC_16KHZ_16BIT_RAW_NLPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_NLPI" />
+ <high_performance_and_charging capture_profile_handset="DUAL_MIC_16KHZ_16BIT_RAW_NLPI" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_RAW_NLPI" />
+ </operating_modes>
+ <sound_model_info>
+ <first_stage_module_params>
+ <param module_type="HOTWORD" />
+ <param load_sound_model_ids="0xC0000008, 0x0800104C" />
+ <param unload_sound_model_ids="0xC0000008, 0x00012C15" />
+ <param buffering_config_ids="0xC0000008, 0x08001044" />
+ <param version_ids="0xC0000008, 0x18000101" />
+ <param engine_reset_ids="0xC0000008, 0x08001051" />
+ </first_stage_module_params>
+ </sound_model_info>
+ </stream_config>
+ <!-- CUSTOM Voice UI-->
+ <stream_config>
+ <name>CUSTOM_VOICE_UI</name>
+ <!-- NOTE: Customer need to replace with their own uuid and match with sound model -->
+ <param vendor_uuid="c51c508a-ee1b-11ec-8ea0-0242ac120002" />
+ <param merge_first_stage_sound_models="false" />
+ <!-- Profile specific data which the algorithm can support -->
+ <param capture_keyword="2000" /> <!-- Default history buffer length -->
+ <param client_capture_read_delay="2000" /> <!-- reserved buffer duration for rt data -->
+ <param pre_roll_duration="500" /> <!-- Default preroll duration -->
+ <!-- durations in us -->
+ <param kw_start_tolerance="360000" />
+ <param kw_end_tolerance="240000" />
+ <param data_before_kw_start="360000" />
+ <param data_after_kw_end="480000" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <!-- Module output channels -->
+ <param out_channels="1" />
+ <operating_modes>
+ <low_power capture_profile_handset="DUAL_MIC_16KHZ_16BIT_CUSTOM_NS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_CUSTOM_NS" />
+ <high_performance capture_profile_handset="DUAL_MIC_16KHZ_16BIT_CUSTOM_ECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_CUSTOM_ECNS" />
+ <high_performance_and_charging capture_profile_handset="DUAL_MIC_16KHZ_16BIT_CUSTOM_ECNS" capture_profile_headset="SINGLE_MIC_16KHZ_16BIT_HEADSET_CUSTOM_ECNS" />
+ </operating_modes>
+ <sound_model_info>
+ <first_stage_module_params>
+ <param module_type="CUSTOM1" />
+ <param load_sound_model_ids="0xC0000008, 0x0800104C" />
+ <param custom_config_ids="0xC0000008, 0x08001049" />
+ <param buffering_config_ids="0xC0000008, 0x08001044" />
+ <param engine_reset_ids="0xC0000008, 0x08001051" />
+ </first_stage_module_params>
+ </sound_model_info>
+ </stream_config>
+ </vui_platform_info>
+ </sound_trigger_platform_info>
+</resource_manager_info>
diff --git a/resource_manager/inc/ResourceManager.h b/resource_manager/inc/ResourceManager.h
index b228ef6..39598c4 100644
--- a/resource_manager/inc/ResourceManager.h
+++ b/resource_manager/inc/ResourceManager.h
@@ -509,7 +509,6 @@
static std::mutex mResourceManagerMutex;
static std::mutex mGraphMutex;
static std::mutex mActiveStreamMutex;
- static std::mutex mValidStreamMutex;
static std::mutex mSleepMonitorMutex;
static std::mutex mListFrontEndsMutex;
static int snd_virt_card;
@@ -959,8 +958,6 @@
void unlockGraph() { mGraphMutex.unlock(); };
void lockActiveStream() { mActiveStreamMutex.lock(); };
void unlockActiveStream() { mActiveStreamMutex.unlock(); };
- void lockValidStreamMutex() { mValidStreamMutex.lock(); };
- void unlockValidStreamMutex() { mValidStreamMutex.unlock(); };
void lockResourceManagerMutex() {mResourceManagerMutex.lock();};
void unlockResourceManagerMutex() {mResourceManagerMutex.unlock();};
void getSharedBEActiveStreamDevs(std::vector <std::tuple<Stream *, uint32_t>> &activeStreamDevs,
diff --git a/resource_manager/src/ResourceManager.cpp b/resource_manager/src/ResourceManager.cpp
index 4fea904..dbebbe9 100644
--- a/resource_manager/src/ResourceManager.cpp
+++ b/resource_manager/src/ResourceManager.cpp
@@ -428,7 +428,6 @@
std::mutex ResourceManager::mChargerBoostMutex;
std::mutex ResourceManager::mGraphMutex;
std::mutex ResourceManager::mActiveStreamMutex;
-std::mutex ResourceManager::mValidStreamMutex;
std::mutex ResourceManager::mSleepMonitorMutex;
std::mutex ResourceManager::mListFrontEndsMutex;
std::vector <int> ResourceManager::listAllFrontEndIds = {0};
@@ -1297,9 +1296,7 @@
PAL_INFO(LOG_TAG, "%d state already handled", state);
} else if (state == CARD_STATUS_OFFLINE) {
for (auto str: rm->mActiveStreams) {
- lockValidStreamMutex();
ret = increaseStreamUserCounter(str);
- unlockValidStreamMutex();
if (0 != ret) {
PAL_ERR(LOG_TAG, "Error incrementing the stream counter for the stream handle: %pK", str);
continue;
@@ -1315,9 +1312,7 @@
if (ret)
PAL_DBG(LOG_TAG, "Failed to unvote for stream type %d", type);
}
- lockValidStreamMutex();
ret = decreaseStreamUserCounter(str);
- unlockValidStreamMutex();
if (0 != ret) {
PAL_ERR(LOG_TAG, "Error decrementing the stream counter for the stream handle: %pK", str);
}
@@ -1343,9 +1338,7 @@
SoundTriggerCaptureProfile = GetCaptureProfileByPriority(nullptr);
for (auto str: rm->mActiveStreams) {
- lockValidStreamMutex();
ret = increaseStreamUserCounter(str);
- unlockValidStreamMutex();
if (0 != ret) {
PAL_ERR(LOG_TAG, "Error incrementing the stream counter for the stream handle: %pK", str);
continue;
@@ -1355,9 +1348,7 @@
PAL_ERR(LOG_TAG, "Ssr up handling failed for %pK ret %d",
str, ret);
}
- lockValidStreamMutex();
ret = decreaseStreamUserCounter(str);
- unlockValidStreamMutex();
if (0 != ret) {
PAL_ERR(LOG_TAG, "Error decrementing the stream counter for the stream handle: %pK", str);
}
@@ -3085,7 +3076,6 @@
}
PAL_DBG(LOG_TAG, "stream type %d", type);
mActiveStreamMutex.lock();
- mValidStreamMutex.lock();
switch (type) {
case PAL_STREAM_LOW_LATENCY:
case PAL_STREAM_VOIP_RX:
@@ -3226,7 +3216,7 @@
mAllActiveStreams.push_back(s);
#endif
- mValidStreamMutex.unlock();
+
mActiveStreamMutex.unlock();
PAL_DBG(LOG_TAG, "Exit. ret %d", ret);
return ret;
@@ -3265,7 +3255,6 @@
#endif
PAL_INFO(LOG_TAG, "stream type %d", type);
mActiveStreamMutex.lock();
- mValidStreamMutex.lock();
switch (type) {
case PAL_STREAM_LOW_LATENCY:
case PAL_STREAM_VOIP_RX:
@@ -3396,7 +3385,7 @@
}
deregisterstream(s, mActiveStreams);
- mValidStreamMutex.unlock();
+
mActiveStreamMutex.unlock();
exit:
PAL_DBG(LOG_TAG, "Exit. ret %d", ret);
@@ -3430,30 +3419,30 @@
int ResourceManager::initStreamUserCounter(Stream *s)
{
- lockValidStreamMutex();
+ lockActiveStream();
mActiveStreamUserCounter.insert(std::make_pair(s, std::make_pair(0, true)));
s->initStreamSmph();
- unlockValidStreamMutex();
+ unlockActiveStream();
return 0;
}
int ResourceManager::deactivateStreamUserCounter(Stream *s)
{
std::map<Stream*, std::pair<uint32_t, bool>>::iterator it;
- lockValidStreamMutex();
+ lockActiveStream();
printStreamUserCounter(s);
it = mActiveStreamUserCounter.find(s);
if (it != mActiveStreamUserCounter.end() && it->second.second == true) {
PAL_DBG(LOG_TAG, "stream %p is to be deactivated.", s);
it->second.second = false;
- unlockValidStreamMutex();
+ unlockActiveStream();
s->waitStreamSmph();
PAL_DBG(LOG_TAG, "stream %p is inactive.", s);
s->deinitStreamSmph();
return 0;
} else {
PAL_ERR(LOG_TAG, "stream %p is not found or inactive", s);
- unlockValidStreamMutex();
+ unlockActiveStream();
return -EINVAL;
}
}
@@ -3461,16 +3450,16 @@
int ResourceManager::eraseStreamUserCounter(Stream *s)
{
std::map<Stream*, std::pair<uint32_t, bool>>::iterator it;
- lockValidStreamMutex();
+ lockActiveStream();
it = mActiveStreamUserCounter.find(s);
if (it != mActiveStreamUserCounter.end()) {
mActiveStreamUserCounter.erase(it);
PAL_DBG(LOG_TAG, "stream counter for %p is erased.", s);
- unlockValidStreamMutex();
+ unlockActiveStream();
return 0;
} else {
PAL_ERR(LOG_TAG, "stream counter for %p is not found.", s);
- unlockValidStreamMutex();
+ unlockActiveStream();
return -EINVAL;
}
}
@@ -9175,20 +9164,20 @@
{
bool match = false;
std::list<Stream*>::iterator sIter;
- lockValidStreamMutex();
+ lockActiveStream();
for(sIter = mActiveStreams.begin(); sIter != mActiveStreams.end(); sIter++) {
match = (*sIter)->checkStreamMatch(pal_device_id, pal_stream_type);
if (match) {
if (increaseStreamUserCounter(*sIter) < 0)
continue;
- unlockValidStreamMutex();
+ unlockActiveStream();
status = (*sIter)->getEffectParameters(param_payload);
- lockValidStreamMutex();
+ lockActiveStream();
decreaseStreamUserCounter(*sIter);
break;
}
}
- unlockValidStreamMutex();
+ unlockActiveStream();
break;
}
default:
@@ -10122,7 +10111,7 @@
case PAL_PARAM_ID_UIEFFECT:
{
bool match = false;
- lockValidStreamMutex();
+ lockActiveStream();
std::list<Stream*>::iterator sIter;
for(sIter = mActiveStreams.begin(); sIter != mActiveStreams.end();
sIter++) {
@@ -10132,9 +10121,9 @@
if (match) {
if (increaseStreamUserCounter(*sIter) < 0)
continue;
- unlockValidStreamMutex();
+ unlockActiveStream();
status = (*sIter)->setEffectParameters(param_payload);
- lockValidStreamMutex();
+ lockActiveStream();
decreaseStreamUserCounter(*sIter);
if (status) {
PAL_ERR(LOG_TAG, "failed to set param for pal_device_id=%x stream_type=%x",
@@ -10145,7 +10134,7 @@
PAL_ERR(LOG_TAG, "There is no active stream.");
}
}
- unlockValidStreamMutex();
+ unlockActiveStream();
}
break;
default: