guamp: Initial device tree

- Initial device tree for guamp device
- Based in Qualcomm SM6115

Signed-off-by: GarfieldFernando <ferchito.zoma@gmail.com>
This commit is contained in:
GarfieldFernando 2021-01-18 15:03:21 -06:00
commit eddf6fbda6
137 changed files with 37450 additions and 0 deletions

5
Android.mk Normal file
View file

@ -0,0 +1,5 @@
LOCAL_PATH := $(call my-dir)
ifeq ($(TARGET_DEVICE),guamp)
include $(call all-makefiles-under,$(LOCAL_PATH))
include $(CLEAR_VARS)
endif

7
AndroidProducts.mk Normal file
View file

@ -0,0 +1,7 @@
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/lineage_guamp.mk
COMMON_LUNCH_CHOICES := \
lineage_guamp-eng \
lineage_guamp-user \
lineage_guamp-userdebug

20
BoardConfig.mk Normal file
View file

@ -0,0 +1,20 @@
DEVICE_PATH := device/motorola/guamp
BOARD_VENDOR := motorola
# Security patch level
VENDOR_SECURITY_PATCH := 2020-11-01
# HIDL
DEVICE_MANIFEST_FILE := $(DEVICE_PATH)/manifest.xml
DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/android.hardware.atrace@1.0-service.xml
DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/android.hardware.cas@1.1-service.xml
DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/android.hardware.gnss@2.0-service-qti.xml
DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/android.hardware.graphics.mapper-impl-qti-display.xml
DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/android.hardware.usb@1.1-service.xml
DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/vendor.qti.gnss@3.0-service.xml
DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/vendor.qti.hardware.display.allocator-service.xml
DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/vendor.qti.hardware.display.composer-service.xml
DEVICE_MATRIX_FILE := $(DEVICE_PATH)/compatibility_matrix.xml
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := $(DEVICE_PATH)/framework_compatibility_matrix.xml
-include vendor/motorola/guamp/BoardConfigVendor.mk

20
README.md Normal file
View file

