Переглянути джерело

Snap for 9675941 from add8872c72a68e0f669b65e962af166b15f2c68f to udc-release

Change-Id: I2693ba1acc66587a186958a1848f432a34bcaad9
Android Build Coastguard Worker 2 роки тому
батько
коміт
981f869f72

+ 68 - 0
audio/lynx/aidl_config/audio_effects.xml

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<audio_effects_conf version="2.0" xmlns="http://schemas.android.com/audio/audio_effects_conf/v2_0">
+    <libraries>
+        <library name="bundle" path="libbundlewrapper.so"/>
+        <library name="reverb" path="libreverbwrapper.so"/>
+        <library name="visualizer_sw" path="libvisualizer.so"/>
+        <library name="downmix" path="libdownmix.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"/>
+        <library name="haptic_generator" path="libhapticgenerator.so"/>
+        <library name="spatializer" path="libspatialaudio.so"/>
+    </libraries>
+    <effects>
+        <effectProxy name="bassboost" library="proxy" uuid="2f0871a2-c93c-4824-9664-42eb2909f2ef">
+            <libsw library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
+            <libhw library="offload_effect" uuid="c7e3b29d-e797-4cf9-9912-17c1956510cc"/>
+        </effectProxy>
+        <effectProxy name="virtualizer" library="proxy" uuid="626499c6-647e-455e-8c45-2d106e23c755">
+            <libsw library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
+            <libhw library="offload_effect" uuid="f8f88a03-fdf8-4554-8e60-77fbf8f2d3b0"/>
+        </effectProxy>
+        <effectProxy name="equalizer" library="proxy" uuid="49004f03-3391-4c44-97dd-a043d526ea7d">
+            <libsw library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
+            <libhw library="offload_effect" uuid="50deaa30-4a83-4b1f-bfe3-dec6d605ede0"/>
+        </effectProxy>
+        <effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
+        <effectProxy name="reverb_env_aux" library="proxy" uuid="b8154738-a0a1-4fc0-bb79-c845a3197739">
+            <libsw library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
+            <libhw library="offload_effect" uuid="0c84bcd9-bce4-441b-ba9e-51f80897c949"/>
+        </effectProxy>
+        <effectProxy name="reverb_env_ins" library="proxy" uuid="ba0f19fe-8790-4831-a58b-1f3299dd0bae">
+            <libsw library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
+            <libhw library="offload_effect" uuid="86d1877a-127f-4bdc-9665-c958903ad7b2"/>
+        </effectProxy>
+        <effectProxy name="reverb_pre_aux" library="proxy" uuid="80974a8b-b3be-4c21-8c0b-b392a54e13bc">
+            <libsw library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
+            <libhw library="offload_effect" uuid="4f90220c-9742-4467-a9d7-122f85c01195"/>
+        </effectProxy>
+        <effectProxy name="reverb_pre_ins" library="proxy" uuid="c02d7dce-ca56-4aea-8c83-bbb53e5600e8">
+            <libsw library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
+            <libhw library="offload_effect" uuid="a2cf6b45-360b-49f3-94d7-fdb9837f89e8"/>
+        </effectProxy>
+        <effectProxy name="visualizer" library="proxy" uuid="b27271d9-64d6-413c-b316-80005ad09008">
+            <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="spatializer" library="spatializer" uuid="cc4677de-ff72-11eb-9a03-0242ac130003"/>
+    </effects>
+    <postprocess>
+    </postprocess>
+    <preprocess>
+        <stream type="voice_communication">
+            <apply effect="aec"/>
+            <apply effect="ns"/>
+        </stream>
+    </preprocess>
+</audio_effects_conf>

+ 319 - 0
audio/lynx/aidl_config/audio_platform_configuration.xml

