Initial sm7125 tree

Change-Id: Icb1b25b047b86d3474b98b13942f7afc5de45cf8
fourteen-wip
Simon1511 3 years ago
commit 0f7f8f233d
  1. 2
      Android.bp
  2. 196
      Android.mk
  3. 188
      BoardConfigCommon.mk
  4. 265
      common.mk
  5. 74
      config.fs
  6. 8
      configs/android.hardware.graphics.composer@2.4-service.rc
  7. 72
      configs/audio/audio_configs.xml
  8. 116
      configs/audio/audio_effects.xml
  9. 82
      configs/audio/audio_effects_sec.xml
  10. 632
      configs/audio/audio_platform_info.xml
  11. 53
      configs/audio/audio_platform_info_diff.xml
  12. 625
      configs/audio/audio_platform_info_intcodec.xml
  13. 401
      configs/audio/audio_platform_info_qrd.xml
  14. 132
      configs/audio/audio_policy_configuration.xml
  15. 291
      configs/audio/audio_policy_configuration_base.xml
  16. 205
      configs/audio/audio_policy_volumes.xml
  17. 4080
      configs/audio/mixer_paths.xml
  18. 3739
      configs/audio/mixer_paths_qrd.xml
  19. 3813
      configs/audio/mixer_paths_wcd937x.xml
  20. 3116
      configs/audio/mixer_paths_wcd937xqrd.xml
  21. 190
      configs/audio/mixer_usb_default.xml
  22. 190
      configs/audio/mixer_usb_gray.xml
  23. 338
      configs/audio/sound_trigger_mixer_paths.xml
  24. 334
      configs/audio/sound_trigger_mixer_paths_qrd.xml
  25. 310
      configs/audio/sound_trigger_mixer_paths_wcd937x.xml
  26. 220
      configs/audio/sound_trigger_platform_info.xml
  27. 94
      configs/compatibility_matrix.xml
  28. 1155
      configs/framework_compatibility_matrix.xml
  29. 566
      configs/manifest.xml
  30. 388
      configs/media/media_codecs.xml
  31. 241
      configs/media/media_codecs_performance.xml
  32. 399
      configs/media/media_codecs_vendor.xml
  33. 867
      configs/media/media_profiles.xml
  34. 1028
      configs/media/media_profiles_vendor.xml
  35. 63
      extract-files.sh
  36. 25
      init/Android.bp
  37. 73
      init/init_sec.cpp
  38. 25
      init/init_sec.h
  39. 6
      lineage.dependencies
  40. 2119
      proprietary-files.txt
  41. 184
      rootdir/Android.mk
  42. 155
      rootdir/bin/init.class_main.sh
  43. 35
      rootdir/bin/init.crda.sh
  44. 216
      rootdir/bin/init.qcom.class_core.sh
  45. 518
      rootdir/bin/init.qcom.early_boot.sh
  46. 5856
      rootdir/bin/init.qcom.post_boot.sh
  47. 78
      rootdir/bin/init.qcom.sdio.sh
  48. 465
      rootdir/bin/init.qcom.sh
  49. 236
      rootdir/bin/init.qcom.usb.sh
  50. 48
      rootdir/bin/init.qti.chg_policy.sh
  51. 55
      rootdir/bin/init.qti.dcvs.sh
  52. 63
      rootdir/etc/fstab.default
  53. 99
      rootdir/etc/init.a52q.rc
  54. 258
      rootdir/etc/init.qcom.factory.rc
  55. 1023
      rootdir/etc/init.qcom.rc
  56. 2359
      rootdir/etc/init.qcom.usb.rc
  57. 128
      rootdir/etc/init.samsung.bsp.rc
  58. 488
      rootdir/etc/init.samsung.display.rc
  59. 120
      rootdir/etc/init.samsung.rc
  60. 450
      rootdir/etc/init.target.rc
  61. 496
      rootdir/etc/ueventd.qcom.rc
  62. 68
      rootdir/etc/wifi_qcom.rc
  63. 70
      rootdir/etc/wifi_sec.rc
  64. 11
      sepolicy/vendor/file.te
  65. 8
      sepolicy/vendor/file_contexts
  66. 45
      setup-makefiles.sh
  67. 2
      system.prop
  68. 117
      vendor.prop

@ -0,0 +1,2 @@
soong_namespace {
}

