Add device lynx

based on panther 0e0ae4dd4045e00dd50826d5c411351d47949d92
No-Typo-Check: based on above commit

Bug: 202250383
Change-Id: I7dbcba9fc0644cf8e547c59b14a544701adc484b
This commit is contained in:
Cyan_Hsieh 2021-10-25 18:10:38 +08:00
parent e5cb57636a
commit 2aa4ba2268
63 changed files with 147135 additions and 0 deletions

31
Android.bp Normal file
View File

@ -0,0 +1,31 @@
//
// Copyright (C) 2021 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.
package {
default_applicable_licenses: ["device_google_lynx_license"],
}
// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
name: "device_google_lynx_license",
visibility: [":__subpackages__"],
license_kinds: [
"SPDX-license-identifier-Apache-2.0",
],
license_text: [
"NOTICE",
],
}

30
Android.mk Normal file
View File

@ -0,0 +1,30 @@
#
# Copyright (C) 2021 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.
#
# WARNING: Everything listed here will be built on ALL platforms,
# including x86, the universal, and the SDK. Modules must be uniquely
# named (liblights.panda), and must build everywhere, or limit themselves
# to only building on ARM if they include assembly. Individual makefiles
# are responsible for having their own logic, for fine-grained control.
LOCAL_PATH := $(call my-dir)
# if some modules are built directly from this directory (not subdirectories),
# their rules should be written here.
ifneq (,$(filter $(TARGET_DEVICE),lynx))
include $(call all-makefiles-under,$(LOCAL_PATH))
endif

22
AndroidProducts.mk Normal file
View File

@ -0,0 +1,22 @@
#
# Copyright (C) 2021 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.
#
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/aosp_lynx.mk \
$(LOCAL_DIR)/factory_lynx.mk
COMMON_LUNCH_CHOICES := \
aosp_lynx-userdebug

190
NOTICE Normal file
View File

@ -0,0 +1,190 @@
Copyright (c) 2014, 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.
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.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS

34
aosp_lynx.mk Normal file
View File

@ -0,0 +1,34 @@
#
# Copyright 2021 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.
#
TARGET_LINUX_KERNEL_VERSION := 5.10
DEVICE_USES_NO_TRUSTY := true
USE_SWIFTSHADER := true
BOARD_USES_SWIFTSHADER := true
BOARD_WITHOUT_RADIO := true
$(call inherit-product, device/google/gs201/aosp_common.mk)
$(call inherit-product, device/google/lynx/device-lynx.mk)
PRODUCT_NAME := aosp_lynx
PRODUCT_DEVICE := lynx
PRODUCT_MODEL := AOSP on Lynx
PRODUCT_BRAND := Android
PRODUCT_MANUFACTURER := Google
DEVICE_MANIFEST_FILE := \
device/google/lynx/manifest.xml

View File

