summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-10-16 20:09:23 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-10-16 20:09:23 +0000
commitc8a531f5e179d2f898b57208f4e2482d552ebaad (patch)
tree3206d1229a163203ec1d325553aeadd1284a3c91
parentcb5a5ecb001cb84173ffe58e27295402b800b379 (diff)
parent86e259c1c06d36e4738bdd4df94c5f13c91afa7e (diff)
downloadlynx-c8a531f5e179d2f898b57208f4e2482d552ebaad.tar.gz
Snap for 10957012 from 86e259c1c06d36e4738bdd4df94c5f13c91afa7e to simpleperf-release
Change-Id: If44a38b84fae3a86819f83e8b8c0dfa24fb8ed1f
-rw-r--r--AndroidProducts.mk1
-rw-r--r--OWNERS3
-rw-r--r--aosp_lynx_hwasan.mk (renamed from sensors/Android.mk)25
-rw-r--r--audio/lynx/aidl_config/audio_platform_configuration_aidl.xml76
-rw-r--r--audio/lynx/aidl_config/audio_policy_configuration.xml203
-rw-r--r--audio/lynx/aidl_config/audio_policy_volumes.xml227
-rw-r--r--audio/lynx/aidl_config/mixer_paths_aidl.xml862
-rw-r--r--audio/lynx/audio-tables.mk12
-rw-r--r--audio/lynx/config/audio_effects.xml7
-rw-r--r--audio/lynx/config/audio_platform_configuration.xml2
-rw-r--r--audio/lynx/config/audio_policy_configuration.xml22
-rw-r--r--audio/lynx/config/audio_policy_configuration_a2dp_offload_disabled.xml10
-rw-r--r--audio/lynx/config/audio_policy_configuration_bluetooth_legacy_hal.xml10
-rw-r--r--audio/lynx/config/audio_policy_configuration_le_offload_disabled.xml26
-rw-r--r--audio/lynx/config/mixer_paths.xml17
-rw-r--r--audio/lynx/tuning/bluenote/smartfeature.gstfbin0 -> 236 bytes
-rw-r--r--audio/lynx/tuning/fortemedia/BLUETOOTH.datbin276978 -> 276978 bytes
-rw-r--r--audio/lynx/tuning/fortemedia/BLUETOOTH.mods46
-rw-r--r--audio/lynx/tuning/fortemedia/HANDSFREE.datbin117198 -> 117198 bytes
-rw-r--r--audio/lynx/tuning/fortemedia/HANDSFREE.mods40
-rw-r--r--audio/lynx/tuning/fortemedia/HEADSET.datbin426106 -> 426106 bytes
-rw-r--r--audio/lynx/tuning/fortemedia/HEADSET.mods90
-rw-r--r--bluetooth/bluetooth_power_limits_Lynx.csv70
-rw-r--r--bluetooth/bluetooth_power_limits_Lynx_G0DZQ_CA.csv70
-rw-r--r--bluetooth/bluetooth_power_limits_Lynx_G0DZQ_EU.csv70
-rw-r--r--bluetooth/bluetooth_power_limits_Lynx_G0DZQ_JP.csv70
-rw-r--r--bluetooth/bluetooth_power_limits_Lynx_G0DZQ_US.csv70
-rw-r--r--bluetooth/bluetooth_power_limits_Lynx_G82U8_JP.csv70
-rw-r--r--bluetooth/bluetooth_power_limits_Lynx_GHL1X_EU.csv70
-rw-r--r--bluetooth/bluetooth_power_limits_Lynx_GWKK3_CA.csv70
-rw-r--r--bluetooth/bluetooth_power_limits_Lynx_GWKK3_US.csv70
-rw-r--r--bluetooth/device_framework_matrix_product.xml18
-rw-r--r--bluetooth/le_audio_codec_capabilities.xml12
-rw-r--r--bluetooth/qti_default.mk12
-rw-r--r--conf/init.lynx.rc51
-rw-r--r--device-lynx.mk28
-rw-r--r--init.insmod.lynx.cfg3
-rw-r--r--location/gps.xml.l103
-rw-r--r--location/gps_user.xml.l103
-rw-r--r--lynx/BoardConfig.mk15
-rw-r--r--lynx/overlay/frameworks/base/core/res/res/values/config.xml16
-rw-r--r--lynx/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml36
-rw-r--r--lynx/overlay/packages/apps/Nfc/res/values/config.xml11
-rw-r--r--powerhint.json200
-rw-r--r--powerstats/service.cpp19
-rw-r--r--rro_overlays/WifiOverlay/res/values/config.xml19
-rw-r--r--self-extractors/extract-lists.txt2
-rw-r--r--self-extractors/google_devices/staging/Android.mk5
-rw-r--r--self-extractors/google_devices/staging/device-partial.mk2
-rw-r--r--sensors/sensors_dummy.c409
-rw-r--r--thermal_info_config_lynx.json42
51 files changed, 2258 insertions, 957 deletions
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
index 2a82dde..c6046a3 100644
--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -16,6 +16,7 @@
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/aosp_lynx.mk \
+ $(LOCAL_DIR)/aosp_lynx_hwasan.mk \
$(LOCAL_DIR)/factory_lynx.mk
COMMON_LUNCH_CHOICES := \
diff --git a/OWNERS b/OWNERS
index 1451bd8..79003ba 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1 +1,4 @@
per-file powerhint.json = jychen@google.com,jenhaochen@google.com,wvw@google.com,joaodias@google.com
+
+# per-file for Pixel device makefiles, see go/pixel-device-mk-owner-checklist for details.
+per-file *.mk,*/BoardConfig.mk=file:device/google/gs-common:master:/OWNERS
diff --git a/sensors/Android.mk b/aosp_lynx_hwasan.mk
index 46d6f0c..d0845b6 100644
--- a/sensors/Android.mk
+++ b/aosp_lynx_hwasan.mk
@@ -1,4 +1,5 @@
-# Copyright (C) 2009 The Android Open Source Project
+#
+# Copyright 2023 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -11,20 +12,12 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
+#
-LOCAL_PATH := $(call my-dir)
-
-# HAL module implemenation stored in
-# hw/<SENSORS_HARDWARE_MODULE_ID>.<ro.hardware>.so
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_SHARED_LIBRARIES := liblog libcutils libhardware
-LOCAL_SRC_FILES := sensors_dummy.c
-LOCAL_MODULE := sensors.lynx
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
-LOCAL_PROPRIETARY_MODULE := true
+$(call inherit-product, device/google/lynx/aosp_lynx.mk)
+PRODUCT_NAME := aosp_lynx_hwasan
-include $(BUILD_SHARED_LIBRARY)
+# Add "hwaddress" as a global sanitizer if it's missing.
+ifeq ($(filter hwaddress,$(SANITIZE_TARGET)),)
+ SANITIZE_TARGET := $(strip $(SANITIZE_TARGET) hwaddress)
+endif
diff --git a/audio/lynx/aidl_config/audio_platform_configuration_aidl.xml b/audio/lynx/aidl_config/audio_platform_configuration_aidl.xml
new file mode 100644
index 0000000..912b4aa
--- /dev/null
+++ b/audio/lynx/aidl_config/audio_platform_configuration_aidl.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2023, 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, -->
+<!-- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
+<!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+<audio_platform_configuration>
+ <product_lists>
+ <product name="Blackbird">
+ <id value="18d1:5033" />
+ </product>
+ <product name="Condor">
+ <id value="18d1:5034" />
+ </product>
+ <product name="Condor_Sprint">
+ <id value="18d1:5038" />
+ </product>
+ <product name="Condor_Sprint2">
+ <id value="18d1:5036" />
+ </product>
+ </product_lists>
+
+ <features>
+ <feature name="ThermalThrottle=Type:SKIN,Name:VIRTUAL-SKIN" />
+ <feature
+ name="BatteryThrottle=Type:BCL_VOLTAGE,Name:BCL_AUDIO_BAACL,Strategy:MediaSpeakerAndScreenOn" />
+ <feature
+ name="PlaybackThermalThrottle=PollWaitMs:20000,ThermistorName:VIRTUAL-SKIN,ThermistorType:SKIN,ThrottlingSeverity:MODERATE" />
+ </features>
+
+ <!-- The voip_db_mapping: format is "device="x" value="f1,f2..." -->
+ <!-- device should be "handset","speaker","usb","bt","bt_hearing_aid" or "digital_dock" -->
+ <voip_db_mapping>
+ <voip_path device="usb" value="0.01,0.02,0.04,0.1,0.21,0.47,1.0" />
+ </voip_db_mapping>
+
+ <!-- The device_builder: format is "type="x" codec_name="y" argu="z". name and argu are optional. -->
+ <device_builder>
+ <device type="bt" />
+ <device type="usb" argu="MaxSamplingRate=96000,UnsupportedFormat=S24_LE" />
+ <device type="speaker" codec_name="cs35l41" argu="SpeakerNum=4,Rotation,AcousticShockProtection" />
+ </device_builder>
+
+ <!-- The spatial_capture_conditions: format is "use_case="x" audio_source="y" -->
+ <!-- use_case defines in aidl/audio/usecase/use_case.h, audio_source is definied in aidl interfaces. -->
+ <spatial_capture_conditions>
+ <conditions use_case="primary-capture" audio_source="MIC,CAMCORDER,VOICE_RECOGNITION" />
+ </spatial_capture_conditions>
+
+ <!-- The tuner_builder: format is "type="x" codec_name="y" argu="z". argu is optional. -->
+ <tuner_builder>
+ <tuner type="playback" name="waves" argu="Sink=SPK ThermistorsName=VIRTUAL-SKIN" />
+ <tuner type="telephony" name="fortemedia" argu="VoIP_DLCHs=SPK:2,USB:2 VoIP_Rate=32000 BOOST_USB_SWB_CLK=y CCA=y" />
+ <tuner type="capture" name="gs_capture" />
+ </tuner_builder>
+</audio_platform_configuration>
diff --git a/audio/lynx/aidl_config/audio_policy_configuration.xml b/audio/lynx/aidl_config/audio_policy_configuration.xml
new file mode 100644
index 0000000..dfc8577
--- /dev/null
+++ b/audio/lynx/aidl_config/audio_policy_configuration.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!-- Copyright (C) 2020 The Android Open Source Project
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<audioPolicyConfiguration version="7.0" xmlns:xi="http://www.w3.org/2001/XInclude">
+ <globalConfiguration speaker_drc_enabled="false" call_screen_mode_supported="true" />
+ <modules>
+ <!-- Primary Audio HAL -->
+ <module name="primary" halVersion="2.0">
+ <attachedDevices>
+ <item>Speaker</item>
+ <item>Speaker Safe</item>
+ <item>Earpiece</item>
+ <item>Built-In Mic</item>
+ <item>Built-In Back Mic</item>
+ <item>Telephony Tx</item>
+ <item>Voice Call And Telephony Rx</item>
+ <item>Echo Ref In</item>
+ </attachedDevices>
+ <defaultOutputDevice>Speaker</defaultOutputDevice>
+ <mixPorts>
+ <mixPort name="primary output" role="source"
+ flags="AUDIO_OUTPUT_FLAG_PRIMARY AUDIO_OUTPUT_FLAG_FAST"
+ recommendedMuteDurationMs="40">
+ <profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </mixPort>
+ <mixPort name="deep buffer" role="source" flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
+ <profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </mixPort>
+ <mixPort name="compressed offload" role="source"
+ flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD AUDIO_OUTPUT_FLAG_NON_BLOCKING AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD">
+ <profile name="" format="AUDIO_FORMAT_MP3"
+ samplingRates="8000 16000 24000 32000 44100 48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO" />
+ <profile name="" format="AUDIO_FORMAT_AAC_LC"
+ samplingRates="8000 16000 24000 32000 44100 48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO" />
+ <profile name="" format="AUDIO_FORMAT_AAC_HE_V1"
+ samplingRates="8000 16000 24000 32000 44100 48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO" />
+ <profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
+ samplingRates="8000 16000 24000 32000 44100 48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO" />
+ </mixPort>
+ <mixPort name="haptic" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO_HAPTIC_A" />
+ </mixPort>
+ <mixPort name="immersive_out" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER">
+ <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </mixPort>
+ <mixPort name="incall playback" role="source"
+ flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </mixPort>
+ <mixPort name="voip_rx" role="source"
+ flags="AUDIO_OUTPUT_FLAG_VOIP_RX">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </mixPort>
+ <!-- <mixPort name="mmap playback" role="source"
+ flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
+ <profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </mixPort>
+ <mixPort name="raw" role="source"
+ flags="AUDIO_OUTPUT_FLAG_RAW AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </mixPort> -->
+
+ <mixPort name="primary input" role="sink">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000"
+ channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_INDEX_MASK_3" />
+ </mixPort>
+ <mixPort name="voip_tx" role="sink"
+ flags="AUDIO_INPUT_FLAG_VOIP_TX">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_MONO" />
+ </mixPort>
+ <mixPort name="fast input" role="sink"
+ flags="AUDIO_INPUT_FLAG_RAW AUDIO_INPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000"
+ channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO" />
+ </mixPort>
+ <mixPort name="hotword input" role="sink" flags="AUDIO_INPUT_FLAG_HW_HOTWORD">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="16000"
+ channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO" />
+ </mixPort>
+ <!-- <mixPort name="mmap capture" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ">
+ <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+ samplingRates="48000"
+ channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO" />
+ </mixPort> -->
+
+ </mixPorts>
+ <devicePorts>
+ <!-- Output devices declaration, i.e. Sink DEVICE PORT -->
+ <devicePort tagName="Earpiece" type="AUDIO_DEVICE_OUT_EARPIECE" role="sink" />
+ <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink" />
+ <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink" />
+ <devicePort tagName="Wired Headset" type="AUDIO_DEVICE_OUT_WIRED_HEADSET"
+ role="sink" />
+ <devicePort tagName="Wired Headphones" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE"
+ role="sink" />
+ <devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink" />
+ <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET"
+ role="sink" />
+ <devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT"
+ role="sink" />
+ <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink" />
+ <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET"
+ role="sink" />
+ <devicePort tagName="Aux Digital" type="AUDIO_DEVICE_OUT_AUX_DIGITAL" role="sink" />
+ <devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink" />
+ <!-- Input devices declaration, i.e. Source DEVICE PORT -->
+ <devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source" />
+ <devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC"
+ role="source" />
+ <devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET"
+ role="source" />
+ <devicePort tagName="BT SCO Headset Mic"
+ type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source" />
+ <devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
+ encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </devicePort>
+ <devicePort tagName="BT A2DP Headphones"
+ type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
+ encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </devicePort>
+ <devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER"
+ role="sink"
+ encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </devicePort>
+ <devicePort tagName="BT BLE Headset" type="AUDIO_DEVICE_OUT_BLE_HEADSET" role="sink"
+ encodedFormats="AUDIO_FORMAT_LC3">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </devicePort>
+ <devicePort tagName="BT BLE Speaker" type="AUDIO_DEVICE_OUT_BLE_SPEAKER" role="sink"
+ encodedFormats="AUDIO_FORMAT_LC3">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+ </devicePort>
+ <devicePort tagName="BLE Headset Mic" type="AUDIO_DEVICE_IN_BLE_HEADSET"
+ role="source">
+ </devicePort>
+ <devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source" />
+ <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET"
+ role="source" />
+ <!-- AUDIO_DEVICE_IN_VOICE_CALL and AUDIO_DEVICE_IN_TELEPHONY_RX are in the same
+ value -->
+ <devicePort tagName="Voice Call And Telephony Rx" type="AUDIO_DEVICE_IN_VOICE_CALL"
+ role="source" />
+ <devicePort tagName="Echo Ref In" type="AUDIO_DEVICE_IN_ECHO_REFERENCE"
+ role="source" />
+ </devicePorts>
+ <!-- route declaration, i.e. list all available sources for a given sink -->
+ <routes>
+ <route type="mix" sink="Earpiece"
+ sources="primary output,deep buffer,haptic,voip_rx,compressed offload" />
+ <route type="mix" sink="Speaker"
+ sources="primary output,deep buffer,haptic,voip_rx,compressed offload" />
+ <route type="mix" sink="Telephony Tx" sources="incall playback" />
+ <route type="mix" sink="primary input"
+ sources="Built-In Mic,Built-In Back Mic" />
+ <route type="mix" sink="voip_tx"
+ sources="Built-In Mic,Built-In Back Mic" />
+ <route type="mix" sink="fast input"
+ sources="Built-In Mic,Built-In Back Mic" />
+ <route type="mix" sink="hotword input" sources="Built-In Mic" />
+ </routes>
+ </module>
+ </modules>
+ <!-- End of Modules section -->
+ <!-- Volume section -->
+ <xi:include href="audio_policy_volumes.xml" />
+ <xi:include href="default_volume_tables.xml" />
+ <!-- End of Volume section -->
+</audioPolicyConfiguration>
diff --git a/audio/lynx/aidl_config/audio_policy_volumes.xml b/audio/lynx/aidl_config/audio_policy_volumes.xml
new file mode 100644
index 0000000..04e731d
--- /dev/null
+++ b/audio/lynx/aidl_config/audio_policy_volumes.xml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Volume section defines a volume curve for a given use case and device category.
+It contains a list of points of this curve expressing the attenuation in Millibels for a given
+volume index from 0 to 100.
+<volume stream=”AUDIO_STREAM_MUSIC” deviceCategory=””>
+<point>0,-9600</point>
+<point>100,0</point>
+</volume>
+-->
+
+<volumes>
+ <volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_HEADSET">
+ <point>0,-4200</point>
+ <point>33,-2800</point>
+ <point>66,-1400</point>
+ <point>100,0</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_SPEAKER">
+ <point>0,-2400</point>
+ <point>33,-1600</point>
+ <point>66,-800</point>
+ <point>100,0</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_EARPIECE">
+ <point>0,-2400</point>
+ <point>33,-1600</point>
+ <point>66,-800</point>
+ <point>100,0</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_NON_MUTABLE_HEARING_AID_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_SYSTEM" deviceCategory="DEVICE_CATEGORY_HEADSET">
+ <point>1,-3000</point>
+ <point>33,-2600</point>
+ <point>66,-2200</point>
+ <point>100,-1800</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_SYSTEM" deviceCategory="DEVICE_CATEGORY_SPEAKER">
+ <point>1,-4700</point>
+ <point>33,-3500</point>
+ <point>66,-2350</point>
+ <point>100,-1250</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_SYSTEM" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="DEFAULT_SYSTEM_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_SYSTEM" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_DEVICE_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_SYSTEM" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_HEADSET"
+ ref="DEFAULT_DEVICE_CATEGORY_HEADSET_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_SPEAKER">
+ <point>1,-3350</point>
+ <point>33,-2100</point>
+ <point>66,-1000</point>
+ <point>100,0</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="DEFAULT_DEVICE_CATEGORY_EARPIECE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_DEVICE_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_HEADSET"
+ ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_SPEAKER"
+ ref="DEFAULT_DEVICE_CATEGORY_SPEAKER_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_HEADSET"
+ ref="DEFAULT_NON_MUTABLE_HEADSET_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_SPEAKER">
+ <point>0,-4800</point>
+ <point>33,-2050</point>
+ <point>66,-800</point>
+ <point>100,0</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="DEFAULT_NON_MUTABLE_EARPIECE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_NON_MUTABLE_EXT_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_NON_MUTABLE_HEARING_AID_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_NOTIFICATION" deviceCategory="DEVICE_CATEGORY_HEADSET"
+ ref="DEFAULT_DEVICE_CATEGORY_HEADSET_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_NOTIFICATION" deviceCategory="DEVICE_CATEGORY_SPEAKER">
+ <point>1,-3800</point>
+ <point>33,-2600</point>
+ <point>66,-1400</point>
+ <point>100,0</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_NOTIFICATION" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="DEFAULT_DEVICE_CATEGORY_EARPIECE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_NOTIFICATION" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_DEVICE_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_NOTIFICATION" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_DEVICE_CATEGORY_HEADSET_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_HEADSET">
+ <point>0,-4200</point>
+ <point>33,-2800</point>
+ <point>66,-1400</point>
+ <point>100,0</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_SPEAKER">
+ <point>0,-2400</point>
+ <point>33,-1600</point>
+ <point>66,-800</point>
+ <point>100,0</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_EARPIECE">
+ <point>0,-4200</point>
+ <point>33,-2800</point>
+ <point>66,-1400</point>
+ <point>100,0</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_HEADSET">
+ <point>1,-3000</point>
+ <point>33,-2600</point>
+ <point>66,-2200</point>
+ <point>100,-1800</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_SPEAKER">
+ <point>1,-4700</point>
+ <point>33,-3500</point>
+ <point>66,-2350</point>
+ <point>100,-1250</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="DEFAULT_SYSTEM_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_DEVICE_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_DTMF" deviceCategory="DEVICE_CATEGORY_HEADSET">
+ <point>1,-3000</point>
+ <point>33,-2600</point>
+ <point>66,-2200</point>
+ <point>100,-1800</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_DTMF" deviceCategory="DEVICE_CATEGORY_SPEAKER">
+ <point>1,-5500</point>
+ <point>33,-3650</point>
+ <point>66,-2700</point>
+ <point>100,-1800</point>
+ </volume>
+ <volume stream="AUDIO_STREAM_DTMF" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="DEFAULT_SYSTEM_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_DTMF" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_DEVICE_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_DTMF" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_TTS" deviceCategory="DEVICE_CATEGORY_HEADSET"
+ ref="SILENT_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_TTS" deviceCategory="DEVICE_CATEGORY_SPEAKER"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_TTS" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="SILENT_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_TTS" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="SILENT_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_TTS" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="SILENT_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_HEADSET"
+ ref="DEFAULT_NON_MUTABLE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_SPEAKER"
+ ref="DEFAULT_NON_MUTABLE_SPEAKER_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="DEFAULT_NON_MUTABLE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_NON_MUTABLE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_NON_MUTABLE_HEARING_AID_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ASSISTANT" deviceCategory="DEVICE_CATEGORY_HEADSET"
+ ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ASSISTANT" deviceCategory="DEVICE_CATEGORY_SPEAKER"
+ ref="DEFAULT_DEVICE_CATEGORY_SPEAKER_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ASSISTANT" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ASSISTANT" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_ASSISTANT" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_REROUTING" deviceCategory="DEVICE_CATEGORY_HEADSET"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_REROUTING" deviceCategory="DEVICE_CATEGORY_SPEAKER"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_REROUTING" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_REROUTING" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_REROUTING" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_PATCH" deviceCategory="DEVICE_CATEGORY_HEADSET"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_PATCH" deviceCategory="DEVICE_CATEGORY_SPEAKER"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_PATCH" deviceCategory="DEVICE_CATEGORY_EARPIECE"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_PATCH" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+ <volume stream="AUDIO_STREAM_PATCH" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
+ ref="FULL_SCALE_VOLUME_CURVE"/>
+</volumes>
+
diff --git a/audio/lynx/aidl_config/mixer_paths_aidl.xml b/audio/lynx/aidl_config/mixer_paths_aidl.xml
new file mode 100644
index 0000000..894ef4e
--- /dev/null
+++ b/audio/lynx/aidl_config/mixer_paths_aidl.xml
@@ -0,0 +1,862 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2022, 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, -->
+<!-- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
+<!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+<mixer>
+ <!-- Initial default value of ALSA command -->
+ <!-- PCM timeout -->
+ <ctl name="PCM Stream Wait Time in MSec" value="100" />
+ <ctl name="Voice PCM Stream Wait Time in MSec" value="500" />
+
+ <!-- Enable it when AOC is ready to trim delay and padding -->
+ <ctl name="Gapless Offload Enable" value="1" />
+
+ <!-- TDM 0 setting -->
+ <ctl name="TDM_0_RX Chan" value="Four" />
+ <ctl name="TDM_0_RX Format" value="S32_LE" />
+ <ctl name="TDM_0_RX Sample Rate" value="SR_48K" />
+ <ctl name="TDM_0_TX Chan" value="Four" />
+ <ctl name="TDM_0_TX Format" value="S32_LE" />
+ <ctl name="TDM_0_TX Sample Rate" value="SR_48K" />
+
+ <!-- Haptic setting -->
+ <ctl name="Haptics Source" value="PCM" />
+ <ctl name="HAPTIC_RX Format" value="S32_LE" />
+ <ctl name="HAPTIC_RX SlotFmt" value="S32_LE" />
+ <ctl name="HAPTIC_RX Chan" value="Four" />
+ <ctl name="HAPTIC_RX nSlot" value="Four" />
+ <ctl name="RX Slots" id="0" value="2" />
+ <ctl name="RX Slots" id="1" value="3" />
+
+ <!-- Cirrus default 96K -->
+ <ctl name="Default 96K" value="0" />
+ <ctl name="R Default 96K" value="0" />
+
+ <!-- Cirrus Booster Amp TDM slot assignment-->
+ <!-- RX slot -->
+ <ctl name="ASPRX1 Slot Position" value="0" />
+ <ctl name="ASPRX2 Slot Position" value="1" />
+ <ctl name="R ASPRX1 Slot Position" value="1" />
+ <ctl name="R ASPRX2 Slot Position" value="0" />
+ <!-- TX slot -->
+ <ctl name="ASPTX1 Slot Position" value="0" />
+ <ctl name="R ASPTX1 Slot Position" value="1" />
+ <ctl name="ASPTX2 Slot Position" value="2" />
+ <ctl name="R ASPTX2 Slot Position" value="3" />
+ <ctl name="ASPTX3 Slot Position" value="4" />
+ <ctl name="R ASPTX3 Slot Position" value="5" />
+ <ctl name="ASPTX4 Slot Position" value="6" />
+ <ctl name="R ASPTX4 Slot Position" value="7" />
+
+ <!-- Cirrus Booster Amp DRE and VBST config-->
+ <ctl name="VBSTMON Output Switch" value="1" />
+ <ctl name="R VBSTMON Output Switch" value="1" />
+ <ctl name="DRE DRE Switch" value="1" />
+ <ctl name="R DRE DRE Switch" value="1" />
+
+ <!-- Cirrus Booster Amp Output Gain -->
+ <ctl name="AMP PCM Gain" value="17" />
+ <ctl name="R AMP PCM Gain" value="17" />
+ <ctl name="Digital PCM Volume" value="817" />
+ <ctl name="R Digital PCM Volume" value="817" />
+
+ <!-- Cirrus Booster Amp Power -->
+ <ctl name="Main AMP Enable Switch" value="0" />
+ <ctl name="R Main AMP Enable Switch" value="0" />
+
+ <!-- Cirrus Booster mode -->
+ <ctl name="PCM Source" value="DSP" />
+ <ctl name="R PCM Source" value="DSP" />
+ <ctl name="DSP1 Firmware" value="Protection" />
+ <ctl name="R DSP1 Firmware" value="Protection" />
+ <ctl name="DSP RX1 Source" value="ASPRX1" />
+ <ctl name="DSP RX2 Source" value="ASPRX1" />
+ <ctl name="R DSP RX1 Source" value="ASPRX1" />
+ <ctl name="R DSP RX2 Source" value="ASPRX1" />
+ <ctl name="Boost Peak Current Limit" value="3.50A" />
+ <ctl name="R Boost Peak Current Limit" value="3.50A" />
+
+ <!-- Cirrus ASP TX source -->
+ <ctl name="ASP TX1 Source" value="VMON" />
+ <ctl name="R ASP TX1 Source" value="VMON" />
+ <ctl name="ASP TX2 Source" value="IMON" />
+ <ctl name="R ASP TX2 Source" value="IMON" />
+ <ctl name="ASP TX3 Source" value="Zero" />
+ <ctl name="R ASP TX3 Source" value="Zero" />
+ <ctl name="ASP TX4 Source" value="Zero" />
+ <ctl name="R ASP TX4 Source" value="Zero" />
+
+ <!-- Cirrus fast switch init -->
+ <ctl name="Fast Use Case Switch Enable" value="0" />
+ <ctl name="Fast Use Case Delta File" value="fast_switch5.txt" />
+ <ctl name="R Fast Use Case Switch Enable" value="0" />
+ <ctl name="R Fast Use Case Delta File" value="fast_switch5.txt" />
+
+ <!-- default EP volume -->
+ <ctl name="PCM Playback Switch" value="1" />
+ <ctl name="PCM Playback Volume" value="10" />
+
+ <!-- audio RX route initial/default value -->
+ <ctl name="TDM_0_RX Mixer EP1" value="0" />
+ <ctl name="TDM_0_RX Mixer EP2" value="0" />
+ <ctl name="TDM_0_RX Mixer EP3" value="0" />
+ <ctl name="TDM_0_RX Mixer EP4" value="0" />
+ <ctl name="TDM_0_RX Mixer EP5" value="0" />
+ <ctl name="TDM_0_RX Mixer EP6" value="0" />
+ <ctl name="TDM_0_RX Mixer EP7" value="0" />
+ <ctl name="TDM_0_RX Mixer EP8" value="0" />
+ <ctl name="TDM_0_RX Mixer NoHost1" value="0" />
+ <ctl name="TDM_0_RX Mixer VOIP" value="0" />
+ <ctl name="TDM_0_RX Mixer RAW" value="0" />
+ <ctl name="TDM_0_RX Mixer IMSV" value="0" />
+
+ <ctl name="TDM_1_RX Mixer EP1" value="0" />
+ <ctl name="TDM_1_RX Mixer EP2" value="0" />
+ <ctl name="TDM_1_RX Mixer EP3" value="0" />
+ <ctl name="TDM_1_RX Mixer EP4" value="0" />
+ <ctl name="TDM_1_RX Mixer EP5" value="0" />
+ <ctl name="TDM_1_RX Mixer EP6" value="0" />
+ <ctl name="TDM_1_RX Mixer EP7" value="0" />
+ <ctl name="TDM_1_RX Mixer EP8" value="0" />
+ <ctl name="TDM_1_RX Mixer NoHost1" value="0" />
+
+ <ctl name="USB_RX Mixer EP1" value="0" />
+ <ctl name="USB_RX Mixer EP2" value="0" />
+ <ctl name="USB_RX Mixer EP3" value="0" />
+ <ctl name="USB_RX Mixer EP4" value="0" />
+ <ctl name="USB_RX Mixer EP5" value="0" />
+ <ctl name="USB_RX Mixer EP6" value="0" />
+ <ctl name="USB_RX Mixer EP7" value="0" />
+ <ctl name="USB_RX Mixer NoHost1" value="0" />
+ <ctl name="USB_RX Mixer VOIP" value="0" />
+ <ctl name="USB_RX Mixer HIFI" value="0" />
+ <ctl name="USB_RX Mixer RAW" value="0" />
+ <ctl name="USB_RX Mixer IMSV" value="0" />
+
+ <ctl name="BT_RX Mixer EP1" value="0" />
+ <ctl name="BT_RX Mixer EP2" value="0" />
+ <ctl name="BT_RX Mixer EP3" value="0" />
+ <ctl name="BT_RX Mixer EP4" value="0" />
+ <ctl name="BT_RX Mixer EP5" value="0" />
+ <ctl name="BT_RX Mixer EP6" value="0" />
+ <ctl name="BT_RX Mixer EP7" value="0" />
+ <ctl name="BT_RX Mixer NoHost1" value="0" />
+ <ctl name="BT_RX Mixer VOIP" value="0" />
+ <ctl name="BT_RX Mixer RAW" value="0" />
+ <ctl name="BT_RX Mixer IMSV" value="0" />
+
+ <ctl name="INCALL_RX Mixer EP1" value="0" />
+ <ctl name="INCALL_RX Mixer EP2" value="0" />
+ <ctl name="INCALL_RX Mixer EP3" value="0" />
+ <ctl name="INCALL_RX Mixer EP4" value="0" />
+ <ctl name="INCALL_RX Mixer EP5" value="0" />
+ <ctl name="INCALL_RX Mixer EP6" value="0" />
+ <ctl name="INCALL_RX Mixer EP7" value="0" />
+ <ctl name="INCALL_RX Mixer NoHost1" value="0" />
+
+ <ctl name="SINK_IDS" id="0" value="-1" />
+ <ctl name="SINK_IDS" id="1" value="-1" />
+
+ <!-- audio TX route initial/default value -->
+ <ctl name="EP1 TX Mixer TDM_0_TX" value="0" />
+ <ctl name="EP2 TX Mixer TDM_0_TX" value="0" />
+ <ctl name="EP3 TX Mixer TDM_0_TX" value="0" />
+ <ctl name="EP4 TX Mixer TDM_0_TX" value="0" />
+ <ctl name="EP5 TX Mixer TDM_0_TX" value="0" />
+ <ctl name="EP6 TX Mixer TDM_0_TX" value="0" />
+ <ctl name="NoHost1 TX Mixer TDM_0_TX" value="0" />
+
+ <ctl name="EP1 TX Mixer TDM_1_TX" value="0" />
+ <ctl name="EP2 TX Mixer TDM_1_TX" value="0" />
+ <ctl name="EP3 TX Mixer TDM_1_TX" value="0" />
+ <ctl name="EP4 TX Mixer TDM_1_TX" value="0" />
+ <ctl name="EP5 TX Mixer TDM_1_TX" value="0" />
+ <ctl name="EP6 TX Mixer TDM_1_TX" value="0" />
+ <ctl name="NoHost1 TX Mixer TDM_1_TX" value="0" />
+
+ <ctl name="EP1 TX Mixer INTERNAL_MIC_TX" value="0" />
+ <ctl name="EP2 TX Mixer INTERNAL_MIC_TX" value="0" />
+ <ctl name="EP3 TX Mixer INTERNAL_MIC_TX" value="0" />
+ <ctl name="EP4 TX Mixer INTERNAL_MIC_TX" value="0" />
+ <ctl name="EP5 TX Mixer INTERNAL_MIC_TX" value="0" />
+ <ctl name="EP6 TX Mixer INTERNAL_MIC_TX" value="0" />
+ <ctl name="NoHost1 TX Mixer INTERNAL_MIC_TX" value="0" />
+ <ctl name="VOIP TX Mixer INTERNAL_MIC_TX" value="0" />
+
+ <ctl name="EP1 TX Mixer BT_TX" value="0" />
+ <ctl name="EP2 TX Mixer BT_TX" value="0" />
+ <ctl name="EP3 TX Mixer BT_TX" value="0" />
+ <ctl name="EP4 TX Mixer BT_TX" value="0" />
+ <ctl name="EP5 TX Mixer BT_TX" value="0" />
+ <ctl name="EP6 TX Mixer BT_TX" value="0" />
+ <ctl name="NoHost1 TX Mixer BT_TX" value="0" />
+ <ctl name="VOIP TX Mixer BT_TX" value="0" />
+
+ <ctl name="EP1 TX Mixer USB_TX" value="0" />
+ <ctl name="EP2 TX Mixer USB_TX" value="0" />
+ <ctl name="EP3 TX Mixer USB_TX" value="0" />
+ <ctl name="EP4 TX Mixer USB_TX" value="0" />
+ <ctl name="EP5 TX Mixer USB_TX" value="0" />
+ <ctl name="EP6 TX Mixer USB_TX" value="0" />
+ <ctl name="NoHost1 TX Mixer USB_TX" value="0" />
+ <ctl name="VOIP TX Mixer USB_TX" value="0" />
+
+ <ctl name="EP1 TX Mixer INCALL_TX" value="0" />
+ <ctl name="EP2 TX Mixer INCALL_TX" value="0" />
+ <ctl name="EP3 TX Mixer INCALL_TX" value="0" />
+ <ctl name="EP4 TX Mixer INCALL_TX" value="0" />
+ <ctl name="EP5 TX Mixer INCALL_TX" value="0" />
+ <ctl name="EP6 TX Mixer INCALL_TX" value="0" />
+ <ctl name="NoHost1 TX Mixer INCALL_TX" value="0" />
+
+ <ctl name="EP4 TX Mixer I2S_2_TX" value="0" />
+
+ <!-- AoC Mic setting -->
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="MIC HW Gain At High Power Mode (cB)" value="0" />
+ <ctl name="MIC Record Soft Gain (dB)" value="-40" />
+
+ <!-- USB setting v2 -->
+ <ctl name="USB Bus ID v2" value="2" />
+ <ctl name="USB Dev ID v2" value="2" />
+ <ctl name="USB Playback EP ID v2" value="1" />
+ <ctl name="USB Playback FORMAT v2" value="0" />
+ <ctl name="USB Playback SR v2" value="48000" />
+ <ctl name="USB Playback CH v2" value="2" />
+ <ctl name="USB Playback BW v2" value="24" />
+ <ctl name="USB Capture EP ID v2" value="1" />
+ <ctl name="USB Capture FORMAT v2" value="0" />
+ <ctl name="USB Capture SR v2" value="48000" />
+ <ctl name="USB Capture CH v2" value="1" />
+ <ctl name="USB Capture BW v2" value="16" />
+
+ <ctl name="AoC Modem Downlink ASRC Mode" value="ASP_ON" />
+ <ctl name="Voice Call Mic Source" value="Builtin_MIC" />
+ <ctl name="Audio Capture Eraser Enable" value="0" />
+
+ <!-- audio PDM mic default state -->
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="-1" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="-1" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="-1" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="Audio Capture Mic Source" value="Builtin_MIC" />
+
+ <!-- sidetone controls -->
+ <ctl name="Sidetone Enable" value="0" />
+ <ctl name="Sidetone Volume" value="-96" />
+ <ctl name="Sidetone Selected Mic" value="0" />
+ <ctl name="Sidetone EQ Stage Number" value="1" />
+ <!-- IEEE 754, value is in float -->
+ <ctl name="Sidetone Biquad0" id="0" value="0" />
+ <ctl name="Sidetone Biquad0" id="1" value="0" />
+ <ctl name="Sidetone Biquad0" id="2" value="0" />
+ <ctl name="Sidetone Biquad0" id="3" value="0" />
+ <ctl name="Sidetone Biquad0" id="4" value="0" />
+ <ctl name="Sidetone Biquad0" id="5" value="0" />
+ <ctl name="Sidetone Biquad1" id="0" value="0" />
+ <ctl name="Sidetone Biquad1" id="1" value="0" />
+ <ctl name="Sidetone Biquad1" id="2" value="0" />
+ <ctl name="Sidetone Biquad1" id="3" value="0" />
+ <ctl name="Sidetone Biquad1" id="4" value="0" />
+ <ctl name="Sidetone Biquad1" id="5" value="0" />
+ <ctl name="Sidetone Biquad2" id="0" value="0" />
+ <ctl name="Sidetone Biquad2" id="1" value="0" />
+ <ctl name="Sidetone Biquad2" id="2" value="0" />
+ <ctl name="Sidetone Biquad2" id="3" value="0" />
+ <ctl name="Sidetone Biquad2" id="4" value="0" />
+ <ctl name="Sidetone Biquad2" id="5" value="0" />
+ <ctl name="Sidetone Biquad3" id="0" value="0" />
+ <ctl name="Sidetone Biquad3" id="1" value="0" />
+ <ctl name="Sidetone Biquad3" id="2" value="0" />
+ <ctl name="Sidetone Biquad3" id="3" value="0" />
+ <ctl name="Sidetone Biquad3" id="4" value="0" />
+ <ctl name="Sidetone Biquad3" id="5" value="0" />
+ <ctl name="Sidetone Biquad4" id="0" value="0" />
+ <ctl name="Sidetone Biquad4" id="1" value="0" />
+ <ctl name="Sidetone Biquad4" id="2" value="0" />
+ <ctl name="Sidetone Biquad4" id="3" value="0" />
+ <ctl name="Sidetone Biquad4" id="4" value="0" />
+ <ctl name="Sidetone Biquad4" id="5" value="0" />
+
+ <ctl name="Incall Capture Stream0" value="Off" />
+ <ctl name="Incall Capture Stream1" value="Off" />
+ <ctl name="Incall Capture Stream2" value="Off" />
+
+ <!-- These two controls control the muting function of mics and sinks during the voice call. -->
+ <!-- They would be enabled by HAL. -->
+ <ctl name="Incall Sink Mute" value="0" />
+ <ctl name="Incall Mic Mute" value="0" />
+
+ <ctl name="Compress Offload Volume" value="1000" />
+ <ctl name="Decoder Reference Enable" value="0" />
+ <ctl name="LVM Enable" value="0" />
+
+ <!-- sidetone dynamic control -->
+ <path name="sidetone-for handset">
+ <!-- 1065353216 = 0x3f800000 = 1.0 -->
+ <ctl name="Sidetone Biquad0" id="0" value="1065353216" />
+ <ctl name="Sidetone Biquad0" id="1" value="1065353216" />
+ <ctl name="Sidetone Biquad0" id="2" value="0" />
+ <ctl name="Sidetone Biquad0" id="3" value="0" />
+ <ctl name="Sidetone Biquad0" id="4" value="0" />
+ <ctl name="Sidetone Biquad0" id="5" value="0" />
+ <ctl name="Sidetone Biquad1" id="0" value="1065353216" />
+ <ctl name="Sidetone Biquad1" id="1" value="1065353216" />
+ <ctl name="Sidetone Biquad1" id="2" value="0" />
+ <ctl name="Sidetone Biquad1" id="3" value="0" />
+ <ctl name="Sidetone Biquad1" id="4" value="0" />
+ <ctl name="Sidetone Biquad1" id="5" value="0" />
+ <ctl name="Sidetone Biquad2" id="0" value="1065353216" />
+ <ctl name="Sidetone Biquad2" id="1" value="1065353216" />
+ <ctl name="Sidetone Biquad2" id="2" value="0" />
+ <ctl name="Sidetone Biquad2" id="3" value="0" />
+ <ctl name="Sidetone Biquad2" id="4" value="0" />
+ <ctl name="Sidetone Biquad2" id="5" value="0" />
+ <ctl name="Sidetone Biquad3" id="0" value="1065353216" />
+ <ctl name="Sidetone Biquad3" id="1" value="1065353216" />
+ <ctl name="Sidetone Biquad3" id="2" value="0" />
+ <ctl name="Sidetone Biquad3" id="3" value="0" />
+ <ctl name="Sidetone Biquad3" id="4" value="0" />
+ <ctl name="Sidetone Biquad3" id="5" value="0" />
+ <ctl name="Sidetone Biquad4" id="0" value="1065353216" />
+ <ctl name="Sidetone Biquad4" id="1" value="1065353216" />
+ <ctl name="Sidetone Biquad4" id="2" value="0" />
+ <ctl name="Sidetone Biquad4" id="3" value="0" />
+ <ctl name="Sidetone Biquad4" id="4" value="0" />
+ <ctl name="Sidetone Biquad4" id="5" value="0" />
+ <ctl name="Sidetone EQ Stage Number" value="5" />
+ <ctl name="Sidetone Volume" value="-90" />
+ <ctl name="Sidetone Enable" value="1" />
+ </path>
+
+ <!-- audio playback dynamic route -->
+ <path name="primary-playback -> speaker">
+ <ctl name="TDM_0_RX Mixer EP2" value="1" />
+ </path>
+
+ <path name="primary-playback-0 -> speaker">
+ <path name="primary-playback -> speaker" />
+ </path>
+
+ <path name="primary-playback-0 -> speaker-earpiece">
+ <path name="primary-playback -> speaker" />
+ </path>
+
+ <path name="primary-playback-0 -> speaker-safe">
+ <path name="primary-playback -> speaker" />
+ </path>
+
+ <path name="primary-playback -> bt">
+ <ctl name="BT_RX Mixer EP2" value="1" />
+ </path>
+
+ <path name="primary-playback -> usb-headset">
+ <ctl name="USB_RX Mixer EP2" value="1" />
+ </path>
+
+ <path name="raw-playback -> speaker">
+ <ctl name="TDM_0_RX Mixer RAW" value="1" />
+ </path>
+
+ <path name="raw-playback-0 -> speaker">
+ <path name="raw-playback -> speaker" />
+ </path>
+
+ <path name="raw-playback-0 -> speaker-earpiece">
+ <path name="raw-playback -> speaker" />
+ </path>
+
+ <path name="raw-playback-0 -> speaker-safe">
+ <path name="raw-playback -> speaker" />
+ </path>
+
+ <path name="raw-playback -> bt">
+ <ctl name="BT_RX Mixer RAW" value="1" />
+ </path>
+
+ <path name="raw-playback -> usb-headset">
+ <ctl name="USB_RX Mixer RAW" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback -> speaker">
+ <ctl name="TDM_0_RX Mixer EP6" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback-0 -> speaker">
+ <path name="deep-buffer-playback -> speaker" />
+ </path>
+
+ <path name="deep-buffer-playback-0 -> speaker-earpiece">
+ <path name="deep-buffer-playback -> speaker" />
+ </path>
+
+ <path name="deep-buffer-playback-0 -> speaker-safe">
+ <path name="deep-buffer-playback -> speaker" />
+ </path>
+
+ <path name="deep-buffer-playback -> bt">
+ <ctl name="BT_RX Mixer EP6" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback -> usb-headset">
+ <ctl name="USB_RX Mixer EP6" value="1" />
+ </path>
+
+ <path name="compress-offload-playback">
+ <ctl name="LVM Enable" value="1" />
+ </path>
+
+ <path name="compress-offload-playback -> speaker">
+ <path name="compress-offload-playback" />
+ <ctl name="TDM_0_RX Mixer EP7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback-0 -> speaker">
+ <path name="compress-offload-playback -> speaker" />
+ </path>
+
+ <path name="compress-offload-playback-0 -> speaker-earpiece">
+ <path name="compress-offload-playback -> speaker" />
+ </path>
+
+ <path name="compress-offload-playback-0 -> speaker-safe">
+ <path name="compress-offload-playback -> speaker" />
+ </path>
+
+ <path name="compress-offload-playback -> bt">
+ <ctl name="BT_RX Mixer EP7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback -> usb-headset">
+ <ctl name="USB_RX Mixer EP7" value="1" />
+ </path>
+
+ <path name="mmap-playback -> speaker">
+ <ctl name="TDM_0_RX Mixer EP1" value="1" />
+ </path>
+
+ <path name="mmap-playback-0 -> speaker">
+ <path name="mmap-playback -> speaker" />
+ </path>
+
+ <path name="mmap-playback-0 -> speaker-earpiece">
+ <path name="mmap-playback -> speaker" />
+ </path>
+
+ <path name="mmap-playback-0 -> speaker-safe">
+ <path name="mmap-playback -> speaker" />
+ </path>
+
+ <path name="mmap-playback -> bt">
+ <ctl name="BT_RX Mixer EP1" value="1" />
+ </path>
+
+ <path name="mmap-playback -> usb-headset">
+ <ctl name="USB_RX Mixer EP1" value="1" />
+ </path>
+
+ <path name="hifi-playback -> usb-headset">
+ <ctl name="USB_RX Mixer HIFI" value="1" />
+ </path>
+
+ <path name="voip-playback -> speaker">
+ <ctl name="TDM_0_RX Mixer VOIP" value="1" />
+ </path>
+
+ <path name="voip-playback-0 -> speaker">
+ <path name="voip-playback -> speaker" />
+ </path>
+
+ <path name="voip-playback-0 -> speaker-earpiece">
+ <path name="voip-playback -> speaker" />
+ </path>
+
+ <path name="voip-playback-0 -> speaker-safe">
+ <path name="voip-playback -> speaker" />
+ </path>
+
+ <path name="voip-playback -> bt">
+ <ctl name="BT_RX Mixer VOIP" value="1" />
+ </path>
+
+ <path name="voip-playback -> usb-headset">
+ <ctl name="USB_RX Mixer VOIP" value="1" />
+ </path>
+
+ <path name="immersive-playback -> speaker">
+ <ctl name="TDM_0_RX Mixer IMSV" value="1" />
+ </path>
+
+ <path name="immersive-playback-0 -> speaker">
+ <path name="immersive-playback -> speaker" />
+ </path>
+
+ <path name="immersive-playback-0 -> speaker-earpiece">
+ <path name="immersive-playback -> speaker" />
+ </path>
+
+ <path name="immersive-playback-0 -> speaker-safe">
+ <path name="immersive-playback -> speaker" />
+ </path>
+
+ <path name="immersive-playback -> bt">
+ <ctl name="BT_RX Mixer IMSV" value="1" />
+ </path>
+
+ <path name="immersive-playback -> usb-headset">
+ <ctl name="USB_RX Mixer IMSV" value="1" />
+ </path>
+
+ <path name="haptic-playback -> speaker">
+ <ctl name="TDM_0_RX Mixer EP3" value="1" />
+ <ctl name="TDM_0_RX Mixer EP8" value="1" />
+ </path>
+
+ <path name="haptic-playback-0 -> speaker">
+ <path name="haptic-playback -> speaker" />
+ </path>
+
+ <path name="haptic-playback-0 -> speaker-earpiece">
+ <path name="haptic-playback -> speaker" />
+ </path>
+
+ <path name="haptic-playback-0 -> speaker-safe">
+ <path name="haptic-playback -> speaker" />
+ </path>
+
+ <path name="haptic-playback -> bt">
+ <ctl name="BT_RX Mixer EP3" value="1" />
+ <ctl name="TDM_0_RX Mixer EP8" value="1" />
+ </path>
+
+ <path name="haptic-playback -> usb-headset">
+ <ctl name="USB_RX Mixer EP3" value="1" />
+ <ctl name="TDM_0_RX Mixer EP8" value="1" />
+ </path>
+
+ <!-- audio capture dynamic route -->
+ <path name="microphones -> primary-capture-0">
+ <ctl name="EP1 TX Mixer INTERNAL_MIC_TX" value="1" />
+ </path>
+
+ <path name="back-microphones -> primary-capture-0">
+ <ctl name="EP1 TX Mixer INTERNAL_MIC_TX" value="1" />
+ </path>
+
+ <path name="usb-headset-mic -> primary-capture-0">
+ <ctl name="EP1 TX Mixer USB_TX" value="1" />
+ </path>
+
+ <path name="microphones -> voip-capture-0">
+ <ctl name="VOIP TX Mixer INTERNAL_MIC_TX" value="1" />
+ </path>
+
+ <path name="back-microphones -> voip-capture-0">
+ <ctl name="VOIP TX Mixer INTERNAL_MIC_TX" value="1" />
+ </path>
+
+ <path name="usb-headset-mic -> voip-capture-0">
+ <ctl name="VOIP TX Mixer USB_TX" value="1" />
+ </path>
+
+ <path name="bt-mic -> voip-capture-0">
+ <ctl name="VOIP TX Mixer BT_TX" value="1" />
+ </path>
+
+ <path name="microphones -> fast-capture-0">
+ <ctl name="EP3 TX Mixer INTERNAL_MIC_TX" value="1" />
+ </path>
+
+ <path name="back-microphones -> fast-capture-0">
+ <ctl name="EP3 TX Mixer INTERNAL_MIC_TX" value="1" />
+ </path>
+
+ <path name="usb-headset-mic -> fast-capture-0">
+ <ctl name="EP3 TX Mixer USB_TX" value="1" />
+ </path>
+
+ <path name="bt-mic -> fast-capture-0">
+ <ctl name="EP3 TX Mixer BT_TX" value="1" />
+ </path>
+
+ <path name="microphones -> sound-trigger-capture-0">
+ </path>
+
+ <!-- voice-call dynamic route -->
+ <path name="voice-call-downlink-0 -> speaker">
+ <ctl name="TDM_0_RX Mixer EP5" value="1" />
+ </path>
+
+ <path name="voice-call-downlink-0 -> speaker-earpiece">
+ <ctl name="TDM_0_RX Mixer EP5" value="1" />
+ </path>
+
+ <path name="voice-call-downlink-0 -> bt">
+ <ctl name="BT_RX Mixer EP5" value="1" />
+ </path>
+
+ <path name="voice-call-downlink-0 -> usb-headphone">
+ <ctl name="USB_RX Mixer EP5" value="1" />
+ </path>
+
+ <path name="voice-call-downlink-0 -> null-sink">
+ <ctl name="INCALL_RX Mixer EP5" value="1" />
+ </path>
+
+ <path name="microphones -> voice-call-uplink-0">
+ <ctl name="EP4 TX Mixer INTERNAL_MIC_TX" value="1" />
+ </path>
+
+ <path name="back-microphones -> voice-call-uplink-0">
+ <ctl name="EP4 TX Mixer INTERNAL_MIC_TX" value="1" />
+ </path>
+
+ <path name="usb-headset-mic -> voice-call-uplink-0">
+ <ctl name="EP4 TX Mixer USB_TX" value="1" />
+ </path>
+
+ <path name="bt-mic -> voice-call-uplink-0">
+ <ctl name="EP4 TX Mixer BT_TX" value="1" />
+ </path>
+
+ <path name="null-source -> voice-call-uplink-0">
+ <ctl name="EP4 TX Mixer INCALL_TX" value="1" />
+ </path>
+
+ <path name="hostless-ulC spk-vi">
+ <ctl name="NoHost1 TX Mixer TDM_0_TX" value="1" />
+ </path>
+
+ <path name="telephony-rx -> in-call-capture-0" />
+ <path name="telephony-rx -> in-call-capture-1" />
+ <path name="telephony-rx -> in-call-capture-2" />
+
+ <path name="microphones -> mmap-capture-0">
+ <ctl name="EP2 TX Mixer INTERNAL_MIC_TX" value="1" />
+ </path>
+
+ <path name="usb-headset-mic -> mmap-capture-0">
+ <ctl name="EP2 TX Mixer USB_TX" value="1" />
+ </path>
+
+ <path name="bt-mic -> mmap-capture-0">
+ <ctl name="EP2 TX Mixer BT_TX" value="1" />
+ </path>
+
+ <!-- codec setting -->
+ <!-- Rx device -->
+ <path name="speaker-earpiece">
+ <ctl name="PCM Source" value="ASP" />
+ <ctl name="AMP PCM Gain" value="6" />
+ <ctl name="Main AMP Enable Switch" value="1" />
+ </path>
+
+ <path name="speaker-earpiece (VOICE)">
+ <ctl name="Boost Peak Current Limit" value="3.50A" />
+ <ctl name="PCM Source" value="ASP" />
+ <ctl name="AMP PCM Gain" value="7" />
+ <ctl name="Main AMP Enable Switch" value="1" />
+ </path>
+
+ <path name="speaker">
+ <ctl name="Boost Peak Current Limit" value="2.50A" />
+ <ctl name="R Boost Peak Current Limit" value="2.50A" />
+ <ctl name="Main AMP Enable Switch" value="1" />
+ <ctl name="R Main AMP Enable Switch" value="1" />
+ <ctl name="Fast Use Case Delta File" value="fast_switch3.txt" />
+ <ctl name="Fast Use Case Switch Enable" value="1" />
+ <ctl name="R Fast Use Case Delta File" value="fast_switch4.txt" />
+ <ctl name="R Fast Use Case Switch Enable" value="1" />
+ </path>
+
+ <path name="speaker (VOICE)">
+ <ctl name="R Boost Peak Current Limit" value="3.50A" />
+ <ctl name="Boost Peak Current Limit" value="3.50A" />
+ <ctl name="ASPTX1 Slot Position" value="1" />
+ <ctl name="R ASPTX1 Slot Position" value="0" />
+ <!--<ctl
+ name="R DSP RX2 Source" value="ASPRX2"/>-->
+ <ctl name="R Main AMP Enable Switch" value="1" />
+ <ctl name="Main AMP Enable Switch" value="1" />
+ <!-- load Enable FIR -->
+ <ctl name="Fast Use Case Delta File" value="fast_switch1.txt" />
+ <ctl name="Fast Use Case Switch Enable" value="1" />
+ <ctl name="R Fast Use Case Delta File" value="fast_switch2.txt" />
+ <ctl name="R Fast Use Case Switch Enable" value="1" />
+ <ctl name="Digital PCM Volume" value="800" />
+ </path>
+
+ <path name="speaker-safe">
+ <ctl name="R Boost Peak Current Limit" value="3.50A" />
+ <ctl name="R Main AMP Enable Switch" value="1" />
+ <!-- load Bypass FIR -->
+ <ctl name="R Fast Use Case Delta File" value="fast_switch4.txt" />
+ <ctl name="R Fast Use Case Switch Enable" value="1" />
+ </path>
+
+ <!-- Tx device -->
+ <path name="microphones">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="MIC Record Soft Gain (dB)" value="22" />
+ </path>
+
+ <path name="microphones (VOICE)">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="MIC HW Gain At High Power Mode (cB)" value="130" />
+ <ctl name="MIC Record Soft Gain (dB)" value="0" />
+ </path>
+
+ <path name="back-microphones">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="MIC Record Soft Gain (dB)" value="22" />
+ </path>
+
+ <path name="back-microphones (VOICE)">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="MIC HW Gain At High Power Mode (cB)" value="130" />
+ <ctl name="MIC Record Soft Gain (dB)" value="0" />
+ </path>
+
+ <path name="microphones (CAMCORDER)">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0"/>
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3"/>
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2"/>
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1"/>
+ <ctl name="MIC DC Blocker" value="1"/>
+ <ctl name="MIC Record Soft Gain (dB)" value="0"/>
+ </path>
+
+ <path name="back-microphones (CAMCORDER)">
+ <path name="microphones (CAMCORDER)" />
+ </path>
+
+ <path name="camcorder-mic">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="MIC Record Soft Gain (dB)" value="0" />
+ </path>
+
+ <path name="voice-recog-mic">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="MIC Record Soft Gain (dB)" value="22" />
+ </path>
+
+ <path name="voice-recog-aec-mic">
+ <ctl name="Audio Capture Eraser Enable" value="1" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="Audio Capture Mic Source" value="ERASER" />
+ <ctl name="MIC Record Soft Gain (dB)" value="0" />
+ </path>
+
+ <path name="unprocessed-mic">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="MIC Record Soft Gain (dB)" value="5" />
+ </path>
+
+ <path name="unprocessed-dual-mic">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="MIC Record Soft Gain (dB)" value="5" />
+ </path>
+
+ <path name="unprocessed-triple-mic">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="MIC DC Blocker" value="1" />
+ <ctl name="MIC Record Soft Gain (dB)" value="5" />
+ </path>
+
+ <path name="bt-mic">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="Audio Capture Mic Source" value="BT_MIC" />
+ <ctl name="Voice Call Mic Source" value="BT_MIC" />
+ <ctl name="MIC Record Soft Gain (dB)" value="0" />
+ </path>
+
+ <path name="usb-headset-mic">
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2" />
+ <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1" />
+ <ctl name="Audio Capture Mic Source" value="USB_MIC" />
+ <ctl name="Voice Call Mic Source" value="USB_MIC" />
+ <ctl name="MIC Record Soft Gain (dB)" value="0" />
+ </path>
+
+ <!-- cs35l41 specific path to load firmware in cs35l41.c -->
+ <path name="cs35l41-load-protection-firmware-start">
+ <!-- Enable it after get the protection firmware -->
+ <ctl name="DSP Booted" value="0" />
+ <ctl name="R DSP Booted" value="0" />
+ <ctl name="DSP1 Preload Switch" value="0" />
+ <ctl name="R DSP1 Preload Switch" value="0" />
+ </path>
+
+ <path name="cs35l41-load-protection-firmware-end">
+ <!-- Enable it after get the protection firmware -->
+ <ctl name="DSP1 Preload Switch" value="1" />
+ <ctl name="R DSP1 Preload Switch" value="1" />
+ </path>
+ <!-- cs35l41 specific path to load firmware in cs35l41.c end-->
+</mixer>
diff --git a/audio/lynx/audio-tables.mk b/audio/lynx/audio-tables.mk
index 812dbce..f8c1da5 100644
--- a/audio/lynx/audio-tables.mk
+++ b/audio/lynx/audio-tables.mk
@@ -16,6 +16,16 @@
AUDIO_TABLE_FOLDER := lynx
+# Enable this to build AIDL
+# BUILD_AUDIO_AIDL_VERSION := true
+
+ifeq ($(BUILD_AUDIO_AIDL_VERSION),true)
+PRODUCT_COPY_FILES += \
+ device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/aidl_config/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
+ device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/aidl_config/audio_platform_configuration_aidl.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_configuration_aidl.xml \
+ device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/aidl_config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
+ device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/aidl_config/mixer_paths_aidl.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_aidl.xml
+else
# Platform Configuration for AudioHAL / SoundTriggerHAL
PRODUCT_COPY_FILES += \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration_bluetooth_legacy_hal.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_bluetooth_legacy_hal.xml \
@@ -34,6 +44,7 @@ PRODUCT_COPY_FILES += \
# Mixer Path Configuration for AudioHAL
PRODUCT_COPY_FILES += \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/config/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml
+endif
# Speaker firmware files
SPK_FIRMWARE_PATH := $(AUDIO_TABLE_FOLDER)/cs35l41/fw
@@ -44,6 +55,7 @@ PRODUCT_COPY_FILES += $(call copy-files,$(wildcard $(SPK_FIRMWARE_FULL_PATH)/*)
# Audio tuning
PRODUCT_COPY_FILES += \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/bluenote/recording.gatf:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/recording.gatf \
+ device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/bluenote/smartfeature.gstf:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/smartfeature.gstf \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/BLUETOOTH.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/BLUETOOTH.dat \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HANDSFREE.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HANDSFREE.dat \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HANDSET.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HANDSET.dat \
diff --git a/audio/lynx/config/audio_effects.xml b/audio/lynx/config/audio_effects.xml
index 1718057..9c2ba29 100644
--- a/audio/lynx/config/audio_effects.xml
+++ b/audio/lynx/config/audio_effects.xml
@@ -5,7 +5,7 @@
<library name="reverb" path="libreverbwrapper.so"/>
<library name="visualizer_sw" path="libvisualizer.so"/>
<library name="downmix" path="libdownmix.so"/>
- <library name="dynamics_processing" path="libdynproc.so"/>
+ <library name="dynamics_processing_sw" path="libdynproc.so"/>
<library name="loudness_enhancer" path="libldnhncr.so"/>
<library name="proxy" path="libeffectproxy.so"/>
<library name="offload_effect" path="liboffloadeffect.so"/>
@@ -45,12 +45,15 @@
<libsw library="visualizer_sw" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
<libhw library="offload_effect" uuid="99fb2ecb-3426-4a0e-8082-1a1da5604b7d"/>
</effectProxy>
+ <effectProxy name="dynamics_processing" library="proxy" uuid="dcf01474-8982-11ec-a8a3-0242ac120002">
+ <libsw library="dynamics_processing_sw" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
+ <libhw library="offload_effect" uuid="1bf15eb7-8f49-4fd8-8380-0767fd5680f3"/>
+ </effectProxy>
<effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
<effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
<effect name="aec" library="offload_effect" uuid="28c28780-ec8b-48b6-8590-8c84557d797d"/>
<effect name="ns" library="offload_effect" uuid="62ff2836-d050-43c3-9c2d-94a73dad2c64"/>
<effect name="haptic_generator" library="haptic_generator" uuid="97c4acd1-8b82-4f2f-832e-c2fe5d7a9931"/>
- <effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
</effects>
<postprocess>
</postprocess>
diff --git a/audio/lynx/config/audio_platform_configuration.xml b/audio/lynx/config/audio_platform_configuration.xml
index 1a3aba5..5443432 100644
--- a/audio/lynx/config/audio_platform_configuration.xml
+++ b/audio/lynx/config/audio_platform_configuration.xml
@@ -286,7 +286,7 @@
<device_handle>
<handler libname="audio_bt_aoc.so"/>
- <handler libname="audio_usb_aoc.so" argu="MaxSamplingRate=96000,UnsupportedFormat=S24_LE"/>
+ <handler libname="audio_usb_aoc.so" argu="MaxSamplingRate=192000,UnsupportedFormat=S24_LE,MaxCapPacketInterval=125,MaxCapSampleRate=192000,MaxCapBitWidth=32,MaxCapChannel=2,EnableHifi192kMultichannel=0"/>
</device_handle>
<external_module>
diff --git a/audio/lynx/config/audio_policy_configuration.xml b/audio/lynx/config/audio_policy_configuration.xml
index 82bad3c..527b603 100644
--- a/audio/lynx/config/audio_policy_configuration.xml
+++ b/audio/lynx/config/audio_policy_configuration.xml
@@ -209,27 +209,27 @@
<route type="mix" sink="Earpiece"
sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,compressed_offload"/>
<route type="mix" sink="BT A2DP Out"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT A2DP Headphones"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT A2DP Speaker"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT BLE Headset"
- sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+ sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT BLE Speaker"
- sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+ sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT BLE Broadcast"
- sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+ sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
<route type="mix" sink="USB Device Out"
sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback,compressed_offload"/>
<route type="mix" sink="USB Headset Out"
sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback,compressed_offload"/>
<route type="mix" sink="BT SCO"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT SCO Headset"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT SCO Car Kit"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="Telephony Tx" sources="incall playback,voice call tx" />
<route type="mix" sink="primary input"
sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic,BLE Headset Mic"/>
@@ -240,9 +240,9 @@
<route type="mix" sink="voip_tx"
sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic,BLE Headset Mic"/>
<route type="mix" sink="fast input"
- sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+ sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic,BLE Headset Mic"/>
<route type="mix" sink="mmap_no_irq_in"
- sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+ sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic,BLE Headset Mic"/>
<route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
<route type="mix" sink="echo_ref_input" sources="Echo Ref In"/>
</routes>
diff --git a/audio/lynx/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/lynx/config/audio_policy_configuration_a2dp_offload_disabled.xml
index 2f1812c..5c80141 100644
--- a/audio/lynx/config/audio_policy_configuration_a2dp_offload_disabled.xml
+++ b/audio/lynx/config/audio_policy_configuration_a2dp_offload_disabled.xml
@@ -181,11 +181,11 @@
<route type="mix" sink="USB Headset Out"
sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback,compressed_offload"/>
<route type="mix" sink="BT SCO"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT SCO Headset"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT SCO Car Kit"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="Telephony Tx" sources="incall playback,voice call tx" />
<route type="mix" sink="primary input"
sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
@@ -196,9 +196,9 @@
<route type="mix" sink="voip_tx"
sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
<route type="mix" sink="fast input"
- sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+ sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
<route type="mix" sink="mmap_no_irq_in"
- sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+ sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
<route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
<route type="mix" sink="echo_ref_input" sources="Echo Ref In"/>
</routes>
diff --git a/audio/lynx/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/lynx/config/audio_policy_configuration_bluetooth_legacy_hal.xml
index ce3be39..5ef0148 100644
--- a/audio/lynx/config/audio_policy_configuration_bluetooth_legacy_hal.xml
+++ b/audio/lynx/config/audio_policy_configuration_bluetooth_legacy_hal.xml
@@ -181,11 +181,11 @@
<route type="mix" sink="USB Headset Out"
sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback,compressed_offload"/>
<route type="mix" sink="BT SCO"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT SCO Headset"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT SCO Car Kit"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
<route type="mix" sink="Telephony Tx" sources="incall playback,voice call tx" />
<route type="mix" sink="primary input"
sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
@@ -196,9 +196,9 @@
<route type="mix" sink="voip_tx"
sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
<route type="mix" sink="fast input"
- sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+ sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
<route type="mix" sink="mmap_no_irq_in"
- sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+ sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
<route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
<route type="mix" sink="echo_ref_input" sources="Echo Ref In"/>
</routes>
diff --git a/audio/lynx/config/audio_policy_configuration_le_offload_disabled.xml b/audio/lynx/config/audio_policy_configuration_le_offload_disabled.xml
index a16256d..846282e 100644
--- a/audio/lynx/config/audio_policy_configuration_le_offload_disabled.xml
+++ b/audio/lynx/config/audio_policy_configuration_le_offload_disabled.xml
@@ -64,6 +64,10 @@
<profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <mixPort name="immersive_out" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER">
+ <profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
<mixPort name="incall playback" role="source"
flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
@@ -186,27 +190,27 @@
<!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<route type="mix" sink="Speaker"
- sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx,immersive_out"/>
<route type="mix" sink="Speaker Safe"
- sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx"/>
<route type="mix" sink="Earpiece"
- sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx"/>
<route type="mix" sink="BT A2DP Out"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
+ sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT A2DP Headphones"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
+ sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT A2DP Speaker"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
+ sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
<route type="mix" sink="USB Device Out"
- sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
<route type="mix" sink="USB Headset Out"
- sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback,compressed_offload"/>
+ sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
<route type="mix" sink="BT SCO"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
+ sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT SCO Headset"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
+ sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT SCO Car Kit"
- sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out"/>
+ sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
<route type="mix" sink="Telephony Tx" sources="incall playback,voice call tx" />
<route type="mix" sink="primary input"
sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
diff --git a/audio/lynx/config/mixer_paths.xml b/audio/lynx/config/mixer_paths.xml
index 45df0f8..bec5b6e 100644
--- a/audio/lynx/config/mixer_paths.xml
+++ b/audio/lynx/config/mixer_paths.xml
@@ -162,6 +162,7 @@
<ctl name="BT_RX Mixer EP7" value="0"/>
<ctl name="BT_RX Mixer NoHost1" value="0"/>
<ctl name="BT_RX Mixer VOIP" value="0"/>
+ <ctl name="BT_RX Mixer RAW" value="0"/>
<ctl name="INCALL_RX Mixer EP1" value="0"/>
<ctl name="INCALL_RX Mixer EP2" value="0"/>
@@ -396,6 +397,10 @@
<ctl name="USB_RX Mixer RAW" value="1"/>
</path>
+ <path name="raw-playbackP bt">
+ <ctl name="BT_RX Mixer RAW" value="1"/>
+ </path>
+
<path name="raw-playbackP hearing-aid">
</path>
@@ -410,6 +415,10 @@
<ctl name="USB_RX Mixer EP1" value="1"/>
</path>
+ <path name="mmap-playbackP bt">
+ <ctl name="BT_RX Mixer EP1" value="1"/>
+ </path>
+
<path name="mmap-playbackP hearing-aid">
</path>
@@ -596,6 +605,10 @@
<ctl name="EP3 TX Mixer USB_TX" value="1"/>
</path>
+ <path name="low-latency-recordC bt-mic">
+ <ctl name="EP3 TX Mixer BT_TX" value="1"/>
+ </path>
+
<path name="mmap-recordC">
<ctl name="EP2 TX Mixer INTERNAL_MIC_TX" value="1"/>
</path>
@@ -604,6 +617,10 @@
<ctl name="EP2 TX Mixer USB_TX" value="1"/>
</path>
+ <path name="mmap-recordC bt-mic">
+ <ctl name="EP2 TX Mixer BT_TX" value="1"/>
+ </path>
+
<!-- codec setting -->>
<!-- Rx device -->
<path name="handset">
diff --git a/audio/lynx/tuning/bluenote/smartfeature.gstf b/audio/lynx/tuning/bluenote/smartfeature.gstf
new file mode 100644
index 0000000..d174ae3
--- /dev/null
+++ b/audio/lynx/tuning/bluenote/smartfeature.gstf
Binary files differ
diff --git a/audio/lynx/tuning/fortemedia/BLUETOOTH.dat b/audio/lynx/tuning/fortemedia/BLUETOOTH.dat
index 93eeb03..4c24529 100644
--- a/audio/lynx/tuning/fortemedia/BLUETOOTH.dat
+++ b/audio/lynx/tuning/fortemedia/BLUETOOTH.dat
Binary files differ
diff --git a/audio/lynx/tuning/fortemedia/BLUETOOTH.mods b/audio/lynx/tuning/fortemedia/BLUETOOTH.mods
index 13ab499..06401da 100644
--- a/audio/lynx/tuning/fortemedia/BLUETOOTH.mods
+++ b/audio/lynx/tuning/fortemedia/BLUETOOTH.mods
@@ -1,7 +1,7 @@
#PLATFORM_NAME gChip
#EXPORT_FLAG BLUETOOTH
#SINGLE_API_VER 1.2.1
-#SAVE_TIME 2023-03-22 15:50:15
+#SAVE_TIME 2023-04-18 16:05:27
#CASE_NAME BLUETOOTH-BT_HAC-VOICE_GENERIC-NB
#PARAM_MODE FULL
@@ -2680,7 +2680,7 @@
#TX
0 0x0001 //TX_OPERATION_MODE_0
1 0x0001 //TX_OPERATION_MODE_1
-2 0x0073 //TX_PATCH_REG
+2 0x00F3 //TX_PATCH_REG
3 0x6F7D //TX_SENDFUNC_MODE_0
4 0x0000 //TX_SENDFUNC_MODE_1
5 0x0002 //TX_NUM_MIC
@@ -2875,10 +2875,10 @@
194 0x0000 //TX_NORMENERTH
195 0x0000 //TX_NORMENERHIGHTH
196 0x0000 //TX_NORMENERHIGHTHL
-197 0x7FF0 //TX_DTD_THR1_0
-198 0x7FF0 //TX_DTD_THR1_1
+197 0x7333 //TX_DTD_THR1_0
+198 0x7333 //TX_DTD_THR1_1
199 0x7FF0 //TX_DTD_THR1_2
-200 0x6D60 //TX_DTD_THR1_3
+200 0x7FF0 //TX_DTD_THR1_3
201 0x7FF0 //TX_DTD_THR1_4
202 0x7FF0 //TX_DTD_THR1_5
203 0x7FF0 //TX_DTD_THR1_6
@@ -2922,7 +2922,7 @@
241 0x0000 //TX_DT_RESRV_9
242 0xF800 //TX_THR_SN_EST_0
243 0xFA00 //TX_THR_SN_EST_1
-244 0xFA00 //TX_THR_SN_EST_2
+244 0xFC00 //TX_THR_SN_EST_2
245 0xF200 //TX_THR_SN_EST_3
246 0xFA00 //TX_THR_SN_EST_4
247 0xFA00 //TX_THR_SN_EST_5
@@ -2931,7 +2931,7 @@
250 0x0100 //TX_DELTA_THR_SN_EST_0
251 0x0100 //TX_DELTA_THR_SN_EST_1
252 0x0200 //TX_DELTA_THR_SN_EST_2
-253 0x0100 //TX_DELTA_THR_SN_EST_3
+253 0x0400 //TX_DELTA_THR_SN_EST_3
254 0x0100 //TX_DELTA_THR_SN_EST_4
255 0x0200 //TX_DELTA_THR_SN_EST_5
256 0x0200 //TX_DELTA_THR_SN_EST_6
@@ -2968,20 +2968,20 @@
287 0x0014 //TX_NS_LVL_CTRL_6
288 0x0011 //TX_NS_LVL_CTRL_7
289 0x000F //TX_MIN_GAIN_S_0
-290 0x0010 //TX_MIN_GAIN_S_1
+290 0x0020 //TX_MIN_GAIN_S_1
291 0x0010 //TX_MIN_GAIN_S_2
292 0x0010 //TX_MIN_GAIN_S_3
293 0x0010 //TX_MIN_GAIN_S_4
294 0x0010 //TX_MIN_GAIN_S_5
295 0x0010 //TX_MIN_GAIN_S_6
296 0x000F //TX_MIN_GAIN_S_7
-297 0x6000 //TX_NMOS_SUP
+297 0x2000 //TX_NMOS_SUP
298 0x0000 //TX_NS_MAX_PRI_SNR_TH
299 0x0000 //TX_NMOS_SUP_MENSA
-300 0x7FFF //TX_SNRI_SUP_0
+300 0x4000 //TX_SNRI_SUP_0
301 0x2000 //TX_SNRI_SUP_1
302 0x2000 //TX_SNRI_SUP_2
-303 0x4000 //TX_SNRI_SUP_3
+303 0x2000 //TX_SNRI_SUP_3
304 0x4000 //TX_SNRI_SUP_4
305 0x50C0 //TX_SNRI_SUP_5
306 0x2000 //TX_SNRI_SUP_6
@@ -2995,15 +2995,15 @@
314 0x5000 //TX_A_POST_FILT_S_0
315 0x4C00 //TX_A_POST_FILT_S_1
316 0x4000 //TX_A_POST_FILT_S_2
-317 0x2000 //TX_A_POST_FILT_S_3
+317 0x6000 //TX_A_POST_FILT_S_3
318 0x4000 //TX_A_POST_FILT_S_4
319 0x5000 //TX_A_POST_FILT_S_5
320 0x6000 //TX_A_POST_FILT_S_6
321 0x7000 //TX_A_POST_FILT_S_7
322 0x2000 //TX_B_POST_FILT_0
-323 0x2000 //TX_B_POST_FILT_1
+323 0x4000 //TX_B_POST_FILT_1
324 0x2000 //TX_B_POST_FILT_2
-325 0x2000 //TX_B_POST_FILT_3
+325 0x7FFF //TX_B_POST_FILT_3
326 0x4000 //TX_B_POST_FILT_4
327 0x1000 //TX_B_POST_FILT_5
328 0x1000 //TX_B_POST_FILT_6
@@ -3018,9 +3018,9 @@
337 0x7FFF //TX_B_LESSCUT_RTO_S_7
338 0x7C00 //TX_LAMBDA_PFILT
339 0x7C00 //TX_LAMBDA_PFILT_S_0
-340 0x7C00 //TX_LAMBDA_PFILT_S_1
-341 0x7A00 //TX_LAMBDA_PFILT_S_2
-342 0x7800 //TX_LAMBDA_PFILT_S_3
+340 0x7E00 //TX_LAMBDA_PFILT_S_1
+341 0x7E00 //TX_LAMBDA_PFILT_S_2
+342 0x7D00 //TX_LAMBDA_PFILT_S_3
343 0x7C00 //TX_LAMBDA_PFILT_S_4
344 0x7C00 //TX_LAMBDA_PFILT_S_5
345 0x7C00 //TX_LAMBDA_PFILT_S_6
@@ -3045,12 +3045,12 @@
364 0x0000 //TX_K_APT
365 0x0001 //TX_NOISEDET
366 0x0064 //TX_NDETCT
-367 0x0032 //TX_NOISE_TH_0
+367 0x001E //TX_NOISE_TH_0
368 0x7FFF //TX_NOISE_TH_0_2
369 0x7FFF //TX_NOISE_TH_0_3
370 0x0320 //TX_NOISE_TH_1
-371 0x0230 //TX_NOISE_TH_2
-372 0x2CEC //TX_NOISE_TH_3
+371 0x0384 //TX_NOISE_TH_2
+372 0x2904 //TX_NOISE_TH_3
373 0x3E80 //TX_NOISE_TH_4
374 0x7FFF //TX_NOISE_TH_5
375 0x7FFF //TX_NOISE_TH_5_2
@@ -3084,7 +3084,7 @@
403 0x4000 //TX_POST_MASK_SUP
404 0x7FFF //TX_POST_MASK_ADJUST
405 0x00C8 //TX_NS_ENOISE_MIC0_TH
-406 0x0033 //TX_MINENOISE_MIC0_TH
+406 0x001E //TX_MINENOISE_MIC0_TH
407 0x012C //TX_MINENOISE_MIC0_S_TH
408 0x7FFF //TX_MIN_G_CTRL_SSNS
409 0x0000 //TX_METAL_RTO_THR
@@ -3622,8 +3622,8 @@
941 0x0008 //TX_MIC1MUTE_CVG_TIME
942 0x0008 //TX_MIC1MUTE_RELEASE_TIME
943 0x0100 //TX_AMS_RESRV_01
-944 0xE4A8 //TX_AMS_RESRV_02
-945 0x7EF4 //TX_AMS_RESRV_03
+944 0xE0C0 //TX_AMS_RESRV_02
+945 0x2710 //TX_AMS_RESRV_03
946 0x0000 //TX_AMS_RESRV_04
947 0x0000 //TX_AMS_RESRV_05
948 0x0000 //TX_AMS_RESRV_06
diff --git a/audio/lynx/tuning/fortemedia/HANDSFREE.dat b/audio/lynx/tuning/fortemedia/HANDSFREE.dat
index 9d15e8e..f6f5afb 100644
--- a/audio/lynx/tuning/fortemedia/HANDSFREE.dat
+++ b/audio/lynx/tuning/fortemedia/HANDSFREE.dat
Binary files differ
diff --git a/audio/lynx/tuning/fortemedia/HANDSFREE.mods b/audio/lynx/tuning/fortemedia/HANDSFREE.mods
index 39c21d1..dc42412 100644
--- a/audio/lynx/tuning/fortemedia/HANDSFREE.mods
+++ b/audio/lynx/tuning/fortemedia/HANDSFREE.mods
@@ -1,7 +1,7 @@
#PLATFORM_NAME gChip
#EXPORT_FLAG HANDSFREE
#SINGLE_API_VER 1.2.1
-#SAVE_TIME 2023-03-22 15:41:43
+#SAVE_TIME 2023-04-18 16:04:40
#CASE_NAME HANDSFREE-HANDSFREE-VOICE_GENERIC-NB
#PARAM_MODE FULL
@@ -2680,7 +2680,7 @@
#TX
0 0x0001 //TX_OPERATION_MODE_0
1 0x0001 //TX_OPERATION_MODE_1
-2 0x0073 //TX_PATCH_REG
+2 0x00F3 //TX_PATCH_REG
3 0x6F7D //TX_SENDFUNC_MODE_0
4 0x0000 //TX_SENDFUNC_MODE_1
5 0x0002 //TX_NUM_MIC
@@ -2875,8 +2875,8 @@
194 0x0000 //TX_NORMENERTH
195 0x0000 //TX_NORMENERHIGHTH
196 0x0000 //TX_NORMENERHIGHTHL
-197 0x7FD5 //TX_DTD_THR1_0
-198 0x7EF4 //TX_DTD_THR1_1
+197 0x7333 //TX_DTD_THR1_0
+198 0x7333 //TX_DTD_THR1_1
199 0x7FF0 //TX_DTD_THR1_2
200 0x7FF0 //TX_DTD_THR1_3
201 0x7FF0 //TX_DTD_THR1_4
@@ -2922,7 +2922,7 @@
241 0x0000 //TX_DT_RESRV_9
242 0xF800 //TX_THR_SN_EST_0
243 0xFA00 //TX_THR_SN_EST_1
-244 0xFA00 //TX_THR_SN_EST_2
+244 0xFC00 //TX_THR_SN_EST_2
245 0xF200 //TX_THR_SN_EST_3
246 0xFA00 //TX_THR_SN_EST_4
247 0xFA00 //TX_THR_SN_EST_5
@@ -2931,7 +2931,7 @@
250 0x0100 //TX_DELTA_THR_SN_EST_0
251 0x0100 //TX_DELTA_THR_SN_EST_1
252 0x0200 //TX_DELTA_THR_SN_EST_2
-253 0x0100 //TX_DELTA_THR_SN_EST_3
+253 0x0400 //TX_DELTA_THR_SN_EST_3
254 0x0100 //TX_DELTA_THR_SN_EST_4
255 0x0200 //TX_DELTA_THR_SN_EST_5
256 0x0200 //TX_DELTA_THR_SN_EST_6
@@ -2968,20 +2968,20 @@
287 0x0014 //TX_NS_LVL_CTRL_6
288 0x0011 //TX_NS_LVL_CTRL_7
289 0x000F //TX_MIN_GAIN_S_0
-290 0x0010 //TX_MIN_GAIN_S_1
+290 0x0020 //TX_MIN_GAIN_S_1
291 0x0010 //TX_MIN_GAIN_S_2
292 0x0010 //TX_MIN_GAIN_S_3
293 0x0010 //TX_MIN_GAIN_S_4
294 0x0010 //TX_MIN_GAIN_S_5
295 0x0010 //TX_MIN_GAIN_S_6
296 0x000F //TX_MIN_GAIN_S_7
-297 0x6000 //TX_NMOS_SUP
+297 0x2000 //TX_NMOS_SUP
298 0x0000 //TX_NS_MAX_PRI_SNR_TH
299 0x0000 //TX_NMOS_SUP_MENSA
-300 0x7FFF //TX_SNRI_SUP_0
+300 0x4000 //TX_SNRI_SUP_0
301 0x2000 //TX_SNRI_SUP_1
302 0x2000 //TX_SNRI_SUP_2
-303 0x4000 //TX_SNRI_SUP_3
+303 0x2000 //TX_SNRI_SUP_3
304 0x4000 //TX_SNRI_SUP_4
305 0x50C0 //TX_SNRI_SUP_5
306 0x2000 //TX_SNRI_SUP_6
@@ -2995,15 +2995,15 @@
314 0x5000 //TX_A_POST_FILT_S_0
315 0x4C00 //TX_A_POST_FILT_S_1
316 0x4000 //TX_A_POST_FILT_S_2
-317 0x2000 //TX_A_POST_FILT_S_3
+317 0x6000 //TX_A_POST_FILT_S_3
318 0x4000 //TX_A_POST_FILT_S_4
319 0x5000 //TX_A_POST_FILT_S_5
320 0x6000 //TX_A_POST_FILT_S_6
321 0x7000 //TX_A_POST_FILT_S_7
322 0x2000 //TX_B_POST_FILT_0
-323 0x2000 //TX_B_POST_FILT_1
+323 0x4000 //TX_B_POST_FILT_1
324 0x2000 //TX_B_POST_FILT_2
-325 0x2000 //TX_B_POST_FILT_3
+325 0x7FFF //TX_B_POST_FILT_3
326 0x4000 //TX_B_POST_FILT_4
327 0x1000 //TX_B_POST_FILT_5
328 0x1000 //TX_B_POST_FILT_6
@@ -3018,9 +3018,9 @@
337 0x7FFF //TX_B_LESSCUT_RTO_S_7
338 0x7C00 //TX_LAMBDA_PFILT
339 0x7C00 //TX_LAMBDA_PFILT_S_0
-340 0x7C00 //TX_LAMBDA_PFILT_S_1
-341 0x7A00 //TX_LAMBDA_PFILT_S_2
-342 0x7800 //TX_LAMBDA_PFILT_S_3
+340 0x7E00 //TX_LAMBDA_PFILT_S_1
+341 0x7E00 //TX_LAMBDA_PFILT_S_2
+342 0x7D00 //TX_LAMBDA_PFILT_S_3
343 0x7C00 //TX_LAMBDA_PFILT_S_4
344 0x7C00 //TX_LAMBDA_PFILT_S_5
345 0x7C00 //TX_LAMBDA_PFILT_S_6
@@ -3045,12 +3045,12 @@
364 0x0000 //TX_K_APT
365 0x0001 //TX_NOISEDET
366 0x0064 //TX_NDETCT
-367 0x0032 //TX_NOISE_TH_0
+367 0x001E //TX_NOISE_TH_0
368 0x7FFF //TX_NOISE_TH_0_2
369 0x7FFF //TX_NOISE_TH_0_3
370 0x0320 //TX_NOISE_TH_1
-371 0x0230 //TX_NOISE_TH_2
-372 0x2CEC //TX_NOISE_TH_3
+371 0x0384 //TX_NOISE_TH_2
+372 0x2904 //TX_NOISE_TH_3
373 0x3E80 //TX_NOISE_TH_4
374 0x7FFF //TX_NOISE_TH_5
375 0x7FFF //TX_NOISE_TH_5_2
@@ -3084,7 +3084,7 @@
403 0x4000 //TX_POST_MASK_SUP
404 0x7FFF //TX_POST_MASK_ADJUST
405 0x00C8 //TX_NS_ENOISE_MIC0_TH
-406 0x0033 //TX_MINENOISE_MIC0_TH
+406 0x001E //TX_MINENOISE_MIC0_TH
407 0x012C //TX_MINENOISE_MIC0_S_TH
408 0x7FFF //TX_MIN_G_CTRL_SSNS
409 0x0000 //TX_METAL_RTO_THR
diff --git a/audio/lynx/tuning/fortemedia/HEADSET.dat b/audio/lynx/tuning/fortemedia/HEADSET.dat
index 3f64c37..5ff7a8e 100644
--- a/audio/lynx/tuning/fortemedia/HEADSET.dat
+++ b/audio/lynx/tuning/fortemedia/HEADSET.dat
Binary files differ
diff --git a/audio/lynx/tuning/fortemedia/HEADSET.mods b/audio/lynx/tuning/fortemedia/HEADSET.mods
index b953e9e..7ce97f0 100644
--- a/audio/lynx/tuning/fortemedia/HEADSET.mods
+++ b/audio/lynx/tuning/fortemedia/HEADSET.mods
@@ -1,7 +1,7 @@
#PLATFORM_NAME gChip
#EXPORT_FLAG HEADSET
#SINGLE_API_VER 1.2.1
-#SAVE_TIME 2023-03-22 15:50:48
+#SAVE_TIME 2023-04-18 16:05:05
#CASE_NAME HEADSET-USB_BLACKBIRD-VOICE_GENERIC-NB
#PARAM_MODE FULL
@@ -29380,7 +29380,7 @@
#TX
0 0x0001 //TX_OPERATION_MODE_0
1 0x0001 //TX_OPERATION_MODE_1
-2 0x0073 //TX_PATCH_REG
+2 0x00F3 //TX_PATCH_REG
3 0x6F7D //TX_SENDFUNC_MODE_0
4 0x0000 //TX_SENDFUNC_MODE_1
5 0x0002 //TX_NUM_MIC
@@ -29575,10 +29575,10 @@
194 0x0000 //TX_NORMENERTH
195 0x0000 //TX_NORMENERHIGHTH
196 0x0000 //TX_NORMENERHIGHTHL
-197 0x7FF0 //TX_DTD_THR1_0
-198 0x7FF0 //TX_DTD_THR1_1
+197 0x7333 //TX_DTD_THR1_0
+198 0x7333 //TX_DTD_THR1_1
199 0x7FF0 //TX_DTD_THR1_2
-200 0x6D60 //TX_DTD_THR1_3
+200 0x7FF0 //TX_DTD_THR1_3
201 0x7FF0 //TX_DTD_THR1_4
202 0x7FF0 //TX_DTD_THR1_5
203 0x7FF0 //TX_DTD_THR1_6
@@ -29622,7 +29622,7 @@
241 0x0000 //TX_DT_RESRV_9
242 0xF800 //TX_THR_SN_EST_0
243 0xFA00 //TX_THR_SN_EST_1
-244 0xFA00 //TX_THR_SN_EST_2
+244 0xFC00 //TX_THR_SN_EST_2
245 0xF200 //TX_THR_SN_EST_3
246 0xFA00 //TX_THR_SN_EST_4
247 0xFA00 //TX_THR_SN_EST_5
@@ -29631,7 +29631,7 @@
250 0x0100 //TX_DELTA_THR_SN_EST_0
251 0x0100 //TX_DELTA_THR_SN_EST_1
252 0x0200 //TX_DELTA_THR_SN_EST_2
-253 0x0100 //TX_DELTA_THR_SN_EST_3
+253 0x0400 //TX_DELTA_THR_SN_EST_3
254 0x0100 //TX_DELTA_THR_SN_EST_4
255 0x0200 //TX_DELTA_THR_SN_EST_5
256 0x0200 //TX_DELTA_THR_SN_EST_6
@@ -29668,20 +29668,20 @@
287 0x0014 //TX_NS_LVL_CTRL_6
288 0x0011 //TX_NS_LVL_CTRL_7
289 0x000F //TX_MIN_GAIN_S_0
-290 0x0010 //TX_MIN_GAIN_S_1
+290 0x0020 //TX_MIN_GAIN_S_1
291 0x0010 //TX_MIN_GAIN_S_2
292 0x0010 //TX_MIN_GAIN_S_3
293 0x0010 //TX_MIN_GAIN_S_4
294 0x0010 //TX_MIN_GAIN_S_5
295 0x0010 //TX_MIN_GAIN_S_6
296 0x000F //TX_MIN_GAIN_S_7
-297 0x6000 //TX_NMOS_SUP
+297 0x2000 //TX_NMOS_SUP
298 0x0000 //TX_NS_MAX_PRI_SNR_TH
299 0x0000 //TX_NMOS_SUP_MENSA
-300 0x7FFF //TX_SNRI_SUP_0
+300 0x4000 //TX_SNRI_SUP_0
301 0x2000 //TX_SNRI_SUP_1
302 0x2000 //TX_SNRI_SUP_2
-303 0x4000 //TX_SNRI_SUP_3
+303 0x2000 //TX_SNRI_SUP_3
304 0x4000 //TX_SNRI_SUP_4
305 0x50C0 //TX_SNRI_SUP_5
306 0x2000 //TX_SNRI_SUP_6
@@ -29695,15 +29695,15 @@
314 0x5000 //TX_A_POST_FILT_S_0
315 0x4C00 //TX_A_POST_FILT_S_1
316 0x4000 //TX_A_POST_FILT_S_2
-317 0x2000 //TX_A_POST_FILT_S_3
+317 0x6000 //TX_A_POST_FILT_S_3
318 0x4000 //TX_A_POST_FILT_S_4
319 0x5000 //TX_A_POST_FILT_S_5
320 0x6000 //TX_A_POST_FILT_S_6
321 0x7000 //TX_A_POST_FILT_S_7
322 0x2000 //TX_B_POST_FILT_0
-323 0x2000 //TX_B_POST_FILT_1
+323 0x4000 //TX_B_POST_FILT_1
324 0x2000 //TX_B_POST_FILT_2
-325 0x2000 //TX_B_POST_FILT_3
+325 0x7FFF //TX_B_POST_FILT_3
326 0x4000 //TX_B_POST_FILT_4
327 0x1000 //TX_B_POST_FILT_5
328 0x1000 //TX_B_POST_FILT_6
@@ -29718,9 +29718,9 @@
337 0x7FFF //TX_B_LESSCUT_RTO_S_7
338 0x7C00 //TX_LAMBDA_PFILT
339 0x7C00 //TX_LAMBDA_PFILT_S_0
-340 0x7C00 //TX_LAMBDA_PFILT_S_1
-341 0x7A00 //TX_LAMBDA_PFILT_S_2
-342 0x7800 //TX_LAMBDA_PFILT_S_3
+340 0x7E00 //TX_LAMBDA_PFILT_S_1
+341 0x7E00 //TX_LAMBDA_PFILT_S_2
+342 0x7D00 //TX_LAMBDA_PFILT_S_3
343 0x7C00 //TX_LAMBDA_PFILT_S_4
344 0x7C00 //TX_LAMBDA_PFILT_S_5
345 0x7C00 //TX_LAMBDA_PFILT_S_6
@@ -29745,12 +29745,12 @@
364 0x0000 //TX_K_APT
365 0x0001 //TX_NOISEDET
366 0x0064 //TX_NDETCT
-367 0x0032 //TX_NOISE_TH_0
+367 0x001E //TX_NOISE_TH_0
368 0x7FFF //TX_NOISE_TH_0_2
369 0x7FFF //TX_NOISE_TH_0_3
370 0x0320 //TX_NOISE_TH_1
-371 0x0230 //TX_NOISE_TH_2
-372 0x2CEC //TX_NOISE_TH_3
+371 0x0384 //TX_NOISE_TH_2
+372 0x2904 //TX_NOISE_TH_3
373 0x3E80 //TX_NOISE_TH_4
374 0x7FFF //TX_NOISE_TH_5
375 0x7FFF //TX_NOISE_TH_5_2
@@ -29784,7 +29784,7 @@
403 0x4000 //TX_POST_MASK_SUP
404 0x7FFF //TX_POST_MASK_ADJUST
405 0x00C8 //TX_NS_ENOISE_MIC0_TH
-406 0x0033 //TX_MINENOISE_MIC0_TH
+406 0x001E //TX_MINENOISE_MIC0_TH
407 0x012C //TX_MINENOISE_MIC0_S_TH
408 0x7FFF //TX_MIN_G_CTRL_SSNS
409 0x0000 //TX_METAL_RTO_THR
@@ -30322,8 +30322,8 @@
941 0x0008 //TX_MIC1MUTE_CVG_TIME
942 0x0008 //TX_MIC1MUTE_RELEASE_TIME
943 0x0100 //TX_AMS_RESRV_01
-944 0xE4A8 //TX_AMS_RESRV_02
-945 0x7EF4 //TX_AMS_RESRV_03
+944 0xE0C0 //TX_AMS_RESRV_02
+945 0x2710 //TX_AMS_RESRV_03
946 0x0000 //TX_AMS_RESRV_04
947 0x0000 //TX_AMS_RESRV_05
948 0x0000 //TX_AMS_RESRV_06
@@ -69430,7 +69430,7 @@
#TX
0 0x0001 //TX_OPERATION_MODE_0
1 0x0001 //TX_OPERATION_MODE_1
-2 0x0073 //TX_PATCH_REG
+2 0x00F3 //TX_PATCH_REG
3 0x6F7D //TX_SENDFUNC_MODE_0
4 0x0000 //TX_SENDFUNC_MODE_1
5 0x0002 //TX_NUM_MIC
@@ -69625,10 +69625,10 @@
194 0x0000 //TX_NORMENERTH
195 0x0000 //TX_NORMENERHIGHTH
196 0x0000 //TX_NORMENERHIGHTHL
-197 0x7FF0 //TX_DTD_THR1_0
-198 0x7FF0 //TX_DTD_THR1_1
+197 0x7333 //TX_DTD_THR1_0
+198 0x7333 //TX_DTD_THR1_1
199 0x7FF0 //TX_DTD_THR1_2
-200 0x6D60 //TX_DTD_THR1_3
+200 0x7FF0 //TX_DTD_THR1_3
201 0x7FF0 //TX_DTD_THR1_4
202 0x7FF0 //TX_DTD_THR1_5
203 0x7FF0 //TX_DTD_THR1_6
@@ -69672,7 +69672,7 @@
241 0x0000 //TX_DT_RESRV_9
242 0xF800 //TX_THR_SN_EST_0
243 0xFA00 //TX_THR_SN_EST_1
-244 0xFA00 //TX_THR_SN_EST_2
+244 0xFC00 //TX_THR_SN_EST_2
245 0xF200 //TX_THR_SN_EST_3
246 0xFA00 //TX_THR_SN_EST_4
247 0xFA00 //TX_THR_SN_EST_5
@@ -69681,7 +69681,7 @@
250 0x0100 //TX_DELTA_THR_SN_EST_0
251 0x0100 //TX_DELTA_THR_SN_EST_1
252 0x0200 //TX_DELTA_THR_SN_EST_2
-253 0x0100 //TX_DELTA_THR_SN_EST_3
+253 0x0400 //TX_DELTA_THR_SN_EST_3
254 0x0100 //TX_DELTA_THR_SN_EST_4
255 0x0200 //TX_DELTA_THR_SN_EST_5
256 0x0200 //TX_DELTA_THR_SN_EST_6
@@ -69718,20 +69718,20 @@
287 0x0014 //TX_NS_LVL_CTRL_6
288 0x0011 //TX_NS_LVL_CTRL_7
289 0x000F //TX_MIN_GAIN_S_0
-290 0x0010 //TX_MIN_GAIN_S_1
+290 0x0020 //TX_MIN_GAIN_S_1
291 0x0010 //TX_MIN_GAIN_S_2
292 0x0010 //TX_MIN_GAIN_S_3
293 0x0010 //TX_MIN_GAIN_S_4
294 0x0010 //TX_MIN_GAIN_S_5
295 0x0010 //TX_MIN_GAIN_S_6
296 0x000F //TX_MIN_GAIN_S_7
-297 0x6000 //TX_NMOS_SUP
+297 0x2000 //TX_NMOS_SUP
298 0x0000 //TX_NS_MAX_PRI_SNR_TH
299 0x0000 //TX_NMOS_SUP_MENSA
-300 0x7FFF //TX_SNRI_SUP_0
+300 0x4000 //TX_SNRI_SUP_0
301 0x2000 //TX_SNRI_SUP_1
302 0x2000 //TX_SNRI_SUP_2
-303 0x4000 //TX_SNRI_SUP_3
+303 0x2000 //TX_SNRI_SUP_3
304 0x4000 //TX_SNRI_SUP_4
305 0x50C0 //TX_SNRI_SUP_5
306 0x2000 //TX_SNRI_SUP_6
@@ -69745,15 +69745,15 @@
314 0x5000 //TX_A_POST_FILT_S_0
315 0x4C00 //TX_A_POST_FILT_S_1
316 0x4000 //TX_A_POST_FILT_S_2
-317 0x2000 //TX_A_POST_FILT_S_3
+317 0x6000 //TX_A_POST_FILT_S_3
318 0x4000 //TX_A_POST_FILT_S_4
319 0x5000 //TX_A_POST_FILT_S_5
320 0x6000 //TX_A_POST_FILT_S_6
321 0x7000 //TX_A_POST_FILT_S_7
322 0x2000 //TX_B_POST_FILT_0
-323 0x2000 //TX_B_POST_FILT_1
+323 0x4000 //TX_B_POST_FILT_1
324 0x2000 //TX_B_POST_FILT_2
-325 0x2000 //TX_B_POST_FILT_3
+325 0x7FFF //TX_B_POST_FILT_3
326 0x4000 //TX_B_POST_FILT_4
327 0x1000 //TX_B_POST_FILT_5
328 0x1000 //TX_B_POST_FILT_6
@@ -69768,9 +69768,9 @@
337 0x7FFF //TX_B_LESSCUT_RTO_S_7
338 0x7C00 //TX_LAMBDA_PFILT
339 0x7C00 //TX_LAMBDA_PFILT_S_0
-340 0x7C00 //TX_LAMBDA_PFILT_S_1
-341 0x7A00 //TX_LAMBDA_PFILT_S_2
-342 0x7800 //TX_LAMBDA_PFILT_S_3
+340 0x7E00 //TX_LAMBDA_PFILT_S_1
+341 0x7E00 //TX_LAMBDA_PFILT_S_2
+342 0x7D00 //TX_LAMBDA_PFILT_S_3
343 0x7C00 //TX_LAMBDA_PFILT_S_4
344 0x7C00 //TX_LAMBDA_PFILT_S_5
345 0x7C00 //TX_LAMBDA_PFILT_S_6
@@ -69795,12 +69795,12 @@
364 0x0000 //TX_K_APT
365 0x0001 //TX_NOISEDET
366 0x0064 //TX_NDETCT
-367 0x0032 //TX_NOISE_TH_0
+367 0x001E //TX_NOISE_TH_0
368 0x7FFF //TX_NOISE_TH_0_2
369 0x7FFF //TX_NOISE_TH_0_3
370 0x0320 //TX_NOISE_TH_1
-371 0x0230 //TX_NOISE_TH_2
-372 0x2CEC //TX_NOISE_TH_3
+371 0x0384 //TX_NOISE_TH_2
+372 0x2904 //TX_NOISE_TH_3
373 0x3E80 //TX_NOISE_TH_4
374 0x7FFF //TX_NOISE_TH_5
375 0x7FFF //TX_NOISE_TH_5_2
@@ -69834,7 +69834,7 @@
403 0x4000 //TX_POST_MASK_SUP
404 0x7FFF //TX_POST_MASK_ADJUST
405 0x00C8 //TX_NS_ENOISE_MIC0_TH
-406 0x0033 //TX_MINENOISE_MIC0_TH
+406 0x001E //TX_MINENOISE_MIC0_TH
407 0x012C //TX_MINENOISE_MIC0_S_TH
408 0x7FFF //TX_MIN_G_CTRL_SSNS
409 0x0000 //TX_METAL_RTO_THR
@@ -70372,8 +70372,8 @@
941 0x0008 //TX_MIC1MUTE_CVG_TIME
942 0x0008 //TX_MIC1MUTE_RELEASE_TIME
943 0x0100 //TX_AMS_RESRV_01
-944 0xE4A8 //TX_AMS_RESRV_02
-945 0x7EF4 //TX_AMS_RESRV_03
+944 0xE0C0 //TX_AMS_RESRV_02
+945 0x2710 //TX_AMS_RESRV_03
946 0x0000 //TX_AMS_RESRV_04
947 0x0000 //TX_AMS_RESRV_05
948 0x0000 //TX_AMS_RESRV_06
diff --git a/bluetooth/bluetooth_power_limits_Lynx.csv b/bluetooth/bluetooth_power_limits_Lynx.csv
index 4dfb75f..c65ffad 100644
--- a/bluetooth/bluetooth_power_limits_Lynx.csv
+++ b/bluetooth/bluetooth_power_limits_Lynx.csv
@@ -1,34 +1,36 @@
-Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
-off,off,off,off,off,on,68,66,28,70,66,28,68,66,28,70,66,28
-off,off,off,off,on,on,68,66,28,70,66,28,68,66,28,70,66,28
-off,off,off,on,off,on,68,66,28,70,66,28,68,66,28,70,66,28
-off,off,off,on,on,on,54,66,28,54,66,28,54,66,28,54,66,28
-off,off,on,off,off,on,68,66,28,70,66,28,68,66,28,70,66,28
-off,off,on,off,on,on,54,54,28,54,54,28,54,54,28,54,54,28
-off,off,on,on,off,on,68,66,28,70,66,28,68,66,28,70,66,28
-off,off,on,on,on,on,54,54,28,54,54,28,54,54,28,54,54,28
-off,on,off,off,off,on,68,66,28,70,66,28,68,66,28,70,66,28
-off,on,off,off,on,on,68,66,28,70,66,28,68,66,28,70,66,28
-off,on,off,on,off,on,68,66,28,70,66,28,68,66,28,70,66,28
-off,on,off,on,on,on,54,54,28,54,54,28,54,54,28,54,54,28
-off,on,on,off,off,on,68,66,28,70,66,28,68,66,28,70,66,28
-off,on,on,off,on,on,54,54,28,54,54,28,54,54,28,54,54,28
-off,on,on,on,off,on,68,66,28,70,66,28,68,66,28,70,66,28
-off,on,on,on,on,on,54,54,28,54,54,28,54,54,28,54,54,28
-on,off,off,off,off,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,off,off,off,on,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,off,off,on,off,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,off,off,on,on,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,off,on,off,off,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,off,on,off,on,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,off,on,on,off,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,off,on,on,on,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,on,off,off,off,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,on,off,off,on,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,on,off,on,off,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,on,off,on,on,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,on,on,off,off,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,on,on,off,on,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,on,on,on,off,any,42,42,28,42,42,28,42,42,28,42,42,28
-on,on,on,on,on,any,42,42,28,42,42,28,42,42,28,42,42,28
-off,any,any,any,any,off,68,66,28,70,66,28,68,66,28,70,66,28
+Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
+off,off,off,off,off,on,68,66,28,70,66,28,68,66,28,70,66,28
+off,off,off,off,on,on,68,66,28,70,66,28,68,66,28,70,66,28
+off,off,off,on,off,on,68,66,28,70,66,28,68,66,28,70,66,28
+off,off,off,on,on,on,54,66,28,54,66,28,54,66,28,54,66,28
+off,off,on,off,off,on,68,66,28,70,66,28,68,66,28,70,66,28
+off,off,on,off,on,on,54,54,28,54,54,28,54,54,28,54,54,28
+off,off,on,on,off,on,68,66,28,70,66,28,68,66,28,70,66,28
+off,off,on,on,on,on,54,54,28,54,54,28,54,54,28,54,54,28
+off,on,off,off,off,on,68,66,28,70,66,28,68,66,28,70,66,28
+off,on,off,off,on,on,68,66,28,70,66,28,68,66,28,70,66,28
+off,on,off,on,off,on,68,66,28,70,66,28,68,66,28,70,66,28
+off,on,off,on,on,on,54,54,28,54,54,28,54,54,28,54,54,28
+off,on,on,off,off,on,68,66,28,70,66,28,68,66,28,70,66,28
+off,on,on,off,on,on,54,54,28,54,54,28,54,54,28,54,54,28
+off,on,on,on,off,on,68,66,28,70,66,28,68,66,28,70,66,28
+off,on,on,on,on,on,54,54,28,54,54,28,54,54,28,54,54,28
+on,off,off,off,off,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,off,off,off,on,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,off,off,on,off,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,off,off,on,on,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,off,on,off,off,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,off,on,off,on,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,off,on,on,off,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,off,on,on,on,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,on,off,off,off,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,on,off,off,on,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,on,off,on,off,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,on,off,on,on,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,on,on,off,off,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,on,on,off,on,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,on,on,on,off,any,42,42,28,42,42,28,42,42,28,42,42,28
+on,on,on,on,on,any,42,42,28,42,42,28,42,42,28,42,42,28
+off,off,any,off,any,off,68,66,28,70,66,28,68,66,28,70,66,28
+off,on,any,off,any,off,54,54,28,54,54,28,54,54,28,54,54,28
+off,off,any,on,any,off,54,54,28,54,54,28,54,54,28,54,54,28
diff --git a/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_CA.csv b/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_CA.csv
index 81b050e..579c955 100644
--- a/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_CA.csv
+++ b/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_CA.csv
@@ -1,34 +1,36 @@
-Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
-off,off,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,on,on,on,54,66,54,54,66,54,54,66,54,54,66,54
-off,off,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,off,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-on,off,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-off,any,any,any,any,off,74,66,74,74,66,74,74,66,74,74,66,74
+Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
+off,off,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,on,on,on,54,66,54,54,66,54,54,66,54,54,66,54
+off,off,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,off,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+on,off,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+off,off,any,off,any,off,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,any,off,any,off,54,54,54,54,54,54,54,54,54,54,54,54
+off,off,any,on,any,off,54,54,54,54,54,54,54,54,54,54,54,54
diff --git a/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_EU.csv b/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_EU.csv
index 40f70fd..0545553 100644
--- a/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_EU.csv
+++ b/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_EU.csv
@@ -1,34 +1,36 @@
-Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
-off,off,off,off,off,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,off,off,off,on,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,off,off,on,off,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,off,off,on,on,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,off,on,off,off,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,off,on,off,on,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,off,on,on,off,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,off,on,on,on,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,on,off,off,off,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,on,off,off,on,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,on,off,on,off,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,on,off,on,on,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,on,on,off,off,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,on,on,off,on,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,on,on,on,off,on,74,66,28,70,66,28,74,66,28,70,66,28
-off,on,on,on,on,on,74,66,28,70,66,28,74,66,28,70,66,28
-on,off,off,off,off,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,off,off,off,on,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,off,off,on,off,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,off,off,on,on,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,off,on,off,off,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,off,on,off,on,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,off,on,on,off,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,off,on,on,on,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,on,off,off,off,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,on,off,off,on,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,on,off,on,off,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,on,off,on,on,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,on,on,off,off,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,on,on,off,on,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,on,on,on,off,any,74,66,28,70,66,28,74,66,28,70,66,28
-on,on,on,on,on,any,74,66,28,70,66,28,74,66,28,70,66,28
-off,any,any,any,any,off,74,66,28,70,66,28,74,66,28,70,66,28
+Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
+off,off,off,off,off,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,off,off,off,on,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,off,off,on,off,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,off,off,on,on,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,off,on,off,off,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,off,on,off,on,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,off,on,on,off,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,off,on,on,on,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,on,off,off,off,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,on,off,off,on,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,on,off,on,off,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,on,off,on,on,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,on,on,off,off,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,on,on,off,on,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,on,on,on,off,on,74,66,28,70,66,28,74,66,28,70,66,28
+off,on,on,on,on,on,74,66,28,70,66,28,74,66,28,70,66,28
+on,off,off,off,off,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,off,off,off,on,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,off,off,on,off,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,off,off,on,on,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,off,on,off,off,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,off,on,off,on,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,off,on,on,off,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,off,on,on,on,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,on,off,off,off,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,on,off,off,on,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,on,off,on,off,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,on,off,on,on,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,on,on,off,off,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,on,on,off,on,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,on,on,on,off,any,74,66,28,70,66,28,74,66,28,70,66,28
+on,on,on,on,on,any,74,66,28,70,66,28,74,66,28,70,66,28
+off,off,any,off,any,off,74,66,28,70,66,28,74,66,28,70,66,28
+off,on,any,off,any,off,74,66,28,70,66,28,74,66,28,70,66,28
+off,off,any,on,any,off,74,66,28,70,66,28,74,66,28,70,66,28
diff --git a/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_JP.csv b/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_JP.csv
index 3ec5bc3..1f725dc 100644
--- a/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_JP.csv
+++ b/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_JP.csv
@@ -1,34 +1,36 @@
-Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
-off,off,off,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,off,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,off,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,off,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,on,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,on,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,on,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,on,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,off,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,off,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,off,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,off,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,on,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,on,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,on,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,on,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,off,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,off,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,off,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,off,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,on,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,on,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,on,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,on,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,off,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,off,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,off,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,off,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,on,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,on,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,on,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,on,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-off,any,any,any,any,off,68,66,38,72,66,38,68,66,38,72,66,38
+Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
+off,off,off,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,off,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,off,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,off,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,on,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,on,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,on,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,on,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,off,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,off,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,off,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,off,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,on,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,on,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,on,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,on,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,off,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,off,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,off,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,off,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,on,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,on,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,on,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,on,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,off,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,off,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,off,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,off,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,on,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,on,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,on,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,on,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,any,off,any,off,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,any,off,any,off,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,any,on,any,off,68,66,38,72,66,38,68,66,38,72,66,38
diff --git a/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_US.csv b/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_US.csv
index 81b050e..579c955 100644
--- a/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_US.csv
+++ b/bluetooth/bluetooth_power_limits_Lynx_G0DZQ_US.csv
@@ -1,34 +1,36 @@
-Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
-off,off,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,on,on,on,54,66,54,54,66,54,54,66,54,54,66,54
-off,off,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,off,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-on,off,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-off,any,any,any,any,off,74,66,74,74,66,74,74,66,74,74,66,74
+Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
+off,off,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,on,on,on,54,66,54,54,66,54,54,66,54,54,66,54
+off,off,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,off,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+on,off,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+off,off,any,off,any,off,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,any,off,any,off,54,54,54,54,54,54,54,54,54,54,54,54
+off,off,any,on,any,off,54,54,54,54,54,54,54,54,54,54,54,54
diff --git a/bluetooth/bluetooth_power_limits_Lynx_G82U8_JP.csv b/bluetooth/bluetooth_power_limits_Lynx_G82U8_JP.csv
index 3ec5bc3..1f725dc 100644
--- a/bluetooth/bluetooth_power_limits_Lynx_G82U8_JP.csv
+++ b/bluetooth/bluetooth_power_limits_Lynx_G82U8_JP.csv
@@ -1,34 +1,36 @@
-Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
-off,off,off,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,off,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,off,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,off,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,on,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,on,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,on,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,off,on,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,off,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,off,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,off,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,off,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,on,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,on,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,on,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
-off,on,on,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,off,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,off,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,off,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,off,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,on,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,on,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,on,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,off,on,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,off,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,off,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,off,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,off,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,on,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,on,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,on,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
-on,on,on,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
-off,any,any,any,any,off,68,66,38,72,66,38,68,66,38,72,66,38
+Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
+off,off,off,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,off,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,off,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,off,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,on,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,on,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,on,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,on,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,off,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,off,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,off,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,off,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,on,off,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,on,off,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,on,on,off,on,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,on,on,on,on,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,off,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,off,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,off,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,off,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,on,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,on,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,on,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,off,on,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,off,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,off,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,off,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,off,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,on,off,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,on,off,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,on,on,off,any,68,66,38,72,66,38,68,66,38,72,66,38
+on,on,on,on,on,any,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,any,off,any,off,68,66,38,72,66,38,68,66,38,72,66,38
+off,on,any,off,any,off,68,66,38,72,66,38,68,66,38,72,66,38
+off,off,any,on,any,off,68,66,38,72,66,38,68,66,38,72,66,38
diff --git a/bluetooth/bluetooth_power_limits_Lynx_GHL1X_EU.csv b/bluetooth/bluetooth_power_limits_Lynx_GHL1X_EU.csv
index 54928f5..9f7153a 100644
--- a/bluetooth/bluetooth_power_limits_Lynx_GHL1X_EU.csv
+++ b/bluetooth/bluetooth_power_limits_Lynx_GHL1X_EU.csv
@@ -1,34 +1,36 @@
-Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
-off,off,off,off,off,on,74,66,34,70,66,28,74,66,34,70,66,28
-off,off,off,off,on,on,74,66,34,70,66,28,74,66,34,70,66,28
-off,off,off,on,off,on,74,66,34,70,66,28,74,66,34,70,66,28
-off,off,off,on,on,on,62,62,34,62,62,28,62,62,34,62,62,28
-off,off,on,off,off,on,74,66,34,70,66,28,74,66,34,70,66,28
-off,off,on,off,on,on,62,62,34,62,62,28,62,62,34,62,62,28
-off,off,on,on,off,on,70,66,34,70,66,28,70,66,34,70,66,28
-off,off,on,on,on,on,62,62,34,62,62,28,62,62,34,62,62,28
-off,on,off,off,off,on,70,66,34,70,66,28,70,66,34,70,66,28
-off,on,off,off,on,on,70,66,34,70,66,28,70,66,34,70,66,28
-off,on,off,on,off,on,70,66,34,70,66,28,70,66,34,70,66,28
-off,on,off,on,on,on,62,62,34,62,62,28,62,62,34,62,62,28
-off,on,on,off,off,on,70,66,34,70,66,28,70,66,34,70,66,28
-off,on,on,off,on,on,62,62,34,62,62,28,62,62,34,62,62,28
-off,on,on,on,off,on,70,66,34,70,66,28,70,66,34,70,66,28
-off,on,on,on,on,on,62,62,34,62,62,28,62,62,34,62,62,28
-on,off,off,off,off,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,off,off,off,on,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,off,off,on,off,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,off,off,on,on,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,off,on,off,off,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,off,on,off,on,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,off,on,on,off,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,off,on,on,on,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,on,off,off,off,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,on,off,off,on,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,on,off,on,off,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,on,off,on,on,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,on,on,off,off,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,on,on,off,on,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,on,on,on,off,any,62,62,34,62,62,28,62,62,34,62,62,28
-on,on,on,on,on,any,62,62,34,62,62,28,62,62,34,62,62,28
-off,any,any,any,any,off,74,66,34,70,66,28,74,66,34,70,66,28
+Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
+off,off,off,off,off,on,74,66,34,70,66,28,74,66,34,70,66,28
+off,off,off,off,on,on,74,66,34,70,66,28,74,66,34,70,66,28
+off,off,off,on,off,on,74,66,34,70,66,28,74,66,34,70,66,28
+off,off,off,on,on,on,62,62,34,62,62,28,62,62,34,62,62,28
+off,off,on,off,off,on,74,66,34,70,66,28,74,66,34,70,66,28
+off,off,on,off,on,on,62,62,34,62,62,28,62,62,34,62,62,28
+off,off,on,on,off,on,70,66,34,70,66,28,70,66,34,70,66,28
+off,off,on,on,on,on,62,62,34,62,62,28,62,62,34,62,62,28
+off,on,off,off,off,on,70,66,34,70,66,28,70,66,34,70,66,28
+off,on,off,off,on,on,70,66,34,70,66,28,70,66,34,70,66,28
+off,on,off,on,off,on,70,66,34,70,66,28,70,66,34,70,66,28
+off,on,off,on,on,on,62,62,34,62,62,28,62,62,34,62,62,28
+off,on,on,off,off,on,70,66,34,70,66,28,70,66,34,70,66,28
+off,on,on,off,on,on,62,62,34,62,62,28,62,62,34,62,62,28
+off,on,on,on,off,on,70,66,34,70,66,28,70,66,34,70,66,28
+off,on,on,on,on,on,62,62,34,62,62,28,62,62,34,62,62,28
+on,off,off,off,off,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,off,off,off,on,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,off,off,on,off,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,off,off,on,on,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,off,on,off,off,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,off,on,off,on,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,off,on,on,off,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,off,on,on,on,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,on,off,off,off,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,on,off,off,on,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,on,off,on,off,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,on,off,on,on,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,on,on,off,off,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,on,on,off,on,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,on,on,on,off,any,62,62,34,62,62,28,62,62,34,62,62,28
+on,on,on,on,on,any,62,62,34,62,62,28,62,62,34,62,62,28
+off,off,any,off,any,off,74,66,34,70,66,28,74,66,34,70,66,28
+off,on,any,off,any,off,62,62,34,62,62,28,62,62,34,62,62,28
+off,off,any,on,any,off,62,62,34,62,62,28,62,62,34,62,62,28
diff --git a/bluetooth/bluetooth_power_limits_Lynx_GWKK3_CA.csv b/bluetooth/bluetooth_power_limits_Lynx_GWKK3_CA.csv
index 81b050e..579c955 100644
--- a/bluetooth/bluetooth_power_limits_Lynx_GWKK3_CA.csv
+++ b/bluetooth/bluetooth_power_limits_Lynx_GWKK3_CA.csv
@@ -1,34 +1,36 @@
-Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
-off,off,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,on,on,on,54,66,54,54,66,54,54,66,54,54,66,54
-off,off,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,off,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-on,off,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-off,any,any,any,any,off,74,66,74,74,66,74,74,66,74,74,66,74
+Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
+off,off,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,on,on,on,54,66,54,54,66,54,54,66,54,54,66,54
+off,off,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,off,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+on,off,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+off,off,any,off,any,off,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,any,off,any,off,54,54,54,54,54,54,54,54,54,54,54,54
+off,off,any,on,any,off,54,54,54,54,54,54,54,54,54,54,54,54
diff --git a/bluetooth/bluetooth_power_limits_Lynx_GWKK3_US.csv b/bluetooth/bluetooth_power_limits_Lynx_GWKK3_US.csv
index 81b050e..579c955 100644
--- a/bluetooth/bluetooth_power_limits_Lynx_GWKK3_US.csv
+++ b/bluetooth/bluetooth_power_limits_Lynx_GWKK3_US.csv
@@ -1,34 +1,36 @@
-Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
-off,off,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,off,on,on,on,54,66,54,54,66,54,54,66,54,54,66,54
-off,off,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,off,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,off,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,off,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-off,on,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
-off,on,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
-on,off,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,off,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
-on,on,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
-off,any,any,any,any,off,74,66,74,74,66,74,74,66,74,74,66,74
+Head,BTHotspot,WIFI5Ghz,HotspotVoice,Cell,IMU,BDR_Single_Chain_0,EDR_Single_Chain_0,BLE_Single_Chain_0,BDR_Single_Chain_1,EDR_Single_Chain_1,BLE_Single_Chain_1,BDR_Dual_Chain_0,EDR_Dual_Chain_0,BLE_Dual_Chain_0,BDR_Dual_Chain_1,EDR_Dual_Chain_1,BLE_Dual_Chain_1
+off,off,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,off,on,on,on,54,66,54,54,66,54,54,66,54,54,66,54
+off,off,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,off,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,off,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,off,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,off,on,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,off,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,on,off,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,on,off,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+off,on,on,on,off,on,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,on,on,on,on,54,54,54,54,54,54,54,54,54,54,54,54
+on,off,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,off,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,off,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,off,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,off,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,on,off,any,42,42,42,42,42,42,42,42,42,42,42,42
+on,on,on,on,on,any,42,42,42,42,42,42,42,42,42,42,42,42
+off,off,any,off,any,off,74,66,74,74,66,74,74,66,74,74,66,74
+off,on,any,off,any,off,54,54,54,54,54,54,54,54,54,54,54,54
+off,off,any,on,any,off,54,54,54,54,54,54,54,54,54,54,54,54
diff --git a/bluetooth/device_framework_matrix_product.xml b/bluetooth/device_framework_matrix_product.xml
new file mode 100644
index 0000000..0c013a6
--- /dev/null
+++ b/bluetooth/device_framework_matrix_product.xml
@@ -0,0 +1,18 @@
+<compatibility-matrix version="1.0" type="framework" level="7">
+ <hal format="hidl">
+ <name>hardware.google.bluetooth.bt_channel_avoidance</name>
+ <version>1.0</version>
+ <interface>
+ <name>IBTChannelAvoidance</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl">
+ <name>hardware.google.bluetooth.sar</name>
+ <version>1.1</version>
+ <interface>
+ <name>IBluetoothSar</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+</compatibility-matrix>
diff --git a/bluetooth/le_audio_codec_capabilities.xml b/bluetooth/le_audio_codec_capabilities.xml
index cfb915b..d4404a8 100644
--- a/bluetooth/le_audio_codec_capabilities.xml
+++ b/bluetooth/le_audio_codec_capabilities.xml
@@ -32,9 +32,6 @@
<scenario encode="OneChanMono_24_2" decode="invalid"/>
<scenario encode="TwoChanStereo_24_2" decode="invalid"/>
<scenario encode="OneChanStereo_24_2" decode="invalid"/>
- <scenario encode="OneChanMono_32_2" decode="invalid"/>
- <scenario encode="TwoChanStereo_32_2" decode="invalid"/>
- <scenario encode="OneChanStereo_32_2" decode="invalid"/>
<scenario encode="OneChanMono_48_4" decode="invalid"/>
<scenario encode="TwoChanStereo_48_4" decode="invalid"/>
<scenario encode="OneChanStereo_48_4" decode="invalid"/>
@@ -47,10 +44,11 @@
<scenario encode="OneChanStereo_16_2" decode="OneChanMono_16_2"/>
<scenario encode="TwoChanStereo_16_2" decode="OneChanMono_16_2"/>
<scenario encode="OneChanMono_16_2" decode="OneChanMono_16_2"/>
- <scenario encode="OneChanStereo_32_2" decode="OneChanStereo_32_2"/>
- <scenario encode="OneChanStereo_32_2" decode="OneChanMono_32_2"/>
<scenario encode="TwoChanStereo_32_2" decode="OneChanMono_32_2"/>
<scenario encode="OneChanMono_32_2" decode="OneChanMono_32_2"/>
+ <!-- broadcast -->
+ <scenario encode="invalid" decode="invalid" broadcast="BcastStereo_24_2"/>
+ <scenario encode="invalid" decode="invalid" broadcast="BcastStereo_16_2"/>
</scenarioList>
<configurationList>
<configuration name="OneChanMono_16_1" codecConfiguration="LC3_16k_1" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
@@ -64,10 +62,11 @@
<configuration name="OneChanStereo_24_2" codecConfiguration="LC3_24k_2" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
<configuration name="OneChanMono_32_2" codecConfiguration="LC3_32k_2" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
<configuration name="TwoChanStereo_32_2" codecConfiguration="LC3_32k_2" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
- <configuration name="OneChanStereo_32_2" codecConfiguration="LC3_32k_2" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
<configuration name="OneChanMono_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
<configuration name="TwoChanStereo_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
<configuration name="OneChanStereo_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
+ <configuration name="BcastStereo_24_2" codecConfiguration="LC3_24k_2" strategyConfiguration="BROADCAST_STEREO"/>
+ <configuration name="BcastStereo_16_2" codecConfiguration="LC3_16k_2" strategyConfiguration="BROADCAST_STEREO"/>
</configurationList>
<codecConfigurationList>
<codecConfiguration name="LC3_16k_1" codec="LC3" samplingFrequency="16000" frameDurationUs="7500" octetsPerCodecFrame="30"/>
@@ -80,5 +79,6 @@
<strategyConfiguration name="STEREO_ONE_CIS_PER_DEVICE" audioLocation="STEREO" connectedDevice="2" channelCount="1"/>
<strategyConfiguration name="STEREO_TWO_CISES_PER_DEVICE" audioLocation="STEREO" connectedDevice="1" channelCount="2"/>
<strategyConfiguration name="MONO_ONE_CIS_PER_DEVICE" audioLocation="MONO" connectedDevice="1" channelCount="1"/>
+ <strategyConfiguration name="BROADCAST_STEREO" audioLocation="STEREO" connectedDevice="0" channelCount="2"/>
</strategyConfigurationList>
</leAudioOffloadSetting>
diff --git a/bluetooth/qti_default.mk b/bluetooth/qti_default.mk
index d5717b2..5158663 100644
--- a/bluetooth/qti_default.mk
+++ b/bluetooth/qti_default.mk
@@ -24,10 +24,15 @@ PRODUCT_PRODUCT_PROPERTIES += \
# Bluetooth LE Audio
PRODUCT_PRODUCT_PROPERTIES += \
ro.bluetooth.leaudio_switcher.supported=true \
- ro.bluetooth.leaudio_broadcast_switcher.supported=true \
ro.bluetooth.leaudio_offload.supported=true \
persist.bluetooth.leaudio_offload.disabled=false \
ro.vendor.audio_hal.ble_use_stream_id=true \
+ bluetooth.profile.bap.unicast.client.enabled?=true \
+ bluetooth.profile.csip.set_coordinator.enabled?=true \
+ bluetooth.profile.hap.client.enabled?=true \
+ bluetooth.profile.mcp.server.enabled?=true \
+ bluetooth.profile.ccp.server.enabled?=true \
+ bluetooth.profile.vcp.controller.enabled?=true \
# Bluetooth LE Audio CIS handover to SCO
# Set the property only if the controller doesn't support CIS and SCO
@@ -42,6 +47,7 @@ PRODUCT_COPY_FILES += \
# Bluetooth HAL and Pixel extension
DEVICE_MANIFEST_FILE += \
device/google/lynx/bluetooth/manifest_bluetooth.xml
+DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/lynx/bluetooth/device_framework_matrix_product.xml
BOARD_SEPOLICY_DIRS += device/google/lynx-sepolicy/bluetooth
@@ -71,7 +77,9 @@ else ifeq ($(TARGET_USE_QTI_BT_SAR),true)
endif
PRODUCT_PACKAGES += \
android.hardware.bluetooth@1.0-service-qti \
- hardware.google.bluetooth.bt_channel_avoidance@1.0-impl
+ hardware.google.bluetooth.bt_channel_avoidance@1.0-impl \
+ android.hardware.bluetooth.prebuilt.xml \
+ android.hardware.bluetooth_le.prebuilt.xml
# Bluetooth SAR Tx power caps
PRODUCT_COPY_FILES += \
diff --git a/conf/init.lynx.rc b/conf/init.lynx.rc
index c5fbb19..c116f92 100644
--- a/conf/init.lynx.rc
+++ b/conf/init.lynx.rc
@@ -16,7 +16,7 @@ on early-boot
wait_for_prop vendor.common.modules.ready 1
start insmod_sh_lynx
-service insmod_sh_lynx /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.lynx.cfg
+service insmod_sh_lynx /vendor/bin/insmod.sh /vendor/etc/init.insmod.lynx.cfg
class main
user root
group root system
@@ -38,11 +38,6 @@ on property:vendor.mfgapi.touchpanel.permission=1
chmod 0600 /sys/devices/virtual/sec/tsp/cmd
chown system system /sys/devices/virtual/sec/tsp/cmd
-# Fingerprint
-on post-fs-data
- chown system system /dev/goodix_fp
- exec_background - system shell -- /vendor/bin/trusty_apploader /vendor/firmware/g7.app
-
# SecureElement eSE2 cts mode
on property:persist.vendor.se.ese2.mode=ctsmode
write /sys/class/st33spi/st33spi/st33spi_state 33
@@ -88,31 +83,29 @@ on property:persist.vendor.touch_sensitivity_mode=0 && property:sys.boot_complet
on property:persist.vendor.touch_sensitivity_mode=1 && property:sys.boot_completed=1
write /sys/devices/virtual/goog_touch_interface/gti.0/screen_protector_mode_enabled 1
-# Touch
-on property:vendor.device.modules.ready=1
- chown system system /sys/devices/virtual/goog_touch_interface/gti.0/force_active
- chown system system /sys/devices/virtual/goog_touch_interface/gti.0/fw_ver
- chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ms_base
- chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ms_diff
- chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ms_raw
- chown system system /sys/devices/virtual/goog_touch_interface/gti.0/self_test
- chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ss_base
- chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ss_diff
- chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ss_raw
-
-# Override SF and RE uclamps to 0 on boot after being set elsewhere, for adpf cpu hints
-on property:sys.boot_completed=1
- trigger override-sf-uclamp
-
-on property:vendor.powerhal.init=*
- write /dev/cpuset/background/cpus ${persist.device_config.vendor_system_native.background_cpuset:-0-3}
-
-on override-sf-uclamp
- write /proc/vendor_sched/rt_uclamp_min 0
- write /proc/vendor_sched/sf_uclamp_min 0
-
# For Japan sku, always enforce camera shutter sound
# Since this property is read by the audio server in system service,
# it should be written by the system init.
on property:ro.boot.hardware.sku=G82U8
setprop audio.camerasound.force true
+
+# Haptics
+on property:vendor.all.modules.ready=1
+ mkdir /mnt/vendor/persist/haptics 0770 system system
+ chmod 770 /mnt/vendor/persist/haptics
+ chmod 440 /mnt/vendor/persist/haptics/cs40l26.cal
+ chown system system /mnt/vendor/persist/haptics
+ chown system system /mnt/vendor/persist/haptics/cs40l26.cal
+
+ chown system system /sys/bus/i2c/devices/i2c-cs40l26a/calibration/f0_stored
+ chown system system /sys/bus/i2c/devices/i2c-cs40l26a/calibration/q_stored
+ chown system system /sys/bus/i2c/devices/i2c-cs40l26a/calibration/redc_stored
+ chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/vibe_state
+ chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/num_waves
+ chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/f0_offset
+ chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/owt_free_space
+ chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/f0_comp_enable
+ chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/redc_comp_enable
+ chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/delay_before_stop_playback_us
+
+ enable vendor.vibrator.cs40l26
diff --git a/device-lynx.mk b/device-lynx.mk
index 254f99c..ea17b2e 100644
--- a/device-lynx.mk
+++ b/device-lynx.mk
@@ -29,6 +29,8 @@ DEVICE_PACKAGE_OVERLAYS += device/google/lynx/lynx/overlay
include device/google/lynx/audio/lynx/audio-tables.mk
include device/google/gs201/device-shipping-common.mk
include hardware/google/pixel/vibrator/cs40l26/device.mk
+include device/google/gs-common/touch/gti/gti.mk
+include device/google/gs-common/wlan/dump.mk
# go/lyric-soong-variables
$(call soong_config_set,lyric,camera_hardware,lynx)
@@ -76,7 +78,7 @@ PRODUCT_COPY_FILES += \
device/google/lynx/nfc/libnfc-nci-lynx.conf:$(TARGET_COPY_OUT_PRODUCT)/etc/libnfc-nci.conf
PRODUCT_PACKAGES += \
- NfcNci \
+ com.android.nfcservices \
Tag \
android.hardware.nfc-service.st
@@ -151,10 +153,16 @@ include device/google/gs101/fingerprint/udfps_factory.mk
endif
# Vibrator HAL
+ADAPTIVE_HAPTICS_FEATURE := adaptive_haptics_v1
PRODUCT_VENDOR_PROPERTIES += \
ro.vendor.vibrator.hal.supported_primitives=243 \
ro.vendor.vibrator.hal.f0.comp.enabled=1 \
- ro.vendor.vibrator.hal.redc.comp.enabled=0
+ ro.vendor.vibrator.hal.redc.comp.enabled=0 \
+ persist.vendor.vibrator.hal.context.enable=false \
+ persist.vendor.vibrator.hal.context.scale=40 \
+ persist.vendor.vibrator.hal.context.fade=true \
+ persist.vendor.vibrator.hal.context.cooldowntime=1600 \
+ persist.vendor.vibrator.hal.context.settlingtime=5000
# Trusty liboemcrypto.so
PRODUCT_SOONG_NAMESPACES += vendor/google_devices/lynx/prebuilts
@@ -172,9 +180,13 @@ else
device/google/lynx/location/scd_user.conf.l10:$(TARGET_COPY_OUT_VENDOR)/etc/gnss/scd.conf
endif
+# Wifi HAL
+PRODUCT_SOONG_NAMESPACES += hardware/qcom/wlan/wcn6740
+
# DCK properties based on target
PRODUCT_PROPERTY_OVERRIDES += \
- ro.gms.dck.eligible_wcc=2
+ ro.gms.dck.eligible_wcc=2 \
+ ro.gms.dck.se_capability=1
# WIFI COEX
PRODUCT_COPY_FILES += \
@@ -194,7 +206,7 @@ PRODUCT_VENDOR_PROPERTIES += \
# Increment the SVN for any official public releases
PRODUCT_VENDOR_PROPERTIES += \
- ro.vendor.build.svn=8
+ ro.vendor.build.svn=16
# Set support hide display cutout feature
PRODUCT_PRODUCT_PROPERTIES += \
@@ -245,17 +257,10 @@ PRODUCT_VENDOR_PROPERTIES += \
PRODUCT_VENDOR_PROPERTIES += \
persist.vendor.camera.front_720P_always_binning=true
-# Use GmsCorePrebuilt y2022w28
-USE_GMSCORE_PREBUILT_Y2022W28 := true
-
# Device features
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml
-# Enable adpf cpu hint session for SurfaceFlinger
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
- debug.sf.enable_adpf_cpu_hint=true
-
# The default value of this variable is false and should only be set to true when
# the device allows users to enable the seamless transfer feature.
PRODUCT_PRODUCT_PROPERTIES += \
@@ -277,4 +282,3 @@ PRODUCT_PACKAGES += \
SettingsOverlayG0DZQ \
SettingsOverlayGHL1X \
SettingsOverlayGWKK3
-
diff --git a/init.insmod.lynx.cfg b/init.insmod.lynx.cfg
index e4eecf5..1b88597 100644
--- a/init.insmod.lynx.cfg
+++ b/init.insmod.lynx.cfg
@@ -9,8 +9,7 @@
modprobe|snd-soc-cs35l41-spi.ko
modprobe|goodix_brl_touch.ko
modprobe|focal_touch.ko
-modprobe|cl_dsp.ko
-modprobe|input-cs40l26-i2c.ko
+modprobe|cs40l26-i2c.ko
modprobe|snd-soc-cs40l26.ko
# All device specific modules loaded
diff --git a/location/gps.xml.l10 b/location/gps.xml.l10
index 61c31d9..c51fd4d 100644
--- a/location/gps.xml.l10
+++ b/location/gps.xml.l10
@@ -35,7 +35,7 @@
SuplVersion="2"
SuplMinorVersion="0"
SuplOtdoaCapable="true"
- SuplOtdoaCapable2="true"
+ SuplOtdoaCapable2="false"
SuplGlonassCapable = "true"
SuplGalileoCapable = "true"
SuplBdsCapable = "true"
@@ -85,6 +85,7 @@
EnableOnChipStopNotification="2"
PowerMode="3"
MinGpsWeekNumber="2216"
+ OnChipAccMask="50"
/>
<gll_features
diff --git a/location/gps_user.xml.l10 b/location/gps_user.xml.l10
index 477e7f4..b996bf0 100644
--- a/location/gps_user.xml.l10
+++ b/location/gps_user.xml.l10
@@ -34,7 +34,7 @@
SuplVersion="2"
SuplMinorVersion="0"
SuplOtdoaCapable="true"
- SuplOtdoaCapable2="true"
+ SuplOtdoaCapable2="false"
SuplGlonassCapable = "true"
SuplGalileoCapable = "true"
SuplBdsCapable = "true"
@@ -84,6 +84,7 @@
EnableOnChipStopNotification="false"
PowerMode="3"
MinGpsWeekNumber="2216"
+ OnChipAccMask="50"
/>
<gll_features
diff --git a/lynx/BoardConfig.mk b/lynx/BoardConfig.mk
index 616a01a..ca5006a 100644
--- a/lynx/BoardConfig.mk
+++ b/lynx/BoardConfig.mk
@@ -13,12 +13,25 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+
TARGET_BOARD_INFO_FILE := device/google/lynx/board-info.txt
TARGET_BOOTLOADER_BOARD_NAME := lynx
-TARGET_SCREEN_DENSITY := 420
+
+ifdef PHONE_CAR_BOARD_PRODUCT
+ include vendor/auto/embedded/products/$(PHONE_CAR_BOARD_PRODUCT)/BoardConfig.mk
+else
+ TARGET_SCREEN_DENSITY := 420
+endif
+
BOARD_USES_GENERIC_AUDIO := true
USES_DEVICE_GOOGLE_LYNX := true
+# Enable load module in parallel
+BOARD_BOOTCONFIG += androidboot.load_modules_parallel=true
+
+# The modules which need to be loaded in sequential
+BOARD_KERNEL_CMDLINE += exynos_drm.load_sequential=1
+
include device/google/gs201/BoardConfig-common.mk
-include vendor/google_devices/gs201/prebuilts/BoardConfigVendor.mk
-include vendor/google_devices/lynx/proprietary/BoardConfigVendor.mk
diff --git a/lynx/overlay/frameworks/base/core/res/res/values/config.xml b/lynx/overlay/frameworks/base/core/res/res/values/config.xml
index b38878a..c122acf 100644
--- a/lynx/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/lynx/overlay/frameworks/base/core/res/res/values/config.xml
@@ -187,9 +187,6 @@
<!-- The default peak refresh rate. -->
<integer name="config_defaultPeakRefreshRate">60</integer>
- <!-- the number of the max cached processes in the system. -->
- <integer name="config_customizedMaxCachedProcesses">64</integer>
-
<integer-array name="config_ambientThresholdLevels">
<item>2</item>
<item>3</item>
@@ -299,4 +296,17 @@
<string name="config_mms_user_agent" translatable="false">gwkk3</string>
<!-- MMS user agent profile url -->
<string name="config_mms_user_agent_profile_url" translatable="false">http://www.gstatic.com/android/sms/GWKK3.xml</string>
+
+ <!-- A string config in svg path format for the main display shape.
+ (@see https://www.w3.org/TR/SVG/paths.html#PathData).
+
+ This config must be set unless:
+ 1. {@link Configuration#isScreenRound} is true which means the display shape is circular
+ and the system will auto-generate a circular shape.
+ 2. The display has no rounded corner and the system will auto-generate a rectangular shape.
+ (@see DisplayShape#createDefaultDisplayShape)
+
+ Note: If the display supports multiple resolutions, please define the path config based on
+ the highest resolution so that it can be scaled correctly in each resolution. -->
+ <string name="config_mainDisplayShape">M 50 0 C 42.768298 0.20918843 40.38325 0.67140492 36.839844 1.4492188 C 32.88207 2.499408 31.55228 2.9412067 27.529297 4.6933594 C 22.757243 6.7717586 20.051023 9.0487475 17.677734 10.873047 C 14.896398 13.14348 12.520098 15.642526 10.375 18.316406 C 7.8943843 21.48606 6.0935469 24.386022 4.3515625 28.15625 C 1.8145748 33.95665 1.4214109 36.446413 0.90625 38.939453 C 0.29310087 41.906691 0.090606668 43.961689 0 50 L 0 2350 C 0.083036414 2356.0047 0.27049146 2357.7278 0.70507812 2360.4961 C 1.0552946 2362.727 1.7787856 2366.4728 4.1152344 2372.0391 C 5.8274884 2375.87 7.608122 2378.6647 10.011719 2381.8281 C 12.156817 2384.5019 14.6796 2387.128 17.460938 2389.3984 C 19.82277 2391.2952 22.788288 2393.4515 27.306641 2395.5898 C 30.772461 2397.23 33.05157 2397.9241 37.181641 2398.8828 C 41.654968 2399.8035 43.840728 2399.9069 50 2400 L 1030 2400 C 1036.1593 2399.9069 1038.345 2399.8035 1042.8184 2398.8828 C 1046.9485 2397.9241 1049.2276 2397.23 1052.6934 2395.5898 C 1057.2118 2393.4515 1060.1773 2391.2952 1062.5391 2389.3984 C 1065.3205 2387.128 1067.8432 2384.5019 1069.9883 2381.8281 C 1072.3919 2378.6647 1074.1725 2375.87 1075.8848 2372.0391 C 1078.2212 2366.4728 1078.9466 2362.727 1079.2969 2360.4961 C 1079.7314 2357.7278 1079.917 2356.0047 1080 2350 L 1080 50 C 1079.909 43.961692 1079.7068 41.906687 1079.0938 38.939453 C 1078.5787 36.446409 1078.1854 33.956648 1075.6484 28.15625 C 1073.9064 24.386028 1072.1057 21.48606 1069.625 18.316406 C 1067.4799 15.642522 1065.1037 13.143473 1062.3223 10.873047 C 1059.949 9.0487399 1057.2428 6.7717652 1052.4707 4.6933594 C 1048.4477 2.9412128 1047.118 2.4994066 1043.1602 1.4492188 C 1039.6168 0.67140026 1037.2317 0.20918958 1030 0 L 50 0 z</string>
</resources>
diff --git a/lynx/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml b/lynx/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml
new file mode 100644
index 0000000..8304044
--- /dev/null
+++ b/lynx/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2023, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<irq-device-map>
+ <device name="rtc-alarm0">
+ <subsystem>Alarm</subsystem>
+ </device>
+ <device name="wlan_pci_wake_irq">
+ <subsystem>Wifi</subsystem>
+ </device>
+ <device name="cp2ap_wakeup">
+ <subsystem>Cellular_data</subsystem>
+ </device>
+ <device name="MAILBOX_AOCF12APx1100">
+ <subsystem>Sound_trigger</subsystem>
+ </device>
+ <device name="MAILBOX_AOCA322APx100">
+ <subsystem>Sensor</subsystem>
+ </device>
+</irq-device-map>
+
diff --git a/lynx/overlay/packages/apps/Nfc/res/values/config.xml b/lynx/overlay/packages/apps/Nfc/res/values/config.xml
index 34bf74e..4a8efa9 100644
--- a/lynx/overlay/packages/apps/Nfc/res/values/config.xml
+++ b/lynx/overlay/packages/apps/Nfc/res/values/config.xml
@@ -21,4 +21,15 @@
<item>GHL1X</item>
<item>G82U8</item>
</string-array>
+ <bool name="tag_intent_app_pref_supported">true</bool>
+ <!-- NFC Antenna Location API -->
+ <integer name="device_width">70</integer>
+ <integer name="device_height">150</integer>
+ <bool name="device_foldable">false</bool>
+ <integer-array name="antenna_x">
+ <item>36</item>
+ </integer-array>
+ <integer-array name="antenna_y">
+ <item>102</item>
+ </integer-array>
</resources>
diff --git a/powerhint.json b/powerhint.json
index 4f20b9c..5a7b1f9 100644
--- a/powerhint.json
+++ b/powerhint.json
@@ -1,6 +1,19 @@
{
"Nodes": [
{
+ "Name": "GPUMinFreq",
+ "Path": "/sys/devices/platform/28000000.mali/hint_min_freq",
+ "Values": [
+ "848000",
+ "762000",
+ "572000",
+ "471000",
+ "302000",
+ "202000"
+ ],
+ "ResetOnInit": true
+ },
+ {
"Name": "MemFreq",
"Path": "/sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/min_freq",
"Values": [
@@ -105,19 +118,6 @@
"ResetOnInit": true
},
{
- "Name": "GPUMinFreq",
- "Path": "/sys/devices/platform/28000000.mali/hint_min_freq",
- "Values": [
- "848000",
- "762000",
- "572000",
- "471000",
- "302000",
- "202000"
- ],
- "ResetOnInit": true
- },
- {
"Name": "ReducePreferIdle",
"Path": "/proc/vendor_sched/reduce_prefer_idle",
"Values": [
@@ -137,6 +137,16 @@
"ResetOnInit": true
},
{
+ "Name": "CPUDVFSHeadroom",
+ "Path": "/proc/vendor_sched/dvfs_headroom",
+ "Values": [
+ "1280",
+ "1100 1078 1024"
+ ],
+ "DefaultIndex": 0,
+ "ResetOnInit": true
+ },
+ {
"Name": "MIFTargetLoad",
"Path": "/sys/class/devfreq/17000010.devfreq_mif/interactive/target_load",
"Values": [
@@ -150,7 +160,7 @@
"Name": "CAMUClampBoost",
"Path": "/proc/vendor_sched/cam_uclamp_min",
"Values": [
- "612",
+ "764",
"0"
],
"ResetOnInit": true
@@ -159,7 +169,7 @@
"Name": "TAUClampBoost",
"Path": "/proc/vendor_sched/ta_uclamp_min",
"Values": [
- "612",
+ "764",
"1"
],
"ResetOnInit": true
@@ -177,8 +187,8 @@
"Name": "MLUclampBoost",
"Path": "/proc/vendor_sched/nnapi_uclamp_min",
"Values": [
- "180",
- "650"
+ "225",
+ "813"
],
"DefaultIndex": 0,
"ResetOnInit": true
@@ -593,6 +603,16 @@
"0,1,2,3,4,5,6,7"
],
"Type": "Property"
+ },
+ {
+ "Name": "Dex2oatGroup",
+ "Path": "/proc/vendor_sched/dex2oat_ug",
+ "Values": [
+ "1",
+ "0"
+ ],
+ "DefaultIndex": 0,
+ "ResetOnInit": true
}
],
"Actions": [
@@ -654,7 +674,7 @@
"PowerHint": "LAUNCH",
"Node": "TAUClampBoost",
"Duration": 5000,
- "Value": "612"
+ "Value": "764"
},
{
"PowerHint": "LAUNCH",
@@ -722,6 +742,18 @@
"Value": "9999999"
},
{
+ "PowerHint": "CPU_LOAD_RESET",
+ "Node": "GPUMinFreq",
+ "Duration": 50,
+ "Value": "302000"
+ },
+ {
+ "PowerHint": "CPU_LOAD_RESET",
+ "Node": "MemFreq",
+ "Duration": 33,
+ "Value": "1014000"
+ },
+ {
"PowerHint": "CAMERA_LAUNCH",
"Node": "MemFreq",
"Duration": 1000,
@@ -767,7 +799,7 @@
"PowerHint": "CAMERA_LAUNCH",
"Node": "CAMUClampBoost",
"Duration": 1000,
- "Value": "612"
+ "Value": "764"
},
{
"PowerHint": "CAMERA_LAUNCH",
@@ -1119,6 +1151,12 @@
},
{
"PowerHint": "CAMERA_STREAMING_HIGH",
+ "Node": "CPUDVFSHeadroom",
+ "Duration": 0,
+ "Value": "1100 1078 1024"
+ },
+ {
+ "PowerHint": "CAMERA_STREAMING_HIGH",
"Node": "CDPreferHighCap",
"Duration": 0,
"Value": "1"
@@ -1438,6 +1476,66 @@
"Value": "1"
},
{
+ "PowerHint": "LOW_POWER",
+ "Node": "BigControlTempSet",
+ "Duration": 0,
+ "Value": "80000"
+ },
+ {
+ "PowerHint": "LOW_POWER",
+ "Node": "MidControlTempSet",
+ "Duration": 0,
+ "Value": "80000"
+ },
+ {
+ "PowerHint": "LOW_POWER",
+ "Node": "LittleControlTempSet",
+ "Duration": 0,
+ "Value": "80000"
+ },
+ {
+ "PowerHint": "LOW_POWER",
+ "Node": "G3dControlTempSet",
+ "Duration": 0,
+ "Value": "80000"
+ },
+ {
+ "PowerHint": "LOW_POWER",
+ "Node": "TpuControlTempSet",
+ "Duration": 0,
+ "Value": "80000"
+ },
+ {
+ "PowerHint": "LOW_POWER",
+ "Node": "BigSwitchOnTempSet",
+ "Duration": 0,
+ "Value": "60000"
+ },
+ {
+ "PowerHint": "LOW_POWER",
+ "Node": "MidSwitchOnTempSet",
+ "Duration": 0,
+ "Value": "60000"
+ },
+ {
+ "PowerHint": "LOW_POWER",
+ "Node": "LittleSwitchOnTempSet",
+ "Duration": 0,
+ "Value": "60000"
+ },
+ {
+ "PowerHint": "LOW_POWER",
+ "Node": "G3dSwitchOnTempSet",
+ "Duration": 0,
+ "Value": "60000"
+ },
+ {
+ "PowerHint": "LOW_POWER",
+ "Node": "TpuSwitchOnTempSet",
+ "Duration": 0,
+ "Value": "60000"
+ },
+ {
"PowerHint": "REFRESH_90FPS",
"Node": "TAUClampBoost",
"Duration": 0,
@@ -1503,12 +1601,6 @@
"Value": "572000"
},
{
- "PowerHint": "ADPF_FIRST_FRAME",
- "Node": "GPUMinFreq",
- "Duration": 50,
- "Value": "302000"
- },
- {
"PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_LIGHT",
"Node": "PMU_POLL",
"Duration": 0,
@@ -1587,6 +1679,12 @@
"Value": "0,1,2,3"
},
{
+ "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_LIGHT",
+ "Node": "Dex2oatGroup",
+ "Duration": 0,
+ "Value": "0"
+ },
+ {
"PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
"Node": "PMU_POLL",
"Duration": 0,
@@ -1665,6 +1763,12 @@
"Value": "0,1,2,3"
},
{
+ "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
+ "Node": "Dex2oatGroup",
+ "Duration": 0,
+ "Value": "0"
+ },
+ {
"PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
"Node": "PMU_POLL",
"Duration": 0,
@@ -1743,6 +1847,12 @@
"Value": "0,1,2,3"
},
{
+ "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
+ "Node": "Dex2oatGroup",
+ "Duration": 0,
+ "Value": "0"
+ },
+ {
"PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
"Node": "PMU_POLL",
"Duration": 0,
@@ -1821,6 +1931,12 @@
"Value": "0,1,2,3"
},
{
+ "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
+ "Node": "Dex2oatGroup",
+ "Duration": 0,
+ "Value": "0"
+ },
+ {
"PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
"Node": "PMU_POLL",
"Duration": 0,
@@ -1917,6 +2033,12 @@
"Value": "0,1,2,3"
},
{
+ "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
+ "Node": "Dex2oatGroup",
+ "Duration": 0,
+ "Value": "0"
+ },
+ {
"PowerHint": "FACE_UNLOCK_BOOST",
"Node": "CPU_LITTLE_TSKIN_BYPASS",
"Duration": 1000,
@@ -1980,7 +2102,7 @@
"PowerHint": "ML_ACC",
"Node": "MLUclampBoost",
"Duration": 2000,
- "Value": "650"
+ "Value": "813"
},
{
"PowerHint": "ML_ACC",
@@ -2002,8 +2124,8 @@
"PID_Do": 500.0,
"PID_Du": 0.0,
"UclampMin_On": true,
- "UclampMin_Init": 185,
- "UclampMin_High": 384,
+ "UclampMin_Init": 232,
+ "UclampMin_High": 480,
"UclampMin_Low": 2,
"SamplingWindow_P": 1,
"SamplingWindow_I": 0,
@@ -2026,8 +2148,8 @@
"PID_Do": 500.0,
"PID_Du": 0.0,
"UclampMin_On": true,
- "UclampMin_Init": 129,
- "UclampMin_High": 384,
+ "UclampMin_Init": 162,
+ "UclampMin_High": 480,
"UclampMin_Low": 2,
"SamplingWindow_P": 1,
"SamplingWindow_I": 0,
@@ -2050,8 +2172,8 @@
"PID_Do": 500.0,
"PID_Du": 0.0,
"UclampMin_On": true,
- "UclampMin_Init": 129,
- "UclampMin_High": 384,
+ "UclampMin_Init": 162,
+ "UclampMin_High": 480,
"UclampMin_Low": 2,
"SamplingWindow_P": 1,
"SamplingWindow_I": 0,
@@ -2077,9 +2199,9 @@
"SamplingWindow_I": 1,
"SamplingWindow_D": 1,
"UclampMin_On": true,
- "UclampMin_Init": 200,
- "UclampMin_High": 157,
- "UclampMin_Low": 157,
+ "UclampMin_Init": 250,
+ "UclampMin_High": 197,
+ "UclampMin_Low": 197,
"ReportingRateLimitNs": 1,
"EarlyBoost_On": false,
"EarlyBoost_TimeFactor": 0.0,
@@ -2101,9 +2223,9 @@
"SamplingWindow_I": 1,
"SamplingWindow_D": 1,
"UclampMin_On": true,
- "UclampMin_Init": 200,
- "UclampMin_High": 42,
- "UclampMin_Low": 42,
+ "UclampMin_Init": 250,
+ "UclampMin_High": 53,
+ "UclampMin_Low": 53,
"ReportingRateLimitNs": 1,
"EarlyBoost_On": false,
"EarlyBoost_TimeFactor": 0.0,
@@ -2125,7 +2247,7 @@
"SamplingWindow_I": 1,
"SamplingWindow_D": 1,
"UclampMin_On": true,
- "UclampMin_Init": 200,
+ "UclampMin_Init": 250,
"UclampMin_High": 0,
"UclampMin_Low": 0,
"ReportingRateLimitNs": 1,
diff --git a/powerstats/service.cpp b/powerstats/service.cpp
index d8856cc..971fd8f 100644
--- a/powerstats/service.cpp
+++ b/powerstats/service.cpp
@@ -27,6 +27,7 @@
#include <android/binder_manager.h>
#include <android/binder_process.h>
#include <log/log.h>
+#include <sys/stat.h>
using aidl::android::hardware::power::stats::DevfreqStateResidencyDataProvider;
using aidl::android::hardware::power::stats::DisplayStateResidencyDataProvider;
@@ -89,6 +90,8 @@ void addGPUGs202(std::shared_ptr<PowerStats> p) {
}
int main() {
+ struct stat buffer;
+
LOG(INFO) << "Pixel PowerStats HAL AIDL Service is starting.";
// single thread
@@ -107,7 +110,21 @@ int main() {
addWlan(p);
addTPU(p);
addUfs(p);
- addNFC(p, "/sys/devices/platform/10970000.hsi2c/i2c-4/i2c-st21nfc/power_stats");
+ if (!stat("/sys/devices/platform/10970000.hsi2c/i2c-2/i2c-st21nfc/power_stats", &buffer)) {
+ addNFC(p, "/sys/devices/platform/10970000.hsi2c/i2c-2/i2c-st21nfc/power_stats");
+ } else if (!stat("/sys/devices/platform/10970000.hsi2c/i2c-3/i2c-st21nfc/power_stats", &buffer)) {
+ addNFC(p, "/sys/devices/platform/10970000.hsi2c/i2c-3/i2c-st21nfc/power_stats");
+ } else if (!stat("/sys/devices/platform/10970000.hsi2c/i2c-4/i2c-st21nfc/power_stats", &buffer)) {
+ addNFC(p, "/sys/devices/platform/10970000.hsi2c/i2c-4/i2c-st21nfc/power_stats");
+ } else if (!stat("/sys/devices/platform/10970000.hsi2c/i2c-5/i2c-st21nfc/power_stats", &buffer)) {
+ addNFC(p, "/sys/devices/platform/10970000.hsi2c/i2c-5/i2c-st21nfc/power_stats");
+ } else if (!stat("/sys/devices/platform/10970000.hsi2c/i2c-6/i2c-st21nfc/power_stats", &buffer)) {
+ addNFC(p, "/sys/devices/platform/10970000.hsi2c/i2c-6/i2c-st21nfc/power_stats");
+ } else if (!stat("/sys/devices/platform/10970000.hsi2c/i2c-7/i2c-st21nfc/power_stats", &buffer)) {
+ addNFC(p, "/sys/devices/platform/10970000.hsi2c/i2c-7/i2c-st21nfc/power_stats");
+ } else {
+ addNFC(p, "/sys/devices/platform/10970000.hsi2c/i2c-8/i2c-st21nfc/power_stats");
+ }
addPowerDomains(p);
addDevfreq(p);
addGPUGs202(p);
diff --git a/rro_overlays/WifiOverlay/res/values/config.xml b/rro_overlays/WifiOverlay/res/values/config.xml
index 4fa03d2..2659754 100644
--- a/rro_overlays/WifiOverlay/res/values/config.xml
+++ b/rro_overlays/WifiOverlay/res/values/config.xml
@@ -126,10 +126,29 @@
<!-- Enable the default coex channel avoidance algorithm and disable the functionality of
WifiManager#setCoexUnsafeChannels. -->
<bool translatable="false" name="config_wifiDefaultCoexAlgorithmEnabled">true</bool>
+ <!-- If the default coex channel avoidance algorithm is enabled, then avoid channels that
+ conflict with GPS L1. -->
+ <bool translatable="false" name="config_wifiCoexForGpsL1">true</bool>
+ <!-- The distance in KHz between Wi-Fi-based interference and GPS L1 that is considered unsafe. -->
+ <integer translatable="false" name="config_wifiCoexGpsL1ThresholdKhz">10000</integer>
<!-- Whether to use the explicit vendor HAL API: IWifiStaIface.setRoamingState for disabling fw roaming. -->
<bool translatable="false" name="config_wifiUseHalApiToDisableFwRoaming">true</bool>
<!-- Indicate the driver doesn't support NL80211 Reg changed event -->
<bool translatable="false" name="config_wifiDriverSupportedNl80211RegChangedEvent">true</bool>
+
+ <!-- Boolean indicating whether DTIM multiplier configuration is enabled. DTIM multiplier value
+ is when the system is in the suspended mode -->
+ <bool translatable="false" name="config_wifiDtimMultiplierConfigEnabled">true</bool>
+
+ <!-- Enable the feature of adjusting link layer stats polling interval based on
+ device mobility state and client mode RSSI monitoring. -->
+ <bool translatable="false" name="config_wifiAdjustPollRssiIntervalEnabled">true</bool>
+
+ <!-- Boolean indicating whether the framework updates country from scan results when there is
+ no telephony country code. This is applied to all generic cases and might require the
+ regulatory approval (for example, FCC pre-approval is required according to "594280 D01
+ Software Configuration Control v02r01").-->
+ <bool translatable="false" name ="config_wifiUpdateCountryCodeFromScanResultGeneric">true</bool>
</resources>
diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt
index e09731b..63655a4 100644
--- a/self-extractors/extract-lists.txt
+++ b/self-extractors/extract-lists.txt
@@ -10,7 +10,7 @@
system_ext/lib64/libmediaadaptor.so \
system_ext/priv-app/ShannonRcs/ShannonRcs.apk \
system_ext/priv-app/ShannonIms/ShannonIms.apk \
- system_ext/priv-app/QualifiedNetworksService/QualifiedNetworksService.apk \
+ system_ext/priv-app/PixelQualifiedNetworksService/PixelQualifiedNetworksService.apk \
"
;;
diff --git a/self-extractors/google_devices/staging/Android.mk b/self-extractors/google_devices/staging/Android.mk
index c52fbf2..a720400 100644
--- a/self-extractors/google_devices/staging/Android.mk
+++ b/self-extractors/google_devices/staging/Android.mk
@@ -18,14 +18,13 @@ LOCAL_PATH := $(call my-dir)
ifneq ($(filter lynx,$(TARGET_DEVICE)),)
$(call add-radio-file,bootloader.img)
+ $(call add-radio-file,radio.img)
endif
-$(call add-radio-file-checked,radio.img,version-baseband)
-
ifneq ($(filter lynx,$(TARGET_DEVICE)),)
include $(CLEAR_VARS)
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
-LOCAL_MODULE := QualifiedNetworksService
+LOCAL_MODULE := PixelQualifiedNetworksService
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_SYSTEM_EXT_MODULE := true
diff --git a/self-extractors/google_devices/staging/device-partial.mk b/self-extractors/google_devices/staging/device-partial.mk
index 7f1e7e3..d4e5924 100644
--- a/self-extractors/google_devices/staging/device-partial.mk
+++ b/self-extractors/google_devices/staging/device-partial.mk
@@ -17,7 +17,7 @@ PRODUCT_SOONG_NAMESPACES += \
# AOSP packages required by the blobs
PRODUCT_PACKAGES := \
- QualifiedNetworksService \
+ PixelQualifiedNetworksService \
ShannonIms \
ShannonRcs \
diff --git a/sensors/sensors_dummy.c b/sensors/sensors_dummy.c
deleted file mode 100644
index b1edd56..0000000
--- a/sensors/sensors_dummy.c
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* this implements a sensors hardware library for the Android emulator.
- * the following code should be built as a shared library that will be
- * placed into /system/lib/hw/sensors.goldfish.so
- *
- * it will be loaded by the code in hardware/libhardware/hardware.c
- * which is itself called from com_android_server_SensorService.cpp
- */
-
-#define SENSORS_SERVICE_NAME "sensors"
-
-#define LOG_TAG "Dummy_Sensors"
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-#include <log/log.h>
-#include <cutils/sockets.h>
-#include <hardware/sensors.h>
-#include <pthread.h>
-
-#if 0
-#define D(...) ALOGD(__VA_ARGS__)
-#else
-#define D(...) ((void)0)
-#endif
-
-#define E(...) ALOGE(__VA_ARGS__)
-
-/** SENSOR IDS AND NAMES
- **/
-
-#define MAX_NUM_SENSORS 8
-
-#define SUPPORTED_SENSORS ((1<<MAX_NUM_SENSORS)-1)
-
-#define ID_BASE SENSORS_HANDLE_BASE
-#define ID_ACCELERATION (ID_BASE+0)
-#define ID_MAGNETIC_FIELD (ID_BASE+1)
-#define ID_ORIENTATION (ID_BASE+2)
-#define ID_TEMPERATURE (ID_BASE+3)
-#define ID_PROXIMITY (ID_BASE+4)
-#define ID_LIGHT (ID_BASE+5)
-#define ID_PRESSURE (ID_BASE+6)
-#define ID_HUMIDITY (ID_BASE+7)
-
-#define SENSORS_ACCELERATION (1 << ID_ACCELERATION)
-#define SENSORS_MAGNETIC_FIELD (1 << ID_MAGNETIC_FIELD)
-#define SENSORS_ORIENTATION (1 << ID_ORIENTATION)
-#define SENSORS_TEMPERATURE (1 << ID_TEMPERATURE)
-#define SENSORS_PROXIMITY (1 << ID_PROXIMITY)
-#define SENSORS_LIGHT (1 << ID_LIGHT)
-#define SENSORS_PRESSURE (1 << ID_PRESSURE)
-#define SENSORS_HUMIDITY (1 << ID_HUMIDITY)
-
-#define ID_CHECK(x) ((unsigned)((x) - ID_BASE) < MAX_NUM_SENSORS)
-
-#define SENSORS_LIST \
- SENSOR_(ACCELERATION,"acceleration") \
- SENSOR_(MAGNETIC_FIELD,"magnetic-field") \
- SENSOR_(ORIENTATION,"orientation") \
- SENSOR_(TEMPERATURE,"temperature") \
- SENSOR_(PROXIMITY,"proximity") \
- SENSOR_(LIGHT, "light") \
- SENSOR_(PRESSURE, "pressure") \
- SENSOR_(HUMIDITY, "humidity")
-
-static const struct {
- const char* name;
- int id; } _sensorIds[MAX_NUM_SENSORS] =
-{
-#define SENSOR_(x,y) { y, ID_##x },
- SENSORS_LIST
-#undef SENSOR_
-};
-
-static const char*
-_sensorIdToName( int id )
-{
- int nn;
- for (nn = 0; nn < MAX_NUM_SENSORS; nn++)
- if (id == _sensorIds[nn].id)
- return _sensorIds[nn].name;
- return "<UNKNOWN>";
-}
-
-static int
-_sensorIdFromName( const char* name )
-{
- int nn;
-
- if (name == NULL)
- return -1;
-
- for (nn = 0; nn < MAX_NUM_SENSORS; nn++)
- if (!strcmp(name, _sensorIds[nn].name))
- return _sensorIds[nn].id;
-
- return -1;
-}
-
-/* return the current time in nanoseconds */
-static int64_t now_ns(void) {
- struct timespec ts;
- clock_gettime(CLOCK_MONOTONIC, &ts);
- return (int64_t)ts.tv_sec * 1000000000 + ts.tv_nsec;
-}
-
-/** SENSORS POLL DEVICE
- **
- ** This one is used to read sensor data from the hardware.
- ** We implement this by simply reading the data from the
- ** emulator through the QEMUD channel.
- **/
-
-typedef struct SensorDevice {
- struct sensors_poll_device_1 device;
- sensors_event_t sensors[MAX_NUM_SENSORS];
- uint32_t pendingSensors;
- int64_t timeStart;
- int64_t timeOffset;
- uint32_t active_sensors;
- int fd;
- pthread_mutex_t lock;
-} SensorDevice;
-
-/* Grab the file descriptor to the emulator's sensors service pipe.
- * This function returns a file descriptor on success, or -errno on
- * failure, and assumes the SensorDevice instance's lock is held.
- *
- * This is needed because set_delay(), poll() and activate() can be called
- * from different threads, and poll() is blocking.
- *
- * 1) On a first thread, de-activate() all sensors first, then call poll(),
- * which results in the thread blocking.
- *
- * 2) On a second thread, slightly later, call set_delay() then activate()
- * to enable the acceleration sensor.
- *
- * The system expects this to unblock the first thread which will receive
- * new sensor events after the activate() call in 2).
- *
- * This cannot work if both threads don't use the same connection.
- *
- * TODO(digit): This protocol is brittle, implement another control channel
- * for set_delay()/activate()/batch() when supporting HAL 1.3
- */
-static int sensor_device_get_fd_locked(SensorDevice* dev) {
- /* Create connection to service on first call */
- if (dev->fd < 0) {
- int ret = -errno;
- E("%s: Could not open connection to service: %s", __FUNCTION__,
- strerror(-ret));
- return ret;
- }
- return dev->fd;
-}
-
-/* Pick up one pending sensor event. On success, this returns the sensor
- * id, and sets |*event| accordingly. On failure, i.e. if there are no
- * pending events, return -EINVAL.
- *
- * Note: The device's lock must be acquired.
- */
-static int sensor_device_pick_pending_event_locked(SensorDevice* d,
- sensors_event_t* event)
-{
- uint32_t mask = SUPPORTED_SENSORS & d->pendingSensors;
-
- if (mask) {
- uint32_t i = 31 - __builtin_clz(mask);
-
- pthread_mutex_lock(&d->lock);
- d->pendingSensors &= ~(1U << i);
- *event = d->sensors[i];
- event->sensor = i;
- event->version = sizeof(*event);
- pthread_mutex_unlock(&d->lock);
- D("%s: %d [%f, %f, %f]", __FUNCTION__,
- i,
- event->data[0],
- event->data[1],
- event->data[2]);
- return i;
- }
- E("No sensor to return!!! pendingSensors=0x%08x", d->pendingSensors);
- // we may end-up in a busy loop, slow things down, just in case.
- usleep(1000);
- return -EINVAL;
-}
-
-static int sensor_device_close(struct hw_device_t* dev0)
-{
- SensorDevice* dev = (void*)dev0;
- // Assume that there are no other threads blocked on poll()
- if (dev->fd >= 0) {
- close(dev->fd);
- dev->fd = -1;
- }
- pthread_mutex_destroy(&dev->lock);
- free(dev);
- return 0;
-}
-
-/* Return an array of sensor data. This function blocks until there is sensor
- * related events to report. On success, it will write the events into the
- * |data| array, which contains |count| items. The function returns the number
- * of events written into the array, which shall never be greater than |count|.
- * On error, return -errno code.
- *
- * Note that according to the sensor HAL [1], it shall never return 0!
- *
- * [1] http://source.android.com/devices/sensors/hal-interface.html
- */
-static int sensor_device_poll(struct sensors_poll_device_t *dev0,
- sensors_event_t* data, int count)
-{
- return -EIO;
-}
-
-static int sensor_device_activate(struct sensors_poll_device_t *dev0,
- int handle,
- int enabled)
-{
- SensorDevice* dev = (void*)dev0;
-
- D("%s: handle=%s (%d) enabled=%d", __FUNCTION__,
- _sensorIdToName(handle), handle, enabled);
-
- /* Sanity check */
- if (!ID_CHECK(handle)) {
- E("%s: bad handle ID", __FUNCTION__);
- return -EINVAL;
- }
-
- /* Exit early if sensor is already enabled/disabled. */
- uint32_t mask = (1U << handle);
- uint32_t sensors = enabled ? mask : 0;
-
- pthread_mutex_lock(&dev->lock);
-
- uint32_t active = dev->active_sensors;
- uint32_t new_sensors = (active & ~mask) | (sensors & mask);
- uint32_t changed = active ^ new_sensors;
-
- if (changed)
- dev->active_sensors = new_sensors;
-
- pthread_mutex_unlock(&dev->lock);
- return 0;
-}
-
-static int sensor_device_default_flush(
- struct sensors_poll_device_1* dev0,
- int handle) {
-
- SensorDevice* dev = (void*)dev0;
-
- D("%s: handle=%s (%d)", __FUNCTION__,
- _sensorIdToName(handle), handle);
-
- /* Sanity check */
- if (!ID_CHECK(handle)) {
- E("%s: bad handle ID", __FUNCTION__);
- return -EINVAL;
- }
-
- pthread_mutex_lock(&dev->lock);
- dev->sensors[handle].version = META_DATA_VERSION;
- dev->sensors[handle].type = SENSOR_TYPE_META_DATA;
- dev->sensors[handle].sensor = 0;
- dev->sensors[handle].timestamp = 0;
- dev->sensors[handle].meta_data.what = META_DATA_FLUSH_COMPLETE;
- dev->pendingSensors |= (1U << handle);
- pthread_mutex_unlock(&dev->lock);
-
- return 0;
-}
-
-static int sensor_device_set_delay(struct sensors_poll_device_t *dev0,
- int handle __unused,
- int64_t ns)
-{
- return 0;
-}
-
-static int sensor_device_default_batch(
- struct sensors_poll_device_1* dev,
- int sensor_handle,
- int flags,
- int64_t sampling_period_ns,
- int64_t max_report_latency_ns) {
- return sensor_device_set_delay(dev, sensor_handle, sampling_period_ns);
-}
-
-/** MODULE REGISTRATION SUPPORT
- **
- ** This is required so that hardware/libhardware/hardware.c
- ** will dlopen() this library appropriately.
- **/
-
-/*
- * the following is the list of all supported sensors.
- * this table is used to build sSensorList declared below
- * according to which hardware sensors are reported as
- * available from the emulator (see get_sensors_list below)
- *
- * note: numerical values for maxRange/resolution/power for
- * all sensors but light, pressure and humidity were
- * taken from the reference AK8976A implementation
- */
-static const struct sensor_t sSensorListInit[] = {
- { .name = "Accelerometer",
- .vendor = "The Android Open Source Project",
- .version = 1,
- .handle = ID_ACCELERATION,
- .type = SENSOR_TYPE_ACCELEROMETER,
- .maxRange = 2.8f,
- .resolution = 1.0f/4032.0f,
- .power = 3.0f,
- .minDelay = 10000,
- .maxDelay = 60 * 1000 * 1000,
- .fifoReservedEventCount = 0,
- .fifoMaxEventCount = 0,
- .stringType = 0,
- .requiredPermission = 0,
- .flags = SENSOR_FLAG_CONTINUOUS_MODE,
- .reserved = {}
- },
-};
-
-static struct sensor_t sSensorList[1];
-
-static int sensors__get_sensors_list(struct sensors_module_t* module __unused,
- struct sensor_t const** list)
-{
- *list = sSensorList;
-
- return 0;
-}
-
-static int
-open_sensors(const struct hw_module_t* module,
- const char* name,
- struct hw_device_t* *device)
-{
- int status = -EINVAL;
-
- D("%s: name=%s", __FUNCTION__, name);
-
- if (!strcmp(name, SENSORS_HARDWARE_POLL)) {
- SensorDevice *dev = malloc(sizeof(*dev));
-
- memset(dev, 0, sizeof(*dev));
-
- dev->device.common.tag = HARDWARE_DEVICE_TAG;
- dev->device.common.version = SENSORS_DEVICE_API_VERSION_1_3;
- dev->device.common.module = (struct hw_module_t*) module;
- dev->device.common.close = sensor_device_close;
- dev->device.poll = sensor_device_poll;
- dev->device.activate = sensor_device_activate;
- dev->device.setDelay = sensor_device_set_delay;
-
- // Version 1.3-specific functions
- dev->device.batch = sensor_device_default_batch;
- dev->device.flush = sensor_device_default_flush;
-
- dev->fd = -1;
- pthread_mutex_init(&dev->lock, NULL);
-
- *device = &dev->device.common;
- status = 0;
- }
- return status;
-}
-
-
-static struct hw_module_methods_t sensors_module_methods = {
- .open = open_sensors
-};
-
-struct sensors_module_t HAL_MODULE_INFO_SYM = {
- .common = {
- .tag = HARDWARE_MODULE_TAG,
- .version_major = 1,
- .version_minor = 0,
- .id = SENSORS_HARDWARE_MODULE_ID,
- .name = "Dummy SENSORS Module",
- .author = "The Android Open Source Project",
- .methods = &sensors_module_methods,
- },
- .get_sensors_list = sensors__get_sensors_list
-};
diff --git a/thermal_info_config_lynx.json b/thermal_info_config_lynx.json
index 075a283..a72d137 100644
--- a/thermal_info_config_lynx.json
+++ b/thermal_info_config_lynx.json
@@ -866,5 +866,45 @@
"PowerSampleDelay":14000,
"PowerSampleCount":5
}
- ]
+ ],
+ "Stats": {
+ "Sensors": {
+ "RecordWithDefaultThreshold": ["VIRTUAL-SKIN", "VIRTUAL-SKIN-CHARGE-WLC"],
+ "RecordWithThreshold": [
+ {
+ "Name": "VIRTUAL-NEU-QUT-SKIN1-SKIN2-USB-USB2-GNSS-1",
+ "Thresholds": [31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51]
+ },
+ {
+ "Name": "VIRTUAL-QUT-SKIN2-USB-USB2-2",
+ "Thresholds": [31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51]
+ },
+ {
+ "Name": "VIRTUAL-QUT-SKIN2-USB-GNSS-3",
+ "Thresholds": [31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51]
+ },
+ {
+ "Name": "VIRTUAL-NEU-QUT-SKIN1-SKIN2-USB-USB2-GNSS-4",
+ "Thresholds": [31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51]
+ },
+ {
+ "Name": "VIRTUAL-SKIN",
+ "Thresholds": [31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51]
+ },
+ {
+ "Name": "VIRTUAL-SKIN-CHARGE-WLC",
+ "Thresholds": [31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51]
+ },
+ {
+ "Name": "VIRTUAL-USB-THROTTLING",
+ "Thresholds": [2.0]
+ }
+ ]
+ },
+ "CoolingDevices": {
+ "RecordVotePerSensor": {
+ "DefaultThresholdEnableAll": true
+ }
+ }
+ }
}