@ -0,0 +1,196 @@
#
# Copyright (C) 2017 The LineageOS 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)
ifneq ($(filter a52q,$(TARGET_DEVICE)),)
include $(call all-makefiles-under,$(LOCAL_PATH))
include $(CLEAR_VARS)
FIRMWARE_MOUNT_POINT := $(TARGET_OUT_VENDOR)/firmware_mnt
$(FIRMWARE_MOUNT_POINT): $(LOCAL_INSTALLED_MODULE)
@echo "Creating $(FIRMWARE_MOUNT_POINT)"
@mkdir -p $(TARGET_OUT_VENDOR)/firmware_mnt
FIRMWARE_MODEM_MOUNT_POINT := $(TARGET_OUT_VENDOR)/firmware-modem
$(FIRMWARE_MODEM_MOUNT_POINT): $(LOCAL_INSTALLED_MODULE)
@echo "Creating $(FIRMWARE_MODEM_MOUNT_POINT)"
@mkdir -p $(TARGET_OUT_VENDOR)/firmware-modem
BT_FIRMWARE_MOUNT_POINT := $(TARGET_OUT_VENDOR)/bt_firmware
$(BT_FIRMWARE_MOUNT_POINT): $(LOCAL_INSTALLED_MODULE)
@echo "Creating $(BT_FIRMWARE_MOUNT_POINT)"
@mkdir -p $(TARGET_OUT_VENDOR)/bt_firmware
DSP_MOUNT_POINT := $(TARGET_OUT_VENDOR)/dsp
$(DSP_MOUNT_POINT): $(LOCAL_INSTALLED_MODULE)
@echo "Creating $(DSP_MOUNT_POINT)"
@mkdir -p $(TARGET_OUT_VENDOR)/dsp
ALL_DEFAULT_INSTALLED_MODULES += $(FIRMWARE_MOUNT_POINT) $(BT_FIRMWARE_MOUNT_POINT) $(DSP_MOUNT_POINT) $(FIRMWARE_MODEM_MOUNT_POINT)
RFS_MSM_ADSP_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/msm/adsp/
$(RFS_MSM_ADSP_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MSM ADSP folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/lpass $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/msm/adsp $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MDM_ADSP_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/mdm/adsp/
$(RFS_MDM_ADSP_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MDM ADSP folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/lpass $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/mdm/adsp $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MSM_CDSP_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/msm/cdsp/
$(RFS_MSM_CDSP_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MSM CDSP folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/cdsp $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/msm/cdsp $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MDM_CDSP_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/mdm/cdsp/
$(RFS_MDM_CDSP_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MDM CDSP folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/cdsp $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/mdm/cdsp $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MSM_MPSS_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/msm/mpss/
$(RFS_MSM_MPSS_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MSM MPSS folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/modem $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/msm/mpss $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MDM_MPSS_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/mdm/mpss/
$(RFS_MDM_MPSS_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MDM MPSS folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/modem $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/mdm/mpss $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MSM_SLPI_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/msm/slpi/
$(RFS_MSM_SLPI_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MSM SLPI folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/slpi $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/msm/slpi $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MDM_SLPI_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/mdm/slpi/
$(RFS_MDM_SLPI_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MDM SLPI folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/slpi $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/mdm/slpi $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MDM_TN_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/mdm/tn/
$(RFS_MDM_TN_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MDM TN folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/tn $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/mdm/tn $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
RFS_APQ_GNSS_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/apq/gnss/
$(RFS_APQ_GNSS_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS APQ GNSS folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/modem $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/apq/gnss $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
EGL_LIBS := libq3dtools_adreno.so libGLESv2_adreno.so libEGL_adreno.so
EGL_32_SYMLINKS := $(addprefix $(TARGET_OUT_VENDOR)/lib/,$(notdir $(EGL_LIBS)))
$(EGL_32_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "EGL 32 lib link: $@"
@mkdir -p $(dir $@)
@rm -rf $@
$(hide) ln -sf egl/$(notdir $@) $@
EGL_64_SYMLINKS := $(addprefix $(TARGET_OUT_VENDOR)/lib64/,$(notdir $(EGL_LIBS)))
$(EGL_64_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "EGL lib link: $@"
@mkdir -p $(dir $@)
@rm -rf $@
$(hide) ln -sf egl/$(notdir $@) $@
ALL_DEFAULT_INSTALLED_MODULES += \
$(RFS_MSM_ADSP_SYMLINKS) \
$(RFS_MSM_CDSP_SYMLINKS) \
$(RFS_MSM_MPSS_SYMLINKS) \
$(RFS_MSM_SLPI_SYMLINKS) \
$(RFS_MDM_ADSP_SYMLINKS) \
$(RFS_MDM_CDSP_SYMLINKS) \
$(RFS_MDM_MPSS_SYMLINKS) \
$(RFS_MDM_SLPI_SYMLINKS) \
$(RFS_MDM_TN_SYMLINKS) \
$(RFS_APQ_GNSS_SYMLINKS) \
$(EGL_32_SYMLINKS) \
$(EGL_64_SYMLINKS)
endif

@ -0,0 +1,188 @@
#
# Copyright (C) 2021 The LineageOS 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.
#
COMMON_PATH := device/samsung/sm7125-common
BUILD_BROKEN_DUP_RULES := true
# APEX image
DEXPREOPT_GENERATE_APEX_IMAGE := true
# Android Verified Boot
BOARD_AVB_ENABLE := true
BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flags 3
BOARD_AVB_ROLLBACK_INDEX := 0
BOARD_AVB_RECOVERY_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
BOARD_AVB_RECOVERY_ALGORITHM := SHA256_RSA2048
BOARD_AVB_RECOVERY_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
BOARD_AVB_RECOVERY_ROLLBACK_INDEX_LOCATION := 1
# Platform
PRODUCT_PLATFORM := atoll
TARGET_BOARD_PLATFORM := atoll
TARGET_BOOTLOADER_BOARD_NAME := atoll
TARGET_NO_BOOTLOADER := true
# Architecture
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-2a
TARGET_CPU_ABI := arm64-v8a
TARGET_CPU_ABI2 :=
TARGET_CPU_VARIANT := generic
TARGET_CPU_VARIANT_RUNTIME := cortex-a76
# 2nd Architecture
TARGET_2ND_ARCH := arm
TARGET_2ND_ARCH_VARIANT := armv8-2a
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_ABI2 := armeabi
TARGET_2ND_CPU_VARIANT := generic
TARGET_2ND_CPU_VARIANT_RUNTIME := := cortex-a55
# Kernel config
TARGET_KERNEL_CLANG_COMPILE := true
# Build with Clang 11 for now
TARGET_KERNEL_CLANG_VERSION := r383902b1
TARGET_KERNEL_SOURCE := kernel/samsung/sm7125
TARGET_KERNEL_CONFIG := vendor/lineage-a52q_defconfig
TARGET_KERNEL_ARCH := arm64
TARGET_KERNEL_HEADER_ARCH := arm64
TARGET_LINUX_KERNEL_VERSION := 4.14
# Kernel flags
BOARD_KERNEL_CMDLINE += console=null androidboot.hardware=qcom androidboot.memcg=1 lpm_levels.sleep_disabled=1 video=vfb:640x400,bpp=32,memsize=3072000 msm_rtb.filter=0x237 service_locator.enable=1 swiotlb=1 androidboot.usbcontroller=a600000.dwc3 printk.devkmsg=on firmware_class.path=/vendor/firmware_mnt/image
BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive
BOARD_BOOTIMG_HEADER_VERSION := 2
BOARD_NAME := SRPTH31C002
BOARD_KERNEL_BASE := 0x00000000
BOARD_KERNEL_PAGESIZE := 4096
BOARD_RAMDISK_OFFSET := 0x02000000
BOARD_KERNEL_OFFSET := 0x00008000
BOARD_KERNEL_TAGS_OFFSET := 0x01e00000
BOARD_KERNEL_IMAGE_NAME := Image.gz-dtb
BOARD_KERNEL_SEPARATED_DTBO := true
BOARD_INCLUDE_DTB_IN_BOOTIMG := true
# Kernel: mkbootimgs args
BOARD_MKBOOTIMG_ARGS += --ramdisk_offset $(BOARD_RAMDISK_OFFSET)
BOARD_MKBOOTIMG_ARGS += --tags_offset $(BOARD_KERNEL_TAGS_OFFSET)
BOARD_MKBOOTIMG_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE)
BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
BOARD_MKBOOTIMG_ARGS += --board $(BOARD_NAME)
BOARD_MKBOOTIMG_ARGS += --kernel_offset $(BOARD_KERNEL_OFFSET)
# Additional root folders
TARGET_FS_CONFIG_GEN := $(COMMON_PATH)/config.fs
BOARD_ROOT_EXTRA_FOLDERS += \
prism \
product \
optics \
metadata \
spu \
misc \
efs
# File systems
BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs
BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_USES_METADATA_PARTITION := true
TARGET_USERIMAGES_USE_F2FS := true
TARGET_USERIMAGES_USE_EXT4 := true
# Partition sizes, obtained with blockdev --getsize64
BOARD_DTBOIMG_PARTITION_SIZE := 25165824
BOARD_BOOTIMAGE_PARTITION_SIZE := 100663296
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 81788928
BOARD_CACHEIMAGE_PARTITION_SIZE := 629145600
# TODO: Split between 128GB and 256GB variants
BOARD_USERDATAIMAGE_PARTITION_SIZE := 114326106112
# Super partition sizes, obtained with fdisk -l /dev/block/dm-[0,1,2,3]
BOARD_SUPER_PARTITION_SIZE := 10385096704
BOARD_SUPER_PARTITION_GROUPS := samsung_dynamic_partitions
BOARD_SAMSUNG_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor product odm
BOARD_SAMSUNG_DYNAMIC_PARTITIONS_SIZE := 10380902400 # BOARD_SUPER_PARTITION_SIZE-4MiB
BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE := 500000000 # CHECK LATER
BOARD_VENDORIMAGE_PARTITION_RESERVED_SIZE := 500000000 # CHECK LATER
BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE := 500000000 # CHECK LATER
#BOARD_SUPER_PARTITION_SYSTEM_DEVICE_SIZE := 5785821184
#BOARD_SUPER_PARTITION_VENDOR_DEVICE_SIZE := 1084862464
#BOARD_SUPER_PARTITION_PRODUCT_DEVICE_SIZE := 1026670592
#BOARD_SUPER_PARTITION_ODM_DEVICE_SIZE := 4349952
BOARD_FLASH_BLOCK_SIZE := 131072
# Out dirs
TARGET_COPY_OUT_VENDOR := vendor
TARGET_COPY_OUT_PRODUCT := product
TARGET_COPY_OUT_ODM := odm
# Audio policy
USE_CUSTOM_AUDIO_POLICY := 1
USE_XML_AUDIO_POLICY_CONF := 1
AUDIOSERVER_MULTILIB := 32
# HIDL manifests
DEVICE_MANIFEST_FILE := $(COMMON_PATH)/configs/manifest.xml
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := $(COMMON_PATH)/configs/framework_compatibility_matrix.xml
DEVICE_MATRIX_FILE := $(COMMON_PATH)/configs/compatibility_matrix.xml
# QCOM
BOARD_USES_QCOM_HARDWARE := true
# Samsung
BOARD_VENDOR := samsung
# DRM
TARGET_ENABLE_MEDIADRM_64 := true
# Display
TARGET_USES_HWC2 := true
TARGET_USES_ION := true
TARGET_SCREEN_DENSITY := 420
# RIL
ENABLE_VENDOR_RIL_SERVICE := true
# Security patch level
VENDOR_SECURITY_PATCH := 2021-06-01
# Recovery
BOARD_HAS_DOWNLOAD_MODE := true
BOARD_INCLUDE_RECOVERY_DTBO := true
TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888
TARGET_USES_MKE2FS := true
TARGET_RECOVERY_FSTAB := $(COMMON_PATH)/rootdir/etc/fstab.default
# SePolicy
include device/qcom/sepolicy_vndr/SEPolicy.mk
BOARD_PLAT_PRIVATE_SEPOLICY_DIR += $(COMMON_PATH)/sepolicy/private
BOARD_SEPOLICY_DIRS += $(COMMON_PATH)/sepolicy/vendor
# Treble
BOARD_VNDK_VERSION := current
BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
# Wifi
#TODO

@ -0,0 +1,265 @@
#
# Copyright (C) 2021 The LineageOS 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.
#
COMMON_PATH := device/samsung/sm7125-common
DEVICE_PACKAGE_OVERLAYS += $(COMMON_PATH)/overlay
# Partitions
PRODUCT_BUILD_SUPER_PARTITION := false
PRODUCT_USE_DYNAMIC_PARTITIONS := true
PRODUCT_ENFORCE_RRO_TARGETS := *
# VNDK
PRODUCT_TARGET_VNDK_VERSION := 30
# No A/B
AB_OTA_UPDATER := false
# Init files and fstab
PRODUCT_PACKAGES += \
fstab.default \
fstab.default.ramdisk \
init.a52q.rc \
init.qcom.factory.rc \
init.qcom.rc \
init.qcom.usb.rc \
init.samsung.bsp.rc \
init.samsung.display.rc \
init.samsung.rc \
init.target.rc \
ueventd.qcom.rc \
wifi_qcom.rc \
wifi_sec.rc
# Vendor scripts
PRODUCT_PACKAGES += \
init.class_main.sh \
init.crda.sh \
init.qcom.early_boot.sh \
init.qcom.post_boot.sh \
init.qcom.sdio.sh \
init.qcom.sh \
init.qcom.usb.sh \
init.qti.chg_policy.sh \
init.qti.dcvs.sh
# Audio
PRODUCT_PACKAGES += \
android.hardware.audio.service \
android.hardware.audio@6.0-impl \
android.hardware.audio.effect@6.0-impl \
android.hardware.soundtrigger@2.2-impl \
audio.bluetooth.default \
audio.r_submix.default \
audio.usb.default
PRODUCT_COPY_FILES += \
$(COMMON_PATH)/configs/audio/audio_configs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_configs.xml \
$(COMMON_PATH)/configs/audio/audio_effects_sec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects_sec.xml \
$(COMMON_PATH)/configs/audio/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
$(COMMON_PATH)/configs/audio/audio_platform_info_diff.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_diff.xml \
$(COMMON_PATH)/configs/audio/audio_platform_info_intcodec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_intcodec.xml \
$(COMMON_PATH)/configs/audio/audio_platform_info_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_qrd.xml \
$(COMMON_PATH)/configs/audio/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
$(COMMON_PATH)/configs/audio/audio_policy_configuration_base.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_base.xml \
$(COMMON_PATH)/configs/audio/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
$(COMMON_PATH)/configs/audio/mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_qrd.xml \
$(COMMON_PATH)/configs/audio/mixer_paths_wcd937xqrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_wcd937xqrd.xml \
$(COMMON_PATH)/configs/audio/mixer_paths_wcd937x.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_wcd937x.xml \
$(COMMON_PATH)/configs/audio/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml \
$(COMMON_PATH)/configs/audio/mixer_usb_default.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_usb_default.xml \
$(COMMON_PATH)/configs/audio/mixer_usb_gray.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_usb_gray.xml \
$(COMMON_PATH)/configs/audio/sound_trigger_mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_qrd.xml \
$(COMMON_PATH)/configs/audio/sound_trigger_mixer_paths_wcd937x.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd937x.xml \
$(COMMON_PATH)/configs/audio/sound_trigger_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths.xml \
$(COMMON_PATH)/configs/audio/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_platform_info.xml \
frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml \
frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml
# Graphics
PRODUCT_AAPT_CONFIG := normal
PRODUCT_AAPT_PREF_CONFIG := xxhdpi
# A list of dpis to select prebuilt apk, in precedence order.
PRODUCT_AAPT_PREBUILT_DPI := xxhdpi xhdpi hdpi
# Display
PRODUCT_PACKAGES += \
android.hardware.graphics.composer@2.4-service \
android.hardware.graphics.mapper@3.0-impl-qti-display \
android.hardware.graphics.mapper@4.0-impl-qti-display \
vendor.qti.hardware.display.allocator-service \
android.hardware.memtrack@1.0-impl \
android.hardware.memtrack@1.0-service \
android.hardware.renderscript@1.0-impl \
libtinyxml \
libtinyxml2 \
hwcomposer.atoll \
gralloc.atoll \
memtrack.atoll \
libqdMetaData \
libdisplayconfig.qti \
vendor.qti.hardware.display.mapper@2.0.vendor \
vendor.qti.hardware.display.mapper@3.0.vendor \
vendor.qti.hardware.display.mapper@4.0.vendor \
vendor.display.config@2.0.vendor
PRODUCT_COPY_FILES += \
$(COMMON_PATH)/configs/android.hardware.graphics.composer@2.4-service.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/android.hardware.graphics.composer@2.4-service.rc
# DRM
PRODUCT_PACKAGES += \
android.hardware.drm@1.3-service.clearkey \
libdrmclearkeyplugin
# fastbootd
PRODUCT_PACKAGES += \
fastbootd
# Health
PRODUCT_PACKAGES += \
android.hardware.health@2.1-impl \
android.hardware.health@2.1-service
# HIDL
PRODUCT_PACKAGES += \
android.hidl.base@1.0 \
android.hidl.base@1.0.vendor \
android.hidl.manager@1.0 \
android.hidl.manager@1.0.vendor \
libhidltransport \
libhidltransport.vendor \
libhwbinder \
libhwbinder.vendor
# Keymaster
PRODUCT_PACKAGES += \
android.hardware.keymaster@4.0-service
# Light
PRODUCT_PACKAGES += \
android.hardware.light@2.0-service.samsung
# Media
PRODUCT_COPY_FILES += \
frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \
frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \
frameworks/av/media/libstagefright/data/media_codecs_google_video_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video_le.xml
PRODUCT_COPY_FILES += \
$(COMMON_PATH)/configs/media/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \
$(COMMON_PATH)/configs/media/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
$(COMMON_PATH)/configs/media/media_codecs_vendor.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor.xml \
$(COMMON_PATH)/configs/media/media_profiles.xml:$(TARGET_COPY_OUT_ODM)/etc/media_profiles_V1_0.xml \
$(COMMON_PATH)/configs/media/media_profiles_vendor.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_vendor.xml
# Permissions
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml \
frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml \
frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \
frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml \
frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.flash-autofocus.xml \
frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \
frameworks/native/data/etc/android.hardware.camera.full.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.full.xml \
frameworks/native/data/etc/android.hardware.camera.raw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.raw.xml \
frameworks/native/data/etc/android.hardware.fingerprint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.fingerprint.xml \
frameworks/native/data/etc/android.hardware.biometrics.face.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.biometrics.face.xml \
frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.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/android.hardware.nfc.hce.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.hce.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.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.xml \
frameworks/native/data/etc/android.hardware.opengles.aep.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.opengles.aep.xml \
frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.accelerometer.xml \
frameworks/native/data/etc/android.hardware.sensor.compass.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.compass.xml \
frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \
frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \
frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \
frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepcounter.xml \
frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepdetector.xml \
frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml \
frameworks/native/data/etc/android.hardware.telephony.ims.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.ims.xml \
frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \
frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \
frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute-0.xml \
frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level-1.xml \
frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version-1_1.xml \
frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml \
frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \
frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \
frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \
frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \
frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml \
frameworks/native/data/etc/android.software.sip.voip.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.sip.voip.xml \
frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.verified_boot.xml \
frameworks/native/data/etc/android.software.vulkan.deqp.level-2020-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \
frameworks/native/data/etc/com.nxp.mifare.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.nxp.mifare.xml \
frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml
# Power
PRODUCT_PACKAGES += \
android.hardware.power-service-qti
# Sensors
PRODUCT_PACKAGES += \
android.hardware.sensors@2.0-service.multihal \
android.frameworks.sensorservice@1.0
# Telephony
PRODUCT_PACKAGES += \
ims-ext-common \
ims_ext_common.xml \
qti-telephony-hidl-wrapper \
qti_telephony_hidl_wrapper.xml \
qti-telephony-utils \
qti_telephony_utils.xml \
telephony-ext
PRODUCT_BOOT_JARS += \
telephony-ext
# Vendor service manager
PRODUCT_PACKAGES += \
vndservicemanager
# USB
PRODUCT_PACKAGES += \
android.hardware.usb@1.2-service-qti
# Vibrator
PRODUCT_PACKAGES += \
vendor.qti.hardware.vibrator.service
# Wifi
#PRODUCT_PACKAGES += \
# Soong namespaces
PRODUCT_SOONG_NAMESPACES += \
$(COMMON_PATH)
# Prop files
TARGET_SYSTEM_PROP += $(COMMON_PATH)/system.prop
TARGET_VENDOR_PROP += $(COMMON_PATH)/vendor.prop
# Inherit proprietary blobs
$(call inherit-product, vendor/samsung/sm7125-common/sm7125-common-vendor.mk)

@ -0,0 +1,74 @@
[efs/]
mode: 0771
user: AID_SYSTEM
group: AID_RADIO
caps: 0
[AID_VENDOR_QTI_DIAG]
value:2901
[AID_VENDOR_QDSS]
value:2902
[AID_VENDOR_RFS]
value:2903
[AID_VENDOR_RFS_SHARED]
value:2904
[AID_VENDOR_ADPL_ODL]
value:2905
[AID_VENDOR_QRTR]
value:2906
[AID_VENDOR_THERMAL]
value:2907
[vendor/bin/hw/android.hardware.bluetooth@1.0-service-qti]
mode: 0755
user: AID_BLUETOOTH
group: AID_BLUETOOTH
caps: BLOCK_SUSPEND NET_ADMIN
[vendor/bin/sensors.qti]
mode: 0755
user: AID_SYSTEM
group: AID_SYSTEM
caps: NET_BIND_SERVICE
[firmware/]
mode: 0771
user: AID_SYSTEM
group: AID_SYSTEM
caps: 0
[firmware/image/*]
mode: 0771
user: AID_SYSTEM
group: AID_SYSTEM
caps: 0
[vendor/firmware_mnt/image/*]
mode: 0771
user: AID_SYSTEM
group: AID_SYSTEM
caps: 0
[bt_firmware/]
mode: 0771
user: AID_SYSTEM
group: AID_SYSTEM
caps: 0
[persist/]
mode: 0771
user: AID_SYSTEM
group: AID_SYSTEM
caps: 0
[dsp/]
mode: 0771
user: AID_MEDIA
group: AID_MEDIA
caps: 0

@ -0,0 +1,8 @@
service vendor.hwcomposer-2-4 /vendor/bin/hw/android.hardware.graphics.composer@2.4-service
class hal animation
user system
group graphics drmrpc
capabilities SYS_NICE SYS_RESOURCE
onrestart restart surfaceflinger
task_profiles HighPerformance GpisSfCpusetJoin
socket pps stream 0660 system system

@ -0,0 +1,72 @@
<?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,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<configs>
<!-- APM Configs -->
<property name="audio.deep_buffer.media" value="true"/>
<property name="audio.offload.disable" value="false"/>
<property name="audio.offload.min.duration.secs" value="30"/>
<property name="audio.offload.video" value="true"/>
<property name="persist.vendor.audio.sva.conc.enabled" value="false"/>
<property name="persist.vendor.audio.va_concurrency_enabled" value="false"/>
<property name="vendor.audio.av.streaming.offload.enable" value="false"/>
<property name="vendor.audio.offload.track.enable" value="true"/>
<property name="vendor.audio.offload.multiple.enabled" value="false"/>
<property name="vendor.audio.rec.playback.conc.disabled" value="false"/>
<property name="vendor.voice.conc.fallbackpath" value=""/>
<property name="vendor.voice.dsd.playback.conc.disabled" value="true"/>
<property name="vendor.voice.path.for.pcm.voip" value="true"/>
<property name="vendor.voice.playback.conc.disabled" value="false"/>
<property name="vendor.voice.record.conc.disabled" value="false"/>
<property name="vendor.voice.voip.conc.disabled" value="false"/>
<flag name="audio_extn_formats_enabled" value="true" />
<flag name="audio_extn_hdmi_spk_enabled" value="true" />
<flag name="use_xml_audio_policy_conf" value="true" />
<flag name="voice_concurrency" value="false" />
<flag name="afe_proxy_enabled" value="true" />
<flag name="compress_voip_enabled" value="false" />
<flag name="fm_power_opt" value="true" />
<flag name="record_play_concurrency" value="false" />
<!-- AV Configs -->
<property name="vendor.audio.use.sw.alac.decoder" value="true"/>
<property name="vendor.audio.use.sw.ape.decoder" value="true"/>
<property name="vendor.audio.use.sw.mpegh.decoder" value="false"/>
<property name="vendor.audio.flac.sw.decoder.24bit" value="true"/>
<property name="vendor.audio.hw.aac.encoder" value="true"/>
<flag name="aac_adts_offload_enabled" value="true" />
<flag name="alac_offload_enabled" value="true" />
<flag name="ape_offload_enabled" value="true" />
<flag name="flac_offload_enabled" value="true" />
<flag name="pcm_offload_enabled_16" value="true" />
<flag name="pcm_offload_enabled_24" value="true" />
<flag name="qti_flac_decoder" value="true" />
<flag name="vorbis_offload_enabled" value="true" />
<flag name="wma_offload_enabled" value="true" />
</configs>

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--- Copyright (c) 2018-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, -->
<!--- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
<!--- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!--- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
<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="visualizer_hw" path="libqcomvisualizer.so"/>
<library name="downmix" path="libdownmix.so"/>
<library name="loudness_enhancer" path="libldnhncr.so"/>
<library name="dynamics_processing" path="libdynproc.so"/>
<library name="proxy" path="libeffectproxy.so"/>
<library name="offload_bundle" path="libqcompostprocbundle.so"/>
<library name="audio_pre_processing" path="libqcomvoiceprocessing.so"/>
<library name="volume_listener" path="libvolumelistener.so"/>
<library name="audiosphere" path="libasphere.so"/>
<library name="shoebox" path="libshoebox.so"/>
</libraries>
<effects>
<effectProxy name="bassboost" library="proxy" uuid="14804144-a5ee-4d24-aa88-0002a5d5c51b">
<libsw library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
<libhw library="offload_bundle" uuid="2c4a8c24-1581-487f-94f6-0002a5d5c51b"/>
</effectProxy>
<effectProxy name="virtualizer" library="proxy" uuid="d3467faa-acc7-4d34-acaf-0002a5d5c51b">
<libsw library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
<libhw library="offload_bundle" uuid="509a4498-561a-4bea-b3b1-0002a5d5c51b"/>
</effectProxy>
<effectProxy name="equalizer" library="proxy" uuid="c8e70ecd-48ca-456e-8a4f-0002a5d5c51b">
<libsw library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
<libhw library="offload_bundle" uuid="a0dac280-401c-11e3-9379-0002a5d5c51b"/>
</effectProxy>
<effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
<effectProxy name="reverb_env_aux" library="proxy" uuid="48404ac9-d202-4ccc-bf84-0002a5d5c51b">
<libsw library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
<libhw library="offload_bundle" uuid="79a18026-18fd-4185-8233-0002a5d5c51b"/>
</effectProxy>
<effectProxy name="reverb_env_ins" library="proxy" uuid="b707403a-a1c1-4291-9573-0002a5d5c51b">
<libsw library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
<libhw library="offload_bundle" uuid="eb64ea04-973b-43d2-8f5e-0002a5d5c51b"/>
</effectProxy>
<effectProxy name="reverb_pre_aux" library="proxy" uuid="1b78f587-6d1c-422e-8b84-0002a5d5c51b">
<libsw library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
<libhw library="offload_bundle" uuid="6987be09-b142-4b41-9056-0002a5d5c51b"/>
</effectProxy>
<effectProxy name="reverb_pre_ins" library="proxy" uuid="f3e178d2-ebcb-408e-8357-0002a5d5c51b">
<libsw library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
<libhw library="offload_bundle" uuid="aa2bebf6-47cf-4613-9bca-0002a5d5c51b"/>
</effectProxy>
<effectProxy name="visualizer" library="proxy" uuid="1d0a1a53-7d5d-48f2-8e71-27fbd10d842c">
<libsw library="visualizer_sw" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
<libhw library="visualizer_hw" uuid="7a8044a0-1a71-11e3-a184-0002a5d5c51b"/>
</effectProxy>
<effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
<effect name="hw_acc" library="offload_bundle" uuid="7d1580bd-297f-4683-9239-e475b6d1d69f"/>
<effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
<effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
<effect name="aec" library="audio_pre_processing" uuid="0f8d0d2a-59e5-45fe-b6e4-248c8a799109"/>
<effect name="ns" library="audio_pre_processing" uuid="1d97bb0b-9e2f-4403-9ae3-58c2554306f8"/>
<effect name="music_helper" library="volume_listener" uuid="08b8b058-0590-11e5-ac71-0025b32654a0"/>
<effect name="ring_helper" library="volume_listener" uuid="0956df94-0590-11e5-bdbe-0025b32654a0"/>
<effect name="alarm_helper" library="volume_listener" uuid="09f303e2-0590-11e5-8fdb-0025b32654a0"/>
<effect name="voice_helper" library="volume_listener" uuid="0ace5c08-0590-11e5-ae9e-0025b32654a0"/>
<effect name="notification_helper" library="volume_listener" uuid="0b776dde-0590-11e5-81ba-0025b32654a0"/>
<effect name="audiosphere" library="audiosphere" uuid="184e62ab-2d19-4364-9d1b-c0a40733866c"/>
<effect name="shoebox" library="shoebox" uuid="1eab784c-1a36-4b2a-b7fc-e34c44cab89e"/>
</effects>
<postprocess>
<stream type="music">
<apply effect="music_helper"/>
</stream>
<stream type="ring">
<apply effect="ring_helper"/>
</stream>
<stream type="alarm">
<apply effect="alarm_helper"/>
</stream>
<stream type="voice_call">
<apply effect="voice_helper"/>
</stream>
<stream type="notification">
<apply effect="notification_helper"/>
</stream>
</postprocess>
<preprocess>
<stream type="voice_communication">
<apply effect="aec"/>
<apply effect="ns"/>
</stream>
</preprocess>
</audio_effects_conf>

@ -0,0 +1,82 @@
<?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>
<!-- This is a proxy library that will be an abstraction for the HW and SW effects-->
<library name="proxy" path="libeffectproxy.so"/>
<!-- This is the HW implementation library for the effect-->
<library name="offload" path="libaudioeffectoffload.so"/>
<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="mysound" path="libmysound.so"/>
<library name="myspace" path="libmyspace.so"/>
<library name="soundalive_sec" path="libaudiosaplus_sec.so"/>
<library name="loudness_enhancer" path="libldnhncr.so"/>
<library name="dynamics_processing" path="libdynproc.so"/>
<library name="soundbooster_plus" path="libsamsungSoundbooster_plus.so"/>
<library name="pre_processing" path="libqcomvoiceprocessing.so"/>
<library name="playbackrecorder" path="libplaybackrecorder.so"/>
<library name="vr360audio" path="libgearvr.so"/>
<library name="dap" path="libswdap.so"/>
</libraries>
<effects>
<effect name="soundbooster_plus" library="soundbooster_plus" uuid="50de45f0-5d4c-11e5-a837-0800200c9a66"/>
<effectProxy name="soundalive" library="proxy" uuid="05227ea0-50bb-11e3-ac69-0002a5d5c51b">
<libsw library="soundalive_sec" uuid="cf65eb39-ce2f-48a8-a903-ceb818c06745"/>
<libhw library="offload" uuid="0b2dbc60-50bb-11e3-988b-0002a5d5c51b"/>
</effectProxy>
<effect name="bassboost" library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
<effect name="virtualizer" library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
<effect name="equalizer" library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
<effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
<effect name="reverb_env_aux" library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
<effect name="reverb_env_ins" library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
<effect name="reverb_pre_aux" library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
<effect name="reverb_pre_ins" library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
<effect name="visualizer" library="visualizer_sw" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
<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="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
<effectProxy name="dha" library="proxy" uuid="37155c20-50bb-11e3-9fac-0002a5d5c51b">
<libsw library="mysound" uuid="263a88e0-50b1-11e2-bcfd-0800200c9a66"/>
<libhw library="offload" uuid="3ef69260-50bb-11e3-931e-0002a5d5c51b"/>
</effectProxy>
<effectProxy name="sa3d" library="proxy" uuid="1c91fca0-664a-11e4-b8c2-0002a5d5c51b">
<libsw library="myspace" uuid="3462a6e0-655a-11e4-8b67-0002a5d5c51b"/>
<libhw library="offload" uuid="c7a84e61-eebe-4fcc-bc53-efcb841b4625"/>
</effectProxy>
<effect name="aec" library="pre_processing" uuid="0f8d0d2a-59e5-45fe-b6e4-248c8a799109"/>
<effect name="ns" library="pre_processing" uuid="1d97bb0b-9e2f-4403-9ae3-58c2554306f8"/>
<effect name="playbackrecorder" library="playbackrecorder" uuid="517a26c0-fd7c-11e5-a837-0800200c9a66"/>
<effect name="vr3d" library="vr360audio" uuid="e6388202-e7a4-4c72-b68a-332eeeba269b"/>
<!-- Supporting Dolby offload effect -->
<effectProxy name="dap_proxy" library="proxy" uuid="9d4921da-8225-4f29-aefa-39537a04bcaa">
<libsw library="dap" uuid="6ab06da4-c516-4611-8166-452799218539"/>
<libhw library="offload" uuid="a0c30891-8246-4aef-b8ad-d53e26da0253"/>
</effectProxy>
</effects>
<preprocess>
<stream type="voice_communication">
<apply effect="aec"/>
</stream>
<stream type="sec_voice_communication">
<apply effect="aec"/>
</stream>
</preprocess>
<postprocess>
<stream type="music">
<apply effect="sa3d"/>
</stream>
<stream type="ring">
<apply effect="sa3d"/>
</stream>
<stream type="alarm">
<apply effect="sa3d"/>
</stream>
</postprocess>
</audio_effects_conf>

@ -0,0 +1,632 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright (c) 2014, 2016-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. -->
<audio_platform_info>
<acdb_ids>
<device name="SND_DEVICE_OUT_SPEAKER" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" acdb_id="124"/>
<device name="SND_DEVICE_IN_VOICE_REC_QMIC_FLUENCE" acdb_id="131"/>
<device name="SND_DEVICE_IN_VOICE_REC_TMIC" acdb_id="131"/>
<device name="SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE" acdb_id="132"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED" acdb_id="150"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED_VBAT" acdb_id="150"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_1" acdb_id="151"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_2" acdb_id="152"/>
<device name="SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC" acdb_id="133"/>
<device name="SND_DEVICE_IN_UNPROCESSED_MIC" acdb_id="143"/>
<device name="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC" acdb_id="144"/>
<device name="SND_DEVICE_IN_UNPROCESSED_THREE_MIC" acdb_id="145"/>
<device name="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC" acdb_id="146"/>
<device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" acdb_id="147"/>
<device name="SND_DEVICE_IN_USB_HEADSET_HEX_MIC" acdb_id="162"/>
<device name="SND_DEVICE_IN_USB_HEADSET_HEX_MIC_AEC" acdb_id="162"/>
<device name="SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_HEX_MIC" acdb_id="162"/>
<device name="SND_DEVICE_IN_VOCE_RECOG_USB_HEADSET_HEX_MIC" acdb_id="162"/>
</acdb_ids>
<module_ids>
<aec>
<device name="SND_DEVICE_IN_SPEAKER_TMIC_AEC_NS" module_id="0x10F35" instance_id="0x0" param_id="0x10EAF" param_value="0x01"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE" module_id="0x10F34" instance_id="0x0" param_id="0x10EAF" param_value="0x01"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS" module_id="0x10F33" instance_id="0x0" param_id="0x10EAF" param_value="0x01"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC_AEC_NS" module_id="0x10F31" instance_id="0x0" param_id="0x10EAF" param_value="0x01"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS" module_id="0x10F33" instance_id="0x0" param_id="0x10EAF" param_value="0x01"/>
<device name="SND_DEVICE_IN_HANDSET_MIC_AEC_NS" module_id="0x10F31" instance_id="0x0" param_id="0x10EAF" param_value="0x01"/>
</aec>
<ns>
<device name="SND_DEVICE_IN_SPEAKER_TMIC_AEC_NS" module_id="0x10F35" instance_id="0x0" param_id="0x10EAF" param_value="0x02"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE" module_id="0x10F34" instance_id="0x0" param_id="0x10EAF" param_value="0x02"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS" module_id="0x10F33" instance_id="0x0" param_id="0x10EAF" param_value="0x02"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC_AEC_NS" module_id="0x10F31" instance_id="0x0" param_id="0x10EAF" param_value="0x02"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS" module_id="0x10F33" instance_id="0x0" param_id="0x10EAF" param_value="0x02"/>
<device name="SND_DEVICE_IN_HANDSET_MIC_AEC_NS" module_id="0x10F31" instance_id="0x0" param_id="0x10EAF" param_value="0x02"/>
</ns>
</module_ids>
<bit_width_configs>
<device name="SND_DEVICE_OUT_SPEAKER" bit_width="24"/>
</bit_width_configs>
<pcm_ids>
<usecase name="USECASE_AUDIO_PLAYBACK_LOW_LATENCY" type="out" id="9"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD" type="out" id="7"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD2" type="out" id="11"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD3" type="out" id="12"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD4" type="out" id="24"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD5" type="out" id="25"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD6" type="out" id="26"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD7" type="out" id="27"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD8" type="out" id="28"/>
<usecase name="USECASE_VOICEMMODE1_CALL" type="in" id="2"/>
<usecase name="USECASE_VOICEMMODE1_CALL" type="out" id="2"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="15"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="15"/>
<usecase name="USECASE_VOWLAN_CALL" type="in" id="-1"/>
<usecase name="USECASE_VOWLAN_CALL" type="out" id="-1"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="out" id="30"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="in" id="38"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_RX" type="out" id="30"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="33"/>
<usecase name="USECASE_AUDIO_PLAYBACK_AFE_PROXY" type="out" id="5"/>
<usecase name="USECASE_AUDIO_RECORD_AFE_PROXY" type="in" id="6"/>
<usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY" type="in" id="13" />
<usecase name="USECASE_AUDIO_PLAYBACK_ULL" type="out" id="13" />
<usecase name="USECASE_AUDIO_PLAYBACK_SILENCE" type="out" id="23" />
<usecase name="USECASE_AUDIO_PLAYBACK_VOIP" type="out" id="12" />
<usecase name="USECASE_AUDIO_RECORD_VOIP" type="in" id="12" />
<usecase name="USECASE_AUDIO_PLAYBACK_MMAP" type="out" id="29" />
<usecase name="USECASE_AUDIO_RECORD_MMAP" type="in" id="29" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="36" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="36" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
<usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_UPLINK_AND_DOWNLINK" type="in" id="23" />
</pcm_ids>
<config_params>
<param key="spkr_1_tz_name" value="wsatz.13"/>
<param key="spkr_2_tz_name" value="wsatz.14"/>
<!-- In the below value string, the value indicates default mono -->
<!-- speaker. It can be set to either left or right -->
<param key="mono_speaker" value="left"/>
<!-- In the below value string, first parameter indicates size -->
<!-- followed by perf lock options -->
<param key="perf_lock_opts" value="4, 0x40400000, 0x1, 0x40C00000, 0x1"/>
<param key="native_audio_mode" value="src"/>
<param key="input_mic_max_count" value="3"/>
<param key="true_32_bit" value="true"/>
<!-- In the below value string, the value indicates sidetone gain in dB -->
<param key="usb_sidetone_gain" value="35"/>
</config_params>
<gain_db_to_level_mapping>
<gain_level_map db="-59" level="5"/>
<gain_level_map db="-17.4" level="4"/>
<gain_level_map db="-13.8" level="3"/>
<gain_level_map db="-10.2" level="2"/>
<gain_level_map db="0" level="1"/>
</gain_db_to_level_mapping>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES_44_1" backend="headphones-44.1" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_BT_SCO_WB" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_SCO" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_A2DP" backend="bt-a2dp" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_LINE" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_ANC_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_LINE" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_ANC_HEADSET" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HEADSET" backend="headset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_ANC_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_LINE" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADSET" backend="headset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADSET" backend="headset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HANDSET" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_1" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_2" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_1" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_2" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_IN_HANDSET_GENERIC_QMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_STEREO" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HDMI" interface="WSA_CDC_DMA_RX_0-and-HDMI"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT" interface="WSA_CDC_DMA_RX_0-and-DISPLAY_PORT"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_ANC_FB_HEADSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_ANC_FB_HEADSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_ANC_HANDSET" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_WSA" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_WSA" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_WSA" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_IN_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_MIC_EXTERNAL" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_MIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_MIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_MIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_HEADSET_MIC_FLUENCE" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_TTY_FULL_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_TTY_HCO_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_REC_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_HEADSET_MIC_AEC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HDMI_MIC" interface="HDMI"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC_NREC" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC_WB" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC_WB_NREC" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_CAMCORDER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_QMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_TTY_FULL_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_TTY_VCO_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_TTY_HCO_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_MIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_DMIC_STEREO" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_AANC_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_QUAD_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC_STEREO" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_STEREO" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK" interface="WSA_CDC_DMA_TX_0"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_1" interface="WSA_CDC_DMA_TX_0"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_2" interface="WSA_CDC_DMA_TX_0"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_FLUENCE_DMIC_AANC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_QMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_QMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_QMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_THREE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_FLUENCE_PRO" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_TMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_THREE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_HEADPHONES" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_ANC_HEADSET" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_SWB" backend="speaker-and-bt-sco-swb" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
</backend_names>
<!-- below values are for ref purpose to OEM, doesn't contain actual hardware info on MTP -->
<microphone_characteristics>
<microphone valid_mask="31" 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 valid_mask="31" 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 valid_mask="31" device_id="builtin_mic_3" type="AUDIO_DEVICE_IN_BUILTIN_MIC" address="" 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 valid_mask="31" device_id="builtin_mic_4" type="AUDIO_DEVICE_IN_BACK_MIC" address="" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
group="0" index_in_the_group="3" 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_characteristics>
<snd_devices>
<input_snd_device>
<input_snd_device_mic_mapping>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_MIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_MIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_MIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_MIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_MIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_MIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_CAMCORDER_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_DMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_DMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_TMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_QMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_4"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_DMIC_STEREO">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_AANC_HANDSET_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_QUAD_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_4"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_STEREO">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_STEREO">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_FLUENCE_DMIC_AANC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_4"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_QMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_4"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_QMIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_4"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_QMIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_4"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_4"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_THREE_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_TMIC_FLUENCE_PRO">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_TMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_TMIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_TMIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_TMIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_TMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC">
<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"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_THREE_MIC">
<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"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC">
<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 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 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 AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
<mic_info mic_device_id="builtin_mic_4"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_GENERIC_QMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_4"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
</input_snd_device_mic_mapping>
</input_snd_device>
</snd_devices>
</audio_platform_info>

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright (c) 2014, 2016-2017, 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_info>
<acdb_ids>
<device name="SND_DEVICE_OUT_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" acdb_id="13"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" acdb_id="13"/>
<device name="SND_DEVICE_OUT_CALL_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_CALL_SPEAKER_EVS" acdb_id="13"/>
<device name="SND_DEVICE_OUT_CALL_DEX_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_CALL_DEX_SPEAKER_EVS" acdb_id="13"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_SPEAKER_EVS" acdb_id="13"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_DEX_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_DEX_SPEAKER_EVS" acdb_id="13"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_DEX_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_TV_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_DEX_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_VOIP_GAMING_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_FM_SPEAKER" acdb_id="13"/>
<device name="SND_DEVICE_OUT_CALL_SPEAKER_EX" acdb_id="75"/>
<device name="SND_DEVICE_OUT_CALL_SPEAKER_EX_EVS" acdb_id="75"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_SPEAKER_EX" acdb_id="75"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_SPEAKER_EX_EVS" acdb_id="75"/>
<device name="SND_DEVICE_IN_USB_MIC_REMOTEMIC" acdb_id="511"/>
</acdb_ids>
</audio_platform_info>

@ -0,0 +1,625 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright (c) 2014, 2016-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. -->
<audio_platform_info>
<bit_width_configs>
<device name="SND_DEVICE_OUT_SPEAKER" bit_width="24"/>
</bit_width_configs>
<interface_names>
<device name="AUDIO_DEVICE_IN_BUILTIN_MIC" interface="TX_CDC_DMA_TX_3" codec_type="internal"/>
<device name="AUDIO_DEVICE_IN_BACK_MIC" interface="TX_CDC_DMA_TX_3" codec_type="internal"/>
</interface_names>
<pcm_ids>
<usecase name="USECASE_AUDIO_PLAYBACK_LOW_LATENCY" type="out" id="9"/>
<usecase name="USECASE_AUDIO_PLAYBACK_PRIMARY" type="out" id="24"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD" type="out" id="7"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD2" type="out" id="11"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD3" type="out" id="12"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD4" type="out" id="24"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD5" type="out" id="25"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD6" type="out" id="26"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD7" type="out" id="27"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD8" type="out" id="28"/>
<usecase name="USECASE_VOICEMMODE1_CALL" type="in" id="2"/>
<usecase name="USECASE_VOICEMMODE1_CALL" type="out" id="2"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="15"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="15"/>
<usecase name="USECASE_VOWLAN_CALL" type="in" id="-1"/>
<usecase name="USECASE_VOWLAN_CALL" type="out" id="-1"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="out" id="30"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="in" id="38"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_RX" type="out" id="30"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="1"/>
<usecase name="USECASE_AUDIO_PLAYBACK_AFE_PROXY" type="out" id="5"/>
<usecase name="USECASE_AUDIO_RECORD_AFE_PROXY" type="in" id="6"/>
<usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY" type="in" id="13" />
<usecase name="USECASE_AUDIO_PLAYBACK_ULL" type="out" id="13" />
<usecase name="USECASE_AUDIO_PLAYBACK_SILENCE" type="out" id="23" />
<usecase name="USECASE_AUDIO_PLAYBACK_VOIP" type="out" id="12" />
<usecase name="USECASE_AUDIO_RECORD_VOIP" type="in" id="12" />
<usecase name="USECASE_AUDIO_HFP_SCO" type="in" id="12" />
<usecase name="USECASE_AUDIO_HFP_SCO_WB" type="in" id="12" />
<usecase name="USECASE_AUDIO_PLAYBACK_MMAP" type="out" id="29" />
<usecase name="USECASE_AUDIO_RECORD_MMAP" type="in" id="29" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="36" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="36" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
<usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_UPLINK_AND_DOWNLINK" type="in" id="23" />
</pcm_ids>
<fm_pcm_ids>
<device name="SND_DEVICE_OUT_FM_HEADSET" type="out" id="30"/>
<device name="SND_DEVICE_OUT_FM_HEADSET" type="in" id="38"/>
<device name="SND_DEVICE_OUT_FM_SPEAKER" type="out" id="34"/>
<device name="SND_DEVICE_OUT_FM_SPEAKER" type="in" id="34"/>
<device name="SND_DEVICE_OUT_FM_USB_HEADPHONES" type="out" id="40"/>
<device name="SND_DEVICE_OUT_FM_USB_HEADPHONES" type="in" id="34"/>
</fm_pcm_ids>
<config_params>
<!-- In the below value string, the value indicates default mono -->
<!-- speaker. It can be set to either left or right -->
<param key="mono_speaker" value="left"/>
<param key="spkr_1_tz_name" value="wsatz.13"/>
<param key="spkr_2_tz_name" value="wsatz.14"/>
<param key="true_32_bit" value="true"/>
<param key="hifi_filter" value="false"/>
<param key="native_audio_mode" value="multiple_mix_dsp"/>
<param key="hfp_pcm_dev_id" value="39"/>
<param key="input_mic_max_count" value="4"/>
</config_params>
<acdb_ids>
<device name="SND_DEVICE_OUT_SPEAKER" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" acdb_id="124"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" acdb_id="101"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT" acdb_id="124"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT" acdb_id="101"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK" acdb_id="102"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED" acdb_id="150"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED_VBAT" acdb_id="150"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_1" acdb_id="151"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_2" acdb_id="152"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_1" acdb_id="14"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_2" acdb_id="14"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_1" acdb_id="10"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_2" acdb_id="10"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET" acdb_id="45"/>
<device name="SND_DEVICE_IN_UNPROCESSED_MIC" acdb_id="143"/>
<device name="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC" acdb_id="144"/>
<device name="SND_DEVICE_IN_UNPROCESSED_THREE_MIC" acdb_id="145"/>
<device name="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC" acdb_id="146"/>
<device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" acdb_id="147"/>
<device name="SND_DEVICE_IN_HANDSET_GENERIC_QMIC" acdb_id="157"/>
</acdb_ids>
<backend_names>
<!-- Samsung Hardware Interface Table -->
<!-- Receiver - "QUIN_MI2S_RX" -->
<!-- Headset - "RX_CDC_DMA_RX_0" -->
<!-- Headset Native DSD - "NA" -->
<!-- Speaker - "QUIN_MI2S_RX"-->
<!-- BT SCO - "SLIMBUS_7_RX" -->
<!-- BT A2DP - "SLIMBUS_7_RX" -->
<!-- USB - "USB_AUDIO_RX" -->
<!-- DisplayPort - "DISPLAY_PORT" -->
<!-- Main MIC - "TX_CDC_DMA_TX_3" -->
<!-- Sub MIC - "TX_CDC_DMA_TX_3" -->
<!-- 3rd MIC - "NA" -->
<!-- 4th MIC - "NA" -->
<!-- Headset MIC - "TX_CDC_DMA_TX_3" -->
<!-- BT SCO - "SLIMBUS_7_TX" -->
<!-- USB - "USB_AUDIO_TX" -->
<!-- Speaker feedback - "QUIN_TDM_TX_0"-->
<!-- Capture FM - "SLIMBUS_8_TX" -->
<device name="SND_DEVICE_OUT_HANDSET" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_HANDSET" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_HANDSET_EVS" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_HANDSET_HAC" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_HANDSET_HAC_EVS" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_HANDSET_EX" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_HANDSET_EX_EVS" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_HANDSET" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_HANDSET_EVS" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_HANDSET_EX" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_HANDSET_EX_EVS" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_HANDSET_HAC" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_HANDSET_HAC_EVS" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_TTY_HANDSET" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_TTY_HANDSET_EX" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_TTY_HANDSET" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_TTY_HANDSET_EX" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_HANDSET" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_HANDSET_HAC" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_HANDSET" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_HANDSET_HAC" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_LOOPBACK_HANDSET" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_LOOPBACK_HANDSET_DUAL_MIC" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_CALIBRATION" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER2" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_KARAOKE" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_SPEAKER_EVS" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_SPEAKER_EX" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_SPEAKER_EX_EVS" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_DEX_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_CALL_DEX_SPEAKER_EVS" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_SPEAKER_EVS" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_SPEAKER_EX" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_SPEAKER_EX_EVS" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_DEX_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_DEX_SPEAKER_EVS" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_DEX_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_TV_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_DEX_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_LOOPBACK_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_LOOPBACK_SPEAKER2" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_FM_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOIP_GAMING_SPEAKER" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_VBAT" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_CALL_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_CALL_HEADSET_EVS" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_HEADSET_EVS" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_CALL_TTY_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_CALL_TTY_FULL" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_TTY_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_TTY_FULL" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_LOOPBACK_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_LOOPBACK_HEADSET_DUAL_MIC" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_FM_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADSET_KARAOKE" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES_KARAOKE" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES_DSD" backend="headphones-dsd" interface=""/>
<device name="SND_DEVICE_OUT_BT_HEADSET" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_HEADSET_NREC" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_CALL_BT_HEADSET" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_CALL_BT_HEADSET_EVS" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_CALL_BT_HEADSET_NREC" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_CALL_BT_HEADSET_NREC_EVS" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_BT_HEADSET" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_BT_HEADSET_EVS" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_BT_HEADSET_NREC" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_BT_HEADSET_NREC_EVS" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_BT_HEADSET" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_BT_HEADSET_NREC" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_BT_HEADSET" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_BT_HEADSET_NREC" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_REALTIMELOOPBACK_BT" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_HEADSET_16K" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_HEADSET_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_CALL_BT_HEADSET_16K" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_CALL_BT_HEADSET_16K_EVS" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_CALL_BT_HEADSET_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_CALL_BT_HEADSET_NREC_16K_EVS" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_BT_HEADSET_16K" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_BT_HEADSET_16K_EVS" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_BT_HEADSET_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_BT_HEADSET_NREC_16K_EVS" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_BT_HEADSET_16K" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_BT_HEADSET_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_BT_HEADSET_16K" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_BT_HEADSET_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_A2DP" backend="bt-a2dp" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_FM_BT_LEGACY" interface=""/>
<device name="SND_DEVICE_OUT_CALL_USB_HEADSET" backend="usb-headset" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_CALL_USB_HEADSET_EVS" backend="usb-headset" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_CALL_TTY_USB_HEADSET" backend="usb-headset" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_USB_HEADSET" backend="usb-headset" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_USB_HEADSET_EVS" backend="usb-headset" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_TTY_USB_HEADSET" backend="usb-headset" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_USB_HEADSET" backend="usb-headset" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_USB_HEADSET" backend="usb-headset" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_LOOPBACK_USB_HEADSET" backend="usb-headset" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_USB_HEADSET_KARAOKE" backend="usb-headset" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_USB_HEADSET" backend="usb-headphones" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_CALL_USB_HEADPHONE" backend="usb-headphones" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_CALL_USB_HEADPHONE_EVS" backend="usb-headphones" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_USB_HEADPHONE" backend="usb-headphones" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_WIFI_CALL_USB_HEADPHONE_EVS" backend="usb-headphones" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_VOIP_COMM_USB_HEADPHONE" backend="usb-headphones" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_VOIP_FMC_USB_HEADPHONE" backend="usb-headphones" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_LOOPBACK_USB_HEADPHONE" backend="usb-headphones" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_FM_USB_HEADPHONES" backend="usb-headphones" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_DISPLAY_PORT" backend="display-port" interface="DISPLAY_PORT"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="QUIN_MI2S_RX-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="QUIN_MI2S_RX-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="QUIN_MI2S_RX-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HDMI" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT" backend="speaker-and-display-port" interface="QUIN_MI2S_RX-and-DISPLAY_PORT"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_PROXY" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_DOCK" backend="speaker" interface="QUIN_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET" backend="speaker-and-usb-headphones" interface="QUIN_MI2S_RX-and-USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP" backend="speaker-and-bt-a2dp" interface="QUIN_MI2S_RX-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_DOCK" interface=""/>
<device name="SND_DEVICE_OUT_HDMI" interface=""/>
<device name="SND_DEVICE_OUT_VOICE_CALL_FORWARD" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HEARING_AID" backend="hearing-aid" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_HEADSET_REMOTEMIC" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_USB_REMOTEMIC" backend="usb-headphones" interface="USB_AUDIO_RX"/>
<device name="SND_DEVICE_OUT_BT_REMOTEMIC" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_WB_REMOTEMIC" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_IN_REC_MAIN_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_REC_STEREO_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_REC_NS_MIC_INTERVIEW" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VR_MAIN_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VR_LOWPOWER_MAIN_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_BARGEIN1_MAIN_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_BARGEIN2_MAIN_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SVOICE_NS_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SDRIVING_NS_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_HANDSET_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_HANDSET_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_COMM_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_FMC_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_REC_STEREO_MIC_FOLDERCLOSE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_LOOPBACK_MAIN_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_ECHO_MAIN_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_ECHO_STEREO_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CAMCORDER_STEREO_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_REC_SUB_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_REC_SUB_MIC_KARAOKE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VR_SUB_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VR_LOWPOWER_SUB_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_BARGEIN1_SUB_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_BARGEIN2_SUB_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_SPEAKER_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_DEX_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_DEX_SPEAKER_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_SPEAKER_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_DEX_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_DEX_SPEAKER_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_COMM_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_COMM_TV_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_COMM_DEX_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_FMC_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_FMC_DEX_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_GAMING_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_REC_SUB_MIC_FOLDERCLOSE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_LOOPBACK_SUB_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC_KARAOKE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CAMCORDER_SUB_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_REC_3RD_MIC" interface=""/>
<device name="SND_DEVICE_IN_REC_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VR_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_BARGEIN1_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_BARGEIN1_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_BARGEIN2_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_BARGEIN2_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_HEADPHONE_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_HEADSET_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_USB_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_USB_HEADPHONE_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_HEADPHONE_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_HEADSET_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_USB_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_USB_HEADPHONE_MIC_EVS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_TTY_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_TTY_VCO_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CALL_TTY_FULL_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_TTY_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_TTY_VCO_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_WIFI_CALL_TTY_FULL_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_COMM_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_COMM_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_COMM_USB_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_FMC_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_FMC_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOIP_FMC_USB_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_LOOPBACK_HEADPHONE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_LOOPBACK_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HEADSET_MIC_KARAOKE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HEADPHONE_MIC_KARAOKE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_REC_BT_MIC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_REC_BT_MIC_NREC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VR_BT_MIC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VR_BT_MIC_NREC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_CALL_BT_MIC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_CALL_BT_MIC_EVS" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_CALL_BT_MIC_NREC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_CALL_BT_MIC_NREC_EVS" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_BT_MIC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_BT_MIC_EVS" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_BT_MIC_NREC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_BT_MIC_NREC_EVS" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VOIP_COMM_BT_MIC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VOIP_COMM_BT_MIC_NREC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VOIP_FMC_BT_MIC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VOIP_FMC_BT_MIC_NREC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_REALTIMELOOPBACK_BT_MIC" backend="bt-sco" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_REC_BT_MIC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_REC_BT_MIC_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VR_BT_MIC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VR_BT_MIC_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_CALL_BT_MIC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_CALL_BT_MIC_16K_EVS" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_CALL_BT_MIC_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_CALL_BT_MIC_NREC_16K_EVS" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_BT_MIC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_BT_MIC_16K_EVS" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_BT_MIC_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_BT_MIC_NREC_16K_EVS" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VOIP_COMM_BT_MIC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VOIP_COMM_BT_MIC_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VOIP_FMC_BT_MIC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_VOIP_FMC_BT_MIC_NREC_16K" backend="bt-sco-wb" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_REC_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_VR_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_BARGEIN1_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_BARGEIN2_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_CALL_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_CALL_USB_HEADSET_MIC_EVS" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_CALL_TTY_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_CALL_TTY_USB_VCO_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_CALL_TTY_USB_FULL_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_USB_HEADSET_MIC_EVS" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_TTY_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_TTY_USB_VCO_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_WIFI_CALL_TTY_USB_FULL_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_VOIP_COMM_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_VOIP_FMC_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_LOOPBACK_USB_HEADSET_MIC" backend="usb-headset-mic" interface="USB_AUDIO_TX"/>
<device name="SND_DEVICE_IN_VOICE_CALL_FORWARD_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_HEARING_AID" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_LOOPBACK_DUAL_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_FM_INPUT" interface="SLIMBUS_8_TX"/>
<device name="SND_DEVICE_IN_CAPTURE_FM" backend="capture-fm" interface="SLIMBUS_8_TX"/>
<device name="SND_DEVICE_IN_VOICE_WAKEUP_MIC" interface=""/>
<device name="SND_DEVICE_IN_BABYCRY_MIC" interface=""/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK" interface="QUIN_MI2S_TX"/>
<device name="SND_DEVICE_IN_CAMCORDER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HEADSET_MIC_REMOTEMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_USB_MIC_REMOTEMIC" backend="usb-headset-mic" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_BT_MIC_REMOTEMIC" backend="bt-sco" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_BT_WB_MIC_REMOTEMIC" backend="bt-sco-wb" interface="TX_CDC_DMA_TX_3"/>
</backend_names>
<!-- below values are for ref purpose to OEM, doesn't contain actual hardware info on MTP -->
<microphone_characteristics>
<microphone valid_mask="31" 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 valid_mask="31" 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 valid_mask="31" 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>
<snd_devices>
<input_snd_device>
<input_snd_device_mic_mapping>
<snd_dev in_snd_device="SND_DEVICE_IN_CAMCORDER_MIC">
<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"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_DMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_DMIC_TMUS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_DMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC">
<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"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_THREE_MIC">
<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"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_STEREO">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_STEREO">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<!-- Add for Samsung -->
<snd_dev in_snd_device="SND_DEVICE_IN_REC_MAIN_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_REC_SUB_MIC">
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VR_MAIN_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VR_SUB_MIC">
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_CAMCORDER_SUB_MIC">
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
</input_snd_device_mic_mapping>
</input_snd_device>
</snd_devices>
</audio_platform_info>

@ -0,0 +1,401 @@
<?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. -->
<audio_platform_info>
<bit_width_configs>
<device name="SND_DEVICE_OUT_SPEAKER" bit_width="24"/>
</bit_width_configs>
<interface_names>
<device name="AUDIO_DEVICE_IN_BUILTIN_MIC" interface="TX_CDC_DMA_TX_3" codec_type="internal"/>
<device name="AUDIO_DEVICE_IN_BACK_MIC" interface="TX_CDC_DMA_TX_3" codec_type="internal"/>
</interface_names>
<pcm_ids>
<usecase name="USECASE_AUDIO_PLAYBACK_LOW_LATENCY" type="out" id="9"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD" type="out" id="7"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD2" type="out" id="11"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD3" type="out" id="12"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD4" type="out" id="24"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD5" type="out" id="25"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD6" type="out" id="26"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD7" type="out" id="27"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD8" type="out" id="28"/>
<usecase name="USECASE_VOICEMMODE1_CALL" type="in" id="2"/>
<usecase name="USECASE_VOICEMMODE1_CALL" type="out" id="2"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="15"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="15"/>
<usecase name="USECASE_VOWLAN_CALL" type="in" id="-1"/>
<usecase name="USECASE_VOWLAN_CALL" type="out" id="-1"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="out" id="30"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="in" id="38"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_RX" type="out" id="30"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="33"/>
<usecase name="USECASE_AUDIO_PLAYBACK_AFE_PROXY" type="out" id="5"/>
<usecase name="USECASE_AUDIO_RECORD_AFE_PROXY" type="in" id="6"/>
<usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY" type="in" id="13" />
<usecase name="USECASE_AUDIO_PLAYBACK_ULL" type="out" id="13" />
<usecase name="USECASE_AUDIO_PLAYBACK_SILENCE" type="out" id="23" />
<usecase name="USECASE_AUDIO_PLAYBACK_VOIP" type="out" id="12" />
<usecase name="USECASE_AUDIO_RECORD_VOIP" type="in" id="12" />
<usecase name="USECASE_AUDIO_HFP_SCO" type="in" id="12" />
<usecase name="USECASE_AUDIO_HFP_SCO_WB" type="in" id="12" />
<usecase name="USECASE_AUDIO_PLAYBACK_MMAP" type="out" id="29" />
<usecase name="USECASE_AUDIO_RECORD_MMAP" type="in" id="29" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="36" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="36" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
<usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_UPLINK_AND_DOWNLINK" type="in" id="23" />
</pcm_ids>
<config_params>
<!-- In the below value string, the value indicates default mono -->
<!-- speaker. It can be set to either left or right -->
<param key="mono_speaker" value="left"/>
<param key="spkr_2_tz_name" value="wsatz.13"/>
<param key="true_32_bit" value="true"/>
<param key="hifi_filter" value="false"/>
<param key="native_audio_mode" value="multiple_mix_dsp"/>
<param key="hfp_pcm_dev_id" value="39"/>
<param key="input_mic_max_count" value="2"/>
</config_params>
<acdb_ids>
<device name="SND_DEVICE_OUT_SPEAKER" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" acdb_id="124"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" acdb_id="101"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT" acdb_id="124"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT" acdb_id="101"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK" acdb_id="102"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED" acdb_id="150"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED_VBAT" acdb_id="150"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_1" acdb_id="151"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_2" acdb_id="152"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_1" acdb_id="14"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_2" acdb_id="14"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_1" acdb_id="10"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_2" acdb_id="10"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET" acdb_id="45"/>
<device name="SND_DEVICE_IN_UNPROCESSED_MIC" acdb_id="143"/>
<device name="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC" acdb_id="144"/>
<device name="SND_DEVICE_IN_UNPROCESSED_THREE_MIC" acdb_id="145"/>
<device name="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC" acdb_id="146"/>
<device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" acdb_id="147"/>
<device name="SND_DEVICE_IN_HANDSET_GENERIC_QMIC" acdb_id="157"/>
</acdb_ids>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES_HIFI_FILTER" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES_44_1" backend="headphones-44.1" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_BT_SCO_WB" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_SCO" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_A2DP" backend="bt-a2dp" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_LINE" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_ANC_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_LINE" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_ANC_HEADSET" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HEADSET" backend="headset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_ANC_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_LINE" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADSET" backend="headset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADSET" backend="headset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HANDSET" backend="handset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_1" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_2" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_1" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_2" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET" backend="handset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" backend="handset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_IN_HANDSET_GENERIC_QMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_STEREO" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HDMI" interface="WSA_CDC_DMA_RX_0-and-HDMI"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT" interface="WSA_CDC_DMA_RX_0-and-DISPLAY_PORT"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_ANC_FB_HEADSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_ANC_FB_HEADSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_ANC_HANDSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED_VBAT" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_WSA" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_WSA" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_WSA" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_IN_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_MIC_EXTERNAL" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_MIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_MIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_MIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC_STEREO" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_MIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_HEADSET_MIC_FLUENCE" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_TTY_FULL_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_TTY_HCO_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_REC_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_HEADSET_MIC_AEC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HDMI_MIC" interface="HDMI"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC_NREC" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC_WB" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC_WB_NREC" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_CAMCORDER_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_QMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_TTY_FULL_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_TTY_VCO_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_TTY_HCO_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_MIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_DMIC_STEREO" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_AANC_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_QUAD_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_STEREO_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_STEREO_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK" interface="WSA_CDC_DMA_TX_0"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_1" interface="WSA_CDC_DMA_TX_0"/>
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_2" interface="WSA_CDC_DMA_TX_0"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_FLUENCE_DMIC_AANC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_QMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_QMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_QMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_THREE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_FLUENCE_PRO" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_TMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_THREE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_HEADPHONES" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_ANC_HEADSET" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_SWB" backend="speaker-and-bt-sco-swb" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
</backend_names>
<!-- below values are for ref purpose to OEM, doesn't contain actual hardware info on MTP -->
<microphone_characteristics>
<microphone valid_mask="31" 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 valid_mask="31" 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 valid_mask="31" 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>
<snd_devices>
<input_snd_device>
<input_snd_device_mic_mapping>
<snd_dev in_snd_device="SND_DEVICE_IN_CAMCORDER_MIC">
<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"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_DMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_DMIC_TMUS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_DMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_NS">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_MIC">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC">
<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"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_THREE_MIC">
<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"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_STEREO">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
<snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_STEREO">
<mic_info mic_device_id="builtin_mic_1"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_2"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
<mic_info mic_device_id="builtin_mic_3"
channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
</snd_dev>
</input_snd_device_mic_mapping>
</input_snd_device>
</snd_devices>
</audio_platform_info>

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
<globalConfiguration speaker_drc_enabled="true"/>
<modules>
<module name="primary" halVersion="3.0">
<attachedDevices>
<item>Earpiece</item>
<item>Speaker</item>
<item>Built-In Mic</item>
<item>Built-In Back Mic</item>
<item>Voice Call Mic</item>
</attachedDevices>
<defaultOutputDevice>Speaker</defaultOutputDevice>
<mixPorts>
<mixPort name="primary-out" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="fast" role="source" flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="primary-in" role="sink">
<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,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</mixPort>
</mixPorts>
<devicePorts>
<!-- Output devices declaration, i.e. Sink DEVICE PORT -->
<devicePort tagName="Earpiece" role="sink" type="AUDIO_DEVICE_OUT_EARPIECE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
<devicePort tagName="Speaker" role="sink" type="AUDIO_DEVICE_OUT_SPEAKER">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="Wired Headset" role="sink" type="AUDIO_DEVICE_OUT_WIRED_HEADSET">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="Wired Headphone" role="sink" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="Bt Sco All" role="sink" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="Aux Device Out" role="sink" type="AUDIO_DEVICE_OUT_AUX_DIGITAL">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100,48000,64000,88200,96000,128000,176400,192000"
channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_2POINT1,AUDIO_CHANNEL_OUT_QUAD,AUDIO_CHANNEL_OUT_PENTA,AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
</devicePort>
<!-- Input devices declaration, i.e. source DEVICE PORT -->
<devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</devicePort>
<devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</devicePort>
<devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</devicePort>
<devicePort tagName="Bt Sco Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</devicePort>
<devicePort tagName="Aux Device In" type="AUDIO_DEVICE_IN_AUX_DIGITAL" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</devicePort>
<devicePort tagName="Voice Call Mic" type="AUDIO_DEVICE_IN_VOICE_CALL" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</devicePort>
<devicePort tagName="FM Mic" type="AUDIO_DEVICE_IN_FM_TUNER" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</devicePort>
</devicePorts>
<!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<route type="mix" sink="Earpiece"
sources="primary-out,fast"/>
<route type="mix" sink="Speaker"
sources="primary-out,fast"/>
<route type="mix" sink="Wired Headset"
sources="primary-out,fast"/>
<route type="mix" sink="Wired Headphone"
sources="primary-out,fast"/>
<route type="mix" sink="Bt Sco All"
sources="primary-out,fast"/>
<route type="mix" sink="primary-in"
sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,Bt Sco Headset Mic,Aux Device In,Voice Call Mic,FM Mic"/>
</routes>
</module>
<!-- A2dp Audio HAL -->
<xi:include href="a2dp_audio_policy_configuration.xml"/>
<!-- 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>

@ -0,0 +1,291 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) 2016-2019, The Linux Foundation. All rights reserved
Not a Contribution.
-->
<!-- Copyright (C) 2015 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
<!-- version section contains a “version” tag in the form “major.minor” e.g version=”1.0” -->
<!-- Global configuration Decalaration -->
<globalConfiguration speaker_drc_enabled="false"/>
<!-- Modules section:
There is one section per audio HW module present on the platform.
Each module section will contains two mandatory tags for audio HAL “halVersion” and “name”.
The module names are the same as in current .conf file:
“primary”, “A2DP”, “remote_submix”, “USB”
Each module will contain the following sections:
“devicePorts”: a list of device descriptors for all input and output devices accessible via this
module.
This contains both permanently attached devices and removable devices.
“mixPorts”: listing all output and input streams exposed by the audio HAL
“routes”: list of possible connections between input and output devices or between stream and
devices.
"route": is defined by an attribute:
-"type": <mux|mix> means all sources are mutual exclusive (mux) or can be mixed (mix)
-"sink": the sink involved in this route
-"sources": all the sources than can be connected to the sink via vis route
“attachedDevices”: permanently attached devices.
The attachedDevices section is a list of devices names. The names correspond to device names
defined in <devicePorts> section.
“defaultOutputDevice”: device to be used by default when no policy rule applies
-->
<modules>
<!-- Primary Audio HAL -->
<module name="primary" halVersion="2.0">
<attachedDevices>
<item>Earpiece</item>
<item>Speaker</item>
<item>Telephony Tx</item>
<item>Built-In Mic</item>
<item>Built-In Back Mic</item>
<item>Built-In 2 Mic</item>
<item>Telephony Rx</item>
</attachedDevices>
<defaultOutputDevice>Speaker</defaultOutputDevice>
<mixPorts>
<mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY">
<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_8_24_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="fast" role="source" flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_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="hifi_playback" role="source" />
<mixPort name="direct_pcm" role="source"
flags="AUDIO_OUTPUT_FLAG_DIRECT">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000,176400,192000,352800,384000"
channelMasks="AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
<profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000,176400,192000,352800,384000"
channelMasks="AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000,176400,192000,352800,384000"
channelMasks="AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
<profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000,176400,192000,352800,384000"
channelMasks="AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
</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="11025,16000,22050,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_2POINT1,AUDIO_CHANNEL_OUT_QUAD,AUDIO_CHANNEL_OUT_PENTA,AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
<profile name="" format="AUDIO_FORMAT_AAC_LC"
samplingRates="11025,16000,22050,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_2POINT1,AUDIO_CHANNEL_OUT_QUAD,AUDIO_CHANNEL_OUT_PENTA,AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
<profile name="" format="AUDIO_FORMAT_AAC_HE_V1"
samplingRates="11025,16000,22050,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_2POINT1,AUDIO_CHANNEL_OUT_QUAD,AUDIO_CHANNEL_OUT_PENTA,AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
<profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
samplingRates="11025,16000,22050,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_2POINT1,AUDIO_CHANNEL_OUT_QUAD,AUDIO_CHANNEL_OUT_PENTA,AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
<profile name="" format="AUDIO_FORMAT_FLAC"
samplingRates="11025,16000,22050,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_2POINT1,AUDIO_CHANNEL_OUT_QUAD,AUDIO_CHANNEL_OUT_PENTA,AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
</mixPort>
<mixPort name="voice_tx" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="primary input" role="sink">
<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,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_IN_VOICE_UPLINK,AUDIO_CHANNEL_IN_VOICE_DNLINK"/>
</mixPort>
<mixPort name="mmap_no_irq_in" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ">
<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,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3"/>
</mixPort>
<mixPort name="hifi_input" role="sink" />
</mixPorts>
<devicePorts>
<!-- Output devices declaration, i.e. Sink DEVICE PORT -->
<devicePort tagName="Earpiece" type="AUDIO_DEVICE_OUT_EARPIECE" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
<devicePort tagName="Speaker" role="sink" type="AUDIO_DEVICE_OUT_SPEAKER" address="">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="Wired Headset" type="AUDIO_DEVICE_OUT_WIRED_HEADSET" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="Wired Headphones" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="HDMI" type="AUDIO_DEVICE_OUT_AUX_DIGITAL" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100,48000,64000,88200,96000,128000,176400,192000"
channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_2POINT1,AUDIO_CHANNEL_OUT_QUAD,AUDIO_CHANNEL_OUT_PENTA,AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1"/>
</devicePort>
<devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink"/>
<devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink"/>
<!-- Input devices declaration, i.e. Source DEVICE PORT -->
<devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_IN_VOICE_UPLINK,AUDIO_CHANNEL_IN_VOICE_DNLINK"/>
</devicePort>
<devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_IN_VOICE_UPLINK,AUDIO_CHANNEL_IN_VOICE_DNLINK"/>
</devicePort>
<devicePort tagName="Built-In 2 Mic" type="AUDIO_DEVICE_IN_2MIC" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_IN_VOICE_UPLINK,AUDIO_CHANNEL_IN_VOICE_DNLINK"/>
</devicePort>
<devicePort tagName="FM Tuner" type="AUDIO_DEVICE_IN_FM_TUNER" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
</devicePort>
<devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_IN_VOICE_UPLINK,AUDIO_CHANNEL_IN_VOICE_DNLINK"/>
</devicePort>
<devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_IN_VOICE_UPLINK,AUDIO_CHANNEL_IN_VOICE_DNLINK"/>
</devicePort>
<devicePort tagName="Aux Device In" type="AUDIO_DEVICE_IN_AUX_DIGITAL" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_IN_VOICE_UPLINK,AUDIO_CHANNEL_IN_VOICE_DNLINK"/>
</devicePort>
<devicePort tagName="Telephony Rx" type="AUDIO_DEVICE_IN_TELEPHONY_RX" role="source">
<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,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_IN_VOICE_UPLINK,AUDIO_CHANNEL_IN_VOICE_DNLINK"/>
</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>
</devicePorts>
<!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<route type="mix" sink="Earpiece"
sources="primary output,deep_buffer,fast,compressed_offload"/>
<route type="mix" sink="Speaker"
sources="primary output,deep_buffer,fast,compressed_offload,mmap_no_irq_out"/>
<route type="mix" sink="Wired Headset"
sources="primary output,deep_buffer,fast,compressed_offload,mmap_no_irq_out"/>
<route type="mix" sink="Wired Headphones"
sources="primary output,deep_buffer,fast,compressed_offload,mmap_no_irq_out"/>
<route type="mix" sink="HDMI"
sources="primary output,deep_buffer,fast,direct_pcm,compressed_offload"/>
<route type="mix" sink="BT SCO"
sources="primary output,deep_buffer,fast"/>
<route type="mix" sink="BT SCO Headset"
sources="primary output,deep_buffer,fast"/>
<route type="mix" sink="BT SCO Car Kit"
sources="primary output,deep_buffer,fast"/>
<route type="mix" sink="USB Device Out"
sources="primary output,deep_buffer,fast,direct_pcm,compressed_offload,mmap_no_irq_out,hifi_playback"/>
<route type="mix" sink="USB Headset Out"
sources="primary output,deep_buffer,fast,direct_pcm,compressed_offload,mmap_no_irq_out,hifi_playback"/>
<route type="mix" sink="Telephony Tx"
sources="voice_tx"/>
<route type="mix" sink="primary input"
sources="Built-In Mic,Built-In Back Mic,Built-In 2 Mic,Wired Headset Mic,BT SCO Headset Mic,FM Tuner,Aux Device In,USB Device In,USB Headset In,Telephony Rx"/>
<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="BT A2DP Out"
sources="primary output,fast,deep_buffer,compressed_offload"/>
<route type="mix" sink="BT A2DP Headphones"
sources="primary output,fast,deep_buffer,compressed_offload"/>
<route type="mix" sink="BT A2DP Speaker"
sources="primary output,fast,deep_buffer,compressed_offload"/>
<route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
</routes>
</module>
<!-- A2DP Audio HAL -->
<xi:include href="a2dp_audio_policy_configuration.xml"/>
<!-- Usb Audio HAL -->
<xi:include href="usb_audio_policy_configuration.xml"/>
<!-- Remote Submix Audio HAL -->
<xi:include href="/vendor/etc/r_submix_audio_policy_configuration.xml"/>
<!-- Hearing aid Audio HAL -->
<xi:include href="hearing_aid_audio_policy_configuration.xml"/>
<!-- hidden sound Audio HAL -->
<xi:include href="playback_record_audio_policy_configuration.xml"/>
</modules>
<!-- End of Modules section -->
<!-- Volume section -->
<!-- End of Volume section -->
</audioPolicyConfiguration>

@ -0,0 +1,205 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (C) 2015 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Volume section defines a volume curve for a given use case and device category.
It contains a list of points of this curve expressing the attenuation in Millibels for a given
volume index from 0 to 100.
<volume stream=”AUDIO_STREAM_MUSIC” deviceCategory=””>
<point>0,-9600</point>
<point>100,0</point>
</volume>
-->
<volumes>
<volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_HEADSET">
<point>0,-4200</point>
<point>33,-2800</point>
<point>66,-1400</point>
<point>100,0</point>
</volume>
<volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_SPEAKER">
<point>0,-2400</point>
<point>33,-1600</point>
<point>66,-800</point>
<point>100,0</point>
</volume>
<volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_EARPIECE">
<point>0,-2400</point>
<point>33,-1600</point>
<point>66,-800</point>
<point>100,0</point>
</volume>
<volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="DEFAULT_NON_MUTABLE_HEARING_AID_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_SYSTEM" deviceCategory="DEVICE_CATEGORY_HEADSET">
<point>1,-3000</point>
<point>33,-2600</point>
<point>66,-2200</point>
<point>100,-1800</point>
</volume>
<volume stream="AUDIO_STREAM_SYSTEM" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="DEFAULT_SYSTEM_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_SYSTEM" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_SYSTEM_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_SYSTEM" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_DEVICE_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_SYSTEM" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="DEFAULT_DEVICE_CATEGORY_HEADSET_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_SPEAKER">
<point>1,-2970</point>
<point>33,-2010</point>
<point>66,-1020</point>
<point>100,0</point>
</volume>
<volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_DEVICE_CATEGORY_EARPIECE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_DEVICE_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="DEFAULT_DEVICE_CATEGORY_SPEAKER_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="DEFAULT_NON_MUTABLE_HEADSET_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_SPEAKER">
<point>0,-2970</point>
<point>33,-2010</point>
<point>66,-1020</point>
<point>100,0</point>
</volume>
<volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_NON_MUTABLE_EARPIECE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_NON_MUTABLE_EXT_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="DEFAULT_NON_MUTABLE_HEARING_AID_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_NOTIFICATION" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="DEFAULT_DEVICE_CATEGORY_HEADSET_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_NOTIFICATION" deviceCategory="DEVICE_CATEGORY_SPEAKER">
<point>1,-2970</point>
<point>33,-2010</point>
<point>66,-1020</point>
<point>100,0</point>
</volume>
<volume stream="AUDIO_STREAM_NOTIFICATION" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_DEVICE_CATEGORY_EARPIECE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_NOTIFICATION" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_DEVICE_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_NOTIFICATION" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="DEFAULT_DEVICE_CATEGORY_HEADSET_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_HEADSET">
<point>0,-4200</point>
<point>33,-2800</point>
<point>66,-1400</point>
<point>100,0</point>
</volume>
<volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_SPEAKER">
<point>0,-2400</point>
<point>33,-1600</point>
<point>66,-800</point>
<point>100,0</point>
</volume>
<volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_EARPIECE">
<point>0,-4200</point>
<point>33,-2800</point>
<point>66,-1400</point>
<point>100,0</point>
</volume>
<volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_HEADSET">
<point>1,-3000</point>
<point>33,-2600</point>
<point>66,-2200</point>
<point>100,-1800</point>
</volume>
<volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="DEFAULT_SYSTEM_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_SYSTEM_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_DEVICE_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_DTMF" deviceCategory="DEVICE_CATEGORY_HEADSET">
<point>1,-3000</point>
<point>33,-2600</point>
<point>66,-2200</point>
<point>100,-1800</point>
</volume>
<volume stream="AUDIO_STREAM_DTMF" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="DEFAULT_SYSTEM_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_DTMF" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_SYSTEM_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_DTMF" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_DEVICE_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_DTMF" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_TTS" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="SILENT_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_TTS" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="FULL_SCALE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_TTS" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="SILENT_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_TTS" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="SILENT_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_TTS" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="SILENT_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="DEFAULT_NON_MUTABLE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="DEFAULT_NON_MUTABLE_SPEAKER_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_NON_MUTABLE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_NON_MUTABLE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="DEFAULT_NON_MUTABLE_HEARING_AID_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_REROUTING" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="FULL_SCALE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_REROUTING" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="FULL_SCALE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_REROUTING" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="FULL_SCALE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_REROUTING" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="FULL_SCALE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_REROUTING" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="FULL_SCALE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_PATCH" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="FULL_SCALE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_PATCH" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="FULL_SCALE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_PATCH" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="FULL_SCALE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_PATCH" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="FULL_SCALE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_PATCH" deviceCategory="DEVICE_CATEGORY_HEARING_AID"
ref="FULL_SCALE_VOLUME_CURVE"/>
</volumes>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,190 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright (c) 2016-2018, 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>
<!-- These are the initial mixer settings -->
<ctl name="Headset Playback Volume" value="120" />
<ctl name="Headset Capture Volume" value="93" />
<!-- Play Scenario -->
<path name="usb-headphones-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<path name="speaker-and-usb-headphones-gain">
<ctl name="Headset Playback Volume" value="64" />
</path>
<path name="dual-speaker-and-usb-headphones-gain">
<ctl name="Headset Playback Volume" value="64" />
</path>
<path name="fm-usb-headphones-gain">
<ctl name="Headset Playback Volume" value="103" />
</path>
<path name="remote-usb-headset-gain">
<ctl name="Headset Playback Volume" value="112" />
</path>
<path name="listenback-usb-headphones-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<path name="listenback-usb-headset-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<!-- end of Play Scenario -->
<!-- Recording Scenario -->
<path name="rec-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="84" />
</path>
<path name="rec-usb-headset-stereo-mic-gain">
<ctl name="Headset Capture Volume" value="83" />
</path>
<!-- end of Recording Scenario -->
<!-- recognition Scenario -->
<path name="vr-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="120" />
</path>
<path name="bargein-tts-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="120" />
</path>
<path name="bargein-aec-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="120" />
</path>
<!-- end of recognition Scenario -->
<!-- call Scenario -->
<path name="call-usb-headset-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<path name="call-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="104" />
</path>
<path name="call-usb-headphone-mic-gain">
</path>
<path name="wifi-call-usb-headset-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<path name="wifi-call-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="104" />
</path>
<path name="wifi-call-headphone-mic-gain">
</path>
<!-- end of call Scenario -->
<!-- TTY Scenario -->
<path name="call-tty-handset-gain">
</path>
<path name="call-tty-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="120" />
</path>
<path name="call-tty-usb-headset-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<path name="call-tty-full-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="120" />
</path>
<!-- end of TTY Scenario -->
<!-- VoWIFI TTY Scenario -->
<path name="wifi-call-tty-handset-gain">
</path>
<path name="wifi-call-tty-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="120" />
</path>
<path name="wifi-call-tty-usb-headset-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<path name="wifi-call-tty-full-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="120" />
</path>
<!-- end of TTY Scenario -->
<!-- VoIP Scenario -->
<path name="voip-comm-usb-headset-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<path name="voip-comm-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="120" />
</path>
<path name="voip-comm-usb-headphone-mic-gain">
</path>
<path name="voip-fmc-usb-headset-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<path name="voip-fmc-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="120" />
</path>
<path name="voip-fmc-usb-headphone-mic-gain">
</path>
<!-- end of VoIP Scenario -->
<!-- Factory Scenario -->
<path name="loopback-usb-headset-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<path name="loopback-main-mic-gain">
</path>
<path name="loopback-sub-mic-gain">
</path>
<path name="loopback-dual-mic-gain">
</path>
<path name="loopback-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="120" />
</path>
<!-- end of Factory Scenario -->
<path name="dummy">
<!-- not exsit -->
</path>
</mixer>

@ -0,0 +1,190 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright (c) 2016-2018, 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>
<!-- These are the initial mixer settings -->
<ctl name="Headset Playback Volume" value="108" />
<ctl name="Headset Capture Volume" value="56" />
<!-- Play Scenario -->
<path name="usb-headphones-gain">
<ctl name="Headset Playback Volume" value="106" />
</path>
<path name="speaker-and-usb-headphones-gain">
<ctl name="Headset Playback Volume" value="61" />
</path>
<path name="dual-speaker-and-usb-headphones-gain">
<ctl name="Headset Playback Volume" value="54" />
</path>
<path name="fm-usb-headphones-gain">
<ctl name="Headset Playback Volume" value="107" />
</path>
<path name="remote-usb-headset-gain">
<ctl name="Headset Playback Volume" value="108" />
</path>
<path name="listenback-usb-headphones-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<path name="listenback-usb-headset-gain">
<ctl name="Headset Playback Volume" value="120" />
</path>
<!-- end of Play Scenario -->
<!-- Recording Scenario -->
<path name="rec-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="4" />
</path>
<path name="rec-usb-headset-stereo-mic-gain">
<ctl name="Headset Capture Volume" value="4" />
</path>
<!-- end of Recording Scenario -->
<!-- recognition Scenario -->
<path name="vr-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="62" />
</path>
<path name="bargein-tts-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="62" />
</path>
<path name="bargein-aec-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="62" />
</path>
<!-- end of recognition Scenario -->
<!-- call Scenario -->
<path name="call-usb-headset-gain">
<ctl name="Headset Playback Volume" value="108" />
</path>
<path name="call-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="22" />
</path>
<path name="call-usb-headphone-mic-gain">
</path>
<path name="wifi-call-usb-headset-gain">
<ctl name="Headset Playback Volume" value="108" />
</path>
<path name="wifi-call-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="22" />
</path>
<path name="wifi-call-headphone-mic-gain">
</path>
<!-- end of call Scenario -->
<!-- TTY Scenario -->
<path name="call-tty-handset-gain">
</path>
<path name="call-tty-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="30" />
</path>
<path name="call-tty-usb-headset-gain">
<ctl name="Headset Playback Volume" value="88" />
</path>
<path name="call-tty-full-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="30" />
</path>
<!-- end of TTY Scenario -->
<!-- VoWIFI TTY Scenario -->
<path name="wifi-call-tty-handset-gain">
</path>
<path name="wifi-call-tty-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="30" />
</path>
<path name="wifi-call-tty-usb-headset-gain">
<ctl name="Headset Playback Volume" value="88" />
</path>
<path name="wifi-call-tty-full-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="30" />
</path>
<!-- end of TTY Scenario -->
<!-- VoIP Scenario -->
<path name="voip-comm-usb-headset-gain">
<ctl name="Headset Playback Volume" value="108" />
</path>
<path name="voip-comm-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="62" />
</path>
<path name="voip-comm-usb-headphone-mic-gain">
</path>
<path name="voip-fmc-usb-headset-gain">
<ctl name="Headset Playback Volume" value="108" />
</path>
<path name="voip-fmc-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="62" />
</path>
<path name="voip-fmc-usb-headphone-mic-gain">
</path>
<!-- end of VoIP Scenario -->
<!-- Factory Scenario -->
<path name="loopback-usb-headset-gain">
<ctl name="Headset Playback Volume" value="108" />
</path>
<path name="loopback-main-mic-gain">
</path>
<path name="loopback-sub-mic-gain">
</path>
<path name="loopback-dual-mic-gain">
</path>
<path name="loopback-usb-headset-mic-gain">
<ctl name="Headset Capture Volume" value="62" />
</path>
<!-- end of Factory Scenario -->
<path name="dummy">
<!-- not exsit -->
</path>
</mixer>

@ -0,0 +1,338 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--- Copyright (c) 2014-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, -->
<!--- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
<!--- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!--- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
<mixer>
<!-- These are the initial mixer settings -->
<ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM2 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM3 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM4 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM5 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM6 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM7 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM8 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM1 Port" value="None" />
<ctl name="LSM2 Port" value="None" />
<ctl name="LSM3 Port" value="None" />
<ctl name="LSM4 Port" value="None" />
<ctl name="LSM5 Port" value="None" />
<ctl name="LSM6 Port" value="None" />
<ctl name="LSM7 Port" value="None" />
<ctl name="LSM8 Port" value="None" />
<ctl name="VA_CDC_DMA_TX_0 Channels" value="One" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC2" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC3" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC4" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC5" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC6" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC7" value="0" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
<ctl name="VA DEC2 MUX" value="MSM_DMIC" />
<ctl name="VA DEC3 MUX" value="MSM_DMIC" />
<ctl name="VA DEC4 MUX" value="MSM_DMIC" />
<ctl name="VA DEC5 MUX" value="MSM_DMIC" />
<ctl name="VA DEC6 MUX" value="MSM_DMIC" />
<ctl name="VA DEC7 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="ZERO" />
<ctl name="VA DMIC MUX1" value="ZERO" />
<ctl name="VA DMIC MUX2" value="ZERO" />
<ctl name="VA DMIC MUX3" value="ZERO" />
<ctl name="VA DMIC MUX4" value="ZERO" />
<ctl name="VA DMIC MUX5" value="ZERO" />
<ctl name="VA DMIC MUX6" value="ZERO" />
<ctl name="VA DMIC MUX7" value="ZERO" />
<ctl name="VA SMIC MUX0" value="ZERO" />
<ctl name="VA SMIC MUX1" value="ZERO" />
<ctl name="VA SMIC MUX2" value="ZERO" />
<ctl name="VA SMIC MUX3" value="ZERO" />
<ctl name="VA SMIC MUX4" value="ZERO" />
<ctl name="VA SMIC MUX5" value="ZERO" />
<ctl name="VA SMIC MUX6" value="ZERO" />
<ctl name="VA SMIC MUX7" value="ZERO" />
<ctl name="AUDIO_REF_EC_UL1 MUX" value="None"/>
<ctl name="EC Reference Channels" value="Zero"/>
<ctl name="EC Reference Bit Format" value="0"/>
<ctl name="EC Reference SampleRate" value="0"/>
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2 Volume" value="12" />
<ctl name="ADC1_MIXER Switch" value="1" />
<ctl name="VA_DEC0 MODE" value="ADC_DEFAULT" />
<ctl name="ADC2_BCS Disable" value="0" />
<ctl name="VA_DEC0 Volume" value="84"/>
<ctl name="ADC1 Volume" value="12" />
<path name="listen-voice-wakeup-1">
<ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-2">
<ctl name="LSM2 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-3">
<ctl name="LSM3 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-4">
<ctl name="LSM4 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-5">
<ctl name="LSM5 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-6">
<ctl name="LSM6 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-7">
<ctl name="LSM7 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-8">
<ctl name="LSM8 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-1 preproc">
<path name="listen-voice-wakeup-1" />
</path>
<path name="listen-voice-wakeup-2 preproc">
<path name="listen-voice-wakeup-2" />
</path>
<path name="listen-voice-wakeup-3 preproc">
<path name="listen-voice-wakeup-3" />
</path>
<path name="listen-voice-wakeup-4 preproc">
<path name="listen-voice-wakeup-4" />
</path>
<path name="listen-voice-wakeup-5 preproc">
<path name="listen-voice-wakeup-5" />
</path>
<path name="listen-voice-wakeup-6 preproc">
<path name="listen-voice-wakeup-6" />
</path>
<path name="listen-voice-wakeup-7 preproc">
<path name="listen-voice-wakeup-7" />
</path>
<path name="listen-voice-wakeup-8 preproc">
<path name="listen-voice-wakeup-8" />
</path>
<path name="listen-voice-wakeup-1 port">
<ctl name="LSM1 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-2 port">
<ctl name="LSM2 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-3 port">
<ctl name="LSM3 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-4 port">
<ctl name="LSM4 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-5 port">
<ctl name="LSM5 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-6 port">
<ctl name="LSM6 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-7 port">
<ctl name="LSM7 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-8 port">
<ctl name="LSM8 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-1 preproc port">
<ctl name="LSM1 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="0" />
</path>
<path name="listen-voice-wakeup-2 preproc port">
<ctl name="LSM2 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="0" />
</path>
<path name="listen-voice-wakeup-3 preproc port">
<ctl name="LSM3 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="0" />
</path>
<path name="listen-voice-wakeup-4 preproc port">
<ctl name="LSM4 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="0" />
</path>
<path name="listen-voice-wakeup-5 preproc port">
<ctl name="LSM5 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="0" />
</path>
<path name="listen-voice-wakeup-6 preproc port">
<ctl name="LSM6 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="0" />
</path>
<path name="listen-voice-wakeup-7 preproc port">
<ctl name="LSM7 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="0" />
</path>
<path name="listen-voice-wakeup-8 preproc port">
<ctl name="LSM8 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="0" />
</path>
<path name="listen-ape-handset-mic">
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA DEC0 MUX" value="SWR_MIC" />
<ctl name="VA SMIC MUX0" value="ADC0" />
<ctl name="ADC1_MIXER Switch" value="1" />
<ctl name="VA_DEC0 Volume" value="95"/>
<ctl name="ADC1 Volume" value="10" />
</path>
<path name="listen-ape-handset-mic-preproc">
<path name="listen-ape-handset-mic" />
</path>
<path name="listen-ape-handset-dmic">
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Two" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="DMIC1" />
<ctl name="VA DMIC MUX1" value="DMIC4" />
</path>
<path name="listen-ape-handset-tmic">
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Three" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
<ctl name="VA DEC2 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="DMIC1" />
<ctl name="VA DMIC MUX1" value="DMIC4" />
<ctl name="VA DMIC MUX2" value="DMIC0" />
</path>
<path name="listen-ape-handset-qmic">
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Four" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC3" value="1" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
<ctl name="VA DEC2 MUX" value="MSM_DMIC" />
<ctl name="VA DEC3 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="DMIC0" />
<ctl name="VA DMIC MUX1" value="DMIC2" />
<ctl name="VA DMIC MUX2" value="DMIC3" />
<ctl name="VA DMIC MUX3" value="DMIC1" />
</path>
<path name="listen-ape-headset-mic">
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA DEC0 MUX" value="SWR_MIC" />
<ctl name="VA SMIC MUX0" value="ADC1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
<ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
<ctl name="VA_DEC0 Volume" value="95"/>
<ctl name="ADC2 Volume" value="10" />
</path>
<path name="echo-reference">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="WSA_CDC_DMA_RX_0"/>
<ctl name="EC Reference Channels" value="Two"/>
<ctl name="EC Reference Bit Format" value="S16_LE"/>
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
<path name="echo-reference headset">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="WSA_CDC_DMA_RX_0"/>
<ctl name="EC Reference Channels" value="One"/>
<ctl name="EC Reference Bit Format" value="S16_LE"/>
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
<path name="echo-reference a2dp">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_7_RX"/>
<ctl name="EC Reference Channels" value="Two"/>
<ctl name="EC Reference Bit Format" value="S16_LE"/>
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
</mixer>

@ -0,0 +1,334 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--- Copyright (c) 2014-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, -->
<!--- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
<!--- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!--- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
<mixer>
<!-- These are the initial mixer settings -->
<ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM2 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM3 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM4 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM5 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM6 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM7 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM8 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM1 Port" value="None" />
<ctl name="LSM2 Port" value="None" />
<ctl name="LSM3 Port" value="None" />
<ctl name="LSM4 Port" value="None" />
<ctl name="LSM5 Port" value="None" />
<ctl name="LSM6 Port" value="None" />
<ctl name="LSM7 Port" value="None" />
<ctl name="LSM8 Port" value="None" />
<ctl name="VA_CDC_DMA_TX_0 Channels" value="One" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC2" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC3" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC4" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC5" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC6" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC7" value="0" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
<ctl name="VA DEC2 MUX" value="MSM_DMIC" />
<ctl name="VA DEC3 MUX" value="MSM_DMIC" />
<ctl name="VA DEC4 MUX" value="MSM_DMIC" />
<ctl name="VA DEC5 MUX" value="MSM_DMIC" />
<ctl name="VA DEC6 MUX" value="MSM_DMIC" />
<ctl name="VA DEC7 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="ZERO" />
<ctl name="VA DMIC MUX1" value="ZERO" />
<ctl name="VA DMIC MUX2" value="ZERO" />
<ctl name="VA DMIC MUX3" value="ZERO" />
<ctl name="VA DMIC MUX4" value="ZERO" />
<ctl name="VA DMIC MUX5" value="ZERO" />
<ctl name="VA DMIC MUX6" value="ZERO" />
<ctl name="VA DMIC MUX7" value="ZERO" />
<ctl name="VA SMIC MUX0" value="ZERO" />
<ctl name="VA SMIC MUX1" value="ZERO" />
<ctl name="VA SMIC MUX2" value="ZERO" />
<ctl name="VA SMIC MUX3" value="ZERO" />
<ctl name="VA SMIC MUX4" value="ZERO" />
<ctl name="VA SMIC MUX5" value="ZERO" />
<ctl name="VA SMIC MUX6" value="ZERO" />
<ctl name="VA SMIC MUX7" value="ZERO" />
<ctl name="AUDIO_REF_EC_UL1 MUX" value="None"/>
<ctl name="EC Reference Channels" value="Zero"/>
<ctl name="EC Reference Bit Format" value="0"/>
<ctl name="EC Reference SampleRate" value="0"/>
<ctl name="ADC1_MIXER Switch" value="0" />
<ctl name="ADC2_MIXER Switch" value="0" />
<ctl name="ADC3_MIXER Switch" value="0" />
<ctl name="ADC2 MUX" value="ZERO" />
<ctl name="ADC3 MUX" value="ZERO" />
<ctl name="ADC4 MUX" value="ZERO" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2 Volume" value="12" />
<ctl name="VA_DEC0 MODE" value="ADC_DEFAULT" />
<ctl name="ADC2_BCS Disable" value="0" />
<path name="listen-voice-wakeup-1">
<ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-2">
<ctl name="LSM2 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-3">
<ctl name="LSM3 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-4">
<ctl name="LSM4 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-5">
<ctl name="LSM5 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-6">
<ctl name="LSM6 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-7">
<ctl name="LSM7 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-8">
<ctl name="LSM8 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-1 preproc">
<path name="listen-voice-wakeup-1" />
</path>
<path name="listen-voice-wakeup-2 preproc">
<path name="listen-voice-wakeup-2" />
</path>
<path name="listen-voice-wakeup-3 preproc">
<path name="listen-voice-wakeup-3" />
</path>
<path name="listen-voice-wakeup-4 preproc">
<path name="listen-voice-wakeup-4" />
</path>
<path name="listen-voice-wakeup-5 preproc">
<path name="listen-voice-wakeup-5" />
</path>
<path name="listen-voice-wakeup-6 preproc">
<path name="listen-voice-wakeup-6" />
</path>
<path name="listen-voice-wakeup-7 preproc">
<path name="listen-voice-wakeup-7" />
</path>
<path name="listen-voice-wakeup-8 preproc">
<path name="listen-voice-wakeup-8" />
</path>
<path name="listen-voice-wakeup-1 port">
<ctl name="LSM1 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-2 port">
<ctl name="LSM2 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-3 port">
<ctl name="LSM3 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-4 port">
<ctl name="LSM4 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-5 port">
<ctl name="LSM5 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-6 port">
<ctl name="LSM6 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-7 port">
<ctl name="LSM7 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-8 port">
<ctl name="LSM8 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-1 preproc port">
<ctl name="LSM1 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-2 preproc port">
<ctl name="LSM2 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-3 preproc port">
<ctl name="LSM3 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-4 preproc port">
<ctl name="LSM4 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-5 preproc port">
<ctl name="LSM5 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-6 preproc port">
<ctl name="LSM6 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-7 preproc port">
<ctl name="LSM7 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-voice-wakeup-8 preproc port">
<ctl name="LSM8 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2_BCS Disable" value="1" />
</path>
<path name="listen-ape-handset-mic">
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA DEC0 MUX" value="SWR_MIC" />
<ctl name="VA SMIC MUX0" value="ADC0" />
<ctl name="ADC1_MIXER Switch" value="1" />
</path>
<path name="listen-ape-handset-mic-preproc">
<path name="listen-ape-handset-mic" />
</path>
<path name="listen-ape-handset-dmic">
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Two" />
<ctl name="VA DEC0 MUX" value="SWR_MIC" />
<ctl name="VA SMIC MUX0" value="ADC0" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="ADC1_MIXER Switch" value="1" />
<ctl name="VA DEC1 MUX" value="SWR_MIC" />
<ctl name="VA SMIC MUX1" value="ADC2" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP3" />
</path>
<path name="listen-ape-handset-tmic">
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Three" />
<ctl name="VA DEC0 MUX" value="SWR_MIC" />
<ctl name="VA SMIC MUX0" value="ADC0" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="ADC1_MIXER Switch" value="1" />
<ctl name="VA DEC1 MUX" value="SWR_MIC" />
<ctl name="VA SMIC MUX1" value="ADC1" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP3" />
<ctl name="VA DEC2 MUX" value="SWR_MIC" />
<ctl name="VA SMIC MUX2" value="ADC2" />
<ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="ADC3_MIXER Switch" value="1" />
<ctl name="ADC3 MUX" value="INP4" />
</path>
<path name="listen-ape-handset-qmic">
</path>
<path name="listen-ape-headset-mic">
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA DEC0 MUX" value="SWR_MIC" />
<ctl name="VA SMIC MUX0" value="ADC1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
<ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
</path>
<path name="echo-reference">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="WSA_CDC_DMA_RX_0"/>
<ctl name="EC Reference Channels" value="Two"/>
<ctl name="EC Reference Bit Format" value="S16_LE"/>
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
<path name="echo-reference headset">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="WSA_CDC_DMA_RX_0"/>
<ctl name="EC Reference Channels" value="One"/>
<ctl name="EC Reference Bit Format" value="S16_LE"/>
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
<path name="echo-reference a2dp">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_7_RX"/>
<ctl name="EC Reference Channels" value="Two"/>
<ctl name="EC Reference Bit Format" value="S16_LE"/>
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
<path name="echo-reference line">
<path name="echo-reference headset" />
</path>
</mixer>

@ -0,0 +1,310 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--- Copyright (c) 2019-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, -->
<!--- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
<!--- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!--- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
<mixer>
<!-- These are the initial mixer settings -->
<ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM2 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM3 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM4 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM5 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM6 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM7 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM8 Mixer VA_CDC_DMA_TX_0" value="0" />
<ctl name="LSM1 Port" value="None" />
<ctl name="LSM2 Port" value="None" />
<ctl name="LSM3 Port" value="None" />
<ctl name="LSM4 Port" value="None" />
<ctl name="LSM5 Port" value="None" />
<ctl name="LSM6 Port" value="None" />
<ctl name="LSM7 Port" value="None" />
<ctl name="LSM8 Port" value="None" />
<ctl name="VA_CDC_DMA_TX_0 Channels" value="One" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC2" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC3" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC4" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC5" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC6" value="0" />
<ctl name="VA_AIF1_CAP Mixer DEC7" value="0" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
<ctl name="VA DEC2 MUX" value="MSM_DMIC" />
<ctl name="VA DEC3 MUX" value="MSM_DMIC" />
<ctl name="VA DEC4 MUX" value="MSM_DMIC" />
<ctl name="VA DEC5 MUX" value="MSM_DMIC" />
<ctl name="VA DEC6 MUX" value="MSM_DMIC" />
<ctl name="VA DEC7 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="ZERO" />
<ctl name="VA DMIC MUX1" value="ZERO" />
<ctl name="VA DMIC MUX2" value="ZERO" />
<ctl name="VA DMIC MUX3" value="ZERO" />
<ctl name="VA DMIC MUX4" value="ZERO" />
<ctl name="VA DMIC MUX5" value="ZERO" />
<ctl name="VA DMIC MUX6" value="ZERO" />
<ctl name="VA DMIC MUX7" value="ZERO" />
<ctl name="VA SMIC MUX0" value="ZERO" />
<ctl name="VA SMIC MUX1" value="ZERO" />
<ctl name="VA SMIC MUX2" value="ZERO" />
<ctl name="VA SMIC MUX3" value="ZERO" />
<ctl name="VA SMIC MUX4" value="ZERO" />
<ctl name="VA SMIC MUX5" value="ZERO" />
<ctl name="VA SMIC MUX6" value="ZERO" />
<ctl name="VA SMIC MUX7" value="ZERO" />
<ctl name="AUDIO_REF_EC_UL1 MUX" value="None"/>
<ctl name="EC Reference Channels" value="Zero"/>
<ctl name="EC Reference Bit Format" value="0"/>
<ctl name="EC Reference SampleRate" value="0"/>
<ctl name="ADC2_MIXER Switch" value="0" />
<ctl name="LPI Enable" value="0" />
<ctl name="ADC2 Volume" value="12" />
<path name="listen-voice-wakeup-1">
<ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-2">
<ctl name="LSM2 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-3">
<ctl name="LSM3 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-4">
<ctl name="LSM4 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-5">
<ctl name="LSM5 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-6">
<ctl name="LSM6 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-7">
<ctl name="LSM7 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-8">
<ctl name="LSM8 Mixer VA_CDC_DMA_TX_0" value="1" />
</path>
<path name="listen-voice-wakeup-1 preproc">
<path name="listen-voice-wakeup-1" />
</path>
<path name="listen-voice-wakeup-2 preproc">
<path name="listen-voice-wakeup-2" />
</path>
<path name="listen-voice-wakeup-3 preproc">
<path name="listen-voice-wakeup-3" />
</path>
<path name="listen-voice-wakeup-4 preproc">
<path name="listen-voice-wakeup-4" />
</path>
<path name="listen-voice-wakeup-5 preproc">
<path name="listen-voice-wakeup-5" />
</path>
<path name="listen-voice-wakeup-6 preproc">
<path name="listen-voice-wakeup-6" />
</path>
<path name="listen-voice-wakeup-7 preproc">
<path name="listen-voice-wakeup-7" />
</path>
<path name="listen-voice-wakeup-8 preproc">
<path name="listen-voice-wakeup-8" />
</path>
<path name="listen-voice-wakeup-1 port">
<ctl name="LSM1 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
</path>
<path name="listen-voice-wakeup-2 port">
<ctl name="LSM2 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
</path>
<path name="listen-voice-wakeup-3 port">
<ctl name="LSM3 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
</path>
<path name="listen-voice-wakeup-4 port">
<ctl name="LSM4 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
</path>
<path name="listen-voice-wakeup-5 port">
<ctl name="LSM5 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
</path>
<path name="listen-voice-wakeup-6 port">
<ctl name="LSM6 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
</path>
<path name="listen-voice-wakeup-7 port">
<ctl name="LSM7 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
</path>
<path name="listen-voice-wakeup-8 port">
<ctl name="LSM8 Port" value="VA_CDC_DMA_TX_0" />
<ctl name="LPI Enable" value="1" />
</path>
<path name="listen-voice-wakeup-1 preproc port">
<ctl name="LSM1 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
</path>
<path name="listen-voice-wakeup-2 preproc port">
<ctl name="LSM2 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
</path>
<path name="listen-voice-wakeup-3 preproc port">
<ctl name="LSM3 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
</path>
<path name="listen-voice-wakeup-4 preproc port">
<ctl name="LSM4 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
</path>
<path name="listen-voice-wakeup-5 preproc port">
<ctl name="LSM5 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
</path>
<path name="listen-voice-wakeup-6 preproc port">
<ctl name="LSM6 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
</path>
<path name="listen-voice-wakeup-7 preproc port">
<ctl name="LSM7 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
</path>
<path name="listen-voice-wakeup-8 preproc port">
<ctl name="LSM8 Port" value="ADM_LSM_TX" />
<ctl name="LPI Enable" value="0" />
</path>
<path name="listen-ape-handset-mic">
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="DMIC1" />
</path>
<path name="listen-ape-handset-mic-preproc">
<path name="listen-ape-handset-mic" />
</path>
<path name="listen-ape-handset-dmic">
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Two" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="DMIC1" />
<ctl name="VA DMIC MUX1" value="DMIC0" />
</path>
<path name="listen-ape-handset-tmic">
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Three" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
<ctl name="VA DEC2 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="DMIC1" />
<ctl name="VA DMIC MUX1" value="DMIC0" />
<ctl name="VA DMIC MUX2" value="DMIC3" />
</path>
<path name="listen-ape-handset-qmic">
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Four" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC3" value="1" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
<ctl name="VA DEC2 MUX" value="MSM_DMIC" />
<ctl name="VA DEC3 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="DMIC1" />
<ctl name="VA DMIC MUX1" value="DMIC0" />
<ctl name="VA DMIC MUX2" value="DMIC3" />
<ctl name="VA DMIC MUX3" value="DMIC2" />
</path>
<path name="listen-ape-headset-mic">
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA DEC0 MUX" value="SWR_MIC" />
<ctl name="VA SMIC MUX0" value="ADC2" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
</path>
<path name="echo-reference">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="WSA_CDC_DMA_RX_0"/>
<ctl name="EC Reference Channels" value="Two"/>
<ctl name="EC Reference Bit Format" value="S16_LE"/>
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
<path name="echo-reference headset">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="WSA_CDC_DMA_RX_0"/>
<ctl name="EC Reference Channels" value="One"/>
<ctl name="EC Reference Bit Format" value="S16_LE"/>
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
<path name="echo-reference a2dp">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_7_RX"/>
<ctl name="EC Reference Channels" value="Two"/>
<ctl name="EC Reference Bit Format" value="S16_LE"/>
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
</mixer>

@ -0,0 +1,220 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--- Copyright (c) 2013-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, -->
<!--- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
<!--- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!--- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
<sound_trigger_platform_info>
<param version="0x0105" /> <!-- this must be the first param -->
<!--- Version History: -->
<!--- 0x0101: Legacy version. -->
<!--- 0x0102: Includes acdb_ids param with the gcs_usecase tag. This matches -->
<!--- the gcs_usecase with the acdb device that uses it. -->
<!--- 0x0103: app_type and in_channels added to <lsm usecase> and out_channels -->
<!--- added to <adm_config> -->
<!--- 0x0104: instance id support for both WDSP<CPE> and ADSP lsm usecases -->
<!--- 0x0105: Select <lsm_usecase> based on capture device -->
<common_config>
<param implementer_version="0x0101" />
<param max_ape_sessions="8" />
<param enable_failure_detection="false" />
<param support_device_switch="true" />
<param transit_to_non_lpi_on_battery_charging="false" />
<!-- Below backend params must match with port used in mixer path file -->
<!-- param used to configure backend sample rate, format and channels -->
<param backend_port_name="VA_CDC_DMA_TX_0" />
<!-- Param used to match and obtain device backend index -->
<param backend_dai_name="VA_CDC_DMA_TX_0" />
<!-- Param used to indicate if SVA has dedicated SLIM ports -->
<param dedicated_sva_path="false" />
<param dedicated_headset_path="true" />
<param platform_lpi_enable="true" />
</common_config>
<acdb_ids>
<param DEVICE_HANDSET_MIC_APE="602" />
<param DEVICE_HANDSET_MIC_PP_APE="603" />
<param DEVICE_HANDSET_DMIC_APE="601" />
<param DEVICE_HANDSET_DMIC_LPI_APE="600" />
<param DEVICE_HANDSET_TMIC_APE="607" />
<param DEVICE_HANDSET_TMIC_LPI_APE="606" />
<param DEVICE_HANDSET_QMIC_APE="605" />
<param DEVICE_HANDSET_QMIC_LPI_APE="604" />
<param DEVICE_HEADSET_MIC_APE="608" />
<param DEVICE_HEADSET_MIC_APE_LPI="608" />
</acdb_ids>
<!-- Multiple sound_model_config tags can be listed, each with unique -->
<!-- vendor_uuid. The below tag represents QTI SVA engine sound model -->
<!-- configuration. ISV must use their own unique vendor_uuid. -->
<!-- QTI SVA -->
<sound_model_config>
<param vendor_uuid="a1757552-af10-11e7-985a-a3754010baa2" /> <!-- For Samsung uuid-->
<param execution_type="ADSP" />
<param max_ape_phrases="20" />
<param max_ape_users="10" />
<!-- Profile specific data which the algorithm can support -->
<param sample_rate="16000" />
<param bit_width="16" />
<param out_channels="1"/> <!-- Module output channels -->
<param dam_token_id="1"/>
<!-- Module and param ids with which the algorithm is integrated
in non-graphite firmware (note these must come after gcs params)
Extends flexibility to have different ids based on execution type.
valid execution_type values: "WDSP" "ADSP" -->
<lsm_usecase>
<param capture_device="HANDSET" />
<!-- adm_cfg_profile should match with the one defined under adm_config -->
<!-- Set it to NONE if LSM directly connects to AFE -->
<param adm_cfg_profile="NONE" />
<!-- fluence_type: "FLUENCE_MIC", "FLUENCE_DMIC", "FLUENCE_TMIC" -->
<!-- "FLUENCE_QMIC". Param value is valid when adm_cfg_profile -->
<!-- is FFECNS -->
<param fluence_type="NONE" />
<param execution_mode="ADSP" />
<param app_type="5" /> <!-- app type used in ACDB -->
<param in_channels="1"/> <!-- Module input channels -->
<param in_channels_lpi="1"/>
<param load_sound_model_ids="0x10012C1C, 0x0, 0x00012C14" />
<param unload_sound_model_ids="0x10012C1C, 0x0, 0x00012C15" />
<param confidence_levels_ids="0x10012C1C, 0x0, 0x00012C07" />
<param operation_mode_ids="0x10012C1C, 0x0, 0x00012C02" />
<param polling_enable_ids="0x10012C1C, 0x0, 0x00012C1B" />
</lsm_usecase>
<lsm_usecase>
<param capture_device="HEADSET" />
<param adm_cfg_profile="NONE" />
<param fluence_type="NONE" />
<param execution_mode="ADSP" />
<param app_type="5" /> <!-- app type used in ACDB -->
<param in_channels="1"/> <!-- Module input channels -->
<param load_sound_model_ids="0x10012C1C, 0x0, 0x00012C14" />
<param unload_sound_model_ids="0x10012C1C, 0x0, 0x00012C15" />
<param confidence_levels_ids="0x10012C1C, 0x0, 0x00012C07" />
<param operation_mode_ids="0x10012C1C, 0x0, 0x00012C02" />
<param polling_enable_ids="0x10012C1C, 0x0, 0x00012C1B" />
</lsm_usecase>
<!-- format: "ADPCM_packet" or "PCM_packet" !-->
<!-- transfer_mode: "FTRT" or "RT" -->
<!-- kw_duration is in milli seconds. It is valid only for FTRT
transfer mode -->
<param capture_keyword="PCM_packet, RT, 2000" />
<param client_capture_read_delay="2000" />
</sound_model_config>
<!-- Google Hotword -->
<sound_model_config>
<param vendor_uuid="7038ddc8-30f2-11e6-b0ac-40a8f03d3f15" />
<param execution_type="ADSP" />
<param max_ape_phrases="1" />
<param max_ape_users="1" />
<!-- Profile specific data which the algorithm can support -->
<param sample_rate="16000" />
<param bit_width="16" />
<param out_channels="1"/> <!-- Module output channels -->
<param get_module_version="true" />
<param version_ids="0x18000001, 0x0, 0x18000101" />
<lsm_usecase>
<param capture_device="HANDSET" />
<!-- adm_cfg_profile should match with the one defined under adm_config -->
<!-- Set it to NONE if LSM directly connects to AFE -->
<param adm_cfg_profile="NONE" />
<!-- fluence_type: "FLUENCE_MIC", "FLUENCE_DMIC", "FLUENCE_TMIC" -->
<!-- "FLUENCE_QMIC". Param value is valid when adm_cfg_profile -->
<!-- is FFECNS -->
<param fluence_type="NONE" />
<param execution_mode="ADSP" />
<!-- lpi_mode: "NON_LPI_BARGE_IN", "NON_LPI", "LPI" -->
<!-- NON_LPI_BARGE_IN: Default non-LPI mode type. lsm_usecase -->
<!-- must be present with this mode type to handle barge-in. -->
<!-- NON_LPI: If another lsm_usecase is present with this mode -->
<!-- type, it will be used for non-LPI non-barge-in usecases. -->
<!-- If not present, NON_LPI_BARGE_IN mode type will be used. -->
<!-- LPI: This mode type will be used for LPI usecases. -->
<param lpi_mode="NON_LPI_BARGE_IN" />
<param app_type="3" /> <!-- app type used in ACDB -->
<param in_channels="1"/> <!-- Module input channels -->
<param load_sound_model_ids="0x18000001, 0x0, 0x00012C14" />
<param unload_sound_model_ids="0x18000001, 0x0, 0x00012C15" />
<param custom_config_ids="0x18000001, 0x0, 0x00012C20" />
<param lab_dam_cfg_ids="0x00012C08, 0x0, 0x000102C4" />
</lsm_usecase>
<lsm_usecase>
<param capture_device="HANDSET" />
<!-- adm_cfg_profile should match with the one defined under adm_config -->
<!-- Set it to NONE if LSM directly connects to AFE -->
<param adm_cfg_profile="NONE" />
<!-- fluence_type: "FLUENCE_MIC", "FLUENCE_DMIC", "FLUENCE_TMIC" -->
<!-- "FLUENCE_QMIC". Param value is valid when adm_cfg_profile -->
<!-- is FFECNS -->
<param fluence_type="NONE" />
<param execution_mode="ADSP" />
<!-- lpi_mode: "NON_LPI_BARGE_IN", "NON_LPI", "LPI" -->
<!-- NON_LPI_BARGE_IN: Default non-LPI mode type. lsm_usecase -->
<!-- must be present with this mode type to handle barge-in. -->
<!-- NON_LPI: If another lsm_usecase is present with this mode -->
<!-- type, it will be used for non-LPI non-barge-in usecases. -->
<!-- If not present, NON_LPI_BARGE_IN mode type will be used. -->
<!-- LPI: This mode type will be used for LPI usecases. -->
<param lpi_mode="LPI" />
<param app_type="3" /> <!-- app type used in ACDB -->
<param in_channels="1"/> <!-- Module input channels -->
<param load_sound_model_ids="0x18000001, 0x0, 0x00012C14" />
<param unload_sound_model_ids="0x18000001, 0x0, 0x00012C15" />
<param custom_config_ids="0x18000001, 0x0, 0x00012C20" />
<param lab_dam_cfg_ids="0x00012C08, 0x0, 0x000102C4" />
</lsm_usecase>
<lsm_usecase>
<param capture_device="HEADSET" />
<param adm_cfg_profile="NONE" />
<param fluence_type="NONE" />
<param execution_mode="ADSP" />
<param app_type="3" /> <!-- app type used in ACDB -->
<param in_channels="1"/> <!-- Module input channels -->
<param load_sound_model_ids="0x18000001, 0x0, 0x00012C14" />
<param unload_sound_model_ids="0x18000001, 0x0, 0x00012C15" />
<param custom_config_ids="0x18000001, 0x0, 0x00012C20" />
<param lab_dam_cfg_ids="0x00012C08, 0x0, 0x000102C4" />
</lsm_usecase>
<!-- format: "ADPCM_packet" or "PCM_packet" !-->
<!-- transfer_mode: "FTRT" or "RT" -->
<!-- kw_duration is in milli seconds. It is valid only for FTRT
transfer mode -->
<param capture_keyword="PCM_packet, RT, 2000" />
<param client_capture_read_delay="2000" />
</sound_model_config>
<!-- Multiple adm_config tags can be listed, each with unique profile name. -->
<!-- app_type to match corresponding value from ACDB -->
<adm_config>
<param adm_cfg_profile="DEFAULT" />
<param app_type="69938" />
<param sample_rate="16000" />
<param bit_width="16" />
</adm_config>
</sound_trigger_platform_info>

@ -0,0 +1,94 @@
<!--
Input:
compatibility_matrix.xml
device_compatibility_matrix.xml
device_compatibility_matrix.xml
vendor.samsung.frameworks.codecsolution-matrix.xml
-->
<compatibility-matrix version="2.0" type="device">
<hal format="hidl" optional="false">
<name>android.frameworks.schedulerservice</name>
<version>1.0</version>
<interface>
<name>ISchedulingPolicyService</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="false">
<name>android.frameworks.sensorservice</name>
<version>1.0</version>
<interface>
<name>ISensorManager</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="false">
<name>android.hidl.allocator</name>
<version>1.0</version>
<interface>
<name>IAllocator</name>
<instance>ashmem</instance>
</interface>
</hal>
<hal format="hidl" optional="false">
<name>android.hidl.manager</name>
<version>1.0</version>
<interface>
<name>IServiceManager</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="false">
<name>android.hidl.memory</name>
<version>1.0</version>
<interface>
<name>IMapper</name>
<instance>ashmem</instance>
</interface>
</hal>
<hal format="hidl" optional="false">
<name>android.hidl.token</name>
<version>1.0</version>
<interface>
<name>ITokenManager</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="false">
<name>android.system.wifi.keystore</name>
<version>1.0</version>
<interface>
<name>IKeystore</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.qccsyshal</name>
<version>1.0</version>
<interface>
<name>IQccsyshal</name>
<instance>qccsyshal</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.sigma_miracast</name>
<version>1.0</version>
<interface>
<name>Isigma_miracast</name>
<instance>sigmahal</instance>
</interface>
</hal>
<hal format="aidl" optional="true">
<name>vendor.samsung.frameworks.codecsolution</name>
<interface>
<name>ISehCodecSolution</name>
<instance>default</instance>
</interface>
</hal>
<vendor-ndk>
<version>30</version>
</vendor-ndk>
<system-sdk>
<version>30</version>
</system-sdk>
</compatibility-matrix>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,566 @@
<manifest version="2.0" type="device" target-level="5">
<hal format="hidl">
<name>android.hardware.audio</name>
<transport>hwbinder</transport>
<version>6.0</version>
<interface>
<name>IDevicesFactory</name>
<instance>default</instance>
</interface>
<fqname>@6.0::IDevicesFactory/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.audio.effect</name>
<transport>hwbinder</transport>
<version>6.0</version>
<interface>
<name>IEffectsFactory</name>
<instance>default</instance>
</interface>
<fqname>@6.0::IEffectsFactory/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.biometrics.face</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IBiometricsFace</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IBiometricsFace/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.biometrics.fingerprint</name>
<transport>hwbinder</transport>
<version>2.1</version>
<interface>
<name>IBiometricsFingerprint</name>
<instance>default</instance>
</interface>
<fqname>@2.1::IBiometricsFingerprint/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.bluetooth</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IBluetoothHci</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IBluetoothHci/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.camera.provider</name>
<transport>hwbinder</transport>
<version>2.6</version>
<interface>
<name>ICameraProvider</name>
<instance>legacy/0</instance>
</interface>
<fqname>@2.6::ICameraProvider/legacy/0</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.gatekeeper</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IGatekeeper</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IGatekeeper/default</fqname>
</hal>
<hal format="hidl" override="true">
<name>android.hardware.keymaster</name>
<transport>hwbinder</transport>
<version>4.0</version>
<interface>
<name>IKeymasterDevice</name>
<instance>default</instance>
</interface>
<fqname>@4.0::IKeymasterDevice/default</fqname>
</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>
<fqname>@1.0::IOmx/default</fqname>
<fqname>@1.0::IOmxStore/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.memtrack</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IMemtrack</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IMemtrack/default</fqname>
</hal>
<hal format="hidl" override="true">
<name>android.hardware.radio</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>android.hardware.radio</name>
<transport>hwbinder</transport>
<fqname>@1.2::ISap/slot1</fqname>
<fqname>@1.2::ISap/slot2</fqname>
<fqname>@1.5::IRadio/slot1</fqname>
<fqname>@1.5::IRadio/slot2</fqname>
</hal>
<hal format="hidl" override="true">
<name>android.hardware.radio.config</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IRadioConfig</name>
<instance>default</instance>
</interface>
<fqname>@1.1::IRadioConfig/default</fqname>
</hal>
<hal format="hidl" override="true">
<name>android.hardware.radio.deprecated</name>
<transport>hwbinder</transport>
</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>
<fqname>@1.0::IDevice/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.soundtrigger</name>
<transport>hwbinder</transport>
<version>2.2</version>
<interface>
<name>ISoundTriggerHw</name>
<instance>default</instance>
</interface>
<fqname>@2.2::ISoundTriggerHw/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.tetheroffload.config</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IOffloadConfig</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IOffloadConfig/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.tetheroffload.control</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IOffloadControl</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IOffloadControl/default</fqname>
</hal>
<hal format="hidl" override="true">
<name>com.qualcomm.qti.dpm.api</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>com.qualcomm.qti.imscmservice</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>com.qualcomm.qti.uceservice</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl">
<name>vendor.display.color</name>
<transport>hwbinder</transport>
<version>1.3</version>
<interface>
<name>IDisplayColor</name>
<instance>default</instance>
</interface>
<fqname>@1.3::IDisplayColor/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.display.postproc</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IDisplayPostproc</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IDisplayPostproc/default</fqname>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.data.factory</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.audiohalext</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IAudioHalExt</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IAudioHalExt/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.cacert</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IService</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IService/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.capabilityconfigstore</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ICapabilityConfigStore</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ICapabilityConfigStore/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.cryptfshw</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ICryptfsHw</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ICryptfsHw/default</fqname>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.data.connection</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.data.latency</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.dsp</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IDspService</name>
<instance>dspservice</instance>
</interface>
<fqname>@1.0::IDspService/dspservice</fqname>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.embmssl</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.factory</name>
<transport>hwbinder</transport>
<version>1.1</version>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.fm</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IFmHci</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IFmHci/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.iop</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>IIop</name>
<instance>default</instance>
</interface>
<fqname>@2.0::IIop/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.perf</name>
<transport>hwbinder</transport>
<version>2.2</version>
<interface>
<name>IPerf</name>
<instance>default</instance>
</interface>
<fqname>@2.2::IPerf/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.qseecom</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IQSEECom</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IQSEECom/default</fqname>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.radio.am</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.radio.ims</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.radio.internal.deviceinfo</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.radio.lpa</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.radio.qcrilhook</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.radio.qtiradio</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.radio.uim</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.radio.uim_remote_client</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.hardware.radio.uim_remote_server</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.tui_comm</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ITuiComm</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ITuiComm/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.wifi.wifilearner</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IWifiStats</name>
<instance>wifiStats</instance>
</interface>
<fqname>@1.0::IWifiStats/wifiStats</fqname>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.ims.callinfo</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.ims.factory</name>
<transport>hwbinder</transport>
<version>1.0</version>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.imsrtpservice</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.power.pasrmanager</name>
<transport>hwbinder</transport>
<version>1.0</version>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.audio</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ISehDevicesFactory</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ISehDevicesFactory/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.biometrics.face</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>ISehBiometricsFace</name>
<instance>default</instance>
</interface>
<fqname>@2.0::ISehBiometricsFace/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.biometrics.fingerprint</name>
<transport>hwbinder</transport>
<version>3.0</version>
<interface>
<name>ISehBiometricsFingerprint</name>
<instance>default</instance>
</interface>
<fqname>@3.0::ISehBiometricsFingerprint/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.bluetooth</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>ISehBluetooth</name>
<instance>default</instance>
</interface>
<fqname>@2.0::ISehBluetooth/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.bluetooth.a2dp</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ISehBluetoothAudioOffload</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ISehBluetoothAudioOffload/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.camera.provider</name>
<transport>hwbinder</transport>
<version>4.0</version>
<interface>
<name>ISehCameraProvider</name>
<instance>legacy/0</instance>
</interface>
<fqname>@4.0::ISehCameraProvider/legacy/0</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.gnss</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>ISehGnss</name>
<instance>default</instance>
</interface>
<fqname>@2.0::ISehGnss/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.media.converter</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ISehColorConverterStore</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ISehColorConverterStore/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.miscpower</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>ISehMiscPower</name>
<instance>default</instance>
</interface>
<fqname>@2.0::ISehMiscPower/default</fqname>
</hal>
<hal format="hidl" override="true">
<name>vendor.samsung.hardware.radio</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.radio</name>
<transport>hwbinder</transport>
<version>2.1</version>
<interface>
<name>ISehRadio</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
<fqname>@2.1::ISehRadio/slot1</fqname>
<fqname>@2.1::ISehRadio/slot2</fqname>
</hal>
<hal format="hidl" override="true">
<name>vendor.samsung.hardware.radio.bridge</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.radio.bridge</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>ISehBridge</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
<fqname>@2.0::ISehBridge/slot1</fqname>
<fqname>@2.0::ISehBridge/slot2</fqname>
</hal>
<hal format="hidl" override="true">
<name>vendor.samsung.hardware.radio.channel</name>
<transport>hwbinder</transport>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.radio.channel</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>ISehChannel</name>
<instance>epdgd</instance>
<instance>epdgd2</instance>
<instance>imsd</instance>
<instance>imsd2</instance>
</interface>
<fqname>@2.0::ISehChannel/epdgd</fqname>
<fqname>@2.0::ISehChannel/epdgd2</fqname>
<fqname>@2.0::ISehChannel/imsd</fqname>
<fqname>@2.0::ISehChannel/imsd2</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.snap</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>ISehSnap</name>
<instance>default</instance>
</interface>
<fqname>@1.2::ISehSnap/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.sysinput</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>ISehSysInputDev</name>
<instance>default</instance>
</interface>
<fqname>@1.1::ISehSysInputDev/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.samsung.hardware.wifi.supplicant</name>
<transport>hwbinder</transport>
<version>3.0</version>
<interface>
<name>ISehSupplicant</name>
<instance>default</instance>
</interface>
<fqname>@3.0::ISehSupplicant/default</fqname>
</hal>
<sepolicy>
<version>30.0</version>
</sepolicy>
<kernel target-level="5"/>
</manifest>

@ -0,0 +1,388 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2012-2020 The Linux Foundation. All rights reserved.
Not a contribution.
Copyright (C) 2012-2013 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.
-->
<!--
<!DOCTYPE MediaCodecs [
<!ELEMENT Include EMPTY>
<!ATTLIST Include href CDATA #REQUIRED>
<!ELEMENT MediaCodecs (Decoders|Encoders|Include)*>
<!ELEMENT Decoders (MediaCodec|Include)*>
<!ELEMENT Encoders (MediaCodec|Include)*>
<!ELEMENT MediaCodec (Type|Quirk|Include)*>
<!ATTLIST MediaCodec name CDATA #REQUIRED>
<!ATTLIST MediaCodec type CDATA>
<!ELEMENT Type EMPTY>
<!ATTLIST Type name CDATA #REQUIRED>
<!ELEMENT Quirk EMPTY>
<!ATTLIST Quirk name CDATA #REQUIRED>
]>
There's a simple and a complex syntax to declare the availability of a
media codec:
A codec that properly follows the OpenMax spec and therefore doesn't have any
quirks and that only supports a single content type can be declared like so:
<MediaCodec name="OMX.foo.bar" type="something/interesting" />
If a codec has quirks OR supports multiple content types, the following syntax
can be used:
<MediaCodec name="OMX.foo.bar" >
<Type name="something/interesting" />
<Type name="something/else" />
...
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="output-buffers-are-unreadable" />
</MediaCodec>
Only the three quirks included above are recognized at this point:
"requires-allocate-on-input-ports"
must be advertised if the component does not properly support specification
of input buffers using the OMX_UseBuffer(...) API but instead requires
OMX_AllocateBuffer to be used.
"requires-allocate-on-output-ports"
must be advertised if the component does not properly support specification
of output buffers using the OMX_UseBuffer(...) API but instead requires
OMX_AllocateBuffer to be used.
"output-buffers-are-unreadable"
must be advertised if the emitted output buffers of a decoder component
are not readable, i.e. use a custom format even though abusing one of
the official OMX colorspace constants.
Clients of such decoders will not be able to access the decoded data,
naturally making the component much less useful. The only use for
a component with this quirk is to render the output to the screen.
Audio decoders MUST NOT advertise this quirk.
Video decoders that advertise this quirk must be accompanied by a
corresponding color space converter for thumbnail extraction,
matching surfaceflinger support that can render the custom format to
a texture and possibly other code, so just DON'T USE THIS QUIRK.
-->
<!--
SM6150 Non-Secure decoder capabilities
_________________________________________________________
| Codec | W H fps Mbps MB/s |
|_____________|_________________________________________|
| h264 | 4096 2160 24 100 829440 |
| hevc | 4096 2160 24 100 829440 |
| mpeg4-sw | 1920 1088 30 40 244800 |
| vp8 | 3840 2160 30 100 972000 |
| vp9 | 4096 2160 24 100 829440 |
| vc1 | 1920 1088 30 20 244800 |
| h263-sw | 864 480 30 16 48600 |
| mpeg2 | 1920 1088 30 40 244800 |
|_____________|_________________________________________|
SM6150 Secure decoder capabilities
______________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 3840 2160 30 35 972000 |
| vp9 | 3840 2160 30 35 972000 |
| hevc | 3840 2160 30 35 972000 |
| mpeg2 | 1920 1088 30 35 244800 |
|__________|_________________________________________|
SM6150 Non-Secure encoder capabilities (Secure not supported)
______________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 4096 2160 24 100 829440 |
| hevc | 4096 2160 24 100 829440 |
| mpeg4-sw | 1280 720 30 4 108000 |
| vp8 | 3840 2160 30 100 972000 |
| h263-sw | 864 480 30 2 48600 |
|__________|_________________________________________|
-->
<MediaCodecs>
<Settings>
<Setting name="max-video-encoder-input-buffers" value="11" />
</Settings>
<Encoders>
<!-- Video Hardware -->
<MediaCodec name="OMX.qcom.video.encoder.avc" type="video/avc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="96x96" max="4096x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-100000000" />
<Limit name="frame-rate" range="1-240" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-4096x2160" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.vp8" type="video/x-vnd.on2.vp8" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="96x96" max="3840x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-120000000" />
<Limit name="frame-rate" range="1-240" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-3840x2160" value="30" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="96x96" max="4096x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-100000000" />
<Limit name="frame-rate" range="1-240" />
<Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Limit name="performance-point-4096x2160" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
<Feature name="bitrate-modes" value="VBR,CBR" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc.cq" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="512x512" max="512x512" />
<Limit name="frame-rate" range="1-20" />
<Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Limit name="performance-point-4096x2304" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
<Feature name="bitrate-modes" value="CQ" />
</MediaCodec>
<!-- Video Software -->
<MediaCodec name="OMX.qcom.video.encoder.h263sw" type="video/3gpp" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="96x96" max="864x480" />
<Limit name="alignment" value="4x4" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="48600" />
<Limit name="bitrate" range="1-2000000" />
<Limit name="frame-rate" range="1-30" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-864x480" value="30" />
<Limit name="performance-point-720x480" value="30" />
<Limit name="performance-point-720x576" value="25" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.mpeg4sw" type="video/mp4v-es" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="96x96" max="864x480" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="48600" />
<Limit name="bitrate" range="1-8000000" />
<Limit name="frame-rate" range="1-30" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-864x480" value="30" />
<Limit name="performance-point-720x480" value="30" />
<Limit name="performance-point-720x576" value="25" />
</MediaCodec>
</Encoders>
<Decoders>
<!-- Video Hardware -->
<MediaCodec name="OMX.qcom.video.decoder.avc" type="video/avc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="4096x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-100000000" />
<Limit name="frame-rate" range="1-240" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-4096x2160" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.avc.secure" type="video/avc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="3840x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="972000" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="30" />
</MediaCodec>
<!--
<MediaCodec name="OMX.qcom.video.decoder.mpeg2" type="video/mpeg2" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="244800" />
<Limit name="bitrate" range="1-40000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="30" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.mpeg2.secure" type="video/mpeg2" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="244800" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-1920x1080" value="30" />
</MediaCodec>
-->
<MediaCodec name="OMX.qcom.video.decoder.vp8" type="video/x-vnd.on2.vp8" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="3840x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-100000000" />
<Limit name="frame-rate" range="1-240" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.vp9" type="video/x-vnd.on2.vp9" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="4096x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-120000000" />
<Limit name="frame-rate" range="1-240" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="6" />
<Limit name="performance-point-4096x2160" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.vp9.secure" type="video/x-vnd.on2.vp9" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="3840x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="972000" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="30" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="4096x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-100000000" />
<Limit name="frame-rate" range="1-240" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-4096x2160" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.hevc.secure" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="3840x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="972000" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="30" />
</MediaCodec>
<!-- Video Software -->
<MediaCodec name="OMX.qti.video.decoder.h263sw" type="video/3gpp" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="864x480" />
<Limit name="alignment" value="4x4" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="48600" />
<Limit name="bitrate" range="1-16000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-864x480" value="30" />
<Limit name="performance-point-720x480" value="30" />
<Limit name="performance-point-720x576" value="25" />
</MediaCodec>
<MediaCodec name="OMX.qti.video.decoder.mpeg4sw" type="video/mp4v-es">
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="244800" />
<Limit name="bitrate" range="1-40000000" />
<Limit name="frame-rate" range="1-30" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="30" />
</MediaCodec>
<MediaCodec name="OMX.google.opus.decoder" type="audio/opus" update="true" rank="100"/>
</Decoders>
<Include href="media_codecs_google_video.xml" />
<Include href="media_codecs_google_audio.xml" />
<Include href="media_codecs_google_telephony.xml" />
</MediaCodecs>

@ -0,0 +1,241 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (c) 2015-2017, 2019 The Linux Foundation. All rights reserved.
Not a Contribution.
Copyright 2015 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
u 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.
-->
<MediaCodecs>
<Encoders>
<MediaCodec name="OMX.qcom.video.encoder.avc" type="video/avc" update="true">
<!-- measured [234-262] lower-upper [63-667] median * 1.5 [372] -->
<Limit name="measured-frame-rate-320x240" range="138-303" />
<!-- measured [132-224] lower-upper [45-479] median * 1.5 [267] -->
<Limit name="measured-frame-rate-720x480" range="99-218" />
<!-- measured [68-94] lower-upper [21-219] median * 1.5 [122] -->
<Limit name="measured-frame-rate-1280x720" range="45-100" />
<!-- measured [67-81] lower-upper [19-199] median * 1.5 [111] -->
<Limit name="measured-frame-rate-1920x1080" range="41-91" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.h263sw" type="video/3gpp" update="true">
<!-- measured [251-271] lower-upper [66-704] median * 1.5 [392] -->
<Limit name="measured-frame-rate-176x144" range="145-320" />
<!-- measured [94-96] lower-upper [24-256] median * 1.5 [142] -->
<Limit name="measured-frame-rate-352x288" range="53-116" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc" type="video/hevc" update="true">
<!-- measured [226-233] lower-upper [58-618] median * 1.5 [344] -->
<Limit name="measured-frame-rate-320x240" range="128-281" />
<!-- measured [140-171] lower-upper [39-419] median * 1.5 [233] -->
<Limit name="measured-frame-rate-720x480" range="87-191" />
<!-- measured [68-90] lower-upper [20-215] median * 1.5 [119] -->
<Limit name="measured-frame-rate-1280x720" range="44-98" />
<!-- measured [61-68] lower-upper [16-174] median * 1.5 [97] -->
<Limit name="measured-frame-rate-1920x1080" range="36-79" />
<!-- measured [28-35] lower-upper [8-86] median * 1.5 [47] -->
<Limit name="measured-frame-rate-3840x2160" range="18-39" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.mpeg4sw" type="video/mp4v-es" update="true">
<!-- measured [226-233] lower-upper [58-618] median * 1.5 [344] -->
<Limit name="measured-frame-rate-176x144" range="128-281" />
<!-- measured [82-83] lower-upper [21-223] median * 1.5 [124] -->
<Limit name="measured-frame-rate-352x288" range="46-101" />
<!-- measured [42-42] lower-upper [11-114] median * 1.5 [63] -->
<Limit name="measured-frame-rate-640x480" range="24-52" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.vp8" type="video/x-vnd.on2.vp8" update="true">
<!-- measured [239-245] lower-upper [61-653] median * 1.5 [364] -->
<Limit name="measured-frame-rate-320x180" range="135-297" />
<!-- measured [171-193] lower-upper [46-491] median * 1.5 [273] -->
<Limit name="measured-frame-rate-640x360" range="101-223" />
<!-- measured [68-93] lower-upper [21-218] median * 1.5 [121] -->
<Limit name="measured-frame-rate-1280x720" range="45-99" />
<!-- measured [69-72] lower-upper [18-191] median * 1.5 [106] -->
<Limit name="measured-frame-rate-1920x1080" range="39-87" />
</MediaCodec>
<MediaCodec name="c2.android.avc.encoder" type="video/avc" update="true">
<!-- measured [289-344] lower-upper [80-852] median * 1.5 [475] -->
<Limit name="measured-frame-rate-320x240" range="176-387" />
<!-- measured [118-121] lower-upper [30-323] median * 1.5 [180] -->
<Limit name="measured-frame-rate-720x480" range="67-147" />
<!-- measured [73-78] lower-upper [19-205] median * 1.5 [114] -->
<Limit name="measured-frame-rate-1280x720" range="42-93" />
<!-- measured [42-44] lower-upper [11-117] median * 1.5 [65] -->
<Limit name="measured-frame-rate-1920x1080" range="24-53" />
</MediaCodec>
<MediaCodec name="c2.android.h263.encoder" type="video/3gpp" update="true">
<!-- measured [270-281] lower-upper [70-742] median * 1.5 [414] -->
<Limit name="measured-frame-rate-176x144" range="153-337" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.encoder" type="video/hevc" update="true">
<!-- measured [40-43] lower-upper [11-113] median * 1.5 [63] -->
<Limit name="measured-frame-rate-320x240" range="23-51" />
</MediaCodec>
<MediaCodec name="c2.android.mpeg4.encoder" type="video/mp4v-es" update="true">
<!-- measured [264-274] lower-upper [68-725] median * 1.5 [404] -->
<Limit name="measured-frame-rate-176x144" range="150-329" />
</MediaCodec>
<MediaCodec name="c2.android.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
<!-- measured [169-201] lower-upper [47-500] median * 1.5 [278] -->
<Limit name="measured-frame-rate-320x180" range="103-227" />
<!-- measured [140-141] lower-upper [36-379] median * 1.5 [211] -->
<Limit name="measured-frame-rate-640x360" range="78-172" />
<!-- measured [38-39] lower-upper [10-104] median * 1.5 [58] -->
<Limit name="measured-frame-rate-1280x720" range="22-47" />
<!-- measured [34-35] lower-upper [9-93] median * 1.5 [51] -->
<Limit name="measured-frame-rate-1920x1080" range="19-42" />
</MediaCodec>
</Encoders>
<Decoders>
<MediaCodec name="OMX.qcom.video.decoder.avc" type="video/avc" update="true">
<!-- measured [387-465] lower-upper [108-1147] median * 1.5 [639] -->
<Limit name="measured-frame-rate-320x240" range="237-521" />
<!-- measured [369-447] lower-upper [103-1098] median * 1.5 [612] -->
<Limit name="measured-frame-rate-720x480" range="227-499" />
<!-- measured [296-316] lower-upper [77-824] median * 1.5 [459] -->
<Limit name="measured-frame-rate-1280x720" range="170-375" />
<!-- measured [167-167] lower-upper [42-450] median * 1.5 [250] -->
<Limit name="measured-frame-rate-1920x1080" range="93-205" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" update="true">
<!-- measured [414-554] lower-upper [122-1302] median * 1.5 [726] -->
<Limit name="measured-frame-rate-352x288" range="269-592" />
<!-- measured [420-552] lower-upper [123-1308] median * 1.5 [729] -->
<Limit name="measured-frame-rate-640x360" range="270-595" />
<!-- measured [385-535] lower-upper [116-1238] median * 1.5 [690] -->
<Limit name="measured-frame-rate-720x480" range="256-563" />
<!-- measured [310-320] lower-upper [80-849] median * 1.5 [473] -->
<Limit name="measured-frame-rate-1280x720" range="175-386" />
<!-- measured [174-174] lower-upper [44-469] median * 1.5 [261] -->
<Limit name="measured-frame-rate-1920x1080" range="97-213" />
<!-- measured [50-50] lower-upper [13-137] median * 1.5 [76] -->
<Limit name="measured-frame-rate-3840x2160" range="28-62" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.vp8" type="video/x-vnd.on2.vp8" update="true">
<!-- measured [444-629] lower-upper [136-1444] median * 1.5 [805] -->
<Limit name="measured-frame-rate-320x180" range="298-656" />
<!-- measured [418-594] lower-upper [128-1362] median * 1.5 [759] -->
<Limit name="measured-frame-rate-640x360" range="281-619" />
<!-- measured [330-342] lower-upper [85-905] median * 1.5 [505] -->
<Limit name="measured-frame-rate-1280x720" range="187-412" />
<!-- measured [186-186] lower-upper [47-501] median * 1.5 [279] -->
<Limit name="measured-frame-rate-1920x1080" range="104-228" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.vp9" type="video/x-vnd.on2.vp9" update="true">
<!-- measured [411-499] lower-upper [115-1225] median * 1.5 [683] -->
<Limit name="measured-frame-rate-320x180" range="253-557" />
<!-- measured [368-384] lower-upper [95-1012] median * 1.5 [564] -->
<Limit name="measured-frame-rate-640x360" range="209-460" />
<!-- measured [153-153] lower-upper [39-412] median * 1.5 [229] -->
<Limit name="measured-frame-rate-1280x720" range="85-187" />
<!-- measured [94-94] lower-upper [24-255] median * 1.5 [142] -->
<Limit name="measured-frame-rate-1920x1080" range="53-116" />
<!-- measured [21-21] lower-upper [6-59] median * 1.5 [32] -->
<Limit name="measured-frame-rate-3840x2160" range="12-27" />
</MediaCodec>
<MediaCodec name="OMX.qti.video.decoder.h263sw" type="video/3gpp" update="true">
<!-- measured [606-638] lower-upper [157-1674] median * 1.5 [933] -->
<Limit name="measured-frame-rate-176x144" range="346-761" />
<!-- measured [307-507] lower-upper [103-1096] median * 1.5 [611] -->
<Limit name="measured-frame-rate-352x288" range="226-498" />
</MediaCodec>
<MediaCodec name="OMX.qti.video.decoder.mpeg4sw" type="video/mp4v-es" update="true">
<!-- measured [544-547] lower-upper [138-1467] median * 1.5 [818] -->
<Limit name="measured-frame-rate-176x144" range="303-667" />
<!-- measured [250-439] lower-upper [87-928] median * 1.5 [517] -->
<Limit name="measured-frame-rate-480x360" range="192-422" />
<!-- measured [211-213] lower-upper [54-571] median * 1.5 [318] -->
<Limit name="measured-frame-rate-1280x720" range="118-260" />
</MediaCodec>
<MediaCodec name="c2.android.avc.decoder" type="video/avc" update="true">
<!-- measured [163-169] lower-upper [42-448] median * 1.5 [249] -->
<Limit name="measured-frame-rate-320x240" range="93-204" />
<!-- measured [71-72] lower-upper [18-193] median * 1.5 [107] -->
<Limit name="measured-frame-rate-720x480" range="40-88" />
<!-- measured [30-30] lower-upper [8-82] median * 1.5 [45] -->
<Limit name="measured-frame-rate-1280x720" range="17-37" />
<!-- measured [16-16] lower-upper [4-45] median * 1.5 [24] -->
<Limit name="measured-frame-rate-1920x1080" range="9-20" />
</MediaCodec>
<MediaCodec name="c2.android.h263.decoder" type="video/3gpp" update="true">
<!-- measured [389-860] lower-upper [158-1681] median * 1.5 [937] -->
<Limit name="measured-frame-rate-176x144" range="347-764" />
<!-- measured [298-690] lower-upper [125-1330] median * 1.5 [742] -->
<Limit name="measured-frame-rate-352x288" range="275-605" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.decoder" type="video/hevc" update="true">
<!-- measured [168-186] lower-upper [45-477] median * 1.5 [265] -->
<Limit name="measured-frame-rate-352x288" range="99-217" />
<!-- measured [112-112] lower-upper [28-303] median * 1.5 [169] -->
<Limit name="measured-frame-rate-640x360" range="63-138" />
<!-- measured [110-139] lower-upper [32-337] median * 1.5 [187] -->
<Limit name="measured-frame-rate-720x480" range="70-153" />
<!-- measured [61-101] lower-upper [21-218] median * 1.5 [121] -->
<Limit name="measured-frame-rate-1280x720" range="45-99" />
<!-- measured [44-53] lower-upper [12-132] median * 1.5 [73] -->
<Limit name="measured-frame-rate-1920x1080" range="27-60" />
</MediaCodec>
<MediaCodec name="c2.android.mpeg4.decoder" type="video/mp4v-es" update="true">
<!-- measured [424-901] lower-upper [167-1783] median * 1.5 [994] -->
<Limit name="measured-frame-rate-176x144" range="368-810" />
</MediaCodec>
<MediaCodec name="c2.android.vp8.decoder" type="video/x-vnd.on2.vp8" update="true">
<!-- measured [241-787] lower-upper [130-1383] median * 1.5 [771] -->
<Limit name="measured-frame-rate-320x180" range="286-628" />
<!-- measured [98-358] lower-upper [58-615] median * 1.5 [343] -->
<Limit name="measured-frame-rate-640x360" range="127-280" />
<!-- measured [53-97] lower-upper [19-203] median * 1.5 [113] -->
<Limit name="measured-frame-rate-1280x720" range="42-92" />
<!-- measured [39-39] lower-upper [10-105] median * 1.5 [58] -->
<Limit name="measured-frame-rate-1920x1080" range="22-48" />
</MediaCodec>
<MediaCodec name="c2.android.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
<!-- measured [232-640] lower-upper [110-1174] median * 1.5 [654] -->
<Limit name="measured-frame-rate-320x180" range="242-533" />
<!-- measured [107-321] lower-upper [54-577] median * 1.5 [321] -->
<Limit name="measured-frame-rate-640x360" range="119-262" />
<!-- measured [61-121] lower-upper [23-246] median * 1.5 [137] -->
<Limit name="measured-frame-rate-1280x720" range="51-112" />
<!-- measured [42-53] lower-upper [12-130] median * 1.5 [72] -->
<Limit name="measured-frame-rate-1920x1080" range="27-59" />
</MediaCodec>
<MediaCodec name="c2.sec.mpeg4.decoder" type="video/mp4v-es" update="true">
<!-- measured [314-444] lower-upper [96-1021] median * 1.5 [569] -->
<Limit name="measured-frame-rate-176x144" range="211-464" />
<!-- measured [241-497] lower-upper [93-994] median * 1.5 [554] -->
<Limit name="measured-frame-rate-480x360" range="205-452" />
<!-- measured [193-257] lower-upper [57-606] median * 1.5 [338] -->
<Limit name="measured-frame-rate-1280x720" range="125-275" />
</MediaCodec>
<MediaCodec name="OMX.SEC.avc.sw.dec" type="video/avc" update="true">
<!-- measured [191-489] lower-upper [86-915] median * 1.5 [510] -->
<Limit name="measured-frame-rate-320x240" range="189-416" />
<!-- measured [185-188] lower-upper [47-502] median * 1.5 [280] -->
<Limit name="measured-frame-rate-720x480" range="104-228" />
<!-- measured [71-71] lower-upper [18-192] median * 1.5 [107] -->
<Limit name="measured-frame-rate-1280x720" range="40-87" />
<!-- measured [31-31] lower-upper [8-84] median * 1.5 [46] -->
<Limit name="measured-frame-rate-1920x1080" range="17-38" />
</MediaCodec>
<MediaCodec name="OMX.SEC.mpeg4.sw.dec" type="video/mp4v-es" update="true">
<!-- measured [723-1721] lower-upper [309-3288] median * 1.5 [1834] -->
<Limit name="measured-frame-rate-176x144" range="679-1495" />
<!-- measured [1156-1188] lower-upper [296-3153] median * 1.5 [1758] -->
<Limit name="measured-frame-rate-480x360" range="651-1433" />
</MediaCodec>
</Decoders>
</MediaCodecs>

@ -0,0 +1,399 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2012-2020 The Linux Foundation. All rights reserved.
Not a contribution.
Copyright (C) 2012-2013 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.
-->
<!--
<!DOCTYPE MediaCodecs [
<!ELEMENT Include EMPTY>
<!ATTLIST Include href CDATA #REQUIRED>
<!ELEMENT MediaCodecs (Decoders|Encoders|Include)*>
<!ELEMENT Decoders (MediaCodec|Include)*>
<!ELEMENT Encoders (MediaCodec|Include)*>
<!ELEMENT MediaCodec (Type|Quirk|Include)*>
<!ATTLIST MediaCodec name CDATA #REQUIRED>
<!ATTLIST MediaCodec type CDATA>
<!ELEMENT Type EMPTY>
<!ATTLIST Type name CDATA #REQUIRED>
<!ELEMENT Quirk EMPTY>
<!ATTLIST Quirk name CDATA #REQUIRED>
]>
There's a simple and a complex syntax to declare the availability of a
media codec:
A codec that properly follows the OpenMax spec and therefore doesn't have any
quirks and that only supports a single content type can be declared like so:
<MediaCodec name="OMX.foo.bar" type="something/interesting" />
If a codec has quirks OR supports multiple content types, the following syntax
can be used:
<MediaCodec name="OMX.foo.bar" >
<Type name="something/interesting" />
<Type name="something/else" />
...
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="output-buffers-are-unreadable" />
</MediaCodec>
Only the three quirks included above are recognized at this point:
"requires-allocate-on-input-ports"
must be advertised if the component does not properly support specification
of input buffers using the OMX_UseBuffer(...) API but instead requires
OMX_AllocateBuffer to be used.
"requires-allocate-on-output-ports"
must be advertised if the component does not properly support specification
of output buffers using the OMX_UseBuffer(...) API but instead requires
OMX_AllocateBuffer to be used.
"output-buffers-are-unreadable"
must be advertised if the emitted output buffers of a decoder component
are not readable, i.e. use a custom format even though abusing one of
the official OMX colorspace constants.
Clients of such decoders will not be able to access the decoded data,
naturally making the component much less useful. The only use for
a component with this quirk is to render the output to the screen.
Audio decoders MUST NOT advertise this quirk.
Video decoders that advertise this quirk must be accompanied by a
corresponding color space converter for thumbnail extraction,
matching surfaceflinger support that can render the custom format to
a texture and possibly other code, so just DON'T USE THIS QUIRK.
-->
<!--
SM6150 Non-Secure decoder capabilities
_________________________________________________________
| Codec | W H fps Mbps MB/s |
|_____________|_________________________________________|
| h264 | 4096 2160 24 100 829440 |
| hevc | 4096 2160 24 100 829440 |
| mpeg4-sw | 1920 1088 30 40 244800 |
| vp8 | 3840 2160 30 100 972000 |
| vp9 | 4096 2160 24 100 829440 |
| vc1 | 1920 1088 30 20 244800 |
| h263-sw | 864 480 30 16 48600 |
| mpeg2 | 1920 1088 30 40 244800 |
|_____________|_________________________________________|
SM6150 Secure decoder capabilities
______________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 3840 2160 30 35 972000 |
| vp9 | 3840 2160 30 35 972000 |
| hevc | 3840 2160 30 35 972000 |
| mpeg2 | 1920 1088 30 35 244800 |
|__________|_________________________________________|
SM6150 Non-Secure encoder capabilities (Secure not supported)
______________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 4096 2160 24 100 829440 |
| hevc | 4096 2160 24 100 829440 |
| mpeg4-sw | 1280 720 30 4 108000 |
| vp8 | 3840 2160 30 100 972000 |
| h263-sw | 864 480 30 2 48600 |
|__________|_________________________________________|
-->
<MediaCodecs>
<Settings>
<Setting name="max-video-encoder-input-buffers" value="11" />
</Settings>
<Encoders>
<!-- Video Hardware -->
<MediaCodec name="OMX.qcom.video.encoder.avc" type="video/avc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="96x96" max="4096x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-100000000" />
<Limit name="frame-rate" range="1-240" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-4096x2160" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.vp8" type="video/x-vnd.on2.vp8" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="96x96" max="3840x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-120000000" />
<Limit name="frame-rate" range="1-240" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-3840x2160" value="30" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="96x96" max="4096x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-100000000" />
<Limit name="frame-rate" range="1-240" />
<Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Limit name="performance-point-4096x2160" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
<Feature name="bitrate-modes" value="VBR,CBR" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc.cq" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="512x512" max="512x512" />
<Limit name="frame-rate" range="1-20" />
<Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Limit name="performance-point-4096x2304" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
<Feature name="bitrate-modes" value="CQ" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.heic" type="image/vnd.android.heic" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="512x512" max="8192x8192" />
<Limit name="frame-rate" range="1-20" />
<Limit name="concurrent-instances" max="6" />
<Limit name="quality" range="0-100" default="80" />
<Feature name="bitrate-modes" value="CQ" />
<Limit name="performance-point-8192x4320" value="3" />
<Limit name="performance-point-1920x1080" value="6" />
</MediaCodec>
<!-- Video Software -->
<MediaCodec name="OMX.qcom.video.encoder.h263sw" type="video/3gpp" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="96x96" max="864x480" />
<Limit name="alignment" value="4x4" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="48600" />
<Limit name="bitrate" range="1-2000000" />
<Limit name="frame-rate" range="1-30" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-864x480" value="30" />
<Limit name="performance-point-720x480" value="30" />
<Limit name="performance-point-720x576" value="25" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.mpeg4sw" type="video/mp4v-es" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="96x96" max="864x480" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="48600" />
<Limit name="bitrate" range="1-8000000" />
<Limit name="frame-rate" range="1-30" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-864x480" value="30" />
<Limit name="performance-point-720x480" value="30" />
<Limit name="performance-point-720x576" value="25" />
</MediaCodec>
</Encoders>
<Decoders>
<!-- Video Hardware -->
<MediaCodec name="OMX.qcom.video.decoder.avc" type="video/avc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="4096x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-100000000" />
<Limit name="frame-rate" range="1-240" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-4096x2160" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.avc.secure" type="video/avc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="3840x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="972000" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="30" />
</MediaCodec>
<!--
<MediaCodec name="OMX.qcom.video.decoder.mpeg2" type="video/mpeg2" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="244800" />
<Limit name="bitrate" range="1-40000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="30" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.mpeg2.secure" type="video/mpeg2" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="244800" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-1920x1080" value="30" />
</MediaCodec>
-->
<MediaCodec name="OMX.qcom.video.decoder.vp8" type="video/x-vnd.on2.vp8" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="3840x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-100000000" />
<Limit name="frame-rate" range="1-240" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.vp9" type="video/x-vnd.on2.vp9" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="4096x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-120000000" />
<Limit name="frame-rate" range="1-240" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="6" />
<Limit name="performance-point-4096x2160" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.vp9.secure" type="video/x-vnd.on2.vp9" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="3840x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="972000" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="30" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="4096x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="979200" />
<Limit name="bitrate" range="1-100000000" />
<Limit name="frame-rate" range="1-240" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-4096x2160" value="24" />
<Limit name="performance-point-3840x2160" value="30" />
<Limit name="performance-point-1920x1080" value="120" />
<Limit name="performance-point-1280x720" value="240" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.hevc.secure" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="3840x2160" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="972000" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="30" />
</MediaCodec>
<!-- Video Software -->
<MediaCodec name="OMX.qti.video.decoder.h263sw" type="video/3gpp" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="864x480" />
<Limit name="alignment" value="4x4" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="48600" />
<Limit name="bitrate" range="1-16000000" />
<Limit name="frame-rate" range="1-30" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-864x480" value="30" />
<Limit name="performance-point-720x480" value="30" />
<Limit name="performance-point-720x576" value="25" />
</MediaCodec>
<MediaCodec name="OMX.qti.video.decoder.mpeg4sw" type="video/mp4v-es">
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="96x96" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="244800" />
<Limit name="bitrate" range="1-40000000" />
<Limit name="frame-rate" range="1-30" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="30" />
</MediaCodec>
</Decoders>
<Include href="media_codecs_google_video.xml" />
<Include href="media_codecs_google_audio.xml" />
<Include href="media_codecs_google_telephony.xml" />
</MediaCodecs>

@ -0,0 +1,867 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2013 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.
-->
<!DOCTYPE MediaSettings [
<!ELEMENT MediaSettings (CamcorderProfiles,
EncoderOutputFileFormat+,
VideoEncoderCap+,
AudioEncoderCap+,
VideoDecoderCap,
AudioDecoderCap)>
<!ELEMENT CamcorderProfiles (EncoderProfile+, ImageEncoding+, ImageDecoding, Camera)>
<!ELEMENT EncoderProfile (Video, Audio)>
<!ATTLIST EncoderProfile quality (high|low) #REQUIRED>
<!ATTLIST EncoderProfile fileFormat (mp4|3gp) #REQUIRED>
<!ATTLIST EncoderProfile duration (30|60) #REQUIRED>
<!ATTLIST EncoderProfile cameraId (0|1|2|3|4|5) #REQUIRED>
<!ELEMENT Video EMPTY>
<!ATTLIST Video codec (h264|h263|m4v) #REQUIRED>
<!ATTLIST Video bitRate CDATA #REQUIRED>
<!ATTLIST Video width CDATA #REQUIRED>
<!ATTLIST Video height CDATA #REQUIRED>
<!ATTLIST Video frameRate CDATA #REQUIRED>
<!ELEMENT Audio EMPTY>
<!ATTLIST Audio codec (amrnb|amrwb|aac) #REQUIRED>
<!ATTLIST Audio bitRate CDATA #REQUIRED>
<!ATTLIST Audio sampleRate CDATA #REQUIRED>
<!ATTLIST Audio channels (1|2) #REQUIRED>
<!ELEMENT ImageEncoding EMPTY>
<!ATTLIST ImageEncoding quality (90|80|70|60|50|40) #REQUIRED>
<!ELEMENT ImageDecoding EMPTY>
<!ATTLIST ImageDecoding memCap CDATA #REQUIRED>
<!ELEMENT Camera EMPTY>
<!ELEMENT EncoderOutputFileFormat EMPTY>
<!ATTLIST EncoderOutputFileFormat name (mp4|3gp) #REQUIRED>
<!ELEMENT VideoEncoderCap EMPTY>
<!ATTLIST VideoEncoderCap name (h264|h263|m4v|wmv) #REQUIRED>
<!ATTLIST VideoEncoderCap enabled (true|false) #REQUIRED>
<!ATTLIST VideoEncoderCap minBitRate CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxBitRate CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap minFrameWidth CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxFrameWidth CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap minFrameHeight CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxFrameHeight CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap minFrameRate CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxFrameRate CDATA #REQUIRED>
<!ELEMENT AudioEncoderCap EMPTY>
<!ATTLIST AudioEncoderCap name (amrnb|amrwb|aac|wma) #REQUIRED>
<!ATTLIST AudioEncoderCap enabled (true|false) #REQUIRED>
<!ATTLIST AudioEncoderCap minBitRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap maxBitRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap minSampleRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap maxSampleRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap minChannels (1|2) #REQUIRED>
<!ATTLIST AudioEncoderCap maxChannels (1|2) #REQUIRED>
<!ELEMENT VideoDecoderCap EMPTY>
<!ATTLIST VideoDecoderCap name (wmv) #REQUIRED>
<!ATTLIST VideoDecoderCap enabled (true|false) #REQUIRED>
<!ELEMENT AudioDecoderCap EMPTY>
<!ATTLIST AudioDecoderCap name (wma) #REQUIRED>
<!ATTLIST AudioDecoderCap enabled (true|false) #REQUIRED>
]>
<!--
This file is used to declare the multimedia profiles and capabilities
on an android-powered device.
-->
<MediaSettings>
<!-- Each camcorder profile defines a set of predefined configuration parameters -->
<CamcorderProfiles cameraId="0">
<EncoderProfile quality="qvga" fileFormat="3gp" duration="60">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="cif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="192000"
width="176"
height="144"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<ImageEncoding quality="95" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<CamcorderProfiles cameraId="1">
<EncoderProfile quality="qvga" fileFormat="3gp" duration="60">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="cif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="192000"
width="176"
height="144"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<ImageEncoding quality="95" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<CamcorderProfiles cameraId="2">
<EncoderProfile quality="qvga" fileFormat="3gp" duration="60">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="cif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="192000"
width="176"
height="144"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<ImageEncoding quality="95" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<CamcorderProfiles cameraId="3">
<EncoderProfile quality="qvga" fileFormat="3gp" duration="60">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="cif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="192000"
width="176"
height="144"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<ImageEncoding quality="95" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<CamcorderProfiles cameraId="4">
<EncoderProfile quality="qvga" fileFormat="3gp" duration="60">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="cif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="192000"
width="176"
height="144"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<ImageEncoding quality="95" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<CamcorderProfiles cameraId="5">
<EncoderProfile quality="qvga" fileFormat="3gp" duration="60">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="cif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="192000"
width="176"
height="144"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="720"
height="480"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<ImageEncoding quality="95" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<EncoderOutputFileFormat name="3gp" />
<EncoderOutputFileFormat name="mp4" />
<!--
If a codec is not enabled, it is invisible to the applications
In other words, the applications won't be able to use the codec
or query the capabilities of the codec at all if it is disabled
-->
<VideoEncoderCap name="h264" enabled="true"
minBitRate="64000" maxBitRate="40000000"
minFrameWidth="176" maxFrameWidth="1920"
minFrameHeight="144" maxFrameHeight="1080"
minFrameRate="15" maxFrameRate="30" />
<VideoEncoderCap name="h263" enabled="true"
minBitRate="64000" maxBitRate="2000000"
minFrameWidth="176" maxFrameWidth="800"
minFrameHeight="144" maxFrameHeight="480"
minFrameRate="15" maxFrameRate="30" />
<VideoEncoderCap name="m4v" enabled="true"
minBitRate="64000" maxBitRate="40000000"
minFrameWidth="176" maxFrameWidth="1920"
minFrameHeight="144" maxFrameHeight="1080"
minFrameRate="15" maxFrameRate="30" />
<AudioEncoderCap name="aac" enabled="true"
minBitRate="758" maxBitRate="288000"
minSampleRate="8000" maxSampleRate="48000"
minChannels="1" maxChannels="2" />
<AudioEncoderCap name="heaac" enabled="true"
minBitRate="8000" maxBitRate="64000"
minSampleRate="16000" maxSampleRate="48000"
minChannels="1" maxChannels="2" />
<AudioEncoderCap name="aaceld" enabled="true"
minBitRate="16000" maxBitRate="192000"
minSampleRate="16000" maxSampleRate="48000"
minChannels="1" maxChannels="2" />
<AudioEncoderCap name="amrwb" enabled="true"
minBitRate="6600" maxBitRate="23050"
minSampleRate="16000" maxSampleRate="16000"
minChannels="1" maxChannels="1" />
<AudioEncoderCap name="amrnb" enabled="true"
minBitRate="5525" maxBitRate="12200"
minSampleRate="8000" maxSampleRate="8000"
minChannels="1" maxChannels="1" />
<!--
FIXME:
We do not check decoder capabilities at present
At present, we only check whether windows media is visible
for TEST applications. For other applications, we do
not perform any checks at all.
-->
<VideoDecoderCap name="wmv" enabled="false"/>
<AudioDecoderCap name="wma" enabled="false"/>
</MediaSettings>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,63 @@
#!/bin/bash
#
# Copyright (C) 2018-2020 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
set -e
DEVICE_COMMON=sm7125-common
VENDOR=samsung
# Load extractutils and do some sanity checks
MY_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "$MY_DIR" ]]; then MY_DIR="$PWD"; fi
ANDROID_ROOT="${MY_DIR}/../../.."
HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
if [ ! -f "${HELPER}" ]; then
echo "Unable to find helper script at ${HELPER}"
exit 1
fi
source "${HELPER}"
# Default to sanitizing the vendor folder before extraction
CLEAN_VENDOR=true
KANG=
SECTION=
while [ "${#}" -gt 0 ]; do
case "${1}" in
-n | --no-cleanup )
CLEAN_VENDOR=false
;;
-k | --kang )
KANG="--kang"
;;
-s | --section )
SECTION="${2}"; shift
CLEAN_VENDOR=false
;;
* )
SRC="${1}"
;;
esac
shift
done
if [ -z "${SRC}" ]; then
SRC="adb"
fi
# Initialize the helper
setup_vendor "${DEVICE_COMMON}" "${VENDOR}" "${ANDROID_ROOT}" true "${CLEAN_VENDOR}"
extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}"
# Fix proprietary blobs
BLOB_ROOT="$ANDROID_ROOT"/vendor/"$VENDOR"/"$DEVICE_COMMON"/proprietary
"${MY_DIR}/setup-makefiles.sh"

@ -0,0 +1,25 @@
//
// Copyright (C) 2019 The LineageOS 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.
//
cc_library_static {
name: "libinit_sec",
recovery_available: true,
srcs: ["init_sec.cpp"],
include_dirs: [
"system/core/base/include",
"system/core/init"
]
}

@ -0,0 +1,73 @@
#include <stdio.h>
#include <stdlib.h>
#include <android-base/logging.h>
#include <android-base/properties.h>
#define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
#include <sys/_system_properties.h>
#include "property_service.h"
#include "vendor_init.h"
#include "init_sec.h"
#define MODEL_NAME_LEN 5
#define BUILD_NAME_LEN 8
#define CODENAME_LEN 9
static void property_override(char const prop[], char const value[]) {
prop_info *pi;
pi = (prop_info*) __system_property_find(prop);
if (pi)
__system_property_update(pi, value, strlen(value));
else
__system_property_add(prop, strlen(prop), value, strlen(value));
}
void property_override_dual(char const system_prop[], char const vendor_prop[], char const value[])
{
property_override(system_prop, value);
property_override(vendor_prop, value);
}
void vendor_load_properties()
{
const std::string bootloader = android::base::GetProperty("ro.bootloader", "");
const std::string bl_model = bootloader.substr(0, MODEL_NAME_LEN);
const std::string bl_build = bootloader.substr(MODEL_NAME_LEN);
std::string model;
std::string device;
std::string name;
model = "SM-" + bl_model;
for (size_t i = 0; i < VARIANT_MAX; i++) {
std::string model_ = all_variants[i]->model;
if (model.compare(model_) == 0) {
device = all_variants[i]->codename;
break;
}
}
if (device.size() == 0) {
LOG(ERROR) << "Could not detect device, forcing a52q";
device = "a52q";
}
name = device + "nseea";
LOG(INFO) << "Found bootloader: %s", bootloader.c_str();
LOG(INFO) << "Setting ro.product.model: %s", model.c_str();
LOG(INFO) << "Setting ro.product.device: %s", device.c_str();
LOG(INFO) << "Setting ro.product.name: %s", name.c_str();
LOG(INFO) << "Setting ro.build.product: %s", device.c_str();
property_override_dual("ro.product.model", "ro.vendor.product.model", model.c_str());
property_override_dual("ro.product.device", "ro.vendor.product.device", device.c_str());
property_override_dual("ro.product.name", "ro.vendor.product.name", name.c_str());
property_override("ro.build.product", device.c_str());
}

@ -0,0 +1,25 @@
#ifndef INIT_SEC_H
#define INIT_SEC_H
#include <string.h>
enum device_variant {
VARIANT_A525F = 0,
VARIANT_MAX
};
typedef struct {
std::string model;
std::string codename;
} variant;
static const variant international_models = {
.model = "SM-A525F",
.codename = "a52q"
};
static const variant *all_variants[VARIANT_MAX] = {
&international_models
};
#endif // INIT_SEC_H

@ -0,0 +1,6 @@
[
{
"repository": "android_kernel_samsung_sm7125",
"target_path": "kernel/samsung/sm7125"
}
]

File diff suppressed because it is too large Load Diff

@ -0,0 +1,184 @@
LOCAL_PATH := $(call my-dir)
# Init files and fstab
include $(CLEAR_VARS)
LOCAL_MODULE := fstab.default
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/fstab.default
LOCAL_REQUIRED_MODULES := fstab.qcom.ramdisk
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := fstab.default.ramdisk
LOCAL_MODULE_STEM := fstab.default
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/fstab.default
LOCAL_MODULE_PATH := $(TARGET_RAMDISK_OUT)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.a52q.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.a52q.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.factory.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.qcom.factory.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.qcom.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.usb.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.qcom.usb.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.samsung.bsp.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.samsung.bsp.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.samsung.display.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.samsung.display.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.samsung.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.samsung.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.target.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.target.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := wifi_sec.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/wifi_sec.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := wifi_qcom.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/wifi_qcom.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := ueventd.qcom.rc
LOCAL_MODULE_STEM := ueventd.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/ueventd.qcom.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)
include $(BUILD_PREBUILT)
# /vendor/bin scripts
include $(CLEAR_VARS)
LOCAL_MODULE := init.class_main.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.class_main.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bin
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.crda.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.crda.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bin
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.early_boot.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qcom.early_boot.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bin
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.post_boot.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qcom.post_boot.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bin
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.sdio.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qcom.sdio.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bin
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qcom.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bin
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.usb.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qcom.usb.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bin
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qti.chg_policy.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qti.chg_policy.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bin
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qti.dcvs.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qti.dcvs.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bin
include $(BUILD_PREBUILT)

@ -0,0 +1,155 @@
#! /vendor/bin/sh
# Copyright (c) 2013-2014, 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
# start ril-daemon only for targets on which radio is present
#
baseband=`getprop ro.baseband`
sgltecsfb=`getprop persist.vendor.radio.sglte_csfb`
datamode=`getprop persist.vendor.data.mode`
low_ram=`getprop ro.config.low_ram`
qcrild_status=false
case "$baseband" in
"apq" | "sda" | "qcs" )
setprop ro.vendor.radio.noril yes
stop vendor.ril-daemon
stop vendor.qcrild
esac
case "$baseband" in
"msm" | "csfb" | "svlte2a" | "mdm" | "mdm2" | "sglte" | "sglte2" | "dsda2" | "unknown" | "dsda3" | "sdm" | "sdx" | "sm6")
# For older modem packages launch ril-daemon.
if [ -f /vendor/firmware_mnt/verinfo/ver_info.txt ]; then
modem=`cat /vendor/firmware_mnt/verinfo/ver_info.txt |
sed -n 's/^[^:]*modem[^:]*:[[:blank:]]*//p' |
sed 's/.*MPSS.\(.*\)/\1/g' | cut -d \. -f 1`
if [ "$modem" = "AT" ]; then
version=`cat /vendor/firmware_mnt/verinfo/ver_info.txt |
sed -n 's/^[^:]*modem[^:]*:[[:blank:]]*//p' |
sed 's/.*AT.\(.*\)/\1/g' | cut -d \- -f 1`
if [ ! -z $version ]; then
if [ "$version" \< "3.1" ]; then
qcrild_status=false
fi
fi
elif [ "$modem" = "TA" ]; then
version=`cat /vendor/firmware_mnt/verinfo/ver_info.txt |
sed -n 's/^[^:]*modem[^:]*:[[:blank:]]*//p' |
sed 's/.*TA.\(.*\)/\1/g' | cut -d \- -f 1`
if [ ! -z $version ]; then
if [ "$version" \< "3.0" ]; then
qcrild_status=false
fi
fi
elif [ "$modem" = "JO" ]; then
version=`cat /vendor/firmware_mnt/verinfo/ver_info.txt |
sed -n 's/^[^:]*modem[^:]*:[[:blank:]]*//p' |
sed 's/.*JO.\(.*\)/\1/g' | cut -d \- -f 1`
if [ ! -z $version ]; then
if [ "$version" \< "3.2" ]; then
qcrild_status=false
fi
fi
elif [ "$modem" = "TH" ]; then
qcrild_status=false
fi
fi
if [ "$qcrild_status" = "true" ]; then
# Make sure both rild, qcrild are not running at same time.
# This is possible with vanilla aosp system image.
stop vendor.ril-daemon
start vendor.qcrild
else
start vendor.ril-daemon
fi
case "$baseband" in
"svlte2a" | "csfb")
start qmiproxy
;;
"sglte" | "sglte2" )
if [ "x$sgltecsfb" != "xtrue" ]; then
start qmiproxy
else
setprop persist.vendor.radio.voice.modem.index 0
fi
;;
esac
multisim=`getprop persist.radio.multisim.config`
if [ "$multisim" = "dsds" ] || [ "$multisim" = "dsda" ]; then
if [ "$qcrild_status" = "true" ]; then
start vendor.qcrild2
else
start vendor.ril-daemon2
fi
elif [ "$multisim" = "tsts" ]; then
if [ "$qcrild_status" = "true" ]; then
start vendor.qcrild2
start vendor.qcrild3
else
start vendor.ril-daemon2
start vendor.ril-daemon3
fi
fi
case "$datamode" in
"tethered")
start vendor.dataqti
if [ "$low_ram" != "true" ]; then
start vendor.dataadpl
fi
;;
"concurrent")
start vendor.dataqti
if [ "$low_ram" != "true" ]; then
start vendor.dataadpl
fi
;;
*)
;;
esac
esac
#
# Allow persistent faking of bms
# User needs to set fake bms charge in persist.vendor.bms.fake_batt_capacity
#
fake_batt_capacity=`getprop persist.vendor.bms.fake_batt_capacity`
case "$fake_batt_capacity" in
"") ;; #Do nothing here
* )
echo "$fake_batt_capacity" > /sys/class/power_supply/battery/capacity
;;
esac

@ -0,0 +1,35 @@
#! /vendor/bin/sh
# Copyright (c) 2012, 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
country=`getprop wlan.crda.country`
# crda takes input in COUNTRY environment variable
if [ $country != "" ]
then
COUNTRY="$country" /system/bin/crda
fi

@ -0,0 +1,216 @@
#!/vendor/bin/sh
# Copyright (c) 2012-2013, 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Set platform variables
target=`getprop ro.board.platform`
if [ -f /sys/devices/soc0/hw_platform ]; then
soc_hwplatform=`cat /sys/devices/soc0/hw_platform` 2> /dev/null
else
soc_hwplatform=`cat /sys/devices/system/soc/soc0/hw_platform` 2> /dev/null
fi
if [ -f /sys/devices/soc0/soc_id ]; then
soc_hwid=`cat /sys/devices/soc0/soc_id` 2> /dev/null
else
soc_hwid=`cat /sys/devices/system/soc/soc0/id` 2> /dev/null
fi
if [ -f /sys/devices/soc0/platform_version ]; then
soc_hwver=`cat /sys/devices/soc0/platform_version` 2> /dev/null
else
soc_hwver=`cat /sys/devices/system/soc/soc0/platform_version` 2> /dev/null
fi
# Dynamic Memory Managment (DMM) provides a sys file system to the userspace
# that can be used to plug in/out memory that has been configured as unstable.
# This unstable memory can be in Active or In-Active State.
# Each of which the userspace can request by writing to a sys file.
#
# ro.dev.dmm = 1; Indicates that DMM is enabled in the Android User Space. This
# property is set in the Android system properties file.
#
# If ro.dev.dmm.dpd.start_address is set here then the target has a memory
# configuration that supports DynamicMemoryManagement.
init_DMM()
{
block=-1
case "$target" in
"msm7630_surf" | "msm7630_1x" | "msm7630_fusion" | "msm8960")
;;
*)
return
;;
esac
mem="/sys/devices/system/memory"
op=`cat $mem/movable_start_bytes`
case "$op" in
"0")
log -p i -t DMM DMM Disabled. movable_start_bytes not set: $op
;;
"$mem/movable_start_bytes: No such file or directory ")
log -p i -t DMM DMM Disabled. movable_start_bytes does not exist: $op
;;
*)
log -p i -t DMM DMM available. movable_start_bytes at $op
movable_start_bytes=0x`cat $mem/movable_start_bytes`
block_size_bytes=0x`cat $mem/block_size_bytes`
block=$((#${movable_start_bytes}/${block_size_bytes}))
chown -h system.system $mem/memory$block/state
chown -h system.system $mem/probe
chown -h system.system $mem/active
chown -h system.system $mem/remove
case "$target" in
"msm7630_surf" | "msm7630_1x" | "msm7630_fusion")
echo $movable_start_bytes > $mem/probe
case "$?" in
"0")
log -p i -t DMM $movable_start_bytes to physical hotplug succeeded.
;;
*)
log -p e -t DMM $movable_start_bytes to physical hotplug failed.
return
;;
esac
echo online > $mem/memory$block/state
case "$?" in
"0")
log -p i -t DMM \'echo online\' to logical hotplug succeeded.
;;
*)
log -p e -t DMM \'echo online\' to logical hotplug failed.
return
;;
esac
;;
esac
setprop ro.dev.dmm.dpd.start_address $movable_start_bytes
setprop ro.dev.dmm.dpd.block $block
;;
esac
case "$target" in
"msm8960")
return
;;
esac
# For 7X30 targets:
# ro.dev.dmm.dpd.start_address is set when the target has a 2x256Mb memory
# configuration. This is also used to indicate that the target is capable of
# setting EBI-1 to Deep Power Down or Self Refresh.
op=`cat $mem/low_power_memory_start_bytes`
case "$op" in
"0")
log -p i -t DMM Self-Refresh-Only Disabled. low_power_memory_start_bytes not set:$op
;;
"$mem/low_power_memory_start_bytes No such file or directory ")
log -p i -t DMM Self-Refresh-Only Disabled. low_power_memory_start_bytes does not exist:$op
;;
*)
log -p i -t DMM Self-Refresh-Only available. low_power_memory_start_bytes at $op
;;
esac
}
#
# For controlling console and shell on console on 8960 - perist.serial.enable 8960
# On other target use default ro.debuggable property.
#
serial=`getprop persist.serial.enable`
dserial=`getprop ro.debuggable`
case "$target" in
"msm8960")
case "$serial" in
"0")
echo 0 > /sys/devices/platform/msm_serial_hsl.0/console
;;
"1")
echo 1 > /sys/devices/platform/msm_serial_hsl.0/console
start console
;;
*)
case "$dserial" in
"1")
start console
;;
esac
;;
esac
;;
"msm8610" | "msm8974" | "msm8226")
case "$serial" in
"0")
echo 0 > /sys/devices/f991f000.serial/console
;;
"1")
echo 1 > /sys/devices/f991f000.serial/console
start console
;;
*)
case "$dserial" in
"1")
start console
;;
esac
;;
esac
;;
*)
case "$dserial" in
"1")
start console
;;
esac
;;
esac
case "$target" in
"msm7630_surf" | "msm7630_1x" | "msm7630_fusion")
insmod /system/lib/modules/ss_mfcinit.ko
insmod /system/lib/modules/ss_vencoder.ko
insmod /system/lib/modules/ss_vdecoder.ko
chmod -h 0666 /dev/ss_mfc_reg
chmod -h 0666 /dev/ss_vdec
chmod -h 0666 /dev/ss_venc
init_DMM
;;
"msm8960")
init_DMM
;;
esac

@ -0,0 +1,518 @@
#! /vendor/bin/sh
# Copyright (c) 2012-2013,2016,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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
export PATH=/vendor/bin
# Set platform variables
if [ -f /sys/devices/soc0/hw_platform ]; then
soc_hwplatform=`cat /sys/devices/soc0/hw_platform` 2> /dev/null
else
soc_hwplatform=`cat /sys/devices/system/soc/soc0/hw_platform` 2> /dev/null
fi
if [ -f /sys/devices/soc0/soc_id ]; then
soc_hwid=`cat /sys/devices/soc0/soc_id` 2> /dev/null
else
soc_hwid=`cat /sys/devices/system/soc/soc0/id` 2> /dev/null
fi
if [ -f /sys/devices/soc0/platform_version ]; then
soc_hwver=`cat /sys/devices/soc0/platform_version` 2> /dev/null
else
soc_hwver=`cat /sys/devices/system/soc/soc0/platform_version` 2> /dev/null
fi
if [ -f /sys/class/drm/card0-DSI-1/modes ]; then
echo "detect" > /sys/class/drm/card0-DSI-1/status
mode_file=/sys/class/drm/card0-DSI-1/modes
while read line; do
fb_width=${line%%x*};
break;
done < $mode_file
elif [ -f /sys/class/graphics/fb0/virtual_size ]; then
res=`cat /sys/class/graphics/fb0/virtual_size` 2> /dev/null
fb_width=${res%,*}
fi
log -t BOOT -p i "MSM target '$1', SoC '$soc_hwplatform', HwID '$soc_hwid', SoC ver '$soc_hwver'"
#For drm based display driver
vbfile=/sys/module/drm/parameters/vblankoffdelay
if [ -w $vbfile ]; then
echo -1 > $vbfile
else
log -t DRM_BOOT -p w "file: '$vbfile' or perms doesn't exist"
fi
function set_density_by_fb() {
#put default density based on width
if [ -z $fb_width ]; then
setprop vendor.display.lcd_density 320
else
if [ $fb_width -ge 1600 ]; then
setprop vendor.display.lcd_density 640
elif [ $fb_width -ge 1440 ]; then
setprop vendor.display.lcd_density 560
elif [ $fb_width -ge 1080 ]; then
setprop vendor.display.lcd_density 480
elif [ $fb_width -ge 720 ]; then
setprop vendor.display.lcd_density 320 #for 720X1280 resolution
elif [ $fb_width -ge 480 ]; then
setprop vendor.display.lcd_density 240 #for 480X854 QRD resolution
else
setprop vendor.display.lcd_density 160
fi
fi
}
target=`getprop ro.board.platform`
case "$target" in
"msm7630_surf" | "msm7630_1x" | "msm7630_fusion")
case "$soc_hwplatform" in
"FFA" | "SVLTE_FFA")
# linking to surf_keypad_qwerty.kcm.bin instead of surf_keypad_numeric.kcm.bin so that
# the UI keyboard works fine.
ln -s /system/usr/keychars/surf_keypad_qwerty.kcm.bin /system/usr/keychars/surf_keypad.kcm.bin
;;
"Fluid")
setprop vendor.display.lcd_density 240
setprop qcom.bt.dev_power_class 2
;;
*)
ln -s /system/usr/keychars/surf_keypad_qwerty.kcm.bin /system/usr/keychars/surf_keypad.kcm.bin
;;
esac
;;
"sm6150")
case "$soc_hwplatform" in
"ADP")
setprop vendor.display.lcd_density 160
;;
esac
case "$soc_hwid" in
365|366)
sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null
setprop vendor.media.target.version 1
if [ $sku_ver -eq 1 ]; then
setprop vendor.media.target.version 2
fi
;;
355|369|377|384)
setprop vendor.chre.enabled 0
;;
*)
esac
;;
"msm8660")
case "$soc_hwplatform" in
"Fluid")
setprop vendor.display.lcd_density 240
;;
"Dragon")
setprop ro.sound.alsa "WM8903"
;;
esac
;;
"msm8960")
# lcd density is write-once. Hence the separate switch case
case "$soc_hwplatform" in
"Liquid")
if [ "$soc_hwver" == "196608" ]; then # version 0x30000 is 3D sku
setprop ro.sf.hwrotation 90
fi
setprop vendor.display.lcd_density 160
;;
"MTP")
setprop vendor.display.lcd_density 240
;;
*)
case "$soc_hwid" in
"109")
setprop vendor.display.lcd_density 160
;;
*)
setprop vendor.display.lcd_density 240
;;
esac
;;
esac
#Set up composition type based on the target
case "$soc_hwid" in
87)
#8960
setprop debug.composition.type dyn
;;
153|154|155|156|157|138)
#8064 V2 PRIME | 8930AB | 8630AB | 8230AB | 8030AB | 8960AB
setprop debug.composition.type c2d
;;
*)
esac
;;
"msm8974")
case "$soc_hwplatform" in
"Liquid")
setprop vendor.display.lcd_density 160
# Liquid do not have hardware navigation keys, so enable
# Android sw navigation bar
setprop ro.hw.nav_keys 0
;;
"Dragon")
setprop vendor.display.lcd_density 240
;;
*)
setprop vendor.display.lcd_density 320
;;
esac
;;
"msm8226")
case "$soc_hwplatform" in
*)
setprop vendor.display.lcd_density 320
;;
esac
;;
"msm8610" | "apq8084" | "mpq8092")
case "$soc_hwplatform" in
*)
setprop vendor.display.lcd_density 240
;;
esac
;;
"apq8084")
case "$soc_hwplatform" in
"Liquid")
setprop vendor.display.lcd_density 320
# Liquid do not have hardware navigation keys, so enable
# Android sw navigation bar
setprop ro.hw.nav_keys 0
;;
"SBC")
setprop vendor.display.lcd_density 200
# SBC do not have hardware navigation keys, so enable
# Android sw navigation bar
setprop qemu.hw.mainkeys 0
;;
*)
setprop vendor.display.lcd_density 480
;;
esac
;;
"msm8996")
case "$soc_hwplatform" in
"Dragon")
setprop vendor.display.lcd_density 240
setprop qemu.hw.mainkeys 0
;;
"ADP")
setprop vendor.display.lcd_density 160
setprop qemu.hw.mainkeys 0
;;
"SBC")
setprop vendor.display.lcd_density 240
setprop qemu.hw.mainkeys 0
;;
*)
setprop vendor.display.lcd_density 560
;;
esac
;;
"msm8937" | "msm8940")
# Set vendor.opengles.version based on chip id.
# MSM8937 and MSM8940 variants supports OpenGLES 3.1
# 196608 is decimal for 0x30000 to report version 3.0
# 196609 is decimal for 0x30001 to report version 3.1
# 196610 is decimal for 0x30002 to report version 3.2
case "$soc_hwid" in
294|295|296|297|298|313|353|354|363|364)
setprop vendor.opengles.version 196610
if [ $soc_hwid = 354 ]
then
setprop vendor.media.target.version 1
log -t BOOT -p i "SDM429 early_boot prop set for: HwID '$soc_hwid'"
fi
;;
303|307|308|309|320)
# Vulkan is not supported for 8917 variants
setprop vendor.opengles.version 196608
setprop persist.graphics.vulkan.disable true
;;
*)
setprop vendor.opengles.version 196608
;;
esac
;;
"msm8909")
case "$soc_hwplatform" in
*)
setprop persist.graphics.vulkan.disable true
;;
esac
;;
"msm8998" | "apq8098_latv")
case "$soc_hwplatform" in
*)
setprop vendor.display.lcd_density 560
;;
esac
;;
"sdm845")
case "$soc_hwplatform" in
*)
if [ $fb_width -le 1600 ]; then
setprop vendor.display.lcd_density 560
else
setprop vendor.display.lcd_density 640
fi
;;
esac
;;
"msmnile")
case "$soc_hwplatform" in
*)
if [ $fb_width -le 1600 ]; then
setprop vendor.display.lcd_density 560
else
setprop vendor.display.lcd_density 640
fi
;;
esac
;;
"kona")
case "$soc_hwplatform" in
*)
setprop vendor.media.target_variant "_kona"
if [ $fb_width -le 1600 ]; then
setprop vendor.display.lcd_density 560
else
setprop vendor.display.lcd_density 640
fi
;;
esac
;;
"lito")
case "$soc_hwid" in
400|440)
sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null
if [ $sku_ver -eq 1 ]; then
setprop vendor.media.target.version 1
fi
;;
434|459)
sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null
setprop vendor.media.target.version 2
if [ $sku_ver -eq 1 ]; then
setprop vendor.media.target.version 3
fi
;;
esac
;;
"bengal")
case "$soc_hwid" in
441)
setprop vendor.fastrpc.disable.cdsprpcd.daemon 1
setprop vendor.gralloc.disable_ubwc 1
;;
471)
#scuba APQ
setprop vendor.gralloc.disable_ubwc 1
;;
esac
;;
"sdm710" | "msmpeafowl")
case "$soc_hwplatform" in
*)
if [ $fb_width -le 1600 ]; then
setprop vendor.display.lcd_density 560
else
setprop vendor.display.lcd_density 640
fi
sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null
if [ $sku_ver -eq 1 ]; then
setprop vendor.media.target.version 1
fi
;;
esac
;;
"msm8953")
cap_ver = 1
if [ -e "/sys/devices/platform/soc/1d00000.qcom,vidc/capability_version" ]; then
cap_ver=`cat /sys/devices/platform/soc/1d00000.qcom,vidc/capability_version` 2> /dev/null
else
cap_ver=`cat /sys/devices/soc/1d00000.qcom,vidc/capability_version` 2> /dev/null
fi
if [ $cap_ver -eq 1 ]; then
setprop vendor.media.target.version 1
fi
;;
#Set property to differentiate SDM660 & SDM455
#SOC ID for SDM455 is 385
"sdm660")
case "$soc_hwplatform" in
*)
if [ $fb_width -le 1600 ]; then
setprop vendor.display.lcd_density 560
else
setprop vendor.display.lcd_density 640
fi
if [ $soc_hwid -eq 385 ]; then
setprop vendor.media.target.version 1
fi
;;
esac
;;
"lahaina")
case "$soc_hwid" in
450)
setprop vendor.media.target_variant "_shima_v3"
sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc/sku_version` 2> /dev/null
if [ $sku_ver -eq 1 ]; then
setprop vendor.media.target_variant "_shima_v1"
elif [ $sku_ver -eq 2 ]; then
setprop vendor.media.target_variant "_shima_v2"
fi
;;
*)
setprop vendor.media.target_variant "_lahaina"
;;
esac
;;
"holi")
setprop vendor.media.target_variant "_holi"
;;
esac
baseband=`getprop ro.baseband`
#enable atfwd daemon all targets except sda, apq, qcs
case "$baseband" in
"apq" | "sda" | "qcs" )
setprop persist.vendor.radio.atfwd.start false;;
*)
setprop persist.vendor.radio.atfwd.start true;;
esac
#set default lcd density
#Since lcd density has read only
#property, it will not overwrite previous set
#property if any target is setting forcefully.
set_density_by_fb
# set Lilliput LCD density for ADP
product=`getprop ro.build.product`
case "$product" in
"msmnile_au")
setprop vendor.display.lcd_density 160
echo 902400000 > /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/min_freq
echo 1612800000 > /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/max_freq
echo 902400000 > /sys/class/devfreq/soc:qcom,cpu4-cpu-l3-lat/min_freq
echo 1612800000 > /sys/class/devfreq/soc:qcom,cpu4-cpu-l3-lat/max_freq
;;
*)
;;
esac
case "$product" in
"sm6150_au")
setprop vendor.display.lcd_density 160
;;
*)
;;
esac
case "$product" in
"sdmshrike_au")
setprop vendor.display.lcd_density 160
;;
*)
;;
esac
case "$product" in
"msmnile_gvmq")
setprop vendor.display.lcd_density 160
;;
*)
;;
esac
# Setup display nodes & permissions
# HDMI can be fb1 or fb2
# Loop through the sysfs nodes and determine
# the HDMI(dtv panel)
function set_perms() {
#Usage set_perms <filename> <ownership> <permission>
chown -h $2 $1
chmod $3 $1
}
# check for the type of driver FB or DRM
fb_driver=/sys/class/graphics/fb0
if [ -e "$fb_driver" ]
then
# check for mdp caps
file=/sys/class/graphics/fb0/mdp/caps
if [ -f "$file" ]
then
setprop vendor.gralloc.disable_ubwc 1
cat $file | while read line; do
case "$line" in
*"ubwc"*)
setprop vendor.gralloc.enable_fb_ubwc 1
setprop vendor.gralloc.disable_ubwc 0
esac
done
fi
else
set_perms /sys/devices/virtual/hdcp/msm_hdcp/min_level_change system.graphics 0660
fi
# allow system_graphics group to access pmic secure_mode node
set_perms /sys/class/lcd_bias/secure_mode system.graphics 0660
set_perms /sys/class/leds/wled/secure_mode system.graphics 0660
boot_reason=`cat /proc/sys/kernel/boot_reason`
reboot_reason=`getprop ro.boot.alarmboot`
if [ "$boot_reason" = "3" ] || [ "$reboot_reason" = "true" ]; then
setprop ro.vendor.alarm_boot true
else
setprop ro.vendor.alarm_boot false
fi
# copy GPU frequencies to vendor property
if [ -f /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies ]; then
gpu_freq=`cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies` 2> /dev/null
setprop vendor.gpu.available_frequencies "$gpu_freq"
fi