@ -0,0 +1,20 @@
Device configuration for Motorola Moto G9/G9 Play (Guamp)
==================================
Basic | Spec Sheet
-------:|:-------------------------
CPU | Octa-core 4x2.0 GHz Kryo 260 Gold & 4x1.8 GHz Kryo 260 Silver
CHIPSET | Qualcomm SD6115 Snapdragon 662
GPU | Adreno 610
Memory | 2/3/4GB
Shipped Android Version | 10.0 (Q)
Internal Storage | 64/128GB
microSD | Up to 512 GB (uses shared SIM slot)
Battery | 5000 mAh
Dimensions | 165.2 x 75.7 x 9.2 mm
Display | 720 x 1600 pixels, 6.5-inch IPS LCD
Rear Camera | 48 MP, f/1.7, (wide), 1/2.0", 0.8µm, PDAF, 2 MP, f/2.4, (macro), 2 MP, f/2.4, (depth)
Front Camera | 8 MP (f/2.2, 1.12µm, HDR)
![Motorola g9 play](https://fdn2.gsmarena.com/vv/pics/motorola/motorola-moto-g9-play-2.jpg "Motorola Moto G9 Play")

View file

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

View file

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

View file

@ -0,0 +1,37 @@
<!-- 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.
-->
<manifest version="1.0" type="device">
<hal format="hidl">
<name>android.hardware.gnss</name>
<transport>hwbinder</transport>
<fqname>@1.0::IGnss/gnss_vendor</fqname>
<fqname>@1.1::IGnss/default</fqname>
<fqname>@2.0::IGnss/default</fqname>
</hal>
</manifest>

View file

@ -0,0 +1,50 @@
<!--
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.
-->
<manifest version="1.0" type="device">
<hal format="hidl">
<name>vendor.qti.hardware.display.mapper</name>
<transport arch="32+64">passthrough</transport>
<version>3.0</version>
<interface>
<name>IQtiMapper</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.graphics.mapper</name>
<transport arch="32+64">passthrough</transport>
<version>3.0</version>
<interface>
<name>IMapper</name>
<instance>default</instance>
</interface>
</hal>
</manifest>

View file

@ -0,0 +1,39 @@
<!-- 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.
-->
<manifest version="1.0" type="device">
<hal format="hidl">
<name>android.hardware.usb</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IUsb</name>
<instance>default</instance>
</interface>
<fqname>@1.1::IUsb/default</fqname>
</hal>
</manifest>

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- A2dp Audio HAL Audio Policy Configuration file -->
<module name="a2dp" halVersion="2.0">
<mixPorts>
<mixPort name="a2dp output" role="source"/>
<mixPort name="a2dp input" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100,48000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
</mixPort>
</mixPorts>
<devicePorts>
<devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100"
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100"
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100"
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP In" type="AUDIO_DEVICE_IN_BLUETOOTH_A2DP" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100,48000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
</devicePort>
</devicePorts>
<routes>
<route type="mix" sink="BT A2DP Out"
sources="a2dp output"/>
<route type="mix" sink="BT A2DP Headphones"
sources="a2dp output"/>
<route type="mix" sink="BT A2DP Speaker"
sources="a2dp output"/>
<route type="mix" sink="a2dp input"
sources="BT A2DP In"/>
</routes>
</module>

62
audio/audio_effects.xml Normal file
View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<audio_effects_conf version="2.0" xmlns="http://schemas.android.com/audio/audio_effects_conf/v2_0">
<libraries>
<library name="proxy" path="libeffectproxy.so"/>
<library name="mmieffects" path="libmmieffectswrapper.so"/>
<library name="mot_speaker_helper" path="libspeakerbundle.so"/>
<library name="bundle" path="libbundlewrapper.so"/>
<library name="reverb" path="libreverbwrapper.so"/>
<library name="visualizer" path="libvisualizer.so"/>
<library name="downmix" path="libdownmix.so"/>
<library name="dynamics_processing" path="libdynproc.so"/>
<library name="loudness_enhancer" path="libldnhncr.so"/>
<library name="audio_pre_processing" path="libqcomvoiceprocessing.so"/>
</libraries>
<effects>
<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="mmieffects" library="mmieffects" uuid="bce61ec2-eca4-445c-9dcb-91cc7cce01ba"/>
<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" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
<effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
<effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
<effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
<effectProxy name="music_helper" library="proxy" uuid="00905020-4e52-11e4-83aa-0002a5d5c51b">
<libsw library="mot_speaker_helper" uuid="bce61ec2-eca4-445c-9dcb-91cc7cce01ab"/>
<libhw library="mot_speaker_helper" uuid="bce61ec2-eca4-445c-9dcb-91cc7cce01b0"/>
</effectProxy>
<effect name="voice_helper" library="mot_speaker_helper" uuid="bce61ec2-eca4-445c-9dcb-91cc7cce01ac"/>
<effect name="ring_helper" library="mot_speaker_helper" uuid="bce61ec2-eca4-445c-9dcb-91cc7cce01ad"/>
<effect name="notification_helper" library="mot_speaker_helper" uuid="bce61ec2-eca4-445c-9dcb-91cc7cce01ae"/>
<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"/>
</effects>
<postprocess>
<stream type="music">
<apply effect="music_helper"/>
</stream>
<stream type="ring">
<apply effect="ring_helper"/>
</stream>
<stream type="alarm">
<apply effect="ring_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>

25
audio/audio_ext_spkr.conf Normal file
View file

@ -0,0 +1,25 @@
global_config {
name guamp
}
ring {
#dB to attenuate playback to meet safety level at each volume step
#16 steps total, 15...0. In case of truncated list, last attenuation
#given will be applied to all lower volume steps
attenuation 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
}
voice {
#dB to attenuate playback to meet safety level at each volume step
#16 steps total, 15...0. In case of truncated list, last attenuation
#given will be applied to all lower volume steps
attenuation 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
}
media {
#dB to attenuate playback to meet safety level at each volume step
#16 steps total, 15...0. In case of truncated list, last attenuation
#given will be applied to all lower volume steps
attenuation 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
}

View file

@ -0,0 +1,278 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<audio_platform_info>
<acdb_ids>
<!-- Output devices -->
<device name="SND_DEVICE_OUT_VOICE_HANDSET" acdb_id="7" />
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" acdb_id="7" />
<device name="SND_DEVICE_OUT_HEADPHONES" acdb_id="9" />
<device name="SND_DEVICE_OUT_USB_HEADSET" acdb_id="45" />
<device name="SND_DEVICE_OUT_USB_HEADPHONES" acdb_id="45" />
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" acdb_id="9" />
<device name="SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES" acdb_id="9" />
<device name="SND_DEVICE_OUT_SPEAKER" acdb_id="14" />
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" acdb_id="14" />
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" acdb_id="14" />
<device name="SND_DEVICE_OUT_SPEAKER_SAFE" acdb_id="14" />
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" acdb_id="15" />
<device name="SND_DEVICE_OUT_SPEAKER_AND_HDMI" acdb_id="18" />
<device name="SND_DEVICE_OUT_VOICE_LINE" acdb_id="78" />
<device name="SND_DEVICE_OUT_VOLTE_NB_ANC_HANDSET" acdb_id="200" />
<device name="SND_DEVICE_OUT_VOLTE_NB_HANDSET_TMUS" acdb_id="200" />
<device name="SND_DEVICE_OUT_VOICE_TX" acdb_id="245" />
<device name="SND_DEVICE_OUT_VOICE_USB_HEADSET" acdb_id="245" />
<device name="SND_DEVICE_OUT_VOICE_USB_HEADPHONES" acdb_id="245" />
<device name="SND_DEVICE_OUT_VOLTE_NB_TX" acdb_id="246" />
<!-- Input devices -->
<device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK" acdb_id="102" />
<device name="SND_DEVICE_IN_HANDSET_MIC_AEC" acdb_id="4" />
<device name="SND_DEVICE_IN_HANDSET_MIC_AEC_NS" acdb_id="4" />
<device name="SND_DEVICE_IN_HANDSET_MIC_NS" acdb_id="4" />
<device name="SND_DEVICE_IN_VOICE_TTY_VCO_HANDSET_MIC" acdb_id="4" />
<device name="SND_DEVICE_IN_USB_HEADSET_MIC_AEC" acdb_id="244" />
<device name="SND_DEVICE_IN_SPEAKER_MIC_AEC" acdb_id="114" />
<device name="SND_DEVICE_IN_SPEAKER_MIC_AEC_NS" acdb_id="114" />
<device name="SND_DEVICE_IN_SPEAKER_MIC_NS" acdb_id="11" />
<device name="SND_DEVICE_IN_UNPROCESSED_MIC" acdb_id="11" />
<device name="SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE" acdb_id="35" />
<device name="SND_DEVICE_IN_VOICE_DMIC_TMUS" acdb_id="41" />
<device name="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC" acdb_id="43" />
<device name="SND_DEVICE_IN_HEADSET_MIC_AEC" acdb_id="47" />
<device name="SND_DEVICE_IN_VOICE_REC_MIC_AEC" acdb_id="62" />
<device name="SND_DEVICE_IN_VOICE_REC_MIC_NS" acdb_id="62" />
<device name="SND_DEVICE_IN_HANDSET_DMIC_AEC" acdb_id="111" />
<device name="SND_DEVICE_IN_HANDSET_DMIC_NS" acdb_id="111" />
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC" acdb_id="43" />
<device name="SND_DEVICE_IN_SPEAKER_DMIC_NS" acdb_id="43" />
<device name="SND_DEVICE_IN_SPEAKER_DMIC_NS" acdb_id="43" />
<device name="SND_DEVICE_IN_QUAD_MIC" acdb_id="125" />
<device name="SND_DEVICE_IN_THREE_MIC" acdb_id="125" />
</acdb_ids>
<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="59"/>
<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_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>
<backend_names>
<device name="SND_DEVICE_OUT_HDMI" backend="hdmi" interface="SLIMBUS_0_RX" />
<device name="SND_DEVICE_OUT_SPEAKER" backend="speaker" interface="PRI_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" backend="speaker" interface="PRI_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" backend="speaker" interface="PRI_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_SAFE" backend="speaker" interface="PRI_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER" backend="speaker" interface="PRI_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_HFP" backend="speaker" interface="PRI_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" backend="speaker" interface="PRI_MI2S_RX"/>
<device name="SND_DEVICE_OUT_VOLTE_NB_SPEAKER" backend="speaker" interface="PRI_MI2S_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="PRI_MI2S_RX-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES" backend="speaker-and-headphones" interface="PRI_MI2S_RX-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_LINE" backend="speaker-and-headphones" interface="PRI_MI2S_RX-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE" backend="speaker-and-headphones" interface="PRI_MI2S_RX-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP" backend="speaker-and-bt-a2dp" interface="PRI_MI2S_RX-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="PRI_MI2S_RX-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="PRI_MI2S_RX-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_HEADPHONES" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_LINE" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HEADPHONES" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HEADSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_LINE" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOLTE_NB_HEADPHONES" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOLTE_NB_HEADSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOLTE_NB_LINE" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HANDSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HAC_HANDSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_ANC_HANDSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOLTE_NB_HANDSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOLTE_NB_HAC_HANDSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOLTE_NB_HANDSET_TMUS" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOLTE_NB_ANC_HANDSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_BT_SCO" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_SCO_WB" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC_NREC" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC_WB" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC_WB_NREC" interface="SLIMBUS_7_RX"/>
</backend_names>
<config_params>
<param key="input_mic_max_count" value="2" />
</config_params>
<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="top" 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_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"/>
</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"/>
</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"/>
</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_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"/>
</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"/>
</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"/>
</snd_dev>
</input_snd_device_mic_mapping>
</input_snd_device>
</snd_devices>
</audio_platform_info>

View file

@ -0,0 +1,238 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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>Telephony Rx</item>
<item>FM tuner</item>
</attachedDevices>
<defaultOutputDevice>Speaker</defaultOutputDevice>
<mixPorts>
<mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_FAST|AUDIO_OUTPUT_FLAG_PRIMARY">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100,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_16_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="hifi_playback" role="source" />
<mixPort name="compressed_offload" role="source"
flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING">
<profile name="" format="AUDIO_FORMAT_MP3"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
<profile name="" format="AUDIO_FORMAT_AAC_LC"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
<profile name="" format="AUDIO_FORMAT_AAC_HE_V1"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
<profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
<profile name="" format="AUDIO_FORMAT_FLAC"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,88200,96000,176400,192000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
</mixPort>
<mixPort name="voice_tx" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
</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_AMBISONIC,AUDIO_CHANNEL_INDEX_MASK_3,AUDIO_CHANNEL_INDEX_MASK_4"/>
<profile name="" format="AUDIO_FORMAT_PCM_8_24_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_AMBISONIC,AUDIO_CHANNEL_INDEX_MASK_3,AUDIO_CHANNEL_INDEX_MASK_4"/>
</mixPort>
<mixPort name="fm 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"/>
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
</mixPort>
<mixPort name="voice_rx" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
</mixPort>
<mixPort name="incall_music_uplink" role="source"
flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000,48000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</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">
</devicePort>
<devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink">
</devicePort>
<devicePort tagName="Wired Headset" type="AUDIO_DEVICE_OUT_WIRED_HEADSET" role="sink">
</devicePort>
<devicePort tagName="Wired Headphones" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE" role="sink">
</devicePort>
<devicePort tagName="Line Out" type="AUDIO_DEVICE_OUT_LINE" role="sink">
</devicePort>
<devicePort tagName="Dock Headset" type="AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET" role="sink">
</devicePort>
<devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink">
</devicePort>
<devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink">
</devicePort>
<devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink">
</devicePort>
<devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
</devicePort>
<devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
</devicePort>
<devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink"
encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
</devicePort>
<devicePort tagName="HDMI Out" type="AUDIO_DEVICE_OUT_HDMI" role="sink">
</devicePort>
<devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
</devicePort>
<devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
</devicePort>
<devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
</devicePort>
<devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
</devicePort>
<devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source">
</devicePort>
<devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET" role="source">
</devicePort>
<devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
</devicePort>
<devicePort tagName="Telephony Rx" type="AUDIO_DEVICE_IN_TELEPHONY_RX" role="source">
</devicePort>
<devicePort tagName="FM tuner" type="AUDIO_DEVICE_IN_FM_TUNER" role="source">
</devicePort>
<devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source">
</devicePort>
<devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source">
</devicePort>
</devicePorts>
<!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<route type="mix" sink="Earpiece"
sources="primary output,deep_buffer,compressed_offload"/>
<route type="mix" sink="Speaker"
sources="primary output,deep_buffer,compressed_offload"/>
<route type="mix" sink="Wired Headset"
sources="primary output,deep_buffer,compressed_offload"/>
<route type="mix" sink="Wired Headphones"
sources="primary output,deep_buffer,compressed_offload"/>
<route type="mix" sink="Line Out"
sources="primary output,deep_buffer,compressed_offload"/>
<route type="mix" sink="Dock Headset"
sources="primary output,deep_buffer"/>
<route type="mix" sink="BT SCO"
sources="primary output,deep_buffer"/>
<route type="mix" sink="BT SCO Headset"
sources="primary output,deep_buffer"/>
<route type="mix" sink="BT SCO Car Kit"
sources="primary output,deep_buffer"/>
<route type="mix" sink="BT A2DP Out"
sources="primary output,deep_buffer,compressed_offload"/>
<route type="mix" sink="BT A2DP Headphones"
sources="primary output,deep_buffer,compressed_offload"/>
<route type="mix" sink="BT A2DP Speaker"
sources="primary output,deep_buffer,compressed_offload"/>
<route type="mix" sink="HDMI Out"
sources="primary output,deep_buffer,compressed_offload"/>
<route type="mix" sink="USB Device Out"
sources="primary output,deep_buffer,compressed_offload,hifi_playback"/>
<route type="mix" sink="USB Headset Out"
sources="primary output,deep_buffer,compressed_offload,hifi_playback"/>
<route type="mix" sink="Telephony Tx"
sources="voice_tx,incall_music_uplink"/>
<route type="mix" sink="voice_rx"
sources="Telephony Rx"/>
<route type="mix" sink="primary input"
sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/>
<route type="mix" sink="fm input" sources="FM tuner"/>
<route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
</routes>
</module>
<!-- A2dp Audio HAL -->
<module name="a2dp" halVersion="2.0">
<mixPorts>
<mixPort name="a2dp input" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
</mixPort>
</mixPorts>
<devicePorts>
<devicePort tagName="BT A2DP In" type="AUDIO_DEVICE_IN_BLUETOOTH_A2DP" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
</devicePort>
</devicePorts>
<routes>
<route type="mix" sink="a2dp input"
sources="BT A2DP In"/>
</routes>
</module>
<!-- Usb Audio HAL -->
<xi:include href="usb_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>

View file

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 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"
ref="DEFAULT_VOICE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_SPEAKER">
<point>0,-3800</point>
<point>33,-1700</point>
<point>66,-700</point>
<point>100,0</point>
</volume>
<volume stream="AUDIO_STREAM_VOICE_CALL" deviceCategory="DEVICE_CATEGORY_EARPIECE">
<point>0,-3000</point>
<point>33,-2300</point>
<point>66,-700</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_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_RING" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="DEFAULT_DEVICE_CATEGORY_HEADSET_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_RING" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="SONIFICATION_CATEGORY_SPEAKER_VOLUME_CURVE"/>
<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="SONIFICATION_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_MUSIC" deviceCategory="DEVICE_CATEGORY_HEADSET">
<point>1,-5600</point>
<point>33,-3400</point>
<point>66,-1600</point>
<point>100,0</point>
</volume>
<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_ALARM" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="DEFAULT_DEVICE_CATEGORY_HEADSET_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="SONIFICATION_CATEGORY_SPEAKER_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_DEVICE_CATEGORY_EARPIECE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ALARM" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="SONIFICATION_CATEGORY_EXT_MEDIA_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"
ref="NOTIFICATION_CATEGORY_SPEAKER_VOLUME_CURVE"/>
<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="SONIFICATION_CATEGORY_EXT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="DEFAULT_VOICE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="DEFAULT_VOICE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_VOICE_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_BLUETOOTH_SCO" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ENFORCED_AUDIBLE" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="DEFAULT_SYSTEM_VOLUME_CURVE"/>
<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="SONIFICATION_CATEGORY_EXT_MEDIA_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_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_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_HEADSET"
ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_SPEAKER"
ref="DEFAULT_DEVICE_CATEGORY_SPEAKER_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_EARPIECE"
ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume stream="AUDIO_STREAM_ACCESSIBILITY" deviceCategory="DEVICE_CATEGORY_EXT_MEDIA"
ref="DEFAULT_MEDIA_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_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"/>
</volumes>

3487
audio/mixer_paths.xml Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,47 @@
<?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.
-->
<!-- Remote Submix Audio Policy Configuration file -->
<module name="r_submix" halVersion="2.0">
<attachedDevices>
<item>Remote Submix In</item>
</attachedDevices>
<mixPorts>
<mixPort name="r_submix output" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="r_submix input" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_STEREO"/>
</mixPort>
</mixPorts>
<devicePorts>
<devicePort tagName="Remote Submix Out" type="AUDIO_DEVICE_OUT_REMOTE_SUBMIX" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="Remote Submix In" type="AUDIO_DEVICE_IN_REMOTE_SUBMIX" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_STEREO"/>
</devicePort>
</devicePorts>
<routes>
<route type="mix" sink="Remote Submix Out"
sources="r_submix output"/>
<route type="mix" sink="r_submix input"
sources="Remote Submix In"/>
</routes>
</module>

View file

@ -0,0 +1,47 @@
<?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.
-->
<!-- USB Audio HAL Audio Policy Configuration file -->
<module name="usb" halVersion="2.0">
<mixPorts>
<mixPort name="usb_accessory output" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="usb_device output" role="source"/>
<mixPort name="usb_device input" role="sink"/>
</mixPorts>
<devicePorts>
<devicePort tagName="USB Host Out" type="AUDIO_DEVICE_OUT_USB_ACCESSORY" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink"/>
<devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink"/>
<devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source"/>
<devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source"/>
</devicePorts>
<routes>
<route type="mix" sink="USB Host Out"
sources="usb_accessory output"/>
<route type="mix" sink="USB Device Out"
sources="usb_device output"/>
<route type="mix" sink="USB Headset Out"
sources="usb_device output"/>
<route type="mix" sink="usb_device input"
sources="USB Device In,USB Headset In"/>
</routes>
</module>

1
board-info.txt Normal file
View file

@ -0,0 +1 @@
require version-vendor=1604929553

92
compatibility_matrix.xml Normal file
View file

@ -0,0 +1,92 @@
<!--
Input:
compatibility_matrix.xml
-->
<compatibility-matrix version="1.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>com.motorola.hardware.display.panel</name>
<version>1.0</version>
<interface>
<name>IDisplayPanel</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>motorola.hardware.vibrator</name>
<version>1.0</version>
<interface>
<name>IMotVibrator</name>
<instance>default</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>
<vendor-ndk>
<version>29</version>
</vendor-ndk>
<system-sdk>
<version>29</version>
</system-sdk>
</compatibility-matrix>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 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, -->
<!-- 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. -->
<devices>
<device name="qti-haptics"/>
</devices>

View file

@ -0,0 +1,9 @@
################################################################################################################################
# Copyright (c) 2019 Qualcomm Technologies, Inc.
# All Rights Reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
################################################################################################################################
PRIO=1,1,1,1,0,0,0,0
#arch_timer, arm-pmu, arch_mem_timer
IGNORED_IRQ=19,22,39

View file

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2017, The Linux Foundation. All rights reserved.
~ Not a Contribution.
-->
<!--
~ Copyright (C) 2016 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
<!--
This XML file declares which signature|privileged permissions should be
granted to privileged applications on QTI devices.
It allows additional grants on top of privapp-permissions-platform.xml
-->
<permissions>
<privapp-permissions package="com.quicinc.cne.CNEService">
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
<permission name="android.permission.PACKET_KEEPALIVE_OFFLOAD"/>
</privapp-permissions>
<privapp-permissions package="com.qti.dpmserviceapp">
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
</privapp-permissions>
<privapp-permissions package="com.qualcomm.qcrilmsgtunnel">
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
</privapp-permissions>
<privapp-permissions package="org.codeaurora.dialer">
<permission name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"/>
<permission name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
<permission name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
<permission name="android.permission.MODIFY_PHONE_STATE"/>
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.STATUS_BAR"/>
<permission name="android.permission.STOP_APP_SWITCHES"/>
<permission name="com.android.voicemail.permission.READ_VOICEMAIL"/>
<permission name="com.android.voicemail.permission.WRITE_VOICEMAIL"/>
</privapp-permissions>
<privapp-permissions package="org.codeaurora.qti.qtiNetworkApp">
<permission name="android.permission.MODIFY_PHONE_STATE"/>
</privapp-permissions>
<privapp-permissions package="org.codeaurora.ims">
<permission name="android.permission.READ_PRECISE_PHONE_STATE"/>
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
<permission name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME"/>
</privapp-permissions>
<privapp-permissions package="com.android.soundrecorder">
<permission name="android.permission.WRITE_MEDIA_STORAGE"/>
<permission name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
</privapp-permissions>
<privapp-permissions package="com.quicinc.voice.activation">
<permission name="android.permission.CAPTURE_AUDIO_HOTWORD"/>
<permission name="android.permission.MANAGE_SOUND_TRIGGER"/>
</privapp-permissions>
<privapp-permissions package="com.qualcomm.qti.carrierswitch">
<permission name="android.permission.REBOOT"/>
</privapp-permissions>
<privapp-permissions package="com.qualcomm.wfd.service">
<permission name="android.permission.READ_FRAME_BUFFER"/>
<permission name="android.permission.WRITE_MEDIA_STORAGE"/>
</privapp-permissions>
<privapp-permissions package="com.android.mms">
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.WRITE_APN_SETTINGS"/>
<permission name="android.permission.CALL_PRIVILEGED"/>
</privapp-permissions>
<privapp-permissions package="org.codeaurora.snapcam">
<permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<permission name="android.permission.WRITE_MEDIA_STORAGE"/>
</privapp-permissions>
<privapp-permissions package="org.codeaurora.gallery">
<permission name="android.permission.MODIFY_AUDIO_ROUTING"/>
</privapp-permissions>
<privapp-permissions package="com.qualcomm.qti.callenhancement">
<permission name="android.permission.RECORD_AUDIO" />
<permission name="android.permission.CAPTURE_AUDIO_OUTPUT" />
<permission name="android.permission.READ_EXTERNAL_STORAGE" />
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" />
<permission name="android.permission.READ_BLOCKED_NUMBERS" />
<permission name="android.permission.VIBRATE" />
</privapp-permissions>
<privapp-permissions package="com.skyhook.blp">
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
</privapp-permissions>
</permissions>

View file

@ -0,0 +1,10 @@
libqti-perfd-client.so
libadsprpc.so
libcdsprpc.so
libsdsprpc.so
libfastcvopt.so
liblistenjni.so
liblistensoundmodel2.so
libOpenCL.so
libnpu.so
libhta_hexagon_runtime.so

117
configs/qti_whitelist.xml Normal file
View file

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!--
/* Copyright (c) 2017-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,
* 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.
*/
-->
<config>
<!-- These are telephony components that need to freely run in the background -->
<allow-in-power-save package="com.qualcomm.atfwd" />
<allow-in-power-save package="com.qualcomm.qti.telephonyservice" />
<allow-in-power-save package="com.qulacomm.qcrilmsgtunnel" />
<allow-in-power-save package="com.qualcomm.qti.ims" />
<allow-in-power-save package="com.qualcomm.qti.radioconfiginterface" />
<allow-in-power-save package="com.qualcomm.simcontacts" />
<allow-in-power-save package="com.qualcomm.qti.autoregistration" />
<allow-in-power-save package="com.qualcomm.qti.server.wigigapp" />
<allow-in-power-save package="com.qualcomm.qti.StatsPollManager" />
<allow-in-power-save package="com.qualcomm.qti.gsma.services.nfc" />
<allow-in-power-save package="com.quicinc.voice.activation" />
<allow-in-power-save package="com.android.mms" />
<allow-in-power-save package="com.android.exchange" />
<allow-in-power-save package="com.android.email" />
<allow-in-power-save package="com.qualcomm.qti.callenhancement" />
<allow-in-power-save package="com.qualcomm.qti.smartassistant" />
<allow-in-power-save package="com.skyhook.blp" />
<!-- These telephony applications need access to non-[System]SDK APIs -->
<hidden-api-whitelisted-app package="com.qualcomm.uimremoteserver" />
<hidden-api-whitelisted-app package="com.qualcomm.uimremoteclient" />
<hidden-api-whitelisted-app package="com.qualcomm.atfwd" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.autoregistration" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.callenhancement" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.callfeaturessetting" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.confdialer" />
<hidden-api-whitelisted-app package="org.codeaurora.dialer" />
<hidden-api-whitelisted-app package="com.qti.qualcomm.datastatusnotification" />
<hidden-api-whitelisted-app package="com.qti.qualcomm.deviceinfo" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.modemtestmode" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.networksetting" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.qtisystemservice" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.telephonyservice" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.radioconfiginterface" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.radioconfigtest" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.roamingsettings" />
<hidden-api-whitelisted-app package="com.qualcomm.simcontacts" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.simsettings" />
<hidden-api-whitelisted-app package="org.codeaurora.ims" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.ims" />
<hidden-api-whitelisted-app package="com.qti.xdivert" />
<hidden-api-whitelisted-app package="com.qualcomm.qcrilmsgtunnel" />
<hidden-api-whitelisted-app package="com.qti.confuridialer" />
<hidden-api-whitelisted-app package="com.qti.editnumber" />
<hidden-api-whitelisted-app package="com.qualcomm.embmstest" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.ltedirect" />
<hidden-api-whitelisted-app package="com.android.MultiplePdpTest" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.app" />
<hidden-api-whitelisted-app package="com.qualcomm.embms" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.embmstuneaway" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.uimlpatest" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.lpa" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.uim" />
<hidden-api-whitelisted-app package="org.codeaurora.snapcam" />
<hidden-api-whitelisted-app package="com.android.mms" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.carrierswitch" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.carrierconfigure" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.sva" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.smartassistant" />
<hidden-api-whitelisted-app package="com.quicinc.voice.activation" />
<hidden-api-whitelisted-app package="com.android.backup" />
<hidden-api-whitelisted-app package="com.android.contacts" />
<hidden-api-whitelisted-app package="com.android.exchange" />
<hidden-api-whitelisted-app package="com.android.soundrecorder" />
<hidden-api-whitelisted-app package="com.android.camera2" />
<hidden-api-whitelisted-app package="org.codeaurora.gallery" />
<hidden-api-whitelisted-app package="com.example.connmgr" />
<hidden-api-whitelisted-app package="com.android.email" />
<hidden-api-whitelisted-app package="com.cyanogenmod.filemanager" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.presenceappSub2" />
<hidden-api-whitelisted-app package="com.qualcomm.secureindicator" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.sysmonappExternal" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.biometrics.voiceprint.voiceprintdemo" />
<hidden-api-whitelisted-app package="com.qti.vtloopback " />
<hidden-api-whitelisted-app package="com.android.bluetooth" />
<hidden-api-whitelisted-app package="org.codeaurora.bluetooth" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.qmmi" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.perfdump" />
<hidden-api-whitelisted-app package="com.qualcomm.wfd.client" />
<hidden-api-whitelisted-app package="com.qualcomm.wfd.service" />
<hidden-api-whitelisted-app package="com.qualcomm.qti.server.wigigapp" />
<hidden-api-whitelisted-app package="com.qti.service.colorservice" />
</config>

331
configs/sec_config Normal file
View file

@ -0,0 +1,331 @@
/* IPC Security Config */
/* <GPS QMI Service ID - 16>:<GPS QMI Instance ID - all instances>:<Client Group ID> */
16:4294967295:1000:1021:1026
/* <QDMA QMI Service ID - 75>:<QDMA QMI Instance ID - all instances>:<Client Group ID> */
75:4294967295:1000:1001:3006
/* <LOWI QMI Service ID - 38>:<LOWI QMI Instance ID - all instances>:<Client Group ID> */
56:4294967295:1021
/* Allow SS CTL service to be used by system and net_raw processes */
43:4294967295:1000:3004
/* <UIMHTTP QMI Service ID - 16>:<UIMHTTP QMI Instance ID - all instances>:<Client Group ID> */
71:4294967295:1001
/* <UIMRMT QMI Service ID - 16>:<UIMRMT QMI Instance ID - all instances>:<Client Group ID> */
50:4294967295:1001
/* QMI-SLIM service permitted to gps and net_raw */
55:4294967295:1021
/* Allow Sensor services to be used by sensor process */
256:4294967295:1000:1006:1013:1021:1047:3011
257:4294967295:1000:1006:1013:1021:1047:3011
258:4294967295:1000:1006:1013:1021:1047:3011
259:4294967295:1000:1006:1013:1021:1047:3011
260:4294967295:1000:1006:1013:1021:1047:3011
261:4294967295:1000:1006:1013:1021:1047:3011
262:4294967295:1000:1006:1013:1021:1047:3011
263:4294967295:1000:1006:1013:1021:1047:3011
264:4294967295:1000:1006:1013:1021:1047:3011
265:4294967295:1000:1006:1013:1021:1047:3011
266:4294967295:1000:1006:1013:1021:1047:3011
267:4294967295:1000:1006:1013:1021:1047:3011
268:4294967295:1000:1006:1013:1021:1047:3011
269:4294967295:1000:1006:1013:1021:1047:3011
270:4294967295:1000:1006:1013:1021:1047:3011
271:4294967295:1000:1006:1013:1021:1047:3011
272:4294967295:1000:1006:1013:1021:1047:3011
273:4294967295:1000:1006:1013:1021:1047:3011
274:4294967295:1000:1006:1013:1021:1047:3011
275:4294967295:1000:1006:1013:1021:1047:3011
276:4294967295:1000:1006:1013:1021:1047:3011
277:4294967295:1000:1006:1013:1021:1047:3011
278:4294967295:1000:1006:1013:1021:1047:3011
279:4294967295:1000:1006:1013:1021:1047:3011
280:4294967295:1000:1006:1013:1021:1047:3011
281:4294967295:1000:1006:1013:1021:1047:3011
282:4294967295:1000:1006:1013:1021:1047:3011
283:4294967295:1000:1006:1013:1021:1047:3011
284:4294967295:1000:1006:1013:1021:1047:3011
285:4294967295:1000:1006:1013:1021:1047:3011
286:4294967295:1000:1006:1013:1021:1047:3011
287:4294967295:1000:1006:1013:1021:1047:3011
288:4294967295:1000:1006:1013:1021:1047:3011
289:4294967295:1000:1006:1013:1021:1047:3011
290:4294967295:1000:1006:1013:1021:1047:3011
291:4294967295:1000:1006:1013:1021:1047:3011
292:4294967295:1000:1006:1013:1021:1047:3011
293:4294967295:1000:1006:1013:1021:1047:3011
294:4294967295:1000:1006:1013:1021:1047:3011
295:4294967295:1000:1006:1013:1021:1047:3011
296:4294967295:1000:1006:1013:1021:1047:3011
297:4294967295:1000:1006:1013:1021:1047:3011
298:4294967295:1000:1006:1013:1021:1047:3011
299:4294967295:1000:1006:1013:1021:1047:3011
300:4294967295:1000:1006:1013:1021:1047:3011
301:4294967295:1000:1006:1013:1021:1047:3011
302:4294967295:1000:1006:1013:1021:1047:3011
303:4294967295:1000:1006:1013:1021:1047:3011
304:4294967295:1000:1006:1013:1021:1047:3011
305:4294967295:1000:1006:1013:1021:1047:3011
306:4294967295:1000:1006:1013:1021:1047:3011
307:4294967295:1000:1006:1013:1021:1047:3011
308:4294967295:1000:1006:1013:1021:1047:3011
309:4294967295:1000:1006:1013:1021:1047:3011
310:4294967295:1000:1006:1013:1021:1047:3011
311:4294967295:1000:1006:1013:1021:1047:3011
312:4294967295:1000:1006:1013:1021:1047:3011
313:4294967295:1000:1006:1013:1021:1047:3011
314:4294967295:1000:1006:1013:1021:1047:3011
315:4294967295:1000:1006:1013:1021:1047:3011
316:4294967295:1000:1006:1013:1021:1047:3011
317:4294967295:1000:1006:1013:1021:1047:3011
318:4294967295:1000:1006:1013:1021:1047:3011
319:4294967295:1000:1006:1013:1021:1047:3011
320:4294967295:1000:1006:1013:1021:1047:3011
321:4294967295:1000:1006:1013:1021:1047:3011
322:4294967295:1000:1006:1013:1021:1047:3011
323:4294967295:1000:1006:1013:1021:1047:3011
324:4294967295:1000:1006:1013:1021:1047:3011
325:4294967295:1000:1006:1013:1021:1047:3011
326:4294967295:1000:1006:1013:1021:1047:3011
327:4294967295:1000:1006:1013:1021:1047:3011
328:4294967295:1000:1006:1013:1021:1047:3011
329:4294967295:1000:1006:1013:1021:1047:3011
330:4294967295:1000:1006:1013:1021:1047:3011
331:4294967295:1000:1006:1013:1021:1047:3011
332:4294967295:1000:1006:1013:1021:1047:3011
333:4294967295:1000:1006:1013:1021:1047:3011
334:4294967295:1000:1006:1013:1021:1047:3011
335:4294967295:1000:1006:1013:1021:1047:3011
336:4294967295:1000:1006:1013:1021:1047:3011
337:4294967295:1000:1006:1013:1021:1047:3011
338:4294967295:1000:1006:1013:1021:1047:3011
339:4294967295:1000:1006:1013:1021:1047:3011
340:4294967295:1000:1006:1013:1021:1047:3011
341:4294967295:1000:1006:1013:1021:1047:3011
342:4294967295:1000:1006:1013:1021:1047:3011
343:4294967295:1000:1006:1013:1021:1047:3011
344:4294967295:1000:1006:1013:1021:1047:3011
345:4294967295:1000:1006:1013:1021:1047:3011
346:4294967295:1000:1006:1013:1021:1047:3011
347:4294967295:1000:1006:1013:1021:1047:3011
348:4294967295:1000:1006:1013:1021:1047:3011
349:4294967295:1000:1006:1013:1021:1047:3011
350:4294967295:1000:1006:1013:1021:1047:3011
351:4294967295:1000:1006:1013:1021:1047:3011
352:4294967295:1000:1006:1013:1021:1047:3011
353:4294967295:1000:1006:1013:1021:1047:3011
354:4294967295:1000:1006:1013:1021:1047:3011
355:4294967295:1000:1006:1013:1021:1047:3011
356:4294967295:1000:1006:1013:1021:1047:3011
357:4294967295:1000:1006:1013:1021:1047:3011
358:4294967295:1000:1006:1013:1021:1047:3011
359:4294967295:1000:1006:1013:1021:1047:3011
360:4294967295:1000:1006:1013:1021:1047:3011
361:4294967295:1000:1006:1013:1021:1047:3011
362:4294967295:1000:1006:1013:1021:1047:3011
363:4294967295:1000:1006:1013:1021:1047:3011
364:4294967295:1000:1006:1013:1021:1047:3011
365:4294967295:1000:1006:1013:1021:1047:3011
366:4294967295:1000:1006:1013:1021:1047:3011
367:4294967295:1000:1006:1013:1021:1047:3011
368:4294967295:1000:1006:1013:1021:1047:3011
369:4294967295:1000:1006:1013:1021:1047:3011
370:4294967295:1000:1006:1013:1021:1047:3011
371:4294967295:1000:1006:1013:1021:1047:3011
372:4294967295:1000:1006:1013:1021:1047:3011
373:4294967295:1000:1006:1013:1021:1047:3011
374:4294967295:1000:1006:1013:1021:1047:3011
375:4294967295:1000:1006:1013:1021:1047:3011
376:4294967295:1000:1006:1013:1021:1047:3011
377:4294967295:1000:1006:1013:1021:1047:3011
378:4294967295:1000:1006:1013:1021:1047:3011
379:4294967295:1000:1006:1013:1021:1047:3011
380:4294967295:1000:1006:1013:1021:1047:3011
381:4294967295:1000:1006:1013:1021:1047:3011
382:4294967295:1000:1006:1013:1021:1047:3011
383:4294967295:1000:1006:1013:1021:1047:3011
384:4294967295:1000:1006:1013:1021:1047:3011
385:4294967295:1000:1006:1013:1021:1047:3011
386:4294967295:1000:1006:1013:1021:1047:3011
387:4294967295:1000:1006:1013:1021:1047:3011
388:4294967295:1000:1006:1013:1021:1047:3011
389:4294967295:1000:1006:1013:1021:1047:3011
390:4294967295:1000:1006:1013:1021:1047:3011
391:4294967295:1000:1006:1013:1021:1047:3011
392:4294967295:1000:1006:1013:1021:1047:3011
393:4294967295:1000:1006:1013:1021:1047:3011
394:4294967295:1000:1006:1013:1021:1047:3011
395:4294967295:1000:1006:1013:1021:1047:3011
396:4294967295:1000:1006:1013:1021:1047:3011
397:4294967295:1000:1006:1013:1021:1047:3011
398:4294967295:1000:1006:1013:1021:1047:3011
399:4294967295:1000:1006:1013:1021:1047:3011
400:4294967295:1000:1006:1013:1021:1047:3011
401:4294967295:1000:1006:1013:1021:1047:3011
402:4294967295:1000:1006:1013:1021:1047:3011
403:4294967295:1000:1006:1013:1021:1047:3011
404:4294967295:1000:1006:1013:1021:1047:3011
405:4294967295:1000:1006:1013:1021:1047:3011
406:4294967295:1000:1006:1013:1021:1047:3011
407:4294967295:1000:1006:1013:1021:1047:3011
408:4294967295:1000:1006:1013:1021:1047:3011
409:4294967295:1000:1006:1013:1021:1047:3011
410:4294967295:1000:1006:1013:1021:1047:3011
411:4294967295:1000:1006:1013:1021:1047:3011
412:4294967295:1000:1006:1013:1021:1047:3011
413:4294967295:1000:1006:1013:1021:1047:3011
414:4294967295:1000:1006:1013:1021:1047:3011
415:4294967295:1000:1006:1013:1021:1047:3011
416:4294967295:1000:1006:1013:1021:1047:3011
417:4294967295:1000:1006:1013:1021:1047:3011
418:4294967295:1000:1006:1013:1021:1047:3011
419:4294967295:1000:1006:1013:1021:1047:3011
420:4294967295:1000:1006:1013:1021:1047:3011
421:4294967295:1000:1006:1013:1021:1047:3011
422:4294967295:1000:1006:1013:1021:1047:3011
423:4294967295:1000:1006:1013:1021:1047:3011
424:4294967295:1000:1006:1013:1021:1047:3011
425:4294967295:1000:1006:1013:1021:1047:3011
426:4294967295:1000:1006:1013:1021:1047:3011
427:4294967295:1000:1006:1013:1021:1047:3011
428:4294967295:1000:1006:1013:1021:1047:3011
429:4294967295:1000:1006:1013:1021:1047:3011
430:4294967295:1000:1006:1013:1021:1047:3011
431:4294967295:1000:1006:1013:1021:1047:3011
432:4294967295:1000:1006:1013:1021:1047:3011
433:4294967295:1000:1006:1013:1021:1047:3011
434:4294967295:1000:1006:1013:1021:1047:3011
435:4294967295:1000:1006:1013:1021:1047:3011
436:4294967295:1000:1006:1013:1021:1047:3011
437:4294967295:1000:1006:1013:1021:1047:3011
438:4294967295:1000:1006:1013:1021:1047:3011
439:4294967295:1000:1006:1013:1021:1047:3011
440:4294967295:1000:1006:1013:1021:1047:3011
441:4294967295:1000:1006:1013:1021:1047:3011
442:4294967295:1000:1006:1013:1021:1047:3011
443:4294967295:1000:1006:1013:1021:1047:3011
444:4294967295:1000:1006:1013:1021:1047:3011
445:4294967295:1000:1006:1013:1021:1047:3011
446:4294967295:1000:1006:1013:1021:1047:3011
447:4294967295:1000:1006:1013:1021:1047:3011
448:4294967295:1000:1006:1013:1021:1047:3011
449:4294967295:1000:1006:1013:1021:1047:3011
450:4294967295:1000:1006:1013:1021:1047:3011
451:4294967295:1000:1006:1013:1021:1047:3011
452:4294967295:1000:1006:1013:1021:1047:3011
453:4294967295:1000:1006:1013:1021:1047:3011
454:4294967295:1000:1006:1013:1021:1047:3011
455:4294967295:1000:1006:1013:1021:1047:3011
456:4294967295:1000:1006:1013:1021:1047:3011
457:4294967295:1000:1006:1013:1021:1047:3011
458:4294967295:1000:1006:1013:1021:1047:3011
459:4294967295:1000:1006:1013:1021:1047:3011
460:4294967295:1000:1006:1013:1021:1047:3011
461:4294967295:1000:1006:1013:1021:1047:3011
462:4294967295:1000:1006:1013:1021:1047:3011
463:4294967295:1000:1006:1013:1021:1047:3011
464:4294967295:1000:1006:1013:1021:1047:3011
465:4294967295:1000:1006:1013:1021:1047:3011
466:4294967295:1000:1006:1013:1021:1047:3011
467:4294967295:1000:1006:1013:1021:1047:3011
468:4294967295:1000:1006:1013:1021:1047:3011
469:4294967295:1000:1006:1013:1021:1047:3011
470:4294967295:1000:1006:1013:1021:1047:3011
471:4294967295:1000:1006:1013:1021:1047:3011
472:4294967295:1000:1006:1013:1021:1047:3011
473:4294967295:1000:1006:1013:1021:1047:3011
474:4294967295:1000:1006:1013:1021:1047:3011
475:4294967295:1000:1006:1013:1021:1047:3011
476:4294967295:1000:1006:1013:1021:1047:3011
477:4294967295:1000:1006:1013:1021:1047:3011
478:4294967295:1000:1006:1013:1021:1047:3011
479:4294967295:1000:1006:1013:1021:1047:3011
480:4294967295:1000:1006:1013:1021:1047:3011
481:4294967295:1000:1006:1013:1021:1047:3011
482:4294967295:1000:1006:1013:1021:1047:3011
483:4294967295:1000:1006:1013:1021:1047:3011
484:4294967295:1000:1006:1013:1021:1047:3011
485:4294967295:1000:1006:1013:1021:1047:3011
486:4294967295:1000:1006:1013:1021:1047:3011
487:4294967295:1000:1006:1013:1021:1047:3011
488:4294967295:1000:1006:1013:1021:1047:3011
489:4294967295:1000:1006:1013:1021:1047:3011
490:4294967295:1000:1006:1013:1021:1047:3011
491:4294967295:1000:1006:1013:1021:1047:3011
492:4294967295:1000:1006:1013:1021:1047:3011
493:4294967295:1000:1006:1013:1021:1047:3011
494:4294967295:1000:1006:1013:1021:1047:3011
495:4294967295:1000:1006:1013:1021:1047:3011
496:4294967295:1000:1006:1013:1021:1047:3011
497:4294967295:1000:1006:1013:1021:1047:3011
498:4294967295:1000:1006:1013:1021:1047:3011
499:4294967295:1000:1006:1013:1021:1047:3011
500:4294967295:1000:1006:1013:1021:1047:3011
501:4294967295:1000:1006:1013:1021:1047:3011
502:4294967295:1000:1006:1013:1021:1047:3011
503:4294967295:1000:1006:1013:1021:1047:3011
504:4294967295:1000:1006:1013:1021:1047:3011
505:4294967295:1000:1006:1013:1021:1047:3011
506:4294967295:1000:1006:1013:1021:1047:3011
507:4294967295:1000:1006:1013:1021:1047:3011
508:4294967295:1000:1006:1013:1021:1047:3011
509:4294967295:1000:1006:1013:1021:1047:3011
510:4294967295:1000:1006:1013:1021:1047:3011
511:4294967295:1000:1006:1013:1021:1047:3011
/* Allow RCS service to aquire net_raw permission */
18:4294967295:1001:3004
/* Allow RCS service to communicate to IMS QMI Priv Svc*/
77:4294967295:1001:3003
/* Allow SSGQMIGD to communicate to SSGCCS service*/
76:4294967295:1001
/* Allow cnd to accquire netbind */
18:4294967295:1000:3003
/* Allow QMID service to aquire net_raw permission */
3:4294967295:1001:1021:3004
2:4294967295:1000:1001:3004
42:4294967295:1001:3004
18:4294967295:1001:3004
9:4294967295:1001:3004
1:4294967295:1001:3004:1000
4:4294967295:1001:3004
7:4294967295:1001:3004
8:4294967295:1001:3004:1000
68:4294967295:1001:3004
/* DPM */
47:4294967295:1001:3004
/* Allow communication to some QMI services with radio privilages */
/* Format is <Service id>:<all instances>:<radio> */
/* PBM */
12:4294967295:1001
/* WMS */
5:4294967295:1001
/* IMS VT */
32:4294967295:1001
/* IMSP */
31:4294967295:1001
/* PDC */
36:4294967295:1001
/* SAR */
17:4294967295:1001
/* RFRPE */
41:4294967295:1001
/*UIM*/
11:4294967295:1001
/*CAT*/
10:4294967295:1001
/*IMSA*/
33:4294967295:1001
/* CSVT */
29:4294967295:1001
/*SERVREG_NOTIF*/
64:4294967295:1001
66:4294967295:1001
73:4294967295:1001
/*LTE*/
70:4294967295:1001
/* Allow Data dpmd to access QMI DFS */
48:4294967295:1000:3004
/* DIAG */
4097:4294967295:2002:2950:3009:2901
/* <WLFW QMI Service ID - 0x45>:<WLFW QMI Instance ID - all instances>:<Client Group ID> */
69:4294967295:1000
/* <WLPS QMI Service ID - 0x39>:<WLFW QMI Instance ID - all instances>:<Client Group ID> */
57:4294967295:1000

View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2019 Qualcomm Technologies, Inc.
~ All Rights Reserved.
~ Confidential and Proprietary - Qualcomm Technologies, Inc.
-->
<!--
~ Copyright (c) 2017, The Linux Foundation. All rights reserved.
~ Not a Contribution.
-->
<!--
~ Copyright (C) 2016 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
<!--
This XML file declares which signature|privileged permissions should be
granted to privileged applications on QTI devices.
It allows additional grants on top of privapp-permissions-platform.xml
-->
<permissions>
<privapp-permissions package="com.qualcomm.qcrilmsgtunnel">
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
</privapp-permissions>
<privapp-permissions package="org.codeaurora.dialer">
<permission name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"/>
<permission name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
<permission name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
<permission name="android.permission.MODIFY_PHONE_STATE"/>
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.STATUS_BAR"/>
<permission name="android.permission.STOP_APP_SWITCHES"/>
<permission name="com.android.voicemail.permission.READ_VOICEMAIL"/>
<permission name="com.android.voicemail.permission.WRITE_VOICEMAIL"/>
</privapp-permissions>
<privapp-permissions package="org.codeaurora.qti.qtiNetworkApp">
<permission name="android.permission.MODIFY_PHONE_STATE"/>
</privapp-permissions>
<privapp-permissions package="org.codeaurora.ims">
<!-- Permissions added by QCom: telephony-apps-commonsys/ims/privapp_permissions/privapp-permissions-org.codeaurora.ims.xml -->
<permission name="android.permission.READ_PRECISE_PHONE_STATE"/>
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
<permission name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME"/>
<!-- Permissions added by Moto -->
<permission name="android.permission.READ_NETWORK_USAGE_HISTORY"/>
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
</privapp-permissions>
<privapp-permissions package="com.qualcomm.qti.carrierswitch">
<permission name="android.permission.REBOOT"/>
</privapp-permissions>
<privapp-permissions package="com.android.mms">
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.WRITE_APN_SETTINGS"/>
</privapp-permissions>
<privapp-permissions package="com.qualcomm.qti.callenhancement">
<permission name="android.permission.RECORD_AUDIO" />
<permission name="android.permission.CAPTURE_AUDIO_OUTPUT" />
<permission name="android.permission.READ_EXTERNAL_STORAGE" />
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" />
<permission name="android.permission.READ_BLOCKED_NUMBERS" />
<permission name="android.permission.VIBRATE" />
</privapp-permissions>
<privapp-permissions package="org.codeaurora.qti.nrNetworkSettingApp">
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
</privapp-permissions>
</permissions>

198
device.mk Normal file
View file

@ -0,0 +1,198 @@
# Audio
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/audio/Bluetooth_split_audio_V1.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/Bluetooth_split_audio_V1.cfg \
$(LOCAL_PATH)/audio/MM_audio_playback_capture_v2.0.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/MM_audio_playback_capture_v2.0.cfg \
$(LOCAL_PATH)/audio/a2dp_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml \
$(LOCAL_PATH)/audio/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
$(LOCAL_PATH)/audio/audio_ext_spkr.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_ext_spkr.conf \
$(LOCAL_PATH)/audio/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
$(LOCAL_PATH)/audio/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
$(LOCAL_PATH)/audio/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
$(LOCAL_PATH)/audio/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml \
$(LOCAL_PATH)/audio/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
$(LOCAL_PATH)/audio/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml \
# Exclude sensor from InputManager
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/configs/excluded-input-devices.xml:system/etc/excluded-input-devices.xml \
# GPS
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/gps/apdr.conf:$(TARGET_COPY_OUT_VENDOR)/etc/apdr.conf \
$(LOCAL_PATH)/gps/flp.conf:$(TARGET_COPY_OUT_VENDOR)/etc/flp.conf \
$(LOCAL_PATH)/gps/gps.conf:$(TARGET_COPY_OUT_VENDOR)/etc/gps.conf \
$(LOCAL_PATH)/gps/izat.conf:$(TARGET_COPY_OUT_VENDOR)/etc/izat.conf \
$(LOCAL_PATH)/gps/lowi.conf:$(TARGET_COPY_OUT_VENDOR)/etc/lowi.conf \
$(LOCAL_PATH)/gps/sap.conf:$(TARGET_COPY_OUT_VENDOR)/etc/sap.conf \
$(LOCAL_PATH)/gps/xtwifi.conf:$(TARGET_COPY_OUT_VENDOR)/etc/xtwifi.conf \
# IDC
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/idc/uinput-fpc.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/uinput-fpc.idc \
# IRQ
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/configs/msm_irqbalance.conf:$(TARGET_COPY_OUT_VENDOR)/etc/msm_irqbalance.conf \
# IRSC
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/configs/sec_config:$(TARGET_COPY_OUT_VENDOR)/etc/sec_config \
# Keylayout
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/keylayout/gpio-keys.kl:$(TARGET_COPY_OUT_VENDOR)/usr/keylayout/gpio-keys.kl \
$(LOCAL_PATH)/keylayout/uinput-fpc.kl:$(TARGET_COPY_OUT_VENDOR)/usr/keylayout/uinput-fpc.kl \
# Low power Whitelist
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/configs/qti_whitelist.xml:system/etc/sysconfig/qti_whitelist.xml \
# Media
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/media/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
$(LOCAL_PATH)/media/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \
$(LOCAL_PATH)/media/media_codecs_google_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_c2.xml \
$(LOCAL_PATH)/media/media_codecs_google_c2_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_c2_audio.xml \
$(LOCAL_PATH)/media/media_codecs_google_c2_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_c2_video.xml \
$(LOCAL_PATH)/media/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
$(LOCAL_PATH)/media/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \
$(LOCAL_PATH)/media/media_codecs_google_video_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video_le.xml \
$(LOCAL_PATH)/media/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \
$(LOCAL_PATH)/media/media_codecs_performance_v1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance_v1.xml \
$(LOCAL_PATH)/media/media_codecs_performance_v2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance_v2.xml \
$(LOCAL_PATH)/media/media_codecs_vendor.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor.xml \
$(LOCAL_PATH)/media/media_codecs_vendor_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor_audio.xml \
$(LOCAL_PATH)/media/media_codecs_vendor_v1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor_v1.xml \
$(LOCAL_PATH)/media/media_codecs_vendor_v2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor_v2.xml \
$(LOCAL_PATH)/media/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles.xml \
$(LOCAL_PATH)/media/media_profiles_V1_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \
$(LOCAL_PATH)/media/media_profiles_scuba.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_scuba.xml \
$(LOCAL_PATH)/media/media_profiles_vendor.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_vendor.xml \
$(LOCAL_PATH)/media/system_properties.xml:$(TARGET_COPY_OUT_VENDOR)/etc/system_properties.xml \
# Overlays
DEVICE_PACKAGE_OVERLAYS += \
$(LOCAL_PATH)/overlay
$(LOCAL_PATH)/overlay-lineage
# Permissions
PRODUCT_COPY_FILES += \
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.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.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.barometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.barometer.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.cdma.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.cdma.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.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.device_id_attestation.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.device_id_attestation.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/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml \
# Public Libraries
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/configs/public.libraries.txt:$(TARGET_COPY_OUT_VENDOR)/etc/public.libraries.txt \
# QTI
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/configs/privapp-permissions-qti.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/privapp-permissions-qti.xml \
# Ramdisk
PRODUCT_PACKAGES += \
apanic_annotate.sh \
apanic_copy.sh \
apanic_save.sh \
hardware_revisions.sh \
init.class_main.sh \
init.crda.sh \
init.gbmods.sh \
init.mdm.sh \
init.mmi.block_perm.sh \
init.mmi.boot.sh \
init.mmi.laser.sh \
init.mmi.mdlog-getlogs.sh \
init.mmi.modules.sh \
init.mmi.shutdown.sh \
init.mmi.touch.sh \
init.mmi.usb.sh \
init.mmi.wlan-getlogs.sh \
init.oem.fingerprint.sh \
init.oem.fingerprint2.sh \
init.oem.hw.sh \
init.qcom.class_core.sh \
init.qcom.coex.sh \
init.qcom.crashdata.sh \
init.qcom.early_boot.sh \
init.qcom.efs.sync.sh \
init.qcom.post_boot.sh \
init.qcom.sdio.sh \
init.qcom.sensors.sh \
init.qcom.sh \
init.qti.chg_policy.sh \
init.qti.fm.sh \
init.qti.ims.sh \
init.qti.media.sh \
pstore_annotate.sh \
qca6234-service.sh \
init.mmi.charge_only.rc \
init.mmi.chipset.rc \
init.mmi.debug.rc \
init.mmi.diag.rc \
init.mmi.diag_mdlog.rc \
init.mmi.overlay.rc \
init.mmi.rc \
init.mmi.tcmd.rc \
init.mmi.usb.rc \
init.mmi.wlan.rc \
init.qcom.factory.rc \
init.qcom.rc \
init.target.rc \
fstab.qcom \
ueventd.qcom.rc \
# Seccomp
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/seccomp/configstore@1.1.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/configstore@1.1.policy \
$(LOCAL_PATH)/seccomp/mediacodec.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/mediacodec.policy \
# Sensors
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/sensors/hals.conf:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/hals.conf \
# WiFi
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/wifi/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/WCNSS_qcom_cfg.ini \
$(LOCAL_PATH)/wifi/aoa_cldb_falcon.bin:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/aoa_cldb_falcon.bin \
$(LOCAL_PATH)/wifi/aoa_cldb_swl14.bin:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/aoa_cldb_swl14.bin \
$(LOCAL_PATH)/wifi/icm.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/icm.conf \
$(LOCAL_PATH)/wifi/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \
$(LOCAL_PATH)/wifi/wigig_p2p_supplicant.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wigig_p2p_supplicant.conf \
$(LOCAL_PATH)/wifi/wigig_supplicant.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wigig_supplicant.conf \
$(LOCAL_PATH)/wifi/wpa_supplicant.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant.conf \
$(LOCAL_PATH)/wifi/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \
# Inherit vendor
$(call inherit-product, vendor/motorola/guamp/guamp-vendor.mk)

View file

@ -0,0 +1,781 @@
<!--
Input:
moto_framework_compatibility_matrix.xml
vendor_framework_compatibility_matrix.xml
-->
<compatibility-matrix version="1.0" type="framework">
<hal format="hidl" optional="true">
<name>android.hardware.automotive.evs</name>
<version>1.0</version>
<interface>
<name>IEvsEnumerator</name>
<instance>EvsEnumeratorHw</instance>
<instance>EvsEnumeratorHw-Mock</instance>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>android.hardware.gnss</name>
<version>1.0-1</version>
<version>2.0</version>
<interface>
<name>IGnss</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>android.hardware.gnss</name>
<version>1.0-1</version>
<version>2.0</version>
<interface>
<name>IGnss</name>
<instance>gnss_vendor</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>android.hardware.media.c2</name>
<version>1.0</version>
<interface>
<name>IComponentStore</name>
<instance>default</instance>
<instance>software</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>android.hardware.nfc</name>
<version>1.0</version>
<interface>
<name>INfc</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>android.hardware.radio</name>
<version>1.0-4</version>
<interface>
<name>IRadio</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
<interface>
<name>ISap</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>android.hardware.radio.config</name>
<version>1.0-1</version>
<interface>
<name>IRadioConfig</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>android.hardware.wifi.supplicant</name>
<version>1.0-2</version>
<interface>
<name>ISupplicant</name>
<instance>default</instance>
<instance>wigigp2p</instance>
</interface>
</hal>
<hal format="hidl" optional="false">
<name>com.motorola.hardware.display.panel</name>
<version>1.0</version>
<interface>
<name>IDisplayPanel</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>com.qualcomm.qti.ant</name>
<version>1.0</version>
<interface>
<name>IAntHci</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>com.qualcomm.qti.imscmservice</name>
<version>2.0-2</version>
<interface>
<name>IImsCmService</name>
<instance>qti.ims.connectionmanagerservice</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>com.qualcomm.qti.uceservice</name>
<version>2.0-1</version>
<interface>
<name>IUceService</name>
<instance>com.qualcomm.qti.uceservice</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>com.qualcomm.qti.wifidisplayhal</name>
<version>1.0</version>
<interface>
<name>IDSManager</name>
<instance>wifidisplaydshal</instance>
</interface>
<interface>
<name>IHDCPSession</name>
<instance>wifidisplayhdcphal</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>com.quicinc.cne.api</name>
<version>1.0-1</version>
<interface>
<name>IApiService</name>
<instance>cnd</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>com.quicinc.cne.server</name>
<version>2.0-2</version>
<interface>
<name>IServer</name>
<instance>cnd</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>motorola.hardware.camera.imgtuner</name>
<version>1.0</version>
<interface>
<name>IImageTuning</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.display.color</name>
<version>1.0-5</version>
<interface>
<name>IDisplayColor</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.display.config</name>
<version>1.0-15</version>
<interface>
<name>IDisplayConfig</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.display.postproc</name>
<version>1.0</version>
<interface>
<name>IDisplayPostproc</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.nxp.hardware.nfc</name>
<version>1.0-1</version>
<interface>
<name>INqNfc</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.automotive.qcarcam</name>
<version>1.0</version>
<interface>
<name>IQcarCamera</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.data.factory</name>
<version>1.0</version>
<version>2.0-1</version>
<interface>
<name>IFactory</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.dvr</name>
<version>1.0</version>
<interface>
<name>IDvrDisplay</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.esepowermanager</name>
<version>1.0</version>
<interface>
<name>IEsePowerManager</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.gnss</name>
<version>1.0-2</version>
<version>2.0-1</version>
<version>3.0</version>
<interface>
<name>ILocHidlGnss</name>
<instance>gnss_vendor</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.alarm</name>
<version>1.0</version>
<interface>
<name>IAlarm</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.audiohalext</name>
<version>1.0</version>
<interface>
<name>IAudioHalExt</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.bluetooth_audio</name>
<version>2.0</version>
<interface>
<name>IBluetoothAudioProvidersFactory</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.bluetooth_dun</name>
<version>1.0</version>
<interface>
<name>IBluetoothDunServer</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.bluetooth_sar</name>
<version>1.0</version>
<interface>
<name>IBluetoothSar</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.btconfigstore</name>
<version>1.0</version>
<interface>
<name>IBTConfigStore</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.cacert</name>
<version>1.0</version>
<interface>
<name>IService</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.camera.postproc</name>
<version>1.0</version>
<interface>
<name>IPostProcService</name>
<instance>camerapostprocservice</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.capabilityconfigstore</name>
<version>1.0</version>
<interface>
<name>ICapabilityConfigStore</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.cryptfshw</name>
<version>1.0</version>
<interface>
<name>ICryptfsHw</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.cvp</name>
<version>1.0</version>
<interface>
<name>ICvp</name>
<instance>cvphalservice</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.data.connection</name>
<version>1.0-1</version>
<interface>
<name>IDataConnection</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.data.iwlan</name>
<version>1.0</version>
<interface>
<name>IIWlan</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.data.latency</name>
<version>1.0</version>
<interface>
<name>ILinkLatency</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.display.allocator</name>
<version>1.0</version>
<version>3.0</version>
<interface>
<name>IQtiAllocator</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.display.composer</name>
<version>2.0-1</version>
<interface>
<name>IQtiComposer</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.display.mapper</name>
<version>2.0</version>
<version>3.0</version>
<interface>
<name>IQtiMapper</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.embmssl</name>
<version>1.0-1</version>
<interface>
<name>IEmbms</name>
<instance>embmsslServer0</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.factory</name>
<version>1.0-1</version>
<interface>
<name>IFactory</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.fingerprint</name>
<version>1.0</version>
<interface>
<name>IQtiExtendedFingerprint</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.fm</name>
<version>1.0</version>
<interface>
<name>IFmHci</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.fstman</name>
<version>1.0</version>
<interface>
<name>IFstManager</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.improvetouch.blobmanager</name>
<version>1.0</version>
<interface>
<name>IBlobManager</name>
<instance>BlobManagerService</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.improvetouch.gesturemanager</name>
<version>1.0</version>
<interface>
<name>IGestureManager</name>
<instance>GestureManagerService</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.improvetouch.touchcompanion</name>
<version>1.0</version>
<interface>
<name>ITouchCompanion</name>
<instance>TouchCompanionService</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.iop</name>
<version>2.0</version>
<interface>
<name>IIop</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.perf</name>
<version>2.0-1</version>
<interface>
<name>IPerf</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.qdutils_disp</name>
<version>1.0</version>
<interface>
<name>IQdutilsDisp</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.qseecom</name>
<version>1.0</version>
<interface>
<name>IQSEECom</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.qteeconnector</name>
<version>1.0</version>
<interface>
<name>IAppConnector</name>
<instance>default</instance>
</interface>
<interface>
<name>IGPAppConnector</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.radio.am</name>
<version>1.0</version>
<interface>
<name>IQcRilAudio</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.radio.ims</name>
<version>1.0-6</version>
<interface>
<name>IImsRadio</name>
<instance>imsradio0</instance>
<instance>imsradio1</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.radio.internal.deviceinfo</name>
<version>1.0</version>
<interface>
<name>IDeviceInfo</name>
<instance>deviceinfo</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.radio.lpa</name>
<version>1.0</version>
<interface>
<name>IUimLpa</name>
<instance>UimLpa0</instance>
<instance>UimLpa1</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.radio.qcrilhook</name>
<version>1.0</version>
<interface>
<name>IQtiOemHook</name>
<instance>oemhook0</instance>
<instance>oemhook1</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.radio.qtiradio</name>
<version>1.0</version>
<version>2.0-4</version>
<interface>
<name>IQtiRadio</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.radio.uim</name>
<version>1.1-2</version>
<interface>
<name>IUim</name>
<instance>Uim0</instance>
<instance>Uim1</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.radio.uim_remote_client</name>
<version>1.0</version>
<interface>
<name>IUimRemoteServiceClient</name>
<instance>uimRemoteClient0</instance>
<instance>uimRemoteClient1</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.radio.uim_remote_server</name>
<version>1.0</version>
<interface>
<name>IUimRemoteServiceServer</name>
<instance>uimRemoteServer0</instance>
<instance>uimRemoteServer1</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.scve.objecttracker</name>
<version>1.0</version>
<interface>
<name>IObjectTracker</name>
<instance>objectTracker</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.scve.panorama</name>
<version>1.0</version>
<interface>
<name>IPanoramaStitching</name>
<instance>panoStitching</instance>
</interface>
<interface>
<name>IPanoramaTracking</name>
<instance>panoTracking</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.seccam</name>
<version>1.0</version>
<interface>
<name>ISecCam</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.sensorscalibrate</name>
<version>1.0</version>
<interface>
<name>ISensorsCalibrate</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.servicetracker</name>
<version>1.0-1</version>
<interface>
<name>IServicetracker</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.slmadapter</name>
<version>1.0</version>
<interface>
<name>ISlmAdapter</name>
<instance>SlmAdapter</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.soter</name>
<version>1.0</version>
<interface>
<name>ISoter</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.systemhelper</name>
<version>1.0</version>
<interface>
<name>ISystemEvent</name>
<instance>default</instance>
</interface>
<interface>
<name>ISystemResource</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.trustedui</name>
<version>1.0</version>
<interface>
<name>ITrustedInput</name>
<instance>default</instance>
</interface>
<interface>
<name>ITrustedUI</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.tui_comm</name>
<version>1.0</version>
<interface>
<name>ITuiComm</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.vpp</name>
<version>1.1-3</version>
<interface>
<name>IHidlVppService</name>
<instance>vppService</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.wifi.hostapd</name>
<version>1.0-2</version>
<interface>
<name>IHostapdVendor</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.wifi.supplicant</name>
<version>2.0</version>
<interface>
<name>ISupplicantVendor</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.wifi.wifilearner</name>
<version>1.0</version>
<interface>
<name>IWifiStats</name>
<instance>wifiStats</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.wifidisplaysession</name>
<version>1.0</version>
<interface>
<name>IWifiDisplaySession</name>
<instance>wifidisplaysession</instance>
</interface>
<interface>
<name>IWifiDisplaySessionAudioTrack</name>
<instance>wifidisplaysessionaudiotrack</instance>
</interface>
<interface>
<name>IWifiDisplaySessionImageTrack</name>
<instance>wifidisplaysessionimagetrack</instance>
</interface>
<interface>
<name>IWifiDisplaySessionVideoTrack</name>
<instance>wifidisplaysessionvideotrack</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.wigig.netperftuner</name>
<version>1.0</version>
<interface>
<name>INetPerfTuner</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.wigig.supptunnel</name>
<version>1.0</version>
<interface>
<name>ISuppTunnelProvider</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.hardware.wipower</name>
<version>1.0</version>
<interface>
<name>IWipower</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.ims.callinfo</name>
<version>1.0</version>
<interface>
<name>IService</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.imsrtpservice</name>
<version>2.0-1</version>
<interface>
<name>IRTPService</name>
<instance>imsrtpservice</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.power.pasrmanager</name>
<version>1.0</version>
<interface>
<name>IPasrManager</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.qspmhal</name>
<version>1.0</version>
<interface>
<name>IQspmhal</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.spu</name>
<version>1.0</version>
<interface>
<name>ISPUManager</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true">
<name>vendor.qti.voiceprint</name>
<version>1.0</version>
<interface>
<name>IQtiVoicePrintService</name>
<instance>default</instance>
</interface>
</hal>
<sepolicy>
<kernel-sepolicy-version>30</kernel-sepolicy-version>
<sepolicy-version>26.0</sepolicy-version>
<sepolicy-version>27.0</sepolicy-version>
<sepolicy-version>28.0</sepolicy-version>
<sepolicy-version>29.0</sepolicy-version>
</sepolicy>
<avb>
<vbmeta-version>1.0</vbmeta-version>
</avb>
</compatibility-matrix>

205
gps/apdr.conf Normal file
View file

@ -0,0 +1,205 @@
# AP DR SENSOR Configuration file
#
# SENSOR_SERVICE options are one of below
# accel,gyro,vehicle_accel,vehicle_gyro,pedometer,vehicle_odometry,accel_temp,
# gyro_temp,baro,mag_calib,mag_uncalib,amd,rmd.
#
# SENSOR_PROVIDER options is one of -- default,native,ssc,samlite.
#
# SENSOR_RATE = 1~100 (Hz)
#
# SENSOR_SAMPLES = 1~N
#
# SENSOR_STATISTIC_ENABLED
# bit 0: Diag Print Enabled
# bit 1: Adb Print Enabled
# SENSOR_STATISTIC_PRINT_COUNT
# Skip Number of Print
#
# QDR_DYNAMIC_LOADING = 1~3
# Configure QDR library to be loaded
# 1: QDR3
# 2: QDR2-GYRO
# 3: QDR2-DWT
#
#
######################################
# #
# Default Configuration #
# (GNSS only,QDR Disabled) #
# #
# For QDR enablement, comment #
# this section and enabled #
# either QDR3 OR #
# QDR2-DWT OR QDR2-Gyro related #
# configuration section in below. #
# #
######################################
SENSOR_SERVICE = accel
SENSOR_PROVIDER = native
SENSOR_RATE = 100
SENSOR_SAMPLES = 1
SENSOR_SERVICE = gyro
SENSOR_PROVIDER = native
SENSOR_RATE = 100
SENSOR_SAMPLES = 1
SENSOR_SERVICE = vehicle_gear
SENSOR_PROVIDER = native
SENSOR_RATE = 100
SENSOR_SAMPLES = 1
######################################
# #
# QDR3 Configuration #
# #
# For QDR3, #
# comment default configuration above#
# and #
# uncomment below configuration #
# settings. #
# #
######################################
#
#SENSOR_SERVICE = accel
#SENSOR_PROVIDER = native
#SENSOR_RATE = 10
#SENSOR_SAMPLES = 10
#
#SENSOR_SERVICE = vehicle_speed
#SENSOR_PROVIDER = native
#SENSOR_RATE = 100
#SENSOR_SAMPLES = 1
#
#SENSOR_SERVICE = gyro
#SENSOR_PROVIDER = native
#SENSOR_RATE = 10
#SENSOR_SAMPLES = 10
#
#SENSOR_SERVICE = vehicle_gear
#SENSOR_PROVIDER = native
#SENSOR_RATE = 100
#SENSOR_SAMPLES = 1
#
#
##Enable/disable sensor data flashback feature
#QDR_FLASHBACK_ENABLED = 0
##Configure QDR library to be loaded 1: QDR3 2: QDR2-GYRO 3: QDR2-DWS
#QDR_DYNAMIC_LOADING = 1
##Enable/disable sensor data batching feature
#QDR_BATCHING_ENABLED = 2
##Reporting offset before PPS boundary
#QDR_REPORTING_OFFSET = 0
##Sensor dispatch threshold declaration
#QDR_SENSDISPATCH_MS = 30
#
######################################
# #
# QDR2-DWT Configuration #
# #
# For QDR2-DWT, #
# comment default configuration above#
# and #
# uncomment below configuration #
# settings. #
# #
######################################
#
#SENSOR_SERVICE = vehicle_speed
#SENSOR_PROVIDER = native
#SENSOR_RATE = 100
#SENSOR_SAMPLES = 1
#SENSOR_STATISTIC_ENABLED = 3
#SENSOR_STATISTIC_PRINT_COUNT = 50
#
#SENSOR_SERVICE = vehicle_dws
#SENSOR_PROVIDER = native
#SENSOR_RATE = 100
#SENSOR_SAMPLES = 1
#SENSOR_STATISTIC_ENABLED = 3
#SENSOR_STATISTIC_PRINT_COUNT = 50
#
#SENSOR_SERVICE = vehicle_gear
#SENSOR_PROVIDER = native
#SENSOR_RATE = 100
#SENSOR_SAMPLES = 1
#SENSOR_STATISTIC_ENABLED = 3
#SENSOR_STATISTIC_PRINT_COUNT = 50
#
#GNSS_POS_STATISTIC_ENABLED = 3
#GNSS_POS_STATISTIC_PRNTCNT = 10
#GNSS_MSR_STATISTIC_ENABLED = 3
#GNSS_MSR_STATISTIC_PRNTCNT = 10
#
##Enable/disable sensor data flashback feature
#QDR_FLASHBACK_ENABLED = 0
##Configure QDR library to be loaded 1: QDR3 2: QDR2-GYRO 3: QDR2-DWS
#QDR_DYNAMIC_LOADING = 3
##Enable/disable sensor data batching feature
#QDR_BATCHING_ENABLED = 0
##Reporting offset before PPS boundary
#QDR_REPORTING_OFFSET = 0
##Sensor dispatch threshold declaration
#QDR_SENSDISPATCH_MS = 30
##QDR_ENABLE_QG shall be set as 1
#QDR_ENABLE_QG = 1
##Select Wheel set (E.g.: Front two wheels, Rear two wheels OR All four wheels)
##To be used for differential wheel tick OR speed service.
##This configuration is applicable when QDR_CAN_TYPE configured as
##ODO_DWS(3) or ODO_DWT(2).
##Value "0": Use Front two wheels
##Value "1": Use Rear two wheels
##Value "2": Use All four wheels
#QG_DRIVE_WHEEL_FW_RW_AW = 2
##Max Wheel tick value above which wheel tick rolls over
##This configuration is applicable when QDR_CAN_TYPE configured as ODO_DWT(2)
#QG_DWT_MAX_WHEEL_TICK_COUNT = 255.0
##Configure Wheel constant for DWT based below equation
##(2 * pi * WHEEL_RADIUS / Pulses Per revolution)
##This configuration is applicable when QDR_CAN_TYPE configured as ODO_DWT(2)
#QG_DWT_WHEEL_CONSTANT = 0.044
######################################
# #
# QDR2-GYRO Configuration #
# #
# For QDR2-GYRO, #
# comment default configuration above#
# and #
# uncomment below configuration #
# settings. #
# #
######################################
#
#SENSOR_SERVICE = vehicle_speed
#SENSOR_PROVIDER = native
#SENSOR_RATE = 100
#SENSOR_SAMPLES = 1
#
#SENSOR_SERVICE = vehicle_gyro
#SENSOR_PROVIDER = native
#SENSOR_RATE = 100
#SENSOR_SAMPLES = 1
#
#SENSOR_SERVICE = vehicle_gear
#SENSOR_PROVIDER = native
#SENSOR_RATE = 100
#SENSOR_SAMPLES = 1
#
##Enable/disable sensor data flashback feature
#QDR_FLASHBACK_ENABLED = 0
##Configure QDR library to be loaded 1: QDR3 2: QDR2-GYRO 3: QDR2-DWS
#QDR_DYNAMIC_LOADING = 2
##Enable/disable sensor data batching feature
#QDR_BATCHING_ENABLED = 0
##Reporting offset before PPS boundary
#QDR_REPORTING_OFFSET = 0
##Sensor dispatch threshold declaration
#QDR_SENSDISPATCH_MS = 30
#

60
gps/flp.conf Normal file
View file

@ -0,0 +1,60 @@
###################################
##### FLP settings #####
###################################
###################################
# FLP BATCH SIZE
###################################
# The number of batched locations
# requested to modem. The desired number
# defined below may not be satisfied, as
# the modem can only return the number
# of batched locations that can be allocated,
# which is limited by memory. The default
# batch size defined as 20 as below.
BATCH_SIZE=20
###################################
# FLP OUTDOOR TRIP BATCH SIZE
###################################
# The number of batched locations
# requested to modem for outdoor
# trip batching. The desired number
# defined below may not be satisfied, as
# the modem can only return the number
# of batched locations that can be allocated,
# which is limited by memory. The default
# trip batch size defined as 600 as below.
OUTDOOR_TRIP_BATCH_SIZE=600
###################################
# FLP BATCHING SESSION TIMEOUT
###################################
# Duration with which batch session timeout
# happens in milliseconds. If not specified
# or set to zero, batching session timeout
# defaults to 20 seconds by the modem.
# BATCH_SESSION_TIMEOUT=20000
###################################
# FLP BATCHING ACCURACY
###################################
# Set to one of the defined values below
# to define the accuracy of batching.
# If not specified, accuracy defaults
# to LOW.
# FLP BATCHING ACCURACY values:
# Low accuracy = 0
# Medium accuracy = 1
# High accuracy = 2
ACCURACY=1
####################################
# By default if network fixes are not sensor assisted
# these fixes must be dropped. This parameter adds an exception
# for targets where there is no PDR and we still want to
# report out network fixes
# 0: MUST NOT ALLOW NETWORK FIXES
# 1: ALLOW NETWORK FIXES
####################################
ALLOW_NETWORK_FIXES = 0

313
gps/gps.conf Normal file
View file

@ -0,0 +1,313 @@
#hardware/qcom/gps/loc_api/conf/gps.conf
NI_SUPL_DENY_ON_NFW_LOCKED = 1
#####################################
# proxyAppPackageName
#####################################
# This is a string that is sent to the framework
# in nfwNotifyCb callback
# Add NFW package name
PROXY_APP_PACKAGE_NAME = com.motorola.nfwlocationattribution
#Version check for XTRA
#DISABLE = 0
#AUTO = 1
#XTRA2 = 2
#XTRA3 = 3
XTRA_VERSION_CHECK=0
# Error Estimate
# _SET = 1
# _CLEAR = 0
ERR_ESTIMATE=0
#NTP server
NTP_SERVER=time.izatcloud.net
#XTRA CA path
XTRA_CA_PATH=/usr/lib/ssl/certs
# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info
# 4 - Debug, 5 - Verbose
# If DEBUG_LEVEL is commented, Android's logging levels will be used
DEBUG_LEVEL = 2
# Intermediate position report, 1=enable, 0=disable
#INTERMEDIATE_POS=0
# supl version 1.0
#SUPL_VER=0x10000
# Emergency SUPL, 1=enable, 0=disable
#SUPL_ES=1
#Choose PDN for Emergency SUPL
#1 - Use emergency PDN
#0 - Use regular SUPL PDN for Emergency SUPL
#USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=0
#SUPL_MODE is a bit mask set in config.xml per carrier by default.
#If it is uncommented here, this value will overwrite the value from
#config.xml.
#MSA=0X2
#MSB=0X1
#SUPL_MODE=
# GPS Capabilities bit mask
# SCHEDULING = 0x01
# MSB = 0x02
# MSA = 0x04
# ON_DEMAND_TIME = 0x10
# default = ON_DEMAND_TIME | MSA | MSB | SCHEDULING
CAPABILITIES=0x77
# Accuracy threshold for intermediate positions
# less accurate positions are ignored, 0 for passing all positions
# ACCURACY_THRES=5000
################################
##### AGPS server settings #####
################################
# FOR SUPL SUPPORT, set the following
# SUPL_HOST=supl.host.com or IP
# SUPL_PORT=1234
# FOR MO SUPL SUPPORT, set the following
# MO_SUPL_HOST=supl.host.com or IP
# MO_SUPL_PORT=1234
# FOR C2K PDE SUPPORT, set the following
# C2K_HOST=c2k.pde.com or IP
# C2K_PORT=1234
# Bitmask of slots that are available
# for write/install to, where 1s indicate writable,
# and the default value is 0 where no slots
# are writable. For example, AGPS_CERT_WRITABLE_MASK
# of b1000001010 makes 3 slots available
# and the remaining 7 slots unwritable.
#AGPS_CERT_WRITABLE_MASK=0
####################################
# LTE Positioning Profile Settings
####################################
# 0: Enable RRLP on LTE(Default)
# 1: Enable LPP_User_Plane on LTE
# 2: Enable CP LPP, UP RRLP
# 3: Enable both LPP_User_Plane and LPP_Control_Plane
# 4: Enable CP LPP and LPPe DBH, UP RRLP (TMO)
# 5: Enable CP & UP - LPP and LPPe DBH (VzW)
# 6: Enable CP LPP and LPPe DBH, LPPe WLAN, UP RRLP (TMO)
# 7: Enable CP & UP - LPP and LPPe DBH, LPPe WLAN (VzW)
# 8: Enable CP LPP and LPPe DBH, LPPe WLAN, LPPe UBP, UP RRLP (TMO)
# 9: Enable CP & UP - LPP and LPPe DBH, LPPe WLAN, LPPe UBP(VzW)
# 10: Enable CP LPP and LPPe DBH, UP LPP - disable UP LPPe(AT&T )
# 11: Enable CP LPP and LPPe DBH/WLAN, UP LPP - disable UP LPPe (AT&T)
# 12: Enable CP LPP and LPPe DBH/WLAN/UBP, UP LPP - disable UP LPPe (AT&T)
#LPP_PROFILE = 2
####################################
#Datum Type
####################################
# 0: WGS-84
# 1: PZ-90
#DATUM_TYPE = 0
################################
# EXTRA SETTINGS
################################
# NMEA provider (1=Modem Processor, 0=Application Processor)
#NMEA_PROVIDER=0
# Mark if it is a SGLTE target (1=SGLTE, 0=nonSGLTE)
#SGLTE_TARGET=0
##################################################
# Select Positioning Protocol on A-GLONASS system
##################################################
# 0x1: RRC CPlane
# 0x2: RRLP UPlane
# 0x4: LLP Uplane
#A_GLONASS_POS_PROTOCOL_SELECT = 0
#
##################################################
# Select technology for LPPe Control Plane
##################################################
# 0x1: DBH for LPPe CP
# 0x2: WLAN AP Measurements for LPPe CP
# 0x4: SRN AP measurement for CP
# 0x8: Sensor Barometer Measurement LPPe CP
#LPPE_CP_TECHNOLOGY = 0
##################################################
# Select technology for LPPe User Plane
##################################################
# 0x1: DBH for LPPe UP
# 0x2: WLAN AP Measurements for LPPe UP
# 0x4: SRN AP measurement for UP
# 0x8: Sensor Barometer Measurement LPPe UP
#LPPE_UP_TECHNOLOGY = 0
##################################################
# AGPS_CONFIG_INJECT
##################################################
# enable/disable injection of AGPS configurations:
# SUPL_VER
# SUPL_HOST
# SUPL_PORT
# MO_SUPL_HOST
# MO_SUPL_PORT
# C2K_HOST
# C2K_PORT
# LPP_PROFILE
# A_GLONASS_POS_PROTOCOL_SELECT
# 0: disable
# 1: enable
#AGPS_CONFIG_INJECT = 1
##################################################
# GNSS settings for automotive use cases
# Configurations in following section are
# specific to automotive use cases, others
# please do not change, keep the default values
##################################################
# AP Coarse Timestamp Uncertainty
##################################################
# default : 10
# AP time stamp uncertainty, until GNSS receiver
# is able to acquire better timing information
#AP_TIMESTAMP_UNCERTAINTY = 10
##################################################
# QDR engine availability status
##################################################
# 0 : NO QDR (default)
# 1 : QDR enabled
# This settings enables QDR Configuration for
# automotive use case, if enabled then
# DR_AP_Service needs to be enabled in izat.conf
#EXTERNAL_DR_ENABLED = 0
#####################################
# DR_SYNC Pulse Availability
#####################################
# 0 : DR_SYNC pulse not available (default)
# 1 : DR_SYNC pulse available
# This configuration enables the driver to make use
# of PPS events generated by DR_SYNC pulse
# Standard Linux PPS driver needs to be enabled
#DR_SYNC_ENABLED = 0
#####################################
# PPS Device name
#####################################
#PPS_DEVICENAME = /dev/pps0
#####################################
# Ignore PPS at Startup and after long outage
#####################################
#IGNORE_PPS_PULSE_COUNT = 1
#####################################
# Long GNSS RF outage in seconds
#####################################
#GNSS_OUTAGE_DURATION = 10
#####################################
# AP Clock Accuracy
#####################################
# Quality of APPS processor clock (in PPM).
# Value specified is used for calculation of
# APPS time stamp uncertainty
#AP_CLOCK_PPM = 100
#####################################
# MAX ms difference to detect missing pulse
#####################################
# Specifies time threshold in ms to validate any missing PPS pulses
#MISSING_PULSE_TIME_DELTA = 900
#####################################
# Propagation time uncertainty
#####################################
# This settings enables time uncertainty propagation
# logic incase of missing PPS pulse
#PROPAGATION_TIME_UNCERTAINTY = 1
#######################################
# APN / IP Type Configuration
# APN and IP Type to use for setting
# up WWAN call.
# Use below values for IP Type:
# v4 = 4
# v6 = 6
# v4v6 = 10
#######################################
# INTERNET_APN = abc.xyz
# INTERNET_IP_TYPE = 4
# SUPL_APN = abc.xyz
# SUPL_IP_TYPE = 4
#####################################
# Modem type
#####################################
# This setting configures modem type
# (external=0 or internal=1)
# comment out the next line to vote
# for the first modem in the list
MODEM_TYPE = 1
##################################################
# CONSTRAINED TIME UNCERTAINTY MODE
##################################################
# 0 : disabled (default)
# 1 : enabled
# This setting enables GPS engine to keep its time
# uncertainty below the specified constraint
#CONSTRAINED_TIME_UNCERTAINTY_ENABLED = 0
# If constrained time uncertainty mode is enabled,
# this setting specifies the time uncertainty
# threshold that gps engine need to maintain.
# In unit of milli-seconds.
# Default is 0.0 meaning that modem default value
# of time uncertainty threshold will be used.
#CONSTRAINED_TIME_UNCERTAINTY_THRESHOLD = 0.0
# If constrained time uncertainty mode is enabled,
# this setting specifies the power budget that
# gps engine is allowed to spend to maintain the time
# uncertainty.
# Default is 0 meaning that GPS engine is not constained
# by power budget and can spend as much power as needed.
# In unit of 0.1 milli watt second.
#CONSTRAINED_TIME_UNCERTAINTY_ENERGY_BUDGET = 0
##################################################
# POSITION ASSISTED CLOCK ESTIMATOR
##################################################
# 0 : disabled (default)
# 1 : enabled
# This setting enables GPS engine to estimate clock
# bias and drift when the signal from at least 1
# SV is available and the UEs position is known by
# other position engines.
#POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED = 0
#####################################
# CP_MTLR_ES
#####################################
# CP MTLR ES, 1=enable, 0=disable
#CP_MTLR_ES=0
##################################################
# GNSS_DEPLOYMENT
##################################################
# 0 : Enable QTI GNSS (default)
# 1 : Enable QCSR SS5
# This setting use to select between QTI GNSS
# and QCSR SS5 hardware receiver.
# By default QTI GNSS receiver is enabled.
# GNSS_DEPLOYMENT = 0

282
gps/izat.conf Normal file
View file

@ -0,0 +1,282 @@
#########################################
# Log verbosity control for izat modules
#########################################
# OFF = 0, ERROR = 1, WARNING = 2, INFO = 3, DEBUG = 4, VERBOSE = 5
IZAT_DEBUG_LEVEL = 5
##################################################
# Select WIFI Wait Timeout value in seconds for SUPL
##################################################
WIFI_WAIT_TIMEOUT_SELECT = 0
##################################################
# Time interval of injecting SRN scan data to modem
# time in seconds.
# Note: recommended value is between 1-5 sec
##################################################
LPPE_SRN_DATA_SCAN_INJECT_TIME=2
##################################################
# Identify this target as OTA updated or new
# 0 - New target
# 1 - OTA updated
##################################################
OTA_UPDATED_TARGET=0
################################
# NLP Settings
################################
# NLP_MODE 1: OSNLP Only, 2: QNP Only, 3: Combo, 4: QNP preferred
# For Automotive products, please use NLP_MODE = 4 only.
# NLP_TOLERANCE_TIME_FIRST: Time in ms used in Combo mode
# to determine how much Tolerance for first position
# NLP_TOLERANCE_TIME_AFTER: Time in ms used in Combo mode
# to determine how much Tolerance for positions after first
# NLP_THRESHOLD: Sets how many failures needed before
# switching preferred NLP in Combo mode
# NLP_ACCURACY_MULTIPLE: Determines how far off the accuracy
# must be, in multiples, between two NLP location reports to
# be considered much worse accuracy. Used in switching logic
# NLP COMBO MODE USES QNP WITH NO EULA CONSENT: Determines
# whether or not to still send network location requests to
# QNP when the EULA is not consented to by the user. QNP can
# still return ZPP locations or injected locations even
# without EULA consent, but the uncertainty can be high.
# QNP preferred mode prefers QNP when there is EULA consent,
# otherwise OSNLP is used.
NLP_MODE = 1
NLP_MODE_EMERGENCY = 2
NLP_TOLERANCE_TIME_FIRST = 5000
NLP_TOLERANCE_TIME_AFTER = 20000
NLP_THRESHOLD = 3
NLP_ACCURACY_MULTIPLE = 2
NLP_COMBO_MODE_USES_QNP_WITH_NO_EULA_CONSENT = 1
#########################################
# NLP PACKAGE SETTINGS
#########################################
# OSNLP_PACKAGE: name of default NLP package
OSNLP_PACKAGE = com.google.android.gms
# REGION_OSNLP_PACKAGE:
# This value will be used as alternative
# for particular region where default NLP is not functional.
#REGION_OSNLP_PACKAGE =
###################################
# GEOFENCE SERVICES
###################################
# If set to one of the defined values below, it will override
# the responsiveness for geofence services, which implements
# the Proximity Alert API. If not set to a value defined below,
# which is default, it will not override the responsivness.
# The geofence HAL API is unaffected by this value.
# GEOFENCE_SERVICES_RESPONSIVENESS_OVERRIDE Values:
# 1: LOW responsiveness
# 2: MEDIUM responsiveness
# 3: HIGH responsiveness
GEOFENCE_SERVICES_RESPONSIVENESS_OVERRIDE = 0
#####################################
#GTP Opt-In app
#####################################
#GTP privacy policy version url
#https support is required
GTP_PRIVACY_VERSION_URL = https://info.izatcloud.net/privacy/version.html
#GTP privacy policy version download retry interval
#unit is second. default is 86400
GTP_PRIVACY_RETRY_INTERVAL = 86400
#####################################
# IZAT PREMIUM FEATURE SETTINGS
#####################################
#Possible states of a feature:
#DISABLED
#BASIC
#PREMIUM
#GTP_MODE valid modes:
# DISABLED
# LEGACY_WWAN
# SDK (WWAN not available for Modems before LocTech 10.0)
GTP_MODE=DISABLED
#GTP_WAA valid modes:
# DISABLED
# BASIC
GTP_WAA=DISABLED
#SAP valid modes:
# DISABLED
# BASIC
# PREMIUM
# MODEM_DEFAULT
SAP=MODEM_DEFAULT
#FREE_WIFI_SCAN_INJECT valid modes:
#DISABLED
#BASIC
FREE_WIFI_SCAN_INJECT=BASIC
#SUPL_WIFI valid modes:
#DISABLED
#BASIC
SUPL_WIFI=BASIC
#WIFI_SUPPLICANT_INFO valid modes:
#DISABLED
#BASIC
WIFI_SUPPLICANT_INFO=BASIC
#####################################
# Location process launcher settings
#####################################
# DO NOT MODIFY
# Modifying below attributes without
# caution can have serious implications.
#Values for PROCESS_STATE:
# ENABLED
# DISABLED
#Values for LOW_RAM_TARGETS:
# ENABLED
# DISABLED
# Property to enable/disable processes for low ram targets. Uses ro.config.low_ram property
# to identify low ram targets.
#PROCESS_NAME
# Name of the executable file.
#FEATURE MASKS:
# GTP-WIFI 0X03
# GTP-MP-CELL 0xc00
# GTP-WAA 0x100
# SAP 0Xc0
# ODCPI 0x1000
# FREE_WIFI_SCAN_INJECT 0x2000
# SUPL_WIFI 0x4000
# WIFI_SUPPLICANT_INFO 0x8000
#Values for PLATFORMS can be:
#1. Any valid values obtained from ro.board.platform separated by single space. For example: msm8960 msm8226
#2. 'all' or 'all exclude' -> for All platforms
#3. 'all exclude XXXX' -> All platforms exclude XXXX. For example: all exclude msm8937
#Values for SOC_IDS can be:
#1. Any valid values obtained from soc_id node separated by single space. For example: 339 386 436
## soc_id value can be obtained from any one of below node:
## - /sys/devices/soc0/soc_id
## - /sys/devices/system/soc/soc0/id
#2. 'all' or 'all exclude' -> for All soc id's
#3. 'all exclude XXXX' -> All soc id's exclude XXXX. For example: all exclude 339 386
#Values for BASEBAND can be:
#1. Any valid values obtained from ro.baseband separated by single space. For example: sglte sglte2
#2. 'all' or 'all exclude' -> for all basebands
#3. 'all exclude XXXX' -> All basebands exclude XXXX. For example: all exclude sglte
PROCESS_NAME=lowi-server
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=gps wifi inet oem_2901
PREMIUM_FEATURE=0
IZAT_FEATURE_MASK=0xf303
PLATFORMS=all
SOC_IDS=all
BASEBAND=all
LOW_RAM_TARGETS=DISABLED
HARDWARE_TYPE=all
VENDOR_ENHANCED_PROCESS=0
PROCESS_NAME=xtwifi-inet-agent
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=inet gps
PREMIUM_FEATURE=1
IZAT_FEATURE_MASK=0xc03
PLATFORMS=all
SOC_IDS=all exclude 386 436
BASEBAND=all
LOW_RAM_TARGETS=DISABLED
HARDWARE_TYPE=all
VENDOR_ENHANCED_PROCESS=1
PROCESS_NAME=xtwifi-client
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=wifi inet gps system oem_2904
PREMIUM_FEATURE=1
IZAT_FEATURE_MASK=0xd03
PLATFORMS=all
SOC_IDS=all exclude 386 436
BASEBAND=all
LOW_RAM_TARGETS=DISABLED
HARDWARE_TYPE=all
VENDOR_ENHANCED_PROCESS=1
PROCESS_NAME=slim_daemon
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=gps oem_2901 can plugdev diag sensors
PREMIUM_FEATURE=1
IZAT_FEATURE_MASK=0xf0
PLATFORMS=all
SOC_IDS=all exclude 386 436
BASEBAND=all
LOW_RAM_TARGETS=DISABLED
HARDWARE_TYPE=all
VENDOR_ENHANCED_PROCESS=1
PROCESS_NAME=xtra-daemon
PROCESS_ARGUMENT=
PROCESS_STATE=ENABLED
PROCESS_GROUPS=inet gps system
PREMIUM_FEATURE=0
IZAT_FEATURE_MASK=0
PLATFORMS=all
SOC_IDS=all
BASEBAND=all
LOW_RAM_TARGETS=ENABLED
HARDWARE_TYPE=all
VENDOR_ENHANCED_PROCESS=0
########################################
# Engine Service which host DRE module #
# To enable DRE engine service, change #
# PROCESS_STATE=ENABLED #
########################################
PROCESS_NAME=engine-service
PROCESS_ARGUMENT=DRE-INT libloc_epDr.so
PROCESS_STATE=DISABLED
PROCESS_GROUPS=gps diag inet qwes oem_2901 system
PREMIUM_FEATURE=0
IZAT_FEATURE_MASK=0
PLATFORMS=all
SOC_IDS=all
BASEBAND=all
LOW_RAM_TARGETS=DISABLED
HARDWARE_TYPE=all
VENDOR_ENHANCED_PROCESS=1
########################################
# Engine Service which host PPE module #
# To enable PPE engine service, change #
# PROCESS_STATE=ENABLED #
# and update process arugements #
# with PPE library name #
#PROCESS_ARGUMENT=PPE libepsimulator.so#
########################################
PROCESS_NAME=engine-service
PROCESS_ARGUMENT=PPE libepsimulator.so
PROCESS_STATE=DISABLED
PROCESS_GROUPS=gps diag inet oem_2901
PREMIUM_FEATURE=0
IZAT_FEATURE_MASK=0
PLATFORMS=all
SOC_IDS=all
BASEBAND=all
LOW_RAM_TARGETS=DISABLED
HARDWARE_TYPE=all
VENDOR_ENHANCED_PROCESS=1

27
gps/lowi.conf Normal file
View file

@ -0,0 +1,27 @@
#*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
#
# LOWI Config file
#
# GENERAL DESCRIPTION
# This file contains the config params for LOWI
#
# Copyright (c) 2019 Qualcomm Technologies, Inc.
# All Rights Reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
#
# 2012-2013 Qualcomm Atheros, Inc.
# All Rights Reserved.
# Qualcomm Atheros Confidential and Proprietary.
#
# Export of this technology or software is regulated by the U.S. Government.
# Diversion contrary to U.S. law prohibited.
#=============================================================================*/
# X86 ONLY - UBUNTU:
# Copy this file in the same directory where the executable is
# Log level
# EL_LOG_OFF = 0, EL_ERROR = 1, EL_WARNING = 2, EL_INFO = 3, EL_DEBUG = 4, EL_VERBOSE = 5, EL_LOG_ALL = 100
LOWI_LOG_LEVEL = 3
LOWI_USE_LOWI_LP = 0

161
gps/sap.conf Normal file
View file

@ -0,0 +1,161 @@
################################
# Sensor Settings
################################
#The following parameters are optional.
#Internal defaults support MEMS sensors
#native to most handset devices.
#Device specific sensor characterization
#for improved performance is possible as
#described in SAP application notes.
#GYRO_BIAS_RANDOM_WALK=
#ACCEL_RANDOM_WALK_SPECTRAL_DENSITY=
#ANGLE_RANDOM_WALK_SPECTRAL_DENSITY=
#RATE_RANDOM_WALK_SPECTRAL_DENSITY=
#VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY=
# Sensor Sampling Rate Parameters for Low-Data Rate Filter (should be greater than 0)
# used in loc_eng_reinit
SENSOR_ACCEL_BATCHES_PER_SEC=2
SENSOR_ACCEL_SAMPLES_PER_BATCH=5
SENSOR_GYRO_BATCHES_PER_SEC=2
SENSOR_GYRO_SAMPLES_PER_BATCH=5
# Sensor Sampling Rate Parameters for High-Data Rate Filter (should be greater than 0)
SENSOR_ACCEL_BATCHES_PER_SEC_HIGH=4
SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH=25
SENSOR_GYRO_BATCHES_PER_SEC_HIGH=4
SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH=25
# Sensor Control Mode (0=AUTO, 1=FORCE_ON, 2=MODEM_DEFAULT)
# used in loc_eng_reinit
SENSOR_CONTROL_MODE=2
# Bit mask used to define which sensor algorithms are used.
# Setting each bit has the following definition:
# 0x1 - DISABLE_INS_POSITIONING_FILTER
# 0x0 - ENABLE_INS_POSITIONING_FILTER
SENSOR_ALGORITHM_CONFIG_MASK=0x1
#Vehicle Network Provider configuration
#Service configuration strings
#The number before colon in VN_X items defines version of the format of the rest of the string
#VN_ACCEL_CFG=0:5
#VN_GYRO_CFG=0:5.5
#VN_ODOMETRY_CFG=0:2,4.5
################################################
# QDR3 configurations #
################################################
VN_SPEED_CFG=1:131,5,8,1,2,3,1,1,9,2,14,2
VN_GEAR_CFG=1:422,20,4,0,4,1,9,0,1,2,3,4,5,6,7,8
################################################
# QDR2-Gyro configurations #
################################################
#VN_GYRO_CFG=1:555,0,1,0,0,0,0,-6.5,6.6066,-6.5,-1.00,2,6.607,6.6068,0,0,16,0.0002,0,16,0.0002,0,16,0.0002
#VN_SPEED_CFG=1:555,0,0,1,2,1,0.01,0,56,8,48,8
#VN_GEAR_CFG=1:555,16,4,0,1,1,9,0,1,2,3,4,5,6,7,8
################################################
# QDR2-DWT configurations #
################################################
#VN_SPEED_CFG=1:555,22,1,2,1,1,1,0,8,8,23,1,2,0,1,0,8,8,23,1
#VN_GEAR_CFG=1:555,12,4,16,14,16,8,1,2,3,4,5,6,7,8
#VN_DWS_CFG=1:555,0,0,1,3,1,1,0,0,8,0,0,8,8,0,0,16,8,0,0,24,8,0,0
#VN_GYRO_CFG=1:555,40,16,1.0,40,16,1.0,40,16,1.0
#####################################################################################
# VNW service batching configuration strings #
# VNW provider will initialize default type as Time based batching #
# Each service batch value is configured to be 100 #
# VN_ACCEL_CFG_BATCH_VALUE will be treated as time in Ms if VN_CFG_BATCH_TYPE #
# is set to time based batching #
# VN_ACCEL_CFG_BATCH_VALUE will be treated as sample count if VN_CFG_BATCH_TYPE #
# is set to count based batching #
# Uncomment and update batch time /sample count as per selected batching type #
#####################################################################################
# Batching type
# 1 - Time based (default)
# 2 - Count based
#VN_CFG_BATCH_TYPE=1
#Vehicle Accel batching value, it can either accept time in milli seconds or sample count
#VN_ACCEL_CFG_BATCH_VALUE=100
#Vehicle Gyro batching value, it can either accept time in milli seconds or sample count
#VN_GYRO_CFG_BATCH_VALUE=100
#Vehicle Odo batching value, it can either accept time in milli seconds or sample count
#VN_ODOMETRY_CFG_BATCH_VALUE=100
#Vehicle Speed batching value, it can either accept time in milli seconds or sample count
#VN_SPEED_CFG_BATCH_VALUE=100
#Vehicle Gear batching value, it can either accept time in milli seconds or sample count
#VN_GEAR_CFG_BATCH_VALUE=100
#Vehicle DWS batching value, it can either accept time in milli seconds or sample count
#VN_DWS_CFG_BATCH_VALUE=100
####################################################################################
#Procesors clock ratio: AP and CAN bus microcontroller
################################################
# QDR3 configurations #
################################################
VN_PROC_CLOCK_RATIO=1.0
################################################
# QDR2-DWT OR QDR2-Gyro configurations #
################################################
#VN_PROC_CLOCK_RATIO = 1.0
# Time source used by Sensor HAL
# Setting this value controls accuracy of location sensor services.
# 0 - Unknown
# 1 - CLOCK_BOOTTIME
# 2 - CLOCK_MONOTONIC
# 3 - CLOCK_REALTIME
# 4 - CLOCK_BOOTTIME using Alarm timer interface
NDK_PROVIDER_TIME_SOURCE=1
# Sensor Batching Configuration
# 0 - Time based
# 1 - Fixed count based
# 2 - Variable count based
COUNT_BASED_BATCHING=1
SYNC_ONCE=0
#Sensor HAL Provider Configuration HAL Library name including path
################################################
# #
# Configuration for BMI 160 Sensor #
# #
################################################
SENSOR_TYPE=2
SENSOR_HAL_LIB_PATH=/usr/lib/libbmi160sensors.so.1
################################################
# #
# Configuration for ASM330 Sensor #
# #
################################################
#SENSOR_TYPE=1
#SENSOR_HAL_LIB_PATH=/usr/lib/libasm330sensors.so.1
################################################
# #
# Configuration for IAM20680 Sensor #
# #
################################################
#SENSOR_TYPE=3
#SENSOR_HAL_LIB_PATH=/usr/lib/libiam20680sensors.so.1
################################################
# #
# Configuration for SMI130 Sensor #
# #
################################################
#SENSOR_TYPE=4
#SENSOR_HAL_LIB_PATH=/usr/lib/libsmi130sensors.so.1

78
gps/xtwifi.conf Normal file
View file

@ -0,0 +1,78 @@
#GTP AP Project client core config file
#
#GENERAL DESCRIPTION
#This is used by client core
#
#Copyright (c) 2012-2014 Qualcomm Atheros, Inc.
#All Rights Reserved.
#Qualcomm Atheros Confidential and Proprietary.
#
#Copyright (c) 2017 Qualcomm Technologies, Inc.
#All Rights Reserved.
#Confidential and Proprietary - Qualcomm Technologies, Inc.
##############################################################################
# non-IOT devices configuration items #
# For non-IOT devices, configure below configuration items #
# according to the app note: 80-NK218-1 and remove the configuration items #
# in section of "IOT devices configuration items". #
##############################################################################
# ASN URI v2 to be used by some GTP AP modules that
# need to run with ASN URI v2 protocol.
XT_SERVER_ROOT_URL = https://gtp1.izatcloud.net:443/uds/v2
# ASN URI v3 to be used by GTP AP modules that
# can support ASN URI v3 protocol.
XT_SERVER_ROOT_URL_V3 = https://gtp1.izatcloud.net:443/uds/v3
# size, in bytes, of the cache on device
SIZE_BYTE_TOTAL_CACHE = 5000000
##############################################################################
# IOT devices configuration items #
# For IOT devices, configure below configuration items #
# according to the app note and remove the configuration items in section of #
# "non-IOT devices configuration items". #
##############################################################################
# ASN URI v3 to be used by GTP AP modules that
# can support ASN URI v3 protocol.
# XT_SERVER_ROOT_URL_V3 = https://gtpma1.izatcloud.net:443/uds/v3
# 3: Wi-Fi APDB injection via Izat SDK. GTP server is not accessed
# for any GTP requests, instead notification is sent to Izat SDK.
# WiFi crowdsourcing module is disabled.
# 4: Wi-Fi APDB injection via Izat SDK. GTP server is not accessed
# for any GTP requests, instead notification is sent to Izat SDK.
# WiFi crowdsourcing module is active, also accessed via Izat SDK.
# GTP_AP_MODE = 4
# 1: MP cell features relies on GTP AP for either download or upload
# 0: MP cell features does not rely on GTP AP
# GTP_AP_NEEDED_BY_MP_CELL = 1
##############################################################################
# Configuration items applicable to all devices #
##############################################################################
# Log verbosity control for most of the GTP WiFi system, including native and
# Java componenets
# OFF = 0, ERROR = 1, WARNING = 2, INFO = 3, DEBUG = 4, VERBOSE = 5, ALL = 100
DEBUG_GLOBAL_LOG_LEVEL = 2
# this is used at the server side to distinguish uploads from different maker/model
# default "Qualcomm"
OEM_ID_IN_REQUEST_TO_SERVER = "Qualcomm"
# this is used at the server side to distinguish uploads from different maker/model
# default "UNKNOWN"
MODEL_ID_IN_REQUEST_TO_SERVER = "UNKNOWN"
##############################################################################
# Qualcomm Network Location Provider config #
##############################################################################
# Accuracy Threshold for NLP position. Position exceeds thsi threshold will be filtered out.
# Default is 25000 meters.
LARGE_ACCURACY_THRESHOLD_TO_FILTER_NLP_POSITION = 25000

16
idc/uinput-fpc.idc Normal file
View file

@ -0,0 +1,16 @@
#
# FPC1020 Touch sensor driver
#
# Copyright (c) 2013,2014 Fingerprint Cards AB <tech@fingerprints.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License Version 2
# as published by the Free Software Foundation.
#
device.internal = 1
keyboard.layout = uinput-fpc
keyboard.builtIn = 1
keyboard.orientationAware = 1

34
keylayout/gpio-keys.kl Normal file
View file

@ -0,0 +1,34 @@
# Copyright (c) 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 "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.
key 115 VOLUME_UP
key 114 VOLUME_DOWN
key 102 HOME
key 217 ASSIST
key 528 FOCUS
key 766 CAMERA
key 158 BACK

15
keylayout/uinput-fpc.kl Normal file
View file

@ -0,0 +1,15 @@
#
# FPC1020 Touch sensor driver
#
# Copyright (c) 2013,2014 Fingerprint Cards AB <tech@fingerprints.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License Version 2
# as published by the Free Software Foundation.
#
# fpc1020 "finger present"
key 618 SYSTEM_NAVIGATION_DOWN
key 619 SYSTEM_NAVIGATION_UP
key 620 SYSTEM_NAVIGATION_RIGHT
key 621 SYSTEM_NAVIGATION_LEFT

23
lineage_guamp.mk Normal file
View file

@ -0,0 +1,23 @@
# Inherit from those products. Most specific first.
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk)
# Inherit some common Lineage stuff
$(call inherit-product, vendor/lineage/config/common_full_phone.mk)
# Inherit from guamp device
$(call inherit-product, $(LOCAL_PATH)/device.mk)
PRODUCT_BRAND := motorola
PRODUCT_DEVICE := guamp
PRODUCT_MANUFACTURER := motorola
PRODUCT_NAME := lineage_guamp
PRODUCT_MODEL := moto g(9) play
PRODUCT_GMS_CLIENTID_BASE := android-motorola
TARGET_VENDOR := motorola
TARGET_VENDOR_PRODUCT_NAME := guamp
PRODUCT_BUILD_PROP_OVERRIDES += PRIVATE_BUILD_DESC="msi-user 10 QP1A.191005.002 b961a release-keys"
# Set BUILD_FINGERPRINT variable to be picked up by both system and vendor build.prop
BUILD_FINGERPRINT := motorola/msi/msi:10/QP1A.191005.002/b961a:user/release-keys