@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2019, 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>
+    <hw_intf>
+        <intf id="BE_HW_RX_INTF_0" name="TDM_RX_0" min_bit="24" min_chan="2" min_rate="48000" block_id="16"/>
+        <intf id="BE_HW_RX_INTF_1" name="TDM_RX_1" min_bit="24" min_chan="2" min_rate="48000" block_id="17"/>
+        <intf id="BE_HW_RX_INTF_2" name="USB_RX" min_bit="24" min_chan="2" min_rate="48000" block_id="20"/>
+        <intf id="BE_HW_RX_INTF_3" name="I2S_RX_0" min_bit="24" min_chan="2" min_rate="48000" block_id="18"/>
+        <!--intf id="BE_HW_RX_INTF_2" name="USB_RX" min_bit="24" min_chan="2" min_rate="48000" ctrl_config="USB device" ctrl_rate="Sample Rate" ctrl_bit="Bit Width" ctrl_chan="Channel"/-->
+        <!--intf id="BE_HW_RX_INTF_3" name="BT_RX"/-->
+        <intf id="BE_VIRTUAL_VOICE_RX_TUNING" block_id="19"/>
+        <intf id="BE_VIRTUAL_VOICE_TX_TUNING" block_id="19"/>
+        <intf id="BE_HW_TX_INTF_0" block_id="134,128,137"/>
+        <intf id="BE_VIRTUAL_CRYSTAL_CLEAR_AUDIO_TUNING" block_id="138"/>
+    </hw_intf>
+
+    <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>
+
+    <!-- The microphone capability is fake data -->
+    <microphone_characteristics>
+        <microphone device_id="builtin_mic_1" type="AUDIO_DEVICE_IN_BUILTIN_MIC" address="bottom" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
+            group="0" index_in_the_group="0" directionality="AUDIO_MICROPHONE_DIRECTIONALITY_OMNI" num_frequency_responses="93"
+            frequencies="100.00 106.00 112.00 118.00 125.00 132.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 212.00 224.00 236.00 250.00 265.00 280.00 300.00 315.00 335.00 355.00 375.00 400.00 425.00 450.00 475.00 500.00 530.00 560.00 600.00 630.00 670.00 710.00 750.00 800.00 850.00 900.00 950.00 1000.00 1060.00 1120.00 1180.00 1250.00 1320.00 1400.00 1500.00 1600.00 1700.00 1800.00 1900.00 2000.00 2120.00 2240.00 2360.00 2500.00 2650.00 2800.00 3000.00 3150.00 3350.00 3550.00 3750.00 4000.00 4250.00 4500.00 4750.00 5000.00 5300.00 5600.00 6000.00 6300.00 6700.00 7100.00 7500.00 8000.00 8500.00 9000.00 9500.00 10000.00 10600.00 11200.00 11800.00 12500.00 13200.00 14000.00 15000.00 16000.00 17000.00 18000.00 19000.00 20000.00"
+            responses="-0.78 -0.71 -0.64 -0.60 -0.55 -0.50 -0.47 -0.42 -0.39 -0.36 -0.34 -0.33 -0.32 -0.29 -0.28 -0.28 -0.27 -0.25 -0.25 -0.24 -0.23 -0.23 -0.22 -0.22 -0.19 -0.17 -0.15 -0.15 -0.14 -0.14 -0.12 -0.11 -0.10 -0.10 -0.08 -0.07 -0.07 -0.04 -0.03 -0.01 0.00 0.04 0.06 0.07 0.08 0.13 0.09 0.14 0.19 0.23 0.28 0.29 0.31 0.37 0.88 0.86 0.77 0.78 0.84 0.86 1.05 1.12 1.18 1.25 1.43 1.66 1.83 2.02 2.23 2.59 2.84 3.35 4.01 6.82 6.62 6.42 7.30 8.23 7.54 12.68 13.76 18.69 19.68 20.90 23.70 25.10 21.65 16.18 18.84 25.44 23.48 23.22 24.89"
+            sensitivity="-37.0" max_spl="132.5" min_spl="28.5" orientation="0.0 0.0 1.0" geometric_location="0.0269 0.0058 0.0079" />
+        <microphone device_id="builtin_mic_2" type="AUDIO_DEVICE_IN_BACK_MIC" address="back" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
+            group="0" index_in_the_group="1" directionality="AUDIO_MICROPHONE_DIRECTIONALITY_OMNI" num_frequency_responses="92"
+            frequencies="106.00 112.00 118.00 125.00 132.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 212.00 224.00 236.00 250.00 265.00 280.00 300.00 315.00 335.00 355.00 375.00 400.00 425.00 450.00 475.00 500.00 530.00 560.00 600.00 630.00 670.00 710.00 750.00 800.00 850.00 900.00 950.00 1000.00 1060.00 1120.00 1180.00 1250.00 1320.00 1400.00 1500.00 1600.00 1700.00 1800.00 1900.00 2000.00 2120.00 2240.00 2360.00 2500.00 2650.00 2800.00 3000.00 3150.00 3350.00 3550.00 3750.00 4000.00 4250.00 4500.00 4750.00 5000.00 5300.00 5600.00 6000.00 6300.00 6700.00 7100.00 7500.00 8000.00 8500.00 9000.00 9500.00 10000.00 10600.00 11200.00 11800.00 12500.00 13200.00 14000.00 15000.00 16000.00 17000.00 18000.00 19000.00 20000.00"
+            responses="-0.75 -0.74 -0.69 -0.65 -0.62 -0.61 -0.56 -0.53 -0.50 -0.47 -0.43 -0.40 -0.37 -0.36 -0.33 -0.30 -0.28 -0.25 -0.24 -0.24 -0.24 -0.25 -0.24 -0.12 -0.10 -0.08 -0.09 -0.07 -0.07 -0.06 -0.06 -0.06 -0.05 -0.04 -0.05 -0.04 -0.01 0.02 0.02 0.00 0.02 0.03 0.07 0.10 0.10 0.13 0.01 0.01 0.10 0.11 0.19 0.24 0.38 0.46 0.26 0.27 0.43 0.76 0.75 1.09 1.09 0.94 1.06 1.21 1.47 1.45 1.36 2.07 2.85 2.90 3.85 4.65 5.84 5.46 6.15 7.50 8.30 10.62 12.70 16.65 20.95 25.41 26.32 20.20 16.60 11.24 7.85 7.62 20.19 7.32 2.87 5.18"
+            sensitivity="-37.0" max_spl="132.5" min_spl="28.5" orientation="0.0 1.0 0.0" geometric_location="0.0546 0.1456 0.00415" />
+        <microphone device_id="builtin_mic_3" type="AUDIO_DEVICE_IN_BUILTIN_MIC" address="top" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
+            group="0" index_in_the_group="2" directionality="AUDIO_MICROPHONE_DIRECTIONALITY_OMNI" num_frequency_responses="92"
+            frequencies="100.00 106.00 112.00 118.00 125.00 132.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 212.00 224.00 236.00 250.00 265.00 280.00 300.00 315.00 335.00 355.00 375.00 400.00 425.00 450.00 475.00 500.00 530.00 560.00 600.00 630.00 670.00 710.00 750.00 800.00 850.00 900.00 950.00 1000.00 1060.00 1120.00 1180.00 1250.00 1320.00 1400.00 1500.00 1600.00 1700.00 1800.00 1900.00 2000.00 2120.00 2240.00 2360.00 2500.00 2650.00 2800.00 3000.00 3150.00 3350.00 3550.00 3750.00 4000.00 4250.00 4500.00 4750.00 5000.00 5300.00 5600.00 6000.00 6300.00 6700.00 7100.00 7500.00 8000.00 8500.00 9000.00 9500.00 10000.00 10600.00 11200.00 11800.00 12500.00 13200.00 14000.00 15000.00 16000.00 17000.00 18000.00 19000.00"
+            responses="-9.24 -9.31 -9.39 -9.45 -9.46 -9.47 -9.50 -9.52 -9.51 -9.52 -9.51 -9.50 -9.49 -9.47 -9.48 -9.49 -9.48 -9.50 -9.51 -9.53 -9.55 -9.59 -9.63 -9.67 -9.58 -9.57 -9.65 -9.68 -9.71 -9.75 -9.79 -9.84 -9.87 -9.87 -9.90 -9.90 -9.91 -9.97 -10.01 -10.05 -9.85 -9.93 -9.94 -9.98 -10.04 -10.12 -10.28 -10.25 -10.01 -9.86 -9.81 -9.82 -9.61 -9.46 -8.27 -8.42 -8.98 -8.99 -8.82 -9.21 -8.92 -8.97 -9.30 -9.44 -9.52 -9.28 -9.09 -8.81 -7.02 -5.72 -5.30 -7.26 -8.39 -12.28 -8.23 -6.99 -5.52 -4.87 -3.82 -6.09 0.00 -2.15 -0.26 1.48 5.22 10.92 6.41 9.55 12.96 3.35 22.00 19.75"
+            sensitivity="-37.0" max_spl="132.5" min_spl="28.5" orientation="0.0 0.0 1.0" geometric_location="0.0274 0.14065 0.0079" />
+    </microphone_characteristics>
+
+    <!-- The microphone mapping of backend device is fake data -->
+    <input_backend_cfg_mic_mapping>
+            <backend_cfg in_cfg="IN_CAMCORDER_LANDSCAPE_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_CAMCORDER_INVERT_LANDSCAPE_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_CAMCORDER_PORTRAIT_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_CAMCORDER_SELFIE_LANDSCAPE_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_CAMCORDER_SELFIE_INVERT_LANDSCAPE_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_CAMCORDER_SELFIE_PORTRAIT_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_HANDSET_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_VOICECALL_HANDSET_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_VOICECALL_SPEAKER_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_USB_TTY_VCO_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_VOICE_RECOGN_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_UNPROCESSED_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_UNPROCESSED_DUAL_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_UNPROCESSED_TRIPLE_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+            </backend_cfg>
+    </input_backend_cfg_mic_mapping>
+
+    <usecase_attr>
+        <!-- for output with AUDIO_OUTPUT_FLAG_RAW, 32 periods * 64 frames(around 1.3ms) * 2ch * 4(s32) = 16384 bytes -->
+        <usecase id="UC_RAW_PLAYBACK" dev1="23" dyn_path="true" dsp_vol="false" mmap="true" period="64" period_num="32"/>
+        <!-- for output with AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST, 4 * 10ms buffer -->
+        <usecase id="UC_LOW_LATENCY_PLAYBACK" dev1="1" dyn_path="true" dsp_vol="false" mmap="false" period="10" period_num="4"/>
+        <!-- for output with AUDIO_OUTPUT_FLAG_MMAP_NOIRQ, 40 periods * 48 frames/period(=1ms w/ 48k sample rate) * 2ch *4(float) = 15360 bytes -->
+        <usecase id="UC_MMAP_PLAYBACK" dev1="0" dyn_path="true" dsp_vol="false" mmap="true" period="1" period_num="40"/>
+        <!-- for output with AUDIO_OUTPUT_FLAG_DEEP_BUFFER, 4 * 20ms buffer -->
+        <usecase id="UC_DEEP_BUFFER_PLAYBACK" dev1="5" dyn_path="true" dsp_vol="false" mmap="false" period="20" period_num="4"/>
+        <!-- dev1: voice-call downlink dev2: voice-clal uplink -->
+        <usecase id="UC_VOICE_CALL" dev1="4" dev2="11"/>
+        <!-- for output with flag AUDIO_OUTPUT_SPATIALIZER -->
+        <usecase id="UC_IMMERSIVE_PLAYBACK" dev1="30" dyn_path="true" dsp_vol="false" mmap="false" period="10" period_num="3"/>
+        <!-- for output with AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD, 4 * 128KB buffer -->
+        <usecase id="UC_COMPRESSED_OFFLOAD_PLAYBACK" dev1="6" dyn_path="true" dsp_vol="true" mmap="false" period="131072" period_num="4" pre_proc_id="14"/>
+        <!-- dev1: audio dev2: haptic -->
+        <usecase id="UC_HAPTIC_AUDIO" dev1="2" dev2="7" period="10" period_num="4"/>
+        <!-- for VOIP output, 4 * 10ms buffer -->
+        <usecase id="UC_VOIP_PLAYBACK" dev1="16" dyn_path="true" dsp_vol="true" mmap="false" period="10" period_num="4" pcm_ch="2"/>
+        <!-- for input -->
+        <usecase id="UC_AUDIO_RECORD" dev1="8" dyn_path="true" dsp_vol="false" mmap="false" period="20" period_num="4"/>
+        <usecase id="UC_HOSTLESS_UL" dev1="15"/>
+        <!-- for VOIP input, 4 * 10ms buffer -->
+        <usecase id="UC_VOIP_RECORD" dev1="17" dyn_path="true" dsp_vol="false" mmap="false" period="20" period_num="2"/>
+        <!-- for input wit AUDIO_INPUT_FLAG_FAST  480 periods * 1ms buffer, 16-bit, 2ch, buffer size 92160 bytes-->
+        <usecase id="UC_LOW_LATENCY_AUDIO_RECORD" dev1="10" dyn_path="true" dsp_vol="false" mmap="true" period="1" period_num="480"/>
+        <!-- for input wit AUDIO_INPUT_FLAG_MMAP_NOIRQ 240 periods * 1ms buffer, 32-bit,2 ch, buffer size 92160 bytes -->
+        <usecase id="UC_MMAP_RECORD" dev1="9" dyn_path="true" mmap="true" period="1" period_num="240"/>
+        <!-- for hifi -->
+        <usecase id="UC_HIFI_PLAYBACK" dev1="25" period="20" period_num="4"/>
+        <usecase id="UC_HIFI_RECORD" dev1="26" period="20" period_num="4"/>
+    </usecase_attr>
+
+    <dsp_latency>
+        <usecase id="UC_LOW_LATENCY_PLAYBACK" type="playback">
+            <be_cfg be_id="OUT_SPEAKER_BE_CFG" latency="20000"/>
+            <be_cfg be_id="OUT_USB_HEADSET_BE_CFG" latency="60000"/>
+            <be_cfg be_id="OUT_USB_HEADPHONE_BE_CFG" latency="60000"/>
+            <be_cfg be_id="OUT_A2DP_BE_CFG" latency="60000"/>
+            <be_cfg be_id="OUT_BLE_BE_CFG" latency="60000"/>
+        </usecase>
+
+        <usecase id="UC_DEEP_BUFFER_PLAYBACK" type="playback">
+            <be_cfg be_id="OUT_SPEAKER_BE_CFG" latency="70000"/>
+            <be_cfg be_id="OUT_USB_HEADSET_BE_CFG" latency="70000"/>
+            <be_cfg be_id="OUT_USB_HEADPHONE_BE_CFG" latency="70000"/>
+            <be_cfg be_id="OUT_A2DP_BE_CFG" latency="180000"/>
+            <be_cfg be_id="OUT_BLE_BE_CFG" latency="80000"/>
+        </usecase>
+
+        <usecase id="UC_COMPRESSED_OFFLOAD_PLAYBACK" type="playback">
+            <be_cfg be_id="OUT_SPEAKER_BE_CFG" latency="40000"/>
+            <be_cfg be_id="OUT_USB_HEADSET_BE_CFG" latency="40000"/>
+            <be_cfg be_id="OUT_USB_HEADPHONE_BE_CFG" latency="40000"/>
+            <be_cfg be_id="OUT_A2DP_BE_CFG" latency="70000"/>
+            <be_cfg be_id="OUT_BLE_BE_CFG" latency="20000"/>
+        </usecase>
+
+        <usecase id="UC_IMMERSIVE_PLAYBACK" type="playback">
+            <be_cfg be_id="OUT_A2DP_BE_CFG" latency="100000"/>
+        </usecase>
+
+
+        <usecase id="UC_AUDIO_RECORD" type="capture">
+            <be_cfg be_id="IN_CAMCORDER_LANDSCAPE_BE_CFG" latency="160000"/>
+            <be_cfg be_id="IN_CAMCORDER_INVERT_LANDSCAPE_BE_CFG" latency="160000"/>
+            <be_cfg be_id="IN_CAMCORDER_PORTRAIT_BE_CFG" latency="160000"/>
+            <be_cfg be_id="IN_CAMCORDER_SELFIE_LANDSCAPE_BE_CFG" latency="160000"/>
+            <be_cfg be_id="IN_CAMCORDER_SELFIE_INVERT_LANDSCAPE_BE_CFG" latency="160000"/>
+            <be_cfg be_id="IN_CAMCORDER_SELFIE_PORTRAIT_BE_CFG" latency="160000"/>
+            <be_cfg be_id="IN_CAMCORDER_MIC_BE_CFG" latency="160000"/>
+            <be_cfg be_id="IN_CAMCORDER_TRIPLE_MIC_BE_CFG" latency="160000"/>
+            <be_cfg be_id="IN_BTSCO_MIC_BE_CFG" latency="40000"/>
+            <be_cfg be_id="IN_BTSCO_MIC_NREC_BE_CFG" latency="40000"/>
+            <be_cfg be_id="IN_BTSCO_MIC_WB_BE_CFG" latency="40000"/>
+            <be_cfg be_id="IN_BTSCO_MIC_WB_NREC_BE_CFG" latency="40000"/>
+        </usecase>
+    </dsp_latency>
+
+    <soundcard_name name="google,aoc-snd-card" />
+    <features>
+        <feature name="ThermalThrottle=Type:SKIN,Name:VIRTUAL-SKIN"/>
+        <feature name="BatteryThrottle=Type:BCL_VOLTAGE,Name:BCL_AUDIO_BAACL,Strategy:MediaSpeakerAndScreenOn"/>
+    </features>
+
+    <cfg_attr>
+        <cfg id="OUT_SPEAKER_BE_CFG" intf_name="TDM_RX_0" mux="HW_MUX_GP_0" tuning_id="2"/>
+        <cfg id="OUT_HAC_HANDSET_BE_CFG" intf_name="TDM_RX_1" mux="HW_MUX_GP_1" be_path="hac-handset"/>
+        <cfg id="OUT_USB_HEADSET_BE_CFG">
+            <override product="Blackbird" tuning_id="22"/>
+            <override product="Condor" tuning_id="33"/>
+        </cfg>
+        <cfg id="OUT_USB_TTY_FULL_BE_CFG" be_path="usb-headphone" codec_path="usb-headphone"/>
+        <cfg id="OUT_USB_TTY_VCO_BE_CFG" be_path="usb-headphone" codec_path="usb-headphone"/>
+        <cfg id="OUT_USB_TTY_HCO_BE_CFG" be_path="NULL" codec_path="voice-speaker"/>
+        <cfg id="IN_USB_TTY_FULL_MIC_BE_CFG" be_path="usb-headset-mic" codec_path="usb-headset-mic" mux="HW_MUX_GP_0"/>
+        <cfg id="IN_USB_TTY_VCO_MIC_BE_CFG" be_path="NULL" codec_path="voice-speaker-mic"/>
+        <cfg id="IN_USB_TTY_HCO_MIC_BE_CFG" be_path="usb-headset-mic" codec_path="usb-headset-mic" mux="HW_MUX_GP_0"/>
+        <cfg id="IN_SPK_VI_BE_CFG" codec_path="NULL" be_path="spk-vi"/>
+        <cfg id="IN_HANDSET_MIC_BE_CFG" tuning_id="62"/>
+        <cfg id="IN_HANDSET_DUAL_MIC_BE_CFG" tuning_id="63"/>
+        <cfg id="IN_HANDSET_TRIPLE_MIC_BE_CFG" tuning_id="64"/>
+        <cfg id="IN_CAMCORDER_LANDSCAPE_BE_CFG" tuning_id="70"/>
+        <cfg id="IN_CAMCORDER_INVERT_LANDSCAPE_BE_CFG" tuning_id="71"/>
+        <cfg id="IN_CAMCORDER_PORTRAIT_BE_CFG" tuning_id="72"/>
+        <cfg id="IN_CAMCORDER_SELFIE_LANDSCAPE_BE_CFG" tuning_id="73"/>
+        <cfg id="IN_CAMCORDER_SELFIE_INVERT_LANDSCAPE_BE_CFG" tuning_id="74"/>
+        <cfg id="IN_CAMCORDER_SELFIE_PORTRAIT_BE_CFG" tuning_id="75"/>
+        <cfg id="IN_CAMCORDER_MIC_BE_CFG" tuning_id="70"/>
+        <cfg id="IN_CAMCORDER_TRIPLE_MIC_BE_CFG" tuning_id="70"/>
+        <cfg id="IN_BTSCO_MIC_BE_CFG" mux="HW_MUX_GP_0"/>
+        <cfg id="IN_BTSCO_MIC_NREC_BE_CFG" mux="HW_MUX_GP_0"/>
+        <cfg id="IN_BTSCO_MIC_WB_BE_CFG" mux="HW_MUX_GP_0"/>
+        <cfg id="IN_BTSCO_MIC_WB_NREC_BE_CFG" mux="HW_MUX_GP_0"/>
+        <cfg id="IN_VOICE_RECOGN_USB_HEADSET_MIC_BE_CFG" mux="HW_MUX_GP_0"/>
+        <cfg id="IN_USB_HEADSET_MIC_BE_CFG" mux="HW_MUX_GP_0"/>
+        <cfg id="IN_VOICECALL_USB_HEADSET_MIC_BE_CFG" mux="HW_MUX_GP_0"/>
+        <cfg id="IN_UNPROCESSED_USB_HEADSET_MIC_BE_CFG" mux="HW_MUX_GP_0"/>
+    </cfg_attr>
+
+    <xlate_id>
+        <item component="TUNING_COMPONENT_WAVES" id="2"/>
+        <item component="TUNING_COMPONENT_FORTEMEDIA" id="3"/>
+        <item component="TUNING_COMPONENT_CAMCORDER" id="6"/>
+    </xlate_id>
+
+    <voip_db_mapping>
+        <voip_path id="VOIP_RX_USB" value="0.01,0.02,0.04,0.1,0.21,0.47,1.0"/>
+    </voip_db_mapping>
+
+    <device_handle>
+        <handler libname="audio_bt_aoc.so"/>
+        <handler libname="audio_usb_aoc.so" argu="MaxSamplingRate=96000,UnsupportedFormat=S24_LE"/>
+    </device_handle>
+
+    <external_module>
+        <module libname="audio_spk_35l41.so" argu="AcousticShockProtection"/>
+        <module libname="audio_waves_aoc.so" argu="Sink=SPK:1"/>
+        <module libname="audio_cca_aoc.so"/>
+        <module libname="audio_fortemedia_aoc.so" argu="DL_CH=y VoIP_DLCHs=SPK:2,USB:2 VoIP_Rate=32000 BOOST_USB_SWB_CLK=y SHARED_MODULE=1130578253"/>
+        <module libname="liboffloadeffect.so"/>
+        <module libname="audio_amcs_ext.so"/>
+        <module libname="audio_bluenote_aoc.so"/>
+    </external_module>
+</audio_platform_configuration>