File diff suppressed because it is too large Load Diff

@ -0,0 +1,78 @@
#! /vendor/bin/sh
# Copyright (c) 2010, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of The Linux Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# For successful WLAN card detection, WLAN needs SDIO polling turned on.
# This script can be used to turn on/off SDIO polling on appropriate
# SDIO slot on the MSM target (e.g. slot 3 on 7x30 surf).
arg=$1
target=`getprop ro.board.platform`
case "$target" in
"msm7627_6x")
echo 1 > /sys/devices/platform/msm_sdcc.1/polling
echo 1 > /sys/devices/platform/msm_sdcc.2/polling
;;
"msm7627_ffa")
echo 1 > /sys/devices/platform/msm_sdcc.2/polling
;;
"msm7627_surf")
echo 1 > /sys/devices/platform/msm_sdcc.1/polling
echo 1 > /sys/devices/platform/msm_sdcc.2/polling
;;
"msm7627a")
echo 1 > /sys/devices/platform/msm_sdcc.2/polling
;;
"msm7630_surf")
echo 1 > /sys/devices/platform/msm_sdcc.3/polling
;;
"msm7630_1x")
echo 1 > /sys/devices/platform/msm_sdcc.3/polling
;;
"msm7630_fusion")
echo 1 > /sys/devices/platform/msm_sdcc.3/polling
;;
"msm8660")
echo 1 > /sys/devices/platform/msm_sdcc.4/polling
;;
"msm8660_csfb")
echo 1 > /sys/devices/platform/msm_sdcc.4/polling
;;
esac
exit 0