800
manifest.xml Normal file
View file

@ -0,0 +1,800 @@
<!--
Input:
manifest.xml
manifest_ab.xml
manifest.xml
manifest.xml
manifest_IMoto_Fingerprint.xml
-->
<manifest version="1.0" type="device" target-level="4">
<hal format="hidl">
<name>android.hardware.audio</name>
<transport>hwbinder</transport>
<version>5.0</version>
<interface>
<name>IDevicesFactory</name>
<instance>default</instance>
</interface>
<fqname>@5.0::IDevicesFactory/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.audio.effect</name>
<transport>hwbinder</transport>
<version>5.0</version>
<interface>
<name>IEffectsFactory</name>
<instance>default</instance>
</interface>
<fqname>@5.0::IEffectsFactory/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.bluetooth.audio</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>IBluetoothAudioProvidersFactory</name>
<instance>default</instance>
</interface>
<fqname>@2.0::IBluetoothAudioProvidersFactory/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.boot</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IBootControl</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IBootControl/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.camera.provider</name>
<transport>hwbinder</transport>
<version>2.4</version>
<interface>
<name>ICameraProvider</name>
<instance>legacy/0</instance>
</interface>
<fqname>@2.4::ICameraProvider/legacy/0</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.configstore</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>ISurfaceFlingerConfigs</name>
<instance>default</instance>
</interface>
<fqname>@1.1::ISurfaceFlingerConfigs/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.drm</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ICryptoFactory</name>
<instance>default</instance>
</interface>
<interface>
<name>IDrmFactory</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ICryptoFactory/default</fqname>
<fqname>@1.0::IDrmFactory/default</fqname>
<fqname>@1.2::ICryptoFactory/clearkey</fqname>
<fqname>@1.2::ICryptoFactory/widevine</fqname>
<fqname>@1.2::IDrmFactory/clearkey</fqname>
<fqname>@1.2::IDrmFactory/widevine</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">
<name>android.hardware.health</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>IHealth</name>
<instance>default</instance>
</interface>
<fqname>@2.0::IHealth/default</fqname>
</hal>
<hal format="hidl">
<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.light</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>ILight</name>
<instance>default</instance>
</interface>
<fqname>@2.0::ILight/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">
<name>android.hardware.neuralnetworks</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>IDevice</name>
<instance>qti-default</instance>
<instance>qti-dsp</instance>
<instance>qti-gpu</instance>
</interface>
<fqname>@1.2::IDevice/qti-default</fqname>
<fqname>@1.2::IDevice/qti-dsp</fqname>
<fqname>@1.2::IDevice/qti-gpu</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.nfc</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>INfc</name>
<instance>default</instance>
</interface>
<fqname>@1.2::INfc/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.power</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>IPower</name>
<instance>default</instance>
</interface>
<fqname>@1.2::IPower/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.radio</name>
<transport>hwbinder</transport>
<fqname>@1.2::ISap/slot1</fqname>
<fqname>@1.2::ISap/slot2</fqname>
<fqname>@1.4::IRadio/slot1</fqname>
<fqname>@1.4::IRadio/slot2</fqname>
</hal>
<hal format="hidl">
<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">
<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.secure_element</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ISecureElement</name>
<instance>SIM1</instance>
<instance>SIM2</instance>
</interface>
<fqname>@1.0::ISecureElement/SIM1</fqname>
<fqname>@1.0::ISecureElement/SIM2</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.sensors</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ISensors</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ISensors/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">
<name>android.hardware.thermal</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IThermal</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IThermal/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.vibrator</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IVibrator</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IVibrator/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.wifi</name>
<transport>hwbinder</transport>
<version>1.3</version>
<interface>
<name>IWifi</name>
<instance>default</instance>
</interface>
<fqname>@1.3::IWifi/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.wifi.hostapd</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IHostapd</name>
<instance>default</instance>
</interface>
<fqname>@1.1::IHostapd/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.wifi.supplicant</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>ISupplicant</name>
<instance>default</instance>
</interface>
<fqname>@1.2::ISupplicant/default</fqname>
</hal>
<hal format="hidl">
<name>com.motorola.hardware.biometric.fingerprint</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IMotoFingerPrint</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IMotoFingerPrint/default</fqname>
</hal>
<hal format="hidl">
<name>com.motorola.hardware.display.panel</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IDisplayPanel</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IDisplayPanel/default</fqname>
</hal>
<hal format="hidl">
<name>com.qualcomm.qti.dpm.api</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IdpmQmi</name>
<instance>dpmQmiService</instance>
</interface>
<fqname>@1.0::IdpmQmi/dpmQmiService</fqname>
</hal>
<hal format="hidl">
<name>com.qualcomm.qti.imscmservice</name>
<transport>hwbinder</transport>
<version>2.2</version>
<interface>
<name>IImsCmService</name>
<instance>qti.ims.connectionmanagerservice</instance>
</interface>
<fqname>@2.2::IImsCmService/qti.ims.connectionmanagerservice</fqname>
</hal>
<hal format="hidl">
<name>com.qualcomm.qti.uceservice</name>
<transport>hwbinder</transport>
<version>2.1</version>
<interface>
<name>IUceService</name>
<instance>com.qualcomm.qti.uceservice</instance>
</interface>
<fqname>@2.1::IUceService/com.qualcomm.qti.uceservice</fqname>
</hal>
<hal format="hidl">
<name>motorola.hardware.camera.imgtuner</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IImageTuning</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IImageTuning/default</fqname>
</hal>
<hal format="hidl">
<name>motorola.hardware.health</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>IMotHealth</name>
<instance>default</instance>
</interface>
<fqname>@2.0::IMotHealth/default</fqname>
</hal>
<hal format="hidl">
<name>motorola.hardware.vibrator</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IMotVibrator</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IMotVibrator/default</fqname>
</hal>
<hal format="hidl">
<name>motorola.hardware.wifi.supplicant</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ISupplicantMot</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ISupplicantMot/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.data.factory</name>
<transport>hwbinder</transport>
<version>2.1</version>
<interface>
<name>IFactory</name>
<instance>default</instance>
</interface>
<fqname>@2.1::IFactory/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.alarm</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IAlarm</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IAlarm/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.bluetooth_audio</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>IBluetoothAudioProvidersFactory</name>
<instance>default</instance>
</interface>
<fqname>@2.0::IBluetoothAudioProvidersFactory/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.bluetooth_sar</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IBluetoothSar</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IBluetoothSar/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.btconfigstore</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IBTConfigStore</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IBTConfigStore/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.camera.postproc</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IPostProcService</name>
<instance>camerapostprocservice</instance>
</interface>
<fqname>@1.0::IPostProcService/camerapostprocservice</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.data.connection</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IDataConnection</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
<fqname>@1.1::IDataConnection/slot1</fqname>
<fqname>@1.1::IDataConnection/slot2</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.data.latency</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ILinkLatency</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ILinkLatency/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.factory</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IFactory</name>
<instance>default</instance>
</interface>
<fqname>@1.1::IFactory/default</fqname>
</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.1</version>
<interface>
<name>IPerf</name>
<instance>default</instance>
</interface>
<fqname>@2.1::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">
<name>vendor.qti.hardware.qteeconnector</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IAppConnector</name>
<instance>default</instance>
</interface>
<interface>
<name>IGPAppConnector</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IAppConnector/default</fqname>
<fqname>@1.0::IGPAppConnector/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.radio.am</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IQcRilAudio</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
<fqname>@1.0::IQcRilAudio/slot1</fqname>
<fqname>@1.0::IQcRilAudio/slot2</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.radio.ims</name>
<transport>hwbinder</transport>
<version>1.6</version>
<interface>
<name>IImsRadio</name>
<instance>imsradio0</instance>
<instance>imsradio1</instance>
</interface>
<fqname>@1.6::IImsRadio/imsradio0</fqname>
<fqname>@1.6::IImsRadio/imsradio1</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.radio.lpa</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IUimLpa</name>
<instance>UimLpa0</instance>
<instance>UimLpa1</instance>
</interface>
<fqname>@1.0::IUimLpa/UimLpa0</fqname>
<fqname>@1.0::IUimLpa/UimLpa1</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.radio.qcrilhook</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IQtiOemHook</name>
<instance>oemhook0</instance>
<instance>oemhook1</instance>
</interface>
<fqname>@1.0::IQtiOemHook/oemhook0</fqname>
<fqname>@1.0::IQtiOemHook/oemhook1</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.radio.qtiradio</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IQtiRadio</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
<fqname>@1.0::IQtiRadio/slot1</fqname>
<fqname>@1.0::IQtiRadio/slot2</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.radio.qtiradio</name>
<transport>hwbinder</transport>
<version>2.4</version>
<interface>
<name>IQtiRadio</name>
<instance>slot1</instance>
<instance>slot2</instance>
</interface>
<fqname>@2.4::IQtiRadio/slot1</fqname>
<fqname>@2.4::IQtiRadio/slot2</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.radio.uim</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>IUim</name>
<instance>Uim0</instance>
<instance>Uim1</instance>
</interface>
<fqname>@1.2::IUim/Uim0</fqname>
<fqname>@1.2::IUim/Uim1</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.radio.uim_remote_client</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IUimRemoteServiceClient</name>
<instance>uimRemoteClient0</instance>
<instance>uimRemoteClient1</instance>
</interface>
<fqname>@1.0::IUimRemoteServiceClient/uimRemoteClient0</fqname>
<fqname>@1.0::IUimRemoteServiceClient/uimRemoteClient1</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.radio.uim_remote_server</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IUimRemoteServiceServer</name>
<instance>uimRemoteServer0</instance>
<instance>uimRemoteServer1</instance>
</interface>
<fqname>@1.0::IUimRemoteServiceServer/uimRemoteServer0</fqname>
<fqname>@1.0::IUimRemoteServiceServer/uimRemoteServer1</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.sensorscalibrate</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ISensorsCalibrate</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ISensorsCalibrate/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.servicetracker</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IServicetracker</name>
<instance>default</instance>
</interface>
<fqname>@1.1::IServicetracker/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.soter</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ISoter</name>
<instance>default</instance>
</interface>
<fqname>@1.0::ISoter/default</fqname>
</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.hostapd</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>IHostapdVendor</name>
<instance>default</instance>
</interface>
<fqname>@1.1::IHostapdVendor/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.qti.hardware.wifi.supplicant</name>
<transport>hwbinder</transport>
<version>2.0</version>
<interface>
<name>ISupplicantVendor</name>
<instance>default</instance>
</interface>
<fqname>@2.0::ISupplicantVendor/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">
<name>vendor.qti.ims.callinfo</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.imsrtpservice</name>
<transport>hwbinder</transport>
<version>2.1</version>
<interface>
<name>IRTPService</name>
<instance>imsrtpservice</instance>
</interface>
<fqname>@2.1::IRTPService/imsrtpservice</fqname>
</hal>
<hal format="hidl" override="true">
<name>vendor.qti.power.pasrmanager</name>
<transport>hwbinder</transport>
</hal>
<sepolicy>
<version>29.0</version>
</sepolicy>
</manifest>