+ 189 - 0
audio/lynx/aidl_config/audio_platform_configuration_aidl.xml

@@ -0,0 +1,189 @@
+<?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>
+
+    <!-- The microphone capability is fake data -->
+    <microphone_characteristics>
+        <microphone device_id="builtin_mic_1" type="AUDIO_DEVICE_IN_BUILTIN_MIC" address="bottom" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
+            group="0" index_in_the_group="0" directionality="AUDIO_MICROPHONE_DIRECTIONALITY_OMNI" num_frequency_responses="93"
+            frequencies="100.00 106.00 112.00 118.00 125.00 132.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 212.00 224.00 236.00 250.00 265.00 280.00 300.00 315.00 335.00 355.00 375.00 400.00 425.00 450.00 475.00 500.00 530.00 560.00 600.00 630.00 670.00 710.00 750.00 800.00 850.00 900.00 950.00 1000.00 1060.00 1120.00 1180.00 1250.00 1320.00 1400.00 1500.00 1600.00 1700.00 1800.00 1900.00 2000.00 2120.00 2240.00 2360.00 2500.00 2650.00 2800.00 3000.00 3150.00 3350.00 3550.00 3750.00 4000.00 4250.00 4500.00 4750.00 5000.00 5300.00 5600.00 6000.00 6300.00 6700.00 7100.00 7500.00 8000.00 8500.00 9000.00 9500.00 10000.00 10600.00 11200.00 11800.00 12500.00 13200.00 14000.00 15000.00 16000.00 17000.00 18000.00 19000.00 20000.00"
+            responses="-0.78 -0.71 -0.64 -0.60 -0.55 -0.50 -0.47 -0.42 -0.39 -0.36 -0.34 -0.33 -0.32 -0.29 -0.28 -0.28 -0.27 -0.25 -0.25 -0.24 -0.23 -0.23 -0.22 -0.22 -0.19 -0.17 -0.15 -0.15 -0.14 -0.14 -0.12 -0.11 -0.10 -0.10 -0.08 -0.07 -0.07 -0.04 -0.03 -0.01 0.00 0.04 0.06 0.07 0.08 0.13 0.09 0.14 0.19 0.23 0.28 0.29 0.31 0.37 0.88 0.86 0.77 0.78 0.84 0.86 1.05 1.12 1.18 1.25 1.43 1.66 1.83 2.02 2.23 2.59 2.84 3.35 4.01 6.82 6.62 6.42 7.30 8.23 7.54 12.68 13.76 18.69 19.68 20.90 23.70 25.10 21.65 16.18 18.84 25.44 23.48 23.22 24.89"
+            sensitivity="-37.0" max_spl="132.5" min_spl="28.5" orientation="0.0 0.0 1.0" geometric_location="0.0269 0.0058 0.0079" />
+        <microphone device_id="builtin_mic_2" type="AUDIO_DEVICE_IN_BACK_MIC" address="back" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
+            group="0" index_in_the_group="1" directionality="AUDIO_MICROPHONE_DIRECTIONALITY_OMNI" num_frequency_responses="92"
+            frequencies="106.00 112.00 118.00 125.00 132.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 212.00 224.00 236.00 250.00 265.00 280.00 300.00 315.00 335.00 355.00 375.00 400.00 425.00 450.00 475.00 500.00 530.00 560.00 600.00 630.00 670.00 710.00 750.00 800.00 850.00 900.00 950.00 1000.00 1060.00 1120.00 1180.00 1250.00 1320.00 1400.00 1500.00 1600.00 1700.00 1800.00 1900.00 2000.00 2120.00 2240.00 2360.00 2500.00 2650.00 2800.00 3000.00 3150.00 3350.00 3550.00 3750.00 4000.00 4250.00 4500.00 4750.00 5000.00 5300.00 5600.00 6000.00 6300.00 6700.00 7100.00 7500.00 8000.00 8500.00 9000.00 9500.00 10000.00 10600.00 11200.00 11800.00 12500.00 13200.00 14000.00 15000.00 16000.00 17000.00 18000.00 19000.00 20000.00"
+            responses="-0.75 -0.74 -0.69 -0.65 -0.62 -0.61 -0.56 -0.53 -0.50 -0.47 -0.43 -0.40 -0.37 -0.36 -0.33 -0.30 -0.28 -0.25 -0.24 -0.24 -0.24 -0.25 -0.24 -0.12 -0.10 -0.08 -0.09 -0.07 -0.07 -0.06 -0.06 -0.06 -0.05 -0.04 -0.05 -0.04 -0.01 0.02 0.02 0.00 0.02 0.03 0.07 0.10 0.10 0.13 0.01 0.01 0.10 0.11 0.19 0.24 0.38 0.46 0.26 0.27 0.43 0.76 0.75 1.09 1.09 0.94 1.06 1.21 1.47 1.45 1.36 2.07 2.85 2.90 3.85 4.65 5.84 5.46 6.15 7.50 8.30 10.62 12.70 16.65 20.95 25.41 26.32 20.20 16.60 11.24 7.85 7.62 20.19 7.32 2.87 5.18"
+            sensitivity="-37.0" max_spl="132.5" min_spl="28.5" orientation="0.0 1.0 0.0" geometric_location="0.0546 0.1456 0.00415" />
+        <microphone device_id="builtin_mic_3" type="AUDIO_DEVICE_IN_BUILTIN_MIC" address="top" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
+            group="0" index_in_the_group="2" directionality="AUDIO_MICROPHONE_DIRECTIONALITY_OMNI" num_frequency_responses="92"
+            frequencies="100.00 106.00 112.00 118.00 125.00 132.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 212.00 224.00 236.00 250.00 265.00 280.00 300.00 315.00 335.00 355.00 375.00 400.00 425.00 450.00 475.00 500.00 530.00 560.00 600.00 630.00 670.00 710.00 750.00 800.00 850.00 900.00 950.00 1000.00 1060.00 1120.00 1180.00 1250.00 1320.00 1400.00 1500.00 1600.00 1700.00 1800.00 1900.00 2000.00 2120.00 2240.00 2360.00 2500.00 2650.00 2800.00 3000.00 3150.00 3350.00 3550.00 3750.00 4000.00 4250.00 4500.00 4750.00 5000.00 5300.00 5600.00 6000.00 6300.00 6700.00 7100.00 7500.00 8000.00 8500.00 9000.00 9500.00 10000.00 10600.00 11200.00 11800.00 12500.00 13200.00 14000.00 15000.00 16000.00 17000.00 18000.00 19000.00"
+            responses="-9.24 -9.31 -9.39 -9.45 -9.46 -9.47 -9.50 -9.52 -9.51 -9.52 -9.51 -9.50 -9.49 -9.47 -9.48 -9.49 -9.48 -9.50 -9.51 -9.53 -9.55 -9.59 -9.63 -9.67 -9.58 -9.57 -9.65 -9.68 -9.71 -9.75 -9.79 -9.84 -9.87 -9.87 -9.90 -9.90 -9.91 -9.97 -10.01 -10.05 -9.85 -9.93 -9.94 -9.98 -10.04 -10.12 -10.28 -10.25 -10.01 -9.86 -9.81 -9.82 -9.61 -9.46 -8.27 -8.42 -8.98 -8.99 -8.82 -9.21 -8.92 -8.97 -9.30 -9.44 -9.52 -9.28 -9.09 -8.81 -7.02 -5.72 -5.30 -7.26 -8.39 -12.28 -8.23 -6.99 -5.52 -4.87 -3.82 -6.09 0.00 -2.15 -0.26 1.48 5.22 10.92 6.41 9.55 12.96 3.35 22.00 19.75"
+            sensitivity="-37.0" max_spl="132.5" min_spl="28.5" orientation="0.0 0.0 1.0" geometric_location="0.0274 0.14065 0.0079" />
+    </microphone_characteristics>
+
+    <!-- The microphone mapping of backend device is fake data -->
+    <input_backend_cfg_mic_mapping>
+            <backend_cfg in_cfg="IN_CAMCORDER_LANDSCAPE_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_CAMCORDER_INVERT_LANDSCAPE_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_CAMCORDER_PORTRAIT_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_CAMCORDER_SELFIE_LANDSCAPE_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_CAMCORDER_SELFIE_INVERT_LANDSCAPE_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_CAMCORDER_SELFIE_PORTRAIT_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_HANDSET_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_VOICECALL_HANDSET_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_VOICECALL_SPEAKER_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_USB_TTY_VCO_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_VOICE_RECOGN_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_UNPROCESSED_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_UNPROCESSED_DUAL_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+            </backend_cfg>
+            <backend_cfg in_cfg="IN_UNPROCESSED_TRIPLE_MIC_BE_CFG">
+                <mic_info mic_device_id="builtin_mic_1"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+                <mic_info mic_device_id="builtin_mic_2"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+                <mic_info mic_device_id="builtin_mic_3"
+                    channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+            </backend_cfg>
+    </input_backend_cfg_mic_mapping>
+
+
+    <soundcard_name name="google,aoc-snd-card" />
+    <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 tuner_builder: format is "type="x" codec_name="y" argu="z". argu is optional. -->
+    <tuner_builder>
+        <tuner type="playback" name="waves" argu="Sink=SPK:1 ThermistorsName=VIRTUAL-SKIN"/>
+        <tuner type="telephony" name="fortemedia" argu="VoIP_DLCHs=SPK:2,USB:2 VoIP_Rate=32000 BOOST_USB_SWB_CLK=y"/>
+        <tuner type="capture" name="gs_capture"/>
+    </tuner_builder>
+</audio_platform_configuration>