@ -0,0 +1,465 @@
#! /vendor/bin/sh
# Copyright (c) 2009-2016, 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
target=`getprop ro.board.platform`
low_ram=`getprop ro.config.low_ram`
if [ -f /sys/devices/soc0/soc_id ]; then
platformid=`cat /sys/devices/soc0/soc_id`
else
platformid=`cat /sys/devices/system/soc/soc0/id`
fi
start_battery_monitor()
{
if ls /sys/bus/spmi/devices/qpnp-bms-*/fcc_data ; then
chown -h root.system /sys/module/pm8921_bms/parameters/*
chown -h root.system /sys/module/qpnp_bms/parameters/*
chown -h root.system /sys/bus/spmi/devices/qpnp-bms-*/fcc_data
chown -h root.system /sys/bus/spmi/devices/qpnp-bms-*/fcc_temp
chown -h root.system /sys/bus/spmi/devices/qpnp-bms-*/fcc_chgcyl
chmod 0660 /sys/module/qpnp_bms/parameters/*
chmod 0660 /sys/module/pm8921_bms/parameters/*
mkdir -p /data/bms
chown -h root.system /data/bms
chmod 0770 /data/bms
start battery_monitor
fi
}
start_charger_monitor()
{
if ls /sys/module/qpnp_charger/parameters/charger_monitor; then
chown -h root.system /sys/module/qpnp_charger/parameters/*
chown -h root.system /sys/class/power_supply/battery/input_current_max
chown -h root.system /sys/class/power_supply/battery/input_current_trim
chown -h root.system /sys/class/power_supply/battery/input_current_settled
chown -h root.system /sys/class/power_supply/battery/voltage_min
chmod 0664 /sys/class/power_supply/battery/input_current_max
chmod 0664 /sys/class/power_supply/battery/input_current_trim
chmod 0664 /sys/class/power_supply/battery/input_current_settled
chmod 0664 /sys/class/power_supply/battery/voltage_min
chmod 0664 /sys/module/qpnp_charger/parameters/charger_monitor
start charger_monitor
fi
}
start_vm_bms()
{
if [ -e /dev/vm_bms ]; then
chown -h root.system /sys/class/power_supply/bms/current_now
chown -h root.system /sys/class/power_supply/bms/voltage_ocv
chmod 0664 /sys/class/power_supply/bms/current_now
chmod 0664 /sys/class/power_supply/bms/voltage_ocv
start vm_bms
fi
}
start_msm_irqbalance_8939()
{
if [ -f /vendor/bin/msm_irqbalance ]; then
case "$platformid" in
"239" | "293" | "294" | "295" | "304" | "338" | "313" | "353" | "354")
start vendor.msm_irqbalance;;
"349" | "350" )
start vendor.msm_irqbal_lb;;
esac
fi
}
start_msm_irqbalance_msmnile()
{
if [ -f /vendor/bin/msm_irqbalance ]; then
start vendor.msm_irqbalance
fi
}
start_msm_irqbalance_kona()
{
if [ -f /vendor/bin/msm_irqbalance ]; then
start vendor.msm_irqbalance
fi
}
start_msm_irqbalance_lito()
{
if [ -f /vendor/bin/msm_irqbalance ]; then
start vendor.msm_irqbalance
fi
}
start_msm_irqbalance_atoll()
{
if [ -f /vendor/bin/msm_irqbalance ]; then
start vendor.msm_irqbalance
fi
}
start_msm_irqbalance660()
{
if [ -f /vendor/bin/msm_irqbalance ]; then
case "$platformid" in
"317" | "321" | "324" | "325" | "326" | "336" | "345" | "346" | "360" | "393")
start vendor.msm_irqbalance;;
"318" | "327" | "385")
start vendor.msm_irqbl_sdm630;;
esac
fi
}
start_msm_irqbalance()
{
if [ -f /vendor/bin/msm_irqbalance ]; then
start vendor.msm_irqbalance
fi
}
baseband=`getprop ro.baseband`
echo 1 > /proc/sys/net/ipv6/conf/default/accept_ra_defrtr
case "$baseband" in
"svlte2a")
start bridgemgrd
;;
esac
case "$target" in
"msm7630_surf" | "msm7630_1x" | "msm7630_fusion")
if [ -f /sys/devices/soc0/hw_platform ]; then
value=`cat /sys/devices/soc0/hw_platform`
else
value=`cat /sys/devices/system/soc/soc0/hw_platform`
fi
case "$value" in
"Fluid")
start profiler_daemon;;
esac
;;
"msm8660" )
if [ -f /sys/devices/soc0/hw_platform ]; then
platformvalue=`cat /sys/devices/soc0/hw_platform`
else
platformvalue=`cat /sys/devices/system/soc/soc0/hw_platform`
fi
case "$platformvalue" in
"Fluid")
start profiler_daemon;;
esac
;;
"msm8960")
case "$baseband" in
"msm")
start_battery_monitor;;
esac
if [ -f /sys/devices/soc0/hw_platform ]; then
platformvalue=`cat /sys/devices/soc0/hw_platform`
else
platformvalue=`cat /sys/devices/system/soc/soc0/hw_platform`
fi
case "$platformvalue" in
"Fluid")
start profiler_daemon;;
"Liquid")
start profiler_daemon;;
esac
;;
"msm8974")
platformvalue=`cat /sys/devices/soc0/hw_platform`
case "$platformvalue" in
"Fluid")
start profiler_daemon;;
"Liquid")
start profiler_daemon;;
esac
case "$baseband" in
"msm")
start_battery_monitor
;;
esac
start_charger_monitor
;;
"sdm660")
if [ -f /sys/devices/soc0/soc_id ]; then
soc_id=`cat /sys/devices/soc0/soc_id`
else
soc_id=`cat /sys/devices/system/soc/soc0/id`
fi
if [ -f /sys/devices/soc0/hw_platform ]; then
hw_platform=`cat /sys/devices/soc0/hw_platform`
else
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
fi
case "$soc_id" in
"317" | "324" | "325" | "326" | "318" | "327" )
case "$hw_platform" in
"Surf")
setprop qemu.hw.mainkeys 0
;;
"MTP")
setprop qemu.hw.mainkeys 0
;;
"RCM")
setprop qemu.hw.mainkeys 0
;;
"QRD")
setprop qemu.hw.mainkeys 0
;;
esac
;;
esac
start_msm_irqbalance660
;;
"apq8084")
platformvalue=`cat /sys/devices/soc0/hw_platform`
case "$platformvalue" in
"Fluid")
start profiler_daemon;;
"Liquid")
start profiler_daemon;;
esac
;;
"msm8226")
start_charger_monitor
;;
"msm8610")
start_charger_monitor
;;
"msm8916")
start_vm_bms
start_msm_irqbalance_8939
if [ -f /sys/devices/soc0/soc_id ]; then
soc_id=`cat /sys/devices/soc0/soc_id`
else
soc_id=`cat /sys/devices/system/soc/soc0/id`
fi
if [ -f /sys/devices/soc0/platform_subtype_id ]; then
platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
fi
if [ -f /sys/devices/soc0/hw_platform ]; then
hw_platform=`cat /sys/devices/soc0/hw_platform`
fi
case "$soc_id" in
"239")
case "$hw_platform" in
"Surf")
case "$platform_subtype_id" in
"1")
setprop qemu.hw.mainkeys 0
;;
esac
;;
"MTP")
case "$platform_subtype_id" in
"3")
setprop qemu.hw.mainkeys 0
;;
esac
;;
esac
;;
esac
;;
"msm8994" | "msm8992" | "msm8998" | "apq8098_latv" | "sdm845" | "sdm710" | "qcs605" | "sm6150" | "trinket" | "bengal")
start_msm_irqbalance
;;
"msm8996")
if [ -f /sys/devices/soc0/hw_platform ]; then
hw_platform=`cat /sys/devices/soc0/hw_platform`
fi
case "$hw_platform" in
"MTP" | "CDP")
#Loop through the sysfs nodes and determine the correct sysfs to change the permission and ownership.
for count in 0 1 2 3 4 5 6 7 8 9 10
do
dir="/sys/devices/soc/75ba000.i2c/i2c-12/12-0020/input/input"$count
if [ -d "$dir" ]; then
chmod 0660 $dir/secure_touch_enable
chmod 0440 $dir/secure_touch
chown system.drmrpc $dir/secure_touch_enable
chown system.drmrpc $dir/secure_touch
break
fi
done
;;
esac
;;
"msm8909")
start_vm_bms
;;
"msmnile")
start_msm_irqbalance_msmnile
;;
"kona")
start_msm_irqbalance_kona
;;
"lito")
start_msm_irqbalance_lito
;;
"atoll")
start_msm_irqbalance_atoll
;;
"msm8937")
start_msm_irqbalance_8939
if [ -f /sys/devices/soc0/soc_id ]; then
soc_id=`cat /sys/devices/soc0/soc_id`
else
soc_id=`cat /sys/devices/system/soc/soc0/id`
fi
if [ -f /sys/devices/soc0/hw_platform ]; then
hw_platform=`cat /sys/devices/soc0/hw_platform`
else
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
fi
if [ "$low_ram" != "true" ]; then
case "$soc_id" in
"294" | "295" | "303" | "307" | "308" | "309" | "313" | "320" | "353" | "354" | "363" | "364")
case "$hw_platform" in
"Surf")
setprop qemu.hw.mainkeys 0
;;
"MTP")
setprop qemu.hw.mainkeys 0
;;
"RCM")
setprop qemu.hw.mainkeys 0
;;
"QRD")
setprop qemu.hw.mainkeys 0
;;
esac
;;
esac
fi
;;
"msm8953")
start_msm_irqbalance_8939
if [ -f /sys/devices/soc0/soc_id ]; then
soc_id=`cat /sys/devices/soc0/soc_id`
else
soc_id=`cat /sys/devices/system/soc/soc0/id`
fi
if [ -f /sys/devices/soc0/hw_platform ]; then
hw_platform=`cat /sys/devices/soc0/hw_platform`
else
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
fi
case "$soc_id" in
"293" | "304" | "338" | "351" | "349" | "350" )
case "$hw_platform" in
"Surf")
setprop qemu.hw.mainkeys 0
;;
"MTP")
setprop qemu.hw.mainkeys 0
;;
"RCM")
setprop qemu.hw.mainkeys 0
;;
"QRD")
setprop qemu.hw.mainkeys 0
;;
esac
;;
esac
;;
"sdm710")
if [ -f /sys/devices/soc0/soc_id ]; then
soc_id=`cat /sys/devices/soc0/soc_id`
else
soc_id=`cat /sys/devices/system/soc/soc0/id`
fi
if [ -f /sys/devices/soc0/hw_platform ]; then
hw_platform=`cat /sys/devices/soc0/hw_platform`
else
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
fi
case "$soc_id" in
"336" | "337" | "347" | "360" | "393" )
case "$hw_platform" in
"Surf")
setprop qemu.hw.mainkeys 0
;;
"MTP")
setprop qemu.hw.mainkeys 0
;;
"RCM")
setprop qemu.hw.mainkeys 0
;;
"QRD")
setprop qemu.hw.mainkeys 0
;;
esac
;;
esac
;;
esac
#
# Make modem config folder and copy firmware config to that folder for RIL
#
if [ -f /data/vendor/modem_config/ver_info.txt ]; then
prev_version_info=`cat /data/vendor/modem_config/ver_info.txt`
else
prev_version_info=""
fi
cur_version_info=`cat /vendor/firmware_mnt/verinfo/ver_info.txt`
if [ ! -f /vendor/firmware_mnt/verinfo/ver_info.txt -o "$prev_version_info" != "$cur_version_info" ]; then
# add W for group recursively before delete
chmod g+w -R /data/vendor/modem_config/*
rm -rf /data/vendor/modem_config/*
# preserve the read only mode for all subdir and files
cp --preserve=m -dr /vendor/firmware_mnt/image/modem_pr/mcfg/configs/* /data/vendor/modem_config
cp --preserve=m -d /vendor/firmware_mnt/verinfo/ver_info.txt /data/vendor/modem_config/
cp --preserve=m -d /vendor/firmware_mnt/image/modem_pr/mbn_ota.txt /data/vendor/modem_config/
# the group must be root, otherwise this script could not add "W" for group recursively
chown -hR radio.root /data/vendor/modem_config/*
fi
chmod g-w /data/vendor/modem_config
setprop ro.vendor.ril.mbn_copy_completed 1
#check build variant for printk logging
#current default minimum boot-time-default
buildvariant=`getprop ro.build.type`
case "$buildvariant" in
"userdebug" | "eng")
#set default loglevel to KERN_INFO
echo "6 6 1 7" > /proc/sys/kernel/printk
;;
*)
#set default loglevel to KERN_WARNING
echo "4 4 1 4" > /proc/sys/kernel/printk
;;
esac

@ -0,0 +1,236 @@
#!/vendor/bin/sh
# Copyright (c) 2012-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,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
# Set platform variables
soc_hwplatform=`cat /sys/devices/soc0/hw_platform 2> /dev/null`
soc_machine=`cat /sys/devices/soc0/machine 2> /dev/null`
soc_machine=${soc_machine:0:2}
soc_id=`cat /sys/devices/soc0/soc_id 2> /dev/null`
#
# Check ESOC for external modem
#
# Note: currently only a single MDM/SDX is supported
#
esoc_name=`cat /sys/bus/esoc/devices/esoc0/esoc_name 2> /dev/null`
target=`getprop ro.board.platform`
#
# Override USB default composition
#
# If USB persist config not set, set default configuration
if [ "$(getprop persist.vendor.usb.config)" == "" -a "$(getprop ro.build.type)" != "user" -a \
"$(getprop init.svc.vendor.usb-gadget-hal-1-0)" != "running" ]; then
if [ "$esoc_name" != "" ]; then
setprop persist.vendor.usb.config diag,diag_mdm,qdss,qdss_mdm,serial_cdev,dpl,rmnet,adb
else
case "$(getprop ro.baseband)" in
"apq")
setprop persist.vendor.usb.config diag,adb
;;
*)
case "$soc_hwplatform" in
"Dragon" | "SBC")
setprop persist.vendor.usb.config diag,adb
;;
*)
case "$soc_machine" in
"SA")
setprop persist.vendor.usb.config diag,adb
;;
*)
case "$target" in
"msm8996")
setprop persist.vendor.usb.config diag,serial_cdev,serial_tty,rmnet_ipa,mass_storage,adb
;;
"msm8909")
setprop persist.vendor.usb.config diag,serial_smd,rmnet_qti_bam,adb
;;
"msm8937")
if [ -d /config/usb_gadget ]; then
setprop persist.vendor.usb.config diag,serial_cdev,rmnet,dpl,adb
else
case "$soc_id" in
"313" | "320")
setprop persist.vendor.usb.config diag,serial_smd,rmnet_ipa,adb
;;
*)
setprop persist.vendor.usb.config diag,serial_smd,rmnet_qti_bam,adb
;;
esac
fi
;;
"msm8953")
if [ -d /config/usb_gadget ]; then
setprop persist.vendor.usb.config diag,serial_cdev,rmnet,dpl,adb
else
setprop persist.vendor.usb.config diag,serial_smd,rmnet_ipa,adb
fi
;;
"msm8998" | "sdm660" | "apq8098_latv")
setprop persist.vendor.usb.config diag,serial_cdev,rmnet,adb
;;
"sdm845" | "sdm710")
setprop persist.vendor.usb.config diag,serial_cdev,rmnet,dpl,adb
;;
"msmnile" | "sm6150" | "trinket" | "lito" | "atoll" | "bengal" | "lahaina" | "holi")
setprop persist.vendor.usb.config diag,serial_cdev,rmnet,dpl,qdss,adb
;;
*)
setprop persist.vendor.usb.config diag,adb
;;
esac
;;
esac
;;
esac
;;
esac
fi
fi
# This check is needed for GKI 1.0 targets where QDSS is not available
if [ "$(getprop persist.vendor.usb.config)" == "diag,serial_cdev,rmnet,dpl,qdss,adb" -a \
! -d /config/usb_gadget/g1/functions/qdss.qdss ]; then
setprop persist.vendor.usb.config diag,serial_cdev,rmnet,dpl,adb
fi
# Start peripheral mode on primary USB controllers for Automotive platforms
case "$soc_machine" in
"SA")
if [ -f /sys/bus/platform/devices/a600000.ssusb/mode ]; then
default_mode=`cat /sys/bus/platform/devices/a600000.ssusb/mode`
case "$default_mode" in
"none")
echo peripheral > /sys/bus/platform/devices/a600000.ssusb/mode
;;
esac
fi
;;
esac
# check configfs is mounted or not
if [ -d /config/usb_gadget ]; then
# Chip-serial is used for unique MSM identification in Product string
msm_serial=`cat /sys/devices/soc0/serial_number`;
msm_serial_hex=`printf %08X $msm_serial`
machine_type=`cat /sys/devices/soc0/machine`
setprop vendor.usb.product_string "$machine_type-$soc_hwplatform _SN:$msm_serial_hex"
# ADB requires valid iSerialNumber; if ro.serialno is missing, use dummy
serialnumber=`cat /config/usb_gadget/g1/strings/0x409/serialnumber 2> /dev/null`
if [ "$serialnumber" == "" ]; then
serialno=1234567
echo $serialno > /config/usb_gadget/g1/strings/0x409/serialnumber
fi
setprop vendor.usb.configfs 1
persist_comp=`getprop persist.sys.usb.config`
comp=`getprop sys.usb.config`
echo $persist_comp
echo $comp
if [ "$comp" != "$persist_comp" ]; then
echo "setting sys.usb.config"
setprop sys.usb.config $persist_comp
fi
fi
#
# Initialize RNDIS Diag option. If unset, set it to 'none'.
#
diag_extra=`getprop persist.vendor.usb.config.extra`
if [ "$diag_extra" == "" ]; then
setprop persist.vendor.usb.config.extra none
fi
# enable rps cpus on msm8937 target
setprop vendor.usb.rps_mask 0
case "$soc_id" in
"294" | "295" | "353" | "354")
setprop vendor.usb.rps_mask 40
;;
esac
#
# Initialize UVC conifguration.
#
if [ -d /config/usb_gadget/g1/functions/uvc.0 ]; then
cd /config/usb_gadget/g1/functions/uvc.0
echo 3072 > streaming_maxpacket
echo 1 > streaming_maxburst
mkdir control/header/h
ln -s control/header/h control/class/fs/
ln -s control/header/h control/class/ss
mkdir -p streaming/uncompressed/u/360p
echo "666666\n1000000\n5000000\n" > streaming/uncompressed/u/360p/dwFrameInterval
mkdir -p streaming/uncompressed/u/720p
echo 1280 > streaming/uncompressed/u/720p/wWidth
echo 720 > streaming/uncompressed/u/720p/wWidth
echo 29491200 > streaming/uncompressed/u/720p/dwMinBitRate
echo 29491200 > streaming/uncompressed/u/720p/dwMaxBitRate
echo 1843200 > streaming/uncompressed/u/720p/dwMaxVideoFrameBufferSize
echo 5000000 > streaming/uncompressed/u/720p/dwDefaultFrameInterval
echo "5000000\n" > streaming/uncompressed/u/720p/dwFrameInterval
mkdir -p streaming/mjpeg/m/360p
echo "666666\n1000000\n5000000\n" > streaming/mjpeg/m/360p/dwFrameInterval
mkdir -p streaming/mjpeg/m/720p
echo 1280 > streaming/mjpeg/m/720p/wWidth
echo 720 > streaming/mjpeg/m/720p/wWidth
echo 29491200 > streaming/mjpeg/m/720p/dwMinBitRate
echo 29491200 > streaming/mjpeg/m/720p/dwMaxBitRate
echo 1843200 > streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize
echo 5000000 > streaming/mjpeg/m/720p/dwDefaultFrameInterval
echo "5000000\n" > streaming/mjpeg/m/720p/dwFrameInterval
echo 0x04 > /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmaControls
mkdir -p streaming/h264/h/960p
echo 1920 > streaming/h264/h/960p/wWidth
echo 960 > streaming/h264/h/960p/wWidth
echo 40 > streaming/h264/h/960p/bLevelIDC
echo "333667\n" > streaming/h264/h/960p/dwFrameInterval
mkdir -p streaming/h264/h/1920p
echo "333667\n" > streaming/h264/h/1920p/dwFrameInterval
mkdir streaming/header/h
ln -s streaming/uncompressed/u streaming/header/h
ln -s streaming/mjpeg/m streaming/header/h
ln -s streaming/h264/h streaming/header/h
ln -s streaming/header/h streaming/class/fs/
ln -s streaming/header/h streaming/class/hs/
ln -s streaming/header/h streaming/class/ss/
fi

@ -0,0 +1,48 @@
#! /vendor/bin/sh
#
# Copyright (c) 2019-2020 Qualcomm Technologies, Inc.
# All Rights Reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
#
# Copyright (c) 2019 The Linux Foundation. All rights reserved.
#
export PATH=/vendor/bin
soc_id=`getprop ro.vendor.qti.soc_id`
if [ "$soc_id" -eq 415 ] || [ "$soc_id" -eq 439 ] || [ "$soc_id" -eq 450 ]; then
setprop persist.vendor.hvdcp_opti.start 2
exit 0
fi
if [ "$soc_id" -eq 441 ] || [ "$soc_id" -eq 471 ]; then
#Scuba does not support usb-pd or charge pumps
find /sys/class/power_supply/battery/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/power_supply/bms/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/power_supply/main/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/power_supply/usb/ -type f -maxdepth 1 | xargs chown system.system
else
find /sys/class/power_supply/battery/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/power_supply/bms/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/power_supply/main/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/power_supply/usb/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/power_supply/charge_pump_master/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/power_supply/pc_port/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/power_supply/dc/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/power_supply/parallel/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/usbpd/usbpd0/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/qc-vdm/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/charge_pump/ -type f -maxdepth 1 | xargs chown system.system
find /sys/class/qcom-battery/ -type f -maxdepth 1 | xargs chown system.system
for i in 0 1 2 3 4 5 6 7 8 9
do
devname=`cat /sys/bus/iio/devices/iio:device$i/name`
if [[ "$devname" == *smb* ]] || [[ "$devname" == *qg* ]] || [[ "$devname" == *div2_cp* ]]; then
find /sys/bus/iio/devices/iio:device$i/ -type f -maxdepth 1 | xargs chown system.system
fi
done
fi
setprop persist.vendor.hvdcp_opti.start 1

@ -0,0 +1,55 @@
#! /vendor/bin/sh
#
# 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,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
for device in /sys/devices/platform/soc
do
#Enable mem_latency governor for L3, LLCC, and DDR scaling
for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat
do
echo "mem_latency" > $memlat/governor
echo 10 > $memlat/polling_interval
echo 400 > $memlat/mem_latency/ratio_ceil
done
#Enable cdspl3 governor for L3 cdsp nodes
for l3cdsp in $device/*cdsp-cdsp-l3-lat/devfreq/*cdsp-cdsp-l3-lat
do
echo "cdspl3" > $l3cdsp/governor
done
#Gold L3 ratio ceil
echo 4000 > /sys/class/devfreq/soc:qcom,cpu6-cpu-l3-lat/mem_latency/ratio_ceil
#Enable compute governor for gold latfloor
for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor*
do
echo "compute" > $latfloor/governor
echo 10 > $latfloor/polling_interval
done
done;

@ -0,0 +1,63 @@
# Copyright (c) 2018-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,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
#TODO: Add 'check' as fs_mgr_flags with data partition.
# Currently we dont have e2fsck compiled. So fs check would failed.
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
system /system ext4 ro,barrier=1,discard wait,logical,first_stage_mount
product /product ext4 ro,barrier=1,discard wait,logical,first_stage_mount
vendor /vendor ext4 ro,barrier=1,discard wait,logical,first_stage_mount
odm /odm ext4 ro,barrier=1,discard wait,logical,first_stage_mount
/dev/block/bootdevice/by-name/boot /boot emmc defaults defaults
/dev/block/bootdevice/by-name/cache /cache ext4 noatime,nosuid,nodev,noauto_da_alloc,discard,journal_checksum,data=ordered,errors=panic wait,check
/dev/block/by-name/metadata /metadata ext4 noatime,nosuid,nodev,noauto_da_alloc,discard,journal_checksum,data=ordered,errors=panic,sync wait,formattable,wrappedkey,first_stage_mount,check
# Add fs_mgr flag - sysfs_path=/sys/devices/platform/soc/xxxx.[ufshc|sdhci] to userdata entry, based on UFS|eMMC device.
/dev/block/bootdevice/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,usrquota,grpquota,fsync_mode=nobarrier,reserve_root=32768,resgid=5678 latemount,wait,check,,encryptable=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,wrappedkey,quota,reservedsize=128M,checkpoint=fs,keydirectory=/metadata/vold/metadata_encryption
/dev/block/platform/soc/1d84000.ufshc/by-name/prism /prism ext4 ro,barrier=1,discard nofail,first_stage_mount
/dev/block/platform/soc/1d84000.ufshc/by-name/optics /optics ext4 ro,barrier=1,discard nofail,first_stage_mount
/dev/block/bootdevice/by-name/apnhlos /vendor/firmware_mnt vfat ro,shortname=lower,uid=0,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait
/dev/block/bootdevice/by-name/modem /vendor/firmware-modem vfat ro,shortname=lower,uid=0,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait
/dev/block/bootdevice/by-name/efs /mnt/vendor/efs ext4 noatime,nosuid,nodev,noauto_da_alloc,discard,journal_checksum,data=ordered,errors=panic wait,check
/dev/block/bootdevice/by-name/sec_efs /efs ext4 noatime,nosuid,nodev,noauto_da_alloc,discard,journal_checksum,data=ordered,errors=panic wait,check
/dev/block/bootdevice/by-name/carrier /carrier ext4 noatime,nosuid,nodev,noauto_da_alloc,discard,journal_checksum,data=ordered,errors=panic defaults,nofail,check
/dev/block/bootdevice/by-name/dsp /vendor/dsp ext4 ro,nosuid,nodev,barrier=1 wait
/dev/block/bootdevice/by-name/persist /mnt/vendor/persist ext4 noatime,nosuid,nodev,noauto_da_alloc,discard,journal_checksum,data=ordered,errors=panic wait,check
/dev/block/bootdevice/by-name/spu /spu ext4 noatime,nosuid,nodev,noauto_da_alloc,discard,journal_checksum,data=ordered,errors=panic wait,nofail,check
# Need to have this entry in here even though the mount point itself is no longer needed.
# The update_engine code looks for this entry in order to determine the boot device address
# and fails if it does not find it.
/dev/block/bootdevice/by-name/misc /misc emmc defaults defaults,first_stage_mount
# VOLD:samsung/common_sm7125/fstab_dynamic_partition.samsung
/devices/platform/soc/8804000.sdhci/mmc_host* auto vfat defaults voldmanaged=sdcard:auto
/devices/platform/soc/a600000.ssusb/a600000.dwc3/xhci-hcd.0.auto* auto auto defaults voldmanaged=usb:auto

@ -0,0 +1,99 @@
# Copyright (c) 2013-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,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
on init
# setup cgroup freezer for freecess
mkdir /dev/freezer
mount cgroup none /dev/freezer freezer
mkdir /dev/freezer/frozen
mkdir /dev/freezer/thaw
write /dev/freezer/frozen/freezer.state FROZEN
write /dev/freezer/thaw/freezer.state THAWED
# MARs for freecess
chown system system /dev/freezer
chown system system /dev/freezer/frozen
chown system system /dev/freezer/frozen/tasks
chown system system /dev/freezer/frozen/cgroup.procs
chown system system /dev/freezer/frozen/freezer.state
chown system system /dev/freezer/thaw
chown system system /dev/freezer/thaw/tasks
chown system system /dev/freezer/thaw/cgroup.procs
# MARs for freecess
chmod 0644 /dev/freezer/frozen/tasks
chmod 0644 /dev/freezer/frozen/cgroup.procs
chmod 0644 /dev/freezer/frozen/freezer.state
chmod 0644 /dev/freezer/thaw/tasks
chmod 0644 /dev/freezer/thaw/cgroup.procs
# SDHMS Slowdown : Freezer
mkdir /dev/freezer/abnormal
write /dev/freezer/abnormal/freezer.state THAWED
chown system system /dev/freezer/abnormal
chown system system /dev/freezer/abnormal/tasks
chown system system /dev/freezer/abnormal/cgroup.procs
chown system system /dev/freezer/abnormal/freezer.state
chmod 0644 /dev/freezer/abnormal/tasks
chmod 0644 /dev/freezer/abnormal/cgroup.procs
chmod 0644 /dev/freezer/abnormal/freezer.state
on boot
# SDHMS Slowdown : Cpuset
mkdir /dev/cpuset/abnormal
write /dev/cpuset/abnormal/cpus 0-3
copy /dev/cpuset/mems /dev/cpuset/abnormal/mems
chown system system /dev/cpuset/abnormal
chown system system /dev/cpuset/abnormal/tasks
chown system system /dev/cpuset/abnormal/cpus
chmod 0664 /dev/cpuset/abnormal/tasks
chmod 0664 /dev/cpuset/abnormal/cpus
mkdir /dev/cpuset/moderate
write /dev/cpuset/moderate/cpus 0-2,4-6
copy /dev/cpuset/mems /dev/cpuset/moderate/mems
chown system system /dev/cpuset/moderate
chown system system /dev/cpuset/moderate/tasks
chown system system /dev/cpuset/moderate/cpus
chmod 0664 /dev/cpuset/moderate/tasks
chmod 0664 /dev/cpuset/moderate/cpus
# SSWAP
write /proc/sys/vm/swappiness 130
# SQZR
on property:sys.boot_completed=1
swapon_all /vendor/etc/fstab.sqzr
on post-fs-data
# MST/NFC Switch
chmod 0660 /dev/mst_ctrl

@ -0,0 +1,258 @@
#
# Copyright (c) 2009-2016, 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Define fastmmi
service fastmmi /system_ext/bin/mmi
user root
group root
disabled
service vendor.mmid /vendor/bin/mmid
user root
group root
disabled
service mmi_diag /system_ext/bin/mmi_diag
class main
user root
group root oem_2901
disabled
on property:vendor.sys.boot_mode=ffbm
write ${persist.vendor.mmi.misc_dev_path} "ffbm-01"
on property:vendor.sys.boot_mode=qmmi
write ${persist.vendor.mmi.misc_dev_path} "qmmi"
on property:vendor.sys.boot_mode=normal
write ${persist.vendor.mmi.misc_dev_path} "normal"
# Creating a scratch storage on /data for factory testing.
on factory-fs && property:ro.bootmode=ffbm-00
mount tmpfs tmpfs /data
on factory-fs && property:ro.bootmode=ffbm-01
mount tmpfs tmpfs /data
# aligned the usb port with system standard, otherwise if only diag be added
# Then in QMMI mode, the whole Andoid be booted, but due to the ro.bootmode is
# not normal/unknow, then when it apply the default funcs, it will turn to MTP
# which cause the diag/Wwan/modem port all be lost in qmmi mode. Details:
# UsbDeviceManager.java---->getDefaultFunctions and trySetEnabledFunctions
on property:persist.vendor.usb.config=*
setprop persist.sys.usb.qmmi.func ${persist.vendor.usb.config}
on mmi && property:ro.bootmode=ffbm-00
# ========================================================
# This is FFBM only settings.
# ========================================================
#mkdir for factory data files.
mkdir /mnt/vendor/persist/FTM_AP 0750 system system
start fastmmi
# start qcom-post-boot to set the misc partition path property value
start qcom-post-boot
start mmi_diag
on mmi && property:ro.bootmode=ffbm-01
# ========================================================
# This is FFBM only settings.
# ========================================================
#mkdir for factory data files.
mkdir /mnt/vendor/persist/FTM_AP 0750 system system
start fastmmi
## start qcom-post-boot to set the misc partition path property value
start qcom-post-boot
start mmi_diag
on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-00
setprop sys.usb.config ${persist.vendor.usb.config}
on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-01
setprop sys.usb.config ${persist.vendor.usb.config}
on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-02
setprop sys.usb.config ${persist.vendor.usb.config}
on property:persist.vendor.usb.config=* && property:ro.bootmode=qmmi
setprop sys.usb.config ${persist.vendor.usb.config}
on ffbm
trigger early-fs
trigger factory-fs
trigger fs
trigger post-fs
# Mount fstab in init.{$device}.rc by mount_all with '--late' parameter
# to only mount entries with 'latemount'. This is needed if '--early' is
# specified in the previous mount_all command on the fs stage.
# With /system mounted and properties form /system + /factory available,
# some services can be started.
trigger late-fs
# Now we can mount /data. File encryption requires keymaster to decrypt
# /data, which in turn can only be loaded when system properties are present.
trigger post-fs-data
# Now we can start zygote for devices with file based encryption
trigger zygote-start
# Load persist properties and override properties (if enabled) from /data.
trigger load_persist_props_action
# Remove a file to wake up anything waiting for firmware.
trigger firmware_mounts_complete
trigger early-boot
trigger boot
trigger mmi
# ========================================================
# Start for audio TC
# ========================================================
service vendor.audio_tc53 /vendor/bin/mm-audio-ftm -tc 53
user audio
group audio
disabled
oneshot
service vendor.audio_tc51 /vendor/bin/mm-audio-ftm -tc 51
user audio
group audio
disabled
oneshot
service vendor.audio_tc56 /vendor/bin/mm-audio-ftm -tc 56
user audio
group audio
disabled
oneshot
service vendor.audio_tc222 /vendor/bin/mm-audio-ftm -tc 222
user audio
group audio
disabled
oneshot
service vendor.audio_tc228 /vendor/bin/mm-audio-ftm -tc 228
user audio
group audio
disabled
oneshot
service vendor.audio_tc229 /vendor/bin/mm-audio-ftm -tc 229
user audio
group audio
disabled
oneshot
service vendor.audio_tc230 /vendor/bin/mm-audio-ftm -tc 230
user audio
group audio
disabled
oneshot
service vendor.audio_tc225 /vendor/bin/mm-audio-ftm -tc 225
user audio
group audio
disabled
oneshot
service vendor.audio_tc246 /vendor/bin/mm-audio-ftm -tc 246
user audio
group audio
disabled
oneshot
service vendor.audio_tc247 /vendor/bin/mm-audio-ftm -tc 247
user audio
group audio
disabled
oneshot
service vendor.audio_tc250 /vendor/bin/mm-audio-ftm -tc 250
user audio
group audio
disabled
oneshot
service vendor.audio_tc251 /vendor/bin/mm-audio-ftm -tc 251
user audio
group audio
disabled
oneshot
service vendor.audio_tc252 /vendor/bin/mm-audio-ftm -tc 252
user audio
group audio
disabled
oneshot
service vendor.audio_tc253 /vendor/bin/mm-audio-ftm -tc 253
user audio
group audio
disabled
oneshot
service vendor.audio_tc11 /vendor/bin/mm-audio-ftm -tc 11 -file /data/vendor/audio/ftm_headset_mic_record.wav
user audio
group audio
disabled
oneshot
service vendor.audio_tc101 /vendor/bin/mm-audio-ftm -tc 101 -file /data/vendor/audio/ftm_mic1_record.wav
user audio
group audio
disabled
oneshot
service vendor.audio_tc102 /vendor/bin/mm-audio-ftm -tc 102 -file /data/vendor/audio/ftm_mic2_record.wav
user audio
group audio
disabled
oneshot
service vendor.audio_tc103 /vendor/bin/mm-audio-ftm -tc 103 -file /data/vendor/audio/ftm_mic3_record.wav
user audio
group audio
disabled
oneshot
service vendor.audio_tc104 /vendor/bin/mm-audio-ftm -tc 104 -file /data/vendor/audio/ftm_mic4_record.wav
user audio
group audio
disabled
oneshot
# ========================================================
# End for audio TC
# ========================================================

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,128 @@
# Copyright (c) 2013-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,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
on early-init
on init
symlink /dev/block/bootdevice/by-name/param /dev/block/param
# GPIO
chown root system /sys/class/secgpio_check/secgpio_check_all/check_requested_gpio
# CONFIG_SEC_DEBUG ++
# reset_reason
chown system system /proc/reset_reason
chmod 0440 /proc/reset_reason
chown system system /proc/reset_reason_extra_info
chmod 0400 /proc/reset_reason_extra_info
chown system system /proc/reset_summary
chmod 0400 /proc/reset_summary
chown system system /proc/reset_klog
chmod 0400 /proc/reset_klog
chown system system /proc/reset_tzlog
chmod 0400 /proc/reset_tzlog
chown system system /proc/store_lastkmsg
chmod 0440 /proc/store_lastkmsg
chown system system /proc/auto_comment
chmod 0400 /proc/auto_comment
chown system system /proc/reset_rwc
chmod 0440 /proc/reset_rwc
chown system system /proc/reset_history
chmod 0400 /proc/reset_history
# ERR.p(extend rr.p)
chown system system /proc/extra
chmod 0440 /proc/extra
# hw param ap info
chown system system /sys/class/sec/sec_hw_param/ap_info
chmod 0400 /sys/class/sec/sec_hw_param/ap_info
# hw param ddr info
chown system system /sys/class/sec/sec_hw_param/ddr_info
chmod 0400 /sys/class/sec/sec_hw_param/ddr_info
# hw param eye read info
chown system system /sys/class/sec/sec_hw_param/eye_rd_info
chmod 0400 /sys/class/sec/sec_hw_param/eye_rd_info
# hw param eye write1 info
chown system system /sys/class/sec/sec_hw_param/eye_wr1_info
chmod 0400 /sys/class/sec/sec_hw_param/eye_wr1_info
# hw param eye write2 info
chown system system /sys/class/sec/sec_hw_param/eye_wr2_info
chmod 0400 /sys/class/sec/sec_hw_param/eye_wr2_info
# hw param eye dcc info
chown system system /sys/class/sec/sec_hw_param/eye_dcc_info
chmod 0400 /sys/class/sec/sec_hw_param/eye_dcc_info
# hw param ap health
chown system system /sys/class/sec/sec_hw_param/ap_health
chmod 0600 /sys/class/sec/sec_hw_param/ap_health
# hw param last dcvs
chown system system /sys/class/sec/sec_hw_param/last_dcvs
chmod 0400 /sys/class/sec/sec_hw_param/last_dcvs
# hw param extra info
chown system system /sys/class/sec/sec_hw_param/extra_info
chmod 0400 /sys/class/sec/sec_hw_param/extra_info
# hw param extrb info
chown system system /sys/class/sec/sec_hw_param/extrb_info
chmod 0400 /sys/class/sec/sec_hw_param/extrb_info
# hw param extrc info
chown system system /sys/class/sec/sec_hw_param/extrc_info
chmod 0400 /sys/class/sec/sec_hw_param/extrc_info
# hw param extrt info
chown system system /sys/class/sec/sec_hw_param/extrt_info
chmod 0400 /sys/class/sec/sec_hw_param/extrt_info
# hw param extrm info
chown system system /sys/class/sec/sec_hw_param/extrm_info
chmod 0400 /sys/class/sec/sec_hw_param/extrm_info
# sdcard ramdump
chown system system /sys/module/sec_debug/parameters/dump_sink
chmod 0640 /sys/module/sec_debug/parameters/dump_sink
chown system system /sys/module/sec_debug/parameters/reboot_multicmd
chmod 0400 /sys/module/sec_debug/parameters/reboot_multicmd
chown system system /proc/rdx_bootdev
chmod 0220 /proc/rdx_bootdev
# CONFIG_SEC_DEBUG --
on late-init
on post-fs
on late-fs
on post-fs-data
on boot
# Permissions for sec_debug
chown root system /sys/class/sec/sec_debug/recovery_cause
on shutdown
# service definition
# on property triggers

@ -0,0 +1,488 @@
# Copyright (C) 2018 The Android Open Source Project
#
# Display configuration common for all android devices
#
on init
# Permissions for Display
# Brightness Permission
chown system system /sys/class/backlight/panel0-backlight/brightness
chmod 0664 /sys/class/backlight/panel0-backlight/brightness
chown system system /sys/class/backlight/panel1-backlight/brightness
chmod 0664 /sys/class/backlight/panel1-backlight/brightness
chown system system /sys/class/leds/lcd-backlight/brightness
chmod 0664 /sys/class/leds/lcd-backlight/brightness
# HMT
chown system system /sys/class/lcd/panel/hmt_on
chmod 0660 /sys/class/lcd/panel/hmt_on
chown system system /sys/class/lcd/panel/hmt_bright
chmod 0660 /sys/class/lcd/panel/hmt_bright
chown system system /sys/class/mdnie/mdnie/hmt_color_temperature
chmod 0660 /sys/class/mdnie/mdnie/hmt_color_temperature
chown system system /sys/class/lcd/panel1/hmt_on
chmod 0660 /sys/class/lcd/panel1/hmt_on
chown system system /sys/class/lcd/panel1/hmt_bright
chmod 0660 /sys/class/lcd/panel1/hmt_bright
chown system system /sys/class/mdnie/mdnie1/hmt_color_temperature
chmod 0660 /sys/class/mdnie/mdnie1/hmt_color_temperature
# mDNIe
chown system system /sys/class/mdnie/mdnie/lcdtype
chown system system /sys/class/mdnie/mdnie/lcd_power
chown system media_rw /sys/class/mdnie/mdnie/scenario
chmod 0660 /sys/class/mdnie/mdnie/scenario
chown system system /sys/class/mdnie/mdnie/tuning
chown system media_rw /sys/class/mdnie/mdnie/outdoor
chown system system /sys/class/mdnie/mdnie/mdnie_temp
chown system media_rw /sys/class/mdnie/mdnie/mode
chown system system /sys/class/mdnie/mdnie/negative
chown system media_rw /sys/class/mdnie/mdnie/playspeed
chown system media_rw /sys/class/mdnie/mdnie/accessibility
chown system system /sys/class/mdnie/mdnie/cabc
chown system system /sys/class/mdnie/mdnie/bypass
chmod 0660 /sys/class/mdnie/mdnie/bypass
chown system media_rw /sys/class/mdnie/mdnie/sensorRGB
chmod 0660 /sys/class/mdnie/mdnie/sensorRGB
chown system media_rw /sys/class/mdnie/mdnie/mdnie_ldu
chmod 0660 /sys/class/mdnie/mdnie/mdnie_ldu
chown system media_rw /sys/class/mdnie/mdnie/night_mode
chmod 0660 /sys/class/mdnie/mdnie/night_mode
chown system system /sys/class/mdnie/mdnie/color_lens
chmod 0660 /sys/class/mdnie/mdnie/color_lens
chown system media_rw /sys/class/mdnie/mdnie/hdr
chmod 0660 /sys/class/mdnie/mdnie/hdr
chown system media_rw /sys/class/mdnie/mdnie/whiteRGB
chmod 0660 /sys/class/mdnie/mdnie/whiteRGB
chown system system /sys/class/mdnie/mdnie/light_notification
chmod 0660 /sys/class/mdnie/mdnie/light_notification
chown system system /sys/class/mdnie/mdnie/afc
chmod 0660 /sys/class/mdnie/mdnie/afc
chown system system /sys/class/mdnie/mdnie1/lcdtype
chown system system /sys/class/mdnie/mdnie1/lcd_power
chown system media_rw /sys/class/mdnie/mdnie1/scenario
chmod 0660 /sys/class/mdnie/mdnie1/scenario
chown system system /sys/class/mdnie/mdnie1/tuning
chown system media_rw /sys/class/mdnie/mdnie1/outdoor
chown system system /sys/class/mdnie/mdnie1/mdnie_temp
chown system media_rw /sys/class/mdnie/mdnie1/mode
chown system system /sys/class/mdnie/mdnie1/negative
chown system media_rw /sys/class/mdnie/mdnie1/playspeed
chown system media_rw /sys/class/mdnie/mdnie1/accessibility
chown system system /sys/class/mdnie/mdnie1/cabc
chown system system /sys/class/mdnie/mdnie1/bypass
chmod 0660 /sys/class/mdnie/mdnie1/bypass
chown system media_rw /sys/class/mdnie/mdnie1/sensorRGB
chmod 0660 /sys/class/mdnie/mdnie1/sensorRGB
chown system media_rw /sys/class/mdnie/mdnie1/mdnie_ldu
chmod 0660 /sys/class/mdnie/mdnie1/mdnie_ldu
chown system media_rw /sys/class/mdnie/mdnie1/night_mode
chmod 0660 /sys/class/mdnie/mdnie1/night_mode
chown system system /sys/class/mdnie/mdnie1/color_lens
chmod 0660 /sys/class/mdnie/mdnie1/color_lens
chown system media_rw /sys/class/mdnie/mdnie1/hdr
chmod 0660 /sys/class/mdnie/mdnie1/hdr
chown system media_rw /sys/class/mdnie/mdnie1/whiteRGB
chmod 0660 /sys/class/mdnie/mdnie1/whiteRGB
chown system system /sys/class/mdnie/mdnie1/light_notification
chmod 0660 /sys/class/mdnie/mdnie1/light_notification
chown system system /sys/class/mdnie/mdnie1/afc
chmod 0660 /sys/class/mdnie/mdnie1/afc
mkdir /efs/afc 0700 system system
chmod 700 /efs/afc
mkdir /efs/etc 0700 system system
chmod 700 /efs/etc
# adaptive control
chown system system /sys/class/lcd/panel/adaptive_control
chmod 0660 /sys/class/lcd/panel/adaptive_control
chown system system /sys/class/lcd/panel1/adaptive_control
chmod 0660 /sys/class/lcd/panel1/adaptive_control
# CCB (color waekness)
chown system system /sys/class/backlight/panel/weakness_ccb
chmod 0660 /sys/class/backlight/panel/weakness_ccb
chown system system /sys/class/backlight/panel1/weakness_ccb
chmod 0660 /sys/class/backlight/panel1/weakness_ccb
# weakness_hbm_comp (Gallery Max brightness == 2)
chown system system /sys/class/backlight/panel/weakness_hbm_comp
chmod 0660 /sys/class/backlight/panel/weakness_hbm_comp
chown system system /sys/class/backlight/panel1/weakness_hbm_comp
chmod 0660 /sys/class/backlight/panel1/weakness_hbm_comp
# AOD(Always On Display)
chown system system /sys/class/lcd/panel/alpm
chmod 0660 /sys/class/lcd/panel/alpm
chown system system /sys/class/lcd/panel1/alpm
chmod 0660 /sys/class/lcd/panel1/alpm
# Active Clock in AOD
chown system system /dev/act_clk
chmod 0660 /dev/act_clk
# Self Display in AOD
chown system system /dev/self_display
chmod 0660 /dev/self_display
chown system system /dev/self_display1
chmod 0660 /dev/self_display1
# Self Move in IDLE
chown system system /sys/class/lcd/panel/self_move
chmod 0660 /sys/class/lcd/panel/self_move
chown system system /sys/class/lcd/panel1/self_move
chmod 0660 /sys/class/lcd/panel1/self_move
# MAFPC
chown system system /dev/mafpc
chmod 0660 /dev/mafpc
chown system system /dev/mafpc1
chmod 0660 /dev/mafpc1
chown system system /sys/class/lcd/panel/mafpc_check
chmod 0660 /sys/class/lcd/panel/mafpc_check
chown system system /sys/class/lcd/panel1/mafpc_check
chmod 0660 /sys/class/lcd/panel1/mafpc_check
# POC
mkdir /efs/etc/poc 0700 system system
chmod 700 /efs/etc/poc
mkdir /cache/poc 0700 system system
chmod 700 /cache/poc
chown system system /dev/poc
chmod 0660 /dev/poc
chown system system /sys/class/lcd/panel/poc
chmod 0660 /sys/class/lcd/panel/poc
chown system system /sys/class/lcd/panel1/poc
chmod 0660 /sys/class/lcd/panel1/poc
# HMT
chown system system /sys/class/lcd/panel/hmt_on
chmod 0660 /sys/class/lcd/panel/hmt_on
chown system system /sys/class/lcd/panel/hmt_bright
chmod 0660 /sys/class/lcd/panel/hmt_bright
chown system system /sys/class/mdnie/mdnie/hmt_color_temperature
chmod 0660 /sys/class/mdnie/mdnie/hmt_color_temperature
chown system system /sys/class/lcd/panel1/hmt_on
chmod 0660 /sys/class/lcd/panel1/hmt_on
chown system system /sys/class/lcd/panel1/hmt_bright
chmod 0660 /sys/class/lcd/panel1/hmt_bright
chown system system /sys/class/mdnie/mdnie1/hmt_color_temperature
chmod 0660 /sys/class/mdnie/mdnie1/hmt_color_temperature
setprop sys.daydream.connected 0
# chown system system /sys/class/graphics/fb0/msm_cmd_autorefresh_en
# chmod 0660 /sys/class/graphics/fb0/msm_cmd_autorefresh_en
# IRC
chown system system /sys/class/lcd/panel/irc_mode
chmod 0660 /sys/class/lcd/panel/irc_mode
chown system system /sys/class/lcd/panel1/irc_mode
chmod 0660 /sys/class/lcd/panel1/irc_mode
# MCD_MODE
chown system system /sys/class/lcd/panel/mcd_mode
chmod 0660 /sys/class/lcd/panel/mcd_mode
chown system system /sys/class/lcd/panel1/mcd_mode
chmod 0660 /sys/class/lcd/panel1/mcd_mode
# BRIGHTDOT
chown system system /sys/class/lcd/panel/brightdot
chmod 0660 /sys/class/lcd/panel/brightdot
chown system system /sys/class/lcd/panel1/brightdot
chmod 0660 /sys/class/lcd/panel1/brightdot
# MCD_RESISTANCE
chown system system /sys/class/lcd/panel/mcd_resistance
chmod 0660 /sys/class/lcd/panel/mcd_resistance
chown system system /sys/class/lcd/panel1/mcd_resistance
chmod 0660 /sys/class/lcd/panel1/mcd_resistance
# GAMMA_FLASH
chown system system /sys/class/lcd/panel/gamma_flash
chmod 0660 /sys/class/lcd/panel/gamma_flash
chown system system /sys/class/lcd/panel1/gamma_flash
chmod 0660 /sys/class/lcd/panel1/gamma_flash
# X-Talk
chown system system /sys/class/lcd/panel/xtalk_mode
chmod 0660 /sys/class/lcd/panel/xtalk_mode
chown system system /sys/class/lcd/panel1/xtalk_mode
chmod 0660 /sys/class/lcd/panel1/xtalk_mode
# MST
chown system system /sys/class/lcd/panel/mst
chmod 0660 /sys/class/lcd/panel/mst
chown system system /sys/class/lcd/panel1/mst
chmod 0660 /sys/class/lcd/panel1/mst
# DDI H/W Cursor
chown system system /sys/class/lcd/panel/hw_cursor
chmod 0660 /sys/class/lcd/panel/hw_cursor
chown system system /sys/class/lcd/panel1/hw_cursor
chmod 0660 /sys/class/lcd/panel1/hw_cursor
# Gram Checksum Test
chown system system /sys/class/lcd/panel/gct
chmod 0660 /sys/class/lcd/panel/gct
chown system system /sys/class/lcd/panel1/gct
chmod 0660 /sys/class/lcd/panel1/gct
# Gray Spot Test
chown system system /sys/class/lcd/panel/grayspot
chmod 0660 /sys/class/lcd/panel/grayspot
chown system system /sys/class/lcd/panel1/grayspot
chmod 0660 /sys/class/lcd/panel1/grayspot
# POC
chown system system /sys/class/lcd/panel/poc
chmod 0660 /sys/class/lcd/panel/poc
chown system system /sys/class/lcd/panel1/poc
chmod 0660 /sys/class/lcd/panel1/poc
# POC_MCA
chown system system /sys/class/lcd/panel/poc_mca
chmod 0440 /sys/class/lcd/panel/poc_mca
chown system system /sys/class/lcd/panel1/poc_mca
chmod 0440 /sys/class/lcd/panel1/poc_mca
# POC_INFO
chown system system /sys/class/lcd/panel/poc_info
chmod 0440 /sys/class/lcd/panel/poc_info
chown system system /sys/class/lcd/panel1/poc_info
chmod 0440 /sys/class/lcd/panel1/poc_info
# POC OFF
chown system system /sys/class/lcd/panel/poc_onoff
chmod 0660 /sys/class/lcd/panel/poc_onoff
chown system system /sys/class/lcd/panel1/poc_onoff
chmod 0660 /sys/class/lcd/panel1/poc_onoff
# IRC OFF
chown system system /sys/class/lcd/panel/irc_onoff
chmod 0660 /sys/class/lcd/panel/irc_onoff
chown system system /sys/class/lcd/panel1/irc_onoff
chmod 0660 /sys/class/lcd/panel1/irc_onoff
# ISC Defect Test
chown system system /sys/class/lcd/panel/isc_defect
chmod 0660 /sys/class/lcd/panel/isc_defect
chown system system /sys/class/lcd/panel1/isc_defect
chmod 0660 /sys/class/lcd/panel1/isc_defect
# LCD Big Data (DPUI / DPCI)
chown system system /sys/class/lcd/panel/dpui
chown system system /sys/class/lcd/panel/dpui_dbg
chown system system /sys/class/lcd/panel/dpci
chown system system /sys/class/lcd/panel/dpci_dbg
chown system system /sys/class/lcd/panel1/dpui
chown system system /sys/class/lcd/panel1/dpui_dbg
chown system system /sys/class/lcd/panel1/dpci
chown system system /sys/class/lcd/panel1/dpci_dbg
# Panel
chown system system /sys/class/lcd/panel/window_type
chown radio system /sys/class/lcd/panel/power_reduce
chown radio system /sys/class/lcd/panel/siop_enable
chown radio system /sys/class/lcd/panel/temperature
chown radio system /sys/class/lcd/panel/tuning
chown radio system /sys/class/lcd/panel/lux
chown radio system /sys/class/lcd/panel/partial_disp
chmod 0660 /sys/class/lcd/panel/partial_disp
chown radio system /sys/class/lcd/panel/cover_control
chmod 0660 /sys/class/lcd/panel/cover_control
chown system system /sys/class/lcd/panel/ldu_correction
chmod 0660 /sys/class/lcd/panel/ldu_correction
chown radio system /sys/class/lcd/panel/force_flip
chown system system /sys/class/lcd/panel1/window_type
chown radio system /sys/class/lcd/panel1/power_reduce
chown radio system /sys/class/lcd/panel1/siop_enable
chown radio system /sys/class/lcd/panel1/temperature
chown radio system /sys/class/lcd/panel1/tuning
chown radio system /sys/class/lcd/panel1/lux
chown radio system /sys/class/lcd/panel1/partial_disp
chmod 0660 /sys/class/lcd/panel1/partial_disp
chown radio system /sys/class/lcd/panel1/cover_control
chmod 0660 /sys/class/lcd/panel1/cover_control
chown system system /sys/class/lcd/panel1/ldu_correction
chmod 0660 /sys/class/lcd/panel1/ldu_correction
chown radio system /sys/class/lcd/panel1/force_flip
# COPR
chown system system /sys/class/lcd/panel/copr_roi
chmod 0660 /sys/class/lcd/panel/copr_roi
chown system system /sys/class/lcd/panel/read_copr
chmod 0660 /sys/class/lcd/panel/read_copr
chown system system /sys/class/lcd/panel/copr
chmod 0660 /sys/class/lcd/panel/copr
chown system system /sys/class/lcd/panel/brt_avg
chmod 0660 /sys/class/lcd/panel/brt_avg
chown system system /sys/class/lcd/panel1/copr_roi
chmod 0660 /sys/class/lcd/panel1/copr_roi
chown system system /sys/class/lcd/panel1/read_copr
chmod 0660 /sys/class/lcd/panel1/read_copr
chown system system /sys/class/lcd/panel1/copr
chmod 0660 /sys/class/lcd/panel1/copr
chown system system /sys/class/lcd/panel1/brt_avg
chmod 0660 /sys/class/lcd/panel1/brt_avg
# SELF MASK
chown system system /sys/class/lcd/panel/self_mask
chmod 0660 /sys/class/lcd/panel/self_mask
chown system system /sys/class/lcd/panel1/self_mask
chmod 0660 /sys/class/lcd/panel1/self_mask
chown system system /sys/class/lcd/panel/self_mask_check
chmod 0660 /sys/class/lcd/panel/self_mask_check
chown system system /sys/class/lcd/panel1/self_mask_check
chmod 0660 /sys/class/lcd/panel1/self_mask_check
# DYNAMIC HLPM
chown system system /sys/class/lcd/panel/dynamic_hlpm
chmod 0660 /sys/class/lcd/panel/dynamic_hlpm
chown system system /sys/class/lcd/panel1/dynamic_hlpm
chmod 0660 /sys/class/lcd/panel1/dynamic_hlpm
# LCD DYNAMIC FPS USE TE
chown system system /sys/class/lcd/panel/dynamic_fps_use_te
chmod 0660 /sys/class/lcd/panel/dynamic_fps_use_te
chown system system /sys/class/lcd/panel1/dynamic_fps_use_te
chmod 0660 /sys/class/lcd/panel1/dynamic_fps_use_te
# SPI intf select
chown system system /sys/class/lcd/panel/spi_if_sel
chmod 0660 /sys/class/lcd/panel/spi_if_sel
# CCD state Test
chown system system /sys/class/lcd/panel/ccd_state
chmod 0660 /sys/class/lcd/panel/ccd_state
chown system system /sys/class/lcd/panel1/ccd_state
chmod 0660 /sys/class/lcd/panel1/ccd_state
# FINGERPRINT MASK
chown system system /sys/class/lcd/panel/mask_brightness
chmod 0660 /sys/class/lcd/panel/mask_brightness
chown system system /sys/class/lcd/panel/actual_mask_brightness
chmod 0660 /sys/class/lcd/panel/actual_mask_brightness
# UB CONN DET
chown system system /sys/class/lcd/panel/conn_det
chmod 0660 /sys/class/lcd/panel/conn_det
chown system system /sys/class/lcd/panel1/conn_det
chmod 0660 /sys/class/lcd/panel1/conn_det
# TE CHECK
chown system system /sys/class/lcd/panel/te_check
chmod 0660 /sys/class/lcd/panel/te_check
chown system system /sys/class/lcd/panel1/te_check
chmod 0660 /sys/class/lcd/panel1/te_check
# DIA
chown system system /sys/class/lcd/panel/dia
chmod 0660 /sys/class/lcd/panel/dia
chown system system /sys/class/lcd/panel1/dia
chmod 0660 /sys/class/lcd/panel1/dia
# dynamic_freq
chown system system /sys/class/lcd/panel/dynamic_freq
chmod 0660 /sys/class/lcd/panel/dynamic_freq
chown system system /sys/class/lcd/panel1/dynamic_freq
chmod 0660 /sys/class/lcd/panel1/dynamic_freq
# Finger Print Green Circle
chown system system /sys/class/lcd/panel/fp_green_circle
chmod 0660 /sys/class/lcd/panel/fp_green_circle
chown system system /sys/class/lcd/panel1/fp_green_circle
chmod 0660 /sys/class/lcd/panel1/fp_green_circle
# Window Color
chown system system /sys/class/lcd/panel/window_color
chmod 0660 /sys/class/lcd/panel/window_color
chown system system /sys/class/lcd/panel1/window_color
chmod 0660 /sys/class/lcd/panel1/window_color
# Demux_stress Test
chown system system /sys/class/lcd/panel/demux_stress
chmod 0660 /sys/class/lcd/panel/demux_stress
chown system system /sys/class/lcd/panel1/demux_stress
chmod 0660 /sys/class/lcd/panel1/demux_stress
# VRR
chown system system /sys/class/lcd/panel/vrr
chmod 0440 /sys/class/lcd/panel/vrr
chown system system /sys/class/lcd/panel/vrr_state
chmod 0440 /sys/class/lcd/panel/vrr_state
chown system system /sys/class/lcd/panel/vrr_lfd
chmod 0660 /sys/class/lcd/panel/vrr_lfd
chown system system /sys/class/drm/card0/device/perf_mode
chmod 0666 /sys/class/drm/card0/device/perf_mode
# Motto
chown system system /sys/class/lcd/panel/motto/swing
chmod 0660 /sys/class/lcd/panel/motto/swing
chown system system /sys/class/lcd/panel/motto/emphasis
chmod 0660 /sys/class/lcd/panel/motto/emphasis
# ioctl_power_ctrl
chown system system /sys/class/lcd/panel/ioctl_power_ctrl
chmod 0440 /sys/class/lcd/panel/ioctl_power_ctrl
# CELL ID
chown system system /sys/class/lcd/panel/cell_id
# SVC
chown system system /sys/class/lcd/panel/SVC_OCTA_DDI_CHIPID
chmod 0440 /sys/class/lcd/panel/SVC_OCTA_DDI_CHIPID
chown system system /sys/class/lcd/panel1/SVC_OCTA_DDI_CHIPID
chmod 0440 /sys/class/lcd/panel1/SVC_OCTA_DDI_CHIPID

@ -0,0 +1,120 @@
# Copyright (c) 2013-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,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
import /vendor/etc/init/hw/init.samsung.bsp.rc
import /vendor/etc/init/hw/init.samsung.display.rc
on early-init
mkdir /mnt/vendor/efs 0771 radio system
mkdir /mnt/vendor/persist 0771 root system
on init
symlink /dev/block/bootdevice/by-name/steady /dev/block/steady
symlink /dev/block/bootdevice/by-name/persistent /dev/block/persistent
# Create carrier folder for HiddenMenu
on post-fs
mkdir /efs/carrier 0755 system system
restorecon_recursive /efs
restorecon_recursive /mnt/vendor/efs
chown radio system /mnt/vendor/efs
chmod 0771 /mnt/vendor/efs
chown system radio /efs
chmod 0771 /efs
restorecon /efs
# carrier partition
chown system system /carrier
chmod 0771 /carrier
restorecon /carrier
# Meta event
chown system radio /sys/class/sensors/sensor_dev/flush
# Fingerprint sensor
chmod 0660 /dev/goodix_fp
chown system system /dev/goodix_fp
chown system radio /sys/class/fingerprint/fingerprint/type_check
chown system radio /sys/class/fingerprint/fingerprint/name
chown system radio /sys/class/fingerprint/fingerprint/vendor
chown system radio /sys/class/fingerprint/fingerprint/adm
chown system radio /sys/class/fingerprint/fingerprint/bfs_values
chown system radio /sys/class/fingerprint/fingerprint/rb
mkdir /efs/biometrics 0770 system system
mkdir /efs/biometrics/meta 0770 system system
# spu partition
chown system system /spu
chmod 0771 /spu
restorecon /spu
on boot
# Permission for nfc, eSE driver
chmod 0660 /dev/pn547
chmod 0660 /dev/p61
chown nfc nfc /dev/pn547
chown system system /dev/p61
chmod 0660 /dev/sec-nfc
chown nfc nfc /dev/sec-nfc
# Permissions for FMM
chown system system /sys/class/sec/sec_debug/FMM_lock
chmod 0660 /sys/class/sec/sec_debug/FMM_lock
# Permissions for Performance
chown root system /sys/devices/platform/soc/5000000.qcom,kgsl-3d0/kgsl/kgsl-3d0/max_clock_mhz
chown root system /sys/devices/platform/soc/5000000.qcom,kgsl-3d0/kgsl/kgsl-3d0/min_clock_mhz
chmod 0664 /sys/devices/platform/soc/5000000.qcom,kgsl-3d0/kgsl/kgsl-3d0/max_clock_mhz
chmod 0664 /sys/devices/platform/soc/5000000.qcom,kgsl-3d0/kgsl/kgsl-3d0/min_clock_mhz
chown root system /dev/stune/top-app/schedtune.boost
chmod 0664 /dev/stune/top-app/schedtune.boost
chown system system /sys/class/input_booster/level
chown system system /sys/class/input_booster/head
chown system system /sys/class/input_booster/tail
chown system system /sys/class/input_booster/touchkey/level
chown system system /sys/class/input_booster/touchkey/freq
chown system system /sys/class/input_booster/touchkey/time
chmod 0664 /sys/class/input_booster/level
chmod 0664 /sys/class/input_booster/head
chmod 0664 /sys/class/input_booster/tail
chmod 0664 /sys/class/input_booster/touchkey/level
chmod 0664 /sys/class/input_booster/touchkey/freq
chmod 0664 /sys/class/input_booster/touchkey/time
chown root system /sys/class/devfreq/soc:qcom,cpu6-cpu-ddr-latfloor/min_freq
chown root system /sys/class/devfreq/soc:qcom,cpu6-cpu-ddr-latfloor/max_freq
chmod 0664 /sys/class/devfreq/soc:qcom,cpu6-cpu-ddr-latfloor/min_freq
chmod 0664 /sys/class/devfreq/soc:qcom,cpu6-cpu-ddr-latfloor/max_freq
# FINGERPRINT FRAMEWORK : starts goodixfingerprintd
service goodixd /vendor/bin/goodixfingerprintd
class late_start
user system
group media_rw system

@ -0,0 +1,450 @@
# Copyright (c) 2013-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,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
import /vendor/etc/init/hw/init.samsung.rc
# CAUTION: init.carrier.rc is replaced with init.${ro.product.model}.rc from Q os
import /vendor/etc/init/hw/init.${ro.product.vendor.device}.rc
import /vendor/etc/init/hw/init.${ro.product.vendor.name}.rc
on early-init
write /proc/sys/kernel/sched_boost 1
mkdir /dsp 0771 media media
mkdir /firmware 0771 system system
mkdir /bt_firmware 0771 system system
symlink /data/tombstones /tombstones
on init
write /dev/stune/foreground/schedtune.sched_boost_no_override 1
write /dev/stune/top-app/schedtune.sched_boost_no_override 1
write /dev/stune/schedtune.colocate 0
write /dev/stune/background/schedtune.colocate 0
write /dev/stune/system-background/schedtune.colocate 0
write /dev/stune/foreground/schedtune.colocate 0
write /dev/stune/top-app/schedtune.colocate 1
write /dev/stune/top-app/schedtune.prefer_idle 1
write /sys/module/qpnp_rtc/parameters/poweron_alarm 1
wait /dev/block/platform/soc/${ro.boot.bootdevice}
symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice
# foreground-boost
mkdir /dev/stune/foreground-boost
chown system system /dev/stune/foreground-boost
chown system system /dev/stune/foreground-boost/tasks
chmod 0664 /dev/stune/foreground-boost/tasks
write /dev/stune/foreground-boost/schedtune.sched_boost_no_override 1
chown system system /dev/stune/foreground/schedtune.sched_boost_no_override
# foreground-boost
mkdir /dev/cpuset/foreground-boost
copy /dev/cpuset/cpus /dev/cpuset/foreground-boost/cpus
copy /dev/cpuset/mems /dev/cpuset/foreground-boost/mems
chown system system /dev/cpuset/foreground-boost
chown system system /dev/cpuset/foreground-boost/tasks
chown system system /dev/cpuset/foreground/cpus
chmod 0664 /dev/cpuset/foreground/cpus
chmod 0664 /dev/cpuset/foreground-boost/tasks
# set property to boost-optimize
setprop sys.perf.boostopt 1
# GPIS HINT (SM6150 / SM7125)
mkdir /dev/cpuset/sf
copy /dev/cpuset/cpus /dev/cpuset/sf/cpus
copy /dev/cpuset/mems /dev/cpuset/sf/mems
chown system system /dev/cpuset/sf/tasks
chown system system /dev/cpuset/sf/cgroup.procs
chown system system /dev/cpuset/sf/cpus
chmod 0664 /dev/cpuset/sf/cpus
chown system system /dev/cpuset/sf/cpus
write /dev/cpuset/sf/cpus 0-7
chown system system /dev/cpuset/tasks
chown system system /dev/cpuset/cgroup.procs
chmod 0664 /dev/cpuset/tasks
on early-fs
start vold
on fs
start hwservicemanager
mount_all --early
chown root system /mnt/vendor/persist
chmod 0771 /mnt/vendor/persist
restorecon_recursive /mnt/vendor/persist
mkdir /mnt/vendor/persist/data 0700 system system
on post-fs
# set RLIMIT_MEMLOCK to 64MB
setrlimit 8 67108864 67108864
write /dev/ipa 1
on late-fs
wait_for_prop hwservicemanager.ready true
exec_start wait_for_keymaster
mount_all --late
service sec_nvm /vendor/bin/sec_nvm
class core
user system
group system
on post-fs-data
mkdir /data/tombstones 0771 system system
mkdir /tombstones/modem 0771 system system
mkdir /tombstones/lpass 0771 system system
mkdir /tombstones/wcnss 0771 system system
mkdir /tombstones/dsps 0771 system system
mkdir /data/vendor/hbtp 0750 system system
mkdir /persist/qti_fp 0700 system system
mkdir /data/vendor/nnhal 0700 system system
# For cpusets initialize for Silver Only first and then Silver + Gold
# Silver Only configuration cannot work with 0-7
on boot
write /dev/cpuset/audio-app/cpus 1-2
chown system system /sys/kernel/hbtp/display_pwr
start rmt_storage
start rfs_access
write /dev/cpuset/top-app/cpus 0-7
write /dev/cpuset/foreground-boost/cpus 0-7
write /dev/cpuset/foreground/cpus 0-7
write /dev/cpuset/restricted/cpus 1-3
write /dev/cpuset/background/cpus 1-3
write /dev/cpuset/system-background/cpus 1-3
# Add a cpuset for the camera daemon
# We want all cores for camera
mkdir /dev/cpuset/camera-daemon
write /dev/cpuset/camera-daemon/cpus 0-3
write /dev/cpuset/camera-daemon/mems 0
chown cameraserver cameraserver /dev/cpuset/camera-daemon
chown cameraserver cameraserver /dev/cpuset/camera-daemon/tasks
chmod 0660 /dev/cpuset/camera-daemon/tasks
#Load WLAN driver
# exec_background u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules/ qca_cld3_wlan
# exec_background u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules/5.4-gki qca_cld3_wlan
# for WIFI MAC address
mkdir /mnt/vendor/efs/wifi 0755 wifi wifi
chown wifi wifi /mnt/vendor/efs/wifi/.mac.info
chmod 0644 /mnt/vendor/efs/wifi/.mac.info
chown wifi wifi /mnt/vendor/efs/wifi/.mac.cob
chmod 0644 /mnt/vendor/efs/wifi/.mac.cob
#USB controller configuration
setprop vendor.usb.rndis.func.name "gsi"
setprop vendor.usb.rmnet.func.name "gsi"
setprop vendor.usb.rmnet.inst.name "rmnet"
setprop vendor.usb.dpl.inst.name "dpl"
setprop vendor.usb.qdss.inst.name "qdss"
setprop sys.usb.configfs 1
#start camera server as daemon
#service qcamerasvr /system/bin/mm-qcamera-daemon
# class late_start
# user camera
# group camera system inet input graphics
#pd-mapper
service vendor.pd_mapper /vendor/bin/pd-mapper
class core
user system
group system
#Peripheral manager
service vendor.per_mgr /vendor/bin/pm-service
class core
user system
group system
ioprio rt 4
service vendor.per_proxy /vendor/bin/pm-proxy
class core
user system
group system
disabled
on property:init.svc.vendor.per_mgr=running
start vendor.per_proxy
on property:sys.shutdown.requested=*
stop vendor.per_proxy
on charger
setprop sys.usb.controller a600000.dwc3
setprop sys.usb.configfs 1
on property:vendor.display.lcd_density=640
setprop dalvik.vm.heapgrowthlimit 512m
on property:vendor.display.lcd_density=560
setprop dalvik.vm.heapgrowthlimit 256m
on property:vendor.display.lcd_density=240
setprop dalvik.vm.heapgrowthlimit 96m
on property:vendor.display.lcd_density=160
setprop dalvik.vm.heapgrowthlimit 96m
## import cne init file
#on post-fs
# export LD_PRELOAD /vendor/lib/libNimsWrap.so
#
## Allow usb charging to be disabled peristently
#on property:persist.usb.chgdisabled=1
# write /sys/class/power_supply/battery/charging_enabled 0
#
#on property:persist.usb.chgdisabled=0
# write /sys/class/power_supply/battery/charging_enabled 1
service spdaemon /vendor/bin/spdaemon
class core
user system
group system
#service qosmgrd /system/bin/qosmgr /system/etc/qosmgr_rules.xml
# user system
# group system
# disabled
#
#service security-check1 /sbin/security_boot_check system
# class core
# oneshot
#
#service security-check2 /sbin/security_boot_check recovery
# class core
# oneshot
#
#service time_daemon /system/vendor/bin/time_daemon
# class late_start
# user root
# group root
#service audiod /vendor/bin/audiod
# class late_start
# user system
# group system
#
#service usf_tester /vendor/bin/usf_tester
# user system
# group system inet
# disabled
#
#service usf_epos /vendor/bin/usf_epos
# user system
# group system inet
# disabled
#
#service usf_gesture /vendor/bin/usf_gesture
# user system
# group system inet
# disabled
#
#service usf_sync_gesture /system/bin/usf_sync_gesture
# user system
# group system inet
# disabled
#
#service usf_p2p /system/bin/usf_p2p
# user system
# group system inet
# disabled
#
#service usf_hovering /vendor/bin/usf_hovering
# user system
# group system inet
# disabled
#
#service usf_proximity /system/bin/usf_proximity
# user system
# group system inet
# disabled
#
#service usf-post-boot /system/vendor/bin/sh /system/etc/usf_post_boot.sh
# class late_start
# user root
# disabled
# oneshot
#
#on property:init.svc.bootanim=stopped
# start usf-post-boot
#
#
#on boot
# insmod /system/lib/modules/adsprpc.ko
# insmod /system/lib/modules/mhi.ko
## access permission for secure touch
# chmod 0660 /sys/devices/f9966000.i2c/i2c-1/1-004a/secure_touch_enable
# chmod 0440 /sys/devices/f9966000.i2c/i2c-1/1-004a/secure_touch
# chmod 0660 /sys/devices/f9966000.i2c/i2c-1/1-0020/secure_touch_enable
# chmod 0440 /sys/devices/f9966000.i2c/i2c-1/1-0020/secure_touch
# chown system drmrpc /sys/devices/f9966000.i2c/i2c-1/1-004a/secure_touch_enable
# chown system drmrpc /sys/devices/f9966000.i2c/i2c-1/1-004a/secure_touch
# chown system drmrpc /sys/devices/f9966000.i2c/i2c-1/1-0020/secure_touch_enable
# chown system drmrpc /sys/devices/f9966000.i2c/i2c-1/1-0020/secure_touch
#
#
#
#service mdm_helper /system/bin/mdm_helper
# class core
# onrestart setprop ro.service.mdm_helper_restarted "true"
# disabled
#
#service mdm_helper_proxy /system/bin/mdm_helper_proxy
# class core
# disabled
#
#service mdm_launcher /system/bin/sh /init.mdm.sh
# class main
# oneshot
#
#service qcamerasvr /system/bin/mm-qcamera-daemon
# class late_start
# user camera
# group camera system inet input graphics
#
# Stop mdm_helper_proxy in case of shutdown
#on property:sys.shutdown.requested=*
# stop mdm_helper_proxy
#
# Stop mdm_helper_proxy on APQ target
#on property:ro.radio.noril=yes
# stop mdm_helper_proxy
#
#on property:persist.airplane.mode.pwr.svg=enabled
# setprop ro.mdm_helper_proxy_req false
#
#on property:init.svc.ril-daemon=running
# setprop ro.mdm_helper_proxy_req true
#
## Start mdm_helper_proxy
#on property:ro.mdm_helper_proxy_req=true
# start mdm_helper_proxy
#
## QCA1530 SoC core detect
#service gnss-detect /system/vendor/bin/gnss.qca1530.sh detect
# class core
# oneshot
#
## QCA1530 SoC late_start group trigger
#service gnss-init /system/vendor/bin/gnss.qca1530.sh init
# class late_start
# oneshot
#
## QCA1530 SoC Service Daemon
#service gnss-svcd /system/vendor/bin/gnss.qca1530.sh start
# class late_start
# user root
# group gps system qcom_diag diag log inet net_raw
# disabled
on property:vold.decrypt=trigger_restart_framework
start vendor.cnss_diag
service vendor.cnss_diag /system/vendor/bin/cnss_diag -q -f -t HELIUM
class main
user system
group system wifi inet sdcard_rw media_rw diag
oneshot
service ppd /vendor/bin/mm-pp-dpps
class late_start
user system
group system graphics
socket pps stream 0660 system system
disabled
on property:init.svc.hwcomposer-2-1=stopped
stop ppd
on property:init.svc.hwcomposer-2-1=running
start ppd
on property:init.svc.hwcomposer-2-1=restarting
stop ppd
#service nqs /system/bin/nqs
# class late_start
# socket nqs_qsb_comm stream 660 system system
# user system
# group drmrpc
#
#service adsprpcd /system/vendor/bin/adsprpcd
# class main
# user media
# group media
#
##Start picture quality tuning service
#service vqttoolservice /system/bin/vqttoolservice
# class late_start
# socket vqtss stream 0660 system system
# user system
# group system
service hbtp /system/vendor/bin/hbtp_daemon
class main
user system
group system
disabled
service qfp-daemon /vendor/bin/qfp-daemon
class late_start
user system
group system drmrpc diag input
service energy-awareness /system/vendor/bin/energy-awareness
class main
user system
group system
oneshot
service smcinvoked /system/bin/smcinvoked
class main
user system
group system
service dcvs-sh /vendor/bin/init.qti.dcvs.sh
class late_start
user root
group root system
disabled
oneshot
on property:vendor.dcvs.prop=1
start dcvs-sh

@ -0,0 +1,496 @@
# Copyright (c) 2012-2015, 2017-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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Firmware directory Path
# Below macro will be read by uevent and path will
# be added to search path for firmware loading
firmware_directories /vendor/firmware_mnt/image/ /vendor/firmware-modem/image/
# the DIAG device node is not world writable/readable.
/dev/diag 0660 system oem_2901
/dev/mhi_*_pipe_4 0660 system system
/dev/genlock 0666 system system
/dev/wlan 0660 wifi wifi
/dev/kgsl 0666 system system
/dev/kgsl-3d0 0666 system system
/dev/kgsl-2d0 0666 root root
/dev/kgsl-2d1 0666 root root
/dev/ion 0664 system system
/dev/membuf 0664 system system
/dev/rtc0 0660 system system
/dev/smd0 0660 system system
/dev/smd4 0660 system system
/dev/smd_cxm_qmi 0640 radio radio
/dev/smd5 0660 system system
/dev/smd6 0660 system system
/dev/smd7 0660 bluetooth bluetooth
/dev/ccid_bridge 0660 system system
/dev/ipa 0660 radio radio
/dev/wwan_ioctl 0660 radio radio
/dev/ipaNatTable 0660 radio radio
/dev/rmnet_ctrl 0660 usb usb
/dev/dpl_ctrl 0660 usb usb
/dev/ipa_odl_ctl 0660 radio radio
/dev/ipa_adpl 0660 system oem_2905
/dev/synx_device 0660 root camera
# dev ril bridge
/dev/drb 0660 system radio
/dev/hab 0666 system system
/dev/iio:device* 0664 system system
#permissions for UFS RPMB BSG device node
/dev/0:0:0:49476 0600 system system
#permissions for USB
/dev/usb_mtp_gadget 0660 system mtp
/dev/android_ssusbcon 0660 system system
/sys/class/android_usb/android0 f_rndis/ethaddr 0660 system system
/sys/class/android_usb/android0 terminal_version 0660 system system
#permissions for CSVT
/dev/smd11 0660 radio radio
#permsissions for BT/FM
/dev/smd2 0660 bluetooth bluetooth
/dev/smd3 0660 bluetooth bluetooth
/dev/btpower 0660 bluetooth system
#permissions for pta
/dev/pta 0660 system system
/dev/radio0 0640 system system
/dev/rfcomm0 0660 bluetooth bluetooth
/dev/ttyUSB0 0660 bluetooth bluetooth
/dev/ttyHS8 0660 root radio
/dev/smdcntl0 0640 radio radio
/dev/smdcntl1 0640 radio radio
/dev/smdcntl2 0640 radio radio
/dev/smdcntl3 0640 radio radio
/dev/smdcntl4 0640 radio radio
/dev/smdcntl5 0640 radio radio
/dev/smdcntl6 0640 radio radio
/dev/smdcntl7 0640 radio radio
/dev/smdcntl8 0640 radio radio
/dev/smdcnt_rev0 0640 radio radio
/dev/smdcnt_rev1 0640 radio radio
/dev/smdcnt_rev2 0640 radio radio
/dev/smdcnt_rev3 0640 radio radio
/dev/smdcnt_rev4 0640 radio radio
/dev/smdcnt_rev5 0640 radio radio
/dev/smdcnt_rev6 0640 radio radio
/dev/smdcnt_rev7 0640 radio radio
/dev/smdcnt_rev8 0640 radio radio
/dev/smuxctl32 0640 radio radio
/dev/sdioctl0 0640 radio radio
/dev/sdioctl1 0640 radio radio
/dev/sdioctl2 0640 radio radio
/dev/sdioctl3 0640 radio radio
/dev/sdioctl4 0640 radio radio
/dev/sdioctl5 0640 radio radio
/dev/sdioctl6 0640 radio radio
/dev/sdioctl7 0640 radio radio
/dev/sdioctl8 0640 radio radio
/dev/rmnet_mux_ctrl 0640 radio radio
/dev/hsicctl0 0640 radio radio
/dev/hsicctl1 0640 radio radio
/dev/hsicctl2 0640 radio radio
/dev/hsicctl3 0640 radio radio
/dev/hsicctl4 0640 radio radio
/dev/hsicctl5 0640 radio radio
/dev/hsicctl6 0640 radio radio
/dev/hsicctl7 0640 radio radio
/dev/hsicctl8 0640 radio radio
/dev/hsicctl9 0640 radio radio
/dev/hsicctl10 0640 radio radio
/dev/hsicctl11 0640 radio radio
/dev/hsicctl12 0640 radio radio
/dev/hsicctl13 0640 radio radio
/dev/hsicctl14 0640 radio radio
/dev/hsicctl15 0640 radio radio
/dev/hsicctl16 0640 radio radio
/dev/mhi_*_pipe_14 0640 radio radio
/dev/mhi_*_pipe_16 0640 radio radio
/dev/mhi_*_pipe_32 0640 radio radio
/dev/at_usb0 0640 radio radio
/dev/at_mdm0 0660 system radio
/dev/video* 0660 system camera
/dev/cvp* 0660 system camera
/dev/media* 0660 system camera
/dev/v4l-subdev* 0660 system camera
/dev/qseecom 0660 system drmrpc
/dev/qce 0660 system drmrpc
/dev/smcinvoke 0660 system drmrpc
/dev/qsee_ipc_irq_spss 0660 system drmrpc
/dev/seemplog 0660 system system
/dev/pft 0660 system drmrpc
/dev/spcom 0660 system system
/dev/spss_utils 0660 system system
/dev/sp_kernel 0660 system system
/dev/sp_nvm 0660 system system
/dev/sp_ssr 0660 system system
/dev/sp_keymaster 0660 system system
/dev/sp_keymaster_ssr 0660 system system
/dev/sec_nvm_* 0660 system system
/dev/cryptoapp 0660 system system
/dev/spdaemon_ssr 0660 system system
/dev/spu_hal_ssr 0660 system system
/dev/iuicc* 0660 system system
/dev/gemini0 0660 system camera
/dev/jpeg0 0660 system camera
/dev/jpeg1 0660 system camera
/dev/jpeg2 0660 system camera
/dev/jpeg3 0660 system camera
/dev/adsprpc-smd 0664 system system
/dev/adsprpc-smd-secure 0644 system system
/dev/system_health_monitor 0644 radio system
/dev/mdss_rotator 0664 system system
#QDSS
/dev/byte-cntr 0660 system oem_2902
/dev/mhi_qdss 0660 system oem_2902
/sys/class/qdss_bridge/mhi_qdss mode 0660 system oem_2902
#qg
/dev/qg 0660 system system
/dev/qg_battery 0660 system system
#qvr
/dev/qvr_external_sensor_ioctl 0660 system system
/sys/kernel/qvr_external_sensor/fd 0660 system system
# wlan
/dev/wcnss_wlan 0660 system system
/dev/wcnss_ctrl 0660 system system
/sys/devices/soc/a000000.qcom,wcnss-wlan/net/wlan0/queues/rx-* rps_cpus 0660 system system
/sys/devices/soc/a000000.qcom,wcnss-wlan/net/p2p0/queues/rx-* rps_cpus 0660 system system
/sys/devices/platform/soc/18800000.qcom,icnss/net/wlan*/queues/rx-* rps_cpus 0660 system system
/sys/devices/platform/soc/1c00000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/net/wlan*/queues/rx-* rps_cpus 0660 system system
/dev/spidev0.0 0660 system audio
/dev/i2c-7 0660 system audio
/dev/msm_camera/* 0660 system camera
/dev/gemini/ 0660 system camera
/dev/mercury0 0660 system camera
/dev/msm_vidc_reg 0660 system audio
/dev/msm_vidc_dec 0660 system audio
/dev/msm_vidc_dec_sec 0660 system audio
/dev/msm_vidc_enc 0660 system audio
/dev/msm_rotator 0660 system system
/dev/hw_random 0600 root root
/dev/sdsprpc-smd 0660 system system
#permissions for audio
/dev/wcd_dsp0_control 0660 system audio
/dev/wcd-dsp-glink 0660 system audio
/dev/audio_slimslave 0660 system audio
/dev/msm_qcelp 0660 system audio
/dev/msm_evrc 0660 system audio
/dev/msm_wma 0660 system audio
/dev/msm_wmapro 0660 system audio
/dev/msm_alac 0660 system audio
/dev/msm_ape 0660 system audio
/dev/msm_amrnb 0660 system audio
/dev/msm_amrwb 0660 system audio
/dev/msm_amrwbplus 0660 system audio
/dev/msm_aac 0660 system audio
/dev/msm_multi_aac 0660 system audio
/dev/msm_aac_in 0660 system audio
/dev/msm_qcelp_in 0660 system audio
/dev/msm_evrc_in 0660 system audio
/dev/msm_amrnb_in 0660 system audio
/dev/msm_amrwb_in 0660 system audio
/dev/msm_a2dp_in 0660 system audio
/dev/msm_ac3 0660 system audio
/dev/msm_audio_cal 0660 system audio
/dev/msm_hweffects 0660 system audio
/dev/msm_cad 0660 system audio
/dev/msm_fm 0660 system audio
/dev/msm_mvs 0660 system audio
/dev/msm_pcm_lp_dec 0660 system audio
/dev/msm_preproc_ctl 0660 system audio
/dev/msm_rtac 0660 system audio
/dev/msm_voicememo 0660 system audio
/dev/ttyHSL1 0660 system system
/dev/ttyHS1 0660 system system
/dev/mdm 0660 system radio
/sys/devices/virtual/smdpkt/smdcntl* open_timeout 0664 radio radio
/dev/sdio_tty_ciq_00 0660 system system
/dev/tty_sdio_00 0660 system system
/dev/ttyGS0 0660 system system
/dev/i2c-5 0660 media media
/dev/avtimer 0660 system audio
/dev/spidev2.0 0660 system audio
# DVB devices
/dev/dvb/adapter0/demux* 0440 media media
/dev/dvb/adapter0/dvr* 0660 media media
/dev/dvb/adapter0/video* 0660 media media
# Broadcast devices
/dev/tsc_mux0 0660 media media
/dev/tsc_ci0 0660 media media
# sensors
/dev/sensors 0660 system system
/sys/devices/i2c-12/12-* pollrate_ms 0664 system system
/sys/devices/f9925000.i2c/i2c-0/0-* enable 0660 input system
/sys/devices/f9925000.i2c/i2c-0/0-* poll_delay 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* enable 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* poll_delay 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* enable_wakeup 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* max_latency 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* flush 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* calibrate 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* enable 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* poll_delay 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* enable_wakeup 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* max_latency 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* flush 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* calibrate 0660 input system
/sys/devices/virtual/optical_sensors/proximity ps_adc 0660 input system
/sys/devices/virtual/optical_sensors/proximity ps_poll_delay 0660 input system
/sys/devices/virtual/optical_sensors/lightsensor ls_auto 0660 input system
/sys/devices/virtual/optical_sensors/lightsensor ls_poll_delay 0660 input system
/sys/devices/virtual/input/input* poll 0660 input system
/sys/devices/virtual/input/input* pollrate_ms 0660 input system
/sys/devices/soc/78b7000.i2c/i2c-3/3-0020/input/input* secure_touch 0440 system drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-0020/input/input* secure_touch_enable 0660 system drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-0038/input/input* secure_touch 0440 system drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-0038/input/input* secure_touch_enable 0660 system drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-004b/input/input* secure_touch 0440 system drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-004b/input/input* secure_touch_enable 0660 system drmrpc
/sys/devices/soc/c179000.i2c/i2c-5/5-0020/input/input* secure_touch 0440 system drmrpc
/sys/devices/soc/c179000.i2c/i2c-5/5-0020/input/input* secure_touch_enable 0660 system drmrpc
/sys/devices/platform/soc/a98000.i2c/i2c-2/2-0020/input/input* secure_touch 0440 system drmrpc
/sys/devices/platform/soc/a98000.i2c/i2c-2/2-0020/input/input* secure_touch_enable 0660 system drmrpc
/sys/devices/platform/soc/a84000.i2c/i2c-2/2-0020/input/input* secure_touch 0440 system drmrpc
/sys/devices/platform/soc/a84000.i2c/i2c-2/2-0020/input/input* secure_touch_enable 0660 system drmrpc
# GNSS Device premissions
/dev/gnss_sirf 0660 gps gps
# laser sensor access
/sys/devices/virtual/input/input* enable_ps_sensor 0660 system input
/sys/devices/virtual/input/input* set_delay_ms 0660 system input
/sys/devices/virtual/input/input* do_flush 0660 system input
# vm_bms
/dev/vm_bms 0660 system system
/dev/battery_data 0660 system system
# wlan
/dev/wcnss_wlan 0660 system system
/dev/wcnss_ctrl 0660 system system
/sys/devices/soc/600000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/net/wlan0/queues/rx-* rps_cpus 0660 system system
/sys/devices/soc/600000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/net/p2p0/queues/rx-* rps_cpus 0660 system system
# wigig
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/fst_link_loss 0660 wifi wifi
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/thermal_throttling 0660 system system
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/snr_thresh 0660 wifi wifi
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/net/wigig0/queues/rx-0/rps_cpus 0660 system system
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/net/wigig0/gro_flush_timeout 0660 system system
/sys/devices/virtual/net/bond0 queues/rx-0/rps_cpus 0660 system system
#nfc permissions
/dev/nfc-nci 0660 nfc nfc
/dev/nq-nci 0660 nfc nfc
/dev/assd 0660 nfc nfc
# UIO devices
/dev/uio0 0660 system system
/dev/uio1 0660 system system
/dev/uio2 0660 system system
# SSR devices
/dev/subsys_* 0640 system system
# Ultrasound device
/dev/usf1 0660 system system
# Ramdump devices
/dev/ramdump* 0640 system system
# Fingerprint device
/dev/qbt* 0660 system system
/sys/class/fts/touch_aoi aoi_set 0660 root system
/sys/class/fts/touch_aoi power_set 0660 root system
#ImproveTouch device
/dev/hbtp_input 0660 system system
/dev/hbtp_vm 0660 system system
# Add device block for FRP
/dev/block/platform/soc/7824900.sdhci/by-name/config 0600 system system
/dev/block/platform/soc/7464900.sdhci/by-name/frp 0600 system system
/dev/block/platform/soc/624000.ufshc/by-name/frp 0600 system system
/dev/block/platform/soc/1da4000.ufshc/by-name/frp 0600 system system
/dev/block/platform/soc/c0c4000.sdhci/by-name/frp 0600 system system
/dev/block/platform/soc/1d84000.ufshc/by-name/frp 0600 system system
/dev/block/platform/soc/7c4000.sdhci/by-name/frp 0600 system system
/dev/block/platform/soc/4744000.sdhci/by-name/frp 0600 system system
/dev/block/platform/soc/4804000.ufshc/by-name/frp 0600 system system
# This is temporary while using SD card for initial bring-up
/dev/block/platform/soc/8804000.sdhci/by-name/frp 0600 system system
# Reactivation Lock
/dev/block/platform/soc/1d84000.ufshc/by-name/steady 0660 system system
/dev/block/platform/soc/7c4000.sdhci/by-name/steady 0660 system system
# Google FRP solution
/dev/block/platform/soc/1d84000.ufshc/by-name/persistent 0660 system system
/dev/block/platform/soc/7c4000.sdhci/by-name/persistent 0660 system system
# Param permission
/dev/block/platform/soc/1d84000.ufshc/by-name/param 0660 root system
/dev/block/platform/soc/7c4000.sdhci/by-name/param 0660 root system
# Kmsg device
/dev/kmsg 0620 root system
# LED class devices
/sys/class/leds/red delay_on 0640 system system
/sys/class/leds/red delay_off 0640 system system
/sys/class/leds/red breath 0640 system system
/sys/class/leds/red trigger 0640 system system
/sys/class/leds/green delay_on 0640 system system
/sys/class/leds/green delay_off 0640 system system
/sys/class/leds/green breath 0640 system system
/sys/class/leds/green trigger 0640 system system
/sys/class/leds/blue delay_on 0640 system system
/sys/class/leds/blue delay_off 0640 system system
/sys/class/leds/blue breath 0640 system system
/sys/class/leds/blue trigger 0640 system system
# NPU device
/dev/msm_npu 0644 system system
# USB role switch
/sys/class/dual_role_usb/* data_role 0660 system system
/sys/class/dual_role_usb/* power_role 0660 system system
/sys/class/dual_role_usb/* mode 0660 system system
#Memory Offline
/sys/devices/system/memory/memory* state 0660 system system
/sys/devices/virtual/hdcp/msm_hdcp min_level_change 0664 system graphics
# sys-fs display
/sys/class/graphics/fb* hpd 0664 system graphics
/sys/class/graphics/fb* res_info 0664 system graphics
/sys/class/graphics/fb* vendor_name 0664 system graphics
/sys/class/graphics/fb* product_description 0664 system graphics
/sys/class/graphics/fb* video_mode 0664 system graphics
/sys/class/graphics/fb* format_3d 0664 system graphics
/sys/class/graphics/fb* s3d_mode 0664 system graphics
/sys/class/graphics/fb* dynamic_fps 0664 system graphics
/sys/class/graphics/fb* msm_fb_dfps_mode 0664 system graphics
/sys/class/graphics/fb* hdr_stream 0664 system graphics
/sys/class/graphics/fb* cec/enable 0664 system graphics
/sys/class/graphics/fb* cec/logical_addr 0664 system graphics
/sys/class/graphics/fb* cec/rd_msg 0664 system graphics
/sys/class/graphics/fb* pa 0664 system graphics
/sys/class/graphics/fb* cec/wr_msg 0600 system graphics
/sys/class/graphics/fb* hdcp/tp 0664 system graphics
/sys/class/graphics/fb* hdcp2p2/min_level_change 0660 system graphics
/sys/class/graphics/fb* hdmi_audio_cb 0600 audioserver audio
/sys/class/graphics/fb* lineptr_value 0664 system graphics
/sys/class/graphics/fb* msm_fb_persist_mode 0664 system graphics
/sys/class/graphics/fb0 idle_time 0664 system graphics
/sys/class/graphics/fb0 dynamic_fps 0664 system graphics
/sys/class/graphics/fb0 dyn_pu 0664 system graphics
/sys/class/graphics/fb0 modes 0664 system graphics
/sys/class/graphics/fb0 mode 0664 system graphics
/sys/class/graphics/fb0 msm_cmd_autorefresh_en 0664 system graphics
/sys/devices/platform/soc/ae00000.qcom,mdss_mdp power/control 0664 system graphics
#asm330 sensor
#common sensors files
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* buffer/enable 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* buffer/length 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* buffer/watermark 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* discharded_samples 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* current_timestamp_clock 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* hwfifo_flush 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* hwfifo_watermark 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* hwfifo_watermark_max 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* mount_matrix 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* name 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* sampling_frequency 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* sampling_frequency_available 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_timestamp_en 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_timestamp_index 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_timestamp_type 0664 system system
# standard iio accel attributes
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_accel_scale_available 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_accel_x_raw 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_accel_x_scale 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_accel_y_raw 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_accel_y_scale 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_accel_z_raw 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_accel_z_scale 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_accel_x_en 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_accel_x_index 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_accel_x_type 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_accel_y_en 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_accel_y_index 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_accel_y_type 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_accel_z_en 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_accel_z_index 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_accel_z_type 0664 system system
# standard iio gyro attributes
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_anglvel_scale_available 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_anglvel_x_raw 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_anglvel_x_scale 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_anglvel_y_raw 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_anglvel_y_scale 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_anglvel_z_raw 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_anglvel_z_scale 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_anglvel_x_en 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_anglvel_x_index 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_anglvel_x_type 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_anglvel_y_en 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_anglvel_y_index 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_anglvel_y_type 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_anglvel_z_en 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_anglvel_z_index 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* scan_elements/in_anglvel_z_type 0664 system system
# standard iio temp attributes
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_temp_offset 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_temp_raw 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_temp_scale 0664 system system
/sys/devices/platform/soc/*.i2c/i2c-*/*-*/iio:device* in_temp_scale_available 0664 system system

@ -0,0 +1,68 @@
on post-fs-data
# for boot_wlan
chown wifi wifi /sys/kernel/boot_wlan/boot_wlan
chmod 0640 /sys/kernel/boot_wlan/boot_wlan
# for WIFI qcwlanstate
chown wifi wifi /sys/wifi/qcwlanstate
chmod 0644 /sys/wifi/qcwlanstate
chown wifi wifi /sys/wifi/wifiver
chmod 0640 /sys/wifi/wifiver
chown wifi wifi /sys/wifi/softap
chmod 0640 /sys/wifi/softap
symlink /data/vendor/ramdump /data/vendor/log/wifi/ramdump
chown system wifi /data/vendor/log/wifi/ramdump
# for WIFI MEMDUMP
# The default value of below memdump file is set in SecProductFeature
write /data/vendor/conn/.memdump.info 0
# for WIFI Antenna
write /data/vendor/conn/.wificable.info E
chown system root /data/vendor/conn/.wificable.info
chmod 0666 /data/vendor/conn/.wificable.info
chown wifi root /sys/wifi/wificable
chmod 0664 /sys/wifi/wificable
# for WIFI TRP/TIS
chown wifi wifi /data/vendor/conn/.psm.info
chmod 0644 /data/vendor/conn/.psm.info
chown wifi wifi /sys/wifi/pm
chmod 0640 /sys/wifi/pm
# for WIFI Antenna Selection
chown wifi wifi /data/vendor/conn/.ant.info
chmod 0644 /data/vendor/conn/.ant.info
chown wifi wifi /sys/wifi/ant
chmod 0640 /sys/wifi/ant
on property:vendor.wlan.ramdump_mode=0
write /sys/bus/msm_subsys/devices/subsys9/restart_level "RELATED"
stop vendor.ss_ramdump
on property:vendor.wlan.ramdump_mode=2
write /sys/module/subsystem_restart/parameters/enable_ramdumps 2
write /sys/bus/msm_subsys/devices/subsys9/restart_level "RELATED"
stop vendor.ss_ramdump
start vendor.ss_ramdump
on property:vendor.wlan.ramdump_mode=3
write /sys/module/subsystem_restart/parameters/enable_ramdumps 2
write /sys/bus/msm_subsys/devices/subsys9/restart_level "SYSTEM"
stop vendor.ss_ramdump
start vendor.ss_ramdump
on property:sys.boot_completed=1
chown wifi wifi /sys/module/wlan/parameters/fwpath
chmod 0644 /sys/module/wlan/parameters/fwpath
chown wifi wifi /sys/module/wlan/parameters/con_mode
chmod 0644 /sys/module/wlan/parameters/con_mode
on boot
# for wlan FTM app
service ftm_ptt /system/bin/ftm_ptt -d
user root
group radio system
disabled

@ -0,0 +1,70 @@
# Wi-Fi init file
on post-fs-data
mkdir /data/vendor/conn 0771 wifi wifi
mkdir /data/vendor/wifi 0771 wifi wifi
mkdir /data/vendor/wifi/wpa 0770 wifi wifi
mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
mkdir /data/vendor/log/wifi 0770 wifi system
# for WIFI TRP/TIS
chown wifi wifi /data/vendor/conn/.psm.info
chmod 0640 /data/vendor/conn/.psm.info
# for WIFI Antenna Selection
chown wifi wifi /data/vendor/conn/.ant.info
chmod 0640 /data/vendor/conn/.ant.info
# for WIFI Version
chown wifi wifi /data/vendor/conn/.wifiver.info
chmod 0644 /data/vendor/conn/.wifiver.info
# for WIFI MEMDUMP
# The default value of below memdump file is set in SecProductFeature
#write /data/vendor/conn/.memdump.info 2
chown wifi wifi /data/vendor/conn/.memdump.info
chmod 0640 /data/vendor/conn/.memdump.info
# for WIFI hotspot
chown wifi wifi /data/vendor/conn/.softap.info
chmod 0644 /data/vendor/conn/.softap.info
chown system wifi /vendor/etc/wifi/indoorchannel.info
chmod 0664 /vendor/etc/wifi/indoorchannel.info
# for WIFI MAC
mkdir /mnt/vendor/efs/wifi 0755 wifi wifi
chown wifi wifi /mnt/vendor/efs/wifi/.mac.info
chmod 0644 /mnt/vendor/efs/wifi/.mac.info
chown wifi wifi /mnt/vendor/efs/wifi/.mac.cob
chmod 0644 /mnt/vendor/efs/wifi/.mac.cob
chown wifi wifi /sys/wifi/mac_addr
chmod 0640 /sys/wifi/mac_addr
on boot
setprop wifi.interface wlan0
# start for WiFi MFG (TestMode)
service mfgloader /vendor/bin/hw/mfgloader
class wlanfactorytest
user wifi
group wifi inet net_raw net_admin
capabilities NET_ADMIN NET_RAW SYS_MODULE
disabled
oneshot
service macloader /vendor/bin/hw/macloader
class main
user wifi
group wifi inet net_raw net_admin
capabilities NET_ADMIN NET_RAW SYS_MODULE
oneshot
service wlandutservice /system/bin/wlandutservice
class wlanfactorytest
user system
group system wifi net_raw net_admin inet
capabilities NET_ADMIN NET_RAW
disabled
oneshot
# end of WiFi MFG (TestMode)

@ -0,0 +1,11 @@
type optics_file, fs_type;
allow optics_file labeledfs:filesystem associate;
type prism_file, fs_type;
allow prism_file labeledfs:filesystem associate;
type misc_file, fs_type;
allow misc_file labeledfs:filesystem associate;
type spu_file, fs_type;
allow spu_file labeledfs:filesystem associate;

@ -0,0 +1,8 @@
/optics(/.*)? u:object_r:optics_file:s0
/prism(/.*)? u:object_r:prism_file:s0
/misc(/.*)? u:object_r:misc_file:s0
/spu(/.*)? u:object_r:spu_file:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.light@2\.0-service\.samsung u:object_r:hal_light_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.drm@1\.3-service\.widevine u:object_r:vendor_hal_drm_widevine_exec:s0
/(vendor|system/vendor)/bin/vendor\.samsung\.hardware\.security\.widevine\.keyprov@1\.0-service u:object_r:vendor_hal_drm_widevine_exec:s0

@ -0,0 +1,45 @@
#!/bin/bash
#
# Copyright (C) 2017-2021 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
set -e
DEVICE_COMMON=sm7125-common
VENDOR=samsung
# Load extractutils and do some sanity checks
MY_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "$MY_DIR" ]]; then MY_DIR="$PWD"; fi
ANDROID_ROOT="${MY_DIR}/../../.."
HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
if [ ! -f "${HELPER}" ]; then
echo "Unable to find helper script at ${HELPER}"
exit 1
fi
source "${HELPER}"
# Initialize the helper
setup_vendor "${DEVICE_COMMON}" "${VENDOR}" "${ANDROID_ROOT}" true
# Warning headers and guards
write_headers "a52q"
write_makefiles "${MY_DIR}/proprietary-files.txt" true
###################################################################################################
# CUSTOM PART START #
###################################################################################################
OUTDIR=vendor/$VENDOR/$DEVICE_COMMON
EOF
###################################################################################################
# CUSTOM PART END #
###################################################################################################
# Done
write_footers