345
media/media_codecs.xml Normal file
View file

@ -0,0 +1,345 @@
<?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.
-->
<!--
Non-Secure decoder capabilities
(MB is defined as 16x16)
_______________________________________________________
| Codec | W H fps Mbps MB/s |
|_____________|_________________________________________|
| h264 | 1920 1088 60 60 489600 |
| hevc | 1920 1080 60 60 489600 |
| vp9 | 1920 1088 60 60 489600 |
| mpeg4-sw | 1920 1088 30 40 244800 |
| h263-sw | 864 480 30 16 48600 |
|_____________|_________________________________________|
Secure decoder capabilities
(MB is defined as 16x16)
_____________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 1920 1088 60 35 489600 |
| vp9 | 1920 1088 60 35 489600 |
| hevc | 1920 1088 60 35 489600 |
|__________|_________________________________________|
Non-Secure encoder capabilities (Secure not supported)
(MB is defined as 16x16)
______________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 1920 1088 60 60 489600 |
| hevc | 1920 1088 60 60 489600 |
| mpeg4-sw | 864 480 30 8 48600 |
| h263-sw | 864 480 30 2 48600 |
|__________|_________________________________________|
-->
<MediaCodecs>
<Include href="media_codecs_google_audio.xml" />
<Include href="media_codecs_google_telephony.xml" />
<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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="489600" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="489600" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Feature name="bitrate-modes" value="VBR,CBR" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc.cq" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<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" />
<Feature name="bitrate-modes" value="CQ" />
<Limit name="performance-point-512x512" value="2025" />
</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-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="3" />
<Limit name="performance-point-720x480" value="30" />
</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="3" />
<Limit name="performance-point-720x480" value="30" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="489600" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="489600" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<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.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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="489600" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="6" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="489600" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<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.hevc" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="489600" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="36" max="489600" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-1920x1080" 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="4" />
<Limit name="performance-point-720x480" value="30" />
</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="4" />
<Limit name="performance-point-1920x1080" value="30" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.decoder" type="video/hevc" update="true">
<!-- profiles and levels: ProfileMain : MainTierLevel51 -->
<Limit name="size" min="2x2" max="1280x720" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="8x8" />
<Limit name="block-count" range="1-3600" />
<Limit name="blocks-per-second" range="1-108000" />
<Limit name="bitrate" range="1-2000000" />
</MediaCodec>
<MediaCodec name="c2.android.avc.decoder" type="video/avc" update="true">
<!-- profiles and levels: ProfileHigh : Level51 -->
<Limit name="size" min="2x2" max="1280x720" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-3600" />
<Limit name="blocks-per-second" range="1-108000" />
<Limit name="bitrate" range="1-20000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
</Decoders>
<Include href="media_codecs_google_video.xml" />
</MediaCodecs>

View file

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
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.
-->
<Included>
<Decoders>
<MediaCodec name="OMX.google.mp3.decoder" type="audio/mpeg">
<Limit name="channel-count" max="2" />
<Limit name="sample-rate" ranges="8000,11025,12000,16000,22050,24000,32000,44100,48000" />
<Limit name="bitrate" range="8000-320000" />
</MediaCodec>
<MediaCodec name="OMX.google.amrnb.decoder" type="audio/3gpp">
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="8000" />
<Limit name="bitrate" range="4750-12200" />
</MediaCodec>
<MediaCodec name="OMX.google.amrwb.decoder" type="audio/amr-wb">
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="16000" />
<Limit name="bitrate" range="6600-23850" />
</MediaCodec>
<MediaCodec name="OMX.google.aac.decoder" type="audio/mp4a-latm">
<Limit name="channel-count" max="8" />
<Limit name="sample-rate" ranges="7350,8000,11025,12000,16000,22050,24000,32000,44100,48000" />
<Limit name="bitrate" range="8000-960000" />
</MediaCodec>
<MediaCodec name="OMX.google.g711.alaw.decoder" type="audio/g711-alaw">
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="8000-48000" />
<Limit name="bitrate" range="64000" />
</MediaCodec>
<MediaCodec name="OMX.google.g711.mlaw.decoder" type="audio/g711-mlaw">
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="8000-48000" />
<Limit name="bitrate" range="64000" />
</MediaCodec>
<MediaCodec name="OMX.google.vorbis.decoder" type="audio/vorbis">
<Limit name="channel-count" max="8" />
<Limit name="sample-rate" ranges="8000-96000" />
<Limit name="bitrate" range="32000-500000" />
</MediaCodec>
<MediaCodec name="OMX.google.opus.decoder" type="audio/opus">
<Limit name="channel-count" max="8" />
<Limit name="sample-rate" ranges="48000" />
<Limit name="bitrate" range="6000-510000" />
</MediaCodec>
<MediaCodec name="OMX.google.raw.decoder" type="audio/raw">
<Limit name="channel-count" max="8" />
<Limit name="sample-rate" ranges="8000-192000" />
<Limit name="bitrate" range="1-10000000" />
</MediaCodec>
<MediaCodec name="OMX.google.flac.decoder" type="audio/flac">
<Limit name="channel-count" max="8" />
<Limit name="sample-rate" ranges="1-655350" />
<Limit name="bitrate" range="1-21000000" />
</MediaCodec>
</Decoders>
<Encoders>
<MediaCodec name="OMX.google.aac.encoder" type="audio/mp4a-latm">
<Limit name="channel-count" max="6" />
<Limit name="sample-rate" ranges="8000,11025,12000,16000,22050,24000,32000,44100,48000" />
<!-- also may support 64000, 88200 and 96000 Hz -->
<Limit name="bitrate" range="8000-960000" />
</MediaCodec>
<MediaCodec name="OMX.google.amrnb.encoder" type="audio/3gpp">
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="8000" />
<Limit name="bitrate" range="4750-12200" />
<Feature name="bitrate-modes" value="CBR" />
</MediaCodec>
<MediaCodec name="OMX.google.amrwb.encoder" type="audio/amr-wb">
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="16000" />
<Limit name="bitrate" range="6600-23850" />
<Feature name="bitrate-modes" value="CBR" />
</MediaCodec>
<MediaCodec name="OMX.google.flac.encoder" type="audio/flac">
<Limit name="channel-count" max="2" />
<Limit name="sample-rate" ranges="1-655350" />
<Limit name="bitrate" range="1-21000000" />
<Limit name="complexity" range="0-8" default="5" />
<Feature name="bitrate-modes" value="CQ" />
</MediaCodec>
</Encoders>
</Included>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2018 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.
-->
<MediaCodecs>
<Include href="media_codecs_google_c2_audio.xml" />
<Include href="media_codecs_google_c2_video.xml" />
</MediaCodecs>

View file

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
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.
-->
<Included>
<Decoders>
<MediaCodec name="c2.android.mp3.decoder" type="audio/mpeg">
<Alias name="OMX.google.mp3.decoder" />
<Limit name="channel-count" max="2" />
<Limit name="sample-rate" ranges="8000,11025,12000,16000,22050,24000,32000,44100,48000" />
<Limit name="bitrate" range="8000-320000" />
</MediaCodec>
<MediaCodec name="c2.android.amrnb.decoder" type="audio/3gpp">
<Alias name="OMX.google.amrnb.decoder" />
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="8000" />
<Limit name="bitrate" range="4750-12200" />
</MediaCodec>
<MediaCodec name="c2.android.amrwb.decoder" type="audio/amr-wb">
<Alias name="OMX.google.amrwb.decoder" />
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="16000" />
<Limit name="bitrate" range="6600-23850" />
</MediaCodec>
<MediaCodec name="c2.android.aac.decoder" type="audio/mp4a-latm">
<Alias name="OMX.google.aac.decoder" />
<Limit name="channel-count" max="8" />
<Limit name="sample-rate" ranges="7350,8000,11025,12000,16000,22050,24000,32000,44100,48000" />
<Limit name="bitrate" range="8000-960000" />
</MediaCodec>
<MediaCodec name="c2.android.g711.alaw.decoder" type="audio/g711-alaw">
<Alias name="OMX.google.g711.alaw.decoder" />
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="8000-48000" />
<Limit name="bitrate" range="64000" />
</MediaCodec>
<MediaCodec name="c2.android.g711.mlaw.decoder" type="audio/g711-mlaw">
<Alias name="OMX.google.g711.mlaw.decoder" />
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="8000-48000" />
<Limit name="bitrate" range="64000" />
</MediaCodec>
<MediaCodec name="c2.android.vorbis.decoder" type="audio/vorbis">
<Alias name="OMX.google.vorbis.decoder" />
<Limit name="channel-count" max="8" />
<Limit name="sample-rate" ranges="8000-96000" />
<Limit name="bitrate" range="32000-500000" />
</MediaCodec>
<MediaCodec name="c2.android.opus.decoder" type="audio/opus">
<Alias name="OMX.google.opus.decoder" />
<Limit name="channel-count" max="8" />
<Limit name="sample-rate" ranges="48000" />
<Limit name="bitrate" range="6000-510000" />
</MediaCodec>
<MediaCodec name="c2.android.raw.decoder" type="audio/raw">
<Alias name="OMX.google.raw.decoder" />
<Limit name="channel-count" max="8" />
<Limit name="sample-rate" ranges="8000-192000" />
<Limit name="bitrate" range="1-10000000" />
</MediaCodec>
<MediaCodec name="c2.android.flac.decoder" type="audio/flac">
<Alias name="OMX.google.flac.decoder" />
<Limit name="channel-count" max="8" />
<Limit name="sample-rate" ranges="1-655350" />
<Limit name="bitrate" range="1-21000000" />
</MediaCodec>
</Decoders>
<Encoders>
<MediaCodec name="c2.android.aac.encoder" type="audio/mp4a-latm">
<Alias name="OMX.google.aac.encoder" />
<Limit name="channel-count" max="6" />
<Limit name="sample-rate" ranges="8000,11025,12000,16000,22050,24000,32000,44100,48000" />
<!-- also may support 64000, 88200 and 96000 Hz -->
<Limit name="bitrate" range="8000-960000" />
</MediaCodec>
<MediaCodec name="c2.android.amrnb.encoder" type="audio/3gpp">
<Alias name="OMX.google.amrnb.encoder" />
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="8000" />
<Limit name="bitrate" range="4750-12200" />
<Feature name="bitrate-modes" value="CBR" />
</MediaCodec>
<MediaCodec name="c2.android.amrwb.encoder" type="audio/amr-wb">
<Alias name="OMX.google.amrwb.encoder" />
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="16000" />
<Limit name="bitrate" range="6600-23850" />
<Feature name="bitrate-modes" value="CBR" />
</MediaCodec>
<MediaCodec name="c2.android.flac.encoder" type="audio/flac">
<Alias name="OMX.google.flac.encoder" />
<Limit name="channel-count" max="2" />
<Limit name="sample-rate" ranges="1-655350" />
<Limit name="bitrate" range="1-21000000" />
<Limit name="complexity" range="0-8" default="5" />
<Feature name="bitrate-modes" value="CQ" />
</MediaCodec>
<MediaCodec name="c2.android.opus.encoder" type="audio/opus">
<Limit name="channel-count" max="2" />
<Limit name="sample-rate" ranges="8000,12000,16000,24000,48000" />
<Limit name="bitrate" range="500-512000" />
<Limit name="complexity" range="0-10" default="5" />
<Feature name="bitrate-modes" value="CBR" />
</MediaCodec>
</Encoders>
</Included>

View file

@ -0,0 +1,155 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
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.
-->
<Included>
<Decoders>
<MediaCodec name="c2.android.mpeg4.decoder" type="video/mp4v-es">
<Alias name="OMX.google.mpeg4.decoder" />
<!-- profiles and levels: ProfileSimple : Level3 -->
<Limit name="size" min="2x2" max="352x288" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" range="12-11880" />
<Limit name="bitrate" range="1-384000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="c2.android.h263.decoder" type="video/3gpp">
<Alias name="OMX.google.h263.decoder" />
<!-- profiles and levels: ProfileBaseline : Level30, ProfileBaseline : Level45
ProfileISWV2 : Level30, ProfileISWV2 : Level45 -->
<Limit name="size" min="2x2" max="352x288" />
<Limit name="alignment" value="2x2" />
<Limit name="bitrate" range="1-384000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="c2.android.avc.decoder" type="video/avc">
<Alias name="OMX.google.h264.decoder" />
<!-- profiles and levels: ProfileHigh : Level52 -->
<Limit name="size" min="2x2" max="4080x4080" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-32768" /> <!-- max 4096x2048 equivalent -->
<Limit name="blocks-per-second" range="1-1966080" />
<Limit name="bitrate" range="1-48000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.decoder" type="video/hevc">
<Alias name="OMX.google.hevc.decoder" />
<!-- profiles and levels: ProfileMain : MainTierLevel51 -->
<Limit name="size" min="2x2" max="4096x4096" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="8x8" />
<Limit name="block-count" range="1-196608" /> <!-- max 4096x3072 -->
<Limit name="blocks-per-second" range="1-2000000" />
<Limit name="bitrate" range="1-10000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="c2.android.vp8.decoder" type="video/x-vnd.on2.vp8">
<Alias name="OMX.google.vp8.decoder" />
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-16384" />
<Limit name="blocks-per-second" range="1-1000000" />
<Limit name="bitrate" range="1-40000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="c2.android.vp9.decoder" type="video/x-vnd.on2.vp9">
<Alias name="OMX.google.vp9.decoder" />
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-16384" />
<Limit name="blocks-per-second" range="1-500000" />
<Limit name="bitrate" range="1-40000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="c2.android.av1.decoder" type="video/av01">
<Limit name="size" min="96x96" max="1920x1080" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="24" max="2073600" />
<Limit name="bitrate" range="1-120000000" />
<Limit name="frame-rate" range="1-60" />
<Feature name="adaptive-playback" />
</MediaCodec>
</Decoders>
<Encoders>
<MediaCodec name="c2.android.h263.encoder" type="video/3gpp">
<Alias name="OMX.google.h263.encoder" />
<!-- profiles and levels: ProfileBaseline : Level45 -->
<Limit name="size" min="176x144" max="176x144" />
<Limit name="alignment" value="16x16" />
<Limit name="bitrate" range="1-128000" />
</MediaCodec>
<MediaCodec name="c2.android.avc.encoder" type="video/avc">
<Alias name="OMX.google.h264.encoder" />
<!-- profiles and levels: ProfileBaseline : Level41 -->
<Limit name="size" min="16x16" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-8192" /> <!-- max 2048x1024 -->
<Limit name="blocks-per-second" range="1-245760" />
<Limit name="bitrate" range="1-12000000" />
<Feature name="intra-refresh" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.encoder" type="video/hevc">
<!-- profiles and levels: ProfileMain : MainTierLevel51 -->
<Limit name="size" min="2x2" max="512x512" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="8x8" />
<Limit name="block-count" range="1-4096" /> <!-- max 512x512 -->
<Limit name="blocks-per-second" range="1-122880" />
<Limit name="frame-rate" range="1-120" />
<Limit name="bitrate" range="1-10000000" />
<Limit name="complexity" range="0-10" default="0" />
<Limit name="quality" range="0-100" default="80" />
<Feature name="bitrate-modes" value="VBR,CBR,CQ" />
</MediaCodec>
<MediaCodec name="c2.android.mpeg4.encoder" type="video/mp4v-es">
<Alias name="OMX.google.mpeg4.encoder" />
<!-- profiles and levels: ProfileCore : Level2 -->
<Limit name="size" min="16x16" max="176x144" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" range="12-1485" />
<Limit name="bitrate" range="1-64000" />
</MediaCodec>
<MediaCodec name="c2.android.vp8.encoder" type="video/x-vnd.on2.vp8">
<Alias name="OMX.google.vp8.encoder" />
<!-- profiles and levels: ProfileMain : Level_Version0-3 -->
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<!-- 2016 devices can encode at about 10fps at this block count -->
<Limit name="block-count" range="1-16384" />
<Limit name="bitrate" range="1-40000000" />
<Feature name="bitrate-modes" value="VBR,CBR" />
</MediaCodec>
<MediaCodec name="c2.android.vp9.encoder" type="video/x-vnd.on2.vp9">
<Alias name="OMX.google.vp9.encoder" />
<!-- profiles and levels: ProfileMain : Level_Version0-3 -->
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<!-- 2016 devices can encode at about 8fps at this block count -->
<Limit name="block-count" range="1-3600" /> <!-- max 1280x720 -->
<Limit name="bitrate" range="1-40000000" />
<Feature name="bitrate-modes" value="VBR,CBR" />
</MediaCodec>
</Encoders>
</Included>

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
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.
-->
<Included>
<Decoders>
<MediaCodec name="OMX.google.gsm.decoder" type="audio/gsm">
<Limit name="channel-count" max="1" />
<Limit name="sample-rate" ranges="8000" />
<Limit name="bitrate" range="13000" />
</MediaCodec>
</Decoders>
</Included>

View file

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
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.
-->
<Included>
<Decoders>
<MediaCodec name="OMX.google.mpeg4.decoder" type="video/mp4v-es">
<!-- profiles and levels: ProfileSimple : Level3 -->
<Limit name="size" min="2x2" max="352x288" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" range="12-11880" />
<Limit name="bitrate" range="1-384000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.decoder" type="video/3gpp">
<!-- profiles and levels: ProfileBaseline : Level30, ProfileBaseline : Level45
ProfileISWV2 : Level30, ProfileISWV2 : Level45 -->
<Limit name="size" min="2x2" max="352x288" />
<Limit name="alignment" value="2x2" />
<Limit name="bitrate" range="1-384000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.decoder" type="video/avc">
<!-- profiles and levels: ProfileHigh : Level52 -->
<Limit name="size" min="2x2" max="4080x4080" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-32768" /> <!-- max 4096x2048 equivalent -->
<Limit name="blocks-per-second" range="1-1966080" />
<Limit name="bitrate" range="1-48000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.google.hevc.decoder" type="video/hevc">
<!-- profiles and levels: ProfileMain : MainTierLevel51 -->
<Limit name="size" min="2x2" max="4096x4096" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="8x8" />
<Limit name="block-count" range="1-196608" /> <!-- max 4096x3072 -->
<Limit name="blocks-per-second" range="1-2000000" />
<Limit name="bitrate" range="1-10000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.google.vp8.decoder" type="video/x-vnd.on2.vp8">
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-16384" />
<Limit name="blocks-per-second" range="1-1000000" />
<Limit name="bitrate" range="1-40000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.google.vp9.decoder" type="video/x-vnd.on2.vp9">
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-16384" />
<Limit name="blocks-per-second" range="1-500000" />
<Limit name="bitrate" range="1-40000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
</Decoders>
<Encoders>
<MediaCodec name="OMX.google.h263.encoder" type="video/3gpp">
<!-- profiles and levels: ProfileBaseline : Level45 -->
<Limit name="size" min="176x144" max="176x144" />
<Limit name="alignment" value="16x16" />
<Limit name="bitrate" range="1-128000" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.encoder" type="video/avc">
<!-- profiles and levels: ProfileBaseline : Level41 -->
<Limit name="size" min="16x16" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-8192" /> <!-- max 2048x1024 -->
<Limit name="blocks-per-second" range="1-245760" />
<Limit name="bitrate" range="1-12000000" />
<Feature name="intra-refresh" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es">
<!-- profiles and levels: ProfileCore : Level2 -->
<Limit name="size" min="16x16" max="176x144" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" range="12-1485" />
<Limit name="bitrate" range="1-64000" />
</MediaCodec>
<MediaCodec name="OMX.google.vp8.encoder" type="video/x-vnd.on2.vp8">
<!-- profiles and levels: ProfileMain : Level_Version0-3 -->
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<!-- 2016 devices can encode at about 10fps at this block count -->
<Limit name="block-count" range="1-16384" />
<Limit name="bitrate" range="1-40000000" />
<Feature name="bitrate-modes" value="VBR,CBR" />
</MediaCodec>
<MediaCodec name="OMX.google.vp9.encoder" type="video/x-vnd.on2.vp9">
<!-- profiles and levels: ProfileMain : Level_Version0-3 -->
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<!-- 2016 devices can encode at about 8fps at this block count -->
<Limit name="block-count" range="1-3600" /> <!-- max 1280x720 -->
<Limit name="bitrate" range="1-40000000" />
<Feature name="bitrate-modes" value="VBR,CBR" />
</MediaCodec>
</Encoders>
</Included>

View file

@ -0,0 +1,111 @@
<?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.
-->
<Included>
<Decoders>
<MediaCodec name="OMX.google.mpeg4.decoder" type="video/mp4v-es">
<!-- profiles and levels: ProfileSimple : Level3 -->
<Limit name="size" min="2x2" max="352x288" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" range="12-11880" />
<Limit name="bitrate" range="1-384000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.decoder" type="video/3gpp">
<!-- profiles and levels: ProfileBaseline : Level30, ProfileBaseline : Level45
ProfileISWV2 : Level30, ProfileISWV2 : Level45 -->
<Limit name="size" min="2x2" max="352x288" />
<Limit name="alignment" value="2x2" />
<Limit name="bitrate" range="1-384000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.decoder" type="video/avc">
<!-- profiles and levels: ProfileHigh : Level51 -->
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-16384" />
<Limit name="blocks-per-second" range="1-491520" />
<Limit name="bitrate" range="1-40000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.google.hevc.decoder" type="video/hevc">
<!-- profiles and levels: ProfileMain : MainTierLevel51 -->
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="8x8" />
<Limit name="block-count" range="1-65536" />
<Limit name="blocks-per-second" range="1-491520" />
<Limit name="bitrate" range="1-5000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.google.vp8.decoder" type="video/x-vnd.on2.vp8">
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-8192" /> <!-- max 2048x1024 -->
<Limit name="blocks-per-second" range="1-500000" />
<Limit name="bitrate" range="1-40000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.google.vp9.decoder" type="video/x-vnd.on2.vp9">
<Limit name="size" min="2x2" max="1280x1280" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-3600" /> <!-- max 1280x720 -->
<Limit name="blocks-per-second" range="1-108000" />
<Limit name="bitrate" range="1-5000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
</Decoders>
<Encoders>
<MediaCodec name="OMX.google.h263.encoder" type="video/3gpp">
<!-- profiles and levels: ProfileBaseline : Level45 -->
<Limit name="size" min="176x144" max="176x144" />
<Limit name="alignment" value="16x16" />
<Limit name="bitrate" range="1-128000" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.encoder" type="video/avc">
<!-- profiles and levels: ProfileBaseline : Level3 -->
<Limit name="size" min="16x16" max="1808x1808" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-1620" />
<Limit name="blocks-per-second" range="1-40500" />
<Limit name="bitrate" range="1-2000000" />
<Feature name="intra-refresh" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es">
<!-- profiles and levels: ProfileCore : Level2 -->
<Limit name="size" min="16x16" max="176x144" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" range="12-1485" />
<Limit name="bitrate" range="1-64000" />
</MediaCodec>
<MediaCodec name="OMX.google.vp8.encoder" type="video/x-vnd.on2.vp8">
<!-- profiles and levels: ProfileMain : Level_Version0-3 -->
<Limit name="size" min="2x2" max="1280x1280" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-3600" /> <!-- max 1280x720 -->
<Limit name="bitrate" range="1-20000000" />
<Feature name="bitrate-modes" value="VBR,CBR" />
</MediaCodec>
</Encoders>
</Included>

View file

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (c) 2015-2017, 2019-2020 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">
<Limit name="measured-frame-rate-320x240" range="238-238" />
<Limit name="measured-frame-rate-720x480" range="123-123" />
<Limit name="measured-frame-rate-1280x720" range="50-50" />
<Limit name="measured-frame-rate-1920x1080" range="55-65" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc" type="video/hevc" update="true">
<Limit name="measured-frame-rate-320x240" range="226-226" />
<Limit name="measured-frame-rate-720x480" range="121-121" />
<Limit name="measured-frame-rate-1280x720" range="49-49" />
<Limit name="measured-frame-rate-1920x1080" range="55-65" />
<Limit name="measured-frame-rate-3840x2160" range="20-27" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.h263sw" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="60-90" />
<Limit name="measured-frame-rate-352x288" range="55-85" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.mpeg4sw" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="125-135" />
<Limit name="measured-frame-rate-352x288" range="55-85" />
<Limit name="measured-frame-rate-640x480" range="47-52" />
<Limit name="measured-frame-rate-1280x720" range="30-50" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="215-215" />
<Limit name="measured-frame-rate-720x480" range="100-100" />
<Limit name="measured-frame-rate-1280x720" range="56-56" />
<Limit name="measured-frame-rate-1920x1080" range="30-30" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.encoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="200-200" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="250-320" />
</MediaCodec>
<MediaCodec name="c2.android.avc.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="124-176" />
<Limit name="measured-frame-rate-720x480" range="53-76" />
<Limit name="measured-frame-rate-1280x720" range="35-50" />
<Limit name="measured-frame-rate-1920x1080" range="19-28" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.encoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-320x240" range="17-24" />
<Limit name="measured-frame-rate-720x480" range="7-10" />
<Limit name="measured-frame-rate-1280x720" range="3-6" />
<Limit name="measured-frame-rate-1920x1080" range="2-3" />
<Limit name="measured-frame-rate-3840x2160" range="1-2" />
</MediaCodec>
<MediaCodec name="c2.android.h263.encoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="130-175" />
</MediaCodec>
<MediaCodec name="c2.android.mpeg4.encoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="119-168" />
</MediaCodec>
<MediaCodec name="c2.android.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="85-119" />
<Limit name="measured-frame-rate-640x360" range="41-65" />
<Limit name="measured-frame-rate-1280x720" range="21-30" />
<Limit name="measured-frame-rate-1920x1080" range="10-15" />
</MediaCodec>
</Encoders>
<Decoders>
<MediaCodec name="OMX.qcom.video.decoder.avc" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="480-510" />
<Limit name="measured-frame-rate-720x480" range="460-490" />
<Limit name="measured-frame-rate-1280x720" range="350-400" />
<Limit name="measured-frame-rate-1920x1088" range="180-190" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="510-530" />
<Limit name="measured-frame-rate-720x480" range="465-620" />
<Limit name="measured-frame-rate-1280x720" range="200-390" />
<Limit name="measured-frame-rate-1920x1080" range="210-230" />
<Limit name="measured-frame-rate-3840x2160" range="65-75" />
</MediaCodec>
<MediaCodec name="OMX.qti.video.decoder.h263sw" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="356-356" />
<Limit name="measured-frame-rate-352x288" range="292-292" />
</MediaCodec>
<MediaCodec name="OMX.qti.video.decoder.mpeg4sw" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="418-551" />
<Limit name="measured-frame-rate-480x360" range="245-265" />
<Limit name="measured-frame-rate-1280x720" range="80-200" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.vp9" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x240" range="377-377" />
<Limit name="measured-frame-rate-640x360" range="323-323" />
<Limit name="measured-frame-rate-1280x720" range="262-262" />
<Limit name="measured-frame-rate-1920x1080" range="220-220" />
<Limit name="measured-frame-rate-3840x2160" range="51-51" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.decoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="270-310" />
<Limit name="measured-frame-rate-720x480" range="68-68" />
<Limit name="measured-frame-rate-1280x720" range="32-32" />
<Limit name="measured-frame-rate-1920x1080" range="6-10" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.decoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="104-279" />
<Limit name="measured-frame-rate-352x288" range="200-200" />
</MediaCodec>
<MediaCodec name="OMX.google.hevc.decoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="520-650" />
<Limit name="measured-frame-rate-640x360" range="145-190" />
<Limit name="measured-frame-rate-720x480" range="235-245" />
<Limit name="measured-frame-rate-1280x720" range="88-100" />
<Limit name="measured-frame-rate-1920x1080" range="48-52" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.decoder" update="true">
<Type name="video/mp4v-es">
<Limit name="measured-frame-rate-176x144" range="430-450" />
</Type>
</MediaCodec>
<MediaCodec name="OMX.google.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x180" range="640-720" />
<Limit name="measured-frame-rate-320x240" range="200-230" />
<Limit name="measured-frame-rate-640x360" range="81-90" />
<Limit name="measured-frame-rate-1280x720" range="60-85" />
<Limit name="measured-frame-rate-1920x1080" range="33-55" />
</MediaCodec>
<MediaCodec name="c2.android.avc.decoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="63-165" />
<Limit name="measured-frame-rate-720x480" range="42-59" />
<Limit name="measured-frame-rate-1280x720" range="17-24" />
<Limit name="measured-frame-rate-1920x1080" range="8-12" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.decoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="67-232" />
<Limit name="measured-frame-rate-640x360" range="57-89" />
<Limit name="measured-frame-rate-720x480" range="69-99" />
<Limit name="measured-frame-rate-1280x720" range="35-51" />
<Limit name="measured-frame-rate-1920x1080" range="20-29" />
</MediaCodec>
<MediaCodec name="c2.android.h263.decoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="376-524" />
<Limit name="measured-frame-rate-352x288" range="310-415" />
</MediaCodec>
<MediaCodec name="c2.android.mpeg4.decoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="406-543" />
</MediaCodec>
<MediaCodec name="c2.android.vp8.decoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="160-480" />
<Limit name="measured-frame-rate-640x360" range="133-184" />
<Limit name="measured-frame-rate-1920x1080" range="15-22" />
</MediaCodec>
<MediaCodec name="c2.android.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x180" range="182-360" />
<Limit name="measured-frame-rate-640x360" range="85-200" />
<Limit name="measured-frame-rate-1280x720" range="35-49" />
<Limit name="measured-frame-rate-1920x1080" range="23-33" />
</MediaCodec>
</Decoders>
</MediaCodecs>