+ 174 - 0
audio/lynx/aidl_config/audio_policy_configuration.xml

@@ -0,0 +1,174 @@
+<?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="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="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>
+            </mixPorts>
+            <devicePorts>
+                <!-- Output devices declaration, i.e. Sink DEVICE PORT -->
+                <devicePort tagName="Earpiece" type="AUDIO_DEVICE_OUT_EARPIECE" role="sink">
+                </devicePort>
+                <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink">
+                </devicePort>
+                <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink">
+                </devicePort>
+                <devicePort tagName="Wired Headset" type="AUDIO_DEVICE_OUT_WIRED_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="Wired Headphones" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink">
+                </devicePort>
+                <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
+                </devicePort>
+                <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="Aux Digital" type="AUDIO_DEVICE_OUT_AUX_DIGITAL" role="sink">
+                </devicePort>
+                <devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
+                </devicePort>
+                <!-- Input devices declaration, i.e. Source DEVICE PORT -->
+                <devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
+                </devicePort>
+                <devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source">
+                </devicePort>
+                <devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET" role="source">
+                </devicePort>
+                <devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
+                </devicePort>
+                <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>
+                <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source">
+                </devicePort>
+                <!-- 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>
+                <devicePort tagName="Echo Ref In" type="AUDIO_DEVICE_IN_ECHO_REFERENCE" role="source">
+                </devicePort>
+            </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"/>
+                <route type="mix" sink="Speaker"
+                       sources="primary output,deep buffer,haptic,voip_rx"/>
+                <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="Telephony Tx" sources="incall playback" />
+                <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>

+ 239 - 0
audio/lynx/aidl_config/audio_policy_configuration_a2dp_offload_disabled.xml

@@ -0,0 +1,239 @@
+<?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">
+                    <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="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="mmap_no_irq_out" 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="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="voice call tx" role="source">
+                    <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="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="hotword input" role="sink" flags="AUDIO_INPUT_FLAG_HW_HOTWORD" maxActiveCount="0" >
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+                </mixPort>
+                <mixPort name="incall capture" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+                </mixPort>
+                <mixPort name="voice call rx" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+                </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="mmap_no_irq_in" 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>
+                <mixPort name="hifi_playback" role="source" />
+                <mixPort name="hifi_input" role="sink" />
+                <mixPort name="echo_ref_input" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+                             samplingRates="48000"
+                             channelMasks="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>
+                <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink">
+                </devicePort>
+                <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink">
+                </devicePort>
+                <devicePort tagName="Wired Headset" type="AUDIO_DEVICE_OUT_WIRED_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="Wired Headphones" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink">
+                </devicePort>
+                <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
+                </devicePort>
+                <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="Aux Digital" type="AUDIO_DEVICE_OUT_AUX_DIGITAL" role="sink">
+                </devicePort>
+                <devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
+                </devicePort>
+                <!-- Input devices declaration, i.e. Source DEVICE PORT -->
+                <devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
+                </devicePort>
+                <devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source">
+                </devicePort>
+                <devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET" role="source">
+                </devicePort>
+                <devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
+                </devicePort>
+                <devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source">
+                </devicePort>
+                <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source">
+                </devicePort>
+                <!-- 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>
+                <devicePort tagName="Echo Ref In" type="AUDIO_DEVICE_IN_ECHO_REFERENCE" role="source">
+                </devicePort>
+            </devicePorts>
+            <!-- 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"/>
+                <route type="mix" sink="Speaker Safe"
+                       sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,compressed_offload"/>
+                <route type="mix" sink="Earpiece"
+                       sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,compressed_offload"/>
+                <route type="mix" sink="USB Device Out"
+                       sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback,compressed_offload,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,immersive_out"/>
+                <route type="mix" sink="BT SCO"
+                       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,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"/>
+                <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"/>
+                <route type="mix" sink="hotword input"
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                <route type="mix" sink="incall capture" sources="Voice Call And Telephony Rx" />
+                <route type="mix" sink="voice call rx" sources="Voice Call And Telephony Rx" />
+                <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,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,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>
+        </module>
+        <!-- Bluetooth Audio HAL -->
+        <xi:include href="bluetooth_audio_policy_configuration_7_0.xml"/>
+        <!-- Usb Audio HAL -->
+        <module name="usbv2" halVersion="2.0">
+            <mixPorts>
+                <mixPort name="usb_accessory output" role="source">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
+            </mixPorts>
+            <devicePorts>
+                <devicePort tagName="USB Host Out" type="AUDIO_DEVICE_OUT_USB_ACCESSORY" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </devicePort>
+            </devicePorts>
+            <routes>
+                <route type="mix" sink="USB Host Out"
+                       sources="usb_accessory output"/>
+            </routes>
+        </module>
+        <!-- Remote Submix Audio HAL -->
+        <xi:include href="r_submix_audio_policy_configuration.xml"/>
+    </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>

+ 235 - 0
audio/lynx/aidl_config/audio_policy_configuration_bluetooth_legacy_hal.xml

@@ -0,0 +1,235 @@
+<?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">
+                    <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="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="mmap_no_irq_out" 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="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="voice call tx" role="source">
+                    <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="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="hotword input" role="sink" flags="AUDIO_INPUT_FLAG_HW_HOTWORD" maxActiveCount="0" >
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+                </mixPort>
+                <mixPort name="incall capture" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+                </mixPort>
+                <mixPort name="voice call rx" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+                </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="mmap_no_irq_in" 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>
+                <mixPort name="hifi_playback" role="source" />
+                <mixPort name="hifi_input" role="sink" />
+                <mixPort name="echo_ref_input" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+                             samplingRates="48000"
+                             channelMasks="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>
+                <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink">
+                </devicePort>
+                <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink">
+                </devicePort>
+                <devicePort tagName="Wired Headset" type="AUDIO_DEVICE_OUT_WIRED_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="Wired Headphones" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink">
+                </devicePort>
+                <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
+                </devicePort>
+                <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="Aux Digital" type="AUDIO_DEVICE_OUT_AUX_DIGITAL" role="sink">
+                </devicePort>
+                <devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
+                </devicePort>
+                <!-- Input devices declaration, i.e. Source DEVICE PORT -->
+                <devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
+                </devicePort>
+                <devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source">
+                </devicePort>
+                <devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET" role="source">
+                </devicePort>
+                <devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
+                </devicePort>
+                <devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source">
+                </devicePort>
+                <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source">
+                </devicePort>
+                <!-- 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>
+                <devicePort tagName="Echo Ref In" type="AUDIO_DEVICE_IN_ECHO_REFERENCE" role="source">
+                </devicePort>
+            </devicePorts>
+            <!-- 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"/>
+                <route type="mix" sink="Speaker Safe"
+                       sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,compressed_offload"/>
+                <route type="mix" sink="Earpiece"
+                       sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,compressed_offload"/>
+                <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,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"/>
+                <route type="mix" sink="BT SCO Car Kit"
+                       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"/>
+                <route type="mix" sink="hotword input"
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                <route type="mix" sink="incall capture" sources="Voice Call And Telephony Rx" />
+                <route type="mix" sink="voice call rx" sources="Voice Call And Telephony Rx" />
+                <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,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,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>
+        </module>
+        <!-- A2dp Audio HAL -->
+        <xi:include href="a2dp_audio_policy_configuration_7_0.xml"/>
+        <!-- Usb Audio HAL -->
+        <module name="usbv2" halVersion="2.0">
+            <mixPorts>
+                <mixPort name="usb_accessory output" role="source">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
+            </mixPorts>
+            <devicePorts>
+                <devicePort tagName="USB Host Out" type="AUDIO_DEVICE_OUT_USB_ACCESSORY" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </devicePort>
+            </devicePorts>
+            <routes>
+                <route type="mix" sink="USB Host Out"
+                       sources="usb_accessory output"/>
+            </routes>
+        </module>
+        <!-- Remote Submix Audio HAL -->
+        <xi:include href="r_submix_audio_policy_configuration.xml"/>
+    </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>

+ 260 - 0
audio/lynx/aidl_config/audio_policy_configuration_le_offload_disabled.xml

