Przeglądaj źródła

Merge Android 14

Bug: 298295554
Merged-In: Iffadfd1f436b5ce27c2332a68f6d8d7c5b76507e
Change-Id: I9c3c689e4ccc3d156a50452ceeed2801cdf68254
Xin Li 1 rok temu
rodzic
commit
4587235724
50 zmienionych plików z 2247 dodań i 970 usunięć
  1. 3 0
      OWNERS
  2. 76 0
      audio/lynx/aidl_config/audio_platform_configuration_aidl.xml
  3. 203 0
      audio/lynx/aidl_config/audio_policy_configuration.xml
  4. 227 0
      audio/lynx/aidl_config/audio_policy_volumes.xml
  5. 862 0
      audio/lynx/aidl_config/mixer_paths_aidl.xml
  6. 12 0
      audio/lynx/audio-tables.mk
  7. 5 2
      audio/lynx/config/audio_effects.xml
  8. 1 1
      audio/lynx/config/audio_platform_configuration.xml
  9. 11 11
      audio/lynx/config/audio_policy_configuration.xml
  10. 5 5
      audio/lynx/config/audio_policy_configuration_a2dp_offload_disabled.xml
  11. 5 5
      audio/lynx/config/audio_policy_configuration_bluetooth_legacy_hal.xml
  12. 15 11
      audio/lynx/config/audio_policy_configuration_le_offload_disabled.xml
  13. 17 0
      audio/lynx/config/mixer_paths.xml
  14. BIN
      audio/lynx/tuning/bluenote/smartfeature.gstf
  15. BIN
      audio/lynx/tuning/fortemedia/BLUETOOTH.dat
  16. 23 23
      audio/lynx/tuning/fortemedia/BLUETOOTH.mods
  17. BIN
      audio/lynx/tuning/fortemedia/HANDSFREE.dat
  18. 20 20
      audio/lynx/tuning/fortemedia/HANDSFREE.mods
  19. BIN
      audio/lynx/tuning/fortemedia/HEADSET.dat
  20. 45 45
      audio/lynx/tuning/fortemedia/HEADSET.mods
  21. 36 34
      bluetooth/bluetooth_power_limits_Lynx.csv
  22. 36 34
      bluetooth/bluetooth_power_limits_Lynx_G0DZQ_CA.csv
  23. 36 34
      bluetooth/bluetooth_power_limits_Lynx_G0DZQ_EU.csv
  24. 36 34
      bluetooth/bluetooth_power_limits_Lynx_G0DZQ_JP.csv
  25. 36 34
      bluetooth/bluetooth_power_limits_Lynx_G0DZQ_US.csv
  26. 36 34
      bluetooth/bluetooth_power_limits_Lynx_G82U8_JP.csv
  27. 36 34
      bluetooth/bluetooth_power_limits_Lynx_GHL1X_EU.csv
  28. 36 34
      bluetooth/bluetooth_power_limits_Lynx_GWKK3_CA.csv
  29. 36 34
      bluetooth/bluetooth_power_limits_Lynx_GWKK3_US.csv
  30. 18 0
      bluetooth/device_framework_matrix_product.xml
  31. 6 6
      bluetooth/le_audio_codec_capabilities.xml
  32. 10 2
      bluetooth/qti_default.mk
  33. 22 29
      conf/init.lynx.rc
  34. 15 11
      device-lynx.mk
  35. 1 2
      init.insmod.lynx.cfg
  36. 2 1
      location/gps.xml.l10
  37. 2 1
      location/gps_user.xml.l10
  38. 14 1
      lynx/BoardConfig.mk
  39. 13 3
      lynx/overlay/frameworks/base/core/res/res/values/config.xml
  40. 36 0
      lynx/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml
  41. 11 0
      lynx/overlay/packages/apps/Nfc/res/values/config.xml
  42. 161 39
      powerhint.json
  43. 18 1
      powerstats/service.cpp
  44. 19 0
      rro_overlays/WifiOverlay/res/values/config.xml
  45. 1 1
      self-extractors/extract-lists.txt
  46. 2 3
      self-extractors/google_devices/staging/Android.mk
  47. 1 1
      self-extractors/google_devices/staging/device-partial.mk
  48. 0 30
      sensors/Android.mk
  49. 0 409
      sensors/sensors_dummy.c
  50. 41 1
      thermal_info_config_lynx.json