View file

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (c) 2015-2017, 2019-2020 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">
<Limit name="measured-frame-rate-320x240" range="238-238" />
<Limit name="measured-frame-rate-720x480" range="123-123" />
<Limit name="measured-frame-rate-1280x720" range="50-50" />
<Limit name="measured-frame-rate-1920x1080" range="55-65" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc" type="video/hevc" update="true">
<Limit name="measured-frame-rate-320x240" range="226-226" />
<Limit name="measured-frame-rate-720x480" range="121-121" />
<Limit name="measured-frame-rate-1280x720" range="49-49" />
<Limit name="measured-frame-rate-1920x1080" range="55-65" />
<Limit name="measured-frame-rate-3840x2160" range="20-27" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.h263sw" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="60-90" />
<Limit name="measured-frame-rate-352x288" range="55-85" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.mpeg4sw" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="125-135" />
<Limit name="measured-frame-rate-352x288" range="55-85" />
<Limit name="measured-frame-rate-640x480" range="47-52" />
<Limit name="measured-frame-rate-1280x720" range="30-50" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="215-215" />
<Limit name="measured-frame-rate-720x480" range="100-100" />
<Limit name="measured-frame-rate-1280x720" range="56-56" />
<Limit name="measured-frame-rate-1920x1080" range="30-30" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.encoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="200-200" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="250-320" />
</MediaCodec>
<MediaCodec name="c2.android.avc.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="124-176" />
<Limit name="measured-frame-rate-720x480" range="53-76" />
<Limit name="measured-frame-rate-1280x720" range="35-50" />
<Limit name="measured-frame-rate-1920x1080" range="19-28" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.encoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-320x240" range="17-24" />
<Limit name="measured-frame-rate-720x480" range="7-10" />
<Limit name="measured-frame-rate-1280x720" range="3-6" />
<Limit name="measured-frame-rate-1920x1080" range="2-3" />
<Limit name="measured-frame-rate-3840x2160" range="1-2" />
</MediaCodec>
<MediaCodec name="c2.android.h263.encoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="130-175" />
</MediaCodec>
<MediaCodec name="c2.android.mpeg4.encoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="119-168" />
</MediaCodec>
<MediaCodec name="c2.android.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="85-119" />
<Limit name="measured-frame-rate-640x360" range="41-65" />
<Limit name="measured-frame-rate-1280x720" range="21-30" />
<Limit name="measured-frame-rate-1920x1080" range="10-15" />
</MediaCodec>
</Encoders>
<Decoders>
<MediaCodec name="OMX.qcom.video.decoder.avc" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="480-510" />
<Limit name="measured-frame-rate-720x480" range="460-490" />
<Limit name="measured-frame-rate-1280x720" range="350-400" />
<Limit name="measured-frame-rate-1920x1088" range="180-190" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="510-530" />
<Limit name="measured-frame-rate-720x480" range="465-620" />
<Limit name="measured-frame-rate-1280x720" range="200-390" />
<Limit name="measured-frame-rate-1920x1080" range="210-230" />
<Limit name="measured-frame-rate-3840x2160" range="65-75" />
</MediaCodec>
<MediaCodec name="OMX.qti.video.decoder.h263sw" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="356-356" />
<Limit name="measured-frame-rate-352x288" range="292-292" />
</MediaCodec>
<MediaCodec name="OMX.qti.video.decoder.mpeg4sw" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="418-551" />
<Limit name="measured-frame-rate-480x360" range="245-265" />
<Limit name="measured-frame-rate-1280x720" range="80-200" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.vp9" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x240" range="377-377" />
<Limit name="measured-frame-rate-640x360" range="323-323" />
<Limit name="measured-frame-rate-1280x720" range="262-262" />
<Limit name="measured-frame-rate-1920x1080" range="220-220" />
<Limit name="measured-frame-rate-3840x2160" range="51-51" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.decoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="270-310" />
<Limit name="measured-frame-rate-720x480" range="68-68" />
<Limit name="measured-frame-rate-1280x720" range="32-32" />
<Limit name="measured-frame-rate-1920x1080" range="6-10" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.decoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="104-279" />
<Limit name="measured-frame-rate-352x288" range="200-200" />
</MediaCodec>
<MediaCodec name="OMX.google.hevc.decoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="520-650" />
<Limit name="measured-frame-rate-640x360" range="145-190" />
<Limit name="measured-frame-rate-720x480" range="235-245" />
<Limit name="measured-frame-rate-1280x720" range="88-100" />
<Limit name="measured-frame-rate-1920x1080" range="48-52" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.decoder" update="true">
<Type name="video/mp4v-es">
<Limit name="measured-frame-rate-176x144" range="430-450" />
</Type>
</MediaCodec>
<MediaCodec name="OMX.google.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x180" range="640-720" />
<Limit name="measured-frame-rate-320x240" range="200-230" />
<Limit name="measured-frame-rate-640x360" range="81-90" />
<Limit name="measured-frame-rate-1280x720" range="60-85" />
<Limit name="measured-frame-rate-1920x1080" range="33-55" />
</MediaCodec>
<MediaCodec name="c2.android.avc.decoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="63-165" />
<Limit name="measured-frame-rate-720x480" range="42-59" />
<Limit name="measured-frame-rate-1280x720" range="17-24" />
<Limit name="measured-frame-rate-1920x1080" range="8-12" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.decoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="67-232" />
<Limit name="measured-frame-rate-640x360" range="57-89" />
<Limit name="measured-frame-rate-720x480" range="69-99" />
<Limit name="measured-frame-rate-1280x720" range="35-51" />
<Limit name="measured-frame-rate-1920x1080" range="20-29" />
</MediaCodec>
<MediaCodec name="c2.android.h263.decoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="376-524" />
<Limit name="measured-frame-rate-352x288" range="310-415" />
</MediaCodec>
<MediaCodec name="c2.android.mpeg4.decoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="406-543" />
</MediaCodec>
<MediaCodec name="c2.android.vp8.decoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="160-480" />
<Limit name="measured-frame-rate-640x360" range="133-184" />
<Limit name="measured-frame-rate-1920x1080" range="15-22" />
</MediaCodec>
<MediaCodec name="c2.android.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x180" range="182-360" />
<Limit name="measured-frame-rate-640x360" range="85-200" />
<Limit name="measured-frame-rate-1280x720" range="35-49" />
<Limit name="measured-frame-rate-1920x1080" range="23-33" />
</MediaCodec>
</Decoders>
</MediaCodecs>

View file

@ -0,0 +1,173 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (c) 2015-2017, 2019-2020 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">
<Limit name="measured-frame-rate-320x240" range="238-238" />
<Limit name="measured-frame-rate-720x480" range="123-123" />
<Limit name="measured-frame-rate-1280x720" range="50-50" />
<Limit name="measured-frame-rate-1920x1080" range="55-65" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc" type="video/hevc" update="true">
<Limit name="measured-frame-rate-320x240" range="226-226" />
<Limit name="measured-frame-rate-720x480" range="121-121" />
<Limit name="measured-frame-rate-1280x720" range="49-49" />
<Limit name="measured-frame-rate-1920x1080" range="55-65" />
<Limit name="measured-frame-rate-3840x2160" range="20-27" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.h263sw" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="150-240" />
<Limit name="measured-frame-rate-352x288" range="55-85" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.mpeg4sw" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="125-135" />
<Limit name="measured-frame-rate-352x288" range="55-85" />
<Limit name="measured-frame-rate-640x480" range="47-52" />
<Limit name="measured-frame-rate-1280x720" range="30-50" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="215-215" />
<Limit name="measured-frame-rate-720x480" range="100-100" />
<Limit name="measured-frame-rate-1280x720" range="56-56" />
<Limit name="measured-frame-rate-1920x1080" range="30-30" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.encoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="200-200" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="250-320" />
</MediaCodec>
<MediaCodec name="c2.android.avc.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="124-176" />
<Limit name="measured-frame-rate-720x480" range="53-76" />
<Limit name="measured-frame-rate-1280x720" range="35-50" />
<Limit name="measured-frame-rate-1920x1080" range="19-28" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.encoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-320x240" range="17-24" />
</MediaCodec>
<MediaCodec name="c2.android.h263.encoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="320-345" />
</MediaCodec>
<MediaCodec name="c2.android.mpeg4.encoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="300-340" />
</MediaCodec>
<MediaCodec name="c2.android.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="85-119" />
<Limit name="measured-frame-rate-640x360" range="41-65" />
<Limit name="measured-frame-rate-1280x720" range="21-30" />
<Limit name="measured-frame-rate-1920x1080" range="10-15" />
</MediaCodec>
</Encoders>
<Decoders>
<MediaCodec name="OMX.qcom.video.decoder.avc" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="480-510" />
<Limit name="measured-frame-rate-720x480" range="460-490" />
<Limit name="measured-frame-rate-1280x720" range="350-400" />
<Limit name="measured-frame-rate-1920x1088" range="180-190" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="510-530" />
<Limit name="measured-frame-rate-720x480" range="465-620" />
<Limit name="measured-frame-rate-1280x720" range="200-390" />
<Limit name="measured-frame-rate-1920x1080" range="210-230" />
<Limit name="measured-frame-rate-3840x2160" range="65-75" />
</MediaCodec>
<MediaCodec name="OMX.qti.video.decoder.h263sw" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="356-356" />
<Limit name="measured-frame-rate-352x288" range="292-292" />
</MediaCodec>
<MediaCodec name="OMX.qti.video.decoder.mpeg4sw" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="270-295" />
<Limit name="measured-frame-rate-480x360" range="245-265" />
<Limit name="measured-frame-rate-1280x720" range="80-200" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.vp9" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x180" range="820-850"/>
<Limit name="measured-frame-rate-320x240" range="377-377" />
<Limit name="measured-frame-rate-640x360" range="323-323" />
<Limit name="measured-frame-rate-1280x720" range="262-262" />
<Limit name="measured-frame-rate-1920x1080" range="65-72" />
<Limit name="measured-frame-rate-3840x2160" range="51-51" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.decoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="270-310" />
<Limit name="measured-frame-rate-720x480" range="68-68" />
<Limit name="measured-frame-rate-1280x720" range="32-32" />
<Limit name="measured-frame-rate-1920x1080" range="6-10" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.decoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="104-279" />
<Limit name="measured-frame-rate-352x288" range="200-200" />
</MediaCodec>
<MediaCodec name="OMX.google.hevc.decoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="520-650" />
<Limit name="measured-frame-rate-640x360" range="145-190" />
<Limit name="measured-frame-rate-720x480" range="235-245" />
<Limit name="measured-frame-rate-1280x720" range="88-100" />
<Limit name="measured-frame-rate-1920x1080" range="48-52" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.decoder" update="true">
<Type name="video/mp4v-es">
<Limit name="measured-frame-rate-176x144" range="430-450" />
</Type>
</MediaCodec>
<MediaCodec name="OMX.google.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x180" range="640-720" />
<Limit name="measured-frame-rate-320x240" range="200-230" />
<Limit name="measured-frame-rate-640x360" range="81-90" />
<Limit name="measured-frame-rate-1280x720" range="60-85" />
<Limit name="measured-frame-rate-1920x1080" range="33-55" />
</MediaCodec>
<MediaCodec name="c2.android.avc.decoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="63-165" />
<Limit name="measured-frame-rate-720x480" range="42-59" />
<Limit name="measured-frame-rate-1280x720" range="17-24" />
<Limit name="measured-frame-rate-1920x1080" range="8-12" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.decoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="67-232" />
<Limit name="measured-frame-rate-640x360" range="57-89" />
<Limit name="measured-frame-rate-720x480" range="69-99" />
<Limit name="measured-frame-rate-1280x720" range="35-51" />
<Limit name="measured-frame-rate-1920x1080" range="20-29" />
</MediaCodec>
<MediaCodec name="c2.android.h263.decoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="376-524" />
<Limit name="measured-frame-rate-352x288" range="310-415" />
</MediaCodec>
<MediaCodec name="c2.android.mpeg4.decoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="406-543" />
</MediaCodec>
<MediaCodec name="c2.android.vp8.decoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="160-480" />
<Limit name="measured-frame-rate-640x360" range="133-184" />
<Limit name="measured-frame-rate-1920x1080" range="15-22" />
</MediaCodec>
<MediaCodec name="c2.android.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x180" range="182-360" />
<Limit name="measured-frame-rate-640x360" range="85-200" />
<Limit name="measured-frame-rate-1280x720" range="35-49" />
<Limit name="measured-frame-rate-1920x1080" range="23-33" />
</MediaCodec>
</Decoders>
</MediaCodecs>

View file

@ -0,0 +1,346 @@
<?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.
-->
<!--
Non-Secure decoder capabilities
(MB is defined as 16x16)
_______________________________________________________
| Codec | W H fps Mbps MB/s |
|_____________|_________________________________________|
| h264 | 1920 1088 60 60 489600 |
| hevc | 1920 1080 60 60 489600 |
| vp9 | 1920 1088 60 60 489600 |
| mpeg4-sw | 1920 1088 30 40 244800 |
| h263-sw | 864 480 30 16 48600 |
|_____________|_________________________________________|
Secure decoder capabilities
(MB is defined as 16x16)
_____________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 1920 1088 60 35 489600 |
| vp9 | 1920 1088 60 35 489600 |
| hevc | 1920 1088 60 35 489600 |
|__________|_________________________________________|
Non-Secure encoder capabilities (Secure not supported)
(MB is defined as 16x16)
______________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 1920 1088 60 60 489600 |
| hevc | 1920 1088 60 60 489600 |
| mpeg4-sw | 864 480 30 8 48600 |
| h263-sw | 864 480 30 2 48600 |
|__________|_________________________________________|
-->
<MediaCodecs>
<Include href="media_codecs_google_audio.xml" />
<Include href="media_codecs_vendor_audio.xml" />
<Include href="media_codecs_google_telephony.xml" />
<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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="489600" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="489600" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Feature name="bitrate-modes" value="VBR,CBR" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc.cq" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<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" />
<Feature name="bitrate-modes" value="CQ" />
<Limit name="performance-point-512x512" value="2025" />
</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-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="3" />
<Limit name="performance-point-720x480" value="30" />
</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="3" />
<Limit name="performance-point-720x480" value="30" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="489600" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="489600" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<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.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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="489600" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="6" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="489600" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<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.hevc" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="489600" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="60" />
<Limit name="performance-point-1280x720" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="489600" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-1920x1080" 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="4" />
<Limit name="performance-point-720x480" value="30" />
</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="4" />
<Limit name="performance-point-1920x1080" value="30" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.decoder" type="video/hevc" update="true">
<!-- profiles and levels: ProfileMain : MainTierLevel51 -->
<Limit name="size" min="2x2" max="1280x720" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="8x8" />
<Limit name="block-count" range="1-3600" />
<Limit name="blocks-per-second" range="1-108000" />
<Limit name="bitrate" range="1-2000000" />
</MediaCodec>
<MediaCodec name="c2.android.avc.decoder" type="video/avc" update="true">
<!-- profiles and levels: ProfileHigh : Level51 -->
<Limit name="size" min="2x2" max="1280x720" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-3600" />
<Limit name="blocks-per-second" range="1-108000" />
<Limit name="bitrate" range="1-20000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
</Decoders>
<Include href="media_codecs_google_video_le.xml" />
</MediaCodecs>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright (C) 2012-2017 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.
-->
<Included>
<Decoders>
<!-- SimpleOMXComponet based software decoder-->
<MediaCodec name="OMX.qti.audio.decoder.flac" type="audio/flac" rank="0" >
<Limit name="concurrent-instances" max="10" />
</MediaCodec>
</Decoders>
</Included>

View file

@ -0,0 +1,351 @@
<?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.
-->
<!--
Non-Secure decoder capabilities
(MB is defined as 16x16)
_______________________________________________________
| Codec | W H fps Mbps MB/s |
|_____________|_________________________________________|
| h264 | 1920 1088 30 60 244800 |
| hevc | 1920 1080 30 60 244800 |
| vp9 | 1920 1088 30 60 244800 |
| mpeg4-sw | 1920 1088 30 40 244800 |
| h263-sw | 864 480 30 16 48600 |
|_____________|_________________________________________|
Secure decoder capabilities
(MB is defined as 16x16)
_____________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 1920 1088 30 35 244800 |
| vp9 | 1920 1088 30 35 244800 |
| hevc | 1920 1088 30 35 244800 |
|__________|_________________________________________|
Non-Secure encoder capabilities (Secure not supported)
(MB is defined as 16x16)
______________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 1920 1088 30 60 244800 |
| hevc | 1920 1088 30 60 244800 |
| mpeg4-sw | 864 480 30 8 48600 |
| h263-sw | 864 480 30 2 48600 |
|__________|_________________________________________|
-->
<MediaCodecs>
<Include href="media_codecs_google_audio.xml" />
<Include href="media_codecs_vendor_audio.xml" />
<Include href="media_codecs_google_telephony.xml" />
<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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="30" />
<Limit name="performance-point-1280x720" value="60" />
<Limit name="performance-point-720x480" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Feature name="bitrate-modes" value="VBR,CBR" />
<Limit name="performance-point-1920x1080" value="30" />
<Limit name="performance-point-1280x720" value="60" />
<Limit name="performance-point-720x480" value="120" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc.cq" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<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" />
<Feature name="bitrate-modes" value="CQ" />
<Limit name="performance-point-512x512" value="2025" />
</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-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="3" />
<Limit name="performance-point-720x480" value="30" />
</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="3" />
<Limit name="performance-point-720x480" value="30" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="30" />
<Limit name="performance-point-1280x720" value="60" />
<Limit name="performance-point-720x480" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<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.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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="6" />
<Limit name="performance-point-1920x1080" value="30" />
<Limit name="performance-point-1280x720" value="60" />
<Limit name="performance-point-720x480" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<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.hevc" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="30" />
<Limit name="performance-point-1280x720" value="60" />
<Limit name="performance-point-720x480" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-1920x1080" 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="4" />
<Limit name="performance-point-720x480" value="30" />
</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="4" />
<Limit name="performance-point-1920x1080" value="30" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.decoder" type="video/hevc" update="true">
<!-- profiles and levels: ProfileMain : MainTierLevel51 -->
<Limit name="size" min="2x2" max="1280x720" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="8x8" />
<Limit name="block-count" range="1-3600" />
<Limit name="blocks-per-second" range="1-108000" />
<Limit name="bitrate" range="1-2000000" />
</MediaCodec>
<MediaCodec name="c2.android.avc.decoder" type="video/avc" update="true">
<!-- profiles and levels: ProfileHigh : Level51 -->
<Limit name="size" min="2x2" max="1280x720" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-3600" />
<Limit name="blocks-per-second" range="1-108000" />
<Limit name="bitrate" range="1-20000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
</Decoders>
<Include href="media_codecs_google_video_le.xml" />
</MediaCodecs>

View file

@ -0,0 +1,351 @@
<?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.
-->
<!--
Non-Secure decoder capabilities
(MB is defined as 16x16)
_______________________________________________________
| Codec | W H fps Mbps MB/s |
|_____________|_________________________________________|
| h264 | 1920 1088 30 60 244800 |
| hevc | 1920 1080 30 60 244800 |
| vp9 | 1920 1088 30 60 244800 |
| mpeg4-sw | 1920 1088 30 40 244800 |
| h263-sw | 864 480 30 16 48600 |
|_____________|_________________________________________|
Secure decoder capabilities
(MB is defined as 16x16)
_____________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 1920 1088 30 35 244800 |
| vp9 | 1920 1088 30 35 244800 |
| hevc | 1920 1088 30 35 244800 |
|__________|_________________________________________|
Non-Secure encoder capabilities (Secure not supported)
(MB is defined as 16x16)
______________________________________________________
| Codec | W H fps Mbps MB/s |
|__________|_________________________________________|
| h264 | 1920 1088 30 60 244800 |
| hevc | 1920 1088 30 60 244800 |
| mpeg4-sw | 864 480 30 8 48600 |
| h263-sw | 864 480 30 2 48600 |
|__________|_________________________________________|
-->
<MediaCodecs>
<Include href="media_codecs_google_audio.xml" />
<Include href="media_codecs_vendor_audio.xml" />
<Include href="media_codecs_google_telephony.xml" />
<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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="30" />
<Limit name="performance-point-1280x720" value="60" />
<Limit name="performance-point-720x480" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Feature name="bitrate-modes" value="VBR,CBR" />
<Limit name="performance-point-1920x1080" value="30" />
<Limit name="performance-point-1280x720" value="60" />
<Limit name="performance-point-720x480" value="120" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.hevc.cq" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<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" />
<Feature name="bitrate-modes" value="CQ" />
<Limit name="performance-point-512x512" value="2025" />
</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-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="3" />
<Limit name="performance-point-720x480" value="30" />
</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="3" />
<Limit name="performance-point-720x480" value="30" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="30" />
<Limit name="performance-point-1280x720" value="60" />
<Limit name="performance-point-720x480" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<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.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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="6" />
<Limit name="performance-point-1920x1080" value="30" />
<Limit name="performance-point-1280x720" value="60" />
<Limit name="performance-point-720x480" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<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.hevc" type="video/hevc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="size" min="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-60000000" />
<Limit name="frame-rate" range="1-120" />
<Feature name="adaptive-playback" />
<Limit name="concurrent-instances" max="16" />
<Limit name="performance-point-1920x1080" value="30" />
<Limit name="performance-point-1280x720" value="60" />
<Limit name="performance-point-720x480" value="120" />
</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="128x128" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="64" max="244800" />
<Limit name="bitrate" range="1-35000000" />
<Limit name="frame-rate" range="1-60" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-1920x1080" 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="4" />
<Limit name="performance-point-720x480" value="30" />
</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="4" />
<Limit name="performance-point-1920x1080" value="30" />
</MediaCodec>
<MediaCodec name="c2.android.hevc.decoder" type="video/hevc" update="true">
<!-- profiles and levels: ProfileMain : MainTierLevel51 -->
<Limit name="size" min="2x2" max="1280x720" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="8x8" />
<Limit name="block-count" range="1-3600" />
<Limit name="blocks-per-second" range="1-108000" />
<Limit name="bitrate" range="1-2000000" />
</MediaCodec>
<MediaCodec name="c2.android.avc.decoder" type="video/avc" update="true">
<!-- profiles and levels: ProfileHigh : Level51 -->
<Limit name="size" min="2x2" max="1280x720" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="block-count" range="1-3600" />
<Limit name="blocks-per-second" range="1-108000" />
<Limit name="bitrate" range="1-20000000" />
<Feature name="adaptive-playback" />
</MediaCodec>
</Decoders>
<Include href="media_codecs_google_video_le.xml" />
</MediaCodecs>

643
media/media_profiles.xml Normal file
View file

@ -0,0 +1,643 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source Project
Copyright (C) 2012-2013 The Linux Foundation. All rights reserved.
Not a contribution.
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) #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|6) #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|heaac|aaceld|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|6) #REQUIRED>
<!ATTLIST AudioEncoderCap maxChannels (1|2|6) #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 -->
<!-- Back Camera -->
<CamcorderProfiles cameraId="0">
<EncoderProfile quality="low" fileFormat="3gp" duration="30">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="15" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="high" fileFormat="mp4" duration="10">
<Video codec="h264"
bitRate="50000000"
width="3840"
height="2160"
frameRate="30" />
<Audio codec="aac"
bitRate="320000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="qvga" fileFormat="3gp" duration="30">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="15" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
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="128000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="14000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="320000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="20000000"
width="1920"
height="1080"
frameRate="30" />
<Audio codec="aac"
bitRate="320000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="anamorphic1920" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="20000000"
width="1920"
height="816"
frameRate="30" />
<Audio codec="aac"
bitRate="320000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<!-- CAMCORDER_QUALITY_HIGH_SPEED_LOW/720P : 720p@240fps; 56.0 Mbps -->
<EncoderProfile quality="highspeedlow" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="56000000"
width="1280"
height="720"
frameRate="240" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<!-- CAMCORDER_QUALITY_HIGH_SPEED_HIGH/1080P : 1080p@120fps; 50.0 Mbps -->
<EncoderProfile quality="highspeedhigh" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="50000000"
width="1920"
height="1080"
frameRate="120" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="highspeed720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="56000000"
width="1280"
height="720"
frameRate="240" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="highspeed1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="50000000"
width="1920"
height="1080"
frameRate="120" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="2160p" fileFormat="mp4" duration="10">
<Video codec="h264"
bitRate="50000000"
width="3840"
height="2160"
frameRate="30" />
<Audio codec="aac"
bitRate="320000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="anamorphic3840" fileFormat="mp4" duration="10">
<Video codec="h264"
bitRate="50000000"
width="3840"
height="1632"
frameRate="30" />
<Audio codec="aac"
bitRate="320000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="timelapselow" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="512000"
width="320"
height="240"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="50000000"
width="3840"
height="2160"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="timelapseqvga" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="512000"
width="320"
height="240"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="640"
height="480"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="10000000"
width="1280"
height="720"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="20000000"
width="1920"
height="1080"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="timelapse2160p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="50000000"
width="3840"
height="2160"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<ImageEncoding quality="95" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<!-- Front Camera -->
<CamcorderProfiles cameraId="1">
<EncoderProfile quality="low" fileFormat="3gp" duration="30">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="15" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="high" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
frameRate="30" />
<Audio codec="aac"
bitRate="320000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="qvga" fileFormat="3gp" duration="30">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="15" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
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="128000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="10000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="320000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
frameRate="30" />
<Audio codec="aac"
bitRate="320000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="anamorphic1920" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="20000000"
width="1920"
height="816"
frameRate="30" />
<Audio codec="aac"
bitRate="320000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="highspeedlow" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="640"
height="480"
frameRate="120" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="highspeedhigh" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="640"
height="480"
frameRate="120" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="highspeed480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="640"
height="480"
frameRate="120" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapselow" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="512000"
width="320"
height="240"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="timelapseqvga" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="512000"
width="320"
height="240"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="640"
height="480"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
channels="2" />
</EncoderProfile>
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="10000000"
width="1280"
height="720"
frameRate="30" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
channels="2" />
</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="128000"
sampleRate="48000"
channels="2" />
</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="60000000"
minFrameWidth="176" maxFrameWidth="3840"
minFrameHeight="144" maxFrameHeight="2160"
minFrameRate="15" maxFrameRate="60" />
<VideoEncoderCap name="h263" enabled="true"
minBitRate="64000" maxBitRate="2000000"
minFrameWidth="176" maxFrameWidth="720"
minFrameHeight="144" maxFrameHeight="480"
minFrameRate="15" maxFrameRate="30" />
<VideoEncoderCap name="m4v" enabled="true"
minBitRate="64000" maxBitRate="20000000"
minFrameWidth="176" maxFrameWidth="1920"
minFrameHeight="144" maxFrameHeight="1080"
minFrameRate="15" maxFrameRate="30" />
<AudioEncoderCap name="aac" enabled="true"
minBitRate="8000" maxBitRate="512000"
minSampleRate="8000" maxSampleRate="48000"
minChannels="1" maxChannels="4" />
<AudioEncoderCap name="heaac" enabled="true"
minBitRate="8000" maxBitRate="128000"
minSampleRate="16000" maxSampleRate="48000"
minChannels="1" maxChannels="2" />
<AudioEncoderCap name="aaceld" enabled="true"
minBitRate="16000" maxBitRate="384000"
minSampleRate="16000" maxSampleRate="48000"
minChannels="1" maxChannels="2" />
<AudioEncoderCap name="amrwb" enabled="true"
minBitRate="6600" maxBitRate="23850"
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.
-->
<!-- IKVPREL2KK-2424 Disable WMV and WMA support -->
<VideoDecoderCap name="wmv" enabled="false"/>
<AudioDecoderCap name="wma" enabled="false"/>
</MediaSettings>