@@ -0,0 +1,260 @@
+<?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">
+                    <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="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="mmap_no_irq_out" 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="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="voice call tx" role="source">
+                    <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="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="hotword input" role="sink" flags="AUDIO_INPUT_FLAG_HW_HOTWORD" maxActiveCount="0" >
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+                </mixPort>
+                <mixPort name="incall capture" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+                </mixPort>
+                <mixPort name="voice call rx" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+                </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="mmap_no_irq_in" 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>
+                <mixPort name="hifi_playback" role="source" />
+                <mixPort name="hifi_input" role="sink" />
+                <mixPort name="echo_ref_input" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+                             samplingRates="48000"
+                             channelMasks="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>
+                <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink">
+                </devicePort>
+                <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink">
+                </devicePort>
+                <devicePort tagName="Wired Headset" type="AUDIO_DEVICE_OUT_WIRED_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="Wired Headphones" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink">
+                </devicePort>
+                <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
+                </devicePort>
+                <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="Aux Digital" type="AUDIO_DEVICE_OUT_AUX_DIGITAL" role="sink">
+                </devicePort>
+                <devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
+                </devicePort>
+                <!-- Input devices declaration, i.e. Source DEVICE PORT -->
+                <devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
+                </devicePort>
+                <devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source">
+                </devicePort>
+                <devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET" role="source">
+                </devicePort>
+                <devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
+                </devicePort>
+                <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="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source">
+                </devicePort>
+                <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source">
+                </devicePort>
+                <!-- 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>
+                <devicePort tagName="Echo Ref In" type="AUDIO_DEVICE_IN_ECHO_REFERENCE" role="source">
+                </devicePort>
+            </devicePorts>
+            <!-- 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"/>
+                <route type="mix" sink="Speaker Safe"
+                       sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,compressed_offload"/>
+                <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,raw,mmap_no_irq_out,immersive_out"/>
+                <route type="mix" sink="BT A2DP Headphones"
+                       sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out,immersive_out"/>
+                <route type="mix" sink="BT A2DP Speaker"
+                       sources="primary output,deep buffer,haptic,voip_rx,compressed_offload,raw,mmap_no_irq_out,immersive_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,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,immersive_out"/>
+                <route type="mix" sink="BT SCO"
+                       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,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"/>
+                <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"/>
+                <route type="mix" sink="hotword input"
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                <route type="mix" sink="incall capture" sources="Voice Call And Telephony Rx" />
+                <route type="mix" sink="voice call rx" sources="Voice Call And Telephony Rx" />
+                <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,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,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>
+        </module>
+        <!-- Bluetooth Audio HAL -->
+        <xi:include href="bluetooth_audio_policy_configuration_7_0.xml"/>
+        <!-- Usb Audio HAL -->
+        <module name="usbv2" halVersion="2.0">
+            <mixPorts>
+                <mixPort name="usb_accessory output" role="source">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
+            </mixPorts>
+            <devicePorts>
+                <devicePort tagName="USB Host Out" type="AUDIO_DEVICE_OUT_USB_ACCESSORY" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </devicePort>
+            </devicePorts>
+            <routes>
+                <route type="mix" sink="USB Host Out"
+                       sources="usb_accessory output"/>
+            </routes>
+        </module>
+        <!-- Remote Submix Audio HAL -->
+        <xi:include href="r_submix_audio_policy_configuration.xml"/>
+    </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>
+

+ 71 - 0
audio/lynx/aidl_config/bluetooth_with_le_audio_policy_configuration_7_0.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Bluetooth Audio HAL Audio Policy Configuration file -->
+<module name="bluetooth" halVersion="2.0">
+    <mixPorts>
+        <!-- A2DP Audio Ports -->
+        <mixPort name="a2dp output" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER"/>
+        <!-- Hearing AIDs Audio Ports -->
+        <mixPort name="hearing aid output" role="source">
+            <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                     samplingRates="24000 16000"
+                     channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+        </mixPort>
+        <!-- Le Audio Audio Ports -->
+        <mixPort name="le audio output" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER">
+            <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                     samplingRates="44100 48000"
+                     channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+        </mixPort>
+        <mixPort name="le audio input" role="sink">
+            <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                     samplingRates="8000 16000 24000 32000 44100 48000"
+                     channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+            <profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED"
+                     samplingRates="8000 16000 24000 32000 44100 48000"
+                     channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+            <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+                     samplingRates="8000 16000 24000 32000 44100 48000"
+                     channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+        </mixPort>
+    </mixPorts>
+    <devicePorts>
+        <!-- A2DP Audio Ports -->
+        <devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink">
+            <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                     samplingRates="44100 48000 88200 96000"
+                     channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+        </devicePort>
+        <devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink">
+            <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                     samplingRates="44100 48000 88200 96000"
+                     channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+        </devicePort>
+        <devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink">
+            <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                     samplingRates="44100 48000 88200 96000"
+                     channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+        </devicePort>
+        <!-- Hearing AIDs Audio Ports -->
+        <devicePort tagName="BT Hearing Aid Out" type="AUDIO_DEVICE_OUT_HEARING_AID" role="sink"/>
+        <!-- BLE Audio Ports -->
+        <devicePort tagName="BLE Headset Out" type="AUDIO_DEVICE_OUT_BLE_HEADSET" role="sink"/>
+        <devicePort tagName="BLE Speaker Out" type="AUDIO_DEVICE_OUT_BLE_SPEAKER" role="sink"/>
+        <devicePort tagName="BLE Headset In" type="AUDIO_DEVICE_IN_BLE_HEADSET" role="source"/>
+    </devicePorts>
+    <routes>
+        <route type="mix" sink="BT A2DP Out"
+               sources="a2dp output"/>
+        <route type="mix" sink="BT A2DP Headphones"
+               sources="a2dp output"/>
+        <route type="mix" sink="BT A2DP Speaker"
+               sources="a2dp output"/>
+        <route type="mix" sink="BT Hearing Aid Out"
+               sources="hearing aid output"/>
+        <route type="mix" sink="BLE Headset Out"
+               sources="le audio output"/>
+        <route type="mix" sink="le audio input"
+               sources="BLE Headset In"/>
+        <route type="mix" sink="BLE Speaker Out"
+               sources="le audio output"/>
+    </routes>
+</module>

+ 889 - 0
audio/lynx/aidl_config/mixer_paths.xml