@ -0,0 +1,62 @@
#
# Copyright (C) 2021 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.
#
AUDIO_TABLE_FOLDER := lynx
# 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
# AudioEffectHAL Configuration
PRODUCT_COPY_FILES += \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/config/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
# Speaker firmware files
SPK_FIRMWARE_PATH := $(AUDIO_TABLE_FOLDER)/cs35l41/fw
SPK_FIRMWARE_FULL_PATH := device/google/lynx/audio/$(SPK_FIRMWARE_PATH)
PRODUCT_COPY_FILES += $(call copy-files,$(wildcard $(SPK_FIRMWARE_FULL_PATH)/*),$(TARGET_COPY_OUT_VENDOR)/firmware)
# Audio tuning
PRODUCT_COPY_FILES += \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/bluenote/recording.gatf:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/recording.gatf \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/BLUETOOTH.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/BLUETOOTH.dat \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HANDSFREE.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HANDSFREE.dat \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HANDSET.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HANDSET.dat \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HEADSET.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HEADSET.dat \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/waves_config.ini:$(TARGET_COPY_OUT_VENDOR)/etc/waves_config.ini \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/waves_preset.mps:$(TARGET_COPY_OUT_VENDOR)/etc/waves_preset.mps
# userdebug specific
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
PRODUCT_COPY_FILES += \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/BLUETOOTH.mods:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/BLUETOOTH.mods \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HANDSFREE.mods:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HANDSFREE.mods \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HANDSET.mods:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HANDSET.mods \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HEADSET.mods:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HEADSET.mods
# Mixer Path Configuration for Audio Speaker Calibration Tool crus_sp_cal
PRODUCT_COPY_FILES += \
device/google/lynx/audio/$(AUDIO_TABLE_FOLDER)/cs35l41/crus_sp_cal_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/crus_sp_cal_mixer_paths.xml
endif

View File

@ -0,0 +1,63 @@
<?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" 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"/>
</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>
<effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
<effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
<effect name="aec" library="offload_effect" uuid="28c28780-ec8b-48b6-8590-8c84557d797d"/>
<effect name="ns" library="offload_effect" uuid="62ff2836-d050-43c3-9c2d-94a73dad2c64"/>
<effect name="haptic_generator" library="haptic_generator" uuid="97c4acd1-8b82-4f2f-832e-c2fe5d7a9931"/>
<effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
</effects>
<postprocess>
</postprocess>
<preprocess>
<stream type="voice_communication">
<apply effect="aec"/>
<apply effect="ns"/>
</stream>
</preprocess>
</audio_effects_conf>

View File

@ -0,0 +1,291 @@
<?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"/>
</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, 80 periods * 48 frames/period(=1ms w/ 48k sample rate) * 4 bytes/frame = 15360 bytes -->
<usecase id="UC_MMAP_PLAYBACK" dev1="0" dyn_path="true" dsp_vol="false" mmap="true" period="1" period_num="80"/>
<!-- 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 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"/>
<!-- 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="10" period_num="4"/>
<!-- 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" dsp_vol="false" mmap="true" period="1" period_num="240"/>
<!-- for hifi -->
<usecase id="UC_HIFI_PLAYBACK" dev1="25"/>
<usecase id="UC_HIFI_RECORD" dev1="26"/>
</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="10000"/>
<be_cfg be_id="OUT_USB_HEADPHONE_BE_CFG" latency="10000"/>
<be_cfg be_id="OUT_A2DP_BE_CFG" latency="10000"/>
</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"/>
</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_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" />
<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_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"/>
<!--module libname="audio_waves_aoc.so" argu="Sink=SPK:1"/-->
<!--module libname="audio_fortemedia_aoc.so"/-->
<module libname="liboffloadeffect.so"/>
<module libname="audio_amcs_ext.so"/>
<module libname="audio_bluenote_aoc.so"/>
</external_module>
</audio_platform_configuration>

View File

@ -0,0 +1,255 @@
<?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">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
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_16_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_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_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_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"/>
<route type="mix" sink="Speaker Safe"
sources="primary output,deep buffer"/>
<route type="mix" sink="Earpiece"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT A2DP Out"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT A2DP Headphones"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT A2DP Speaker"
sources="primary output,deep buffer"/>
<route type="mix" sink="USB Device Out"
sources="primary output,deep buffer"/>
<route type="mix" sink="USB Headset Out"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT SCO"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT SCO Headset"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT SCO Car Kit"
sources="primary output,deep buffer"/>
<!--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"/-->
<!--route type="mix" sink="mmap_no_irq_in"
sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/-->
<!--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>

View File

@ -0,0 +1,234 @@
<?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">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
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_16_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"/>
<route type="mix" sink="Speaker Safe"
sources="primary output,deep buffer"/>
<route type="mix" sink="Earpiece"
sources="primary output,deep buffer"/>
<route type="mix" sink="USB Device Out"
sources="primary output,deep buffer"/>
<route type="mix" sink="USB Headset Out"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT SCO"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT SCO Headset"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT SCO Car Kit"
sources="primary output,deep buffer"/>
<!--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"/-->
<!--route type="mix" sink="mmap_no_irq_in"
sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/-->
<!--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>

View File

@ -0,0 +1,234 @@
<?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">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
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_16_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"/>
<route type="mix" sink="Speaker Safe"
sources="primary output,deep buffer"/>
<route type="mix" sink="Earpiece"
sources="primary output,deep buffer"/>
<route type="mix" sink="USB Device Out"
sources="primary output,deep buffer"/>
<route type="mix" sink="USB Headset Out"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT SCO"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT SCO Headset"
sources="primary output,deep buffer"/>
<route type="mix" sink="BT SCO Car Kit"
sources="primary output,deep buffer"/>
<!--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"/-->
<!--route type="mix" sink="mmap_no_irq_in"
sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/-->
<!--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>

View File

@ -0,0 +1,794 @@
<?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"/>
<!-- TDM 0 setting -->
<ctl name="TDM_0_RX Chan" value="Four"/>
<ctl name="TDM_0_RX Format" value="S32_LE"/>
<ctl name="TDM_0_TX Chan" value="Four"/>
<ctl name="TDM_0_TX Format" value="S32_LE"/>
<!-- Haptic setting -->
<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 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" />
<!-- 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_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="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="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"/>
<!-- 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="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 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="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="AoC Modem Downlink ASRC Mode" value="ASP_OFF"/>
<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="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>
<!-- 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="6"/>
<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="1.70A"/>
<ctl name="R Boost Peak Current Limit" value="1.90A"/>
<ctl name="Main AMP Enable Switch" value="1"/>
<ctl name="R Main AMP Enable Switch" value="1"/>
</path>
<path name="voice-speaker">
<ctl name="R 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"/>
</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="usb-tty-full">
</path>
<path name="usb-tty-hco">
</path>
<path name="usb-tty-vco">
</path>
<!-- Tx device -->
<path name="handset-mic">
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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="BUILDIN MIC ID CAPTURE LIST" id="0" value="0"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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="0"/>
</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="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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="22"/>
</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="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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="unprocessed-mic">
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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="2"/>
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3"/>
<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>

View File

@ -0,0 +1,381 @@
<?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 Sample Rate" value="SR_48K" />
<ctl name="TDM_0_TX Sample Rate" value="SR_48K" />
<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="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="Headset Capture Volume" />
</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="2" />
<ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="3" />
<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="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="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>

View File

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

View File

@ -0,0 +1,307 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright (c) 2018-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. -->
<mixer>
<!-- Initial Values -->
<!-- Preload Stage -->
<ctl name="Main AMP Enable Switch" value="0" />
<ctl name="DSP1 Preload Switch" value="0" />
<ctl name="R Main AMP Enable Switch" value="0" />
<ctl name="R DSP1 Preload Switch" value="0" />
<!-- Clock-trigger Stage -->
<ctl name="SINK_IDS" id="0" value="-1"/>
<ctl name="SINK_IDS" id="1" value="-1"/>
<ctl name="PCM Playback Volume" value="10"/>
<ctl name="TDM_0_RX Mixer EP6" value="0"/>
<!-- Preparation Stage -->
<path name="crus-switch-fw-prepare">
<ctl name="DRE DRE Switch" value="1" />
<ctl name="VBSTMON Output Switch" value="1" />
<ctl name="DSP Booted" value="0" />
<ctl name="DSP1 Preload Switch" value="0" />
<ctl name="R DRE DRE Switch" value="1" />
<ctl name="R VBSTMON Output Switch" value="1" />
<ctl name="R DSP Booted" value="0" />
<ctl name="R DSP1 Preload Switch" value="0" />
</path>
<!-- Preload Stage -->
<path name="crus-fw-preload">
<ctl name="DSP1 Preload Switch" value="1" />
<ctl name="R DSP1 Preload Switch" value="1" />
</path>
<!-- Firmware-switching Stage -->
<path name="crus-switch-fw-Calibration">
<ctl name="AMP PCM Gain" value="17" />
<ctl name="Digital PCM Volume" value="817" />
<ctl name="PCM Source" value="DSP" />
<ctl name="DSP1 Firmware" value="Calibration" />
<ctl name="R AMP PCM Gain" value="17" />
<ctl name="R Digital PCM Volume" value="817" />
<ctl name="R PCM Source" value="DSP" />
<ctl name="R DSP1 Firmware" value="Calibration" />
</path>
<path name="crus-switch-fw-Diagnostic">
<ctl name="AMP PCM Gain" value="17" />
<ctl name="Digital PCM Volume" value="817" />
<ctl name="PCM Source" value="DSP" />
<ctl name="DSP1 Firmware" value="Diagnostic" />
<ctl name="R AMP PCM Gain" value="17" />
<ctl name="R Digital PCM Volume" value="817" />
<ctl name="R PCM Source" value="DSP" />
<ctl name="R DSP1 Firmware" value="Diagnostic" />
</path>
<path name="crus-switch-fw-Protection">
<ctl name="PCM Source" value="DSP" />
<ctl name="DSP1 Firmware" value="Protection" />
<ctl name="R PCM Source" value="DSP" />
<ctl name="R DSP1 Firmware" value="Protection" />
</path>
<!-- DSP-initialization Stage -->
<path name="crus-dsp-pre-calibration-amp1">
<ctl name="Main AMP Enable Switch" value="1" />
</path>
<path name="crus-dsp-pre-calibration-amp2">
<ctl name="R Main AMP Enable Switch" value="1" />
</path>
<path name="crus-dsp-pre-calibration">
<path name="crus-dsp-pre-calibration-amp1" />
<path name="crus-dsp-pre-calibration-amp2" />
</path>
<path name="crus-dsp-pre-diagnostic-amp1">
<ctl name="Main AMP Enable Switch" value="1" />
</path>
<path name="crus-dsp-pre-diagnostic-amp2">
<ctl name="R Main AMP Enable Switch" value="1" />
</path>
<path name="crus-dsp-pre-diagnostic">
<path name="crus-dsp-pre-diagnostic-amp1" />
<path name="crus-dsp-pre-diagnostic-amp2" />
</path>
<path name="crus-dsp-pre-protection">
<ctl name="Main AMP Enable Switch" value="1" />
<ctl name="R Main AMP Enable Switch" value="1" />
</path>
<!-- Clock-trigger Stage -->
<path name="platform-controls">
<ctl name="PCM Playback Volume" value="1000"/>
<ctl name="SINK_IDS" id="0" value="0"/>
<ctl name="SINK_IDS" id="1" value="-1"/>
<ctl name="TDM_0_RX Mixer EP6" value="1"/>
</path>
<!-- Post loaded firmware -->
<path name="crus-dsp-post-loading-fw">
<ctl name="Main AMP Enable Switch" value="0" />
<ctl name="R Main AMP Enable Switch" value="0" />
</path>
<!-- Value & Information Fetch Stage -->
<path name="platform-values">
<ctl name="TDM_0_RX Format" />
<ctl name="TDM_0_RX Chan" />
<ctl name="TDM_0_RX Sample Rate" />
<ctl name="PCM Playback Volume" />
<ctl name="TDM_0_RX Mixer EP6" />
</path>
<path name="cs35l41-values">
<ctl name="DRE DRE Switch" />
<ctl name="R DRE DRE Switch" />
<ctl name="VBSTMON Output Switch" />
<ctl name="R VBSTMON Output Switch" />
<ctl name="AMP PCM Gain" />
<ctl name="R AMP PCM Gain" />
<ctl name="Digital PCM Volume" />
<ctl name="R Digital PCM Volume" />
<ctl name="PCM Source" />
<ctl name="R PCM Source" />
<ctl name="DSP Booted" />
<ctl name="R DSP Booted" />
<ctl name="Main AMP Enable Switch" />
<ctl name="R Main AMP Enable Switch" />
<ctl name="DSP1 Preload Switch" />
<ctl name="R DSP1 Preload Switch" />
<ctl name="DSP1 Firmware" />
<ctl name="R DSP1 Firmware" />
</path>
<!-- Note that the order of controls does matter because
it should be matched to the structure defined in
sp_cal_common.h -->
<!--
struct calibration_data {
unsigned int cal_r;
unsigned int cal_status;
unsigned int cal_checksum;
unsigned int cal_ambient;
unsigned int amp_pcm_gain;
unsigned int digital_pcm_gain;
};
-->
<path name="cs35l41-dsp-amp1-calibration-values">
<ctl name="DSP1 Calibration cd CAL_R" />
<ctl name="DSP1 Calibration cd CAL_STATUS" />
<ctl name="DSP1 Calibration cd CAL_CHECKSUM" />
<ctl name="DSP1 Calibration cd CAL_AMBIENT" />
<ctl name="AMP PCM Gain" />
<ctl name="Digital PCM Volume" />
<!-- Only for debug print -->
<ctl name="DSP1 Calibration cd CAL_SET_STATUS" />
</path>
<path name="cs35l41-dsp-amp2-calibration-values">
<ctl name="R DSP1 Calibration cd CAL_R" />
<ctl name="R DSP1 Calibration cd CAL_STATUS" />
<ctl name="R DSP1 Calibration cd CAL_CHECKSUM" />
<ctl name="R DSP1 Calibration cd CAL_AMBIENT" />
<ctl name="R AMP PCM Gain" />
<ctl name="R Digital PCM Volume" />
<!-- Only for debug print -->
<ctl name="R DSP1 Calibration cd CAL_SET_STATUS" />
</path>
<!--
struct diagnostic_data {
struct calibration_data calibration_data;
unsigned int z_low_diff;
unsigned int diag_f0;
unsigned int diag_f0_status;
};
-->
<path name="cs35l41-dsp-amp1-diagnostic-values">
<!-- struct calibration_data START -->
<ctl name="DSP1 Diagnostic cd CAL_R" />
<ctl name="DSP1 Diagnostic cd CAL_STATUS" />
<ctl name="DSP1 Diagnostic cd CAL_CHECKSUM" />
<ctl name="DSP1 Diagnostic cd CAL_AMBIENT" />
<ctl name="AMP PCM Gain" />
<ctl name="Digital PCM Volume" />
<!-- struct calibration_data END -->
<ctl name="DSP1 Diagnostic cd DIAG_Z_LOW_DIFF" />
<ctl name="DSP1 Diagnostic cd DIAG_F0" />
<ctl name="DSP1 Diagnostic cd DIAG_F0_STATUS" />
<!-- Only for debug print -->
<ctl name="DSP1 Diagnostic cd CAL_SET_STATUS" />
</path>
<path name="cs35l41-dsp-amp2-diagnostic-values">
<!-- struct calibration_data START -->
<ctl name="R DSP1 Diagnostic cd CAL_R" />
<ctl name="R DSP1 Diagnostic cd CAL_STATUS" />
<ctl name="R DSP1 Diagnostic cd CAL_CHECKSUM" />
<ctl name="R DSP1 Diagnostic cd CAL_AMBIENT" />
<ctl name="R AMP PCM Gain" />
<ctl name="R Digital PCM Volume" />
<!-- struct calibration_data END -->
<ctl name="R DSP1 Diagnostic cd DIAG_Z_LOW_DIFF" />
<ctl name="R DSP1 Diagnostic cd DIAG_F0" />
<ctl name="R DSP1 Diagnostic cd DIAG_F0_STATUS" />
<!-- Only for debug print -->
<ctl name="R DSP1 Diagnostic cd CAL_SET_STATUS" />
</path>
<path name="cs35l41-dsp-amp1-protection-values">
<!-- struct calibration_data START -->
<ctl name="DSP1 Protection cd CAL_R" />
<ctl name="DSP1 Protection cd CAL_STATUS" />
<ctl name="DSP1 Protection cd CAL_CHECKSUM" />
<ctl name="DSP1 Protection cd CAL_AMBIENT" />
<!-- These controls are unrelated so we can simply
skip them
<ctl name="AMP PCM Gain" />
<ctl name="Digital PCM Volume" />
-->
<!-- struct calibration_data END -->
</path>
<path name="cs35l41-dsp-amp2-protection-values">
<!-- struct calibration_data START -->
<ctl name="R DSP1 Protection cd CAL_R" />
<ctl name="R DSP1 Protection cd CAL_STATUS" />
<ctl name="R DSP1 Protection cd CAL_CHECKSUM" />
<ctl name="R DSP1 Protection cd CAL_AMBIENT" />
<!-- These controls are unrelated so we can simply
skip them
<ctl name="R AMP PCM Gain" />
<ctl name="R Digital PCM Volume" />
-->
<!-- struct calibration_data END -->
</path>
<path name="cs35l41-dsp-amp1-calibration-completion">
<ctl name="DSP1 Calibration cd CAL_STATUS" />
</path>
<path name="cs35l41-dsp-amp2-calibration-completion">
<ctl name="R DSP1 Calibration cd CAL_STATUS" />
</path>
<path name="cs35l41-dsp-amp1-protection-completion">
<ctl name="DSP1 Protection cd CAL_SET_STATUS" />
</path>
<path name="cs35l41-dsp-amp2-protection-completion">
<ctl name="R DSP1 Protection cd CAL_SET_STATUS" />
</path>
<path name="cs35l41-dsp-amp1-diagnostic-completion">
<ctl name="DSP1 Diagnostic cd CAL_STATUS" />
<ctl name="DSP1 Diagnostic cd DIAG_F0_STATUS" />
</path>
<path name="cs35l41-dsp-amp2-diagnostic-completion">
<ctl name="R DSP1 Diagnostic cd CAL_STATUS" />
<ctl name="R DSP1 Diagnostic cd DIAG_F0_STATUS" />
</path>
<path name="cs35l41-dsp-amp1-enable-status">
<ctl name="Main AMP Enable Switch" />
</path>
<path name="cs35l41-dsp-amp2-enable-status">
<ctl name="R Main AMP Enable Switch" />
</path>
</mixer>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,22 @@
#
# Copyright (C) 2021 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.
#
AUDIO_FACTORY_TABLE_FOLDER := lynx
# Mixer Path Configuration for Audio Factory
PRODUCT_COPY_FILES += \
device/google/lynx/audio/$(AUDIO_FACTORY_TABLE_FOLDER)/config/mixer_paths_factory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_factory.xml

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1,284 @@
<?xml version="1.0" encoding="UTF-8"?>
<template>
<modules>
<module id="2" name="Waves">
<param id="0" max="3" name="opMode_" type="uint32"/>
</module>
<module id="3" name="Forte">
<param id="0" max="3" name="opMode_" type="uint32"/>
</module>
<module id="5" name="Auto Gain Control">
<param default="0" id="0" max="3" name="opMode_" type="uint32"/>
<param default="48000" id="1" name="fs_" type="uint32"/>
<param default="1" id="2" name="numCh_" type="uint32"/>
<param default="1" id="3" name="chMask_" type="uint32"/>
<param id="16" name="GainApplied" type="float"/>
<param id="17" name="idealRMS" type="float"/>
<param id="18" name="noiseGate" type="float"/>
<param id="19" name="minGain" type="float"/>
<param id="20" name="maxGain" type="float"/>
<param id="21" name="longGainAtRt" type="uint32"/>
<param id="22" name="GainAtRt" type="uint32"/>
<param id="23" name="rmsTav" type="uint32"/>
</module>
<module id="6" name="Surround Record">
<param default="0" id="0" max="3" name="opMode_" type="uint32"/>
<param default="48000" id="1" name="fs_" type="uint32"/>
<param default="3" id="2" name="numCh_" type="uint32"/>
<param default="7" id="3" name="chMask_" type="uint32"/>
<param id="16" max="1" min="0" name="alpha" type="float"/>
<param complex="true" id="17" name="ch0_profileL" size="1024" type="float"/>
<param complex="true" id="18" name="ch1_profileL" size="1024" type="float"/>
<param complex="true" id="19" name="ch2_profileL" size="1024" type="float"/>
<param complex="true" id="20" name="ch0_profileR" size="1024" type="float"/>
<param complex="true" id="21" name="ch1_profileR" size="1024" type="float"/>
<param complex="true" id="22" name="ch2_profileR" size="1024" type="float"/>
<param complex="true" id="23" name="ch0_profileAZ" size="1024" type="float"/>
<param complex="true" id="24" name="ch1_profileAZ" size="1024" type="float"/>
<param complex="true" id="25" name="ch2_profileAZ" size="1024" type="float"/>
<struct id="26">
<param default="1" name="ch_gain" type="float"/>
<param default="1" name="zoom_gain" type="float"/>
</struct>
<param default="0" id="27" name="ch0_assignFrom" type="int32"/>
<param default="1" id="28" name="ch1_assignFrom" type="int32"/>
<param default="2" id="29" name="ch2_assignFrom" type="int32"/>
</module>
<module id="7" name="Multi Channel IIR 2">
<param default="0" id="0" max="3" name="opMode_" type="uint32"/>
<param default="48000" id="1" name="fs_" type="uint32"/>
<param default="3" id="2" name="numCh_" type="uint32"/>
<param default="1" id="3" name="chMask_" type="uint32"/>
<param default="3" id="16" max="3" min="1" name="numOfChannel" type="uint32"/>
<param id="17" name="coeff" size="300" type="float"/>
<struct id="18">
<param max="18" min="-96" name="gain" size="60" type="float"/>
<param max="24000" min="0" name="frequency" size="60" type="uint32"/>
<param max="200" min="0" name="qfactor" size="60" type="float"/>
<param default="4" name="type" size="60" type="int32"/>
</struct>
</module>
<module id="8" name="Multi Band DRC">
<param default="0" id="0" max="3" name="opMode_" type="uint32"/>
<param default="48000" id="1" name="fs_" type="uint32"/>
<param default="2" id="2" name="numCh_" type="uint32"/>
<param default="3" id="3" name="chMask_" type="uint32"/>
<struct id="16">
<param default="1" max="3" min="1" name="numBand" type="uint32"/>
<param name="IIR_LowPass1" size="5" type="float"/>
<param name="IIR_HighPass1" size="5" type="float"/>
<param name="IIR_LowPass2" size="5" type="float"/>
<param name="IIR_HighPass2" size="5" type="float"/>
</struct>
<struct id="17">
<param max="20" min="0" name="band0_delay_ms" type="float"/>
<param default="5" max="20" min="0" minInclusive="false" name="band0_rms_ms" type="float"/>
<param max="30" min="0" name="band0_gain_dB" type="float"/>
<param max="30" min="-30" name="band0_Min_Gain_dB" type="float"/>
<param default="1" max="3" min="1" name="band0_numOfKnee" type="uint32"/>
<param name="band0_threadhold_dB" size="3" type="float"/>
<param name="band0_compressRatio" size="4" type="float"/>
<param name="band0_kneeWidth" size="3" type="float"/>
<param name="band0_attackTime_ms" size="4" type="float"/>
<param name="band0_releaseTime_ms" size="4" type="float"/>
<param name="band0_hysteresis" size="4" type="float"/>
<param max="20" min="0" name="band1_delay_ms" type="float"/>
<param default="5" max="20" min="0" minInclusive="false" name="band1_rms_ms" type="float"/>
<param max="30" min="0" name="band1_gain_dB" type="float"/>
<param max="30" min="-30" name="band1_Min_Gain_dB" type="float"/>
<param default="1" max="3" min="1" name="band1_numOfKnee" type="uint32"/>
<param name="band1_threadhold_dB" size="3" type="float"/>
<param name="band1_compressRatio" size="4" type="float"/>
<param name="band1_kneeWidth" size="3" type="float"/>
<param name="band1_attackTime_ms" size="4" type="float"/>
<param name="band1_releaseTime_ms" size="4" type="float"/>
<param name="band1_hysteresis" size="4" type="float"/>
<param max="20" min="0" name="band2_delay_ms" type="float"/>
<param default="5" max="20" min="0" minInclusive="false" name="band2_rms_ms" type="float"/>
<param max="30" min="0" name="band2_gain_dB" type="float"/>
<param max="30" min="-30" name="band2_Min_Gain_dB" type="float"/>
<param default="1" max="3" min="1" name="band2_numOfKnee" type="uint32"/>
<param name="band2_threadhold_dB" size="3" type="float"/>
<param name="band2_compressRatio" size="4" type="float"/>
<param name="band2_kneeWidth" size="3" type="float"/>
<param name="band2_attackTime_ms" size="4" type="float"/>
<param name="band2_releaseTime_ms" size="4" type="float"/>
<param name="band2_hysteresis" size="4" type="float"/>
</struct>
<struct id="18">
<param max="30" min="-30" name="limiter_gain_dB" type="float"/>
<param max="0" min="-30" name="limiter_threadhold_dB" type="float"/>
<param max="100" min="0" name="limiter_attackTime_ms" type="float"/>
<param max="100" min="0" name="limiter_releaseTime_ms" type="float"/>
</struct>
<struct id="19">
<param name="frequency0" type="uint32"/>
<param name="frequency1" type="uint32"/>
</struct>
</module>
<module id="11" name="Stationary Noise Suppression">
<param default="0" id="0" max="3" name="opMode_" type="uint32"/>
<param default="48000" id="1" name="fs_" type="uint32"/>
<param default="2" id="2" name="numCh_" type="uint32"/>
<param default="3" id="3" name="chMask_" type="uint32"/>
<param default="1" id="16" name="strength level" type="uint32"/>
<param id="17" name="POWER_TIME_SMOOTH" type="float"/>
<param id="18" name="RMS_TIME_SMOOTH" type="float"/>
<param id="19" name="LOWER_BAND_THRESHOLD" size="129" type="float"/>
<param id="20" name="UPPER_BAND_THRESHOLD" size="3" type="float"/>
<param id="21" name="ATTACK_TIME" type="float"/>
<param id="22" name="RELEASE_TIME" type="float"/>
</module>
<module id="14" name="Linear Gain">
<param default="0" id="0" max="3" name="opMode_" type="uint32"/>
<param default="48000" id="1" name="fs_" type="uint32"/>
<param default="1" id="2" name="numCh_" type="uint32"/>
<param default="1" id="3" name="chMask_" type="uint32"/>
<param id="16" name="Simple_gain" type="float"/>
</module>
<module id="17" name="Wind Noise Reduction">
<param default="0" id="0" max="3" name="opMode_" type="uint32"/>
<param default="48000" id="1" name="fs_" type="uint32"/>
<param default="2" id="2" name="numCh_" type="uint32"/>
<param default="3" id="3" name="chMask_" type="uint32"/>
<param default="450" id="16" name="DECISION_SMOOTHING_FACTOR" type="int32"/>
<param default="50" id="17" name="DECISION_ATTACK_SMOOTHING_FACTOR" type="int32"/>
<param default="50" id="18" name="DECISION_RELEASE_HIGH_SMOOTHING_FACTOR" type="int32"/>
<param default="50" id="19" name="DECISION_RELEASE_LOW_SMOOTHING_FACTOR" type="int32"/>
<param default="700" id="20" name="DECISION_RELEASE_THRESHOLD" type="int32"/>
<param default="0" id="21" name="DECISION_RANGE_OFFSET_FACTOR" type="int32"/>
<param default="1000" id="22" name="DECISION_RANGE_SLOPE_FACTOR" type="int32"/>
<param default="450" id="23" name="DECISION_GAIN_SMOOTHING_FACTOR" type="int32"/>
<param default="27" id="24" name="DECISION_DB_RANGE" type="int32"/>
<param default="1000" id="25" name="MASTER_REDUCTION_FACTOR" type="int32"/>
<param default="15" id="26" name="KEEP_NUM_OF_PREV_DECISIONS" type="int32"/>
<param default="1000" id="27" name="DEC_PRE_GAIN" type="int32"/>
<param default="16000" id="28" name="SUP_PRE_GAIN" type="int32"/>
<param default="2" id="29" name="COHERENCE_ENABLE" type="int32"/>
<param default="1" id="30" name="COHERENCE_START_BIN" type="int32"/>
<param default="10" id="31" name="COHERENCE_END_BIN" type="int32"/>
<param default="300" id="32" name="COHERENCE_THRESHOLD" type="int32"/>
<param default="990" id="33" name="COHERENCE_FORGETTING_FACTOR" type="int32"/>
<param default="0" id="34" name="DB_SCALING_FACTOR" type="int32"/>
<param default="9" id="35" name="SEP_LAYER" type="int32"/>
<param default="1" id="36" name="SP_GAIN_ENABLE" type="int32"/>
<param default="15" id="37" name="SP_GAIN_MAX_BIN" type="int32"/>
<param default="500" id="38" name="SP_GAIN_MIN" type="int32"/>
<param default="200" id="39" name="SP_GAIN_TH_MIN" type="int32"/>
<param default="450" id="40" name="SP_GAIN_TH_MAX" type="int32"/>
<param default="800" id="41" name="SP_GAIN_SMOOTH" type="int32"/>
<param default="3" id="42" name="SP_GAIN_FREQ_SMOOTH" type="int32"/>
<param default="300" id="43" name="MASTER_MAX_SUP_SMOOTHING_FACTOR" type="int32"/>
<param default="1" id="44" name="GAIN_FREQ_SMOOTH" type="int32"/>
<param default="2" id="45" name="GMIN_CURVE_TYPE" type="int32"/>
<param default="55" id="46" name="GMIN_LINEAR_SPLIT_MID_POINT_BINR" type="int32"/>
<param default="330" id="47" name="GMIN_LINEAR_SPLIT_MID_POINT_VAL" type="int32"/>
<param default="1000" id="48" name="SP_OVERSUB_RATIO" type="int32"/>
<param default="16" id="49" name="WIND_ENERGY_EST_COMPENSATION_GAIN" type="int32"/>
<param default="2000" id="50" name="WIND_ENERGY_CURVE_SLOPE" type="int32"/>
<param default="300" id="51" name="WIND_ENERGY_CURVE_OFFSET" type="int32"/>
<param default="16000" id="52" name="WIND_ENERGY_CURVE_MIN" type="int32"/>
<param default="16000" id="53" name="WIND_ENERGY_CURVE_MAX" type="int32"/>
<param default="900" id="54" name="WIND_ENERGY_SMOOTHING" type="int32"/>
<param default="144" id="55" name="WIND_ENERGY_NORM_DENOM" type="int32"/>
<param default="600" id="56" name="WIND_ENERGY_CURVE_SCALED_TH_MIN" type="int32"/>
<param default="900" id="57" name="WIND_ENERGY_CURVE_SCALED_TH_MAX" type="int32"/>
<param default="1" id="58" name="ENABLE_ML_COMBI_WIND_ENERGY" type="int32"/>
<param default="1" id="59" name="ENABLE_SP_COMBI_WIND_ENERGY" type="int32"/>
<param default="1" id="60" name="ENALBE_SP_COMBI_OVERSUBTRACTION" type="int32"/>
<param default="1" id="61" name="ENABLE_PRIORI_SNR" type="int32"/>
<param default="1000" id="62" name="PRIORI_SNR_ML_TUNING" type="int32"/>
<param default="15" id="63" name="DEC_PREV_NUM" type="int32"/>
<param default="1" id="64" name="SSC_ENABLE" type="int32"/>
<param default="930" id="65" name="SSC_SOFT_SMOOTHING_FACTOR" type="int32"/>
<param default="1600" id="66" name="SSC_OVERDRIVE" type="int32"/>
<param default="3" id="67" name="SSC_MIN_FREQ" type="int32"/>
<param default="130" id="68" name="SSC_MAX_FREQ" type="int32"/>
<param default="700" id="69" name="SSC_PSD_SMOOTHING_FACTOR" type="int32"/>
<param default="12" id="70" name="SSC_SOFT_DECISION_MIN_FREQ" type="int32"/>
<param default="450" id="71" name="SSC_SOFT_DECISION_MAX_FREQ" type="int32"/>
<param default="5" id="72" name="SSC_KEEP_SAVED_PROB_SMOOTH_SIZE" type="int32"/>
<param default="1000" id="73" name="GAIN_BOOSTING_COST" type="int32"/>
</module>
<module id="18" name="Multi Channel IIR 1">
<param default="0" id="0" max="3" name="opMode_" type="uint32"/>
<param default="48000" id="1" name="fs_" type="uint32"/>
<param default="2" id="2" name="numCh_" type="uint32"/>
<param default="3" id="3" name="chMask_" type="uint32"/>
<param default="3" id="16" max="3" min="1" name="numOfChannel" type="uint32"/>
<param id="17" name="coeff" size="300" type="float"/>
<struct id="18">
<param max="18" min="-96" name="gain" size="60" type="float"/>
<param max="24000" min="0" name="frequency" size="60" type="uint32"/>
<param max="200" min="0" name="qfactor" size="60" type="float"/>
<param default="4" name="type" size="60" type="int32"/>
</struct>
</module>
<module id="32" name="Single Band DRC">
<param default="1" id="0" max="3" name="opMode_" type="uint32"/>
<param default="48000" id="1" name="fs_" type="uint32"/>
<param default="2" id="2" name="numCh_" type="uint32"/>
<param default="3" id="3" name="chMask_" type="uint32"/>
<struct id="16">
<param max="20" min="0" name="delay_ms" type="float"/>
<param default="5" max="20" min="0" minInclusive="false" name="rms_ms" type="float"/>
<param max="30" min="0" name="gain_dB" type="float"/>
<param max="30" min="-30" name="Min_Gain_dB" type="float"/>
<param default="1" max="3" min="1" name="numOfKnee" type="uint32"/>
<param name="threadhold_dB" size="3" type="float"/>
<param name="compressRatio" size="4" type="float"/>
<param name="kneeWidth" size="3" type="float"/>
<param name="attackTime_ms" size="4" type="float"/>
<param name="releaseTime_ms" size="4" type="float"/>
<param name="hysteresis" size="4" type="float"/>
</struct>
<struct id="17">
<param max="30" min="-30" name="limiter_gain_dB" type="float"/>
<param max="0" min="-30" name="limiter_threadhold_dB" type="float"/>
<param max="100" min="0" name="limiter_attackTime_ms" type="uint32"/>
<param max="100" min="0" name="limiter_releaseTime_ms" type="uint32"/>
</struct>
</module>
<module id="10000" name="Eraser">
<param id="275" name="eraser_pre_gain" type="uint32"/>
<param id="277" name="eraser_post_gain" type="uint32"/>
<param id="279" name="non_eraser_gain" type="uint32"/>
</module>
<module id="10001" name="Cleaner">
<param id="299" name="cleaner_post_gain" type="uint32"/>
</module>
<module id="10002" name="CHRE">
<param id="297" name="chre_gain" type="uint32"/>
</module>
</modules>
<signalflows>
<signalflow id="1" name="Spatial Audio">
<block id="128">
<moduleRef id="18"/>
<moduleRef id="17"/>
</block>
<block id="134">
<moduleRef id="14"/>
<moduleRef id="11"/>
<moduleRef id="6"/>
<moduleRef id="7"/>
<moduleRef id="5"/>
<moduleRef id="8"/>
</block>
</signalflow>
<signalflow id="2" name="General Mic Recording">
<block id="137">
<moduleRef id="14"/>
<moduleRef id="7"/>
<moduleRef id="32"/>
</block>
</signalflow>
<signalflow id="1000" name="Smart Feature">
<block id="0">
<moduleRef id="10000"/>
<moduleRef id="10001"/>
<moduleRef id="10002"/>
</block>
</signalflow>
</signalflows>
</template>

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,58 @@
########################################################################################################
# (Optional) The supported features list for platform vendors to query from.
# Platform vendors should call maxxaudio_qdsp_is_feature_supported with a string to query from the list.
# This config has no effect in the MaxxAudioQdspHalController. It's only meaningful for platform vendors.
# Putting any value other than 1 would be equivalent to not supported.
########################################################################################################
[HAL_SUPPORTED_FEATURES]
CUSTOM_ACTION_256=1
########################################################################################################
# This defined the options of supported sample rates.
# This can be configured by Waves or platform vendor.
########################################################################################################
[HAL_SUPPORTED_SAMPLE_RATES]
SR_COMMON = 48000
########################################################################################################
# (Optional) The subtypes that applies to different angles(0, 90, 180, 270). Can be empty if not applicable.
# This can be configured by Waves or platform vendor.
########################################################################################################
[HAL_ORIENTATION_SUBTYPES]
OST_SPEAKER = 0:12,90:13,180:12,270:0|13
########################################################################################################
# This defines available preset configurations.
# This should be configured by Waves only unless platform vendor is familiar with MPS structure.
########################################################################################################
[HAL_SUPPORTED_PRESETS]
SPEAKER_MUSIC = OM:1,SM:2,OST:OST_SPEAKER
SPEAKER_SAFE_MUSIC = OM:10,SM:2,OST:OST_SPEAKER
SPEAKER_SAFE_CALL = OM:10,SM:2,OST:OST_SPEAKER
HEADSET_MUSIC = OM:2,SM:2
########################################################################################################
# This defines available CONTROL configurations. Only define the CONTROL if you need it.
# The numbers could vary from device to device.
# This can be configured by Waves or platform vendor.
########################################################################################################
[HAL_SUPPORTED_CONTROLS]
SPEAKER_INSTANCE = INSTANCE:1,DEV:0,SR:SR_COMMON,PRESET:SPEAKER_MUSIC|SPEAKER_SAFE_MUSIC|SPEAKER_SAFE_CALL
A2DP_INSTANCE = INSTANCE:2,DEV:0,SR:SR_COMMON,PRESET:HEADSET_MUSIC
USB_HEADPHONE_INSTANCE = INSTANCE:4,DEV:0,SR:SR_COMMON,PRESET:HEADSET_MUSIC
[COEFS_CONVERTER_SETTING]
AlgFxPath=/vendor/lib/libAlgFx_HiFi3z.so
AlgFxPath64=/vendor/lib64/libAlgFx_HiFi3z.so
# do not modify the following if not necessary
#AudioFormatType=0
#AudioFormatChannels=2
#AudioFormatSampleRate=48000
#AudioFormatBitsPerSample=32
#AudioFormatSampleSize=4
#AudioFormatIncrement=8
[CUSTOM_ACTION_256]
CASE_1=PRIORITY:0,NUMBERS:2:0|1,PRESET:SPEAKER_MUSIC
CASE_2=PRIORITY:1,NUMBERS:1|2|4194304:2|3|4,PRESET:SPEAKER_SAFE_CALL
CASE_3=PRIORITY:2,NUMBERS:1|4194304:0|1,PRESET:SPEAKER_SAFE_MUSIC

Binary file not shown.

View File

@ -0,0 +1,4 @@
# This is BTBCM HAL overlay configuration file.
# Uart port name
UartPort = /dev/ttySAC18

1
board-info.txt Normal file
View File

@ -0,0 +1 @@
require board=lynx

39
conf/init.lynx.rc Normal file
View File

@ -0,0 +1,39 @@
# Lynx specific init.rc
import /vendor/etc/init/hw/init.gs201.rc
on init
# NFC streset tool name
setprop persist.vendor.nfc.streset libstreset21
setprop persist.vendor.se.streset libstreset21
# When ro.build.flavor=factory_lynx-userdebug, add vendor/bin/factory to default path
on init && property:ro.build.flavor=factory_lynx-userdebug
export PATH /product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin:/vendor/bin/factory
on early-boot
# Wait for insmod_sh to finish all common modules
wait_for_prop vendor.common.modules.ready 1
start insmod_sh_lynx
service insmod_sh_lynx /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.lynx.cfg
class main
user root
group root system
disabled
oneshot
on boot && property:ro.build.flavor=factory_lynx-userdebug
# FTM log folder
mkdir /data/ftmlog 0775 system system
# Audio test folder
mkdir /data/AudioTest 0775 system system
on property:vendor.mfgapi.touchpanel.permission=1
chmod 0600 /sys/devices/virtual/sec/tsp/cmd
chown system system /sys/devices/virtual/sec/tsp/cmd
# Fingerprint
on post-fs-data
chown system system /dev/goodix_fp
exec_background - system shell -- /vendor/bin/trusty_apploader /vendor/firmware/g7.app

View File

@ -0,0 +1,9 @@
import /init.recovery.${ro.board.platform}.rc
# DELETE ME USB BRINGUP b/188672439. Delete the following two lines after
# USB is brought up completely.
on property:sys.usb.state=fastboot
write /sys/devices/platform/11210000.usb/dwc3_exynos_otg_b_sess 1
on property:sys.usb.state=adb
write /sys/devices/platform/11210000.usb/dwc3_exynos_otg_b_sess 1

135
device-lynx.mk Normal file
View File

@ -0,0 +1,135 @@
#
# Copyright (C) 2021 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.
#
TARGET_KERNEL_DIR ?= device/google/lynx-kernel
TARGET_BOARD_KERNEL_HEADERS := device/google/lynx-kernel/kernel-headers
$(call inherit-product-if-exists, vendor/google_devices/lynx/prebuilts/device-vendor-lynx.mk)
$(call inherit-product-if-exists, vendor/google_devices/gs201/prebuilts/device-vendor.mk)
$(call inherit-product-if-exists, vendor/google_devices/gs201/proprietary/device-vendor.mk)
$(call inherit-product-if-exists, vendor/google_devices/lynx/proprietary/lynx/device-vendor-lynx.mk)
include device/google/gs201/device-shipping-common.mk
include device/google/lynx/audio/lynx/audio-tables.mk
include hardware/google/pixel/vibrator/cs40l26/device.mk
include device/google/gs101/bluetooth/bluetooth.mk
# Init files
PRODUCT_COPY_FILES += \
device/google/lynx/conf/init.lynx.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.lynx.rc
# Recovery files
PRODUCT_COPY_FILES += \
device/google/lynx/conf/init.recovery.device.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.lynx.rc
# insmod files
PRODUCT_COPY_FILES += \
device/google/lynx/init.insmod.lynx.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.lynx.cfg
# Camera
PRODUCT_COPY_FILES += \
device/google/lynx/media_profiles_lynx.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml
# NFC
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.nfc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.xml \
frameworks/native/data/etc/android.hardware.nfc.hce.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.hce.xml \
frameworks/native/data/etc/android.hardware.nfc.hcef.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.hcef.xml \
frameworks/native/data/etc/com.nxp.mifare.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.nxp.mifare.xml \
frameworks/native/data/etc/android.hardware.nfc.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.uicc.xml \
frameworks/native/data/etc/android.hardware.nfc.ese.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.ese.xml \
device/google/lynx/nfc/libnfc-hal-st.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-hal-st.conf \
device/google/lynx/nfc/libnfc-nci-lynx.conf:$(TARGET_COPY_OUT_PRODUCT)/etc/libnfc-nci.conf
PRODUCT_PACKAGES += \
NfcNci \
Tag \
android.hardware.nfc@1.2-service.st
# SecureElement
PRODUCT_PACKAGES += \
android.hardware.secure_element@1.2-service-gto \
android.hardware.secure_element@1.2-service-gto-ese2
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.se.omapi.ese.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.se.omapi.ese.xml \
frameworks/native/data/etc/android.hardware.se.omapi.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.se.omapi.uicc.xml \
device/google/lynx/nfc/libse-gto-hal.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libse-gto-hal.conf \
device/google/lynx/nfc/libse-gto-hal2.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libse-gto-hal2.conf
DEVICE_MANIFEST_FILE += \
device/google/lynx/nfc/manifest_nfc.xml \
device/google/lynx/nfc/manifest_se.xml
# Thermal Config
PRODUCT_COPY_FILES += \
device/google/lynx/thermal_info_config_lynx.json:$(TARGET_COPY_OUT_VENDOR)/etc/thermal_info_config.json
# Bluetooth HAL
PRODUCT_SOONG_NAMESPACES += \
vendor/broadcom/bluetooth
PRODUCT_PACKAGES += \
android.hardware.bluetooth@1.1-service.bcmbtlinux \
bt_vendor.conf
PRODUCT_COPY_FILES += \
device/google/lynx/bluetooth/bt_vendor_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth/bt_vendor_overlay.conf
# Keymaster HAL
#LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= android.hardware.keymaster@4.1-service
# Gatekeeper HAL
#LOCAL_GATEKEEPER_PRODUCT_PACKAGE ?= android.hardware.gatekeeper@1.0-service.software
# Gatekeeper
# PRODUCT_PACKAGES += \
# android.hardware.gatekeeper@1.0-service.software
# Keymint replaces Keymaster
# PRODUCT_PACKAGES += \
# android.hardware.security.keymint-service
# Keymaster
#PRODUCT_PACKAGES += \
# android.hardware.keymaster@4.0-impl \
# android.hardware.keymaster@4.0-service
#PRODUCT_PACKAGES += android.hardware.keymaster@4.0-service.remote
#PRODUCT_PACKAGES += android.hardware.keymaster@4.1-service.remote
#LOCAL_KEYMASTER_PRODUCT_PACKAGE := android.hardware.keymaster@4.1-service
#LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= android.hardware.keymaster@4.1-service
# PRODUCT_PROPERTY_OVERRIDES += \
# ro.hardware.keystore_desede=true \
# ro.hardware.keystore=software \
# ro.hardware.gatekeeper=software
# default BDADDR for EVB only
PRODUCT_PROPERTY_OVERRIDES += \
ro.vendor.bluetooth.evb_bdaddr="22:22:22:33:44:55"
# Fingerprint HAL
GOODIX_CONFIG_BUILD_VERSION := g7_trusty
include device/google/gs101/fingerprint/udfps_common.mk
ifeq ($(filter factory%, $(TARGET_PRODUCT)),)
include device/google/gs101/fingerprint/udfps_shipping.mk
else
include device/google/gs101/fingerprint/udfps_factory.mk
endif
# Vibrator HAL
PRODUCT_VENDOR_PROPERTIES += \
ro.vendor.vibrator.hal.long.frequency.shift=15

34
factory_lynx.mk Normal file
View File

@ -0,0 +1,34 @@
#
# Copyright 2021 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.
#
TARGET_LINUX_KERNEL_VERSION := 5.10
$(call inherit-product, device/google/gs201/factory_common.mk)
$(call inherit-product, device/google/lynx/device-lynx.mk)
include device/google/lynx/audio/lynx/factory-audio-tables.mk
PRODUCT_NAME := factory_lynx
PRODUCT_DEVICE := lynx
PRODUCT_MODEL := Factory build on Lynx
PRODUCT_BRAND := Android
PRODUCT_MANUFACTURER := Google
# default BDADDR for EVB only
PRODUCT_PROPERTY_OVERRIDES += \
ro.vendor.bluetooth.evb_bdaddr="22:22:22:33:44:55"
# Factory binaries of camera
PRODUCT_PACKAGES += fatp_c10p10_wide_hat_tool

16
init.insmod.lynx.cfg Normal file
View File

@ -0,0 +1,16 @@
##########################################################
# init.insmod.lynx.cfg #
# This file contains lynx specific kernel modules #
# to load at init time by init.insmod.sh script #
##########################################################
# Load device specific kernel modules
# Modules here will be loaded *after* all common modules
modprobe|bcmdhd4389.ko
modprobe|snd-soc-cs35l41-spi.ko
modprobe|ftm5.ko
modprobe|sec_touch.ko
modprobe|input-cs40l26-i2c.ko
# All device specific modules loaded
setprop|vendor.device.modules.ready

24
lynx/BoardConfig.mk Normal file
View File

@ -0,0 +1,24 @@
#
# Copyright (C) 2021 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.
#
TARGET_BOARD_INFO_FILE := device/google/lynx/board-info.txt
TARGET_BOOTLOADER_BOARD_NAME := lynx
TARGET_SCREEN_DENSITY := 420
BOARD_USES_GENERIC_AUDIO := true
USES_DEVICE_GOOGLE_LYNX := true
include device/google/gs201/BoardConfig-common.mk
-include vendor/google_devices/gs201/prebuilts/BoardConfigVendor.mk
include device/google/lynx-sepolicy/lynx-sepolicy.mk

189
manifest.xml Normal file
View File

@ -0,0 +1,189 @@
<manifest version="1.0" type="device" target-level="5">
<hal format="hidl">
<name>android.hardware.audio</name>
<transport>hwbinder</transport>
<version>7.0</version>
<interface>
<name>IDevicesFactory</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.audio.effect</name>
<transport>hwbinder</transport>
<version>7.0</version>
<interface>
<name>IEffectsFactory</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.soundtrigger</name>
<transport>hwbinder</transport>
<version>2.3</version>
<interface>
<name>ISoundTriggerHw</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.media.omx</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IOmx</name>
<instance>default</instance>
</interface>
<interface>
<name>IOmxStore</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.graphics.allocator</name>
<transport>hwbinder</transport>
<version>4.0</version>
<interface>
<name>IAllocator</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.graphics.mapper</name>
<transport arch="32+64">passthrough</transport>
<version>4.0</version>
<interface>
<name>IMapper</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.graphics.composer</name>
<transport>hwbinder</transport>
<version>2.4</version>
<interface>
<name>IComposer</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.renderscript</name>
<transport arch="32+64">passthrough</transport>
<version>1.0</version>
<interface>
<name>IDevice</name>
<instance>default</instance>
</interface>
</hal>
<hal format = "hidl">
<name>android.hardware.dumpstate</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IDumpstateDevice</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.bluetooth</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IBluetoothHci</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.bluetooth.audio</name>
<transport>hwbinder</transport>
<version>2.1</version>
<interface>
<name>IBluetoothAudioProvidersFactory</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.boot</name>
<transport>hwbinder</transport>
<fqname>@1.2::IBootControl/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.neuralnetworks</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>IDevice</name>
<instance>armnn</instance>
</interface>
<fqname>@1.2::IDevice/armnn</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.neuralnetworks</name>
<transport>hwbinder</transport>
<fqname>@1.3::IDevice/google-edgetpu</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.nfc</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>INfc</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.health</name>
<transport>hwbinder</transport>
<version>2.1</version>
<interface>
<name>IHealth</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>hardware.google.bluetooth.bt_channel_avoidance</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IBTChannelAvoidance</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>hardware.google.bluetooth.sar</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IBluetoothSar</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>hardware.google.bluetooth.ccc</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IBluetoothCcc</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>vendor.google.google_battery</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IGoogleBattery</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>vendor.google.whitechapel.audio.audioext</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>IAudioExt</name>
<instance>default</instance>
</interface>
</hal>
<kernel target-level="6"/>
</manifest>

1611
media_profiles_lynx.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,152 @@
########################### Start of libnf-hal-st_aosp.conf ###########################
###############################################################################
###############################################################################
# ST HAL trace log level
STNFC_HAL_LOGLEVEL=4
NFC_DEBUG_ENABLED=1
###############################################################################
# Vendor specific mode to enable FW (RF & SWP) traces.
STNFC_FW_DEBUG_ENABLED=0
###############################################################################
# File used for NFA storage
NFA_STORAGE="/data/nfc"
###############################################################################
# Dev Node used for ST HAL
ST_NFC_DEV_NODE="/dev/st_no_such_device"
###############################################################################
# Keep the nfa storage file.
PRESERVE_STORAGE=1
###############################################################################
# In Switch OFF mode (phone switched-off), specify the desired CE mode to
# the controller.
# 0: No card-emulation; DEFAULT
# 1: Switch-off card-emulation enabled
CE_ON_SWITCH_OFF_STATE=1
###############################################################################
# Vendor specific mode to support the USB charging mode if VPSIO=1 in switch off.
STNFC_USB_CHARGING_MODE=1
###############################################################################
# Vendor Specific Proprietary Protocol & Discovery Configuration
# Set to 0xFF if unsupported
# byte[0] NCI_PROTOCOL_18092_ACTIVE
# byte[1] NCI_PROTOCOL_B_PRIME
# byte[2] NCI_PROTOCOL_DUAL
# byte[3] NCI_PROTOCOL_15693
# byte[4] NCI_PROTOCOL_KOVIO
# byte[5] NCI_PROTOCOL_MIFARE
# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO
# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME
# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME
NFA_PROPRIETARY_CFG={05:FF:FF:06:8A:90:77:FF:FF}
###############################################################################
# Choose the presence-check algorithm for type-4 tag. If not defined,
# the default value is 1.
# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm
# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block
# 2 NFA_RW_PRES_CHK_RESET; Deactivate to Sleep, then re-activate
# 3 NFA_RW_PRES_CHK_RB_CH0; Type-4 tag protocol's ReadBinary command on channel 0
# 4 NFA_RW_PRES_CHK_RB_CH3; Type-4 tag protocol's ReadBinary command on channel 3
# 5 NFA_RW_PRES_CHK_ISO_DEP_NAK; presence check command ISO-DEP NAK as per NCI2.0
PRESENCE_CHECK_ALGORITHM=5
###############################################################################
# Name of the NCI HAL module to use
# If unset, falls back to nfc_nci.bcm2079x
NCI_HAL_MODULE="nfc_nci.st21nfc"
###############################################################################
# White list to be set at startup.
DEVICE_HOST_WHITE_LIST={02:C0}
###############################################################################
# BAIL OUT value for P2P
# Implements algorithm for NFC-DEP protocol priority over ISO-DEP protocol.
POLL_BAIL_OUT_MODE=1
###############################################################################
# Extended APDU length for ISO_DEP
ISO_DEP_MAX_TRANSCEIVE=0xFEFF
###############################################################################
# Configure the NFC Extras to open and use a static pipe. If the value is
# not set or set to 0, then the default is use a dynamic pipe based on a
# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value
# for each EE (ESE/SIM)
OFF_HOST_ESE_PIPE_ID=0x5E
OFF_HOST_SIM_PIPE_ID=0x3E
###############################################################################
#Set the default Felica T3T System Code OffHost route Location :
#This settings will be used when application does not set this parameter
# host 0x00
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
DEFAULT_SYS_CODE_ROUTE=0x86
###############################################################################
#Set the Felica T3T System Code supported power state:
DEFAULT_SYS_CODE_PWR_STATE=0x3B
###############################################################################
# Path and Files used for FW update binaries storage
STNFC_FW_PATH_STORAGE="/vendor/firmware"
STNFC_FW_BIN_NAME="/st54j_fw.bin"
STNFC_FW_CONF_NAME="/st54j_conf.bin"
###############################################################################
# Default off-host route for Felica.
# This settings will be used when application does not set this parameter
# host 0x00
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
DEFAULT_NFCF_ROUTE=0x86
###############################################################################
# Configure the default off-host route.
# used for technology A and B routing
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
DEFAULT_OFFHOST_ROUTE=0x81
###############################################################################
# Configure the default AID route.
# host 0x00
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
DEFAULT_ROUTE=0x00
###############################################################################
# Configure the NFCEEIDs of offhost UICC.
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
OFFHOST_ROUTE_UICC={81}
###############################################################################
# Configure the NFCEEIDs of offhost eSEs.
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
OFFHOST_ROUTE_ESE={86}
###############################################################################
# Configure the list of NFCEE for the ISO-DEP routing.
# host 0x00
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
DEFAULT_ISODEP_ROUTE=0x81
###############################################################################
# Core configuration settings
CORE_CONF_PROP={ 20, 02, 0a, 03,
a1, 01, 1e,
a2, 01, 19,
80, 01, 01
}

154
nfc/libnfc-hal-st.conf Normal file
View File

@ -0,0 +1,154 @@
########################### Start of libnf-hal-st_aosp.conf ###########################
###############################################################################
###############################################################################
# ST HAL trace log level
STNFC_HAL_LOGLEVEL=1
NFC_DEBUG_ENABLED=0
###############################################################################
# Vendor specific mode to enable FW (RF & SWP) traces.
STNFC_FW_DEBUG_ENABLED=0
###############################################################################
# File used for NFA storage
NFA_STORAGE="/data/nfc"
###############################################################################
# Keep the nfa storage file.
PRESERVE_STORAGE=1
###############################################################################
# In Switch OFF mode (phone switched-off), specify the desired CE mode to
# the controller.
# 0: No card-emulation; DEFAULT
# 1: Switch-off card-emulation enabled
CE_ON_SWITCH_OFF_STATE=1
###############################################################################
# Vendor specific mode to support the USB charging mode if VPSIO=1 in switch off.
STNFC_USB_CHARGING_MODE=1
###############################################################################
# Vendor Specific Proprietary Protocol & Discovery Configuration
# Set to 0xFF if unsupported
# byte[0] NCI_PROTOCOL_18092_ACTIVE
# byte[1] NCI_PROTOCOL_B_PRIME
# byte[2] NCI_PROTOCOL_DUAL
# byte[3] NCI_PROTOCOL_15693
# byte[4] NCI_PROTOCOL_KOVIO
# byte[5] NCI_PROTOCOL_MIFARE
# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO
# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME
# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME
NFA_PROPRIETARY_CFG={05:FF:FF:06:8A:90:77:FF:FF}
###############################################################################
# Choose the presence-check algorithm for type-4 tag. If not defined,
# the default value is 1.
# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm
# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block
# 2 NFA_RW_PRES_CHK_RESET; Deactivate to Sleep, then re-activate
# 3 NFA_RW_PRES_CHK_RB_CH0; Type-4 tag protocol's ReadBinary command on channel 0
# 4 NFA_RW_PRES_CHK_RB_CH3; Type-4 tag protocol's ReadBinary command on channel 3
# 5 NFA_RW_PRES_CHK_ISO_DEP_NAK; presence check command ISO-DEP NAK as per NCI2.0
PRESENCE_CHECK_ALGORITHM=5
###############################################################################
# Name of the NCI HAL module to use
# If unset, falls back to nfc_nci.bcm2079x
NCI_HAL_MODULE="nfc_nci.st21nfc"
###############################################################################
# White list to be set at startup.
DEVICE_HOST_WHITE_LIST={02:C0}
###############################################################################
# BAIL OUT value for P2P
# Implements algorithm for NFC-DEP protocol priority over ISO-DEP protocol.
POLL_BAIL_OUT_MODE=1
###############################################################################
# Extended APDU length for ISO_DEP
ISO_DEP_MAX_TRANSCEIVE=0xFEFF
###############################################################################
# Configure the NFC Extras to open and use a static pipe. If the value is
# not set or set to 0, then the default is use a dynamic pipe based on a
# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value
# for each EE (ESE/SIM)
OFF_HOST_ESE_PIPE_ID=0x5E
OFF_HOST_SIM_PIPE_ID=0x3E
###############################################################################
#Set the default Felica T3T System Code OffHost route Location :
#This settings will be used when application does not set this parameter
# host 0x00
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
DEFAULT_SYS_CODE_ROUTE=0x86
###############################################################################
#Set the Felica T3T System Code supported power state:
DEFAULT_SYS_CODE_PWR_STATE=0x3B
###############################################################################
# Path and Files used for FW update binaries storage
STNFC_FW_PATH_STORAGE="/vendor/firmware"
STNFC_FW_BIN_NAME="/st54j_fw.bin"
STNFC_FW_CONF_NAME="/st54j_conf.bin"
###############################################################################
# Default off-host route for Felica.
# This settings will be used when application does not set this parameter
# host 0x00
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
DEFAULT_NFCF_ROUTE=0x86
###############################################################################
# Configure the default off-host route.
# used for technology A and B routing
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
DEFAULT_OFFHOST_ROUTE=0x81
###############################################################################
# Configure the default AID route.
# host 0x00
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
DEFAULT_ROUTE=0x00
###############################################################################
# Configure the NFCEEIDs of offhost UICC.
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
OFFHOST_ROUTE_UICC={81}
###############################################################################
# Configure the NFCEEIDs of offhost eSEs.
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
OFFHOST_ROUTE_ESE={86}
###############################################################################
# Configure the list of NFCEE for the ISO-DEP routing.
# host 0x00
# eSE 0x82 (eSE), 0x86 (eUICC/SPI-SE)
# UICC 0x81 (UICC_1), 0x85 (UICC_2)
DEFAULT_ISODEP_ROUTE=0x81
###############################################################################
# Configure the HAL Clock control
# enable 0x01
# disable 0x00 default value
STNFC_CONTROL_CLK=0x01
################################################################################
# Core configuration settings
CORE_CONF_PROP={ 20, 02, 0a, 03,
a1, 01, 1e,
a2, 01, 19,
80, 01, 01
}

121
nfc/libnfc-nci-cheetah.conf Normal file
View File

@ -0,0 +1,121 @@
###############################################################################
# Application options
NFC_DEBUG_ENABLED=0
###############################################################################
# File used for NFA storage
NFA_STORAGE="/data/nfc"
###############################################################################
# Force UICC to only listen to the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | NFA_TECHNOLOGY_MASK_F
UICC_LISTEN_TECH_MASK=0x00
###############################################################################
# Set HOST default listen to the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F
# 0x07 = A + B + F
HOST_LISTEN_TECH_MASK=0x07
###############################################################################
# AID for Empty Select command
# If specified, this AID will be substituted when an Empty SELECT command is
# detected. The first byte is the length of the AID. Maximum length is 16.
AID_FOR_EMPTY_SELECT={08:A0:00:00:01:51:00:00:00}
###############################################################################
# When screen is turned off, specify the desired power state of the controller.
# 0: power-off-sleep state; DEFAULT
# 1: full-power state
# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used)
SCREEN_OFF_POWER_STATE=1
###############################################################################
# Force tag polling for the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
# NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
# NFA_TECHNOLOGY_MASK_B_PRIME | NFA_TECHNOLOGY_MASK_KOVIO |
# NFA_TECHNOLOGY_MASK_ACTIVE
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
# NFA_TECHNOLOGY_MASK_B 0x02 /* NFC Technology B */
# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
# NFA_TECHNOLOGY_MASK_ISO15693 0x08 /* Proprietary Technology */
# NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */
# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */
POLLING_TECH_MASK=0x2F
###############################################################################
# Force P2P to only listen for the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F |
# NFA_TECHNOLOGY_MASK_ACTIVE
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */
P2P_LISTEN_TECH_MASK=0x00
PRESERVE_STORAGE=0x01
###############################################################################
# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h.
# The value is set to 3 by default as it assumes we will discover 0xF2,
# 0xF3, and 0xF4. If a platform will exclude and SE, this value can be reduced
# so that the stack will not wait any longer than necessary.
# Maximum EE supported number
# NXP PN547C2 0x02
# NXP PN65T 0x03
# NXP PN548C2 0x02
# NXP PN66T 0x03
NFA_MAX_EE_SUPPORTED=0x01
###############################################################################
# AID_MATCHING constants
# AID_MATCHING_EXACT_ONLY 0x00
# AID_MATCHING_EXACT_OR_PREFIX 0x01
# AID_MATCHING_PREFIX_ONLY 0x02
# AID_MATCHING_EXACT_OR_SUBSET_OR_PREFIX 0x03
AID_MATCHING_MODE=0x03
###############################################################################
#Set the default Felica T3T System Code :
#This settings will be used when application does not set this parameter
DEFAULT_SYS_CODE={FE:FE}
###############################################################################
# Value of NIC parameter NFCC_COFNIG_CONTROL
# 0x00 NFCC is not allowed to manage RF configuration
# 0x01 NFCC is allowed to manage RF configuration
NFCC_CONFIG_CONTROL=0x01
###############################################################################
#Set if the AID routing should be blocked for the power modes not supported.
NFA_AID_BLOCK_ROUTE=1
###############################################################################
#Set the OffHost AID supported power state:
OFFHOST_AID_ROUTE_PWR_STATE=0x3B
###############################################################################
# Mifare Tag implementation
# 0: General implementation
# 1: Legacy implementation
LEGACY_MIFARE_READER=0
###############################################################################
# Nfc recovery implementation
# 0: Crash Nfc Service
# 1: Toggle Nfc state
RECOVERY_OPTION=1
###############################################################################
# NFCEE Power Supply and Communication Link Control Configuration
# Set when SetAlwaysOn enabled
# Default 0x00 when SetAlways on disabled
ALWAYS_ON_SET_EE_POWER_AND_LINK_CONF=0x03

121
nfc/libnfc-nci-lynx.conf Normal file
View File

@ -0,0 +1,121 @@
###############################################################################
# Application options
NFC_DEBUG_ENABLED=0
###############################################################################
# File used for NFA storage
NFA_STORAGE="/data/nfc"
###############################################################################
# Force UICC to only listen to the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | NFA_TECHNOLOGY_MASK_F
UICC_LISTEN_TECH_MASK=0x00
###############################################################################
# Set HOST default listen to the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F
# 0x07 = A + B + F
HOST_LISTEN_TECH_MASK=0x07
###############################################################################
# AID for Empty Select command
# If specified, this AID will be substituted when an Empty SELECT command is
# detected. The first byte is the length of the AID. Maximum length is 16.
AID_FOR_EMPTY_SELECT={08:A0:00:00:01:51:00:00:00}
###############################################################################
# When screen is turned off, specify the desired power state of the controller.
# 0: power-off-sleep state; DEFAULT
# 1: full-power state
# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used)
SCREEN_OFF_POWER_STATE=1
###############################################################################
# Force tag polling for the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
# NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
# NFA_TECHNOLOGY_MASK_B_PRIME | NFA_TECHNOLOGY_MASK_KOVIO |
# NFA_TECHNOLOGY_MASK_ACTIVE
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
# NFA_TECHNOLOGY_MASK_B 0x02 /* NFC Technology B */
# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
# NFA_TECHNOLOGY_MASK_ISO15693 0x08 /* Proprietary Technology */
# NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */
# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */
POLLING_TECH_MASK=0x2F
###############################################################################
# Force P2P to only listen for the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F |
# NFA_TECHNOLOGY_MASK_ACTIVE
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */
P2P_LISTEN_TECH_MASK=0x00
PRESERVE_STORAGE=0x01
###############################################################################
# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h.
# The value is set to 3 by default as it assumes we will discover 0xF2,
# 0xF3, and 0xF4. If a platform will exclude and SE, this value can be reduced
# so that the stack will not wait any longer than necessary.
# Maximum EE supported number
# NXP PN547C2 0x02
# NXP PN65T 0x03
# NXP PN548C2 0x02
# NXP PN66T 0x03
NFA_MAX_EE_SUPPORTED=0x01
###############################################################################
# AID_MATCHING constants
# AID_MATCHING_EXACT_ONLY 0x00
# AID_MATCHING_EXACT_OR_PREFIX 0x01
# AID_MATCHING_PREFIX_ONLY 0x02
# AID_MATCHING_EXACT_OR_SUBSET_OR_PREFIX 0x03
AID_MATCHING_MODE=0x03
###############################################################################
#Set the default Felica T3T System Code :
#This settings will be used when application does not set this parameter
DEFAULT_SYS_CODE={FE:FE}
###############################################################################
# Value of NIC parameter NFCC_COFNIG_CONTROL
# 0x00 NFCC is not allowed to manage RF configuration
# 0x01 NFCC is allowed to manage RF configuration
NFCC_CONFIG_CONTROL=0x01
###############################################################################
#Set if the AID routing should be blocked for the power modes not supported.
NFA_AID_BLOCK_ROUTE=1
###############################################################################
#Set the OffHost AID supported power state:
OFFHOST_AID_ROUTE_PWR_STATE=0x3B
###############################################################################
# Mifare Tag implementation
# 0: General implementation
# 1: Legacy implementation
LEGACY_MIFARE_READER=0
###############################################################################
# Nfc recovery implementation
# 0: Crash Nfc Service
# 1: Toggle Nfc state
RECOVERY_OPTION=1
###############################################################################
# NFCEE Power Supply and Communication Link Control Configuration
# Set when SetAlwaysOn enabled
# Default 0x00 when SetAlways on disabled
ALWAYS_ON_SET_EE_POWER_AND_LINK_CONF=0x00

121
nfc/libnfc-nci.conf Normal file
View File

@ -0,0 +1,121 @@
###############################################################################
# Application options
NFC_DEBUG_ENABLED=0
###############################################################################
# File used for NFA storage
NFA_STORAGE="/data/nfc"
###############################################################################
# Force UICC to only listen to the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | NFA_TECHNOLOGY_MASK_F
UICC_LISTEN_TECH_MASK=0x07
###############################################################################
# Set HOST default listen to the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F
# 0x07 = A + B + F
HOST_LISTEN_TECH_MASK=0x07
###############################################################################
# AID for Empty Select command
# If specified, this AID will be substituted when an Empty SELECT command is
# detected. The first byte is the length of the AID. Maximum length is 16.
AID_FOR_EMPTY_SELECT={08:A0:00:00:01:51:00:00:00}
###############################################################################
# When screen is turned off, specify the desired power state of the controller.
# 0: power-off-sleep state; DEFAULT
# 1: full-power state
# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used)
SCREEN_OFF_POWER_STATE=1
###############################################################################
# Force tag polling for the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
# NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
# NFA_TECHNOLOGY_MASK_B_PRIME | NFA_TECHNOLOGY_MASK_KOVIO |
# NFA_TECHNOLOGY_MASK_ACTIVE
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
# NFA_TECHNOLOGY_MASK_B 0x02 /* NFC Technology B */
# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
# NFA_TECHNOLOGY_MASK_ISO15693 0x08 /* Proprietary Technology */
# NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */
# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */
POLLING_TECH_MASK=0x2F
###############################################################################
# Force P2P to only listen for the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F |
# NFA_TECHNOLOGY_MASK_ACTIVE
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */
P2P_LISTEN_TECH_MASK=0x00
PRESERVE_STORAGE=0x01
###############################################################################
# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h.
# The value is set to 3 by default as it assumes we will discover 0xF2,
# 0xF3, and 0xF4. If a platform will exclude and SE, this value can be reduced
# so that the stack will not wait any longer than necessary.
# Maximum EE supported number
# NXP PN547C2 0x02
# NXP PN65T 0x03
# NXP PN548C2 0x02
# NXP PN66T 0x03
NFA_MAX_EE_SUPPORTED=0x02
###############################################################################
# AID_MATCHING constants
# AID_MATCHING_EXACT_ONLY 0x00
# AID_MATCHING_EXACT_OR_PREFIX 0x01
# AID_MATCHING_PREFIX_ONLY 0x02
# AID_MATCHING_EXACT_OR_SUBSET_OR_PREFIX 0x03
AID_MATCHING_MODE=0x03
###############################################################################
#Set the default Felica T3T System Code :
#This settings will be used when application does not set this parameter
DEFAULT_SYS_CODE={FE:FE}
###############################################################################
# Value of NIC parameter NFCC_COFNIG_CONTROL
# 0x00 NFCC is not allowed to manage RF configuration
# 0x01 NFCC is allowed to manage RF configuration
NFCC_CONFIG_CONTROL=0x01
###############################################################################
#Set if the AID routing should be blocked for the power modes not supported.
NFA_AID_BLOCK_ROUTE=1
###############################################################################
#Set the OffHost AID supported power state:
OFFHOST_AID_ROUTE_PWR_STATE=0x3B
###############################################################################
# Mifare Tag implementation
# 0: General implementation
# 1: Legacy implementation
LEGACY_MIFARE_READER=0
###############################################################################
# Nfc recovery implementation
# 0: Crash Nfc Service
# 1: Toggle Nfc state
RECOVERY_OPTION=1
###############################################################################
# NFCEE Power Supply and Communication Link Control Configuration
# Set when SetAlwaysOn enabled
# Default 0x00 when SetAlways on disabled
ALWAYS_ON_SET_EE_POWER_AND_LINK_CONF=0x03

2
nfc/libse-gto-hal.conf Normal file
View File

@ -0,0 +1,2 @@
#Gemalto SPI devnode
GTO_DEV=/dev/st54spi;

2
nfc/libse-gto-hal2.conf Normal file
View File

@ -0,0 +1,2 @@
#Gemalto SPI devnode
GTO_DEV=/dev/st33spi;

11
nfc/manifest_nfc.xml Normal file
View File

@ -0,0 +1,11 @@
<manifest version="1.0" type="device">
<hal format="hidl">
<name>android.hardware.nfc</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>INfc</name>
<instance>default</instance>
</interface>
</hal>
</manifest>

8
nfc/manifest_se.xml Normal file
View File

@ -0,0 +1,8 @@
<manifest version="1.0" type="device">
<hal format="hidl">
<name>android.hardware.secure_element</name>
<transport>hwbinder</transport>
<fqname>@1.2::ISecureElement/eSE1</fqname>
<fqname>@1.2::ISecureElement/eSE2</fqname>
</hal>
</manifest>

42
powerstats/Android.bp Normal file
View File

@ -0,0 +1,42 @@
// Copyright (C) 2021 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.
soong_namespace {
imports: [
"hardware/google/pixel",
"device/google/gs201",
]
}
package {
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "device_google_lynx_license"
// to get the below license kinds:
// SPDX-license-identifier-Apache-2.0
default_applicable_licenses: ["device_google_lynx_license"],
}
cc_binary {
name: "android.hardware.power.stats-service.pixel",
defaults: ["powerstats_pixel_binary_defaults"],
srcs: [
"*.cpp",
],
shared_libs: [
"android.hardware.power.stats-impl.gs201",
],
}

77
powerstats/service.cpp Normal file
View File

@ -0,0 +1,77 @@
/*
* Copyright (C) 2021 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.
*/
#define LOG_TAG "android.hardware.power.stats-service.pixel"
#include <dataproviders/DisplayStateResidencyDataProvider.h>
#include <dataproviders/PowerStatsEnergyConsumer.h>
#include <Gs201CommonDataProviders.h>
#include <PowerStatsAidl.h>
#include <android-base/logging.h>
#include <android-base/properties.h>
#include <android/binder_manager.h>
#include <android/binder_process.h>
#include <log/log.h>
using aidl::android::hardware::power::stats::DisplayStateResidencyDataProvider;
using aidl::android::hardware::power::stats::EnergyConsumerType;
using aidl::android::hardware::power::stats::PowerStatsEnergyConsumer;
void addDisplay(std::shared_ptr<PowerStats> p) {
// Add display residency stats
std::vector<std::string> states = {
"Off",
"LP: 1080x2340@30",
"On: 1080x2340@60",
"On: 1080x2340@90",
"HBM: 1080x2340@60",
"HBM: 1080x2340@90"};
p->addStateResidencyDataProvider(std::make_unique<DisplayStateResidencyDataProvider>("Display",
"/sys/class/backlight/panel0-backlight/state",
states));
// Add display energy consumer
/*
* TODO(b/167216667): Add correct display power model here. Must read from display rail
* and include proper coefficients for display states.
*/
p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterAndEntityConsumer(p,
EnergyConsumerType::DISPLAY, "display", {"PPVAR_VSYS_PWR_DISP"}, "Display",
{{"LP: 1080x2340@30", 1},
{"On: 1080x2340@60", 2},
{"On: 1080x2340@90", 3}}));
}
int main() {
LOG(INFO) << "Pixel PowerStats HAL AIDL Service is starting.";
// single thread
ABinderProcess_setThreadPoolMaxThreadCount(0);
std::shared_ptr<PowerStats> p = ndk::SharedRefBase::make<PowerStats>();
addGs201CommonDataProviders(p);
addDisplay(p);
const std::string instance = std::string() + PowerStats::descriptor + "/default";
binder_status_t status = AServiceManager_addService(p->asBinder().get(), instance.c_str());
LOG_ALWAYS_FATAL_IF(status != STATUS_OK);
ABinderProcess_joinThreadPool();
return EXIT_FAILURE; // should not reach
}

30
sensors/Android.mk Normal file
View File

@ -0,0 +1,30 @@
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
LOCAL_PATH := $(call my-dir)
# HAL module implemenation stored in
# hw/<SENSORS_HARDWARE_MODULE_ID>.<ro.hardware>.so
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SHARED_LIBRARIES := liblog libcutils libhardware
LOCAL_SRC_FILES := sensors_dummy.c
LOCAL_MODULE := sensors.lynx
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
LOCAL_LICENSE_CONDITIONS := notice
LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
LOCAL_PROPRIETARY_MODULE := true
include $(BUILD_SHARED_LIBRARY)

409
sensors/sensors_dummy.c Normal file
View File

@ -0,0 +1,409 @@
/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* this implements a sensors hardware library for the Android emulator.
* the following code should be built as a shared library that will be
* placed into /system/lib/hw/sensors.goldfish.so
*
* it will be loaded by the code in hardware/libhardware/hardware.c
* which is itself called from com_android_server_SensorService.cpp
*/
#define SENSORS_SERVICE_NAME "sensors"
#define LOG_TAG "Dummy_Sensors"
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <log/log.h>
#include <cutils/sockets.h>
#include <hardware/sensors.h>
#include <pthread.h>
#if 0
#define D(...) ALOGD(__VA_ARGS__)
#else
#define D(...) ((void)0)
#endif
#define E(...) ALOGE(__VA_ARGS__)
/** SENSOR IDS AND NAMES
**/
#define MAX_NUM_SENSORS 8
#define SUPPORTED_SENSORS ((1<<MAX_NUM_SENSORS)-1)
#define ID_BASE SENSORS_HANDLE_BASE
#define ID_ACCELERATION (ID_BASE+0)
#define ID_MAGNETIC_FIELD (ID_BASE+1)
#define ID_ORIENTATION (ID_BASE+2)
#define ID_TEMPERATURE (ID_BASE+3)
#define ID_PROXIMITY (ID_BASE+4)
#define ID_LIGHT (ID_BASE+5)
#define ID_PRESSURE (ID_BASE+6)
#define ID_HUMIDITY (ID_BASE+7)
#define SENSORS_ACCELERATION (1 << ID_ACCELERATION)
#define SENSORS_MAGNETIC_FIELD (1 << ID_MAGNETIC_FIELD)
#define SENSORS_ORIENTATION (1 << ID_ORIENTATION)
#define SENSORS_TEMPERATURE (1 << ID_TEMPERATURE)
#define SENSORS_PROXIMITY (1 << ID_PROXIMITY)
#define SENSORS_LIGHT (1 << ID_LIGHT)
#define SENSORS_PRESSURE (1 << ID_PRESSURE)
#define SENSORS_HUMIDITY (1 << ID_HUMIDITY)
#define ID_CHECK(x) ((unsigned)((x) - ID_BASE) < MAX_NUM_SENSORS)
#define SENSORS_LIST \
SENSOR_(ACCELERATION,"acceleration") \
SENSOR_(MAGNETIC_FIELD,"magnetic-field") \
SENSOR_(ORIENTATION,"orientation") \
SENSOR_(TEMPERATURE,"temperature") \
SENSOR_(PROXIMITY,"proximity") \
SENSOR_(LIGHT, "light") \
SENSOR_(PRESSURE, "pressure") \
SENSOR_(HUMIDITY, "humidity")
static const struct {
const char* name;
int id; } _sensorIds[MAX_NUM_SENSORS] =
{
#define SENSOR_(x,y) { y, ID_##x },
SENSORS_LIST
#undef SENSOR_
};
static const char*
_sensorIdToName( int id )
{
int nn;
for (nn = 0; nn < MAX_NUM_SENSORS; nn++)
if (id == _sensorIds[nn].id)
return _sensorIds[nn].name;
return "<UNKNOWN>";
}
static int
_sensorIdFromName( const char* name )
{
int nn;
if (name == NULL)
return -1;
for (nn = 0; nn < MAX_NUM_SENSORS; nn++)
if (!strcmp(name, _sensorIds[nn].name))
return _sensorIds[nn].id;
return -1;
}
/* return the current time in nanoseconds */
static int64_t now_ns(void) {
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
return (int64_t)ts.tv_sec * 1000000000 + ts.tv_nsec;
}
/** SENSORS POLL DEVICE
**
** This one is used to read sensor data from the hardware.
** We implement this by simply reading the data from the
** emulator through the QEMUD channel.
**/
typedef struct SensorDevice {
struct sensors_poll_device_1 device;
sensors_event_t sensors[MAX_NUM_SENSORS];
uint32_t pendingSensors;
int64_t timeStart;
int64_t timeOffset;
uint32_t active_sensors;
int fd;
pthread_mutex_t lock;
} SensorDevice;
/* Grab the file descriptor to the emulator's sensors service pipe.
* This function returns a file descriptor on success, or -errno on
* failure, and assumes the SensorDevice instance's lock is held.
*
* This is needed because set_delay(), poll() and activate() can be called
* from different threads, and poll() is blocking.
*
* 1) On a first thread, de-activate() all sensors first, then call poll(),
* which results in the thread blocking.
*
* 2) On a second thread, slightly later, call set_delay() then activate()
* to enable the acceleration sensor.
*
* The system expects this to unblock the first thread which will receive
* new sensor events after the activate() call in 2).
*
* This cannot work if both threads don't use the same connection.
*
* TODO(digit): This protocol is brittle, implement another control channel
* for set_delay()/activate()/batch() when supporting HAL 1.3
*/
static int sensor_device_get_fd_locked(SensorDevice* dev) {
/* Create connection to service on first call */
if (dev->fd < 0) {
int ret = -errno;
E("%s: Could not open connection to service: %s", __FUNCTION__,
strerror(-ret));
return ret;
}
return dev->fd;
}
/* Pick up one pending sensor event. On success, this returns the sensor
* id, and sets |*event| accordingly. On failure, i.e. if there are no
* pending events, return -EINVAL.
*
* Note: The device's lock must be acquired.
*/
static int sensor_device_pick_pending_event_locked(SensorDevice* d,
sensors_event_t* event)
{
uint32_t mask = SUPPORTED_SENSORS & d->pendingSensors;
if (mask) {
uint32_t i = 31 - __builtin_clz(mask);
pthread_mutex_lock(&d->lock);
d->pendingSensors &= ~(1U << i);
*event = d->sensors[i];
event->sensor = i;
event->version = sizeof(*event);
pthread_mutex_unlock(&d->lock);
D("%s: %d [%f, %f, %f]", __FUNCTION__,
i,
event->data[0],
event->data[1],
event->data[2]);
return i;
}
E("No sensor to return!!! pendingSensors=0x%08x", d->pendingSensors);
// we may end-up in a busy loop, slow things down, just in case.
usleep(1000);
return -EINVAL;
}
static int sensor_device_close(struct hw_device_t* dev0)
{
SensorDevice* dev = (void*)dev0;
// Assume that there are no other threads blocked on poll()
if (dev->fd >= 0) {
close(dev->fd);
dev->fd = -1;
}
pthread_mutex_destroy(&dev->lock);
free(dev);
return 0;
}
/* Return an array of sensor data. This function blocks until there is sensor
* related events to report. On success, it will write the events into the
* |data| array, which contains |count| items. The function returns the number
* of events written into the array, which shall never be greater than |count|.
* On error, return -errno code.
*
* Note that according to the sensor HAL [1], it shall never return 0!
*
* [1] http://source.android.com/devices/sensors/hal-interface.html
*/
static int sensor_device_poll(struct sensors_poll_device_t *dev0,
sensors_event_t* data, int count)
{
return -EIO;
}
static int sensor_device_activate(struct sensors_poll_device_t *dev0,
int handle,
int enabled)
{
SensorDevice* dev = (void*)dev0;
D("%s: handle=%s (%d) enabled=%d", __FUNCTION__,
_sensorIdToName(handle), handle, enabled);
/* Sanity check */
if (!ID_CHECK(handle)) {
E("%s: bad handle ID", __FUNCTION__);
return -EINVAL;
}
/* Exit early if sensor is already enabled/disabled. */
uint32_t mask = (1U << handle);
uint32_t sensors = enabled ? mask : 0;
pthread_mutex_lock(&dev->lock);
uint32_t active = dev->active_sensors;
uint32_t new_sensors = (active & ~mask) | (sensors & mask);
uint32_t changed = active ^ new_sensors;
if (changed)
dev->active_sensors = new_sensors;
pthread_mutex_unlock(&dev->lock);
return 0;
}
static int sensor_device_default_flush(
struct sensors_poll_device_1* dev0,
int handle) {
SensorDevice* dev = (void*)dev0;
D("%s: handle=%s (%d)", __FUNCTION__,
_sensorIdToName(handle), handle);
/* Sanity check */
if (!ID_CHECK(handle)) {
E("%s: bad handle ID", __FUNCTION__);
return -EINVAL;
}
pthread_mutex_lock(&dev->lock);
dev->sensors[handle].version = META_DATA_VERSION;
dev->sensors[handle].type = SENSOR_TYPE_META_DATA;
dev->sensors[handle].sensor = 0;
dev->sensors[handle].timestamp = 0;
dev->sensors[handle].meta_data.what = META_DATA_FLUSH_COMPLETE;
dev->pendingSensors |= (1U << handle);
pthread_mutex_unlock(&dev->lock);
return 0;
}
static int sensor_device_set_delay(struct sensors_poll_device_t *dev0,
int handle __unused,
int64_t ns)
{
return 0;
}
static int sensor_device_default_batch(
struct sensors_poll_device_1* dev,
int sensor_handle,
int flags,
int64_t sampling_period_ns,
int64_t max_report_latency_ns) {
return sensor_device_set_delay(dev, sensor_handle, sampling_period_ns);
}
/** MODULE REGISTRATION SUPPORT
**
** This is required so that hardware/libhardware/hardware.c
** will dlopen() this library appropriately.
**/
/*
* the following is the list of all supported sensors.
* this table is used to build sSensorList declared below
* according to which hardware sensors are reported as
* available from the emulator (see get_sensors_list below)
*
* note: numerical values for maxRange/resolution/power for
* all sensors but light, pressure and humidity were
* taken from the reference AK8976A implementation
*/
static const struct sensor_t sSensorListInit[] = {
{ .name = "Accelerometer",
.vendor = "The Android Open Source Project",
.version = 1,
.handle = ID_ACCELERATION,
.type = SENSOR_TYPE_ACCELEROMETER,
.maxRange = 2.8f,
.resolution = 1.0f/4032.0f,
.power = 3.0f,
.minDelay = 10000,
.maxDelay = 60 * 1000 * 1000,
.fifoReservedEventCount = 0,
.fifoMaxEventCount = 0,
.stringType = 0,
.requiredPermission = 0,
.flags = SENSOR_FLAG_CONTINUOUS_MODE,
.reserved = {}
},
};
static struct sensor_t sSensorList[1];
static int sensors__get_sensors_list(struct sensors_module_t* module __unused,
struct sensor_t const** list)
{
*list = sSensorList;
return 0;
}
static int
open_sensors(const struct hw_module_t* module,
const char* name,
struct hw_device_t* *device)
{
int status = -EINVAL;
D("%s: name=%s", __FUNCTION__, name);
if (!strcmp(name, SENSORS_HARDWARE_POLL)) {
SensorDevice *dev = malloc(sizeof(*dev));
memset(dev, 0, sizeof(*dev));
dev->device.common.tag = HARDWARE_DEVICE_TAG;
dev->device.common.version = SENSORS_DEVICE_API_VERSION_1_3;
dev->device.common.module = (struct hw_module_t*) module;
dev->device.common.close = sensor_device_close;
dev->device.poll = sensor_device_poll;
dev->device.activate = sensor_device_activate;
dev->device.setDelay = sensor_device_set_delay;
// Version 1.3-specific functions
dev->device.batch = sensor_device_default_batch;
dev->device.flush = sensor_device_default_flush;
dev->fd = -1;
pthread_mutex_init(&dev->lock, NULL);
*device = &dev->device.common;
status = 0;
}
return status;
}
static struct hw_module_methods_t sensors_module_methods = {
.open = open_sensors
};
struct sensors_module_t HAL_MODULE_INFO_SYM = {
.common = {
.tag = HARDWARE_MODULE_TAG,
.version_major = 1,
.version_minor = 0,
.id = SENSORS_HARDWARE_MODULE_ID,
.name = "Dummy SENSORS Module",
.author = "The Android Open Source Project",
.methods = &sensors_module_methods,
},
.get_sensors_list = sensors__get_sensors_list
};

View File

@ -0,0 +1,409 @@
{
"Sensors":[
{
"Name":"battery",
"Type":"BATTERY",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
"60.0"
],
"VrThreshold":"NAN",
"Multiplier":0.001
},
{
"Name":"LITTLE",
"Type":"CPU",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
115.0
],
"VrThreshold":"NAN",
"Multiplier":0.001
},
{
"Name":"MID",
"Type":"CPU",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
115.0
],
"VrThreshold":"NAN",
"Multiplier":0.001
},
{
"Name":"G3D",
"Type":"GPU",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
115.0
],
"VrThreshold":"NAN",
"Multiplier":0.001
},
{
"Name":"battery_cycle",
"Type":"BCL_VOLTAGE",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":false
},
{
"Name":"critical-battery-cell",
"Type":"BCL_VOLTAGE",
"VirtualSensor":true,
"Formula":"COUNT_THRESHOLD",
"TriggerSensor": "vdroop1",
"Combination":[
"battery",
"battery_cycle",
"vdroop1"
],
"Coefficient":[
"-10000",
"400",
"1150"
],
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
3.00,
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"FLASH_LED_REDUCE",
"Type":"UNKNOWN",
"VirtualSensor":true,
"Formula":"COUNT_THRESHOLD",
"TriggerSensor": "vdroop1",
"Combination":[
"battery",
"battery_cycle",
"vdroop1"
],
"Coefficient":[
"-10000",
"400",
"1150"
],
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
3.00,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true,
"SendPowerHint":true
},
{
"Name":"soc",
"Type":"BCL_PERCENTAGE",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
90,
93,
96,
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true,
"PollingDelay":300000,
"PassiveDelay":5000,
"BindedCdevInfo": [
{
"CdevRequest": "thermal-cpufreq-2",
"LimitInfo": [0, 0, 0, 7, 7, 10, 10]
}
]
},
{
"Name":"vdroop1",
"Type":"BCL_VOLTAGE",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
1150,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"vdroop2",
"Type":"BCL_VOLTAGE",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
1350,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"smpl_gm",
"Type":"BCL_VOLTAGE",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
1400,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"ocp_cpu1",
"Type":"BCL_CURRENT",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
7000,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"ocp_cpu2",
"Type":"BCL_CURRENT",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
12000,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"ocp_tpu",
"Type":"BCL_CURRENT",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
10500,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"ocp_gpu",
"Type":"BCL_CURRENT",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
12000,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"soft_ocp_cpu2",
"Type":"BCL_CURRENT",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
9000,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"soft_ocp_cpu1",
"Type":"BCL_CURRENT",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
7000,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"soft_ocp_tpu",
"Type":"BCL_CURRENT",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
8500,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"soft_ocp_gpu",
"Type":"BCL_CURRENT",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
9000,
"NAN",
"NAN"
],
"VrThreshold":"NAN",
"Multiplier":1,
"Monitor":true
},
{
"Name":"TPU",
"Type":"NPU",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
"NAN",
115.0
],
"VrThreshold":"NAN",
"Multiplier":0.001
}
],
"CoolingDevices":[
{
"Name":"thermal-cpufreq-0",
"Type":"CPU",
"WritePath":"/dev/thermal/cdev-by-name/thermal-cpufreq-0/user_vote",
"State2Power":["1100", "1050", "1000", "950", "900", "850", "800", "750", "700", "650", "600"]
},
{
"Name":"thermal-cpufreq-1",
"Type":"CPU",
"WritePath":"/dev/thermal/cdev-by-name/thermal-cpufreq-1/user_vote",
"State2Power":["1400", "1350", "1300", "1250", "1200", "1150", "1100", "1050", "1000", "950", "900", "850", "800", "750"]
},
{
"Name":"thermal-cpufreq-2",
"Type":"CPU",
"WritePath":"/dev/thermal/cdev-by-name/thermal-cpufreq-2/user_vote",
"State2Power":["1450", "1400", "1350", "1300", "1250", "1200", "1150", "1100", "1050", "1000", "950", "900", "850", "800", "750"]
}
],
"PowerRails":[
{
"Name":"PPVAR_VSYS_PWR_DISP"
},
{
"Name":"VSYS_PWR_MODEM"
},
{
"Name":"S2M_VDD_CPUCL2",
"PowerSampleDelay":14000,
"PowerSampleCount":5
},
{
"Name":"S3M_VDD_CPUCL1",
"PowerSampleDelay":14000,
"PowerSampleCount":5
},
{
"Name":"S4M_VDD_CPUCL0",
"PowerSampleDelay":14000,
"PowerSampleCount":5
},
{
"Name":"S5M_VDD_INT"
},
{
"Name":"S1M_VDD_MIF"
},
{
"Name":"S2S_VDD_G3D",
"PowerSampleDelay":14000,
"PowerSampleCount":5
}
]
}