View file

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

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Copyright (c) 2017,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>
<property name="vidc_dec_log_in" value="0"/>
<property name="vidc_dec_log_out" value="0"/>
<property name="vidc_dec_hfr_fps" value="0"/>
<property name="vidc_enc_log_in" value="0"/>
<property name="vidc_enc_log_out" value="0"/>
<property name="vidc_enc_csc_custom_matrix" value="0"/>
<property name="vidc_c2d_rotation" value="1"/>
<!-- Bitmask for arb mode: 1: AVC, 2: HEVC, 4: MPEG2 -->
<property name="vidc_dec_arb_mode_override" value="7"/>
<!-- Bitmask for hdr disable mode: 1: dec, 2: enc -->
<property name="vidc_disable_hdr" value="3"/>
</configs>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- The list of vendor package signatures that should also be considered
platform signatures, specifically for use on devices with a vendor partition. -->
<string-array name="config_vendorPlatformSignatures">
<item>308203c2308202aaa00302010202021387300d06092a864886f70d01010b05003076310b30090603550406130255533111300f06035504080c08496c6c696e6f69733115301306035504070c0c4c69626572747976696c6c653111300f060355040a0c084d6f746f726f6c61310c300a060355040b0c034d4462311c301a06035504030c134d41503420506c6174666f726d203436362d31301e170d3230303132323134343731395a170d3435303132323134343731395a3075310b30090603550406130255533111300f06035504080c08496c6c696e6f69733110300e06035504070c074368696361676f3111300f060355040a0c084d6f746f726f6c61310c300a060355040b0c034d42473120301e06035504030c174d41503520506c6174666f726d203436362d312d32343630820122300d06092a864886f70d01010105000382010f003082010a0282010100a423208a6f02a47f04ca4cde96ea1f4cae4b1d837239a361ac7f282fb9ff70e6096ae34b648470bd8e7c86572ef9a09192d335455d0ebb67b53ea9ddaa88c3f1fa2d296ae1bfe6251ca4532a3ea1964e0b3f07afe8ea80f4e2c546b3f92c116ac94375941b57e9eb1a71a2d62f85f8e851c62f300579995a920d9cb221e7378bb89be6fb05a97fa5133cf755b9ad1ba07ccfbc61130b19df8ded21ce84d9e4a545c5a1419922f666b24612fe678b82587591ba4c75c2eb6a6ac67e2886101992be51e6353e48e91a8d03c7e2ae816667911c138b160d80ec9a797b561de2caf264fa9fe3c278e579910bac986f3a7d0ee8ecac851c56bc83286b17cab002844f0203010001a35b3059301f0603551d23041830168014a4b3e27d57c49a05b1c5578d791e7779aea18ebb301106096086480186f8420101040403020410300e0603551d0f0101ff0404030205e030130603551d25040c300a06082b06010505070303300d06092a864886f70d01010b050003820101009fad7dbe07b724f75ebddf51cdbc2648c5e311f1cc86374cc0bae73ae726fc3ad152eed3b7e39233680121329e90cd357170f9c782ce95e6d0bb662ea612d332d76be13bcfa303cc8771c26b81611beffa6c9a4d4810dcf1b503af51aeebc43bcfed781ac0acb426e437ed032e78a646bf7d6808a8eb2ab2b33b35d4b233514fddef78eae77bbe68ff5ea2691421e67082561096201c841188b35397898f70d5f5a5edf10f818635eb7f85d2239851df0aaf8425004339dd2b2bfa11e6cff761a36c1a45fa84181edb60322a4b859a01ed41789bbc09f12b07b9598cd8df14a49452d58e7014b16f8cdbaf44292468970154b1312598cbe7eb582659e929d999</item>
</string-array>
</resources>

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/**
* Copyright (c) 2009, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. Do not translate. -->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
</resources>

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="a2dp_sink_automatically_request_audio_focus">false</bool>
<bool name="config_bluetooth_pan_enable_autoconnect">true</bool>
<bool name="enable_phone_policy">true</bool>
<bool name="headset_client_initial_audio_route_allowed">true</bool>
<bool name="hfp_clcc_poll_during_call">true</bool>
<bool name="hfp_client_connection_service_enabled">false</bool>
<bool name="hfp_client_connection_service_support_emergency_call">false</bool>
<bool name="pbap_include_photos_in_vcard">true</bool>
<bool name="pbap_use_profile_for_owner_vcard">true</bool>
<bool name="profile_supported_a2dp">true</bool>
<bool name="profile_supported_a2dp_sink">false</bool>
<bool name="profile_supported_avrcp_controller">true</bool>
<bool name="profile_supported_avrcp_target">false</bool>
<bool name="profile_supported_ba">true</bool>
<bool name="profile_supported_gatt">true</bool>
<bool name="profile_supported_hfpclient">false</bool>
<bool name="profile_supported_hid_device">false</bool>
<bool name="profile_supported_hid_host">true</bool>
<bool name="profile_supported_hs_hfp">true</bool>
<bool name="profile_supported_map">true</bool>
<bool name="profile_supported_mapmce">false</bool>
<bool name="profile_supported_opp">true</bool>
<bool name="profile_supported_pan">true</bool>
<bool name="profile_supported_pbap">true</bool>
<bool name="profile_supported_pbapclient">false</bool>
<bool name="profile_supported_sap">true</bool>
<bool name="reload_supported_profiles_when_enabled">true</bool>
<bool name="strict_location_check">true</bool>
</resources>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,352 @@
-framework/audiosphere.jar
-framework/com.qti.location.sdk.jar
-framework/izat.xt.srv.jar
-framework/tcmclient.jar
-product/app/QtiTelephonyService/QtiTelephonyService.apk
-product/app/datastatusnotification/datastatusnotification.apk
-product/app/embms/embms.apk
-product/app/uceShimService/uceShimService.apk
-product/framework/QtiTelephonyServicelibrary.jar
-product/framework/com.nxp.nfc.jar
-product/framework/com.qti.dpmframework.jar
-product/framework/com.qualcomm.qti.imscmservice-V2.0-java.jar
-product/framework/com.qualcomm.qti.imscmservice-V2.1-java.jar
-product/framework/com.qualcomm.qti.imscmservice-V2.2-java.jar
-product/framework/com.qualcomm.qti.uceservice-V2.0-java.jar
-product/framework/com.qualcomm.qti.uceservice-V2.1-java.jar
-product/framework/dpmapi.jar
-product/framework/embmslibrary.jar
-product/framework/qcrilhook.jar
-product/framework/qti-telephony-common.jar
-product/framework/vendor.qti.data.factory-V1.0-java.jar
-product/framework/vendor.qti.data.factory-V2.0-java.jar
-product/framework/vendor.qti.data.factory-V2.1-java.jar
-product/framework/vendor.qti.data.slm-V1.0-java.jar
-product/framework/vendor.qti.hardware.alarm-V1.0-java.jar
-product/framework/vendor.qti.hardware.bluetooth_dun-V1.0-java.jar
-product/framework/vendor.qti.hardware.capabilityconfigstore-V1.0-java.jar
-product/framework/vendor.qti.hardware.data.connection-V1.0-java.jar
-product/framework/vendor.qti.hardware.data.connection-V1.1-java.jar
-product/framework/vendor.qti.hardware.data.dynamicdds-V1.0-java.jar
-product/framework/vendor.qti.hardware.data.iwlan-V1.0-java.jar
-product/framework/vendor.qti.hardware.data.latency-V1.0-java.jar
-product/framework/vendor.qti.hardware.factory-V1.0-java.jar
-product/framework/vendor.qti.hardware.factory-V1.1-java.jar
-product/framework/vendor.qti.hardware.sensorscalibrate-V1.0-java.jar
-product/framework/vendor.qti.hardware.soter-V1.0-java.jar
-product/framework/vendor.qti.hardware.wigig.netperftuner-V1.0-java.jar
-product/framework/vendor.qti.hardware.wigig.supptunnel-V1.0-java.jar
-product/framework/vendor.qti.ims.callinfo-V1.0-java.jar
-product/framework/vendor.qti.ims.rcsconfig-V1.0-java.jar
-product/framework/vendor.qti.ims.rcsconfig-V1.1-java.jar
-product/framework/vendor.qti.latency-V2.0-java.jar
-product/framework/vendor.qti.voiceprint-V1.0-java.jar
-product/priv-app/dpmserviceapp/dpmserviceapp.apk
-product/priv-app/ims/ims.apk
-product/priv-app/qcrilmsgtunnel/qcrilmsgtunnel.apk
bin/wfdservice
etc/cne/Nexus/ATT/ATT_profiles.xml
etc/cne/Nexus/ROW/ROW_profiles.xml
etc/cne/Nexus/VZW/VZW_profiles.xml
etc/init/wfdservice.rc
etc/permissions/audiosphere.xml
etc/permissions/com.qti.location.sdk.xml
etc/permissions/com.qualcomm.location.xml
etc/permissions/com.qualcomm.qti.imscmservice.xml
etc/permissions/izat.xt.srv.xml
etc/permissions/privapp-permissions-com.qualcomm.location.xml
etc/permissions/privapp-permissions-qti.xml
etc/permissions/qti_libpermissions.xml
etc/permissions/qti_permissions.xml
etc/sysconfig/qti_whitelist.xml
lib/com.qualcomm.qti.wifidisplayhal@1.0.so
lib/fm_helium.so
lib/libFileMux.so
lib/libOmxMux.so
lib/libfm-hci.so
lib/libmmosal.so
lib/libmmparser_lite.so
lib/libmmrtpdecoder.so
lib/libmmrtpencoder.so
lib/libqti-perfd-client_system.so
lib/libqti-util_system.so
lib/libqti_performance.so
lib/libwfdaac.so
lib/libwfdavenhancements.so
lib/libwfdclient.so
lib/libwfdcommonutils.so
lib/libwfdmminterface.so
lib/libwfdmmsink.so
lib/libwfdmmsrc_system.so
lib/libwfdrtsp.so
lib/libwfdservice.so
lib/libwfdsinksm.so
lib/libwfdsm.so
lib/libwfduibcinterface.so
lib/libwfduibcsink.so
lib/libwfduibcsinkinterface.so
lib/libwfduibcsrc.so
lib/libwfduibcsrcinterface.so
lib64/fm_helium.so
lib64/libFileMux.so
lib64/libOmxMux.so
lib64/libaptXHD_encoder.so
lib64/libaptX_encoder.so
lib64/libfm-hci.so
lib64/liblocationservice_jni.so
lib64/libmmosal.so
lib64/libmmparser_lite.so
lib64/libmmrtpdecoder.so
lib64/libmmrtpencoder.so
lib64/libqti-perfd-client_system.so
lib64/libqti-util_system.so
lib64/libqti_performance.so
lib64/libwfdclient.so
lib64/libwfdcommonutils.so
lib64/libwfdmminterface.so
lib64/libwfdmmsink.so
lib64/libwfdrtsp.so
lib64/libwfdsinksm.so
lib64/libwfdsm.so
lib64/libwfduibcinterface.so
lib64/libwfduibcsink.so
lib64/libwfduibcsinkinterface.so
lib64/libwfduibcsrc.so
lib64/libwfduibcsrcinterface.so
lib64/libxt_native.so
product/bin/dpmd
product/etc/dpm/dpm.conf
product/etc/init/dpmd.rc
product/etc/permissions/com.nxp.nfc.xml
product/etc/permissions/com.qti.dpmframework.xml
product/etc/permissions/com.qualcomm.qti.imscmservice-V2.0-java.xml
product/etc/permissions/com.qualcomm.qti.imscmservice-V2.1-java.xml
product/etc/permissions/com.qualcomm.qti.imscmservice-V2.2-java.xml
product/etc/permissions/dpmapi.xml
product/etc/permissions/embms.xml
product/etc/permissions/qcrilhook.xml
product/etc/permissions/qti_telephony_hidl_wrapper.xml
product/etc/permissions/qti_telephony_utils.xml
product/etc/permissions/telephonyservice.xml
product/etc/permissions/vendor.qti.hardware.data.connection-V1.0-java.xml
product/etc/permissions/vendor.qti.hardware.data.connection-V1.1-java.xml
product/lib/com.qualcomm.qti.ant@1.0.so
product/lib/com.qualcomm.qti.bluetooth_audio@1.0.so
product/lib/com.qualcomm.qti.dpm.api@1.0.so
product/lib/com.qualcomm.qti.imscmservice@1.0.so
product/lib/com.qualcomm.qti.imscmservice@2.0.so
product/lib/com.qualcomm.qti.imscmservice@2.1.so
product/lib/com.qualcomm.qti.imscmservice@2.2.so
product/lib/com.qualcomm.qti.uceservice@2.0.so
product/lib/com.qualcomm.qti.uceservice@2.1.so
product/lib/lib-imsvideocodec.so
product/lib/lib-imsvt.so
product/lib/lib-imsvtextutils.so
product/lib/lib-imsvtutils.so
product/lib/libdiag_system.so
product/lib/libdpmctmgr.so
product/lib/libdpmfdmgr.so
product/lib/libdpmframework.so
product/lib/libdpmtcm.so
product/lib/libimscamera_jni.so
product/lib/libimsmedia_jni.so
product/lib/vendor.display.color@1.0.so
product/lib/vendor.display.color@1.1.so
product/lib/vendor.display.color@1.2.so
product/lib/vendor.display.color@1.3.so
product/lib/vendor.display.config@1.0.so
product/lib/vendor.display.config@1.1.so
product/lib/vendor.display.config@1.10.so
product/lib/vendor.display.config@1.11.so
product/lib/vendor.display.config@1.12.so
product/lib/vendor.display.config@1.13.so
product/lib/vendor.display.config@1.14.so
product/lib/vendor.display.config@1.15.so
product/lib/vendor.display.config@1.16.so
product/lib/vendor.display.config@1.2.so
product/lib/vendor.display.config@1.3.so
product/lib/vendor.display.config@1.4.so
product/lib/vendor.display.config@1.5.so
product/lib/vendor.display.config@1.6.so
product/lib/vendor.display.config@1.7.so
product/lib/vendor.display.config@1.8.so
product/lib/vendor.display.config@1.9.so
product/lib/vendor.display.postproc@1.0.so
product/lib/vendor.qti.data.factory@1.0.so
product/lib/vendor.qti.data.factory@2.0.so
product/lib/vendor.qti.data.factory@2.1.so
product/lib/vendor.qti.data.slm@1.0.so
product/lib/vendor.qti.gnss@1.0.so
product/lib/vendor.qti.gnss@1.1.so
product/lib/vendor.qti.gnss@1.2.so
product/lib/vendor.qti.gnss@2.0.so
product/lib/vendor.qti.gnss@2.1.so
product/lib/vendor.qti.gnss@3.0.so
product/lib/vendor.qti.hardware.alarm@1.0.so
product/lib/vendor.qti.hardware.bluetooth_audio@2.0.so
product/lib/vendor.qti.hardware.btconfigstore@1.0.so
product/lib/vendor.qti.hardware.capabilityconfigstore@1.0.so
product/lib/vendor.qti.hardware.cvp@1.0-adapter-helper.so
product/lib/vendor.qti.hardware.cvp@1.0.so
product/lib/vendor.qti.hardware.data.connection@1.0.so
product/lib/vendor.qti.hardware.data.connection@1.1.so
product/lib/vendor.qti.hardware.data.dynamicdds@1.0.so
product/lib/vendor.qti.hardware.data.iwlan@1.0.so
product/lib/vendor.qti.hardware.data.latency@1.0.so
product/lib/vendor.qti.hardware.factory@1.0.so
product/lib/vendor.qti.hardware.factory@1.1.so
product/lib/vendor.qti.hardware.fm@1.0.so
product/lib/vendor.qti.hardware.iop@2.0.so
product/lib/vendor.qti.hardware.perf@2.0.so
product/lib/vendor.qti.hardware.perf@2.1.so
product/lib/vendor.qti.hardware.qdutils_disp@1.0.so
product/lib/vendor.qti.hardware.radio.am@1.0.so
product/lib/vendor.qti.hardware.radio.ims@1.0.so
product/lib/vendor.qti.hardware.radio.ims@1.1.so
product/lib/vendor.qti.hardware.radio.ims@1.2.so
product/lib/vendor.qti.hardware.radio.ims@1.3.so
product/lib/vendor.qti.hardware.radio.ims@1.4.so
product/lib/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so
product/lib/vendor.qti.hardware.radio.lpa@1.0.so
product/lib/vendor.qti.hardware.radio.qcrilhook@1.0.so
product/lib/vendor.qti.hardware.radio.qtiradio@1.0.so
product/lib/vendor.qti.hardware.radio.qtiradio@2.0.so
product/lib/vendor.qti.hardware.radio.qtiradio@2.1.so
product/lib/vendor.qti.hardware.radio.qtiradio@2.2.so
product/lib/vendor.qti.hardware.radio.qtiradio@2.3.so
product/lib/vendor.qti.hardware.radio.qtiradio@2.4.so
product/lib/vendor.qti.hardware.radio.uim@1.0.so
product/lib/vendor.qti.hardware.radio.uim@1.1.so
product/lib/vendor.qti.hardware.radio.uim@1.2.so
product/lib/vendor.qti.hardware.radio.uim_remote_client@1.0.so
product/lib/vendor.qti.hardware.radio.uim_remote_client@1.1.so
product/lib/vendor.qti.hardware.radio.uim_remote_client@1.2.so
product/lib/vendor.qti.hardware.radio.uim_remote_server@1.0.so
product/lib/vendor.qti.hardware.scve.objecttracker@1.0-adapter-helper.so
product/lib/vendor.qti.hardware.scve.objecttracker@1.0.so
product/lib/vendor.qti.hardware.scve.panorama@1.0-adapter-helper.so
product/lib/vendor.qti.hardware.scve.panorama@1.0.so
product/lib/vendor.qti.hardware.sensorscalibrate@1.0.so
product/lib/vendor.qti.hardware.sigma_miracast@1.0.so
product/lib/vendor.qti.hardware.soter@1.0.so
product/lib/vendor.qti.hardware.tui_comm@1.0.so
product/lib/vendor.qti.hardware.vpp@1.1.so
product/lib/vendor.qti.hardware.wifidisplaysession@1.0.so
product/lib/vendor.qti.hardware.wigig.netperftuner@1.0.so
product/lib/vendor.qti.hardware.wigig.supptunnel@1.0.so
product/lib/vendor.qti.ims.callinfo@1.0.so
product/lib/vendor.qti.ims.rcsconfig@1.0.so
product/lib/vendor.qti.ims.rcsconfig@1.1.so
product/lib/vendor.qti.imsrtpservice@2.0.so
product/lib/vendor.qti.imsrtpservice@2.1.so
product/lib/vendor.qti.latency@2.0.so
product/lib64/com.qualcomm.qti.ant@1.0.so
product/lib64/com.qualcomm.qti.bluetooth_audio@1.0.so
product/lib64/com.qualcomm.qti.dpm.api@1.0.so
product/lib64/com.qualcomm.qti.imscmservice@1.0.so
product/lib64/com.qualcomm.qti.imscmservice@2.0.so
product/lib64/com.qualcomm.qti.imscmservice@2.1.so
product/lib64/com.qualcomm.qti.imscmservice@2.2.so
product/lib64/com.qualcomm.qti.uceservice@2.0.so
product/lib64/com.qualcomm.qti.uceservice@2.1.so
product/lib64/lib-imsvideocodec.so
product/lib64/lib-imsvt.so
product/lib64/lib-imsvtextutils.so
product/lib64/lib-imsvtutils.so
product/lib64/libdiag_system.so
product/lib64/libdpmctmgr.so
product/lib64/libdpmfdmgr.so
product/lib64/libdpmframework.so
product/lib64/libdpmtcm.so
product/lib64/libimscamera_jni.so
product/lib64/libimsmedia_jni.so
product/lib64/vendor.display.color@1.0.so
product/lib64/vendor.display.color@1.1.so
product/lib64/vendor.display.color@1.2.so
product/lib64/vendor.display.color@1.3.so
product/lib64/vendor.display.config@1.0.so
product/lib64/vendor.display.config@1.1.so
product/lib64/vendor.display.config@1.10.so
product/lib64/vendor.display.config@1.11.so
product/lib64/vendor.display.config@1.12.so
product/lib64/vendor.display.config@1.13.so
product/lib64/vendor.display.config@1.14.so
product/lib64/vendor.display.config@1.15.so
product/lib64/vendor.display.config@1.16.so
product/lib64/vendor.display.config@1.2.so
product/lib64/vendor.display.config@1.3.so
product/lib64/vendor.display.config@1.4.so
product/lib64/vendor.display.config@1.5.so
product/lib64/vendor.display.config@1.6.so
product/lib64/vendor.display.config@1.7.so
product/lib64/vendor.display.config@1.8.so
product/lib64/vendor.display.config@1.9.so
product/lib64/vendor.display.postproc@1.0.so
product/lib64/vendor.qti.data.factory@1.0.so
product/lib64/vendor.qti.data.factory@2.0.so
product/lib64/vendor.qti.data.factory@2.1.so
product/lib64/vendor.qti.data.slm@1.0.so
product/lib64/vendor.qti.gnss@1.0.so
product/lib64/vendor.qti.gnss@1.1.so
product/lib64/vendor.qti.gnss@1.2.so
product/lib64/vendor.qti.gnss@2.0.so
product/lib64/vendor.qti.gnss@2.1.so
product/lib64/vendor.qti.gnss@3.0.so
product/lib64/vendor.qti.hardware.alarm@1.0.so
product/lib64/vendor.qti.hardware.bluetooth_audio@2.0.so
product/lib64/vendor.qti.hardware.btconfigstore@1.0.so
product/lib64/vendor.qti.hardware.capabilityconfigstore@1.0.so
product/lib64/vendor.qti.hardware.cvp@1.0-adapter-helper.so
product/lib64/vendor.qti.hardware.cvp@1.0.so
product/lib64/vendor.qti.hardware.data.connection@1.0.so
product/lib64/vendor.qti.hardware.data.connection@1.1.so
product/lib64/vendor.qti.hardware.data.dynamicdds@1.0.so
product/lib64/vendor.qti.hardware.data.iwlan@1.0.so
product/lib64/vendor.qti.hardware.data.latency@1.0.so
product/lib64/vendor.qti.hardware.factory@1.0.so
product/lib64/vendor.qti.hardware.factory@1.1.so
product/lib64/vendor.qti.hardware.fm@1.0.so
product/lib64/vendor.qti.hardware.iop@2.0.so
product/lib64/vendor.qti.hardware.perf@2.0.so
product/lib64/vendor.qti.hardware.perf@2.1.so
product/lib64/vendor.qti.hardware.qdutils_disp@1.0.so
product/lib64/vendor.qti.hardware.radio.am@1.0.so
product/lib64/vendor.qti.hardware.radio.ims@1.0.so
product/lib64/vendor.qti.hardware.radio.ims@1.1.so
product/lib64/vendor.qti.hardware.radio.ims@1.2.so
product/lib64/vendor.qti.hardware.radio.ims@1.3.so
product/lib64/vendor.qti.hardware.radio.ims@1.4.so
product/lib64/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so
product/lib64/vendor.qti.hardware.radio.lpa@1.0.so
product/lib64/vendor.qti.hardware.radio.qcrilhook@1.0.so
product/lib64/vendor.qti.hardware.radio.qtiradio@1.0.so
product/lib64/vendor.qti.hardware.radio.qtiradio@2.0.so
product/lib64/vendor.qti.hardware.radio.qtiradio@2.1.so
product/lib64/vendor.qti.hardware.radio.qtiradio@2.2.so
product/lib64/vendor.qti.hardware.radio.qtiradio@2.3.so
product/lib64/vendor.qti.hardware.radio.qtiradio@2.4.so
product/lib64/vendor.qti.hardware.radio.uim@1.0.so
product/lib64/vendor.qti.hardware.radio.uim@1.1.so
product/lib64/vendor.qti.hardware.radio.uim@1.2.so
product/lib64/vendor.qti.hardware.radio.uim_remote_client@1.0.so
product/lib64/vendor.qti.hardware.radio.uim_remote_client@1.1.so
product/lib64/vendor.qti.hardware.radio.uim_remote_client@1.2.so
product/lib64/vendor.qti.hardware.radio.uim_remote_server@1.0.so
product/lib64/vendor.qti.hardware.scve.objecttracker@1.0-adapter-helper.so
product/lib64/vendor.qti.hardware.scve.objecttracker@1.0.so
product/lib64/vendor.qti.hardware.scve.panorama@1.0-adapter-helper.so
product/lib64/vendor.qti.hardware.scve.panorama@1.0.so
product/lib64/vendor.qti.hardware.sensorscalibrate@1.0.so
product/lib64/vendor.qti.hardware.sigma_miracast@1.0.so
product/lib64/vendor.qti.hardware.soter@1.0.so
product/lib64/vendor.qti.hardware.tui_comm@1.0.so
product/lib64/vendor.qti.hardware.vpp@1.1.so
product/lib64/vendor.qti.hardware.wifidisplaysession@1.0.so
product/lib64/vendor.qti.hardware.wigig.netperftuner@1.0.so
product/lib64/vendor.qti.hardware.wigig.supptunnel@1.0.so
product/lib64/vendor.qti.ims.callinfo@1.0.so
product/lib64/vendor.qti.ims.rcsconfig@1.0.so
product/lib64/vendor.qti.ims.rcsconfig@1.1.so
product/lib64/vendor.qti.imsrtpservice@2.0.so
product/lib64/vendor.qti.imsrtpservice@2.1.so
product/lib64/vendor.qti.latency@2.0.so

2396
proprietary-files.txt Normal file

File diff suppressed because it is too large Load diff

403
rootdir/Android.mk Normal file
View file

@ -0,0 +1,403 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include $(CLEAR_VARS)
LOCAL_MODULE := apanic_annotate.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/apanic_annotate.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := apanic_copy.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/apanic_copy.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := apanic_save.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/apanic_save.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := hardware_revisions.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/hardware_revisions.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
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_EXECUTABLES)
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_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.gbmods.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.gbmods.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mdm.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.mdm.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.block_perm.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.mmi.block_perm.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.boot.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.mmi.boot.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.laser.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.mmi.laser.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.mdlog-getlogs.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.mmi.mdlog-getlogs.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.modules.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.mmi.modules.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.shutdown.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.mmi.shutdown.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.touch.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.mmi.touch.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.usb.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.mmi.usb.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.wlan-getlogs.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.mmi.wlan-getlogs.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.oem.fingerprint.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.oem.fingerprint.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.oem.fingerprint2.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.oem.fingerprint2.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.oem.hw.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.oem.hw.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.class_core.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qcom.class_core.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.coex.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qcom.coex.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.crashdata.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qcom.crashdata.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
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_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.efs.sync.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qcom.efs.sync.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
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_EXECUTABLES)
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_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.sensors.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qcom.sensors.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
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_EXECUTABLES)
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_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qti.fm.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qti.fm.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qti.ims.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qti.ims.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qti.media.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/init.qti.media.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := pstore_annotate.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/pstore_annotate.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := qca6234-service.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := bin/qca6234-service.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.charge_only.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mmi.charge_only.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.chipset.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mmi.chipset.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.debug.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mmi.debug.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.diag.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mmi.diag.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.diag_mdlog.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mmi.diag_mdlog.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.overlay.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mmi.overlay.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mmi.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.tcmd.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mmi.tcmd.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.usb.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mmi.usb.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mmi.wlan.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mmi.wlan.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.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 := fstab.qcom
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/fstab.qcom
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)
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)

View file

@ -0,0 +1,53 @@
#!/vendor/bin/sh
#
# Copyright (c) 2012, Motorola Mobility LLC, All rights reserved.
#
# The purpose of this script is to annotate panic dumps with useful information
# about the context of the event.
#
export PATH=/vendor/bin:/system/bin:$PATH
annotate()
{
VAL=`$2`
[ "$VAL" ] || return
echo "$1: $VAL" > /sys/fs/pstore/annotate-ramoops
}
case $1 in
build*)
annotate "Build number" "getprop ro.build.display.id"
annotate "Build config" "getprop ro.build.config.version"
annotate "Kernel version" "cat /proc/sys/kernel/osrelease"
;;
baseband*)
annotate "Baseband version" "getprop gsm.version.baseband"
;;
esac
# check for pstore files and copy them to the /data/dontpanic
if [ -e /sys/fs/pstore/console-ramoops ]
then
cp /sys/fs/pstore/console-ramoops /data/vendor/dontpanic/last_kmsg
chown root:log /data/vendor/dontpanic/last_kmsg
chmod 0640 /data/vendor/dontpanic/last_kmsg
if [ -e /sys/fs/pstore/annotate-ramoops ]
then
cat /sys/fs/pstore/annotate-ramoops >> /data/vendor/dontpanic/last_kmsg
fi
fi
if [ -e /sys/fs/pstore/dmesg-ramoops-0 ]
then
cp /sys/fs/pstore/dmesg-ramoops-0 /data/vendor/dontpanic/apanic_console
chown root:log /data/vendor/dontpanic/apanic_console
chmod 0640 /data/vendor/dontpanic/apanic_console
if [ -e /sys/fs/pstore/annotate-ramoops ]
then
cat /sys/fs/pstore/annotate-ramoops >> /data/vendor/dontpanic/apanic_console
fi
rm /sys/fs/pstore/dmesg-ramoops-0
fi
kpgather

View file

@ -0,0 +1,43 @@
#!/vendor/bin/sh
#
# Copyright (c) 2015, Motorola Mobility LLC, All rights reserved.
#
# The purpose of this script is to read panic dumps to /data and dropbox
# for issue report
#
export PATH=/vendor/bin:/system/bin:$PATH
while getopts i op;
do
case $op in
i) ignore_apanic_logs=1;;
esac
done
if [ -z "$ignore_apanic_logs" ]; then
# read log from "kpan" partition to /data/dontpanic
kpreadwrite r
# write panic/wdt report to dropbox
kpgather
else
apanic_logcopy=$(getprop 'ro.vendor.bootreason')
if [ "$apanic_logcopy" == "coldboot" ]; then
return 0
fi
fi
if [ -e /dev/block/bootdevice/by-name/logs ] ; then
BL_logs_parti=/dev/block/bootdevice/by-name/logs
elif [ -e /dev/block/bootdevice/by-name/logfs ] ; then
BL_logs_parti=/dev/block/bootdevice/by-name/logfs
else
BL_logs_parti=
fi
if [ $BL_logs_parti ]
then
cat $BL_logs_parti > /data/vendor/dontpanic/BL_logs
chown root:log /data/vendor/dontpanic/BL_logs
chmod 0640 /data/vendor/dontpanic/BL_logs
fi

View file

@ -0,0 +1,12 @@
#!/vendor/bin/sh
#
# Copyright (c) 2016, Motorola Mobility LLC, All rights reserved.
#
# The purpose of this script is to get panic dump from pstore fs, and then
# save to emmc, and then reboot device.
#
export PATH=/vendor/bin:/system/bin:$PATH
# write log from pstore to "kpan" partition
kpreadwrite w

View file

@ -0,0 +1,329 @@
#!/vendor/bin/sh
#
# Copyright (c) 2013-2016, Motorola LLC All rights reserved.
#
# The purpose of this script is to compile information about the hardware
# versions of various devices on each unit. This is useful when searching
# through reported issues for correlations with certain hardware revisions.
# The information is collected from various locations in proc and sysfs (some
# of which are product-specific) and compiled into small, single-line text
# files in the userdata partition, one for each type of device. The format of
# these lines are as follows:
#
# MOTHREV-vX
# hw_name=XXXXX
# vendor_id=XXXXX
# hw_rev=XXXXX
# date=XXXXX
# lot_code=XXXXX
# fw_rev=XXXXX
# size=XXXXMB
# (components may also add additional fields to the ones above)
#
# The extact format of each field will be device-specific, but should be
# consistent across a particular hardware platform. Note that each revision
# data file is rewritten every time this script is called. This ensures that
# any future format changes to the revision files are picked up.
#
# While the method used to read the information should be consistent on a given
# platform, the specific path to a device's information may vary between
# products. The hardware_revisions.conf file provides a way to adjust those
# paths from the default.
#
export PATH=/vendor/bin:$PATH
# Output destination and permissions
OUT_PATH=/data/vendor/hardware_revisions
OUT_USR=system
OUT_GRP=system
OUT_PERM=0644
OUT_PATH_PERM=0755
# Default paths to hardware information
PATH_RAM=/sys/ram
PATH_NVM=/sys/block/mmcblk0/device
PATH_STORAGE=/sys/storage
PATH_SDCARD=/sys/block/mmcblk1/device
PATH_TOUCH_CLASS="/sys/class/touchscreen/"`cd /sys/class/touchscreen && ls */ic_ver | sed 's/ic_ver//g'`
PATH_TOUCH="/sys/bus/i2c/drivers/"`cd /sys/bus/i2c/drivers && ls */?-*/ic_ver | sed 's/ic_ver//g'`
PATH_TOUCH_SPI="/sys/bus/spi/drivers/"`cd /sys/bus/spi/drivers && ls */*.?/ic_ver | sed 's/ic_ver//g'`
PATH_DISPLAY=/sys/class/graphics/fb0
PATH_DISPLAY_DRM=/sys/class/drm/card0-DSI-1
PATH_PMIC=/sys/hardware_revisions/pmic
# Product-specific overrides
[ -e /vendor/etc/hardware_revisions.conf ] && . /vendor/etc/hardware_revisions.conf
#
# Clear out all revision data in this directory. If in the future we decide
# to remove a component, we want to make sure any old files are not present.
rm /data/vendor/hardware_revisions/*
#
# Append one piece of revision data to a given file. If a value is blank,
# then nothing will be written.
#
# $1 - tag
# $2 - value
# $3 - file to write
write_one_revision_data()
{
if [ -n "${2}" ]; then
VALUE="${2}"
echo "${1}=${VALUE}" >> ${3}
fi
}
#
# Generate the common data contained for
# all hardware peripherals
#
# $1 - file to write to
# $2 - name
# $3 - vendor ID
# $4 - hardware revision
# $5 - date
# $6 - lot code
# $7 - firmware revision
create_common_revision_data()
{
FILE="${1}"
echo "MOTHREV-v2" > ${FILE}
write_one_revision_data "hw_name" "${2}" ${FILE}
write_one_revision_data "vendor_id" "${3}" ${FILE}
write_one_revision_data "hw_rev" "${4}" ${FILE}
write_one_revision_data "date" "${5}" ${FILE}
write_one_revision_data "lot_code" "${6}" ${FILE}
write_one_revision_data "fw_rev" "${7}" ${FILE}
}
#
# Applies the appropriate file permissions to the
# hardware revision data file.
#
# $1 - file to write to
apply_revision_data_perms()
{
chown ${OUT_USR}.${OUT_GRP} "${1}"
chmod ${OUT_PERM} "${1}"
}
mkdir -p ${OUT_PATH}
chown ${OUT_USR}.${OUT_GRP} ${OUT_PATH}
chmod ${OUT_PATH_PERM} ${OUT_PATH}
#
# Compile ram
#
FILE="${OUT_PATH}/ram"
HNAME=
VEND=
HREV=
DATE=
FREV=
LOT_CODE=
INFO=
SIZE=
if [ -d "${PATH_RAM}" ] ; then
HNAME=`cat ${PATH_RAM}/type`
VEND=`cat ${PATH_RAM}/info`
VEND="${VEND%%:*:*}"
INFO="$(cat ${PATH_RAM}/mr5),$(cat ${PATH_RAM}/mr6),$(cat ${PATH_RAM}/mr7),\
$(cat ${PATH_RAM}/mr8)"
SIZE=`cat ${PATH_RAM}/size`
fi
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "" "" "" ""
write_one_revision_data "config_info" "${INFO}" "${FILE}"
write_one_revision_data "size" "${SIZE}" "${FILE}"
apply_revision_data_perms "${FILE}"
#
# Compile nvm
#
FILE="${OUT_PATH}/nvm"
HNAME=
VEND=
HREV=
DATE=
FREV=
LOT_CODE=
SIZE=
if [ -d "${PATH_NVM}" ] ; then
HNAME=`cat ${PATH_NVM}/type`
if [ -d "${PATH_STORAGE}" ] ; then
VEND=`cat ${PATH_STORAGE}/vendor`
SIZE=$((1024 * `cat ${PATH_STORAGE}/size | sed 's/[^0-9]//g'`))
else
VEND=`cat ${PATH_NVM}/manfid`
SIZE=$((1024 * `getprop ro.boot.storage | sed 's/[^0-9]//g'`))
fi
HREV=`cat ${PATH_NVM}/name`
DATE=`cat ${PATH_NVM}/date`
if [ -e ${PATH_NVM}/device_version -a -e ${PATH_NVM}/firmware_version ] ; then
FREV="$(cat ${PATH_NVM}/device_version),$(cat ${PATH_NVM}/firmware_version)"
else
FREV="$(cat ${PATH_NVM}/hwrev),$(cat ${PATH_NVM}/fwrev)"
fi
LOT_CODE="$(cat ${PATH_NVM}/csd)"
else
if [ -d "${PATH_STORAGE}" ] ; then
HNAME=`cat ${PATH_STORAGE}/type`
VEND=`cat ${PATH_STORAGE}/vendor`
HREV=`cat ${PATH_STORAGE}/model`
FREV=`cat ${PATH_STORAGE}/fw`
SIZE=$((1024 * `cat ${PATH_STORAGE}/size | sed 's/[^0-9]//g'`))
fi
fi
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}"
write_one_revision_data "size" "${SIZE}" "${FILE}"
apply_revision_data_perms "${FILE}"
#
# Compile ap
#
FILE="${OUT_PATH}/ap"
HNAME=
VEND=
HREV=
DATE=
FREV=
LOT_CODE=
if [ -e "/proc/cpuinfo" ]; then
PREVIFS="$IFS"
IFS="
"
for CPU in `cat /proc/cpuinfo` ; do
KEY="${CPU%:*}"
VAL="${CPU#*: }"
case "${KEY}" in
Processor*) HNAME="${VAL}" ;;
*implementer*) VEND="${VAL}" ;;
*variant*) HREV="${VAL}" ;;
*part*) HREV="${HREV},${VAL}" ;;
*revision*) HREV="${HREV},${VAL}" ;;
esac
done
IFS="$PREVIFS"
fi
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "" "" ""
apply_revision_data_perms "${FILE}"
#
# copy pmic data
#
if [ -e "/sys/hardware_revisions/pmic" ]; then
cat /sys/hardware_revisions/pmic > ${OUT_PATH}/pmic
else
create_common_revision_data "${OUT_PATH}/pmic" "" "" "" "" "" ""
fi
apply_revision_data_perms "${OUT_PATH}/pmic"
#
# copy display data
# PATH_DISPLAY_DRM is the sys file path name for DRM display driver
# PATH_DISPLAY is the path name for the old FB driver
#
FILE="${OUT_PATH}/display"
HNAME=
VEND=
HREV=
if [ -e ${PATH_DISPLAY_DRM}/panelName ] ; then
HNAME=`cat ${PATH_DISPLAY_DRM}/panelName`
VEND=`cat ${PATH_DISPLAY_DRM}/panelSupplier`
HREV=`cat ${PATH_DISPLAY_DRM}/panelVer`
else
HNAME=`cat ${PATH_DISPLAY}/panel_name`
VEND=`cat ${PATH_DISPLAY}/panel_supplier`
HREV=`cat ${PATH_DISPLAY}/panel_ver`
fi
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "" "" ""
apply_revision_data_perms "${FILE}"
#
# Compile touchscreen
#
FILE="${OUT_PATH}/touchscreen"
HNAME=
VEND=
HREV=
DATE=
FREV=
LOT_CODE=
# If there is the touchclass path, then access the nodes under the path to get the touch related
# information, otherwise access the path originally defined by the script.
if [ -e "${PATH_TOUCH_CLASS}/vendor" ]; then
HNAME=`cat ${PATH_TOUCH_CLASS}/vendor`
ICVER=`cat -e ${PATH_TOUCH_CLASS}/ic_ver`
if [ "$HNAME" ]; then
VEND="${ICVER##*'Product ID: '}"
VEND="${VEND%%\$*}"
FREV="${ICVER##*'Build ID: '}"
FREV="${FREV%%\$*}"
LOT_CODE="${ICVER##*'Config ID: '}"
LOT_CODE="${LOT_CODE%%\$*}"
fi
elif [ -e "${PATH_TOUCH_SPI}/name" ]; then
HNAME=`cat ${PATH_TOUCH_SPI}/name`
ICVER=`cat -e ${PATH_TOUCH_SPI}/ic_ver`
case "$HNAME" in
focaltech*)
VEND="${ICVER##*'Product ID: '}"
VEND="${VEND%%\$*}"
FREV="${ICVER##*'Build ID: '}"
FREV="${FREV%%\$*}"
;;
esac
else
if [ -e "${PATH_TOUCH}/name" ]; then
HNAME=`cat ${PATH_TOUCH}/name`
ICVER=`cat -e ${PATH_TOUCH}/ic_ver`
case "${HNAME}" in
melfas*)
VEND="Melfas"
HREV="${ICVER##*'HW Revision:'}"
HREV="${HREV%%\$*}"
FREV="${ICVER##*'Core FW ver:'}"
FREV="${FREV%%\$*}"
;;
cyttsp*)
VEND="${ICVER##*'Custom ID:'}"
VEND="${VEND%%\$*}"
VEND="Cypress,${VEND}"
HREV="${ICVER##*'TTSP Version:'}"
HREV="${HREV%%\$*}"
FREV="${ICVER##*'Application Version:'}"
FREV="${FREV%%\$*}"
;;
atmxt*)
VEND="Atmel"
HREV="${ICVER##*'Family ID:'}"
HREV1="${ICVER##*'Variant ID:'}"
HREV="${HREV%%\$*},${HREV1%%\$*}"
FREV="${ICVER##*'Version:'}"
FREV1="${ICVER##*'Build:'}"
FREV="${FREV%%\$*},${FREV1%%\$*}"
;;
synaptics*)
VEND="${ICVER##*'Product ID: '}"
VEND="${VEND%%\$*}"
FREV="${ICVER##*'Build ID: '}"
FREV="${FREV%%\$*}"
LOT_CODE="${ICVER##*'Config ID: '}"
LOT_CODE="${LOT_CODE%%\$*}"
;;
esac
fi
fi
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}"
apply_revision_data_perms "${FILE}"

View file

@ -0,0 +1,153 @@
#! /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`
qcrild_status=true
case "$baseband" in
"apq" | "sda" | "qcs" )
setprop ro.vendor.radio.noril yes
stop ril-daemon
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 ril-daemon
stop vendor.ril-daemon
start vendor.qcrild
else
start ril-daemon
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
start vendor.dataadpl
;;
"concurrent")
start vendor.dataqti
start vendor.dataadpl
;;
*)
;;
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

35
rootdir/bin/init.crda.sh Normal file
View file

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

View file

@ -0,0 +1,30 @@
#!/vendor/bin/sh
debug=$(getprop ro.boot.gbdebug 2> /dev/null)
bootmode=$(getprop ro.bootmode 2> /dev/null)
# If androidboot.gbdebug is set on command line, skip inserting
# the pre-installed modules.
if [ "$debug" == "1" ]; then
return 0
fi
insmod /vendor/lib/modules/greybus.ko
# Only support PTP and BATTERY in charge-only mode
if [ "$bootmode" == "charger" ]; then
insmod /vendor/lib/modules/gb-mods.ko
insmod /vendor/lib/modules/gb-battery.ko
insmod /vendor/lib/modules/gb-ptp.ko
return 0
fi
gbmods="/vendor/lib/modules/gb-*"
for mod in $gbmods
do
insmod $mod
done
insmod /vendor/lib/modules/v4l2-hal.ko
start vendor.mods_camd

34
rootdir/bin/init.mdm.sh Normal file
View file

@ -0,0 +1,34 @@
#! /vendor/bin/sh
# Copyright (c) 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 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.
#
baseband=`getprop ro.baseband`
if [ "$baseband" = "mdm" ] || [ "$baseband" = "mdm2" ]; then
start vendor.mdm_helper
fi

View file

@ -0,0 +1,36 @@
#!/vendor/bin/sh
block_by_name=/dev/block/bootdevice/by-name
utags=${block_by_name}/utags
utags_backup=${block_by_name}/utagsBackup
# Set correct permissions for UTAGS
/vendor/bin/chown -L root:system $utags
/vendor/bin/chown -L root:system $utags_backup
/vendor/bin/chmod -L 0660 $utags
/vendor/bin/chmod -L 0660 $utags_backup
# HOB/DHOB
hob=${block_by_name}/hob
dhob=${block_by_name}/dhob
/vendor/bin/chown -L radio:radio $hob
/vendor/bin/chown -L radio:radio $dhob
/vendor/bin/chmod -L 0660 $hob
/vendor/bin/chmod -L 0660 $dhob
# CLOGO
clogo=${block_by_name}/clogo
/vendor/bin/chown -L root:vendor_tcmd $clogo
/vendor/bin/chmod -L 0660 $clogo
#CID
cid=${block_by_name}/cid
/vendor/bin/chown -L root:vendor_tcmd $cid
/vendor/bin/chmod -L 0660 $cid
#BL logs
logs=${block_by_name}/logs
if [ -f $logs ]; then
/vendor/bin/chown -L root:system $logs
/vendor/bin/chmod -L 0640 $logs
fi

View file

@ -0,0 +1,151 @@
#!/vendor/bin/sh
PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin
export PATH
scriptname=${0##*/}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
# We take this from cpuinfo because hex "letters" are lowercase there
set -A cinfo `cat /proc/cpuinfo | sed -n "/Revision/p"`
hw=${cinfo[2]#?}
# Now "cook" the value so it can be matched against devtree names
m2=${hw%?}
minor2=${hw#$m2}
m1=${m2%?}
minor1=${m2#$m1}
if [ "$minor2" == "0" ]; then
minor2=""
if [ "$minor1" == "0" ]; then
minor1=""
fi
fi
setprop ro.vendor.hw.revision p${hw%??}$minor1$minor2
unset hw cinfo m1 m2 minor1 minor2
# reload UTAGS
utag_status=$(cat /proc/config/reload)
if [ "$utag_status" == "2" ]; then
notice "Utags are not ready, reloading"
echo 1 > /proc/config/reload
utag_status=$(cat /proc/config/reload)
[ "$utag_status" != "0" ] && notice "Utags failed to reload"
fi
# Export these for factory validation purposes
iccid=$(cat /proc/config/iccid/ascii 2>/dev/null)
if [ ! -z "$iccid" ]; then
setprop ro.vendor.mot.iccid $iccid
fi
unset iccid
cust_md5=$(cat /proc/config/cust_md5/ascii 2>/dev/null)
if [ ! -z "$cust_md5" ]; then
setprop ro.vendor.mot.cust_md5 $cust_md5
fi
unset cust_md5
# Get FTI data and catch old units with incorrect/missing UTAG_FTI
pds_fti=/mnt/vendor/persist/factory/fti
if [ -r $pds_fti ]; then
set -A fti $(od -A n -t x1 $pds_fti 2>/dev/null | tr '[A-F]' '[a-f]')
else
notice "Can not read FTI data in persist"
fi
# If UTAG_FTI is readable, compare checksums
# and if they mismatch, assume PDS is valid and overwrite UTAG
utag_fti=/proc/config/fti
if [ -r $utag_fti/ascii ]; then
set -A fti_utag $(cat ${utag_fti}/raw | sed 's/../& /g' | tr '[A-F]' '[a-f]')
# Byte 128 is total cksum, if nothing there, PDS data is invalid/missing
if [ ! -z "${fti[127]}" ]; then
# Make sure fti in UTAG is the same as in persist. Checksum comparison
if [ "${fti[126]}" != "${fti_utag[126]}" -o "${fti[127]}" != "${fti_utag[127]}" ]; then
notice "Copying FTI data from persist"
cat $pds_fti > ${utag_fti}/raw
fi
else
# If PDS data is invalid, take UTAG and hope it is correct
notice "Will use FTI from UTAG"
set -A fti $(od -A n -t x1 ${utag_fti}/ascii 2>/dev/null)
fi
else
notice "Missing FTI UTAG; copying from persist"
echo fti > /proc/config/all/new
cat $pds_fti > ${utag_fti}/raw
fi
# Read HW version from FTI data
hw_v1="\x${fti[35]}"
hw_v2="\x${fti[36]}"
hw_v3="\x${fti[37]}"
if [ "$hw_v3" == "\x30" ]; then
hw_v3=""
fi
hw_v4="\x${fti[38]}"
if [ "$hw_v4" == "\x30" ]; then
hw_v4=""
fi
setprop ro.vendor.hw.boardversion $(printf "$hw_v1$hw_v2$hw_v3$hw_v4")
# Now we have set fti var either from PDS or UTAG
# Get Last Test Station stamp from FTI
# and convert to user-friendly date, US format
# Real offsets for year/month/day are 63/64/65
# If the month/date look reasonable, data is probably OK.
mdate="Unknown"
y=0x${fti[63]}
m=0x${fti[64]}
d=0x${fti[65]}
let year=$y month=$m day=$d
# Invalid data will often have bogus month/date values
if [ $month -le 12 -a $day -le 31 -a $year -ge 12 ]; then
mdate=$month/$day/20$year
else
notice "Corrupt FTI data"
fi
setprop ro.vendor.manufacturedate $mdate
unset fti y m d year month day utag_fti pds_fti fti_utag mdate
t=$(getprop ro.build.tags)
if [[ "$t" != *release* ]]; then
for p in $(cat /proc/cmdline); do
if [ ${p%%:*} = "@" ]; then
v=${p#@:}; a=${v%=*}; b=${v#*=}
${a%%:*} ${a##*:} $b
fi
done
fi
unset p v a b t
# Cleanup stale/incorrect programmed model value
# Real values will never contain substrings matching "internal" device name
product=$(getprop ro.vendor.hw.device)
model=$(cat /proc/config/model/ascii 2>/dev/null)
if [ $? -eq 0 ]; then
if [ "${model#*_}" == "$product" -o "${model%_*}" == "$product" ]; then
notice "Clearing stale model value"
echo "" > /proc/config/model/raw
fi
fi
unset model product
# set ro.vendor.bootreason, which be used to indicate kpanic/wdt boot status.
# When ro.boot.last_powerup_reason is set, it denotes this is a 2nd reboot
# after kpanic/wdt, we set ro.bootreason as coldboot to copy logs.
# Otherwise, we would set ro.bootreason the same as ro.boot.bootreason.
# ro.boot.bootreason is restricted as of android p, so get it another way:
bootreason_kvp=$(cat /proc/bootinfo | grep "Last boot reason")
last_power_up=$(getprop ro.boot.last_powerup_reason)
if [ ! -z "$last_power_up" ]
then
setprop ro.vendor.bootreason "coldboot"
else
setprop ro.vendor.bootreason ${bootreason_kvp##* }
fi

View file

@ -0,0 +1,95 @@
#!/vendor/bin/sh
scriptname=${0##*/}
dbg_on=1
debug()
{
[ $dbg_on ] && echo "Debug: $*"
}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
error_and_leave()
{
local err_msg
local err_code=$1
case $err_code in
1) err_msg="Error: No response";;
2) err_msg="Error: Skip to overwrite xtalk and offset data in factory mode";;
3) err_msg="Error: Calibration data file $2 does not exist";;
4) err_msg="Error: Calibration sysfs path $2 does not show up";;
esac
notice "$err_msg"
exit $err_code
}
# Change laser sysfs file ownership
laser_class_path=/sys/devices/virtual/laser
laser_product_string=$(ls $laser_class_path)
laser_product_path=$laser_class_path/$laser_product_string
for laser_file in $laser_product_path/*; do
if [ -f "$laser_file" ]; then
chown root:system $laser_file
fi
done
if [ ! -d $laser_product_path ]; then
error_and_leave 4 "'$laser_product_path'"
fi
# Change laser input sysfs file ownership
laser_input_root=/sys/devices/virtual/input
laser_input_list=$(ls $laser_input_root)
for laser_input_dir in $laser_input_list; do
if [ -f "$laser_input_root/$laser_input_dir/calibration_data" ]; then
laser_calib_file=$laser_input_root/$laser_input_dir/calibration_data
chown root:system $laser_calib_file
fi
if [ -f "$laser_input_root/$laser_input_dir/xtalk" ]; then
laser_xtalk_file=$laser_input_root/$laser_input_dir/xtalk
chown root:system $laser_xtalk_file
fi
if [ -f "$laser_input_root/$laser_input_dir/offset" ]; then
laser_offset_file=$laser_input_root/$laser_input_dir/offset
chown root:system $laser_offset_file
fi
done
if [ -z "$laser_calib_file" ]; then
laser_calib_file=$laser_product_path/calibration_data
fi
if [ -z "$laser_xtalk_file" ]; then
laser_xtalk_file=$laser_product_path/xtalk
fi
if [ -z "$laser_offset_file" ]; then
laser_offset_file=$laser_product_path/offset
fi
# Load calibration data
calib_data_file=/mnt/vendor/persist/camera/focus/cal_data
if [ -f $calib_data_file ]; then
chown root:vendor_tcmd $calib_data_file
chmod 660 $calib_data_file
if [ -z "$laser_calib_file" ]; then
error_and_leave 4 "'$laser_calib_file'"
else
cat $calib_data_file > $laser_calib_file
notice "laser calibration data updating complete"
fi
else
notice "laser calib_data_file '$calib_data_file' does not exist"
fi
bootmode=$(getprop ro.bootmode 2> /dev/null)
if [ $bootmode != "mot-factory" ]; then
# Enable smudge mode
echo 1 > $laser_product_path/smudge_correction_mode
notice "laser smudge mode enabled"
else
# Disable smudge mode
echo 0 > $laser_product_path/smudge_correction_mode
notice "factory-mode boot, disable laser smudge mode"
fi

View file

@ -0,0 +1,37 @@
#!/vendor/bin/sh
getlogs_opts="/data/vendor/bug2go/getlogs.opts"
mdlog_user_opts="/data/vendor/diag_mdlog/user3.opts"
qdb_file="/firmware/image/qdsp6m.qdb"
qdb_file_alt="/vendor/firmware_mnt/image/qdsp6m.qdb"
arg_output="/data/vendor/bug2go/modem"
log_file=$arg_output/"getlogs.log"
mkdir $arg_output
# The output arg is fixed,
# use the cutomized opts from file if it exists
if [ -f $getlogs_opts ]; then
args=`cat $getlogs_opts`
# allow opts_file to be used only once
mv -f $getlogs_opts $arg_output/
else
# default value
args="-b 209715200"
fi
diag_mdlog-getlogs -o $arg_output $args &> $log_file
if [ -f $mdlog_user_opts ]; then
cp $mdlog_user_opts $arg_output/
fi
# copy qdsp6m.qdb
if [ -f $qdb_file ]; then
cp $qdb_file $arg_output/
else
# copy qdsp6m.qdb from alternate folder
if [ -f $qdb_file_alt ]; then
cp $qdb_file_alt $arg_output/
fi
fi

View file

@ -0,0 +1,9 @@
#!/vendor/bin/sh
# All modules that depend on conditions or need extra parameters
# should go here.
buildtype=$(getprop ro.build.type)
if [ $buildtype = "userdebug" ]; then
insmod /vendor/lib/modules/watchdogtest.ko
fi

View file

@ -0,0 +1,59 @@
#!/vendor/bin/sh
PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin
export PATH
scriptname=${0##*/}
debug()
{
echo "$*"
}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
get_history_value()
{
local __result=$1
local history_count=0
local value=""
local IFS=','
shift 1
for arg in ${@}; do
value=$value",$arg"
history_count=$(($history_count + 1))
if [ $history_count -eq 3 ]; then
break
fi
done
eval $__result="$value"
debug "value:$value history_count:$history_count"
}
set_reboot_bootseq_history()
{
#get current boot sequence
if [ ! -f /proc/bootinfo ]; then
notice "Error:/proc/bootinfo is not ready"
return
fi
boot_seq_line=`grep BOOT_SEQ /proc/bootinfo | sed 's/ //g'`
boot_seq=${boot_seq_line##*:}
notice "BOOT_SEQ is $boot_seq"
shutdown_time=`date +%s`
#get previous value of bootseq history
bootseq_history=`getprop persist.vendor.reboot.bootseq.history`
notice "booseq_history is $bootseq_history"
get_history_value valid_history_value $bootseq_history
setprop persist.vendor.reboot.bootseq.history "$boot_seq.$shutdown_time$valid_history_value"
new_bootseq_history=`getprop persist.vendor.reboot.bootseq.history`
notice "set persist.vendor.reboot.bootseq.history $new_bootseq_history"
}
set_reboot_bootseq_history

View file

@ -0,0 +1,558 @@
#!/vendor/bin/sh
PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin
export PATH
while getopts cds op;
do
case $op in
c) cal_on=1;;
d) dbg_on=1;;
s) dump_statistics=1;;
esac
done
shift $(($OPTIND-1))
# Globals
scriptname=${0##*/}
touch_class_path=/sys/class/touchscreen
touch_status_prop=
touch_update_prop=
touch_calibration_done_version=persist.vendor.touch.calibration
touch_vendor=
touch_path=
panel_path=/sys/devices/virtual/graphics/fb0
oem_panel_script=/vendor/bin/init.oem.panel.sh
dlkm_path=/vendor/lib/modules
device_property=ro.vendor.hw.device
hwrev_property=ro.vendor.hw.revision
firmware_path=/vendor/firmware
factory_property=ro.vendor.build.motfactory
bootmode_property=ro.bootmode
let dec_cfg_id_boot=0
let dec_cfg_id_latest=0
typeset -l product_id
panel_ver=
supplier=
property=
config_id=
build_id=
hwrev_id=
str_cfg_id_new=
str_cfg_id_boot=
str_cfg_id_latest=
build_id_new=
debug()
{
[ $dbg_on ] && echo "Debug: $*"
}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
sanity_check()
{
read_touch_property flashprog || return 1
[[ ( -z "$property" ) || ( "$property" == "1" ) ]] && return 2
read_touch_property productinfo || return 1
[[ ( -z "$property" ) || ( "$property" == "0" ) ]] && return 2
read_touch_property buildid || return 1
config_id=${property#*-}
[[ ( -z "$config_id" ) || ( "$config_id" == "0" ) ]] && return 2
build_id=${property%-*}
[[ ( -z "$build_id" ) || ( "$build_id" == "0" ) ]] && return 2
return 0
}
error_msg()
{
local err_msg
local err_code=$1
case $err_code in
1) err_msg="Error: No response from touch IC";;
2) err_msg="Error: Cannot read property $2";;
3) err_msg="Error: No matching firmware file found";;
4) err_msg="Error: Touch IC is in bootloader mode";;
5) err_msg="Error: Touch provides no reflash interface";;
6) err_msg="Error: Touch driver is not running";;
7) err_msg="Warning: Touch firmware is not the latest";;
8) err_msg="Info: Touch class does not exist";;
9) err_msg="Error: Touch IC is not ready to flash";;
esac
notice "$err_msg"
}
error_and_leave()
{
local err_code=$1
local touch_status="unknown"
error_msg $err_code
case $err_code in
1|4) touch_status="dead";;
5|6|8) touch_status="absent";;
esac
# perform sanity check and declare touch ready if error is not fatal
if [ "$touch_status" == "unknown" ]; then
sanity_check
case "$?" in
0) touch_status="ready";;
2) touch_status="dead";;
1) touch_status="absent";;
esac
fi
# perform recovery if touch is declared dead
if [ "$touch_status" == "dead" ]; then
notice "Touch needs to go through recovery!!!"
reboot_cnt=$(getprop $touch_status_prop 2>/dev/null)
[ -z "$reboot_cnt" ] && reboot_cnt=0
debug "current reboot counter [$reboot_cnt]"
fi
setprop $touch_status_prop $touch_status
notice "property [$touch_status_prop] set to [`getprop $touch_status_prop`]"
if [ "$touch_status" == "dead" ]; then
notice "Touch is not responding; no further action!!!"
#if [ $((reboot_cnt)) -lt 2 ]; then
# notice "Touch is not working; rebooting..."
# debug "sleep 3s to allow touch-dead-sh service to run"
# sleep 3
# [ -z "$dbg_on" ] && setprop sys.powerctl reboot
#else
# notice "Although touch is not working, no more reboots"
#fi
fi
exit $err_code
}
prepend()
{
local list=""
local prefix=$1
shift
for name in $*; do
list="$list$prefix/$name "
done
echo $list
}
dump_statistics()
{
debug "dumping touch statistics"
cat $touch_path/ic_ver
[ -f $touch_path/stats ] && cat $touch_path/stats
return 0
}
wait_for_poweron()
{
local wait_nomore
local readiness
local count
debug "wait until driver reports <ready to flash>..."
wait_nomore=60
count=0
while true; do
readiness=$(cat $touch_path/poweron)
if [ "$readiness" == "1" ]; then
debug "ready to flash!!!"
break;
fi
count=$((count+1))
[ $count -eq $wait_nomore ] && break
sleep 1
debug "not ready; keep waiting..."
done
if [ $count -eq $wait_nomore ]; then
error_msg 9
return 1
fi
return 0
}
setup_permissions()
{
local bootmode=$(getprop $bootmode_property 2> /dev/null)
local selinux=$(getprop ro.boot.selinux 2> /dev/null)
local key_path
local key_files
local entry
if [[ ("$selinux" == "permissive") || ("$bootmode" == "mot-factory") ]]; then
debug "loosen permissions to $touch_vendor files"
case $touch_vendor in
samsung) key_path="/sys/devices/virtual/sec/sec_ts/"
key_files=$(ls $key_path 2>/dev/null)
# Set optional permissions to LSI touch tests
[ -f $touch_path/size ] && chown root:vendor_tcmd $touch_path/size
[ -f $touch_path/address ] && chown root:vendor_tcmd $touch_path/address
[ -f $touch_path/write ] && chown root:vendor_tcmd $touch_path/write
;;
synaptics) key_path=$touch_path
key_files=$(prepend f54 `ls $touch_path/f54/ 2>/dev/null`)
key_files=$key_files"reporting query stats";;
focaltech) key_path="/proc/"
key_files="ftxxxx-debug";;
ilitek) key_path="/proc/ilitek"
key_files="ioctl";;
goodix) key_path="/proc/"
key_files="gmnode"
if [[ "$touch_instance" == "GTx5" ]] || [[ "$touch_instance" == "GTx8" ]]; then
key_path="/dev/"
key_files="gtp_tools"
fi
;;
esac
for entry in $key_files; do
chmod 0666 $key_path/$entry
debug "change permissions of $key_path/$entry"
done
fi
# Set permissions to enable factory touch tests
chown root:vendor_tcmd $touch_path/drv_irq
chown root:vendor_tcmd $touch_path/hw_irqstat
chown root:vendor_tcmd $touch_path/reset
# Set permissions to allow Bug2Go access to touch statistics
chown root:log $touch_path/stats
# Erase is optional
[ -f $touch_path/erase_all ] && chown root:vendor_tcmd $touch_path/erase_all
}
read_touch_property()
{
property=""
debug "retrieving property: [$touch_path/$1]"
property=$(cat $touch_path/$1 2> /dev/null)
debug "touch property [$1] is: [$property]"
[ -z "$property" ] && return 1
return 0
}
read_panel_property()
{
property=""
debug "retrieving panel property: [$panel_path/$1]"
property=$(cat $panel_path/$1 2> /dev/null)
debug "panel property [$1] is: [$property]"
[ -z "$property" ] && return 1
return 0
}
find_latest_config_id()
{
local fw_mask=$1
local skip_fields=$2
local dec max z str_hex i
str_cfg_id_latest=""
debug "scanning dir for files matching [$fw_mask]"
let dec=0; max=0;
for file in $(ls $fw_mask 2>/dev/null); do
z=$file
i=0
while [ ! $i -eq $skip_fields ]; do
z=${z#*-}
i=$((i+1))
done
str_hex=${z%%-*};
let dec=0x$str_hex
if [ $dec -gt $max ]; then
let max=$dec; dec_cfg_id_latest=$dec;
str_cfg_id_latest=$str_hex
fi
done
[ -z "$str_cfg_id_latest" ] && return 1
return 0
}
find_best_match()
{
local hw_mask=$1
local panel_supplier=$2
local skip_fields fw_mask
while [ ! -z "$hw_mask" ]; do
if [ "$hw_mask" == "-" ]; then
hw_mask=""
fi
if [ ! -z "$panel_supplier" ]; then
skip_fields=3
fw_mask="$touch_vendor-$panel_supplier-$touch_product_id-*-$product_id$hw_mask.*"
else
skip_fields=2
fw_mask="$touch_vendor-$touch_product_id-*-$product_id$hw_mask.*"
fi
find_latest_config_id "$fw_mask" "$skip_fields" && break
hw_mask=${hw_mask%?}
done
[ -z "$str_cfg_id_latest" ] && return 1
if [ -z "$panel_supplier" ]; then
firmware_file=$(ls $touch_vendor-$touch_product_id-$str_cfg_id_latest-*-$product_id$hw_mask.*)
else
firmware_file=$(ls $touch_vendor-$panel_supplier-$touch_product_id-$str_cfg_id_latest-*-$product_id$hw_mask.*)
fi
notice "Firmware file for upgrade $firmware_file"
return 0
}
query_touch_info()
{
read_touch_property flashprog
bl_mode=$property
debug "bl mode: $bl_mode"
while true; do
read_touch_property productinfo
touch_product_id=$property
if [ "$touch_product_id" ]; then
# driver might not be ready yet, wait
debug "touch product id: $touch_product_id"
break
fi
sleep 1
done
if [ "$touch_product_id" == "0" ]; then
debug "touch ic reports invalid product id"
error_msg 1
return 1
fi
read_touch_property buildid
str_cfg_id_boot=${property#*-}
let dec_cfg_id_boot=0x$str_cfg_id_boot
debug "touch config id: $str_cfg_id_boot"
build_id_boot=${property%-*}
debug "touch build id: $build_id_boot"
return 0
}
query_panel_info()
{
supplier=""
read_touch_property "panel_supplier"
[ -z "$property" ] && read_panel_property "panel_supplier"
supplier=$property
if [ "$supplier" ]; then
read_panel_property "controller_drv_ver"
panel_ver=${property#${property%?}}
debug "panel supplier: $supplier, ver $panel_ver"
else
debug "driver does not report panel supplier"
fi
}
load_driver_modules()
{
if [ "$supplier" ]; then
if [ -f $oem_panel_script ]; then
debug "load_driver_modules()"
$oem_panel_script -s $supplier
fi
fi
}
search_firmware_file()
{
local match_not_found
match_not_found=1
if [ "$supplier" ]; then
for pattern in "$supplier$panel_ver" "$supplier"; do
debug "search for best hw revision match with supplier"
find_best_match "-$hwrev_id" "$pattern"
match_not_found=$?
[ "$match_not_found" == "0" ] && break
done
fi
if [ "$match_not_found" != "0" ]; then
debug "search for best hw revision match without supplier"
find_best_match "-$hwrev_id"
if [ "$?" != "0" ]; then
error_msg 3
return 1
fi
fi
return 0
}
reload_modules()
{
local rc
local module
for module in $*; do
[ -f $dlkm_path/$module.ko ] || continue
notice "Reloading [$module.ko]..."
rmmod $module
rc=$?
[ $rc != 0 ] && notice "Unloading [$module] failed: $rc"
insmod $dlkm_path/$module.ko
rc=$?
[ $rc != 0 ] && notice "Loading [$module] failed: $rc"
done
}
run_firmware_upgrade()
{
local recovery
recovery=0
if [ "$bl_mode" == "1" ] || [ "$build_id_boot" == "0" ]; then
recovery=1
notice "Initiating touch firmware recovery"
notice " bl mode = $bl_mode"
notice " build id = $build_id_boot"
fi
if [ $dec_cfg_id_boot -ne $dec_cfg_id_latest ] || [ "$recovery" == "1" ]; then
wait_for_poweron
debug "forcing firmware upgrade"
echo 1 > $touch_path/forcereflash
debug "sending reflash command"
echo $firmware_file > $touch_path/doreflash
read_touch_property flashprog
if [ "$?" != "0" ]; then
error_msg 1
return 1
fi
bl_mode=$property
if [ "$bl_mode" == "1" ]; then
error_msg 4
return 1
fi
read_touch_property buildid
if [ "$?" != "0" ]; then
error_msg 1
return 1
fi
str_cfg_id_new=${property#*-}
build_id_new=${property%-*}
notice "Touch firmware config id at boot time $str_cfg_id_boot"
notice "Touch firmware config id in the file $str_cfg_id_latest"
notice "Touch firmware config id currently programmed $str_cfg_id_new"
[ "$str_cfg_id_latest" != "$str_cfg_id_new" ] && error_msg 7 && return 1
# indicate that update has been completed
setprop $touch_update_prop "completed"
notice "property [$touch_update_prop] set to [`getprop $touch_update_prop`]"
if [ "$touch_vendor" == "synaptics" ]; then
notice "forcing F54 registers update"
echo 1 > $touch_path/f54/force_update
notice "need to reload F54"
reload_modules "synaptics_dsx_test_reporting"
fi
fi
return 0
}
do_sec_calibration()
{
local __result=$1
local info
local rc
sleep 3
echo run_force_calibration > /sys/devices/virtual/sec/tsp/cmd
rc=$(cat /sys/devices/virtual/sec/tsp/cmd_result)
[ "$rc" != "run_force_calibration:OK" ] && return 1
info=$(cat $touch_class_path/$touch_instance/buildid)
if [ -f $touch_class_path/$touch_instance/mutual_range ]; then
info=$info";$(cat $touch_class_path/$touch_instance/mutual_range)"
else
notice "mutual range unavailable"
fi
info=$info";forced"
eval "$__result='$info'"
return 0
}
do_calibration()
{
local rc
local cal_info
local factory_build
local cal_version
factory_build=$(getprop $factory_property 2> /dev/null)
cal_info=$(getprop $touch_calibration_done_version 2> /dev/null)
# new calibration info comes with mutual range and probably was enforced
if [[ ("$cal_info" && "${cal_info%%;*}" != "$cal_info") || ("$cal_info" == "enable-autocalibration") ]]; then
cal_version=${cal_info%%;*}
cal_version=${cal_version#*-}
debug "cal_version is '$cal_version'"
fi
if [[ ("$factory_build" != 1 || "$cal_version" != "autocalibration") ]]; then
debug "factory='$factory_build', cal_version='$cal_version', latest='$str_cfg_id_latest'"
return
fi
notice "Force touch calibration"
case $touch_vendor in
samsung) do_sec_calibration cal_info
rc=$?
debug "cal_info='$cal_info'"
;;
esac
notice "Touch calibration result $rc"
[ $rc == 0 ] && setprop $touch_calibration_done_version $cal_info
}
process_touch_instance()
{
touch_vendor=$(cat $touch_class_path/$touch_instance/vendor)
debug "touch vendor [$touch_vendor]"
touch_path=/sys$(cat $touch_class_path/$touch_instance/path)
debug "sysfs touch path: $touch_path"
touch_status_prop=vendor.hw.touch.$touch_instance.status
touch_update_prop=vendor.hw.touch.$touch_instance.update
if [ ! -f $touch_path/doreflash ] ||
[ ! -f $touch_path/poweron ] ||
[ ! -f $touch_path/flashprog ] ||
[ ! -f $touch_path/productinfo ] ||
[ ! -f $touch_path/buildid ]; then
error_msg 5
return
fi
if [ $dump_statistics ]; then
dump_statistics
fi
notice "Checking touch ID [$touch_instance] FW upgrade"
touch_vendor=$(cat $touch_class_path/$touch_instance/vendor)
debug "touch vendor [$touch_vendor]"
touch_path=/sys$(cat $touch_class_path/$touch_instance/path)
debug "sysfs touch path: $touch_path"
query_touch_info
query_panel_info
search_firmware_file
[ "$?" == "0" ] && run_firmware_upgrade
do_calibration
notice "Touch firmware is up to date"
setprop $touch_status_prop "ready"
notice "property [$touch_status_prop] set to [`getprop $touch_status_prop`]"
notice "Handling touch ID [$touch_instance] permissions"
setup_permissions
}
# Main starts here
query_panel_info
load_driver_modules
[ -d $touch_class_path ] || error_and_leave 8
debug "sysfs panel path: $panel_path"
product_id=$(getprop $device_property 2> /dev/null)
[ -z "$product_id" ] && error_and_leave 2 $device_property
product_id=${product_id%-*}
product_id=${product_id%_*}
debug "product id: $product_id"
hwrev_id=$(getprop $hwrev_property 2> /dev/null)
[ -z "$hwrev_id" ] && notice "hw revision undefined"
debug "hw revision: $hwrev_id"
cd $firmware_path
# Run asynchronously for each instance
for touch_instance in $(ls $touch_class_path); do
process_touch_instance &
done
# check if need to reload modules
wait
debug "all background processes completed"
return 0

435
rootdir/bin/init.mmi.usb.sh Normal file
View file

@ -0,0 +1,435 @@
#!/vendor/bin/sh
# Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum, Inc. 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.
#
#
# Allow unique persistent serial numbers for devices connected via usb
# User needs to set unique usb serial number to persist.usb.serialno and
# if persistent serial number is not set then Update USB serial number if
# passed from command line
#
target=`getprop ro.board.platform`
usb_action=`getprop vendor.usb.mmi-usb-sh.action`
echo "mmi-usb-sh: action = \"$usb_action\""
sys_usb_config=`getprop vendor.usb.config`
tcmd_ctrl_adb ()
{
ctrl_adb=`getprop vendor.tcmd.ctrl_adb`
echo "mmi-usb-sh: vendor.tcmd.ctrl_adb = $ctrl_adb"
case "$ctrl_adb" in
"0")
if [[ "$sys_usb_config" == *adb* ]]
then
# *** ALWAYS expecting adb at the end ***
new_usb_config=${sys_usb_config/,adb/}
echo "mmi-usb-sh: disabling adb ($new_usb_config)"
setprop persist.vendor.usb.config $new_usb_config
setprop vendor.usb.config $new_usb_config
setprop persist.vendor.factory.allow_adb 0
fi
;;
"1")
if [[ "$sys_usb_config" != *adb* ]]
then
# *** ALWAYS expecting adb at the end ***
new_usb_config="$sys_usb_config,adb"
echo "mmi-usb-sh: enabling adb ($new_usb_config)"
setprop persist.vendor.usb.config $new_usb_config
setprop vendor.usb.config $new_usb_config
setprop persist.vendor.factory.allow_adb 1
fi
;;
esac
exit 0
}
case "$usb_action" in
"")
;;
"vendor.tcmd.ctrl_adb")
tcmd_ctrl_adb
;;
esac
# soc_ids for 8937
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
case "$target" in
"msm8937")
setprop vendor.usb.rps_mask 0
setprop vendor.rmnet_vnd.rps_mask 0
case "$soc_id" in
"294" | "295")
setprop vendor.usb.rps_mask 40
;;
esac
case "$soc_id" in
"313" | "320")
qcom_usb_config="diag,serial_smd,rmnet_ipa"
qcom_adb_usb_config="diag,serial_smd,rmnet_ipa,adb"
bpt_usb_config="diag,serial_smd,rmnet_bam_ipa"
bpt_adb_usb_config="diag,serial_smd,rmnet_bam_ipa,adb"
setprop vendor.usb.rndis.func.name "rndis_bam"
setprop vendor.usb.rmnet.inst.name "rmnet"
setprop vendor.usb.dpl.inst.name "dpl"
;;
*)
qcom_usb_config="diag,serial_smd,rmnet_qti_bam"
qcom_adb_usb_config="diag,serial_smd,rmnet_qti_bam,adb"
bpt_usb_config="diag,serial_smd,rmnet"
bpt_adb_usb_config="diag,serial_smd,rmnet,adb"
;;
esac
;;
"msm8953")
#Set RPS Mask for Tethering to CPU4
setprop vendor.usb.rps_mask 10
setprop vendor.rmnet_vnd.rps_mask 0
if [ -d /config/usb_gadget/g1 ]; then
qcom_usb_config="diag,serial_cdev,rmnet"
qcom_adb_usb_config="diag,serial_cdev,rmnet,adb"
bpt_usb_config="diag,serial,rmnet"
bpt_adb_usb_config="diag,serial,rmnet,adb"
setprop vendor.usb.rndis.func.name "rndis_bam"
setprop vendor.usb.rmnet.func.name "rmnet_bam"
else
qcom_usb_config="diag,serial_smd,serial_tty,rmnet_bam,mass_storage"
qcom_adb_usb_config="diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb"
bpt_usb_config="diag,serial_smd,serial_tty,rmnet"
bpt_adb_usb_config="diag,serial_smd,serial_tty,rmnet,adb"
fi
setprop vendor.usb.controller "7000000.dwc3"
;;
"msm8996")
#Set RPS Mask for Tethering to CPU2
setprop vendor.usb.rps_mask 2
setprop vendor.rmnet_vnd.rps_mask 0f
qcom_usb_config="diag,serial_cdev,serial_tty,rmnet_bam,mass_storage"
qcom_adb_usb_config="diag,serial_cdev,serial_tty,rmnet_bam,mass_storage,adb"
bpt_usb_config="diag,serial_cdev,serial_tty,rmnet"
bpt_adb_usb_config="diag,serial_cdev,serial_tty,rmnet,adb"
setprop vendor.usb.controller "6a00000.dwc3"
;;
"msm8998")
#Set RPS Mask for Tethering to CPU2
setprop vendor.usb.rps_mask 70
setprop vendor.rmnet_vnd.rps_mask 0d
qcom_usb_config="diag,serial_cdev,rmnet"
qcom_adb_usb_config="diag,serial_cdev,rmnet,adb"
bpt_usb_config="diag,serial,rmnet"
bpt_adb_usb_config="diag,serial,rmnet,adb"
setprop vendor.usb.controller "a800000.dwc3"
setprop vendor.usb.rndis.func.name "gsi"
setprop vendor.usb.rmnet.func.name "gsi"
setprop vendor.usb.hcd_mask 80
;;
"sdm660")
#Set RPS Mask for Tethering to CPU2
setprop vendor.usb.rps_mask 30
setprop vendor.rmnet_vnd.rps_mask 4
qcom_usb_config="diag,serial_cdev,rmnet"
qcom_adb_usb_config="diag,serial_cdev,rmnet,adb"
bpt_usb_config="diag,serial,rmnet"
bpt_adb_usb_config="diag,serial,rmnet,adb"
setprop vendor.usb.controller "a800000.dwc3"
setprop vendor.usb.rndis.func.name "rndis_bam"
setprop vendor.usb.rmnet.func.name "rmnet_bam"
;;
"sdm845")
qcom_usb_config="diag,serial_cdev,rmnet"
qcom_adb_usb_config="diag,serial_cdev,rmnet,adb"
bpt_usb_config="diag,serial,rmnet"
bpt_adb_usb_config="diag,serial,rmnet,adb"
setprop vendor.usb.controller "a600000.dwc3"
setprop vendor.usb.rndis.func.name "gsi"
setprop vendor.usb.rmnet.func.name "gsi"
;;
"sdm710")
qcom_usb_config="diag,serial_cdev,rmnet"
qcom_adb_usb_config="diag,serial_cdev,rmnet,adb"
bpt_usb_config="diag,serial,rmnet"
bpt_adb_usb_config="diag,serial,rmnet,adb"
setprop vendor.usb.controller "a600000.dwc3"
setprop vendor.usb.rndis.func.name "gsi"
setprop vendor.usb.rmnet.func.name "gsi"
;;
"sm6150")
qcom_usb_config="diag,serial_cdev,rmnet"
qcom_adb_usb_config="diag,serial_cdev,rmnet,adb"
bpt_usb_config="diag,serial,rmnet"
bpt_adb_usb_config="diag,serial,rmnet,adb"
setprop vendor.usb.controller "a600000.dwc3"
setprop vendor.usb.rndis.func.name "gsi"
setprop vendor.usb.rmnet.func.name "gsi"
setprop vendor.usb.hcd_mask 80
setprop vendor.usb.rps_mask 40
;;
"trinket")
qcom_usb_config="diag,serial_cdev,rmnet"
qcom_adb_usb_config="diag,serial_cdev,rmnet,adb"
bpt_usb_config="diag,serial,rmnet"
bpt_adb_usb_config="diag,serial,rmnet,adb"
setprop vendor.usb.controller "4e00000.dwc3"
setprop vendor.usb.rndis.func.name "gsi"
setprop vendor.usb.rmnet.func.name "gsi"
;;
"kona")
qcom_usb_config="diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet"
qcom_adb_usb_config="diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet,adb"
bpt_usb_config="diag,serial,rmnet"
bpt_adb_usb_config="diag,serial,rmnet,adb"
setprop vendor.usb.controller "a600000.dwc3"
setprop vendor.usb.rndis.func.name "gsi"
setprop vendor.usb.rmnet.func.name "gsi"
;;
"lito")
qcom_usb_config="diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet"
qcom_adb_usb_config="diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet,adb"
bpt_usb_config="diag,serial,rmnet"
bpt_adb_usb_config="diag,serial,rmnet,adb"
setprop vendor.usb.controller "a600000.dwc3"
setprop vendor.usb.rndis.func.name "gsi"
setprop vendor.usb.rmnet.func.name "gsi"
;;
"bengal")
qcom_usb_config="diag,serial_cdev,rmnet"
qcom_adb_usb_config="diag,serial_cdev,rmnet,adb"
bpt_usb_config="diag,serial,rmnet"
bpt_adb_usb_config="diag,serial,rmnet,adb"
setprop vendor.usb.controller "4e00000.dwc3"
setprop vendor.usb.rndis.func.name "gsi"
setprop vendor.usb.rmnet.func.name "gsi"
;;
esac
## This is needed to switch to the qcom rndis driver.
diag_extra=`getprop persist.vendor.usb.config.extra`
if [ "$diag_extra" == "" ]; then
setprop persist.vendor.usb.config.extra none
fi
#
# Allow USB enumeration with default PID/VID
#
usb_config=`getprop persist.vendor.usb.config`
mot_usb_config=`getprop persist.vendor.mot.usb.config`
bootmode=`getprop ro.bootmode`
buildtype=`getprop ro.build.type`
securehw=`getprop ro.boot.secure_hardware`
cid=`getprop ro.vendor.boot.cid`
diagmode=`getprop persist.vendor.radio.usbdiag`
echo "mmi-usb-sh: persist usb configs = \"$usb_config\", \"$mot_usb_config\", \"$diagmode\""
phonelock_type=`getprop persist.sys.phonelock.mode`
usb_restricted=`getprop persist.sys.usb.policylocked`
if [ "$securehw" == "1" ] && [ "$buildtype" == "user" ] && [ "$(($cid))" != 0 ]
then
if [ "$usb_restricted" == "1" ]
then
echo 1 > /sys/class/android_usb/android0/secure
else
case "$phonelock_type" in
"1" )
echo 1 > /sys/class/android_usb/android0/secure
;;
* )
echo 0 > /sys/class/android_usb/android0/secure
;;
esac
fi
fi
# ##DIAG# mode option
case "$diagmode" in
"1" )
case "$usb_config" in
"$bpt_usb_config" | "$bpt_adb_usb_config" )
;;
* )
case "$securehw" in
"1" )
setprop persist.vendor.usb.config $bpt_usb_config
;;
*)
setprop persist.vendor.usb.config $bpt_adb_usb_config
;;
esac
;;
esac
exit 0
;;
* )
# Do nothing. USB enumeration will be set by bootmode
;;
esac
case "$bootmode" in
"bp-tools" )
case "$usb_config" in
"$bpt_usb_config" | "$bpt_adb_usb_config" )
;;
* )
case "$securehw" in
"1" )
setprop persist.vendor.usb.config $bpt_usb_config
setprop persist.vendor.usb.bp-tools.config $bpt_usb_config
setprop persist.vendor.usb.bp-tools.func $bpt_usb_config
;;
*)
setprop persist.vendor.usb.config $bpt_adb_usb_config
setprop persist.vendor.usb.bp-tools.config $bpt_adb_usb_config
setprop persist.vendor.usb.bp-tools.func $bpt_adb_usb_config
;;
esac
;;
esac
;;
"mot-factory" )
allow_adb=`getprop persist.vendor.factory.allow_adb`
case "$allow_adb" in
"1")
if [ "$usb_config" != "usbnet,adb" ]
then
setprop persist.vendor.usb.config usbnet,adb
setprop persist.vendor.usb.mot-factory.config usbnet,adb
setprop persist.vendor.usb.mot-factory.func usbnet,adb
fi
;;
*)
if [ "$usb_config" != "usbnet" ]
then
setprop persist.vendor.usb.config usbnet
setprop persist.vendor.usb.mot-factory.config usbnet
setprop persist.vendor.usb.mot-factory.func usbnet
fi
;;
esac
# Disable Host Mode LPM for Factory mode
echo 1 > /sys/module/dwc3_msm/parameters/disable_host_mode_pm
;;
"qcom" )
case "$usb_config" in
"$qcom_usb_config" | "$qcom_adb_usb_config" )
;;
* )
case "$securehw" in
"1" )
setprop persist.vendor.usb.config $qcom_usb_config
setprop persist.vendor.usb.qcom.config $qcom_usb_config
setprop persist.vendor.usb.qcom.func $qcom_usb_config
;;
*)
setprop persist.vendor.usb.config $qcom_adb_usb_config
setprop persist.vendor.usb.qcom.config $qcom_adb_usb_config
setprop persist.vendor.usb.qcom.func $qcom_adb_usb_config
;;
esac
;;
esac
;;
* )
if [ "$buildtype" == "user" ] && [ "$phonelock_type" != "1" ] && [ "$usb_restricted" != "1" ]
then
echo 1 > /sys/class/android_usb/android0/secure
echo "Disabling enumeration until bootup!"
fi
case "$usb_config" in
"mtp,adb" | "mtp" | "adb")
;;
*)
case "$mot_usb_config" in
"mtp,adb" | "mtp" | "adb")
setprop persist.vendor.usb.config $mot_usb_config
;;
*)
case "$securehw" in
"1" )
setprop persist.vendor.usb.config mtp
;;
*)
setprop persist.vendor.usb.config adb
;;
esac
;;
esac
;;
esac
adb_early=`getprop ro.boot.adb_early`
if [ "$adb_early" == "1" ]; then
echo 0 > /sys/class/android_usb/android0/secure
echo "Enabling enumeration after bootup, count = $count !"
new_persist_usb_config=`getprop persist.vendor.usb.config`
if [[ "$new_persist_usb_config" != *adb* ]]; then
setprop persist.vendor.usb.config "adb"
setprop vendor.usb.config "adb"
else
setprop vendor.usb.config $new_persist_usb_config
fi
exit 0
fi
if [ "$buildtype" == "user" ] && [ "$phonelock_type" != "1" ] && [ "$usb_restricted" != "1" ]
then
count=0
bootcomplete=`getprop vendor.boot_completed`
echo "mmi-usb-sh - bootcomplete = $booted"
while [ "$bootcomplete" != "1" ]; do
echo "Sleeping till bootup!"
sleep 1
count=$((count+1))
if [ $count -gt 90 ]
then
echo "mmi-usb-sh - Timed out waiting for bootup"
break
fi
bootcomplete=`getprop vendor.boot_completed`
done
echo 0 > /sys/class/android_usb/android0/secure
echo "Enabling enumeration after bootup, count = $count !"
exit 0
fi
;;
esac
new_persist_usb_config=`getprop persist.vendor.usb.config`
if [ "$sys_usb_config" != "$new_persist_usb_config" ]; then
setprop vendor.usb.config $new_persist_usb_config
fi