@@ -0,0 +1,889 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2019, 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="Mic Spatial Module Enable" value="0"/>
+    <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"/>
+
+    <!-- Decoder Reference Enable is controlled in aoc_control -->
+    <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="deep-buffer-playbackP">
+        <ctl name="TDM_0_RX Mixer EP6" value="1"/>
+    </path>
+
+    <path name="deep-buffer-playbackP hac-handset">
+    </path>
+
+    <path name="deep-buffer-playbackP bt">
+        <ctl name="BT_RX Mixer EP6" value="1"/>
+    </path>
+
+    <path name="deep-buffer-playbackP usb-headphone">
+        <ctl name="USB_RX Mixer EP6" value="1"/>
+    </path>
+
+    <path name="deep-buffer-playbackP hearing-aid">
+    </path>
+
+    <path name="low-latency-playbackP">
+        <ctl name="TDM_0_RX Mixer EP2" value="1"/>
+    </path>
+
+    <path name="low-latency-playbackP hac-handset">
+    </path>
+
+    <path name="low-latency-playbackP bt">
+        <ctl name="BT_RX Mixer EP2" value="1"/>
+    </path>
+
+    <path name="low-latency-playbackP usb-headphone">
+        <ctl name="USB_RX Mixer EP2" value="1"/>
+    </path>
+
+    <path name="low-latency-playbackP hearing-aid">
+    </path>
+
+    <path name="raw-playbackP">
+        <ctl name="TDM_0_RX Mixer RAW" value="1"/>
+    </path>
+
+    <path name="raw-playbackP hac-handset">
+    </path>
+
+    <path name="raw-playbackP usb-headphone">
+        <ctl name="USB_RX Mixer RAW" value="1"/>
+    </path>
+
+    <path name="raw-playbackP hearing-aid">
+    </path>
+
+    <path name="raw-playbackP bt">
+        <ctl name="BT_RX Mixer RAW" value="1"/>
+    </path>
+
+    <path name="mmap-playbackP">
+        <ctl name="TDM_0_RX Mixer EP1" value="1"/>
+    </path>
+
+    <path name="mmap-playbackP hac-handset">
+    </path>
+
+    <path name="mmap-playbackP usb-headphone">
+        <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>
+
+    <path name="compress-offload-playback">
+        <ctl name="LVM Enable" value="1" />
+    </path>
+
+    <path name="compress-offload-playbackP">
+        <path name="compress-offload-playback" />
+        <ctl name="TDM_0_RX Mixer EP7" value="1"/>
+    </path>
+
+    <path name="compress-offload-playbackP hac-handset">
+        <path name="compress-offload-playback" />
+    </path>
+
+    <path name="compress-offload-playbackP bt">
+        <path name="compress-offload-playback" />
+        <ctl name="BT_RX Mixer EP7" value="1"/>
+    </path>
+
+    <path name="compress-offload-playbackP usb-headphone">
+        <path name="compress-offload-playback" />
+        <ctl name="USB_RX Mixer EP7" value="1"/>
+    </path>
+
+    <path name="compress-offload-playbackP hearing-aid">
+        <path name="compress-offload-playback" />
+    </path>
+
+    <path name="immersive-playbackP">
+        <ctl name="TDM_0_RX Mixer IMSV" value="1"/>
+    </path>
+
+    <path name="immersive-playbackP bt">
+        <ctl name="BT_RX Mixer IMSV" value="1"/>
+    </path>
+
+    <path name="immersive-playbackP usb-headphone">
+        <ctl name="USB_RX Mixer IMSV" value="1"/>
+    </path>
+
+    <path name="voip-playbackP">
+        <ctl name="TDM_0_RX Mixer VOIP" value="1"/>
+    </path>
+
+    <path name="voip-playbackP hac-handset">
+    </path>
+
+    <path name="voip-playbackP bt">
+        <ctl name="BT_RX Mixer VOIP" value="1"/>
+    </path>
+
+    <path name="voip-playbackP usb-headphone">
+        <ctl name="USB_RX Mixer VOIP" value="1"/>
+    </path>
+
+    <path name="voip-playbackP hearing-aid">
+    </path>
+
+    <path name="haptic-audioP">
+        <ctl name="TDM_0_RX Mixer EP3" value="1"/>
+        <ctl name="TDM_0_RX Mixer EP8" value="1"/>
+    </path>
+
+    <path name="haptic-audioP hac-handset">
+    </path>
+
+    <path name="haptic-audioP bt">
+        <ctl name="BT_RX Mixer EP3" value="1"/>
+        <ctl name="TDM_0_RX Mixer EP8" value="1"/>
+    </path>
+
+    <path name="haptic-audioP usb-headphone">
+        <ctl name="USB_RX Mixer EP3" value="1"/>
+        <ctl name="TDM_0_RX Mixer EP8" value="1"/>
+    </path>
+
+    <path name="hifi-playbackP">
+    </path>
+
+    <path name="hifi-playbackP usb-headphone">
+        <ctl name="USB_RX Mixer HIFI" value="1"/>
+    </path>
+
+    <path name="hifi-recordC">
+    </path>
+
+    <path name="hifi-recordC usb-headset-mic">
+    </path>
+
+    <!-- audio capture dynamic route -->
+    <path name="audio-recordC">
+        <ctl name="EP1 TX Mixer INTERNAL_MIC_TX" value="1"/>
+    </path>
+
+    <path name="audio-recordC usb-headset-mic">
+        <ctl name="EP1 TX Mixer USB_TX" value="1"/>
+    </path>
+
+    <path name="audio-recordC bt-mic">
+        <ctl name="EP1 TX Mixer BT_TX" value="1"/>
+    </path>
+
+    <path name="voip-recordC">
+        <ctl name="VOIP TX Mixer INTERNAL_MIC_TX" value="1"/>
+    </path>
+
+    <path name="voip-recordC usb-headset-mic">
+        <ctl name="VOIP TX Mixer USB_TX" value="1"/>
+    </path>
+
+    <path name="voip-recordC bt-mic">
+        <ctl name="VOIP TX Mixer BT_TX" value="1"/>
+    </path>
+
+    <!-- voice-call dynamic route -->
+    <path name="voice-callP">
+        <ctl name="TDM_0_RX Mixer EP5" value="1"/>
+    </path>
+
+    <path name="voice-callP bt">
+        <ctl name="BT_RX Mixer EP5" value="1"/>
+    </path>
+
+    <path name="voice-callP usb-headphone">
+        <ctl name="USB_RX Mixer EP5" value="1"/>
+    </path>
+
+    <path name="voice-callP hearing-aid">
+        <ctl name="INCALL_RX Mixer EP5" value="1"/>
+    </path>
+
+    <path name="voice-callP call-screen">
+        <ctl name="INCALL_RX Mixer EP5" value="1"/>
+    </path>
+
+    <path name="voice-callC">
+        <ctl name="EP4 TX Mixer INTERNAL_MIC_TX" value="1"/>
+    </path>
+
+    <path name="voice-callC usb-headset-mic">
+        <ctl name="EP4 TX Mixer USB_TX" value="1"/>
+    </path>
+
+    <path name="voice-callC bt-mic">
+        <ctl name="EP4 TX Mixer BT_TX" value="1"/>
+    </path>
+
+    <path name="voice-callC hearing-aid">
+        <ctl name="EP4 TX Mixer INCALL_TX" value="1"/>
+    </path>
+
+    <path name="voice-callC call-screen">
+        <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-captureC">
+        <ctl name="Incall Capture Stream0" value="DL"/>
+    </path>
+
+    <path name="incall-capture1C uplink">
+        <ctl name="Incall Capture Stream1" value="UL"/>
+    </path>
+
+    <path name="incall-capture1C downlink">
+        <ctl name="Incall Capture Stream1" value="DL"/>
+    </path>
+
+    <path name="incall-capture1C call">
+        <ctl name="Incall Capture Stream1" value="UL_DL"/>
+    </path>
+
+    <path name="incall-capture2C uplink">
+        <ctl name="Incall Capture Stream2" value="UL"/>
+    </path>
+
+    <path name="incall-capture2C downlink">
+        <ctl name="Incall Capture Stream2" value="DL"/>
+    </path>
+
+    <path name="incall-capture2C call">
+        <ctl name="Incall Capture Stream2" value="UL_DL"/>
+    </path>
+
+    <path name="low-latency-recordC">
+        <ctl name="EP3 TX Mixer INTERNAL_MIC_TX" value="1"/>
+    </path>
+
+    <path name="low-latency-recordC usb-headset-mic">
+        <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>
+
+    <path name="mmap-recordC usb-headset-mic">
+        <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">
+        <ctl name="PCM Source" value="ASP"/>
+        <ctl name="AMP PCM Gain" value="6"/>
+        <ctl name="Main AMP Enable Switch" value="1"/>
+    </path>
+
+    <path name="voice-handset">
+        <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="voice-hac">
+        <path name="voice-handset"/>
+    </path>
+
+    <path name="voice-hac-handset">
+    </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"/>
+    </path>
+
+    <path name="speaker-post">
+        <!-- load Bypass FIR -->
+        <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="voice-speaker">
+        <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"/>
+    </path>
+
+    <path name="voice-speaker-post">
+        <!-- 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="voice-dual-speaker">
+        <!-- Speaker Separation -->
+        <path name="voice-speaker" />
+        <path name="voice-speaker-post" />
+    </path>
+
+    <path name="speaker-safe">
+        <ctl name="R Boost Peak Current Limit" value="3.50A"/>
+        <ctl name="R Main AMP Enable Switch" value="1"/>
+    </path>
+
+    <path name="speaker-safe-post">
+        <!-- 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>
+
+    <path name="usb-tty-full">
+    </path>
+
+    <path name="usb-tty-hco">
+    </path>
+
+    <path name="usb-tty-vco">
+    </path>
+
+    <!-- Tx device -->
+    <path name="handset-mic">
+        <ctl name="Mic Spatial Module 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"/>
+    </path>
+
+    <path name="handset-mic-post">
+        <ctl name="MIC Record Soft Gain (dB)" value="22"/>
+    </path>
+
+    <path name="voice-handset-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 HW Gain At High Power Mode (cB)" value="130"/>
+    </path>
+
+    <path name="voice-handset-mic-post">
+        <ctl name="MIC Record Soft Gain (dB)" value="0"/>
+    </path>
+
+    <path name="speaker-mic">
+        <ctl name="Mic Spatial Module 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"/>
+    </path>
+
+    <path name="speaker-mic-post">
+        <ctl name="MIC Record Soft Gain (dB)" value="22"/>
+    </path>
+
+    <path name="voice-speaker-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 HW Gain At High Power Mode (cB)" value="130"/>
+    </path>
+
+    <path name="voice-speaker-mic-post">
+        <ctl name="MIC Record Soft Gain (dB)" value="0"/>
+    </path>
+
+    <path name="camcorder-mic">
+        <ctl name="Mic Spatial Module 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"/>
+    </path>
+
+    <path name="camcorder-mic-post">
+        <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"/>
+    </path>
+
+    <path name="voice-recog-mic-post">
+        <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"/>
+    </path>
+
+    <path name="voice-recog-aec-mic-post">
+        <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"/>
+    </path>
+
+    <path name="unprocessed-mic-post">
+        <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"/>
+    </path>
+
+    <path name="unprocessed-dual-mic-post">
+        <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"/>
+    </path>
+
+    <path name="unprocessed-triple-mic-post">
+        <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"/>
+    </path>
+
+    <path name="bt-mic-post">
+        <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"/>
+    </path>
+
+    <path name="usb-headset-mic-post">
+        <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>

+ 981 - 0
audio/lynx/aidl_config/mixer_paths_aidl.xml

@@ -0,0 +1,981 @@
+<?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="Mic Spatial Module Enable" value="0" />
+  <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" />
+
+  <!-- Decoder Reference Enable is controlled in aoc_control -->
+  <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="deep-buffer-playbackP hearing-aid"></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 -> speaker">
+  </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="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="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="microphones -> sound-trigger-capture-0">
+  </path>
+
+  <path name="audio-recordC usb-headset-mic">
+    <ctl name="EP1 TX Mixer USB_TX" value="1" />
+  </path>
+
+  <path name="voip-recordC">
+    <ctl name="VOIP TX Mixer INTERNAL_MIC_TX" value="1" />
+  </path>
+
+  <path name="voip-recordC usb-headset-mic">
+    <ctl name="VOIP TX Mixer USB_TX" value="1" />
+  </path>
+
+  <path name="voip-recordC bt-mic">
+    <ctl name="VOIP TX Mixer BT_TX" value="1" />
+  </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="speaker-microphones -> voice-call-uplink-0">
+    <ctl name="EP4 TX Mixer INTERNAL_MIC_TX" value="1" />
+  </path>
+
+  <path name="speaker-earpiece-microphones -> voice-call-uplink-0">
+    <ctl name="EP4 TX Mixer INTERNAL_MIC_TX" value="1" />
+  </path>
+
+
+
+  <path name="voice-callP">
+    <ctl name="TDM_0_RX Mixer EP5" value="1" />
+  </path>
+
+  <path name="voice-callP bt">
+    <ctl name="BT_RX Mixer EP5" value="1" />
+  </path>
+
+  <path name="voice-callP usb-headphone">
+    <ctl name="USB_RX Mixer EP5" value="1" />
+  </path>
+
+  <path name="voice-callP hearing-aid">
+    <ctl name="INCALL_RX Mixer EP5" value="1" />
+  </path>
+
+  <path name="voice-callP call-screen">
+    <ctl name="INCALL_RX Mixer EP5" value="1" />
+  </path>
+
+  <path name="voice-callC">
+    <ctl name="EP4 TX Mixer INTERNAL_MIC_TX" value="1" />
+  </path>
+
+  <path name="voice-callC usb-headset-mic">
+    <ctl name="EP4 TX Mixer USB_TX" value="1" />
+  </path>
+
+  <path name="voice-callC bt-mic">
+    <ctl name="EP4 TX Mixer BT_TX" value="1" />
+  </path>
+
+  <path name="voice-callC hearing-aid">
+    <ctl name="EP4 TX Mixer INCALL_TX" value="1" />
+  </path>
+
+  <path name="voice-callC call-screen">
+    <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-captureC">
+    <ctl name="Incall Capture Stream0" value="DL" />
+  </path>
+
+  <path name="incall-capture1C uplink">
+    <ctl name="Incall Capture Stream1" value="UL" />
+  </path>
+
+  <path name="incall-capture1C downlink">
+    <ctl name="Incall Capture Stream1" value="DL" />
+  </path>
+
+  <path name="incall-capture1C call">
+    <ctl name="Incall Capture Stream1" value="UL_DL" />
+  </path>
+
+  <path name="incall-capture2C uplink">
+    <ctl name="Incall Capture Stream2" value="UL" />
+  </path>
+
+  <path name="incall-capture2C downlink">
+    <ctl name="Incall Capture Stream2" value="DL" />
+  </path>
+
+  <path name="incall-capture2C call">
+    <ctl name="Incall Capture Stream2" value="UL_DL" />
+  </path>
+
+  <path name="low-latency-recordC">
+    <ctl name="EP3 TX Mixer INTERNAL_MIC_TX" value="1" />
+  </path>
+
+  <path name="low-latency-recordC usb-headset-mic">
+    <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>
+
+  <path name="mmap-recordC usb-headset-mic">
+    <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="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="voice-hac">
+    <path name="voice-handset" />
+  </path>
+
+  <path name="voice-hac-handset"></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" />
+  </path>
+
+  <path name="voice-speaker-post">
+    <!-- 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="voice-dual-speaker">
+    <!-- Speaker Separation -->
+    <path name="voice-speaker" />
+    <path name="voice-speaker-post" />
+  </path>
+
+  <path name="speaker-safe">
+    <ctl name="R Boost Peak Current Limit" value="3.50A" />
+    <ctl name="R Main AMP Enable Switch" value="1" />
+  </path>
+
+  <path name="speaker-safe-post">
+    <!-- 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>
+
+  <path name="usb-tty-full"></path>
+
+  <path name="usb-tty-hco"></path>
+
+  <path name="usb-tty-vco"></path>
+
+  <!-- Tx device -->
+  <path name="voice-handset-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 HW Gain At High Power Mode (cB)" value="130"/>
+  </path>
+
+  <path name="voice-handset-mic-post">
+    <ctl name="MIC Record Soft Gain (dB)" value="0"/>
+  </path>
+
+  <path name="microphones (VOICE)">
+    <path name="voice-handset-mic" />
+    <path name="voice-handset-mic-post" />
+  </path>
+
+  <path name="speaker-earpiece-microphones">
+    <path name="voice-handset-mic" />
+    <path name="voice-handset-mic-post" />
+  </path>
+
+  <path name="voice-speaker-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 HW Gain At High Power Mode (cB)" value="130"/>
+  </path>
+
+  <path name="voice-speaker-mic-post">
+    <ctl name="MIC Record Soft Gain (dB)" value="0" />
+  </path>
+
+  <path name="back-microphones (VOICE)">
+    <path name="voice-speaker-mic" />
+    <path name="voice-speaker-mic-post" />
+  </path>
+
+  <path name="speaker-microphones">
+    <path name="voice-speaker-mic" />
+    <path name="voice-speaker-mic-post" />
+  </path>
+
+  <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="back-microphones">
+    <ctl name="Mic Spatial Module 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="MIC Record Soft Gain (dB)" value="22"/>
+  </path>
+
+
+  <path name="camcorder-mic">
+    <ctl name="Mic Spatial Module 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" />
+  </path>
+
+  <path name="camcorder-mic-post">
+    <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" />
+  </path>
+
+  <path name="voice-recog-mic-post">
+    <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" />
+  </path>
+
+  <path name="voice-recog-aec-mic-post">
+    <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" />
+  </path>
+
+  <path name="unprocessed-mic-post">
+    <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" />
+  </path>
+
+  <path name="unprocessed-dual-mic-post">
+    <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" />
+  </path>
+
+  <path name="unprocessed-triple-mic-post">
+    <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" />
+  </path>
+
+  <path name="bt-mic-post">
+    <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" />
+  </path>
+
+  <path name="usb-headset-mic-post">
+    <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>