+ 3 - 0
OWNERS

@@ -1 +1,4 @@
 per-file powerhint.json = [email protected],[email protected],[email protected],[email protected]
+
+# 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

+ 76 - 0
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>

+ 203 - 0
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>

+ 227 - 0
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>
+

+ 862 - 0
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>

+ 12 - 0
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 \

+ 5 - 2
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>

+ 1 - 1
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>

+ 11 - 11
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>

+ 5 - 5
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>

+ 5 - 5
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>

+ 15 - 11
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"/>

+ 17 - 0
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">

BIN
audio/lynx/tuning/bluenote/smartfeature.gstf


BIN
audio/lynx/tuning/fortemedia/BLUETOOTH.dat


+ 23 - 23
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

BIN
audio/lynx/tuning/fortemedia/HANDSFREE.dat


+ 20 - 20
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

BIN
audio/lynx/tuning/fortemedia/HEADSET.dat


+ 45 - 45
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

+ 36 - 34
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

+ 36 - 34
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

+ 36 - 34
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

+ 36 - 34
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

+ 36 - 34
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

+ 36 - 34
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

+ 36 - 34
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

+ 36 - 34
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

+ 36 - 34
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

+ 18 - 0
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>

+ 6 - 6
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>

+ 10 - 2
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 += \
 	[email protected] \
-	[email protected]
+	[email protected] \
+	android.hardware.bluetooth.prebuilt.xml \
+	android.hardware.bluetooth_le.prebuilt.xml
 
 # Bluetooth SAR Tx power caps
 PRODUCT_COPY_FILES += \

+ 22 - 29
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

+ 15 - 11
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)
@@ -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
-

+ 1 - 2
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

+ 2 - 1
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

+ 2 - 1
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

+ 14 - 1
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

+ 13 - 3
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>

+ 36 - 0
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>
+

+ 11 - 0
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>

+ 161 - 39
powerhint.json

@@ -1,5 +1,18 @@
 {
   "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",
@@ -104,19 +117,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",
@@ -136,6 +136,16 @@
       "DefaultIndex": 0,
       "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",
@@ -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",
@@ -721,6 +741,18 @@
       "Duration": 2000,
       "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",
@@ -767,7 +799,7 @@
       "PowerHint": "CAMERA_LAUNCH",
       "Node": "CAMUClampBoost",
       "Duration": 1000,
-      "Value": "612"
+      "Value": "764"
     },
     {
       "PowerHint": "CAMERA_LAUNCH",
@@ -1117,6 +1149,12 @@
       "Duration": 0,
       "Value": "1100 1078 1024"
     },
+    {
+      "PowerHint": "CAMERA_STREAMING_HIGH",
+      "Node": "CPUDVFSHeadroom",
+      "Duration": 0,
+      "Value": "1100 1078 1024"
+    },
     {
       "PowerHint": "CAMERA_STREAMING_HIGH",
       "Node": "CDPreferHighCap",
@@ -1437,6 +1475,66 @@
       "Duration": 0,
       "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",
@@ -1502,12 +1600,6 @@
       "Duration": 0,
       "Value": "572000"
     },
-    {
-      "PowerHint": "ADPF_FIRST_FRAME",
-      "Node": "GPUMinFreq",
-      "Duration": 50,
-      "Value": "302000"
-    },
     {
       "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_LIGHT",
       "Node": "PMU_POLL",
@@ -1586,6 +1678,12 @@
       "Duration": 0,
       "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",
@@ -1664,6 +1762,12 @@
       "Duration": 0,
       "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",
@@ -1742,6 +1846,12 @@
       "Duration": 0,
       "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",
@@ -1820,6 +1930,12 @@
       "Duration": 0,
       "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",
@@ -1916,6 +2032,12 @@
       "Duration": 0,
       "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",
@@ -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,

+ 18 - 1
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);

+ 19 - 0
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>

+ 1 - 1
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 \
             "
     ;;
 

+ 2 - 3
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

+ 1 - 1
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 \
 

+ 0 - 30
sensors/Android.mk

@@ -1,30 +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.
-
-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
-
-include $(BUILD_SHARED_LIBRARY)

+ 0 - 409
sensors/sensors_dummy.c

@@ -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
-};

+ 41 - 1
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
+            }
+        }
+    }
 }