View file

@ -0,0 +1,18 @@
#!/vendor/bin/sh
wlan_log_path="/data/vendor/wifi/wlan_logs/"
wlan_log_dest_path="/data/vendor/bug2go/wlan_logs"
diag_log_path="/data/vendor/diag_mdlog/logs"
mdm2_log_path="/data/vendor/diag_mdlog/logs/mdm2"
cp -r $wlan_log_path $wlan_log_dest_path
if [ -d $mdm2_log_path ]
then echo "Get diag logs"
for f in $diag_log_path/*.qmdl{,2}
do cp $f $wlan_log_dest_path
done
cp -r $mdm2_log_path $wlan_log_dest_path
fi
chown -R log:log $wlan_log_dest_path

View file

@ -0,0 +1,82 @@
#!/vendor/bin/sh
#
# Identify fingerprint sensor model
#
# Copyright (c) 2019 Lenovo
# All rights reserved.
#
# Changed Log:
# ---------------------------------
# April 15, 2019 chengql2@lenovo.com Initial version
# April 28, 2019 chengql2 Add fps_id creating step
# December 2, 2019 chengql2 Store fps_id into persist fs, and identify sensor
# again when secure unit boots as factory mode.
script_name=${0##*/}
script_name=${script_name%.*}
function log {
echo "$script_name: $*" > /dev/kmsg
}
persist_fps_id=/mnt/vendor/persist/fps/vendor_id
FPS_VENDOR_GOODIX=goodix
FPS_VENDOR_FPC=fpc
FPS_VENDOR_NONE=none
PROP_FPS_IDENT=vendor.hw.fps.ident
MAX_TIMES=20
function ident_fps {
log "- install Goodix driver"
insmod /vendor/lib/modules/goodix_fod_mmi.ko
sleep 1
log "- identify Goodix sensor"
setprop $PROP_FPS_IDENT ""
start gf_ident
for i in $(seq 1 $MAX_TIMES)
do
sleep 0.1
ident_status=$(getprop $PROP_FPS_IDENT)
log "-result : $ident_status"
if [ $ident_status == $FPS_VENDOR_GOODIX ]; then
log "ok"
echo $FPS_VENDOR_GOODIX > $persist_fps_id
return 0
elif [ $ident_status == $FPS_VENDOR_NONE ]; then
log "fail"
log "- unload Goodix driver"
rmmod goodix_fod_mmi
break
fi
done
log "- install FPC driver"
insmod /vendor/lib/modules/fpc1020_mmi.ko
echo $FPS_VENDOR_FPC > $persist_fps_id
return 0
}
if [ ! -f $persist_fps_id ]; then
ident_fps
return $?
fi
fps_vendor=$(cat $persist_fps_id)
log "FPS vendor: $fps_vendor"
if [ $fps_vendor == $FPS_VENDOR_GOODIX ]; then
log "- install Goodix driver"
insmod /vendor/lib/modules/goodix_fod_mmi.ko
return $?
fi
if [ $fps_vendor == $FPS_VENDOR_FPC ]; then
log "- install FPC driver"
insmod /vendor/lib/modules/fpc1020_mmi.ko
return $?
fi
ident_fps
return $?