+ 388 - 0
audio/lynx/aidl_config/mixer_paths_factory.xml

@@ -0,0 +1,388 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<mixer>
+    <ctl name="TDM_0_RX Mixer EP3" value="0" />
+    <ctl name="TDM_0_RX Mixer EP6" value="0" />
+    <ctl name="I2S_0_RX Mixer EP3" value="0" />
+    <ctl name="Main AMP Enable Switch" value="0" />
+    <ctl name="R Main AMP Enable Switch" value="0" />
+    <ctl name="MIC HW Gain At Lower Power Mode (cB)" value="-160" />
+    <ctl name="MIC HW Gain At High Power Mode (cB)" value="0" />
+    <ctl name="MIC Record Soft Gain (dB)" value="0"/>
+
+    <ctl name="EP1 TX Mixer TDM_0_TX" value="0" />
+    <ctl name="DEFAULT_MIC_ID" value="0" />
+    <ctl name="MIC0" value="0" />
+    <ctl name="MIC1" value="0" />
+    <ctl name="MIC2" value="0" />
+    <ctl name="MIC3" value="0" />
+    <ctl name="AoC Speaker Mixer ASP Mode" value="ASP_ON" />
+
+    <ctl name="TDM_0_RX Mixer US" value="0" />
+    <ctl name="US Record Enable" value="0" />
+
+    <path name="mfg-playback">
+    </path>
+
+    <path name="deep-buffer-playback speaker">
+        <ctl name="AoC Speaker Mixer ASP Mode" value="ASP_BYPASS" />
+        <ctl name="TDM_0_RX Mixer EP6" value="1" />
+        <path name="mfg-playback" />
+    </path>
+
+    <path name="deep-buffer-playback headphones">
+        <ctl name="I2S_0_RX Mixer EP6" value="1" />
+        <path name="mfg-playback" />
+    </path>
+
+    <path name="mfg-record">
+        <ctl name="EP1 TX Mixer TDM_0_TX" value="1" />
+    </path>
+
+    <path name="mfg-record usb-headset-mic">
+        <ctl name="Audio Capture Mic Source" value="USB_MIC"/>
+        <ctl name="USB Capture FORMAT v2" value="1" />
+        <ctl name="USB Config To AoC v2" value="1"/>
+        <ctl name="EP1 TX Mixer USB_TX" value="1"/>
+    </path>
+
+    <path name="us-mfg-record">
+        <ctl name="US Record Enable" value="1" />
+        <ctl name="EP1 TX Mixer TDM_0_TX" value="1" />
+    </path>
+
+    <path name="mic1-status">
+        <ctl name="MIC0" value="1" />
+    </path>
+
+    <path name="mic2-status">
+        <ctl name="MIC1" value="1" />
+    </path>
+
+    <path name="mic3-status">
+        <ctl name="MIC2" value="1" />
+    </path>
+
+    <path name="mic4-status">
+        <ctl name="MIC3" value="0" />
+    </path>
+
+    <path name="mic1-gain">
+        <ctl name="MIC HW Gain At Lower Power Mode (cB)" />
+        <ctl name="MIC HW Gain At High Power Mode (cB)" />
+    </path>
+
+    <path name="mic2-gain">
+        <ctl name="MIC HW Gain At Lower Power Mode (cB)" />
+        <ctl name="MIC HW Gain At High Power Mode (cB)" />
+    </path>
+
+    <path name="mic3-gain">
+        <ctl name="MIC HW Gain At Lower Power Mode (cB)" />
+        <ctl name="MIC HW Gain At High Power Mode (cB)" />
+    </path>
+
+    <path name="mic4-gain">
+        <ctl name="MIC HW Gain At Lower Power Mode (cB)" />
+        <ctl name="MIC HW Gain At High Power Mode (cB)" />
+    </path>
+
+    <path name="mic1-sw-gain">
+        <ctl name="MIC Record Soft Gain (dB)" />
+    </path>
+
+    <path name="mic2-sw-gain">
+        <ctl name="MIC Record Soft Gain (dB)" />
+    </path>
+
+    <path name="mic3-sw-gain">
+        <ctl name="MIC Record Soft Gain (dB)" />
+    </path>
+
+    <path name="mic4-sw-gain">
+        <ctl name="MIC Record Soft Gain (dB)" />
+    </path>
+
+    <path name="usb-capture-gain">
+        <ctl name="MIC Record Soft Gain (dB)" />
+    </path>
+
+    <path name="mic1-only">
+        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0" />
+        <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="MIC0" value="1" />
+        <ctl name="MIC Record Soft Gain (dB)" value="0" />
+    </path>
+
+    <path name="mic2-only">
+        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="3" />
+        <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="MIC1" value="1" />
+        <ctl name="MIC Record Soft Gain (dB)" value="0" />
+    </path>
+
+    <path name="mic3-only">
+        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="2" />
+        <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="MIC2" value="1" />
+        <ctl name="MIC Record Soft Gain (dB)" value="0" />
+    </path>
+
+    <path name="mic4-only">
+        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="3" />
+        <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="MIC3" value="0" />
+        <ctl name="MIC Record Soft Gain (dB)" value="0" />
+    </path>
+
+    <path name="mic-all">
+        <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="MIC0" value="1" />
+        <ctl name="MIC1" value="1" />
+        <ctl name="MIC2" value="1" />
+        <ctl name="MIC3" value="0" />
+        <ctl name="MIC Record Soft Gain (dB)" value="0" />
+    </path>
+
+    <path name="amp_iv-only">
+        <ctl name="R ASPTX1 Slot Position" value="2" />
+        <ctl name="R ASPTX2 Slot Position" value="3" />
+        <ctl name="R ASPTX3 Slot Position" value="6" />
+        <ctl name="R ASPTX4 Slot Position" value="7" />
+        <ctl name="ASPTX1 Slot Position" value="0" />
+        <ctl name="ASPTX2 Slot Position" value="1" />
+        <ctl name="ASPTX3 Slot Position" value="4" />
+        <ctl name="ASPTX4 Slot Position" value="5" />
+        <ctl name="R ASP TX1 Source" value="VMON" />
+        <ctl name="R ASP TX2 Source" value="ASPRX1" />
+        <ctl name="R ASP TX3 Source" value="Zero" />
+        <ctl name="R ASP TX4 Source" value="Zero" />
+        <ctl name="ASP TX1 Source" value="VMON" />
+        <ctl name="ASP TX2 Source" value="ASPRX1" />
+        <ctl name="ASP TX3 Source" value="Zero" />
+        <ctl name="ASP TX4 Source" value="Zero" />
+        <ctl name="NoHost1 TX Mixer TDM_0_TX" value="1" />
+    </path>
+
+    <path name="amp_iv1-only">
+        <ctl name="R ASPTX1 Slot Position" value="4" />
+        <ctl name="R ASPTX2 Slot Position" value="5" />
+        <ctl name="R ASPTX3 Slot Position" value="6" />
+        <ctl name="R ASPTX4 Slot Position" value="7" />
+        <ctl name="ASPTX1 Slot Position" value="0" />
+        <ctl name="ASPTX2 Slot Position" value="1" />
+        <ctl name="ASPTX3 Slot Position" value="2" />
+        <ctl name="ASPTX4 Slot Position" value="3" />
+        <ctl name="R ASP TX1 Source" value="Zero" />
+        <ctl name="R ASP TX2 Source" value="Zero" />
+        <ctl name="R ASP TX3 Source" value="Zero" />
+        <ctl name="R ASP TX4 Source" value="Zero" />
+        <ctl name="ASP TX1 Source" value="VMON" />
+        <ctl name="ASP TX2 Source" value="IMON" />
+        <ctl name="ASP TX3 Source" value="VPMON" />
+        <ctl name="ASP TX4 Source" value="ASPRX1" />
+        <ctl name="NoHost1 TX Mixer TDM_0_TX" value="1" />
+    </path>
+
+    <path name="amp_iv2-only">
+        <ctl name="R ASPTX1 Slot Position" value="0" />
+        <ctl name="R ASPTX2 Slot Position" value="1" />
+        <ctl name="R ASPTX3 Slot Position" value="2" />
+        <ctl name="R ASPTX4 Slot Position" value="3" />
+        <ctl name="ASPTX1 Slot Position" value="4" />
+        <ctl name="ASPTX2 Slot Position" value="5" />
+        <ctl name="ASPTX3 Slot Position" value="6" />
+        <ctl name="ASPTX4 Slot Position" value="7" />
+        <ctl name="R ASP TX1 Source" value="VMON" />
+        <ctl name="R ASP TX2 Source" value="IMON" />
+        <ctl name="R ASP TX3 Source" value="VPMON" />
+        <ctl name="R ASP TX4 Source" value="ASPRX1" />
+        <ctl name="ASP TX1 Source" value="Zero" />
+        <ctl name="ASP TX2 Source" value="Zero" />
+        <ctl name="ASP TX3 Source" value="Zero" />
+        <ctl name="ASP TX4 Source" value="Zero" />
+        <ctl name="NoHost1 TX Mixer TDM_0_TX" value="1" />
+    </path>
+
+    <path name="us-amp_iv-only">
+        <ctl name="TDM_0_RX Sample Rate" value="SR_96K" />
+        <ctl name="TDM_0_TX Sample Rate" value="SR_96K" />
+        <path name="amp_iv-only" />
+    </path>
+
+    <path name="us-amp_iv1-only">
+        <ctl name="TDM_0_RX Sample Rate" value="SR_96K" />
+        <ctl name="TDM_0_TX Sample Rate" value="SR_96K" />
+        <path name="amp_iv1-only" />
+    </path>
+
+    <path name="us-amp_iv2-only">
+        <ctl name="TDM_0_RX Sample Rate" value="SR_96K" />
+        <ctl name="TDM_0_TX Sample Rate" value="SR_96K" />
+        <path name="amp_iv2-only" />
+    </path>
+
+    <path name="speaker1-status">
+        <ctl name="Main AMP Enable Switch" value="1" />
+    </path>
+
+    <path name="speaker2-status">
+        <ctl name="R Main AMP Enable Switch" value="1" />
+    </path>
+
+    <path name="speaker1-gain">
+        <ctl name="AMP PCM Gain" />
+    </path>
+
+    <path name="speaker2-gain">
+        <ctl name="R AMP PCM Gain" />
+    </path>
+
+    <path name="usb-playback-gain">
+        <ctl name="Headset Playback Volume" />
+    </path>
+
+    <path name="mfg-playback speaker">
+        <ctl name="AoC Speaker Mixer ASP Mode" value="ASP_BYPASS" />
+        <ctl name="TDM_0_RX Mixer EP3" value="1" />
+        <ctl name="ASPRX1 Slot Position" value="0" />
+        <ctl name="R ASPRX1 Slot Position" value="1" />
+        <ctl name="SINK_IDS" id="0" value="0" />
+        <ctl name="SINK_IDS" id="1" value="-1" />
+    </path>
+
+    <path name="mfg-playback headphones">
+        <ctl name="I2S_0_RX Chan" value="Two" />
+        <ctl name="I2S_0_RX Format" value="S32_LE" />
+        <ctl name="I2S_0_RX Mixer EP3" value="1" />
+        <ctl name="SINK_IDS" id="0" value="1" />
+        <ctl name="SINK_IDS" id="1" value="-1" />
+    </path>
+
+    <path name="mfg-playback usb-headphones">
+        <ctl name="USB Dev ID v2" value="2" />
+        <ctl name="USB Playback EP ID v2" value="1" />
+        <ctl name="USB Playback FORMAT v2" value="6" />
+        <ctl name="USB Playback SR v2" value="48000" />
+        <ctl name="USB Playback CH v2" value="2" />
+        <ctl name="USB Playback BW v2" value="16" />
+        <ctl name="USB Config To AoC v2" value="1" />
+        <ctl name="USB_RX Mixer EP3" value="1" />
+    </path>
+
+    <path name="us-mfg-playback speaker">
+        <ctl name="TDM_0_RX Sample Rate" value="SR_96K" />
+        <ctl name="TDM_0_TX Sample Rate" value="SR_96K" />
+        <ctl name="TDM_0_RX Mixer US" value="1" />
+    </path>
+
+    <path name="speaker1-only">
+        <ctl name="Main AMP Enable Switch" value="1" />
+        <path name="mfg-playback speaker" />
+        <ctl name="AMP PCM Gain" value="17" />
+        <ctl name="PCM Source" value="ASP" />
+    </path>
+
+    <path name="speaker2-only">
+        <ctl name="R Main AMP Enable Switch" value="1" />
+        <path name="mfg-playback speaker" />
+        <ctl name="R AMP PCM Gain" value="17" />
+        <ctl name="R PCM Source" value="ASP" />
+    </path>
+
+    <path name="us-speaker1-only">
+        <path name="us-mfg-playback speaker" />
+        <ctl name="PCM Source" value="ASP" />
+        <ctl name="Main AMP Enable Switch" value="1" />
+    </path>
+
+    <path name="us-speaker2-only">
+        <path name="us-mfg-playback speaker" />
+        <ctl name="R PCM Source" value="ASP" />
+        <ctl name="R Main AMP Enable Switch" value="1" />
+    </path>
+
+    <path name="headphones">
+        <ctl name="DAC1 MIXL DAC1 Switch" value="1" />
+        <ctl name="DAC1 MIXR DAC1 Switch" value="1" />
+        <ctl name="Stereo1 DAC MIXL DAC L1 Switch" value="1" />
+        <ctl name="Stereo1 DAC MIXR DAC R1 Switch" value="1" />
+        <ctl name="DAC L1 Source" value="Stereo1 DAC Mixer" />
+        <ctl name="DAC R1 Source" value="Stereo1 DAC Mixer" />
+        <ctl name="HPOL Playback Switch" value="1" />
+        <ctl name="HPOR Playback Switch" value="1" />
+        <path name="mfg-playback headphones" />
+    </path>
+
+    <path name="speaker-all">
+        <ctl name="Main AMP Enable Switch" value="1" />
+        <ctl name="PCM Source" value="ASP" />
+        <ctl name="R Main AMP Enable Switch" value="1" />
+        <ctl name="R PCM Source" value="ASP" />
+        <path name="mfg-playback speaker" />
+    </path>
+
+    <path name="us-speaker-all">
+        <path name="us-mfg-playback speaker" />
+        <ctl name="PCM Source" value="ASP" />
+        <ctl name="Main AMP Enable Switch" value="1" />
+        <ctl name="R PCM Source" value="ASP" />
+        <ctl name="R Main AMP Enable Switch" value="1" />
+    </path>
+
+    <path name="loopback-mic-speaker">
+        <ctl name="EP1 TX Mixer TDM_0_TX" value="1" />
+        <ctl name="SINK_IDS" id="0" value="0" />
+        <ctl name="SINK_IDS" id="1" value="-1" />
+        <path name="mfg-playback" />
+    </path>
+
+    <path name="loopback-mic-headphones">
+        <ctl name="EP1 TX Mixer TDM_0_TX" value="1" />
+        <ctl name="SINK_IDS" id="0" value="1" />
+        <ctl name="SINK_IDS" id="1" value="-1" />
+        <path name="mfg-playback" />
+    </path>
+
+    <path name="loopback-mic-usb-headphones">
+        <ctl name="MIC HW Gain At Lower Power Mode (cB)" value="-160" />
+        <ctl name="MIC HW Gain At High Power Mode (cB)" value="0" />
+        <ctl name="TDM_0_TX Format" value="S32_LE" />
+        <ctl name="TDM_0_TX Chan" value="One" />
+        <ctl name="EP1 TX Mixer TDM_0_TX" value="1" />
+    </path>
+
+    <path name="loopback-usb-mic-speaker">
+        <ctl name="Audio Capture Mic Source" value='USB_MIC' />
+        <ctl name="USB Capture FORMAT v2" value="1" />
+        <ctl name="MIC Record Soft Gain (dB)" value="0" />
+    </path>
+
+    <path name="loopback-usb-mic-usb-headphone">
+        <ctl name="Audio Capture Mic Source" value='USB_MIC' />
+        <ctl name="USB Capture FORMAT v2" value="1" />
+        <ctl name="MIC Record Soft Gain (dB)" value="0" />
+    </path>
+
+    <pcm_id name="loopback-mic1" value="EP1 capture (*)"/>
+    <pcm_id name="loopback-mic2" value="EP1 capture (*)"/>
+    <pcm_id name="loopback-mic3" value="EP1 capture (*)"/>
+    <pcm_id name="loopback-mic4" value="EP1 capture (*)"/>
+    <pcm_id name="loopback-speaker1" value="EP3 playback (*)"/>
+    <pcm_id name="loopback-speaker2" value="EP3 playback (*)"/>
+    <pcm_id name="loopback-speaker3" value="EP3 playback (*)"/>
+    <pcm_id name="loopback-headphones" value="EP3 playback (*)"/>
+    <pcm_id name="loopback-usb-headphones" value="EP3 playback (*)"/>
+    <pcm_id name="loopback-usb-mic" value="EP1 capture (*)"/>
+    <pcm_id name="loopback-amp_iv" value="nohost1 capture (*)"/>
+</mixer>