@ -0,0 +1,2 @@
# idk
ro.vendor.qti.va_aosp.support=1

@ -0,0 +1,117 @@
# Audio
vendor.audio_hal.period_size=192
ro.vendor.audio.sdk.fluencetype=none
persist.vendor.audio.fluence.voicecall=true
persist.vendor.audio.fluence.voicerec=false
persist.vendor.audio.fluence.speaker=true
persist.vendor.audio.fluence.tmic.enabled=false
persist.vendor.audio.spv3.enable=true
persist.vendor.audio.avs.afe_api_version=2
vendor.audio.tunnel.encode=false
persist.vendor.audio.ras.enabled=false
vendor.audio.offload.buffer.size.kb=32
vendor.audio.offload.track.enable=true
vendor.voice.path.for.pcm.voip=true
vendor.audio.offload.multiaac.enable=true
vendor.audio.dolby.ds2.enabled=false
vendor.audio.dolby.ds2.hardbypass=false
vendor.audio.offload.multiple.enabled=false
vendor.audio.offload.passthrough=false
ro.vendor.audio.sdk.ssr=false
vendor.audio.offload.gapless.enabled=true
vendor.audio.safx.pbe.enabled=false
vendor.audio.parser.ip.buffer.size=262144
vendor.audio.flac.sw.decoder.24bit=true
vendor.audio.hal.boot.timeout.ms=20000
vendor.audio.use.sw.alac.decoder=true
vendor.audio.use.sw.ape.decoder=true
vendor.audio.use.sw.mpegh.decoder=true
vendor.audio.hw.aac.encoder=true
vendor.audio_hal.in_period_size=144
vendor.audio_hal.period_multiplier=3
vendor.audio.adm.buffering.ms=2
vendor.audio.volume.headset.gain.depcal=true
persist.vendor.audio.fluence.voicecomm=true
vendor.audio.hal.output.suspend.supported=true
aaudio.mmap_policy=2
aaudio.mmap_exclusive_policy=2
aaudio.hw_burst_min_usec=2000
vendor.audio.enable.mirrorlink=false
persist.vendor.audio.voicecall.speaker.stereo=true
vendor.audio.feature.spkr_prot.enable=true
vendor.audio.feature.a2dp_offload.enable=true
vendor.audio.feature.compr_voip.enable=true
vendor.audio.feature.compress_meta_data.enable=true
vendor.audio.feature.deepbuffer_as_primary.enable=true
vendor.audio.feature.display_port.enable=true
vendor.audio.feature.fm.enable=true
vendor.audio.feature.hdmi_edid.enable=true
vendor.audio.feature.hfp.enable=true
vendor.audio.feature.usb_offload.enable=true
vendor.audio.feature.snd_mon.enable=true
vendor.audio.feature.multi_voice_session.enable=false
vendor.audio.feature.external_dsp.enable=false
vendor.audio.feature.external_speaker.enable=false
vendor.audio.feature.hwdep_cal.enable=false
vendor.audio.feature.concurrent_capture.enable=false
vendor.audio.feature.maxx_audio.enable=false
vendor.audio.feature.audiozoom.enable=false
# Bluetooth
persist.vendor.bt.a2dp_offload_cap=sbc-aptx-aptxtws-aptxhd-aac-ldac
ro.bluetooth.a2dp_offload.supported=true
persist.bluetooth.a2dp_offload.disabled=false
persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac
persist.vendor.bt.aac_frm_ctl.enabled=true
vendor.qcom.bluetooth.soc=cherokee
# Display
debug.sf.hw=0
debug.egl.hw=0
debug.mdpcomp.logs=0
vendor.gralloc.disable_ubwc=0
vendor.display.disable_scaler=0
vendor.display.disable_inline_rotator=1
vendor.display.disable_decimation=1
vendor.display.enable_null_display=0
vendor.display.disable_excl_rect=0
vendor.display.comp_mask=0
vendor.display.enable_default_color_mode=1
vendor.display.enable_optimize_refresh=1
vendor.display.disable_ui_3d_tonemap=1
vendor.display.disable_ext_anim=1
debug.sf.early_phase_offset_ns=100000
debug.sf.early_app_phase_offset_ns=100000
debug.sf.early_gl_phase_offset_ns=100000
debug.sf.early_gl_app_phase_offset_ns=100000
debug.sf.high_fps_early_phase_offset_ns=100000
debug.sf.high_fps_early_gl_phase_offset_ns=100000
debug.sf.high_fps_late_app_phase_offset_ns=100000
debug.sf.high_fps_late_sf_phase_offset_ns=100000
debug.sf.use_content_detection_v2=false
vendor.display.idle_time=0
vendor.display.idle_time_inactive=0
vendor.display.disable_dynamic_fps=1
vendor.display.disable_hw_recovery_dump=1
vendor.display.dataspace_saturation_matrix=1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0
debug.sf.enable_gl_backpressure=1
ro.surface_flinger.protected_contents=true
ro.surface_flinger.has_wide_color_display=true
ro.surface_flinger.has_HDR_display=true
ro.surface_flinger.use_color_management=true
ro.surface_flinger.wcg_composition_dataspace=143261696
ro.surface_flinger.force_hwc_copy_for_virtual_displays=true
ro.surface_flinger.max_virtual_display_dimension=4096
ro.surface_flinger.max_frame_buffer_acquired_buffers=3
ro.surface_flinger.use_content_detection_for_refresh_rate=false
ro.hardware.vulkan=adreno
ro.hardware.egl=adreno
ro.opengles.version=196610
# Media
debug.stagefright.omx_default_rank=0
debug.stagefright.ccodec=1
# USB
vendor.usb.diag.func.name=diag
vendor.usb.use_ffs_mtp=0
Loading…
Cancel
Save