View file

@ -0,0 +1,102 @@
#!/vendor/bin/sh
#
# Start indicated fingerprint HAL service
#
# Copyright (c) 2019 Lenovo
# All rights reserved.
#
# April 15, 2019 chengql2@lenovo.com Initial version
# December 2, 2019 chengql2 Store fps_id into persist fs
script_name=${0##*/}
script_name=${script_name%.*}
function log {
echo "$script_name: $*" > /dev/kmsg
}
persist_fps_id=/mnt/vendor/persist/fps/vendor_id
persist_fps_id2=/mnt/vendor/persist/fps/last_vendor_id
if [ ! -f $persist_fps_id ]; then
log "warn: no associated persist file found"
return -1
fi
fps_vendor2=$(cat $persist_fps_id2)
log "FPS vendor (last): $fps_vendor2"
fps_vendor=$(cat $persist_fps_id)
log "FPS vendor: $fps_vendor"
FPS_VENDOR_NONE=none
FPS_VENDOR_GOODIX=goodix
FPS_VENDOR_FPC=fpc
prop_fps_status=vendor.hw.fingerprint.status
prop_persist_fps=persist.vendor.hardware.fingerprint
FPS_STATUS_NONE=none
FPS_STATUS_OK=ok
if [ $fps_vendor == $FPS_STATUS_NONE ]; then
log "warn: boot as the last FPS"
fps=$fps_vendor2
else
fps=$fps_vendor
fi
for i in $(seq 1 2)
do
setprop $prop_fps_status $FPS_STATUS_NONE
if [ $fps == $FPS_VENDOR_GOODIX ]; then
log "start goodix_hal"
start goodix_hal
else
log "start fps_hal"
start fps_hal
fps=$FPS_VENDOR_FPC
fi
log "wait for HAL finish ..."
fps_status=$(getprop $prop_fps_status)
while [ $fps_status == $FPS_STATUS_NONE ]; do
sleep 0.2
fps_status=$(getprop $prop_fps_status)
done
log "fingerprint HAL status: $fps_status"
if [ $fps_status == $FPS_STATUS_OK ]; then
log "HAL success"
setprop $prop_persist_fps $fps
if [ $fps_vendor2 == $fps ]; then
return 0
fi
log "- update FPS vendor (last)"
echo $fps > $persist_fps_id2
log "- done"
return 0
fi
if [ $fps == $fps_vendor2 ]; then
if [ $fps == $FPS_VENDOR_FPC ]; then
rmmod fpc1020_mmi
insmod /vendor/lib/modules/goodix_fod_mmi.ko
fps=$FPS_VENDOR_GOODIX
else
rmmod goodix_fod_mmi
insmod /vendor/lib/modules/fpc1020_mmi.ko
fps=$FPS_VENDOR_FPC
fi
log "- update FPS vendor"
echo $fps > $persist_fps_id
sleep 1
else
log "error: HAL fail"
setprop $prop_persist_fps $FPS_VENDOR_NONE
echo $FPS_VENDOR_NONE > $persist_fps_id
log "- done"
return 1
fi
done

709
rootdir/bin/init.oem.hw.sh Normal file
View file

@ -0,0 +1,709 @@
#!/vendor/bin/sh
BASEDIR=vendor
PATH=/sbin:/$BASEDIR/sbin:/$BASEDIR/bin:/$BASEDIR/xbin
export PATH
while getopts dpfrM op;
do
case $op in
d) dbg_on=1;;
p) populate_only=1;;
f) dead_touch=1;;
r) reset_touch=1;;
M) mount_2nd_stage=1;;
esac
done
shift $(($OPTIND-1))
scriptname=${0##*/}
hw_mp=/proc/hw
config_mp=/proc/config
reboot_utag=$config_mp/.reboot
touch_status_prop=vendor.hw.touch.status
hw_cfg_file=hw_config.xml
vhw_file=/$BASEDIR/etc/vhw.xml
bp_file=/system/build.prop
oem_file=/oem/oem.prop
load_error=3
need_to_reload=2
reload_in_progress=1
reload_done=0
ver_utag=".version"
version_fs="unknown"
xml_version="unknown"
device_params=""
xml_file=""
utag_update_fail="false"
modem_ver_prop=ro.vendor.hw.modem_version
policy_prop=ro.vendor.super_image_policy
super_image_detection()
{
local subsys
local file2mount
local basefile
local version
local extention
local image_dir
local is_super_image
local super_image_prop
local file_mount_prop
local modem_version=$(getprop $modem_ver_prop)
local policy=$(getprop $policy_prop)
debug "'$policy_prop' is '$policy'"
for subsys in modem fsg; do
debug "Processing [${subsys}]..."
is_super_image=""
case ${subsys} in
modem) image_dir=/vendor/firmware_mnt;;
fsg) image_dir=/vendor/fsg;;
esac
[ -f $image_dir/super_modem ] && is_super_image="true"
debug "super image '$is_super_image'"
if [ "$is_super_image" == "true" ]; then
file2mount=""
case ${subsys} in
modem) super_image_prop="ro.vendor.hw.modem_super_image"
file_mount_prop="ro.vendor.hw.modem_mount_file"
basefile="NON-HLOS.bin"
extention=".bin"
[ "$modem_version" ] && file2mount=$(printf "NON-HLOS%sbin" $modem_version)
;;
fsg) super_image_prop="ro.vendor.hw.fsg_super_image"
file_mount_prop="ro.vendor.hw.fsg_mount_file"
basefile="fsg.mbn"
extention=".mbn"
[ "$modem_version" ] && file2mount=$(printf "fsg%smbn" $modem_version)
;;
esac
if [ -z "$file2mount" ]; then
notice "'$modem_ver_prop' not set, but [$subsys] is super image!"
else
# modem_version matches existing file in super image
if [ -f $image_dir/$file2mount ]; then
notice "[$subsys] is super image. '$file2mount' will be mounted"
setprop $file_mount_prop $file2mount
setprop $super_image_prop yes
continue
fi
notice "[$subsys] is super image. '$file2mount' not found"
fi
else
notice "[$subsys] non-super image"
fi
# check super image policy
if [ "$policy" == "enforce" ]; then
notice "[$subsys] strict super image policy! Rebooting to recovery..."
debug "'ro.vendor.hw.super_image_failure' -> 'yes'"
setprop ro.vendor.hw.super_image_failure yes
return
fi
notice "[$subsys] super image policy not enforced"
# proceed with non-super image if policy allows
if [ -z "$is_super_image" ]; then
notice "[$subsys] proceed with non-super image!"
continue
fi
# retrieve default version if available
version=$(cat $image_dir/super_modem)
if [ "$version" ]; then
basefile=$version
notice "default file override '$basefile'"
else
notice "use default file: '$basefile' instead of '$file2mount'"
fi
notice "Searching for '$basefile' in $image_dir..."
debug "checking file '$image_dir/$basefile'"
if [ -f $image_dir/$basefile ]; then
notice "[$subsys] is super image! '$basefile' will be mounted"
debug "'$file_mount_prop' -> '$basefile'"
setprop $file_mount_prop $basefile
debug "'$super_image_prop' -> 'yes'"
setprop $super_image_prop yes
continue
fi
# set to fail
notice "Unable to mount '$basefile'! Rebooting to recovery..."
debug "'ro.vendor.hw.super_image_failure' -> 'yes'"
setprop ro.vendor.hw.super_image_failure yes
return
done
}
set_reboot_counter()
{
local value=$1
local reboot_cnt=0
local reboot_mp=${reboot_utag%.*}
local tag_name=${reboot_utag##*/}
if [ $((value)) -gt 0 ]; then
notice "increase reboot counter"
[ -d $reboot_utag ] && reboot_cnt=$(cat $reboot_utag/ascii)
value=$(($reboot_cnt + 1))
fi
if [ ! -d $reboot_utag ]; then
echo ${reboot_utag##*/} > $reboot_mp/all/new
[ $? != 0 ] && notice "error creating UTAG $tag_name"
fi
echo "$value" > $reboot_utag/ascii
[ $? != 0 ] && notice "error updating UTAG $tag_name"
notice "UTAG $tag_name is [`cat $reboot_utag/ascii`]"
}
set_reboot_counter_property()
{
local reboot_cnt=0
local tag_name=${reboot_utag##*/}
if [ -d $reboot_utag ]; then
reboot_cnt=$(cat $reboot_utag/ascii)
notice "UTAG $tag_name has value [$reboot_cnt]"
else
notice "UTAG $tag_name does not exist"
fi
setprop $touch_status_prop $reboot_cnt
notice "property [$touch_status_prop] is set to [`getprop $touch_status_prop`]"
}
debug()
{
[ $dbg_on ] && echo "Debug: $*"
}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
add_device_params()
{
device_params=$device_params" $@"
debug "add_device_params='$device_params'"
}
drop_device_parameter()
{
device_params=${device_params% *}
debug "drop_device_parameter='$device_params'"
}
set_xml_file()
{
xml_file=$@
debug "working with XML file='$xml_file'"
}
exec_parser()
{
eval motobox expat -u -f $xml_file $device_params "$@" 2>/dev/null
}
reload_utags()
{
local mp=$1
local value
echo "1" > $mp/reload
value=$(cat $mp/reload)
while [ "$value" == "$reload_in_progress" ]; do
notice "waiting for loading to complete"
sleep 1;
value=$(cat $mp/reload)
notice "'$mp' current status [$value]"
done
}
procfs_wait_for_device()
{
local __result=$1
local status
local mpi
local IFS=' '
local device_timeout_count=0
while [ ! -f $hw_mp/reload ] || [ ! -f $config_mp/reload ]; do
notice "waiting for devices"
sleep 1;
if [ "$device_timeout_count" -eq "10" ];then
notice "waiting for devices timeout"
eval $__result=""
return
fi
device_timeout_count=$(($device_timeout_count + 1))
done
for mpi in $hw_mp $config_mp; do
status=$(cat $mpi/reload)
notice "mount point '$mpi' status [$status]"
if [ "$status" == "$need_to_reload" ]; then
notice "force $mpi reloading"
reload_utags $mpi
fi
done
for mpi in $hw_mp $config_mp; do
status=$(cat $mpi/reload)
notice "$mpi reload is [$status]"
while [ "$status" != "$reload_done" ]; do
notice "waiting for loading to complete"
sleep 1;
status=$(cat $mpi/reload)
done
done
eval $__result=$status
}
get_attr_data_by_name()
{
local __result=$1
local attr=$2
shift 2
local IFS=' '
eval $__result=""
for arg in ${@}; do
[ "${arg%=*}" == "$attr" ] || continue
debug "attr_data='${arg#*=}'"
eval $__result="${arg#*=}"
break
done
}
get_tag_data()
{
local __name=$1
local __value=$2
shift 2
local dataval
local IFS=' '
eval $__name=""
eval $__value=""
for arg in ${@}; do
case $arg in
string-array | string)
debug "---/ skip keyword: '$arg'"
continue;;
esac
debug "---> arg='$arg'"
if [ "${arg%=*}" == "name" ]; then
eval $__name=${arg#*=}
continue
fi
# eval treats ';' as a separator, thus make it '\;'
dataval=$(echo ${arg#?} | sed 's/;/\\;/g')
debug "<--- dataval='$dataval'"
eval $__value=$dataval
done
}
update_utag()
{
local utag=$1
local payload=$2
local verify
local rc
if [ ! -d $hw_mp/$utag ]; then
notice "creating utag '$utag'"
echo $utag > $hw_mp/all/new
rc=$?
[ "$rc" != "0" ] && notice "'$utag' create dir failed rc=$rc"
fi
debug "writing '$payload' to '$hw_mp/$utag/ascii'"
echo "$payload" > $hw_mp/$utag/ascii
rc=$?
if [ "$rc" != "0" ]; then
utag_update_fail="true"
notice "'$utag' write file failed rc=$rc"
fi
verify=$(cat $hw_mp/$utag/ascii)
debug "read '$verify' from '$hw_mp/$utag/ascii'"
[ "$verify" != "$payload" ] && notice "'$utag' payload validation failed"
}
populate_utags()
{
local selection="$@"
local pline
local ptag
local pvalue
for pline in $(exec_parser $selection); do
get_tag_data ptag pvalue $pline
url_style_off pvalue $pvalue
debug "tag='$ptag' value='$pvalue'"
update_utag $ptag $pvalue
done
}
set_ro_hw_properties_upgrade()
{
local utag_path
local utag_name
local prop_prefix
local utag_value
local verify
for hwtag in $(find $hw_mp -name '.system'); do
debug "path $hwtag has '.system' in its name"
prop_prefix="ro.vendor.hw."
utag_path=${hwtag%/*}
utag_name=${utag_path##*/}
utag_value=$(cat $utag_path/ascii)
setprop $prop_prefix$utag_name "$utag_value"
notice "ro.vendor.hw.$utag_name='$utag_value'"
done
}
set_ro_hw_properties()
{
local utag_path
local utag_name
local prop_prefix
local utag_value
local verify
for hwtag in $(find $hw_mp -name '.system'); do
debug "path $hwtag has '.system' in its name"
prop_prefix=$(cat $hwtag/ascii)
verify=${prop_prefix%.}
# esure property ends with '.'
if [ "$prop_prefix" == "$verify" ]; then
prop_prefix="$prop_prefix."
debug "added '.' at the end of [$prop_prefix]"
fi
utag_path=${hwtag%/*}
utag_name=${utag_path##*/}
utag_value=$(cat $utag_path/ascii)
setprop $prop_prefix$utag_name "$utag_value"
notice "$prop_prefix$utag_name='$utag_value'"
done
}
set_ro_vendor_incremental()
{
local vendor_incremental="ro.vendor.build.version.incremental"
local vendor_incremental_value
local fetch_prop="ro.build.version.incremental"
local fetch_value=$(getprop $fetch_prop)
[ -z "$fetch_value" ] && prefetch_from_file $fetch_prop vendor_incremental_value
setprop $vendor_incremental "$vendor_incremental_value"
notice "$vendor_incremental='$vendor_incremental_value'"
}
smart_value()
{
local mtag=$1
local __result=$2
local value
eval $__result=""
local tmp=${mtag#?}
# absolute path to the file starts with '/'
if [ "${mtag%$tmp}" == "/" ]; then
value=$(cat $mtag)
# property likely to have '.'
elif [ "$mtag" != "${mtag%.*}" ]; then
value=$(getprop $mtag)
else # tag otherwise
value=$(cat $hw_mp/$mtag/ascii)
fi
eval $__result='$value'
}
url_style_off()
{
local __arg=$1
local value=$2
if [[ $value == *%* ]]; then
value=$(echo $value | sed 's/%20/ /g')
value=$(echo $value | sed 's/%28/\(/g')
value=$(echo $value | sed 's/%29/\)/g')
fi
eval $__arg='$value'
}
match()
{
local mapping
local mline
local mtag
local fs_value
local mvalue
local matched
url_style_off mapping $1
debug "match mapping='$mapping'"
# put '\"' around $mapping to ensure XML
# parser takes it as a single argument
for mline in $(exec_parser \"$mapping\"); do
get_tag_data mtag mvalue $mline
url_style_off mvalue $mvalue
# obtain value based on data source: utag, property or file
smart_value $mtag fs_value
if [ "$fs_value" == "$mvalue" ]; then
matched="true";
else
matched="false";
fi
debug "cmp utag='$mtag' values '$mvalue' & '$fs_value' is \"$matched\""
[ "$matched" == "false" ] && break
done
[ "$matched" == "true" ] && return 0
return 1
}
find_match()
{
local __retval=$1
local tag_name
local fline
local line
local subsection
local matched="false"
eval $__retval=""
for fline in $(exec_parser); do
subsection=${fline%% *}
add_device_params $subsection
for line in $(exec_parser); do
get_attr_data_by_name tag_name "name" $line
debug "tag_name='$tag_name'"
match $tag_name
[ "$?" != "0" ] && continue
eval $__retval=$tag_name
matched="true"
break
done
drop_device_parameter
[ "$matched" == "true" ] && break
done
}
prefetch_from_file()
{
local pname=$1
local __result=$2
local value
local override
eval $__result=""
value=$(cat $bp_file 2>/dev/null | sed '/^$/d' | sed '/^#/d' | sed '/^import/d' | sed -n "/$pname=/p" | sed 's/.*=//')
debug "'$pname' from '$bp_file': '$value'"
if [ -f $oem_file ]; then
override=$(cat $oem_file 2>/dev/null | sed '/^$/d' | sed '/^#/d' | sed '/^import/d' | sed -n "/$pname=/p" | sed 's/.*=//')
[ "$override" ] && value=$override && debug "'$pname' from '$oem_file': '$value'"
fi
eval $__result=$value
}
append_match()
{
local prop_list=$1
local suffix="$2"
local dest_prop
local fetched_prop
local prop_value
local IFS=','
# properties list to put the result of appending hw suffix to
# example: appended="ro.vendor.product.name,ro.vendor.product.device"
for dest_prop in $prop_list; do
fetch_prop=${dest_prop}
# only alter property name that has "vendor" in it
if [ "${fetch_prop//.vendor}" != "$dest_prop" ]; then
fetch_prop=${fetch_prop//.vendor}
prop_value=$(getprop $fetch_prop)
[ -z "$prop_value" ] && prefetch_from_file $fetch_prop prop_value
# finally set destination property to appended value
setprop $dest_prop "$prop_value$suffix"
notice "$dest_prop='$prop_value$suffix'"
fi
done
}
process_mappings()
{
local pname=""
local pexport=""
local pdefault=""
local pappend=""
local putag=""
local subsection
local pline
local matched_val
local whitespace_val
local export_val
local utag_val
for pline in $(exec_parser); do
subsection=${pline%% *}
debug "subsection is '$subsection'"
get_attr_data_by_name pname "name" $pline
get_attr_data_by_name pexport "export" $pline
get_attr_data_by_name pdefault "default" $pline
get_attr_data_by_name pappend "append" $pline
get_attr_data_by_name putag "writeback" $pline
[ "$pname" ] && url_style_off pname $pname && debug "name='$pname'"
[ "$pexport" ] && url_style_off pexport $pexport && debug "export='$pexport'"
[ "$pdefault" ] && url_style_off pdefault $pdefault && debug "default='$pdefault'"
[ "$pappend" ] && url_style_off pappend $pappend && debug "append='$pappend'"
# add 'subsection' to permanent parameters
add_device_params $subsection
# call itself here to handle nonamed subsection, like quirks
[ -z "$pname" ] && [ -z "$pexport" ] && [ -z "$pdefault" ] && [ -z "$pappend" ] && [ -z "$putag" ] && process_mappings && continue
find_match matched_val
[ "$matched_val" ] && url_style_off matched_val $matched_val
# append_match handles OEM overrides, thus has to be called even with empty value
[ "$pappend" ] && append_match $pappend "$matched_val"
if [ "$matched_val" ]; then
if [ "$pexport" ]; then
setprop $pexport "$matched_val"
notice "exporting '$matched_val' into property $pexport"
fi
elif [ "$pexport" -a "$pdefault" ]; then
# if match is not found, proceed with default
setprop $pexport "$pdefault"
notice "defaulting '$pdefault' into property $pexport"
fi
if [ "$putag" ] && [ -d $hw_mp/$putag ]; then
export_val=$(getprop $pexport)
utag_val=$(cat $hw_mp/$putag/ascii)
debug "writeback compare $utag_val,$export_val"
# if property is empty value, clear the utag.
# if property and writeback utag are empty value, don't update utag
if [ "$export_val" -o "$utag_val" != "(null)" ] && [ "$utag_val" != "$export_val" ]; then
update_utag $putag $export_val
notice "writeback '$export_val' into utag $putag"
fi
fi
# remove the last added parameter
drop_device_parameter
done
}
# Main starts here
IFS=$'\n'
if [ ! -z "$mount_2nd_stage" ]; then
notice "Super image detection"
super_image_detection
return 0
fi
if [ ! -z "$reset_touch" ]; then
notice "reset reboot counter"
set_reboot_counter 0
return 0
fi
if [ ! -z "$dead_touch" ]; then
notice "property [$touch_status_prop] set to [dead]"
set_reboot_counter 1
return 0
fi
if [ -f /vendor/lib/modules/utags.ko ]; then
notice "loading utag driver"
insmod /vendor/lib/modules/utags.ko
fi
notice "checking integrity"
# check necessary components exist and just proceed
# with RO properties setup otherwise
if [ ! -f /$BASEDIR/bin/expat ] || [ ! -f $vhw_file ]; then
notice "warning: missing expat or xml"
set_ro_hw_properties
return 0
fi
if [ ! -z "$populate_only" ]; then
# special handling for factory UTAGs provisioning
for path in /data/local/tmp /pds/factory; do
[ -f $path/$hw_cfg_file ] && break
done
notice "populating hw config from '$path/$hw_cfg_file'"
set_xml_file $path/$hw_cfg_file
populate_utags hardware
return 0
fi
notice "initializing procfs"
procfs_wait_for_device readiness
if [ "$readiness" != "0" ]; then
notice "no access to hw utags procfs"
return 1
fi
# populate touch status property with reboot counter
set_reboot_counter_property &
# XML parsing starts here
set_xml_file $vhw_file
get_attr_data_by_name boot_device_prop "match" $(exec_parser)
debug "attr='get' value='$boot_device_prop'"
if [ -z $boot_device_prop ]; then
notice "fatal: undefined boot device property"
return 1
fi
# ensure lower case
typeset -l boot_device=$(getprop $boot_device_prop)
# drop suffixes
boot_device=${boot_device%[_-]*}
notice "matching to boot device '$boot_device'"
# add 'validation' to permanent parameters
add_device_params validation
for line in $(exec_parser); do
get_attr_data_by_name product "name" $line
debug "attr='name' value='$product'"
if [ "$product" == "$boot_device" ]; then
get_attr_data_by_name xml_version "version" $line
[ "$xml_version" != "unknown" ] && notice "device '$boot_device' xml version='$xml_version'"
break
fi
done
[ "$xml_version" == "unknown" ] && notice "no match found for device '$boot_device'"
# delete obsolete 'version' utag if exists
[ -d $hw_mp/${ver_utag#?} ] && $(echo ${ver_utag#?} > $hw_mp/all/delete)
# read procfs version
[ -d $hw_mp/$ver_utag ] && version_fs=$(cat $hw_mp/$ver_utag/ascii)
notice "procfs version='$version_fs'"
# add 'device' and '$boot_device' to permanent parameters
add_device_params device $boot_device
[ "$xml_version" == "$version_fs" ] && notice "hw descriptor is up to date"
for section in $(exec_parser); do
debug "section='$section'"
case $section in
mappings)
# add 'mappings' to permanent parameters
add_device_params $section
process_mappings &
;;
*)
[ "$xml_version" == "$version_fs" ] && continue
populate_utags $section;;
esac
done
if [ "$xml_version" != "$version_fs" ]; then
# create version utag if it's missing
[ ! -d $hw_mp/$ver_utag ] && $(echo "$ver_utag" > $hw_mp/all/new)
# update procfs version
[ -d $hw_mp/$ver_utag ] && $(echo "$xml_version" > $hw_mp/$ver_utag/ascii)
fi
set_ro_vendor_incremental &
set_ro_hw_properties
if [ "$utag_update_fail" == "true" ]; then
set_ro_hw_properties_upgrade
fi
wait
notice "script init.oem.hw.sh finish "
return 0

View file

@ -0,0 +1,146 @@
#!/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
}

View file

@ -0,0 +1,115 @@
#! /vendor/bin/sh
# Copyright (c) 2009-2010, 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.
LOG_TAG="qcom-bt-wlan-coex"
LOG_NAME="${0}:"
coex_pid=""
ath_wlan_supported=`getprop wlan.driver.ath`
loge ()
{
/system/bin/log -t $LOG_TAG -p e "$LOG_NAME $@"
}
logi ()
{
/system/bin/log -t $LOG_TAG -p i "$LOG_NAME $@"
}
failed ()
{
loge "$1: exit code $2"
exit $2
}
start_coex ()
{
case "$ath_wlan_supported" in
"2")
echo "ATH WLAN Chip ID AR6004 is enabled"
/system/bin/abtfilt -d -z -n -m -a -w wlan0 &
;;
"1")
echo "ATH WLAN Chip ID is enabled"
# Must have -d -z -n -v -s -w wlan0 parameters for atheros btfilter.
/system/bin/abtfilt -d -z -n -v -q -s -w wlan0 &
;;
"0")
echo "WCN WLAN Chip ID is enabled"
# Must have -o turned on to avoid daemon (otherwise we cannot get pid)
/system/bin/btwlancoex -o $opt_flags &
;;
*)
echo "NO WLAN Chip ID is enabled, so enabling ATH as default"
# Must have -d -z -n -v -s -w wlan0 parameters for atheros btfilter.
/system/bin/abtfilt -d -z -n -v -q -s -w wlan0 &
;;
esac
coex_pid=$!
logi "start_coex: pid = $coex_pid"
}
kill_coex ()
{
logi "kill_coex: pid = $coex_pid"
kill -TERM $coex_pid
# this shell doesn't exit now -- wait returns for normal exit
}
# mimic coex options parsing -- maybe a waste of effort
USAGE="${0} [-o] [-c] [-r] [-i] [-h]"
while getopts "ocrih" f
do
case $f in
o | c | r | i | h) opt_flags="$opt_flags -$f" ;;
\?) echo $USAGE; exit 1;;
esac
done
# init does SIGTERM on ctl.stop for service
trap "kill_coex" TERM INT
#Selectively start coex module
target=`getprop ro.board.platform`
if [ "$target" == "msm8960" ] && [ "$ath_wlan_supported" != "2" ]; then
logi "btwlancoex/abtfilt is not needed"
else
# Build settings may not produce the coex executable
if ls /system/bin/btwlancoex || ls /system/bin/abtfilt
then
start_coex
wait $coex_pid
logi "Coex stopped"
else
logi "btwlancoex/abtfilt not available"
fi
fi
exit 0

View file

@ -0,0 +1,48 @@
#!/vendor/bin/sh
# Copyright (c) 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,
# 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.
#
abnormalcnt="persist.vendor.crash.cnt"
abnormal_cnt=`getprop $abnormalcnt`
crash_detect=`getprop persist.vendor.crash.detect`
if [ "$abnormal_cnt" = "" ]
then
setprop $abnormalcnt 0
fi
if [ "$crash_detect" = "true" ]
then
abnormal_cnt=`expr $abnormal_cnt + 1`
setprop $abnormalcnt $abnormal_cnt
elif [ "$crash_detect" = "false" ];then
setprop persist.vendor.crash.detect true
else
setprop persist.vendor.crash.detect true
fi

View file

@ -0,0 +1,540 @@
#! /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
target_type=`getprop ro.hardware.type`
if [ "$target_type" == "automotive" ]; then
cd /sys/devices/system/memory/
n=1
addr=`cat aligned_blocks_addr | cut -d ',' -f $n`
num=`cat aligned_blocks_num | cut -d ',' -f $n`
while [ -n "$addr" ]
do
echo $addr > probe
echo online > memory$num/state
let n++
addr=`cat aligned_blocks_addr | cut -d ',' -f $n`
num=`cat aligned_blocks_num | cut -d ',' -f $n`
done
fi
# 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/drm/card0-DP-1/modes ]; then
echo "detect" > /sys/class/drm/card0-DP-1/status
is_dp_mode=1
mode_file=/sys/class/drm/card0-DP-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
if [ $is_dp_mode -eq 1 ]; then
return;
fi
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
;;
"qcs605")
case "$soc_hwplatform" in
*)
setprop vendor.display.lcd_density 640
;;
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
*)
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)
# 441 is for scuba
setprop vendor.fastrpc.disable.cdsprpcd.daemon 1
setprop vendor.media.target.version 2
setprop vendor.gralloc.disable_ubwc 1
# 196609 is decimal for 0x30001 to report version 3.1
setprop vendor.opengles.version 196609
sku_ver=`cat /sys/devices/platform/soc/5a00000.qcom,vidc1/sku_version` 2> /dev/null
if [ $sku_ver -eq 1 ]; then
setprop vendor.media.target.version 3
fi
;;
471)
#scuba APQ
setprop vendor.fastrpc.disable.cdsprpcd.daemon 1
setprop vendor.gralloc.disable_ubwc 1
;;
*)
# default case is for bengal
setprop vendor.opengles.version 196610
sku_ver=`cat /sys/devices/platform/soc/5a00000.qcom,vidc/sku_version` 2> /dev/null
if [ $sku_ver -eq 1 ]; then
setprop vendor.media.target.version 1
fi
;;
esac
;;
"sdm710" | "msmpeafowl")
case "$soc_hwplatform" in
*)
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_hwid" in
385)
setprop vendor.media.target.version 1
esac
;;
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
echo 940800000 > /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/min_freq
echo 940800000 > /sys/class/devfreq/soc:qcom,cpu4-cpu-l3-lat/min_freq
;;
*)
;;
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
fi
drm_driver=/sys/class/drm/card0
if [ -e "$drm_driver" ]; then
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

View file

@ -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 "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.
#
#
PATH=/system/bin:$PATH
export PATH
cat /sys/devices/platform/rs300000a7.65536/force_sync
cat /sys/devices/platform/rs300100a7.65536/force_sync

File diff suppressed because it is too large Load diff

View file

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

View file

@ -0,0 +1,45 @@
#!/vendor/bin/sh
# Copyright (c) 2015,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 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.
#
#
# Function to start sensors for SSC enabled platforms
#
start_sensors()
{
chmod -h 664 /persist/sensors/sensors_settings
chown -h -R system.system /persist/sensors
start vendor.sensors.qti
# Only for SLPI
if [ -c /dev/msm_dsps -o -c /dev/sensors ] ; then
start vendor.sensors
fi
}
start_sensors

465
rootdir/bin/init.qcom.sh Normal file
View file

@ -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 "7 6 1 7" > /proc/sys/kernel/printk
;;
*)
#set default loglevel to KERN_WARNING
echo "4 4 1 4" > /proc/sys/kernel/printk
;;
esac

View file

@ -0,0 +1,29 @@
#! /vendor/bin/sh
#
# Copyright (c) 2019 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
prefix="/sys/class/"
#List of folder for ownership update
arr=( "power_supply/battery/" "power_supply/usb/" "power_supply/main/" "power_supply/charge_pump_master/" "power_supply/pc_port/" "power_supply/dc/" "power_supply/bms/" "power_supply/parallel/" "usbpd/usbpd0/" "qc-vdm/" "charge_pump/" "qcom-battery/" )
for i in "${arr[@]}"
do
for j in `ls "$prefix""$i"`
do
#skip directories to prevent possible security issues.
if [[ -d "$prefix""$i""$j" ]]
then
continue
else
chown -h system.system "$prefix""$i""$j"
fi
done
done
setprop persist.vendor.hvdcp_opti.start 1

Some files were not shown because too many files have changed in this diff Show more