+ 33 - 0
audio/lynx/aidl_config/sound_trigger_configuration.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2020, 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.                          -->
+<sound_trigger_hal_configuration>
+    <supported_model>
+        <model name="CLIENT_HOTWORD" uuid="7038ddc8-30f2-11e6-b0ac-40a8f03d3f15" model_type="keyphrase" bargein="true"/>
+        <model name="CLIENT_AMBIENT_MUSIC" uuid="9f6ad62a-1f0b-11e7-87c5-40a8f03d3f15" model_type="generic" bargein="false"/>
+        <model name="CLIENT_AMBIENT_MUSIC_BREAK" uuid="12caddb1-acdb-4dce-8cb0-2e95a2313aee" model_type="generic" bargein="false"/>
+    </supported_model>
+</sound_trigger_hal_configuration>

+ 21 - 9
audio/lynx/audio-tables.mk

@@ -16,24 +16,36 @@
 
 AUDIO_TABLE_FOLDER := lynx
 
+# Enable this to build AIDL
+# BUILD_AUDIO_AIDL_VERSION := true
+
+ifeq ($(BUILD_AUDIO_AIDL_VERSION),true)
+CONFIG_FOLDER := aidl_config
+PRODUCT_COPY_FILES += \
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/mixer_paths_aidl.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_aidl.xml \
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/audio_platform_configuration_aidl.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_configuration_aidl.xml
+else
+CONFIG_FOLDER := config
+endif
+
 # 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 \
-    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
-    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration_a2dp_offload_disabled.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_a2dp_offload_disabled.xml \
-    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/config/audio_platform_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_configuration.xml \
-    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/config/sound_trigger_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_configuration.xml \
-    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
-    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration_le_offload_disabled.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_le_offload_disabled.xml \
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/audio_policy_configuration_bluetooth_legacy_hal.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_bluetooth_legacy_hal.xml \
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/audio_policy_configuration_a2dp_offload_disabled.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_a2dp_offload_disabled.xml \
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/audio_platform_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_configuration.xml \
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/sound_trigger_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_configuration.xml \
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/audio_policy_configuration_le_offload_disabled.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_le_offload_disabled.xml \
     frameworks/av/services/audiopolicy/config/bluetooth_with_le_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration_7_0.xml
 
 # AudioEffectHAL Configuration
 PRODUCT_COPY_FILES += \
-    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/config/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml
 
 # 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
+    device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/$(CONFIG_FOLDER)/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml
 
 # Speaker firmware files
 SPK_FIRMWARE_PATH := $(AUDIO_TABLE_FOLDER)/cs35l41/fw

+ 5 - 0
rro_overlays/WifiOverlay/res/values/config.xml

@@ -141,4 +141,9 @@
     <!-- 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>
+
+    <!-- Boolean indicating whether the framework updates country from scan results when there is
+         no telephony country code and driver country code is 00.
+         This is applied only during the setup wizard -->
+    <bool translatable="false" name ="config_wifiUpdateCountryCodeFromScanResultSetupWizard">true</bool>
 </resources>