summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>2016-10-06 13:49:53 +0200
committerBernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>2016-10-06 13:49:53 +0200
commite7a95058b69161260683ebc515c53acc99c5e004 (patch)
treeee385e01606abe73b44f5a567f4c2c5c2f02210c
downloadmt6797-e7a95058b69161260683ebc515c53acc99c5e004.tar.gz
Import original files from sla.tar.gz
Import original files from sla.tar.gz (11-Aug-16 revision) Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
-rwxr-xr-xACCDET.kl8
-rwxr-xr-xBoardConfig.mk130
-rwxr-xr-xaudio_device.xml269
-rwxr-xr-xaudio_device_param/DSM.xml336
-rwxr-xr-xaudio_device_param/DSM_config.xml39
-rwxr-xr-xaudio_policy.conf186
-rwxr-xr-xaurisys_param/phone_call/forte_media/FV-SAM-MTK2.datbin0 -> 11128 bytes
-rwxr-xr-xdevice.mk1338
-rwxr-xr-xegl.cfg3
-rwxr-xr-xemdlogger_usb_config.prop8
-rwxr-xr-xenableswap.sh4
-rwxr-xr-xfactory_init.rc660
-rwxr-xr-xfstab.mt6797.nand6
-rwxr-xr-xht120.mtc58
-rwxr-xr-xinit.fon.rc11
-rwxr-xr-xinit.microtrust.rc45
-rwxr-xr-xinit.modem.rc196
-rwxr-xr-xinit.mt6797.rc1728
-rwxr-xr-xinit.mt6797.usb.rc1073
-rwxr-xr-xinit.recovery.mt6797.rc25
-rwxr-xr-xinit.trustonic.rc42
-rwxr-xr-xinit.wfca.rc21
-rwxr-xr-xinit.xlog.rc30
-rwxr-xr-xkernel-headers/camera_dpe.h295
-rwxr-xr-xkernel-headers/camera_fdvt.h88
-rwxr-xr-xkernel-headers/camera_isp.h606
-rwxr-xr-xkernel-headers/camera_sysram.h33
-rwxr-xr-xkernel-headers/cmdq_engine.h74
-rwxr-xr-xkernel-headers/cmdq_event.h247
-rwxr-xr-xkernel-headers/cmdq_subsys.h28
-rwxr-xr-xkernel-headers/ddp_aal.h38
-rwxr-xr-xkernel-headers/ddp_data_type.h165
-rwxr-xr-xkernel-headers/ddp_drv.h314
-rwxr-xr-xkernel-headers/ddp_gamma.h35
-rwxr-xr-xkernel-headers/ddp_hal.h125
-rwxr-xr-xkernel-headers/ddp_ovl.h17
-rwxr-xr-xkernel-headers/disp_event.h19
-rwxr-xr-xkernel-headers/errata.h41
-rwxr-xr-xkernel-headers/jpeg_drv.h677
-rwxr-xr-xkernel-headers/mt_smi.h189
-rwxr-xr-xkernel-headers/videocodec_kernel_driver.h48
-rwxr-xr-xmedia_codecs.xml87
-rwxr-xr-xmedia_codecs_mediatek_audio.xml126
-rwxr-xr-xmedia_codecs_mediatek_video.xml219
-rwxr-xr-xmedia_codecs_performance.xml175
-rwxr-xr-xmeta_init.modem.rc59
-rwxr-xr-xmeta_init.rc457
-rwxr-xr-xmtk_clear_motion.cfg8
-rwxr-xr-xmtk_omx_core.cfg36
-rwxr-xr-xpartition_permission.sh22
-rwxr-xr-xrecovery_emmc.fstab8
-rwxr-xr-xrecovery_ubifs.fstab8
-rwxr-xr-xrecovery_yaffs2.fstab8
-rwxr-xr-xsepolicy/device.te5
-rwxr-xr-xsepolicy/file_contexts33
-rwxr-xr-xsepolicy/mnld.te5
-rwxr-xr-xsepolicy/system_server.te8
-rwxr-xr-xthermal.conf110
-rwxr-xr-xthermal.eng.conf110
-rwxr-xr-xthermal.fdvrgis.6797.conf110
-rwxr-xr-xthermal.off.conf74
-rwxr-xr-xthermal.pip.6797.conf110
-rwxr-xr-xthermal.wfd.6797.conf110
-rwxr-xr-xthrottle.sh19
-rwxr-xr-xueventd.mt6797.rc116
65 files changed, 11278 insertions, 0 deletions
diff --git a/ACCDET.kl b/ACCDET.kl
new file mode 100755
index 0000000..620fd5e
--- /dev/null
+++ b/ACCDET.kl
@@ -0,0 +1,8 @@
+
+key 122 ENDCALL
+key 163 MEDIA_NEXT
+key 164 HEADSETHOOK
+key 165 MEDIA_PREVIOUS
+key 114 VOLUME_DOWN
+key 115 VOLUME_UP
+key 582 VOICE_ASSIST
diff --git a/BoardConfig.mk b/BoardConfig.mk
new file mode 100755
index 0000000..f411e5b
--- /dev/null
+++ b/BoardConfig.mk
@@ -0,0 +1,130 @@
+# mt6797 platform boardconfig
+
+# Use the non-open-source part, if present
+-include vendor/mediatek/mt6797/BoardConfigVendor.mk
+
+# Use the common part
+include device/mediatek/common/BoardConfig.mk
+
+ifneq ($(MTK_K64_SUPPORT), yes)
+TARGET_ARCH := arm
+
+TARGET_CPU_VARIANT := cortex-a53
+TARGET_2ND_CPU_VARIANT := cortex-a53
+
+TARGET_CPU_ABI := armeabi-v7a
+TARGET_CPU_ABI2 := armeabi
+TARGET_CPU_SMP := true
+TARGET_ARCH_VARIANT := armv7-a-neon
+
+# Don't use cit 4.8 compiler for M to avoid build break
+#TARGET_TOOLCHAIN_ROOT := prebuilts/gcc/$(HOST_PREBUILT_TAG)/arm/cit-arm-linux-androideabi-4.8
+#TARGET_TOOLS_PREFIX := $(TARGET_TOOLCHAIN_ROOT)/bin/arm-linux-androideabi-
+
+else
+TARGET_ARCH := arm64
+TARGET_ARCH_VARIANT := armv8-a
+TARGET_CPU_ABI := arm64-v8a
+TARGET_CPU_ABI2 :=
+
+TARGET_CPU_VARIANT := cortex-a53
+TARGET_2ND_CPU_VARIANT := cortex-a53
+
+TARGET_CPU_SMP := true
+
+TARGET_2ND_ARCH := arm
+TARGET_2ND_ARCH_VARIANT := armv7-a-neon
+TARGET_2ND_CPU_ABI := armeabi-v7a
+TARGET_2ND_CPU_ABI2 := armeabi
+TARGET_TOOLCHAIN_ROOT := prebuilts/gcc/$(HOST_PREBUILT_TAG)/aarch64/aarch64-linux-android-4.9
+TARGET_TOOLS_PREFIX := $(TARGET_TOOLCHAIN_ROOT)/bin/aarch64-linux-android-
+
+KERNEL_CROSS_COMPILE:= $(abspath $(TOP))/$(TARGET_TOOLS_PREFIX)
+
+endif
+
+ARCH_ARM_HAVE_TLS_REGISTER := true
+TARGET_BOARD_PLATFORM ?= mt6797
+TARGET_USERIMAGES_USE_EXT4 := true
+TARGET_NO_FACTORYIMAGE := true
+KERNELRELEASE := 3.4
+
+# MTK, Nick Ko, 20140305, Add Display {
+TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS := true
+NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3
+TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK := true
+
+# Basic package can not set VSYNC_EVENT_PHASE_OFFSET_NS
+# If VSYNC_EVENT_PHASE_OFFSET_NS is not 0, it will cause compiler error of SF
+ifneq ($(MTK_BASIC_PACKAGE), yes)
+ifneq ($(MTK_DISPLAY_120HZ_SUPPORT), yes)
+VSYNC_EVENT_PHASE_OFFSET_NS := 8300000
+SF_VSYNC_EVENT_PHASE_OFFSET_NS := 8300000
+PRESENT_TIME_OFFSET_FROM_VSYNC_NS := 0
+else
+VSYNC_EVENT_PHASE_OFFSET_NS := 0
+SF_VSYNC_EVENT_PHASE_OFFSET_NS := 0
+PRESENT_TIME_OFFSET_FROM_VSYNC_NS := 0
+endif
+else
+VSYNC_EVENT_PHASE_OFFSET_NS := 0
+SF_VSYNC_EVENT_PHASE_OFFSET_NS := 0
+PRESENT_TIME_OFFSET_FROM_VSYNC_NS := 0
+endif
+
+PRESENT_TIME_OFFSET_FROM_VSYNC_NS := 0
+ifneq ($(FPGA_EARLY_PORTING), yes)
+MTK_HWC_SUPPORT := yes
+else
+MTK_HWC_SUPPORT := no
+endif
+
+MTK_HWC_VERSION := 1.5.0
+# MTK, Nick Ko, 20140305, Add Display }
+
+
+BOARD_CONNECTIVITY_VENDOR := MediaTek
+BOARD_USES_MTK_AUDIO := true
+
+ifeq ($(MTK_AGPS_APP), yes)
+ BOARD_AGPS_SUPL_LIBRARIES := true
+else
+ BOARD_AGPS_SUPL_LIBRARIES := false
+endif
+
+ifeq ($(strip $(BOARD_CONNECTIVITY_VENDOR)), MediaTek)
+BOARD_CONNECTIVITY_MODULE := conn_soc
+BOARD_MEDIATEK_USES_GPS := true
+endif
+
+# Bluetooth
+BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/generic/common/bluetooth
+BOARD_BLUETOOTH_BDROID_HCILP_INCLUDED := 0
+
+# mkbootimg header, which is used in LK
+BOARD_KERNEL_BASE = 0x40000000
+ifneq ($(MTK_K64_SUPPORT), yes)
+BOARD_KERNEL_OFFSET = 0x00008000
+else
+BOARD_KERNEL_OFFSET = 0x00080000
+endif
+BOARD_RAMDISK_OFFSET = 0x05000000
+BOARD_TAGS_OFFSET = 0x4000000
+ifneq ($(MTK_K64_SUPPORT), yes)
+BOARD_KERNEL_CMDLINE = bootopt=64S3,32S1,32S1
+else
+TARGET_USES_64_BIT_BINDER := true
+TARGET_IS_64_BIT := true
+BOARD_KERNEL_CMDLINE = bootopt=64S3,32N2,64N2
+endif
+BOARD_MKBOOTIMG_ARGS := --kernel_offset $(BOARD_KERNEL_OFFSET) --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_TAGS_OFFSET)
+
+# ptgen
+MTK_PTGEN_CHIP := $(shell echo $(TARGET_BOARD_PLATFORM) | tr '[a-z]' '[A-Z]')
+-include device/mediatek/build/build/tools/ptgen/$(MTK_PTGEN_CHIP)/ptgen.mk
+
+BOARD_SEPOLICY_DIRS += device/mediatek/mt6797/sepolicy
+
+MTK_GPU_VERSION := mali midgard r7p0
+
+MTK_CAM_FRAMEWORK_DEFAULT_CODE := yes
diff --git a/audio_device.xml b/audio_device.xml
new file mode 100755
index 0000000..5b2bd0d
--- /dev/null
+++ b/audio_device.xml
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<mixercontrol>
+ <versioncontrol value="1.01">
+ </versioncontrol>
+ <!-- These are the initial mixer settings -->
+ <kctl name="Audio_Speaker_class_Switch" value="CLASSAB" />
+ <!--headphone output-->
+ <path name="headphone_output" value="turnon">
+ <kctl name="Audio_Amp_R_Switch" value="On" />
+ <kctl name="Audio_Amp_L_Switch" value="On" />
+ </path>
+ <path name="headphone_output" value="turnoff">
+ <kctl name="Audio_Amp_R_Switch" value="Off" />
+ <kctl name="Audio_Amp_L_Switch" value="Off" />
+ </path>
+ <!--receiver output-->
+ <path name="receiver_output" value="turnon">
+ <kctl name="Voice_Amp_Switch" value="On" />
+ </path>
+ <path name="receiver_output" value="turnoff">
+ <kctl name="Voice_Amp_Switch" value="Off" />
+ </path>
+ <!-- 2-in-1 speaker output-->
+ <path name="two_in_one_speaker_output" value="turnon">
+ <kctl name="Speaker_Amp_Switch" value="On" />
+ <kctl name="Audio_Speaker_class_Switch" value="CLASSAB" />
+ </path>
+ <path name="two_in_one_speaker_output" value="turnoff">
+ <kctl name="Audio_Speaker_class_Switch" value="RECEIVER" />
+ <kctl name="Speaker_Amp_Switch" value="Off" />
+ </path>
+ <!--speaker output-->
+ <path name="speaker_output" value="turnon">
+ <kctl name="Speaker_Amp_Switch" value="On" />
+ </path>
+ <path name="speaker_output" value="turnoff">
+ <kctl name="Speaker_Amp_Switch" value="Off" />
+ </path>
+ <!--headhpone_speaker output-->
+ <path name="headphoneSpeaker_output" value="turnon">
+ <kctl name="Headset_Speaker_Amp_Switch" value="On" />
+ </path>
+ <path name="headphoneSpeaker_output" value="turnoff">
+ <kctl name="Headset_Speaker_Amp_Switch" value="Off" />
+ </path>
+ <!--speaker output-->
+ <path name="maxim_speaker_output" value="turnon">
+ <kctl name="Spk_Enable" value="On" />
+ </path>
+ <path name="maxim_speaker_output" value="turnoff">
+ <kctl name="Spk_Enable" value="Off" />
+ </path>
+ <!--headhpone_speaker output-->
+ <path name="maxim_headphoneSpeaker_output" value="turnon">
+ <kctl name="Spk_Enable" value="On" />
+ <kctl name="Audio_Amp_R_Switch" value="On" />
+ <kctl name="Audio_Amp_L_Switch" value="On" />
+ </path>
+ <path name="maxim_headphoneSpeaker_output" value="turnoff">
+ <kctl name="Audio_Amp_R_Switch" value="Off" />
+ <kctl name="Audio_Amp_L_Switch" value="Off" />
+ <kctl name="Spk_Enable" value="Off" />
+ </path>
+ <!--external_speaker output-->
+ <path name="ext_speaker_output" value="turnon">
+ <kctl name="Ext_Speaker_Amp_Switch" value="On" />
+ </path>
+ <path name="ext_speaker_output" value="turnoff">
+ <kctl name="Ext_Speaker_Amp_Switch" value="Off" />
+ </path>
+ <!--mic setting-->
+ <path name="builtin_Mic_Mic1" value="turnon">
+ <kctl name="Audio_MicSource1_Setting" value="ADC1" />
+ <kctl name="Audio_ADC_1_Switch" value="On" />
+ <kctl name="Audio_ADC_2_Switch" value="On" />
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC1" />
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC1" />
+ </path>
+ <path name="builtin_Mic_Mic1" value="turnoff">
+ <kctl name="Audio_Preamp1_Switch" value="OPEN" />
+ <kctl name="Audio_Preamp2_Switch" value="OPEN" />
+ <kctl name="Audio_ADC_1_Switch" value="Off" />
+ <kctl name="Audio_ADC_2_Switch" value="Off" />
+ </path>
+ <path name="builtin_Mic_Mic1_Inverse" value="turnon">
+ <kctl name="Audio_MicSource1_Setting" value="ADC1" />
+ <kctl name="Audio_ADC_1_Switch" value="On" />
+ <kctl name="Audio_ADC_2_Switch" value="On" />
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC3" />
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC3" />
+ </path>
+ <path name="builtin_Mic_Mic1_Inverse" value="turnoff">
+ <kctl name="Audio_Preamp1_Switch" value="OPEN" />
+ <kctl name="Audio_Preamp2_Switch" value="OPEN" />
+ <kctl name="Audio_ADC_1_Switch" value="Off" />
+ <kctl name="Audio_ADC_2_Switch" value="Off" />
+ </path>
+ <path name="builtin_Mic_Mic2" value="turnon">
+ <kctl name="Audio_MicSource1_Setting" value="ADC1" />
+ <kctl name="Audio_ADC_1_Switch" value="On" />
+ <kctl name="Audio_ADC_2_Switch" value="On" />
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC3" />
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC3" />
+ </path>
+ <path name="builtin_Mic_Mic2" value="turnoff">
+ <kctl name="Audio_Preamp1_Switch" value="OPEN" />
+ <kctl name="Audio_Preamp2_Switch" value="OPEN" />
+ <kctl name="Audio_ADC_1_Switch" value="Off" />
+ <kctl name="Audio_ADC_2_Switch" value="Off" />
+ </path>
+ <path name="builtin_Mic_Mic2_Inverse" value="turnon">
+ <kctl name="Audio_MicSource1_Setting" value="ADC1" />
+ <kctl name="Audio_ADC_1_Switch" value="On" />
+ <kctl name="Audio_ADC_2_Switch" value="On" />
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC1" />
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC1" />
+ </path>
+ <path name="builtin_Mic_Mic2_Inverse" value="turnoff">
+ <kctl name="Audio_Preamp1_Switch" value="OPEN" />
+ <kctl name="Audio_Preamp2_Switch" value="OPEN" />
+ <kctl name="Audio_ADC_1_Switch" value="Off" />
+ <kctl name="Audio_ADC_2_Switch" value="Off" />
+ </path>
+ <path name="builtin_Mic_SingleMic" value="turnon">
+ <kctl name="Audio_MicSource1_Setting" value="ADC1" />
+ <kctl name="Audio_ADC_1_Switch" value="On" />
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC1" />
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC1" />
+ </path>
+ <path name="builtin_Mic_SingleMic" value="turnoff">
+ <kctl name="Audio_Preamp1_Switch" value="OPEN" />
+ <kctl name="Audio_Preamp2_Switch" value="OPEN" />
+ <kctl name="Audio_ADC_1_Switch" value="Off" />
+ </path>
+ <path name="builtin_Mic_DualMic" value="turnon">
+ <kctl name="Audio_MicSource1_Setting" value="ADC1" />
+ <kctl name="Audio_ADC_1_Switch" value="On" />
+ <kctl name="Audio_ADC_2_Switch" value="On" />
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC1" />
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC3" />
+ </path>
+ <path name="builtin_Mic_DualMic" value="turnoff">
+ <kctl name="Audio_Preamp1_Switch" value="OPEN" />
+ <kctl name="Audio_Preamp2_Switch" value="OPEN" />
+ <kctl name="Audio_ADC_1_Switch" value="Off" />
+ <kctl name="Audio_ADC_2_Switch" value="Off" />
+ </path>
+ <path name="builtin_Mic_BackMic" value="turnon">
+ <kctl name="Audio_MicSource1_Setting" value="ADC1" />
+ <kctl name="Audio_ADC_1_Switch" value="On" />
+ <kctl name="Audio_ADC_2_Switch" value="On" />
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC3" />
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC3" />
+ </path>
+ <path name="builtin_Mic_BackMic" value="turnoff">
+ <kctl name="Audio_Preamp1_Switch" value="OPEN" />
+ <kctl name="Audio_Preamp2_Switch" value="OPEN" />
+ <kctl name="Audio_ADC_1_Switch" value="Off" />
+ <kctl name="Audio_ADC_2_Switch" value="Off" />
+ </path>
+ <path name="builtin_Mic_BackMic_Inverse" value="turnon">
+ <kctl name="Audio_MicSource1_Setting" value="ADC1" />
+ <kctl name="Audio_ADC_1_Switch" value="On" />
+ <kctl name="Audio_ADC_2_Switch" value="On" />
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC1" />
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC1" />
+ </path>
+ <path name="builtin_Mic_BackMic_Inverse" value="turnoff">
+ <kctl name="Audio_Preamp1_Switch" value="OPEN" />
+ <kctl name="Audio_Preamp2_Switch" value="OPEN" />
+ <kctl name="Audio_ADC_1_Switch" value="Off" />
+ <kctl name="Audio_ADC_2_Switch" value="Off" />
+ </path>
+ <path name="headset_mic_input" value="turnon">
+ <kctl name="Audio_MicSource1_Setting" value="ADC2" />
+ <kctl name="Audio_ADC_1_Switch" value="On" />
+ <kctl name="Audio_ADC_2_Switch" value="On" />
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC2" />
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC2" />
+ </path>
+ <path name="headset_mic_input" value="turnoff">
+ <kctl name="Audio_Preamp1_Switch" value="OPEN" />
+ <kctl name="Audio_Preamp2_Switch" value="OPEN" />
+ <kctl name="Audio_ADC_1_Switch" value="Off" />
+ <kctl name="Audio_ADC_2_Switch" value="Off" />
+ </path>
+ <path name="sidetone_switch" value="turnon">
+ <kctl name="Audio_Sidetone_Switch" value="On" />
+ </path>
+ <path name="sidetone_switch" value="turnoff">
+ <kctl name="Audio_Sidetone_Switch" value="Off" />
+ </path>
+ <!--mic1 type setting-->
+ <path name="Mic1TypeACCMode" value="setting">
+ <kctl name="Audio_MIC1_Mode_Select" value="ACCMODE" />>
+ </path>
+ <path name="Mic1TypeDCCMode" value="setting">
+ <kctl name="Audio_MIC1_Mode_Select" value="DCCMODE" />>
+ </path>
+ <path name="Mic1TypeDMICMode" value="setting">
+ <kctl name="Audio_MIC1_Mode_Select" value="DMIC" />>
+ <kctl name="dmic path" value="On" />
+ </path>
+ <path name="Mic1TypeDCCECMDIFFMode" value="setting">
+ <kctl name="Audio_MIC1_Mode_Select" value="DCCECMDIFFMODE" />>
+ </path>
+ <path name="Mic1TypeDCCECMSINGLEMode" value="setting">
+ <kctl name="Audio_MIC1_Mode_Select" value="DCCECMSINGLEMODE" />>
+ </path>
+ <!--mic2 type setting-->
+ <path name="Mic2TypeACCMode" value="setting">
+ <kctl name="Audio_MIC2_Mode_Select" value="ACCMODE" />>
+ </path>
+ <path name="Mic2TypeDCCMode" value="setting">
+ <kctl name="Audio_MIC2_Mode_Select" value="DCCMODE" />>
+ </path>
+ <path name="Mic2TypeDMICMode" value="setting">
+ <kctl name="Audio_MIC2_Mode_Select" value="DMIC" />>
+ <kctl name="dmic path" value="On" />
+ </path>
+ <path name="Mic2TypeDCCECMDIFFMode" value="setting">
+ <kctl name="Audio_MIC2_Mode_Select" value="DCCECMDIFFMODE" />>
+ </path>
+ <path name="Mic2TypeDCCECMSINGLEMode" value="setting">
+ <kctl name="Audio_MIC2_Mode_Select" value="DCCECMSINGLEMODE" />>
+ </path>
+ <!--mic3 type setting-->
+ <path name="Mic3TypeACCMode" value="setting">
+ <kctl name="Audio_MIC3_Mode_Select" value="ACCMODE" />>
+ </path>
+ <path name="Mic3TypeDCCMode" value="setting">
+ <kctl name="Audio_MIC3_Mode_Select" value="DCCMODE" />>
+ </path>
+ <path name="Mic3TypeDMICMode" value="setting">
+ <kctl name="Audio_MIC3_Mode_Select" value="DMIC" />>
+ <kctl name="dmic path" value="On" />
+ </path>
+ <path name="Mic3TypeDCCECMDIFFMode" value="setting">
+ <kctl name="Audio_MIC3_Mode_Select" value="DCCECMDIFFMODE" />>
+ </path>
+ <path name="Mic3TypeDCCECMSINGLEMode" value="setting">
+ <kctl name="Audio_MIC3_Mode_Select" value="DCCECMSINGLEMODE" />>
+ </path>
+ <!--mic4 type setting-->
+ <path name="Mic4TypeACCMode" value="setting">
+ <kctl name="Audio_MIC4_Mode_Select" value="ACCMODE" />>
+ </path>
+ <path name="Mic4TypeDCCMode" value="setting">
+ <kctl name="Audio_MIC4_Mode_Select" value="DCCMODE" />>
+ </path>
+ <path name="Mic4TypeDMICMode" value="setting">
+ <kctl name="Audio_MIC4_Mode_Select" value="DMIC" />>
+ <kctl name="dmic path" value="On" />
+ </path>
+ <path name="Mic4TypeDCCECMDIFFMode" value="setting">
+ <kctl name="Audio_MIC4_Mode_Select" value="DCCECMDIFFMODE" />>
+ </path>
+ <path name="Mic4TypeDCCECMSINGLEMode" value="setting">
+ <kctl name="Audio_MIC4_Mode_Select" value="DCCECMSINGLEMODE" />>
+ </path>
+ <path name="Mic_Setting_Inverse" value="setting">
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC3" />>
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC1" />>
+ </path>
+ <path name="Mic_Setting_NoInverse" value="setting">
+ <kctl name="Audio_Preamp1_Switch" value="IN_ADC1" />>
+ <kctl name="Audio_Preamp2_Switch" value="IN_ADC3" />>
+ </path>
+</mixercontrol>
diff --git a/audio_device_param/DSM.xml b/audio_device_param/DSM.xml
new file mode 100755
index 0000000..ab66739
--- /dev/null
+++ b/audio_device_param/DSM.xml
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<DSM>
+ <param name="SETGET_ENABLE" id="1">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_COILTEMP_THRESHOLD" id="2">
+ <params type="float" value="19" currentv="123.000000" />
+ </param>
+ <param name="SETGET_XCL_THRESHOLD" id="3">
+ <params type="float" value="27" currentv="123.000000" />
+ </param>
+ <param name="SETGET_LIMITERS_RELTIME" id="4">
+ <params type="float" value="30" currentv="123.000000" />
+ </param>
+ <param name="SETGET_MAKEUP_GAIN" id="5">
+ <params type="float" value="29" currentv="123.000000" />
+ </param>
+ <param name="SETGET_RDC_AT_ROOMTEMP" id="6">
+ <params type="float" value="27" currentv="123.000000" />
+ </param>
+ <param name="COPPER_CONSTANT" id="7">
+ <params type="float" value="30" currentv="123.000000" />
+ </param>
+ <param name="SETGET_COLDTEMP" id="8">
+ <params type="float" value="19" currentv="123.000000" />
+ </param>
+ <param name="SETGET_PITONE_GAIN" id="9">
+ <params type="float" value="31" currentv="123.000000" />
+ </param>
+ <param name="SETGET_LEAD_RESISTANCE" id="10">
+ <params type="float" value="27" currentv="123.000000" />
+ </param>
+ <param name="SETGET_HPCUTOFF_FREQ" id="11">
+ <params type="float" value="9" currentv="123.000000" />
+ </param>
+ <param name="SETGET_LFX_GAIN" id="12">
+ <params type="float" value="30" currentv="123.000000" />
+ </param>
+ <param name="SETGET_REF_FC" id="13">
+ <params type="float" value="9" currentv="123.000000" />
+ </param>
+ <param name="SETGET_REF_Q" id="14">
+ <params type="float" value="29" currentv="123.000000" />
+ </param>
+ <param name="INIT_F_Q_FILTERS" id="15">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="GET_ADAPTIVE_FC" id="16">
+ <params type="float" value="9" currentv="123.000000" />
+ </param>
+ <param name="GET_ADAPTIVE_Q" id="17">
+ <params type="float" value="29" currentv="123.000000" />
+ </param>
+ <param name="GET_ADAPTIVE_DC_RES" id="18">
+ <params type="float" value="27" currentv="123.000000" />
+ </param>
+ <param name="GET_ADAPTIVE_COILTEMP" id="19">
+ <params type="float" value="19" currentv="123.000000" />
+ </param>
+ <param name="GET_EXCURSION" id="20">
+ <params type="float" value="27" currentv="123.000000" />
+ </param>
+ <param name="GET_PCM_INPUT_DATA" id="21">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="GET_IV_DATA" id="22">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="GET_PCM_AND_IV_DATA" id="23">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="GET_PCM_OUTPUT_DATA" id="24">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_VLIMIT_RELEASE_TIME" id="25">
+ <params type="float" value="27" currentv="123.000000" />
+ </param>
+ <param name="SETGET_VLIMIT" id="26">
+ <params type="float" value="27" currentv="123.000000" />
+ </param>
+ <param name="SETGET_ROOM_TEMP" id="27">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_PILOT_ENABLE" id="28">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_CLIP_ENABLE" id="29">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EXC_ENABLE" id="30">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_THERMAL_ENABLE" id="31">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ_BAND_FC" id="32">
+ <params type="float" value="9" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ_BAND_Q" id="33">
+ <params type="float" value="29" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ_BAND_ATTENUATION_DB" id="34">
+ <params type="float" value="20" currentv="123.000000" />
+ </param>
+ <param name="SET_EQ_BAND_COEFF_UPDATE" id="35">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ_BAND_ENABLE" id="36">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ_BAND_DISABLE" id="37">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="GET_ZIMP_A1" id="38">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="GET_ZIMP_A2" id="39">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="GET_ZIMP_B0" id="40">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="GET_ZIMP_B1" id="41">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="GET_ZIMP_B2" id="42">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ1_A1" id="43">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ1_A2" id="44">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ1_B0" id="45">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ1_B1" id="46">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ1_B2" id="47">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ2_A1" id="48">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ2_A2" id="49">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ2_B0" id="50">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ2_B1" id="51">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ2_B2" id="52">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ3_A1" id="53">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ3_A2" id="54">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ3_B0" id="55">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ3_B1" id="56">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ3_B2" id="57">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ4_A1" id="58">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ4_A2" id="59">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ4_B0" id="60">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ4_B1" id="61">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EQ4_B2" id="62">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_TRAJECTORY" id="63">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="GET_FFTTRACK_FC" id="64">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SET_UPDATE_DELAY" id="65">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_DELAY" id="66">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="GET_MAXIMUM_DELAY" id="67">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_ENABLE_FAST_FC" id="68">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_MEASURE_DELAY" id="69">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_ENABLE_LOGGING" id="70">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_LFX_A1" id="71">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_LFX_A2" id="72">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_LFX_B0" id="73">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_LFX_B1" id="74">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_LFX_B2" id="75">
+ <params type="float" value="28" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_TCTH1" id="76">
+ <params type="float" value="20" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_TCTH2" id="77">
+ <params type="float" value="20" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_RTH1" id="78">
+ <params type="float" value="24" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_RTH2" id="79">
+ <params type="float" value="23" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_ADMIT_A1" id="80">
+ <params type="float" value="30" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_ADMIT_A2" id="81">
+ <params type="float" value="30" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_ADMIT_B0" id="82">
+ <params type="float" value="30" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_ADMIT_B1" id="83">
+ <params type="float" value="30" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_ADMIT_B2" id="84">
+ <params type="float" value="30" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SPEAKER_PARAM_UPDATE" id="85">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_FC_RESET_COUNT" id="86">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_GENERATE_SINE_WAVE" id="87">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="GET_FIRMWARE_BUILD_TIME" id="88">
+ <params type="float" value="-1" currentv="0" />
+ </param>
+ <param name="GET_FIRMWARE_BUILD_DATE" id="89">
+ <params type="float" value="-1" currentv="0" />
+ </param>
+ <param name="GET_FIRMWARE_VERSION" id="90">
+ <params type="float" value="-1" currentv="0" />
+ </param>
+ <param name="GET_CHIPSET_MODEL" id="91">
+ <params type="float" value="-1" currentv="0" />
+ </param>
+ <param name="GET_ENDIAN" id="92">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_SINE_WAVE_GAIN" id="93">
+ <params type="float" value="15" currentv="123.000000" />
+ </param>
+ <param name="SETGET_VIRTUAL_V_ENABLE" id="94">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_FORCED_VIRTUAL_V" id="95">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_I_SHIFT_BITS" id="96">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SETGET_EXC_FUNC_GAIN_ADJUSTED" id="97">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="FADE_IN_TIME_MS" id="98">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="FADE_OUT_TIME_MS" id="99">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="FADE_OUT_MUTE_TIME_MS" id="100">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="FADE_IN_MUTE_ENALE" id="101">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="FADE_OUT_MUTE_ENALE" id="102">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="ENABLE_MULTICHAN_LINKING" id="103">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="ENABLE_SMART_PT" id="104">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="PILOTTONE_SILENCE_THRESHOLD" id="105">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="SILENCE_PILOTTONE_GAIN" id="106">
+ <params type="float" value="31" currentv="123.000000" />
+ </param>
+ <param name="SILENCE_FRAMES" id="107">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="PILOTTONE_TRANSITION_FRAMES" id="108">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="LARGE_PILOTTONE_THRESHOLD" id="109">
+ <params type="float" value="0" currentv="123.000000" />
+ </param>
+ <param name="LARGE_PILOTTONE_GAIN" id="110">
+ <params type="float" value="31" currentv="123.000000" />
+ </param>
+ <param name="ENABLE_XCL_LIMITER" id="111">
+ <params type="float" value="0" currentv="0" />
+ </param>
+</DSM>
diff --git a/audio_device_param/DSM_config.xml b/audio_device_param/DSM_config.xml
new file mode 100755
index 0000000..8e57ea5
--- /dev/null
+++ b/audio_device_param/DSM_config.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<DSM>
+ <param usecase="1">
+ <params id="6" currentv="1.66" />
+ <params id="13" currentv="730" />
+ <params id="14" currentv="2.2" />
+ <params id="15" currentv="1" />
+ <params id="12" currentv="0.5" />
+ <params id="2" currentv="100" />
+ <params id="5" currentv="2.5" />
+ </param>
+ <param usecase="2">
+ <params id="6" currentv="1.94" />
+ <params id="3" currentv="0.70" />
+ <params id="9" currentv="0.01" />
+ <params id="11" currentv="100" />
+ <params id="13" currentv="780.6" />
+ <params id="14" currentv="2.132" />
+ <params id="15" currentv="1" />
+ <params id="12" currentv="0.3" />
+ <params id="2" currentv="90" />
+ <params id="5" currentv="2" />
+ <params id="71" currentv="-0.584833" />
+ <params id="72" currentv="0.779609" />
+ <params id="73" currentv="7.864015" />
+ <params id="74" currentv="-4.264444" />
+ <params id="75" currentv="5.112413" />
+ <params id="80" currentv="-1.931832" />
+ <params id="81" currentv="0.942124" />
+ <params id="82" currentv="0.134564" />
+ <params id="83" currentv="-0.264935" />
+ <params id="84" currentv="0.131782" />
+ <params id="76" currentv="2.2" />
+ <params id="77" currentv="131.6" />
+ <params id="78" currentv="53.5" />
+ <params id="79" currentv="53.5" />
+ <params id="85" currentv="1" />
+ </param>
+</DSM>
diff --git a/audio_policy.conf b/audio_policy.conf
new file mode 100755
index 0000000..b5da0d1
--- /dev/null
+++ b/audio_policy.conf
@@ -0,0 +1,186 @@
+#
+# Audio policy configuration for generic device builds (goldfish audio HAL - emulator)
+#
+
+# Global configuration section: lists input and output devices always present on the device
+# as well as the output device selected by default.
+# Devices are designated by a string that corresponds to the enum in audio.h
+
+#global_configuration {
+# attached_output_devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE
+# default_output_device AUDIO_DEVICE_OUT_SPEAKER
+# attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_FM_TUNER
+#}
+
+# audio hardware module section: contains descriptors for all audio hw modules present on the
+# device. Each hw module node is named after the corresponding hw module library base name.
+# For instance, "primary" corresponds to audio.primary.<device>.so.
+# The "primary" module is mandatory and must include at least one output with
+# AUDIO_OUTPUT_FLAG_PRIMARY flag.
+# Each module descriptor contains one or more output profile descriptors and zero or more
+# input profile descriptors. Each profile lists all the parameters supported by a given output
+# or input stream category.
+# The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding
+# to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n".
+
+audio_hw_modules {
+ primary {
+ global_configuration {
+ attached_output_devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE
+ default_output_device AUDIO_DEVICE_OUT_SPEAKER
+ attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_FM_TUNER|AUDIO_DEVICE_IN_VOICE_CALL
+ audio_hal_version 3.0
+ }
+ devices {
+ headset {
+ type AUDIO_DEVICE_OUT_WIRED_HEADSET
+ gains {
+ gain_1 {
+ mode AUDIO_GAIN_MODE_JOINT
+ channel_mask AUDIO_CHANNEL_OUT_STEREO
+ min_value_mB -6400
+ max_value_mB 0
+ default_value_mB 0
+ step_value_mB 100
+ min_ramp_ms 0
+ max_ramp_ms 0
+ }
+ }
+ }
+ headphone {
+ type AUDIO_DEVICE_OUT_WIRED_HEADPHONE
+ gains {
+ gain_1 {
+ mode AUDIO_GAIN_MODE_JOINT
+ channel_mask AUDIO_CHANNEL_OUT_STEREO
+ min_value_mB -6400
+ max_value_mB 0
+ default_value_mB 0
+ step_value_mB 100
+ min_ramp_ms 0
+ max_ramp_ms 0
+ }
+ }
+ }
+ }
+ outputs {
+ primary {
+ sampling_rates 44100|48000|96000|192000
+ channel_masks AUDIO_CHANNEL_OUT_STEREO
+ formats AUDIO_FORMAT_PCM_32_BIT|AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET|AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_FM|AUDIO_DEVICE_OUT_DEFAULT
+ flags AUDIO_OUTPUT_FLAG_PRIMARY
+ gains {
+ gain_1 {
+ mode AUDIO_GAIN_MODE_JOINT
+ channel_mask AUDIO_CHANNEL_OUT_STEREO
+ min_value_mB -6400
+ max_value_mB 0
+ default_value_mB 0
+ step_value_mB 100
+ min_ramp_ms 0
+ max_ramp_ms 0
+ }
+ }
+ }
+ hdmi_stereo {
+ sampling_rates 44100
+ channel_masks AUDIO_CHANNEL_OUT_STEREO
+ formats AUDIO_FORMAT_PCM_32_BIT|AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_OUT_AUX_DIGITAL
+ }
+ hdmi_multi_channel {
+ sampling_rates 32000|44100|48000
+ channel_masks AUDIO_CHANNEL_OUT_5POINT1|AUDIO_CHANNEL_OUT_7POINT1
+ formats AUDIO_FORMAT_PCM_32_BIT|AUDIO_FORMAT_PCM_8_24_BIT|AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_OUT_AUX_DIGITAL
+ flags AUDIO_OUTPUT_FLAG_DIRECT
+ }
+ fast {
+ sampling_rates 44100|48000|96000|192000
+ channel_masks AUDIO_CHANNEL_OUT_STEREO
+ formats AUDIO_FORMAT_PCM_32_BIT|AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_EARPIECE
+ flags AUDIO_OUTPUT_FLAG_FAST
+ }
+ }
+ inputs {
+ primary {
+ sampling_rates 8000|16000|32000|44100|48000
+ channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_VOICE_UPLINK|AUDIO_CHANNEL_IN_VOICE_DNLINK
+ formats AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_IN_COMMUNICATION|AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_AMBIENT|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_AUX_DIGITAL|AUDIO_DEVICE_IN_MATV|AUDIO_DEVICE_IN_VOICE_CALL|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_ALL_SCO|AUDIO_DEVICE_IN_FM_TUNER|AUDIO_DEVICE_IN_DEFAULT
+ }
+ }
+ }
+ a2dp {
+ global_configuration {
+ audio_hal_version 2.0
+ }
+ outputs {
+ a2dp {
+ sampling_rates 44100
+ channel_masks AUDIO_CHANNEL_OUT_STEREO
+ formats AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_OUT_ALL_A2DP
+ }
+ }
+ inputs {
+ a2dp {
+ sampling_rates 44100
+ channel_masks AUDIO_CHANNEL_IN_STEREO
+ formats AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_IN_BLUETOOTH_A2DP
+ }
+ }
+ }
+ usb {
+ global_configuration {
+ audio_hal_version 2.0
+ }
+ outputs {
+ usb_accessory {
+ sampling_rates 44100
+ channel_masks AUDIO_CHANNEL_OUT_STEREO
+ formats AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_OUT_USB_ACCESSORY
+ }
+ usb_device {
+ sampling_rates dynamic
+ channel_masks dynamic
+ formats dynamic
+ devices AUDIO_DEVICE_OUT_USB_DEVICE
+ }
+ }
+ inputs {
+ usb_device {
+ sampling_rates dynamic
+ channel_masks AUDIO_CHANNEL_IN_STEREO
+ formats AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_IN_USB_DEVICE
+ }
+ }
+ }
+ r_submix {
+ global_configuration {
+ attached_input_devices AUDIO_DEVICE_IN_REMOTE_SUBMIX
+ audio_hal_version 2.0
+ }
+ outputs {
+ r_submix {
+ sampling_rates 48000
+ channel_masks AUDIO_CHANNEL_OUT_STEREO
+ formats AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX
+ }
+ }
+ inputs {
+ r_submix {
+ sampling_rates 48000
+ channel_masks AUDIO_CHANNEL_IN_STEREO
+ formats AUDIO_FORMAT_PCM_16_BIT
+ devices AUDIO_DEVICE_IN_REMOTE_SUBMIX
+ }
+ }
+ }
+}
diff --git a/aurisys_param/phone_call/forte_media/FV-SAM-MTK2.dat b/aurisys_param/phone_call/forte_media/FV-SAM-MTK2.dat
new file mode 100755
index 0000000..10bc759
--- /dev/null
+++ b/aurisys_param/phone_call/forte_media/FV-SAM-MTK2.dat
Binary files differ
diff --git a/device.mk b/device.mk
new file mode 100755
index 0000000..d50cb37
--- /dev/null
+++ b/device.mk
@@ -0,0 +1,1338 @@
+
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.touchscreen.xml:system/etc/permissions/android.hardware.touchscreen.xml
+
+ifneq ($(strip $(CUSTOM_KERNEL_STEP_COUNTER)),)
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:system/etc/permissions/android.hardware.sensor.stepcounter.xml
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:system/etc/permissions/android.hardware.sensor.stepdetector.xml
+endif
+
+ifeq ($(strip $(MTK_IRTX_SUPPORT)),yes)
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.consumerir.xml:system/etc/permissions/android.hardware.consumerir.xml
+PRODUCT_PACKAGES += consumerir.mt6797
+PRODUCT_PACKAGES += consumerir.mt6797m
+PRODUCT_PACKAGES += consumerir.mt6753
+endif
+
+#GPU collection
+PRODUCT_PACKAGES += libI420colorconvert
+PRODUCT_PACKAGES += libvcodec_utility
+PRODUCT_PACKAGES += libvcodec_oal
+PRODUCT_PACKAGES += libh264enc_sa.ca7
+PRODUCT_PACKAGES += libh264enc_sb.ca7
+PRODUCT_PACKAGES += libHEVCdec_sa.ca7.android
+PRODUCT_PACKAGES += libmp4enc_sa.ca7
+PRODUCT_PACKAGES += libmp4enc_xa.ca7
+PRODUCT_PACKAGES += libvc1dec_sa.ca7
+PRODUCT_PACKAGES += libvp8dec_sa.ca7
+PRODUCT_PACKAGES += libvp8enc_sa.ca7
+PRODUCT_PACKAGES += libvp9dec_sa.ca7
+PRODUCT_PACKAGES += libvideoeditorplayer
+PRODUCT_PACKAGES += libvideoeditor_osal
+PRODUCT_PACKAGES += libvideoeditor_3gpwriter
+PRODUCT_PACKAGES += libvideoeditor_mcs
+PRODUCT_PACKAGES += libvideoeditor_core
+PRODUCT_PACKAGES += libvideoeditor_stagefrightshells
+PRODUCT_PACKAGES += libvideoeditor_videofilters
+PRODUCT_PACKAGES += libvideoeditor_jni
+PRODUCT_PACKAGES += audio.primary.default
+PRODUCT_PACKAGES += audio.primary.mt6797
+PRODUCT_PACKAGES += sound_trigger.primary.mt6797
+PRODUCT_PACKAGES += audio.primary.mt6797m
+PRODUCT_PACKAGES += audio.primary.mt6753
+PRODUCT_PACKAGES += audio_policy.stub
+PRODUCT_PACKAGES += local_time.default
+PRODUCT_PACKAGES += libaudiocustparam
+PRODUCT_PACKAGES += libh264dec_xa.ca9
+PRODUCT_PACKAGES += libh264dec_xb.ca9
+PRODUCT_PACKAGES += libh264dec_customize
+PRODUCT_PACKAGES += libmp4dec_sa.ca9
+PRODUCT_PACKAGES += libmp4dec_sb.ca9
+PRODUCT_PACKAGES += libmp4dec_customize
+PRODUCT_PACKAGES += libvp8dec_xa.ca9
+PRODUCT_PACKAGES += libmp4enc_xa.ca9
+PRODUCT_PACKAGES += libmp4enc_xb.ca9
+PRODUCT_PACKAGES += libh264enc_sa.ca9
+PRODUCT_PACKAGES += libh264enc_sb.ca9
+PRODUCT_PACKAGES += libvcodec_oal
+PRODUCT_PACKAGES += libvc1dec_sa.ca9
+PRODUCT_PACKAGES += liblic_divx
+PRODUCT_PACKAGES += liblic_s263
+PRODUCT_PACKAGES += init.factory.rc
+PRODUCT_PACKAGES += libaudio.primary.default
+PRODUCT_PACKAGES += audio_policy.default
+PRODUCT_PACKAGES += audio_policy.mt6797
+PRODUCT_PACKAGES += libaudio.a2dp.default
+PRODUCT_PACKAGES += libMtkVideoTranscoder
+PRODUCT_PACKAGES += libMtkOmxCore
+PRODUCT_PACKAGES += libMtkOmxOsalUtils
+PRODUCT_PACKAGES += libMtkOmxVdecEx
+PRODUCT_PACKAGES += libMtkOmxVenc
+PRODUCT_PACKAGES += libaudiodcrflt
+PRODUCT_PACKAGES += libaudiosetting
+PRODUCT_PACKAGES += librtp_jni
+PRODUCT_PACKAGES += mfv_ut
+PRODUCT_PACKAGES += libstagefrighthw
+PRODUCT_PACKAGES += libstagefright_memutil
+PRODUCT_PACKAGES += factory.ini
+PRODUCT_PACKAGES += libmtdutil
+PRODUCT_PACKAGES += libminiui
+PRODUCT_PACKAGES += factory
+PRODUCT_PACKAGES += drvbd
+PRODUCT_PACKAGES += libaudio.usb.default
+PRODUCT_PACKAGES += audio.usb.default
+PRODUCT_PACKAGES += AccountAndSyncSettings
+PRODUCT_PACKAGES += DeskClock
+PRODUCT_PACKAGES += AlarmProvider
+PRODUCT_PACKAGES += Bluetooth
+PRODUCT_PACKAGES += Calculator
+PRODUCT_PACKAGES += Calendar
+PRODUCT_PACKAGES += CertInstaller
+PRODUCT_PACKAGES += DrmProvider
+PRODUCT_PACKAGES += Email
+PRODUCT_PACKAGES += FusedLocation
+PRODUCT_PACKAGES += TelephonyProvider
+PRODUCT_PACKAGES += Exchange2
+PRODUCT_PACKAGES += LatinIME
+PRODUCT_PACKAGES += Music
+PRODUCT_PACKAGES += MusicFX
+PRODUCT_PACKAGES += Protips
+PRODUCT_PACKAGES += QuickSearchBox
+PRODUCT_PACKAGES += Settings
+PRODUCT_PACKAGES += Sync
+PRODUCT_PACKAGES += SystemUI
+PRODUCT_PACKAGES += Updater
+PRODUCT_PACKAGES += CalendarProvider
+PRODUCT_PACKAGES += ccci_mdinit
+PRODUCT_PACKAGES += ccci_fsd
+PRODUCT_PACKAGES += ccci_rpcd
+PRODUCT_PACKAGES += batterywarning
+PRODUCT_PACKAGES += SyncProvider
+PRODUCT_PACKAGES += Launcher3
+PRODUCT_PACKAGES += disableapplist.txt
+PRODUCT_PACKAGES += resmonwhitelist.txt
+PRODUCT_PACKAGES += MTKThermalManager
+PRODUCT_PACKAGES += libmtcloader
+PRODUCT_PACKAGES += thermal_manager
+PRODUCT_PACKAGES += thermald
+PRODUCT_PACKAGES += thermal
+PRODUCT_PACKAGES += CellConnService
+ifneq ($(strip $(OPTR_SPEC_SEG_DEF)),NONE)
+ PRODUCT_PACKAGES += MTKAndroidSuiteDaemon
+endif
+PRODUCT_PACKAGES += thermalloadalgod
+PRODUCT_PACKAGES += libthermalalgo
+PRODUCT_PACKAGES += ami304d
+PRODUCT_PACKAGES += akmd8963
+PRODUCT_PACKAGES += akmd09911
+PRODUCT_PACKAGES += akmd09912
+PRODUCT_PACKAGES += akmd8975
+PRODUCT_PACKAGES += istd8303
+PRODUCT_PACKAGES += AcdApiDaemon
+PRODUCT_PACKAGES += calib.dat
+PRODUCT_PACKAGES += param.dat
+PRODUCT_PACKAGES += sensors.dat
+PRODUCT_PACKAGES += geomagneticd
+PRODUCT_PACKAGES += orientationd
+PRODUCT_PACKAGES += memsicd
+PRODUCT_PACKAGES += msensord
+PRODUCT_PACKAGES += lsm303md
+PRODUCT_PACKAGES += memsicd3416x
+PRODUCT_PACKAGES += s62xd smartsensor
+PRODUCT_PACKAGES += bmm050d
+PRODUCT_PACKAGES += mc6420d
+PRODUCT_PACKAGES += magd
+PRODUCT_PACKAGES += sensors.mt6797
+PRODUCT_PACKAGES += sensors.mt6797m
+PRODUCT_PACKAGES += sensors.mt6753
+PRODUCT_PACKAGES += libhwm
+PRODUCT_PACKAGES += lights.mt6797
+PRODUCT_PACKAGES += lights.mt6797m
+PRODUCT_PACKAGES += lights.mt6753
+PRODUCT_PACKAGES += meta_tst
+PRODUCT_PACKAGES += multi_init
+PRODUCT_PACKAGES += GoogleOtaBinder
+PRODUCT_PACKAGES += dhcp6c
+PRODUCT_PACKAGES += dhcp6ctl
+PRODUCT_PACKAGES += dhcp6c.conf
+PRODUCT_PACKAGES += dhcp6cDNS.conf
+PRODUCT_PACKAGES += dhcp6s
+PRODUCT_PACKAGES += dhcp6s.conf
+PRODUCT_PACKAGES += dhcp6c.script
+PRODUCT_PACKAGES += dhcp6cctlkey
+PRODUCT_PACKAGES += libblisrc
+PRODUCT_PACKAGES += libifaddrs
+PRODUCT_PACKAGES += mobile_log_d
+PRODUCT_PACKAGES += libmobilelog_jni
+PRODUCT_PACKAGES += libaudio.r_submix.default
+PRODUCT_PACKAGES += audio.r_submix.default
+PRODUCT_PACKAGES += libaudio.usb.default
+PRODUCT_PACKAGES += libnbaio
+PRODUCT_PACKAGES += libaudioflinger
+PRODUCT_PACKAGES += libmeta_audio
+PRODUCT_PACKAGES += liba3m
+PRODUCT_PACKAGES += libja3m
+PRODUCT_PACKAGES += libmmprofile
+PRODUCT_PACKAGES += libmmprofile_jni
+PRODUCT_PACKAGES += libtvoutjni
+PRODUCT_PACKAGES += libtvoutpattern
+PRODUCT_PACKAGES += libmtkhdmi_jni
+PRODUCT_PACKAGES += aee
+PRODUCT_PACKAGES += aee_aed
+PRODUCT_PACKAGES += aee_aed64
+PRODUCT_PACKAGES += aee_core_forwarder
+PRODUCT_PACKAGES += aee_dumpstate
+PRODUCT_PACKAGES += aee_archive
+PRODUCT_PACKAGES += rtt
+PRODUCT_PACKAGES += libaed
+PRODUCT_PACKAGES += libdirect-coredump
+PRODUCT_PACKAGES += libmediatek_exceptionlog
+PRODUCT_PACKAGES += libcam_platform
+PRODUCT_PACKAGES += camera.mt6797
+PRODUCT_PACKAGES += camera.mt6753
+PRODUCT_PACKAGES += camera.mt6797m
+PRODUCT_PACKAGES += xlog
+PRODUCT_PACKAGES += liblog
+PRODUCT_PACKAGES += shutdown
+PRODUCT_PACKAGES += muxreport
+PRODUCT_PACKAGES += mtkrild
+PRODUCT_PACKAGES += mtk-ril
+PRODUCT_PACKAGES += librilmtk
+PRODUCT_PACKAGES += libutilrilmtk
+PRODUCT_PACKAGES += gsm0710muxd
+PRODUCT_PACKAGES += mtkrildmd2
+PRODUCT_PACKAGES += mtk-rilmd2
+PRODUCT_PACKAGES += librilmtkmd2
+PRODUCT_PACKAGES += gsm0710muxdmd2
+PRODUCT_PACKAGES += md_minilog_util
+PRODUCT_PACKAGES += wbxml
+PRODUCT_PACKAGES += wappush
+PRODUCT_PACKAGES += thememap.xml
+PRODUCT_PACKAGES += libBLPP.so
+PRODUCT_PACKAGES += rc.fac
+PRODUCT_PACKAGES += mtkGD
+PRODUCT_PACKAGES += pvrsrvctl
+PRODUCT_PACKAGES += libEGL_mtk.so
+PRODUCT_PACKAGES += libGLESv1_CM_mtk.so
+PRODUCT_PACKAGES += libGLESv2_mtk.so
+PRODUCT_PACKAGES += ged_srv
+PRODUCT_PACKAGES += libged.so
+ifneq ($(MTK_BASIC_PACKAGE), yes)
+ PRODUCT_PACKAGES += gas_srv
+ PRODUCT_PACKAGES += libgas.so
+endif
+PRODUCT_PACKAGES += gralloc.mt6797.so
+PRODUCT_PACKAGES += libusc.so
+PRODUCT_PACKAGES += libglslcompiler.so
+PRODUCT_PACKAGES += libIMGegl.so
+PRODUCT_PACKAGES += libpvr2d.so
+PRODUCT_PACKAGES += libsrv_um.so
+PRODUCT_PACKAGES += libsrv_init.so
+PRODUCT_PACKAGES += libPVRScopeServices.so
+PRODUCT_PACKAGES += libpvrANDROID_WSEGL.so
+PRODUCT_PACKAGES += libFraunhoferAAC
+PRODUCT_PACKAGES += audiocmdservice_atci
+PRODUCT_PACKAGES += libMtkOmxAudioEncBase
+PRODUCT_PACKAGES += libMtkOmxAmrEnc
+PRODUCT_PACKAGES += libMtkOmxAwbEnc
+PRODUCT_PACKAGES += libMtkOmxAacEnc
+PRODUCT_PACKAGES += libMtkOmxVorbisEnc
+PRODUCT_PACKAGES += libMtkOmxAdpcmEnc
+PRODUCT_PACKAGES += libMtkOmxMp3Dec
+PRODUCT_PACKAGES += libMtkOmxGsmDec
+PRODUCT_PACKAGES += libMtkOmxAacDec
+PRODUCT_PACKAGES += libMtkOmxG711Dec
+PRODUCT_PACKAGES += libMtkOmxVorbisDec
+PRODUCT_PACKAGES += libMtkOmxAudioDecBase
+PRODUCT_PACKAGES += libMtkOmxAdpcmDec
+PRODUCT_PACKAGES += libMtkOmxRawDec
+PRODUCT_PACKAGES += libMtkOmxAMRNBDec
+PRODUCT_PACKAGES += libMtkOmxAMRWBDec
+PRODUCT_PACKAGES += libvoicerecognition_jni
+PRODUCT_PACKAGES += libvoicerecognition
+PRODUCT_PACKAGES += libphonemotiondetector_jni
+PRODUCT_PACKAGES += libphonemotiondetector
+PRODUCT_PACKAGES += libmotionrecognition
+PRODUCT_PACKAGES += libasf
+PRODUCT_PACKAGES += libasfextractor
+PRODUCT_PACKAGES += audio.primary.default
+PRODUCT_PACKAGES += audio_policy.stub
+PRODUCT_PACKAGES += audio_policy.default
+PRODUCT_PACKAGES += libaudio.primary.default
+PRODUCT_PACKAGES += libaudio.a2dp.default
+PRODUCT_PACKAGES += audio.a2dp.default
+PRODUCT_PACKAGES += libaudio-resampler
+PRODUCT_PACKAGES += local_time.default
+PRODUCT_PACKAGES += libaudiocustparam
+PRODUCT_PACKAGES += libaudiodcrflt
+PRODUCT_PACKAGES += libaudiosetting
+PRODUCT_PACKAGES += librtp_jni
+PRODUCT_PACKAGES += libmatv_cust
+PRODUCT_PACKAGES += libmtkplayer
+PRODUCT_PACKAGES += libatvctrlservice
+PRODUCT_PACKAGES += matv
+PRODUCT_PACKAGES += libMtkOmxApeDec
+PRODUCT_PACKAGES += libMtkOmxFlacDec
+PRODUCT_PACKAGES += ppp_dt
+PRODUCT_PACKAGES += power.default
+PRODUCT_PACKAGES += libdiagnose
+PRODUCT_PACKAGES += netdiag
+PRODUCT_PACKAGES += tcpdump
+PRODUCT_PACKAGES += MPED
+PRODUCT_PACKAGES += libmpe.sensorlistener.so
+PRODUCT_PACKAGES += libmpe.driver.so
+PRODUCT_PACKAGES += libfusion.so
+PRODUCT_PACKAGES += libDR.so
+PRODUCT_PACKAGES += libsonivox
+PRODUCT_PACKAGES += iAmCdRom.iso
+PRODUCT_PACKAGES += libmemorydumper
+PRODUCT_PACKAGES += memorydumper
+PRODUCT_PACKAGES += libvt_custom
+PRODUCT_PACKAGES += libamrvt
+PRODUCT_PACKAGES += libvtmal
+PRODUCT_PACKAGES += libipsec_ims
+PRODUCT_PACKAGES += racoon
+PRODUCT_PACKAGES += libipsec
+PRODUCT_PACKAGES += libpcap
+PRODUCT_PACKAGES += mtpd
+PRODUCT_PACKAGES += netcfg
+PRODUCT_PACKAGES += pppd
+PRODUCT_PACKAGES += pppd_via
+PRODUCT_PACKAGES += pppd_dt
+PRODUCT_PACKAGES += dhcpcd
+PRODUCT_PACKAGES += dhcpcd.conf
+PRODUCT_PACKAGES += dhcpcd-run-hooks
+PRODUCT_PACKAGES += 20-dns.conf
+PRODUCT_PACKAGES += 95-configured
+PRODUCT_PACKAGES += radvd
+PRODUCT_PACKAGES += radvd.conf
+PRODUCT_PACKAGES += dnsmasq
+PRODUCT_PACKAGES += netd
+PRODUCT_PACKAGES += ndc
+PRODUCT_PACKAGES += libiprouteutil
+PRODUCT_PACKAGES += libnetlink
+PRODUCT_PACKAGES += tc
+PRODUCT_PACKAGES += libext2_profile
+PRODUCT_PACKAGES += e2fsck
+PRODUCT_PACKAGES += libext2_blkid
+PRODUCT_PACKAGES += libext2_e2p
+PRODUCT_PACKAGES += libext2_com_err
+PRODUCT_PACKAGES += libext2fs
+PRODUCT_PACKAGES += libext2_uuid
+PRODUCT_PACKAGES += mke2fs
+PRODUCT_PACKAGES += tune2fs
+PRODUCT_PACKAGES += badblocks
+PRODUCT_PACKAGES += resize2fs
+PRODUCT_PACKAGES += libnvram
+PRODUCT_PACKAGES += libnvram_daemon_callback
+PRODUCT_PACKAGES += libfile_op
+PRODUCT_PACKAGES += nvram_agent_binder
+PRODUCT_PACKAGES += nvram_daemon
+PRODUCT_PACKAGES += make_ext4fs
+PRODUCT_PACKAGES += sdcard
+PRODUCT_PACKAGES += libext
+PRODUCT_PACKAGES += libext4
+PRODUCT_PACKAGES += libext6
+PRODUCT_PACKAGES += libxtables
+PRODUCT_PACKAGES += libip4tc
+PRODUCT_PACKAGES += libip6tc
+PRODUCT_PACKAGES += ipod
+PRODUCT_PACKAGES += libipod
+PRODUCT_PACKAGES += fuelgauged
+PRODUCT_PACKAGES += libfgauge
+PRODUCT_PACKAGES += gatord
+PRODUCT_PACKAGES += boot_logo_updater
+PRODUCT_PACKAGES += boot_logo
+PRODUCT_PACKAGES += bootanimation
+PRODUCT_PACKAGES += kpoc_charger
+PRODUCT_PACKAGES += libtvoutjni
+PRODUCT_PACKAGES += libtvoutpattern
+PRODUCT_PACKAGES += libmtkhdmi_jni
+PRODUCT_PACKAGES += libhissage.so
+PRODUCT_PACKAGES += libhpe.so
+PRODUCT_PACKAGES += sdiotool
+PRODUCT_PACKAGES += superumount
+PRODUCT_PACKAGES += libsched
+PRODUCT_PACKAGES += fsck_msdos_mtk
+PRODUCT_PACKAGES += cmmbsp
+PRODUCT_PACKAGES += libcmmb_jni
+PRODUCT_PACKAGES += robotium
+PRODUCT_PACKAGES += libc_malloc_debug_mtk
+PRODUCT_PACKAGES += dpfd
+PRODUCT_PACKAGES += libaal
+PRODUCT_PACKAGES += aal
+PRODUCT_PACKAGES += libaal_cust
+PRODUCT_PACKAGES += SchedulePowerOnOff
+PRODUCT_PACKAGES += BatteryWarning
+PRODUCT_PACKAGES += pq
+PRODUCT_PACKAGES += libpq_cust_base
+PRODUCT_PACKAGES += libpq_cust
+PRODUCT_PACKAGES += libPQjni
+PRODUCT_PACKAGES += libPQDCjni
+PRODUCT_PACKAGES += MiraVision
+PRODUCT_PACKAGES += libMiraVision_jni
+PRODUCT_PACKAGES += hald
+PRODUCT_PACKAGES += showmap
+PRODUCT_PACKAGES += tiny_mkswap
+PRODUCT_PACKAGES += tiny_swapon
+PRODUCT_PACKAGES += tiny_swapoff
+PRODUCT_PACKAGES += dmlog
+PRODUCT_PACKAGES += mtk_msr.ko
+PRODUCT_PACKAGES += resize_ext4
+PRODUCT_PACKAGES += send_bug
+PRODUCT_PACKAGES += met-cmd
+PRODUCT_PACKAGES += libmet-tag
+PRODUCT_PACKAGES += met_log_d
+PRODUCT_PACKAGES += trace-cmd
+PRODUCT_PACKAGES += libMtkOmxRawDec
+PRODUCT_PACKAGES += libperfservice
+PRODUCT_PACKAGES += libperfservice_test
+PRODUCT_PACKAGES += libperfservicenative
+PRODUCT_PACKAGES += perf_native_test
+PRODUCT_PACKAGES += perfservapplist.txt
+PRODUCT_PACKAGES += perfservtouchfilter.txt
+PRODUCT_PACKAGES += perfservscntbl.txt
+PRODUCT_PACKAGES += perfservboosttbl.txt
+PRODUCT_PACKAGES += Videos
+PRODUCT_PACKAGES += sn
+PRODUCT_PACKAGES += lcdc_screen_cap
+PRODUCT_PACKAGES += libJniAtvService
+PRODUCT_PACKAGES += GoogleKoreanIME
+PRODUCT_PACKAGES += memtrack.mt6797
+PRODUCT_PACKAGES += memtrack.mt6797m
+PRODUCT_PACKAGES += memtrack.mt6753
+PRODUCT_PACKAGES += mbimd
+
+ifndef MTK_TB_WIFI_3G_MODE
+ PRODUCT_PACKAGES += Mms
+else
+ ifeq ($(strip $(MTK_TB_WIFI_3G_MODE)), 3GDATA_SMS)
+ PRODUCT_PACKAGES += Mms
+ endif
+endif
+
+PRODUCT_PACKAGES += libjni_koreanime.so
+PRODUCT_PACKAGES += atcid
+PRODUCT_PACKAGES += atci_service
+PRODUCT_PACKAGES += libatciserv_jni
+PRODUCT_PACKAGES += AtciService
+PRODUCT_PACKAGES += wpa_supplicant
+PRODUCT_PACKAGES += wpa_cli
+PRODUCT_PACKAGES += wpa_supplicant.conf
+PRODUCT_PACKAGES += wpa_supplicant_overlay.conf
+PRODUCT_PACKAGES += p2p_supplicant_overlay.conf
+PRODUCT_PACKAGES += hostapd
+PRODUCT_PACKAGES += hostapd_cli
+PRODUCT_PACKAGES += lib_driver_cmd_mt66xx.a
+PRODUCT_PACKAGES += Dialer
+PRODUCT_PACKAGES += CallLogBackup
+PRODUCT_PACKAGES += libacdk
+
+PRODUCT_PACKAGES += hwcomposer.mt6797
+PRODUCT_PACKAGES += hwcomposer.mt6797m
+PRODUCT_PACKAGES += hwcomposer.mt6753
+PRODUCT_PACKAGES += md_ctrl
+
+ifeq ($(strip $(MTK_CCCI_PERMISSION_CHECK_SUPPORT)),yes)
+PRODUCT_PACKAGES += permission_check
+PRODUCT_PROPERTY_OVERRIDES += persist.md.perm.checked=to_upgrade
+endif
+
+PRODUCT_PACKAGES += libGLES_android
+
+PRODUCT_PACKAGES += guiext-server
+
+PRODUCT_PACKAGES += fstab.mt6797
+
+#ifeq ($(strip $(MTK_VT3G324M_SUPPORT)),yes)
+PRODUCT_PACKAGES += libmtk_vt_client
+PRODUCT_PACKAGES += libmtk_vt_em
+PRODUCT_PACKAGES += libmtk_vt_utils
+PRODUCT_PACKAGES += libmtk_vt_service
+PRODUCT_PACKAGES += libmtk_vt_swip
+PRODUCT_PACKAGES += vtservice
+#endif
+
+ifeq ($(strip $(BUILD_MTK_LDVT)),yes)
+ PRODUCT_PACKAGES += ts_uvvf
+endif
+
+ifeq ($(strip $(MTK_TC1_FEATURE)),yes)
+ PRODUCT_PACKAGES += libtc1part
+ PRODUCT_PACKAGES += libtc1rft
+endif
+
+ifeq ($(strip $(MTK_APP_GUIDE)),yes)
+ PRODUCT_PACKAGES += ApplicationGuide
+endif
+
+ifeq ($(strip $(MTK_FLV_PLAYBACK_SUPPORT)), yes)
+ PRODUCT_PACKAGES += libflv
+ PRODUCT_PACKAGES += libflvextractor
+endif
+
+ifeq ($(strip $(MTK_ETWS_SUPPORT)), yes)
+ PRODUCT_PACKAGES += CellBroadcastReceiver
+endif
+
+ifneq ($(strip $(foreach value,$(DFO_NVRAM_SET),$(filter yes,$($(value))))),)
+ PRODUCT_PACKAGES += featured
+ PRODUCT_PACKAGES += libdfo
+ PRODUCT_PACKAGES += libdfo_jni
+endif
+
+ifeq ($(strip $(MTK_CMAS_SUPPORT)), yes)
+ PRODUCT_PACKAGES += CMASReceiver
+ PRODUCT_PACKAGES += CmasEM
+endif
+
+ifeq ($(strip $(MTK_CDS_EM_SUPPORT)), yes)
+ PRODUCT_PACKAGES += CDS_INFO
+endif
+
+#
+#
+ifeq ($(strip $(MTK_NFC_SUPPORT)), yes)
+ PRODUCT_PACKAGES += nfcservice
+endif
+
+
+ifeq ($(strip $(GEMINI)),yes)
+ ifeq ($(strip $(MTK_GEMINI_3SIM_SUPPORT)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += persist.gemini.sim_num=3
+ else
+ ifeq ($(strip $(MTK_GEMINI_4SIM_SUPPORT)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += persist.gemini.sim_num=4
+ else
+ PRODUCT_PROPERTY_OVERRIDES += persist.gemini.sim_num=2
+ endif
+ endif
+else
+ PRODUCT_PROPERTY_OVERRIDES += persist.gemini.sim_num=1
+endif
+
+ifeq ($(strip $(GEMINI)),yes)
+ ifeq ($(strip $(MTK_DT_SUPPORT)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += persist.radio.multisim.config=dsda
+ else
+ PRODUCT_PROPERTY_OVERRIDES += persist.radio.multisim.config=dsds
+ endif
+else
+ PRODUCT_PROPERTY_OVERRIDES += persist.radio.multisim.config=ss
+endif
+#
+ifeq ($(strip $(MTK_GEMINI_SMART_SIM_SWITCH)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += ro.gemini.smart_sim_switch=true
+else
+ PRODUCT_PROPERTY_OVERRIDES += ro.gemini.smart_sim_switch=false
+endif
+#
+ifeq ($(strip $(MTK_GEMINI_SMART_3G_SWITCH)),0)
+ PRODUCT_PROPERTY_OVERRIDES += ro.gemini.smart_3g_switch=0
+endif
+
+ifeq ($(strip $(MTK_GEMINI_SMART_3G_SWITCH)),1)
+ PRODUCT_PROPERTY_OVERRIDES += ro.gemini.smart_3g_switch=1
+endif
+
+ifeq ($(strip $(MTK_GEMINI_SMART_3G_SWITCH)),2)
+ PRODUCT_PROPERTY_OVERRIDES += ro.gemini.smart_3g_switch=2
+endif
+
+ifeq ($(strip $(MTK_EMMC_SUPPORT)), yes)
+ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.mount.fs=EXT4
+else
+ ifeq ($(strip $(MTK_NAND_UBIFS_SUPPORT)), yes)
+ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.mount.fs=UBIFS
+ else
+ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.mount.fs=YAFFS
+ endif
+endif
+
+ifeq ($(strip $(MTK_ENABLE_MD1)),yes)
+ ifneq ($(wildcard $(MTK_ROOT_CUSTOM_OUT))/modem/modem_1_2g_n.img),)
+ PRODUCT_PACKAGES += modem_1_2g_n.img
+ ifeq ($(MTK_MDLOGGER_SUPPORT),yes)
+ PRODUCT_PACKAGES += catcher_filter_1_2g_n.bin
+ endif
+ endif
+ ifneq ($(wildcard $(MTK_ROOT_CUSTOM_OUT))/modem/modem_1_wg_n.img),)
+ PRODUCT_PACKAGES += modem_1_wg_n.img
+ ifeq ($(MTK_MDLOGGER_SUPPORT),yes)
+ PRODUCT_PACKAGES += catcher_filter_1_wg_n.bin
+ endif
+ endif
+ ifneq ($(wildcard $(MTK_ROOT_CUSTOM_OUT))/modem/modem_1_tg_n.img),)
+ PRODUCT_PACKAGES += modem_1_tg_n.img
+ ifeq ($(MTK_MDLOGGER_SUPPORT),yes)
+ PRODUCT_PACKAGES += catcher_filter_1_tg_n.bin
+ endif
+ endif
+endif
+
+ifeq ($(strip $(MTK_ENABLE_MD2)),yes)
+ ifneq ($(wildcard $(MTK_ROOT_CUSTOM_OUT))/modem/modem_2_2g_n.img),)
+ PRODUCT_PACKAGES += modem_2_2g_n.img
+ ifeq ($(MTK_MDLOGGER_SUPPORT),yes)
+ PRODUCT_PACKAGES += catcher_filter_2_2g_n.bin
+ endif
+ endif
+ ifneq ($(wildcard $(MTK_ROOT_CUSTOM_OUT))/modem/modem_2_wg_n.img),)
+ PRODUCT_PACKAGES += modem_2_wg_n.img
+ ifeq ($(MTK_MDLOGGER_SUPPORT),yes)
+ PRODUCT_PACKAGES += catcher_filter_2_wg_n.bin
+ endif
+ endif
+ ifneq ($(wildcard $(MTK_ROOT_CUSTOM_OUT))/modem/modem_2_tg_n.img),)
+ PRODUCT_PACKAGES += modem_2_tg_n.img
+ ifeq ($(MTK_MDLOGGER_SUPPORT),yes)
+ PRODUCT_PACKAGES += catcher_filter_2_tg_n.bin
+ endif
+ endif
+endif
+
+ifeq ($(strip $(MTK_ISMS_SUPPORT)), yes)
+ PRODUCT_PACKAGES += ISmsService
+endif
+
+ifeq ($(strip $(MTK_NFC_SUPPORT)), yes)
+ PRODUCT_PACKAGES += nfcstackp
+ PRODUCT_PACKAGES += DeviceTestApp
+ PRODUCT_PACKAGES += libdta_mt6605_jni
+ PRODUCT_PACKAGES += libmtknfc_dynamic_load_jni
+ PRODUCT_PACKAGES += libnfc_mt6605_jni
+ $(call inherit-product-if-exists, vendor/mediatek/proprietary/packages/apps/DeviceTestApp/DeviceTestApp.mk)
+ $(call inherit-product-if-exists, vendor/mediatek/proprietary/external/mtknfc/mtknfc.mk)
+endif
+
+ifeq ($(strip $(MTK_MTKLOGGER_SUPPORT)), yes)
+ PRODUCT_PACKAGES += MTKLogger
+endif
+
+ifeq ($(strip $(MTK_SPECIFIC_SM_CAUSE)), yes)
+ PRODUCT_PROPERTY_OVERRIDES += ril.specific.sm_cause=1
+else
+ PRODUCT_PROPERTY_OVERRIDES += ril.specific.sm_cause=0
+endif
+
+ifeq ($(strip $(MTK_EMULATOR_SUPPORT)),yes)
+ PRODUCT_PACKAGES += SDKGallery
+else
+ PRODUCT_PACKAGES += Gallery2
+endif
+
+ifneq ($(strip $(MTK_EMULATOR_SUPPORT)),yes)
+ PRODUCT_PACKAGES += Provision
+endif
+
+ifeq ($(strip $(HAVE_CMMB_FEATURE)), yes)
+ PRODUCT_PACKAGES += CMMBPlayer
+endif
+
+ifeq ($(strip $(MTK_DATA_TRANSFER_APP)), yes)
+ PRODUCT_PACKAGES += DataTransfer
+endif
+
+ifeq ($(strip $(MTK_MDM_APP)),yes)
+ PRODUCT_PACKAGES += MediatekDM
+endif
+
+ifeq ($(strip $(MTK_VT3G324M_SUPPORT)),yes)
+ PRODUCT_PACKAGES += libmtk_vt_client
+ PRODUCT_PACKAGES += libmtk_vt_em
+ PRODUCT_PACKAGES += libmtk_vt_utils
+ PRODUCT_PACKAGES += libmtk_vt_service
+ PRODUCT_PACKAGES += libmtk_vt_swip
+ PRODUCT_PACKAGES += vtservice
+endif
+
+ifeq ($(strip $(MTK_OOBE_APP)),yes)
+ PRODUCT_PACKAGES += OOBE
+endif
+
+ifdef MTK_WEATHER_PROVIDER_APP
+ ifneq ($(strip $(MTK_WEATHER_PROVIDER_APP)), no)
+ PRODUCT_PACKAGES += MtkWeatherProvider
+ endif
+endif
+
+ifeq ($(strip $(MTK_ENABLE_VIDEO_EDITOR)),yes)
+ PRODUCT_PACKAGES += VideoEditor
+endif
+
+ifeq ($(strip $(MTK_CALENDAR_IMPORTER_APP)), yes)
+ PRODUCT_PACKAGES += CalendarImporter
+endif
+
+ifeq ($(strip $(MTK_LOG2SERVER_APP)), yes)
+ PRODUCT_PACKAGES += Log2Server
+ PRODUCT_PACKAGES += Excftpcommonlib
+ PRODUCT_PACKAGES += Excactivationlib
+ PRODUCT_PACKAGES += Excadditionnallib
+ PRODUCT_PACKAGES += Excmaillib
+endif
+
+ifeq ($(strip $(MTK_CAMERA_APP)), yes)
+ PRODUCT_PACKAGES += CameraOpen
+else
+ PRODUCT_PACKAGES += Camera
+endif
+
+ifeq ($(strip $(MTK_VIDEO_FAVORITES_WIDGET_APP)), yes)
+ ifneq ($(strip $(MTK_TABLET_PLATFORM)), yes)
+ PRODUCT_PACKAGES += VideoFavorites
+ PRODUCT_PACKAGES += libjtranscode
+ endif
+endif
+
+ifeq ($(strip $(MTK_VIDEOWIDGET_APP)),yes)
+ PRODUCT_PACKAGES += MtkVideoWidget
+endif
+
+ifeq ($(strip $(MTK_BASIC_PACKAGE)),yes)
+ PRODUCT_PACKAGES += Stk
+else
+ ifeq ($(strip $(MTK_BSP_PACKAGE)),yes)
+ PRODUCT_PACKAGES += Stk
+ else
+ PRODUCT_PACKAGES += Stk1
+ endif
+endif
+
+ifeq ($(strip $(MTK_ENGINEERMODE_APP)), yes)
+ PRODUCT_PACKAGES += EngineerMode
+ PRODUCT_PACKAGES += EngineerModeSim
+ PRODUCT_PACKAGES += libem_bt_jni
+ PRODUCT_PACKAGES += libem_platform32_dummy
+ PRODUCT_PACKAGES += libem_support_jni
+ PRODUCT_PACKAGES += libem_gpio_jni
+ PRODUCT_PACKAGES += libem_modem_jni
+ PRODUCT_PACKAGES += libem_usb_jni
+ PRODUCT_PACKAGES += libem_wifi_jni
+ PRODUCT_PACKAGES += libem_sensor_jni
+ PRODUCT_PACKAGES += libem_lte_jni
+ PRODUCT_PACKAGES += libem_mbim_jni
+ #For Engineering Mode Telephony notification(play sound)
+ ifneq ($(MTK_BASIC_PACKAGE), yes)
+ PRODUCT_COPY_FILES += vendor/mediatek/proprietary/packages/apps/EngineerMode/sounds/CADetected.ogg:system/res/sound/CADetected.ogg
+ PRODUCT_COPY_FILES += vendor/mediatek/proprietary/packages/apps/EngineerMode/sounds/CA2CA.ogg:system/res/sound/CA2CA.ogg
+ endif
+ #
+ ifeq ($(strip $(MTK_NFC_SUPPORT)), yes)
+ PRODUCT_PACKAGES += libem_nfc_jni
+ endif
+ ifneq ($(strip $(MTK_GMO_RAM_OPTIMIZE)), yes)
+ PRODUCT_PACKAGES += em_svr
+ endif
+ ifneq ($(MTK_AUDIO_TUNING_TOOL_VERSION),)
+ ifneq ($(strip $(MTK_AUDIO_TUNING_TOOL_VERSION)),V1)
+ PRODUCT_PACKAGES += libem_audio_jni
+ endif
+ endif
+
+endif
+
+ifeq ($(strip $(MTK_RCSE_SUPPORT)), yes)
+ PRODUCT_PACKAGES += Rcse
+ PRODUCT_PACKAGES += Provisioning
+endif
+
+ifeq ($(strip $(MTK_GPS_SUPPORT)), yes)
+ PRODUCT_PACKAGES += YGPS
+ PRODUCT_PACKAGES += BGW
+ PRODUCT_PROPERTY_OVERRIDES += bgw.current3gband=0
+endif
+
+ifeq ($(strip $(MTK_GPS_SUPPORT)), yes)
+ ifeq ($(strip $(MTK_GPS_CHIP)), MTK_GPS_MT6620)
+ PRODUCT_PROPERTY_OVERRIDES += gps.solution.combo.chip=1
+ endif
+ ifeq ($(strip $(MTK_GPS_CHIP)), MTK_GPS_MT6628)
+ PRODUCT_PROPERTY_OVERRIDES += gps.solution.combo.chip=1
+ endif
+ ifeq ($(strip $(MTK_GPS_CHIP)), MTK_GPS_MT3332)
+ PRODUCT_PROPERTY_OVERRIDES += gps.solution.combo.chip=0
+ endif
+endif
+
+ifeq ($(strip $(MTK_NAND_UBIFS_SUPPORT)),yes)
+ PRODUCT_PACKAGES += mkfs_ubifs
+ PRODUCT_PACKAGES += ubinize
+ PRODUCT_PACKAGES += mtdinfo
+ PRODUCT_PACKAGES += ubiupdatevol
+ PRODUCT_PACKAGES += ubirmvol
+ PRODUCT_PACKAGES += ubimkvol
+ PRODUCT_PACKAGES += ubidetach
+ PRODUCT_PACKAGES += ubiattach
+ PRODUCT_PACKAGES += ubinfo
+ PRODUCT_PACKAGES += ubiformat
+endif
+
+ifeq ($(strip $(MTK_EXTERNAL_MODEM_SLOT)),2)
+ PRODUCT_PROPERTY_OVERRIDES += ril.external.md=2
+else
+ ifeq ($(strip $(MTK_EXTERNAL_MODEM_SLOT)),1)
+ PRODUCT_PROPERTY_OVERRIDES += ril.external.md=1
+ else
+ PRODUCT_PROPERTY_OVERRIDES += ril.external.md=0
+ endif
+endif
+
+ifeq ($(strip $(MTK_LIVEWALLPAPER_APP)), yes)
+ PRODUCT_PACKAGES += LiveWallpapers
+ PRODUCT_PACKAGES += LiveWallpapersPicker
+ PRODUCT_PACKAGES += MagicSmokeWallpapers
+ PRODUCT_PACKAGES += VisualizationWallpapers
+ PRODUCT_PACKAGES += Galaxy4
+ PRODUCT_PACKAGES += HoloSpiralWallpaper
+ PRODUCT_PACKAGES += NoiseField
+ PRODUCT_PACKAGES += PhaseBeam
+endif
+
+ifeq ($(strip $(MTK_SNS_SUPPORT)), yes)
+ PRODUCT_PACKAGES += SNSCommon
+ PRODUCT_PACKAGES += SnsContentProvider
+ PRODUCT_PACKAGES += SnsWidget
+ PRODUCT_PACKAGES += SnsWidget24
+ PRODUCT_PACKAGES += SocialStream
+ ifeq ($(strip $(MTK_SNS_KAIXIN_APP)), yes)
+ PRODUCT_PACKAGES += KaiXinAccountService
+ endif
+ ifeq ($(strip $(MTK_SNS_RENREN_APP)), yes)
+ PRODUCT_PACKAGES += RenRenAccountService
+ endif
+ ifeq ($(strip $(MTK_SNS_FACEBOOK_APP)), yes)
+ PRODUCT_PACKAGES += FacebookAccountService
+ endif
+ ifeq ($(strip $(MTK_SNS_FLICKR_APP)), yes)
+ PRODUCT_PACKAGES += FlickrAccountService
+ endif
+ ifeq ($(strip $(MTK_SNS_TWITTER_APP)), yes)
+ PRODUCT_PACKAGES += TwitterAccountService
+ endif
+ ifeq ($(strip $(MTK_SNS_SINAWEIBO_APP)), yes)
+ PRODUCT_PACKAGES += WeiboAccountService
+ endif
+endif
+
+
+ifeq ($(strip $(MTK_SYSTEM_UPDATE_SUPPORT)), yes)
+ PRODUCT_PACKAGES += SystemUpdate
+ PRODUCT_PACKAGES += SystemUpdateAssistant
+endif
+
+ifeq ($(strip $(MTK_DATADIALOG_APP)), yes)
+ PRODUCT_PACKAGES += DataDialog
+endif
+
+ifeq ($(strip $(MTK_DATA_TRANSFER_APP)), yes)
+ PRODUCT_PACKAGES += DataTransfer
+endif
+
+ifeq ($(strip $(MTK_FM_SUPPORT)), yes)
+ PRODUCT_PACKAGES += FMRadio
+endif
+
+ifeq ($(strip $(MTK_CAM_LOMO_SUPPORT)), yes)
+ PRODUCT_PROPERTY_OVERRIDES += ro.mtk_cam_lomo_support=1
+ PRODUCT_PACKAGES += libjni_lomoeffect
+endif
+
+ifeq (MT6620_FM,$(strip $(MTK_FM_CHIP)))
+ PRODUCT_PROPERTY_OVERRIDES += fmradio.driver.chip=1
+endif
+
+ifeq (MT6626_FM,$(strip $(MTK_FM_CHIP)))
+ PRODUCT_PROPERTY_OVERRIDES += fmradio.driver.chip=2
+endif
+
+ifeq (MT6628_FM,$(strip $(MTK_FM_CHIP)))
+ PRODUCT_PROPERTY_OVERRIDES += fmradio.driver.chip=3
+endif
+
+ifeq ($(strip $(MTK_DT_SUPPORT)),yes)
+ ifneq ($(strip $(MTK_C2K_SUPPORT)),yes)
+ ifeq ($(strip $(MTK_MDLOGGER_SUPPORT)),yes)
+ PRODUCT_PACKAGES += ExtModemLog
+ PRODUCT_PACKAGES += libextmdlogger_ctrl_jni
+ PRODUCT_PACKAGES += libextmdlogger_ctrl
+ PRODUCT_PACKAGES += extmdlogger
+ endif
+ endif
+endif
+
+ifeq ($(strip $(MTK_ACWFDIALOG_APP)), yes)
+ PRODUCT_PACKAGES += AcwfDialog
+endif
+
+ifeq ($(strip $(MTK_ENGINEERMODE_APP)), yes)
+ PRODUCT_PACKAGES += EngineerMode
+ PRODUCT_PACKAGES += MobileLog
+endif
+
+ifeq ($(strip $(HAVE_MATV_FEATURE)),yes)
+ PRODUCT_PACKAGES += MtvPlayer
+ PRODUCT_PACKAGES += MATVEM
+ PRODUCT_PACKAGES += com.mediatek.atv.adapter
+endif
+
+ifneq ($(strip $(MTK_LCM_PHYSICAL_ROTATION)),)
+ PRODUCT_PROPERTY_OVERRIDES += ro.sf.hwrotation=$(MTK_LCM_PHYSICAL_ROTATION)
+endif
+
+ifeq ($(strip $(MTK_FM_TX_SUPPORT)), yes)
+ PRODUCT_PACKAGES += FMTransmitter
+endif
+
+ifeq ($(strip $(MTK_SOUNDRECORDER_APP)),yes)
+ PRODUCT_PACKAGES += SoundRecorder
+endif
+
+ifeq ($(strip $(MTK_LOCKSCREEN_TYPE)),2)
+ PRODUCT_PACKAGES += MtkWallPaper
+endif
+
+ifneq ($(strip $(MTK_LOCKSCREEN_TYPE)),)
+ PRODUCT_PROPERTY_OVERRIDES += curlockscreen=$(MTK_LOCKSCREEN_TYPE)
+endif
+
+ifeq ($(strip $(MTK_OMA_DOWNLOAD_SUPPORT)),yes)
+ PRODUCT_PACKAGES += Browser
+ PRODUCT_PACKAGES += DownloadProvider
+endif
+
+ifeq ($(strip $(MTK_OMACP_SUPPORT)),yes)
+ PRODUCT_PACKAGES += Omacp
+endif
+
+ifeq ($(strip $(MTK_VIDEO_THUMBNAIL_PLAY_SUPPORT)),yes)
+ PRODUCT_PACKAGES += libjtranscode
+endif
+
+ifeq ($(strip $(MTK_WIFI_P2P_SUPPORT)),yes)
+ PRODUCT_PACKAGES += WifiContactSync
+ PRODUCT_PACKAGES += WifiP2PWizardy
+ PRODUCT_PACKAGES += FileSharingServer
+ PRODUCT_PACKAGES += FileSharingClient
+ PRODUCT_PACKAGES += UPnPAV
+ PRODUCT_PACKAGES += WifiWsdsrv
+ PRODUCT_PACKAGES += bonjourExplorer
+endif
+
+ifeq ($(strip $(CUSTOM_KERNEL_TOUCHPANEL)),generic)
+ PRODUCT_PACKAGES += Calibrator
+endif
+
+ifeq ($(strip $(MTK_FILEMANAGER_APP)), yes)
+ PRODUCT_PACKAGES += FileManager
+endif
+
+ifeq ($(strip $(MTK_ENGINEERMODE_APP)), yes)
+ PRODUCT_PACKAGES += ActivityNetwork
+endif
+
+ifneq ($(findstring OP03, $(strip $(OPTR_SPEC_SEG_DEF))),)
+ PRODUCT_PACKAGES += SimCardAuthenticationService
+endif
+
+ifeq ($(strip $(MTK_NFC_SUPPORT)), yes)
+ PRODUCT_PACKAGES += NxpSecureElement
+endif
+
+ifeq ($(strip $(MTK_NFC_OMAAC_SUPPORT)),yes)
+ PRODUCT_PACKAGES += SmartcardService
+ PRODUCT_PACKAGES += org.simalliance.openmobileapi
+ PRODUCT_PACKAGES += org.simalliance.openmobileapi.xml
+ PRODUCT_PACKAGES += libassd
+endif
+
+ifeq ($(strip $(MTK_APKINSTALLER_APP)), yes)
+ PRODUCT_PACKAGES += APKInstaller
+endif
+
+ifeq ($(strip $(MTK_SMSREG_APP)), yes)
+ PRODUCT_PACKAGES += SmsReg
+endif
+
+ifeq ($(strip $(GEMINI)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += ro.mediatek.gemini_support=true
+else
+ PRODUCT_PROPERTY_OVERRIDES += ro.mediatek.gemini_support=false
+endif
+
+ifeq ($(MTK_BACKUPANDRESTORE_APP),yes)
+ PRODUCT_PACKAGES += BackupAndRestore
+endif
+
+ifeq ($(strip $(MTK_BWC_SUPPORT)), yes)
+ PRODUCT_PACKAGES += libbwc
+endif
+
+ifeq ($(strip $(MTK_GPU_SUPPORT)), yes)
+ ifeq ($(MTK_PLATFORM),$(filter $(MTK_PLATFORM),MT6797))
+ PRODUCT_PACKAGES += gralloc.mt6797
+ PRODUCT_PACKAGES += gralloc.mt6797m
+ PRODUCT_PACKAGES += gralloc.mt6753
+ PRODUCT_PACKAGES += libGLES_mali
+ PRODUCT_PACKAGES += libgpu_aux
+ PRODUCT_PACKAGES += libRSDriver_mtk
+ PRODUCT_PACKAGES += libLLVM-RS
+ PRODUCT_PACKAGES += rs2spir
+ PRODUCT_PACKAGES += spir2cl
+ endif
+endif
+
+
+ifeq ($(strip $(MTK_DT_SUPPORT)),yes)
+ PRODUCT_PACKAGES += ip-up
+ PRODUCT_PACKAGES += ip-down
+ PRODUCT_PACKAGES += ppp_options
+ PRODUCT_PACKAGES += chap-secrets
+ PRODUCT_PACKAGES += init.gprs-pppd
+endif
+
+ifdef OPTR_SPEC_SEG_DEF
+ ifneq ($(strip $(OPTR_SPEC_SEG_DEF)),NONE)
+ OPTR := $(word 1,$(subst _,$(space),$(OPTR_SPEC_SEG_DEF)))
+ SPEC := $(word 2,$(subst _,$(space),$(OPTR_SPEC_SEG_DEF)))
+ SEG := $(word 3,$(subst _,$(space),$(OPTR_SPEC_SEG_DEF)))
+ $(call inherit-product-if-exists, mediatek/operator/$(OPTR)/$(SPEC)/$(SEG)/optr_apk_config.mk)
+
+ # Todo:
+ # obsolete this section's configuration for operator project resource overlay
+ # once all operator related overlay resource moved to custom folder
+ PRODUCT_PACKAGE_OVERLAYS += mediatek/operator/$(OPTR)/$(SPEC)/$(SEG)/OverLayResource
+ # End
+
+ PRODUCT_PROPERTY_OVERRIDES += ro.operator.optr=$(OPTR)
+ PRODUCT_PROPERTY_OVERRIDES += ro.operator.spec=$(SPEC)
+ PRODUCT_PROPERTY_OVERRIDES += ro.operator.seg=$(SEG)
+ endif
+endif
+
+ifneq ($(TARGET_BUILD_VARIANT),user)
+ ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=0
+else
+ ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1
+endif
+
+ifeq ($(strip $(GEMINI)), yes)
+ ifeq ($(OPTR_SPEC_SEG_DEF),NONE)
+ PRODUCT_PACKAGES += StkSelection
+ endif
+ ifeq (OP01,$(word 1,$(subst _, ,$(OPTR_SPEC_SEG_DEF))))
+ PRODUCT_PACKAGES += StkSelection
+ endif
+ ifndef OPTR_SPEC_SEG_DEF
+ PRODUCT_PACKAGES += StkSelection
+ endif
+endif
+
+ifeq (yes,$(strip $(MTK_FD_SUPPORT)))
+ # Only support the format: n.m (n:1 or 1+ digits, m:Only 1 digit) or n (n:integer)
+ PRODUCT_PROPERTY_OVERRIDES += persist.radio.fd.counter=15
+ PRODUCT_PROPERTY_OVERRIDES += persist.radio.fd.off.counter=5
+ PRODUCT_PROPERTY_OVERRIDES += persist.radio.fd.r8.counter=15
+ PRODUCT_PROPERTY_OVERRIDES += persist.radio.fd.off.r8.counter=5
+endif
+
+
+#################################################
+#Widevine DRM part
+ifeq ($(strip $(MTK_WVDRM_SUPPORT)),yes)
+ #both L1 and L3 library
+ PRODUCT_PROPERTY_OVERRIDES += drm.service.enabled=true
+ PRODUCT_PACKAGES += com.google.widevine.software.drm.xml
+ PRODUCT_PACKAGES += com.google.widevine.software.drm
+ PRODUCT_PACKAGES += libdrmmtkutil
+ PRODUCT_PACKAGES += libdrmwvmplugin
+ PRODUCT_PACKAGES += libwvm
+ PRODUCT_PACKAGES += libdrmdecrypt
+ ifeq ($(strip $(MTK_WVDRM_L1_SUPPORT)),yes)
+ PRODUCT_PACKAGES += libWVStreamControlAPI_L1
+ PRODUCT_PACKAGES += libwvdrm_L1
+ PRODUCT_PACKAGES += lib_uree_mtk_crypto
+ else
+ PRODUCT_PACKAGES += libWVStreamControlAPI_L3
+ PRODUCT_PACKAGES += libwvdrm_L3
+ endif
+else
+ PRODUCT_PROPERTY_OVERRIDES += drm.service.enabled=false
+endif
+
+###Modular drm
+ifeq ($(strip $(MTK_WVDRM_SUPPORT)),yes)
+ #Mock modular drm plugin for cts
+ PRODUCT_PACKAGES += libmockdrmcryptoplugin
+ #both L1 and L3 library
+ PRODUCT_PACKAGES += libwvdrmengine
+ ifeq ($(strip $(MTK_WVDRM_L1_SUPPORT)),yes)
+ PRODUCT_PACKAGES += lib_uree_mtk_modular_drm
+ PRODUCT_PACKAGES += liboemcrypto
+ endif
+endif
+
+################################################
+
+#################################################
+#OMA DRM part, MTK_DRM_APP should be set to false
+ifeq ($(strip $(MTK_DRM_APP)),yes)
+ PRODUCT_PACKAGES += libdrmmtkutil
+ #Media framework reads this property
+ PRODUCT_PROPERTY_OVERRIDES += drm.service.enabled=true
+ ifeq ($(strip $(MTK_OMADRM_SUPPORT)), yes)
+ PRODUCT_PACKAGES += libdrmmtkplugin
+ PRODUCT_PACKAGES += drm_chmod
+ PRODUCT_PACKAGES += libdcfdecoderjni
+ endif
+ ifeq ($(strip $(MTK_CTA_SET)), yes)
+ PRODUCT_PACKAGES += libdrmctaplugin
+ PRODUCT_PACKAGES += DataProtection
+ endif
+endif
+################################################
+
+ifeq (yes,$(strip $(MTK_FM_SUPPORT)))
+ PRODUCT_PROPERTY_OVERRIDES += fmradio.driver.enable=1
+else
+ PRODUCT_PROPERTY_OVERRIDES += fmradio.driver.enable=0
+endif
+
+
+
+
+
+ifeq ($(strip $(HAVE_SRSAUDIOEFFECT_FEATURE)),yes)
+ PRODUCT_PACKAGES += DTSTruMedia
+ PRODUCT_PACKAGES += libsrsprocessing
+endif
+
+ifeq ($(strip $(MTK_DOLBY_DAP_SUPPORT)), yes)
+ PRODUCT_PACKAGES += libdseffect \
+ Ds \
+ DsUI \
+ dolby_ds
+endif
+
+ifeq ($(strip $(MTK_AUDIO_DDPLUS_SUPPORT)), yes)
+ PRODUCT_PACKAGES += libstagefright_soft_ddpdec
+endif
+
+ifeq ($(strip $(MTK_WEATHER_WIDGET_APP)), yes)
+ PRODUCT_PACKAGES += MtkWeatherWidget
+endif
+
+ifeq ($(strip $(MTK_ECCCI_C2K)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += mtk.eccci.c2k=enabled
+endif
+
+ifeq ($(strip $(MTK_FIRST_MD)),1)
+ PRODUCT_PROPERTY_OVERRIDES += ril.first.md=1
+endif
+
+ifeq ($(strip $(MTK_FIRST_MD)),2)
+ PRODUCT_PROPERTY_OVERRIDES += ril.first.md=2
+endif
+
+ifeq ($(strip $(MTK_FLIGHT_MODE_POWER_OFF_MD)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += ril.flightmode.poweroffMD=1
+else
+ PRODUCT_PROPERTY_OVERRIDES += ril.flightmode.poweroffMD=0
+endif
+
+ifeq ($(strip $(MTK_FIRST_MD)),1)
+ PRODUCT_PROPERTY_OVERRIDES += ril.first.md=1
+endif
+
+ifeq ($(strip $(MTK_FIRST_MD)),2)
+ PRODUCT_PROPERTY_OVERRIDES += ril.first.md=2
+endif
+
+ifeq ($(strip $(MTK_TELEPHONY_MODE)),0)
+ PRODUCT_PROPERTY_OVERRIDES += ril.telephony.mode=0
+endif
+
+ifeq ($(strip $(MTK_TELEPHONY_MODE)),1)
+ PRODUCT_PROPERTY_OVERRIDES += ril.telephony.mode=1
+endif
+
+ifeq ($(strip $(MTK_TELEPHONY_MODE)),2)
+ PRODUCT_PROPERTY_OVERRIDES += ril.telephony.mode=2
+endif
+
+ifeq ($(strip $(MTK_TELEPHONY_MODE)),3)
+ PRODUCT_PROPERTY_OVERRIDES += ril.telephony.mode=3
+endif
+
+ifeq ($(strip $(MTK_TELEPHONY_MODE)),4)
+ PRODUCT_PROPERTY_OVERRIDES += ril.telephony.mode=4
+endif
+
+ifeq ($(strip $(MTK_TELEPHONY_MODE)),5)
+ PRODUCT_PROPERTY_OVERRIDES += ril.telephony.mode=5
+endif
+
+ifeq ($(strip $(MTK_TELEPHONY_MODE)),6)
+ PRODUCT_PROPERTY_OVERRIDES += ril.telephony.mode=6
+endif
+
+ifeq ($(strip $(MTK_TELEPHONY_MODE)),7)
+ PRODUCT_PROPERTY_OVERRIDES += ril.telephony.mode=7
+endif
+
+ifeq ($(strip $(MTK_TELEPHONY_MODE)),8)
+ PRODUCT_PROPERTY_OVERRIDES += ril.telephony.mode=8
+endif
+
+ifeq ($(strip $(MTK_AGPS_APP)), yes)
+ PRODUCT_PACKAGES += LocationEM \
+ LocationEM2 \
+ mtk_agpsd \
+ libssladp \
+ cacerts_supl \
+ AutoDialer
+ PRODUCT_COPY_FILES += device/mediatek/common/agps/agps_profiles_conf2.xml:system/etc/agps_profiles_conf2.xml
+endif
+
+PRODUCT_PACKAGES += wifi2agps
+
+ifeq ($(strip $(MTK_WFD_SINK_SUPPORT)), yes)
+ PRODUCT_PACKAGES += MtkFloatMenu
+endif
+
+PRODUCT_PACKAGES += libsec
+PRODUCT_PACKAGES += sbchk
+
+PRODUCT_BRAND := alps
+PRODUCT_MANUFACTURER := alps
+
+# for USB Accessory Library/permission
+# Mark for early porting in JB
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml
+PRODUCT_PACKAGES += com.android.future.usb.accessory
+
+# System property for MediaTek ANR pre-dump.
+PRODUCT_PROPERTY_OVERRIDES += dalvik.vm.mtk-stack-trace-file=/data/anr/mtk_traces.txt
+
+ifeq ($(strip $(MTK_WLAN_SUPPORT)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += mediatek.wlan.chip=$(MTK_WLAN_CHIP)
+ PRODUCT_PROPERTY_OVERRIDES += mediatek.wlan.module.postfix="_"$(shell echo $(strip $(MTK_WLAN_CHIP)) | tr A-Z a-z)
+endif
+
+ifeq ($(strip $(MTK_RILD_READ_IMSI)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += ril.read.imsi=1
+endif
+
+ifeq ($(strip $(MTK_RADIOOFF_POWER_OFF_MD)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += ril.radiooff.poweroffMD=1
+else
+ PRODUCT_PROPERTY_OVERRIDES += ril.radiooff.poweroffMD=0
+endif
+
+ifeq ($(strip $(MTK_FACTORY_RESET_PROTECTION_SUPPORT)),yes)
+ PRODUCT_PROPERTY_OVERRIDES += ro.frp.pst=/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/frp
+endif
+
+PRODUCT_COPY_FILES += device/mediatek/mt6797/init.mt6797.rc:root/init.mt6797.rc
+PRODUCT_COPY_FILES += device/mediatek/mt6797/factory_init.rc:root/factory_init.rc
+PRODUCT_COPY_FILES += device/mediatek/mt6797/init.modem.rc:root/init.modem.rc
+PRODUCT_COPY_FILES += device/mediatek/mt6797/ueventd.mt6797.rc:root/ueventd.mt6797.rc
+
+ifeq ($(strip $(MTK_FAT_ON_NAND)),yes)
+PRODUCT_COPY_FILES += device/mediatek/mt6797/init.fon.rc:root/init.fon.rc
+endif
+
+PRODUCT_COPY_FILES += device/mediatek/mt6797/init.xlog.rc:root/init.xlog.rc
+PRODUCT_COPY_FILES += device/mediatek/mt6797/meta_init.modem.rc:root/meta_init.modem.rc
+PRODUCT_COPY_FILES += device/mediatek/mt6797/meta_init.rc:root/meta_init.rc
+PRODUCT_COPY_FILES += device/mediatek/mt6797/init.mt6797.usb.rc:root/init.mt6797.usb.rc
+PRODUCT_COPY_FILES += device/mediatek/mt6797/init.recovery.mt6797.rc:root/init.recovery.mt6797.rc
+PRODUCT_COPY_FILES += device/mediatek/mt6797/egl.cfg:system/lib/egl/egl.cfg
+ifneq ($(strip $(MTK_EMMC_SUPPORT)), yes)
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/fstab.mt6797.nand:root/fstab.mt6797
+endif
+ifeq ($(TARGET_BUILD_VARIANT),eng)
+ PRODUCT_COPY_FILES += $(LOCAL_PATH)/thermal.eng.conf:system/etc/.tp/thermal.conf
+else
+ PRODUCT_COPY_FILES += $(LOCAL_PATH)/thermal.conf:system/etc/.tp/thermal.conf
+endif
+
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/thermal.wfd.6797.conf:system/etc/.tp/.thermal_policy_00
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/thermal.pip.6797.conf:system/etc/.tp/.thermal_policy_01
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/thermal.fdvrgis.6797.conf:system/etc/.tp/.thermal_policy_02
+
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/thermal.off.conf:system/etc/.tp/thermal.off.conf
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/partition_permission.sh:system/etc/partition_permission.sh
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/ht120.mtc:system/etc/.tp/.ht120.mtc
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/throttle.sh:system/etc/throttle.sh
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/enableswap.sh:root/enableswap.sh
+
+PRODUCT_COPY_FILES += device/mediatek/mt6797/media_codecs.xml:system/etc/media_codecs.xml
+PRODUCT_COPY_FILES += device/mediatek/mt6797/media_codecs_mediatek_audio.xml:system/etc/media_codecs_mediatek_audio.xml
+PRODUCT_COPY_FILES += device/mediatek/mt6797/media_codecs_mediatek_video.xml:system/etc/media_codecs_mediatek_video.xml
+PRODUCT_COPY_FILES += device/mediatek/mt6797/media_codecs.xml:system/etc/permissions/media_codecs.xml
+PRODUCT_COPY_FILES += device/mediatek/mt6797/media_codecs_performance.xml:system/etc/media_codecs_performance.xml
+PRODUCT_COPY_FILES += device/mediatek/mt6797/mtk_omx_core.cfg:system/etc/mtk_omx_core.cfg
+PRODUCT_COPY_FILES += frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:system/etc/media_codecs_google_audio.xml
+PRODUCT_COPY_FILES += frameworks/av/media/libstagefright/data/media_codecs_google_video_le.xml:system/etc/media_codecs_google_video_le.xml
+
+#Audio config
+PRODUCT_COPY_FILES += device/mediatek/mt6797/audio_device.xml:system/etc/audio_device.xml
+
+#Audio config
+PRODUCT_COPY_FILES += device/mediatek/mt6797/audio_device_param/DSM_config.xml:system/etc/DSM_config.xml
+PRODUCT_COPY_FILES += device/mediatek/mt6797/audio_device_param/DSM.xml:system/etc/DSM.xml
+
+#aurisys library parameters
+ifeq ($(MTK_AURISYS_PHONE_CALL_SUPPORT),yes)
+PRODUCT_PACKAGES += libfvaudio
+PRODUCT_PACKAGES += AudioSetParam
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/aurisys_param/phone_call/forte_media/FV-SAM-MTK2.dat:system/etc/FV-SAM-MTK2.dat
+endif
+
+ifeq ($(strip $(TRUSTONIC_TEE_SUPPORT)), yes)
+ PRODUCT_PACKAGES += keystore.mt6797
+ PRODUCT_PACKAGES += keystore.mt6797m
+ PRODUCT_PACKAGES += keystore.mt6753
+ PRODUCT_PACKAGES += libMcGatekeeper
+ PRODUCT_COPY_FILES += device/mediatek/mt6797/init.trustonic.rc:root/init.trustonic.rc
+ PRODUCT_PACKAGES += liburee_meta_drmkeyinstall
+ PRODUCT_PACKAGES += rda
+endif
+
+ifeq ($(strip $(MICROTRUST_TEE_SUPPORT)), yes)
+ PRODUCT_COPY_FILES += device/mediatek/mt6797/init.microtrust.rc:root/init.microtrust.rc
+ #PRODUCT_COPY_FILES += vendor/mediatek/proprietary/trustzone/microtrust/source/platform/mt6797/teei/alipayapp:system/thh/alipayapp
+ PRODUCT_COPY_FILES += vendor/mediatek/proprietary/trustzone/microtrust/source/platform/mt6797/teei/soter.raw:system/thh/soter.raw
+ PRODUCT_COPY_FILES += vendor/mediatek/proprietary/trustzone/microtrust/source/platform/mt6797/teei/fp_server:system/thh/fp_server
+ PRODUCT_COPY_FILES += vendor/mediatek/proprietary/trustzone/microtrust/source/platform/mt6797/teei/init_thh:system/bin/init_thh
+ #PRODUCT_PACKAGES += libteei_fp
+ #PRODUCT_PACKAGES += libfingerprint_tac
+endif
+#inherit common platform
+$(call inherit-product, device/mediatek/common/device.mk)
+
+#inherit prebuilt
+$(call inherit-product-if-exists, vendor/mediatek/mt6797/device-vendor.mk)
+
+# for 3Gdongle
+ifeq ($(strip $(MTK_EXTERNAL_DONGLE_SUPPORT)), yes)
+ PRODUCT_PACKAGES += dongled \
+ chat \
+ rild_dongle \
+ libril_dongle \
+ Dongle \
+ TeledongleDemo \
+ tedongle-telephony
+
+ $(call inherit-product-if-exists, vendor/mediatek/proprietary/hardware/dongle-ril/vendorSoFile64/vendorSoFile.mk)
+ $(call inherit-product-if-exists, vendor/mediatek/proprietary/hardware/dongle-ril/dongled/dongled.mk)
+ $(call inherit-product-if-exists, vendor/mediatek/proprietary/hardware/dongle-ril/vendor001-ril/vendor001-ril.mk)
+ $(call inherit-product-if-exists, vendor/mediatek/proprietary/hardware/dongle-ril/vendor002-ril/vendor002-ril.mk)
+ $(call inherit-product-if-exists, frameworks/opt/tedongle/tedonglePermission.mk)
+endif
+
diff --git a/egl.cfg b/egl.cfg
new file mode 100755
index 0000000..cadf420
--- /dev/null
+++ b/egl.cfg
@@ -0,0 +1,3 @@
+# NOTICE: This is an autogenerated file, do not edit\n
+0 0 android
+0 1 mali
diff --git a/emdlogger_usb_config.prop b/emdlogger_usb_config.prop
new file mode 100755
index 0000000..64a2fd2
--- /dev/null
+++ b/emdlogger_usb_config.prop
@@ -0,0 +1,8 @@
+EMDLOGGER_1=1
+EMDLOGGER_2=0
+EMDLOGGER_3=2
+EMDLOGGER_4=0
+EMDLOGGER_5=0
+EMDLOGGER_6=0
+EMDLOGGER_7=0
+EMDLOGGER_8=0
diff --git a/enableswap.sh b/enableswap.sh
new file mode 100755
index 0000000..186b4b9
--- /dev/null
+++ b/enableswap.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+echo 0 > /sys/block/zram0/disksize
+/system/bin/tiny_mkswap /dev/block/zram0
+/system/bin/tiny_swapon /dev/block/zram0
diff --git a/factory_init.rc b/factory_init.rc
new file mode 100755
index 0000000..a420fd7
--- /dev/null
+++ b/factory_init.rc
@@ -0,0 +1,660 @@
+import factory_init.connectivity.rc
+import /init.environ.rc
+import init.fon.rc
+import init.trustonic.rc
+import init.nvdata.rc
+import init.microtrust.rc
+
+on early-init
+ # Set init and its forked children's oom_adj.
+ write /proc/1/oom_score_adj -1000
+
+ # Set the security context of /adb_keys if present.
+ restorecon /adb_keys
+
+ mount debugfs debugfs /sys/kernel/debug
+ chmod 0755 /sys/kernel/debug
+
+ start ueventd
+
+ write /proc/bootprof "INIT: usr/eng build setting"
+
+on init
+
+sysclktz 0
+
+loglevel 5
+
+# Backward compatibility
+ symlink /system/etc /etc
+ symlink /sys/kernel/debug /d
+
+# Temp Backward compatibility
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/boot /dev/bootimg
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/recovery /dev/recovery
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/secro /dev/sec_ro
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/kb /dev/kb
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/dkb /dev/dkb
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/seccfg /dev/seccfg
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/proinfo /dev/pro_info
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/nvram /dev/nvram
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/para /dev/misc
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/logo /dev/logo
+
+
+# Link /vendor to /system/vendor for devices without a vendor partition.
+ symlink /system/vendor /vendor
+
+# Create cgroup mount point for cpu accounting
+ mkdir /acct
+ mount cgroup none /acct cpuacct
+ mkdir /acct/uid
+
+ mkdir /system
+ mkdir /data 0771 system system
+ mkdir /cache 0770 system cache
+ mkdir /config 0500 root root
+ mkdir /protect_f 0771 system system
+ mkdir /protect_s 0771 system system
+ mkdir /nvcfg 0771 system system
+
+# Mount staging areas for devices managed by vold
+ # See storage config details at http://source.android.com/tech/storage/
+ mkdir /mnt 0755 root system
+ mount tmpfs tmpfs /mnt mode=0755,uid=0,gid=1000
+ restorecon_recursive /mnt
+ # Support legacy paths
+ symlink /sdcard /mnt/sdcard
+
+ mkdir /mnt/secure 0700 root root
+ mkdir /mnt/secure/asec 0700 root root
+ mkdir /mnt/asec 0755 root system
+ mkdir /mnt/obb 0755 root system
+ mkdir /mnt/media_rw 0750 root media_rw
+ mkdir /mnt/user 0755 root root
+ mkdir /mnt/user/0 0755 root root
+ mkdir /mnt/expand 0771 system system
+
+ # Storage views to support runtime permissions
+ mkdir /storage 0755 root root
+ mkdir /mnt/runtime 0700 root root
+ mkdir /mnt/runtime/default 0755 root root
+ mkdir /mnt/runtime/default/self 0755 root root
+ mkdir /mnt/runtime/read 0755 root root
+ mkdir /mnt/runtime/read/self 0755 root root
+ mkdir /mnt/runtime/write 0755 root root
+ mkdir /mnt/runtime/write/self 0755 root root
+
+ # Symlink to keep legacy apps working in multi-user world
+ symlink /storage/self/primary /sdcard
+ symlink /mnt/user/0/primary /mnt/runtime/default/self/primary
+
+ write /proc/sys/kernel/panic_on_oops 1
+ write /proc/sys/kernel/hung_task_timeout_secs 0
+ write /proc/cpu/alignment 4
+ write /proc/sys/kernel/sched_latency_ns 10000000
+ write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
+ write /proc/sys/kernel/sched_compat_yield 1
+ write /proc/sys/kernel/sched_child_runs_first 0
+
+ # Healthd can trigger a full boot from charger mode by signaling this
+ # property when the power button is held.
+ on property:sys.boot_from_charger_mode=1
+ class_stop charger
+ trigger late-init
+
+ # Load properties from /system/ + /factory after fs mount.
+ on load_all_props_action
+ load_all_props
+
+ # Mount filesystems and start core system services.
+ on late-init
+ trigger early-fs
+ trigger fs
+ trigger post-fs
+ trigger post-fs-data
+
+ # Load properties from /system/ + /factory after fs mount. Place
+ # this in another action so that the load will be scheduled after the prior
+ # issued fs triggers have completed.
+ trigger load_all_props_action
+
+ trigger early-boot
+ trigger boot
+
+on fs
+ mkdir /dev/usb-ffs 0770 shell shell
+ mkdir /dev/usb-ffs/adb 0770 shell shell
+ mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
+ write /sys/class/android_usb/android0/f_ffs/aliases adb
+
+#INTERNAL_START
+ write /proc/bootprof "INIT:Mount_START"
+ mount_all /fstab.mt6797
+ write /proc/bootprof "INIT:Mount_END"
+#INTERNAL_END
+
+on post-fs
+
+ start logd
+ # once everything is setup, no need to modify /
+ mount rootfs rootfs / ro remount
+ # Mount shared so changes propagate into child namespaces
+ mount rootfs rootfs / shared rec
+ # Mount default storage into root namespace
+ mount none /mnt/runtime/default /storage slave bind rec
+ # Support legacy paths
+ symlink /sdcard /storage/sdcard0
+
+ chown system system /system/data
+ mkdir /system/cache 0770 system cache
+ # We restorecon /cache in case the cache partition has been reset.
+ restorecon_recursive /cache
+
+ # Same reason as /data above
+ chown system cache /cache
+ chmod 0770 /cache
+
+ # This may have been created by the recovery system with odd permissions
+ chown system cache /cache/recovery
+ chmod 0770 /cache/recovery
+
+ #change permissions on vmallocinfo so we can grab it from bugreports
+ chown root log /proc/vmallocinfo
+ chmod 0440 /proc/vmallocinfo
+
+ #change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks
+ chown root system /proc/kmsg
+ chmod 0440 /proc/kmsg
+ chown root system /proc/sysrq-trigger
+ chmod 0220 /proc/sysrq-trigger
+ chown system log /proc/last_kmsg
+ chmod 0440 /proc/last_kmsg
+
+ # make the selinux kernel policy world-readable
+ chmod 0444 /sys/fs/selinux/policy
+
+ # create the lost+found directories, so as to enforce our permissions
+ mkdir /cache/lost+found 0770 root root
+
+#INTERNAL_START
+ mkdir /cache/recovery 0770 system system
+ chown system system /protect_f
+ chmod 0770 /protect_f
+
+ chown system system /protect_s
+ chmod 0770 /protect_s
+#INTERNAL_END
+
+on post-fs-data
+ #Thermal
+ mkdir /data/.tp/ 0775 system system
+
+ # We chown/chmod /data again so because mount is run as root + defaults
+ chown system system /system/data
+ chmod 0777 /system/data
+ # We chown/chmod /data again so because mount is run as root + defaults
+ chown system system /data
+ chmod 0771 /data
+ # We restorecon /data in case the userdata partition has been reset.
+ restorecon /data
+
+ # We chown/chmod /data again so because mount is run as root + defaults
+
+ chown root system /proc/sysrq-trigger
+ chmod 0220 /proc/sysrq-trigger
+
+ chown system system /nvcfg
+ chmod 0771 /nvcfg
+ restorecon_recursive /nvcfg
+
+# create basic filesystem structure
+ #mkdir /data/nvram 2770 root system
+ # We chown/chmod /nvdata again so because mount is run as root + defaults
+ chown root system /nvdata
+ chmod 0771 /nvdata
+ symlink /nvdata /data/nvram
+ mkdir /nvdata/media 0771 media audio
+
+ #Create cct mount point
+ mkdir /data/cct
+ chown root system /data/cct
+ chmod 0771 /data/cct
+
+ # Set SELinux security contexts on upgrade or policy update.
+ restorecon_recursive /nvdata
+
+# Emulated internal storage area
+ mkdir /data/media 0770 media_rw media_rw
+
+ # Make sure we have the device encryption key
+ start logd
+ start vold
+ installkey /data
+
+ # create basic filesystem structure
+ mkdir /data/misc 01771 system misc
+ mkdir /data/misc/adb 02750 system shell
+ mkdir /data/misc/bluedroid 02770 bluetooth net_bt_stack
+ # Fix the access permissions and group ownership for 'bt_config.conf'
+ chmod 0660 /data/misc/bluedroid/bt_config.conf
+ chown bluetooth net_bt_stack /data/misc/bluedroid/bt_config.conf
+ mkdir /data/misc/bluetooth 0770 system system
+ mkdir /data/misc/keystore 0700 keystore keystore
+ mkdir /data/misc/keychain 0771 system system
+ mkdir /data/misc/vpn 0770 system vpn
+ mkdir /data/misc/systemkeys 0700 system system
+ # give system access to wpa_supplicant.conf for backup and restore
+ mkdir /data/misc/wifi 0770 wifi wifi
+ mkdir /data/misc/wifi/sockets 0770 wifi wifi
+ mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
+ mkdir /data/misc/ethernet 0770 system system
+ mkdir /data/misc/dhcp 0770 dhcp dhcp
+ mkdir /data/misc/user 0771 root root
+ mkdir /data/misc/perfprofd 0775 root root
+ # give system access to wpa_supplicant.conf for backup and restore
+ chmod 0660 /data/misc/wifi/wpa_supplicant.conf
+ mkdir /data/local 0751 root root
+ mkdir /data/misc/media 0700 media media
+ mkdir /data/misc/vold 0700 root root
+ mkdir /data/local/tmp 0771 shell shell
+ mkdir /data/data 0771 system system
+ mkdir /data/property 0700 root root
+ mkdir /data/tombstones 0771 system system
+ mkdir /data/misc/media 0700 media media
+ mkdir /data/misc/vold 0700 root root
+
+ # create the lost+found directories, so as to enforce our permissions
+ mkdir /data/lost+found 0770 root root
+ mkdir /data/adb 0770 root root
+
+ # Create all remaining /data root dirs so that they are made through init
+ # and get proper encryption policy installed
+ mkdir /data/backup 0700 system system
+ mkdir /data/media 0770 media_rw media_rw
+ mkdir /data/ss 0700 system system
+ mkdir /data/system 0775 system system
+ mkdir /data/system/heapdump 0700 system system
+ mkdir /data/user 0711 system system
+
+ # VIA flashlessd service
+ mkdir /data/flashless 0770 radio nvram
+ mkdir /data/nvram/md_via 0770 root nvram
+ chmod 0660 /dev/ttyMT4
+ chown radio radio /dev/ttyMT4
+ chmod 0660 /dev/vmodem
+ chown radio radio /dev/vmodem
+
+ #VIA pppd service
+ mkdir /data/pppd_via 0770 radio system
+
+ # md32 boot
+ chown root system /dev/md32
+ chmod 0440 /dev/md32
+ chown root system /sys/class/misc/md32/md32_mobile_log
+ chmod 0660 /sys/class/misc/md32/md32_mobile_log
+ write /sys/class/misc/md32/md32_boot 1
+
+ # dhcp server
+ mkdir /data/misc/dhcp 0770 dhcp dhcp
+ chown dhcp dhcp /data/misc/dhcp
+
+ # device info interface
+ chmod 0440 /dev/devmap
+ chown root system /dev/devmap
+
+
+
+ #change partition permission
+ exec /system/etc/partition_permission.sh
+#INTERNAL_START
+#SeLinux
+ mkdir /data/ccci_cfg 0770 system radio
+ restorecon /data/ccci_cfg
+ restorecon_recursive /protect_f
+ restorecon_recursive /protect_s
+
+## Custom pos-fs area (START)
+# Please add custom fs operation below
+
+ # Touch Panel
+ chown root diag /sys/module/tpd_setting/parameters/tpd_calmat
+ chown root diag /sys/module/tpd_setting/parameters/tpd_em_debounce_time
+ chown root diag /sys/module/tpd_debug/parameters/tpd_em_log
+ chown root diag /sys/module/tpd_debug/parameters/tpd_em_log_to_fs
+
+ # RTC
+ mkdir /data/misc/rtc 0770 system system
+
+ # Modem related device nodes
+ mkdir /data/nvram/md 0770 root system
+ mkdir /data/nvram/md2 0770 root system
+ mkdir /data/nvram/md3 0770 root system
+ mkdir /data/md3 0770 root system
+
+ chown radio radio /sys/kernel/ccci/boot
+
+ #set mlock limit to infinate (for m4u operation)
+ setrlimit 8 -1 -1
+
+ # Sensor
+ chmod 0666 /dev/hwmsensor
+ chmod 0666 /dev/gyroscope
+ chmod 0666 /dev/msensor
+ chmod 0666 /dev/gsensor
+ chmod 0666 /dev/alsps
+ chmod 0666 /dev/humidity
+ chmod 0666 /dev/barometer
+
+ chown system system /dev/hwmsensor
+ chown system system /dev/msensor
+ chown system system /dev/gsensor
+ chown radio system /dev/als_ps
+ chown system system /dev/gyroscope
+ chown system system /dev/barometer
+ chown system system /dev/humidity
+ #VideoCodec
+ chmod 0666 /dev/Vcodec
+
+
+ mkdir /data/amit/
+
+ # GPIO
+ chmod 0666 /dev/mtgpio
+
+ chmod 0666 /dev/exm0
+
+ # TTY
+ # For ATCID
+ chmod 0660 /dev/ttyGS0
+ chown system radio /dev/ttyGS0
+ chmod 0660 /dev/ttyGS1
+ chown system /dev/ttyGS1
+ # For BT relayer
+ chown bluetooth radio /dev/ttyGS2
+ chmod 0660 /dev/ttyGS2
+ # For MD Logger
+ chown system radio /dev/ttyGS3
+ chmod 0660 /dev/ttyGS3
+
+ #NFC
+ rm /data/mtknfc_server
+
+## Custom pos_fs area (END)
+#INTERNAL_END
+
+ # Separate location for storing security policy files on data
+ mkdir /data/security 0711 system system
+
+ # Reload policy from /data/security if present.
+ setprop selinux.reload_policy 1
+
+ # Set SELinux security contexts on upgrade or policy update.
+ restorecon_recursive /data
+
+ # If there is no fs-post-data action in the init.<device>.rc file, you
+ # must uncomment this line, otherwise encrypted filesystems
+ # won't work.
+ # Set indication (checked by vold) that we have finished this action
+ setprop vold.post_fs_data_done 1
+
+on boot
+
+ #VIA device property
+ setprop viatel.device.asci uart.4.ttyMT
+ setprop viatel.device.fls sdio.3.ttySDIO
+ setprop viatel.device.at sdio.4.ttySDIO
+ setprop viatel.device.data sdio.1.ttySDIO
+
+# basic network init
+ ifup lo
+ hostname localhost
+ domainname localdomain
+
+#INTERNAL_START
+# Start default class, this line is very important!!
+ class_start default
+ class_start core
+#INTERNAL_END
+
+on nonencrypted
+ class_start main
+ class_start late_start
+
+on property:vold.decrypt=trigger_default_encryption
+ start defaultcrypto
+
+on property:vold.decrypt=trigger_encryption
+ start surfaceflinger
+ start encrypt
+
+on property:sys.init_log_level=*
+ loglevel ${sys.init_log_level}
+
+on property:vold.decrypt=trigger_reset_main
+ class_reset main
+
+on property:vold.decrypt=trigger_load_persist_props
+ load_persist_props
+ start logd
+ start logd-reinit
+
+on property:vold.decrypt=trigger_post_fs_data
+ trigger post-fs-data
+
+on property:vold.decrypt=trigger_restart_min_framework
+ class_start main
+
+on property:vold.decrypt=trigger_restart_framework
+ start nvram_daemon
+ class_start main
+ class_start late_start
+ start permission_check
+
+on property:vold.decrypt=trigger_shutdown_framework
+ class_reset late_start
+ class_reset main
+
+service ueventd /sbin/ueventd
+ class core
+ critical
+ seclabel u:r:ueventd:s0
+
+service logd /system/bin/logd
+ class core
+ socket logd stream 0666 logd logd
+ socket logdr seqpacket 0666 logd logd
+ socket logdw dgram 0222 logd logd
+service logd-reinit /system/bin/logd --reinit
+ oneshot
+ disabled
+
+service console /system/bin/sh
+ class core
+ console
+ disabled
+ user shell
+ seclabel u:r:shell:s0
+
+on property:sys.powerctl=*
+ powerctl ${sys.powerctl}
+
+on property:ro.debuggable=1
+ start console
+
+# adbd is controlled via property triggers in init.<platform>.usb.rc
+service adbd /sbin/adbd --root_seclabel=u:r:su:s0
+ class core
+ socket adbd stream 660 system system
+ disabled
+ seclabel u:r:adbd:s0
+
+service vold /system/bin/vold \
+ --blkid_context=u:r:blkid:s0 --blkid_untrusted_context=u:r:blkid_untrusted:s0 \
+ --fsck_context=u:r:fsck:s0 --fsck_untrusted_context=u:r:fsck_untrusted:s0
+ class core
+ socket vold stream 0660 root mount
+ socket cryptd stream 0660 root mount
+ ioprio be 2
+
+service debuggerd /system/bin/debuggerd
+ class main
+
+service debuggerd64 /system/bin/debuggerd64
+ class main
+
+# One shot invocation to deal with encrypted volume.
+service defaultcrypto /system/bin/vdc --wait cryptfs mountdefaultencrypted
+ disabled
+ oneshot
+ # vold will set vold.decrypt to trigger_restart_framework (default
+ # encryption) or trigger_restart_min_framework (other encryption)
+
+# One shot invocation to encrypt unencrypted volumes
+service encrypt /system/bin/vdc --wait cryptfs enablecrypto inplace default
+ disabled
+ oneshot
+ # vold will set vold.decrypt to trigger_restart_framework (default
+ # encryption)
+
+on property:persist.logd.logpersistd=logcatd
+ # all exec/services are called with umask(077), so no gain beyond 0700
+ mkdir /data/misc/logd 0700 logd log
+ # logd for write to /data/misc/logd, log group for read from pstore (-L)
+ exec - logd log -- /system/bin/logcat -L -b all -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 64 -n 256
+ start logcatd
+
+service logcatd /system/bin/logcat -b all -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 64 -n 256
+ class late_start
+ disabled
+ # logd for write to /data/misc/logd, log group for read from log daemon
+ user logd
+ group log
+
+#INTERNAL_START
+## Custom service area (START)
+# Please add custom service below
+
+service thermal_manager /system/bin/thermal_manager
+ user root
+ oneshot
+
+service permission_check /system/bin/permission_check
+ user root
+ group system radio
+ oneshot
+
+service ccci_fsd /system/bin/ccci_fsd 0
+ user radio
+ group radio system
+ oneshot
+
+service ccci_mdinit /system/bin/ccci_mdinit 0
+ user system
+ group radio system
+ oneshot
+
+service ccci3_fsd /system/bin/ccci_fsd 2
+ user radio
+ group radio system
+ oneshot
+
+service ccci3_mdinit /system/bin/ccci_mdinit 2
+ user system
+ group radio system
+ oneshot
+
+service ccci_rpcd /system/bin/ccci_rpcd 0
+ user radio
+ group radio system
+ oneshot
+
+service nvram_daemon /system/bin/nvram_daemon
+ class main
+ user root
+ group system
+ oneshot
+
+service mdlogger /system/bin/mdlogger
+ class main
+ user shell
+ group shell system radio sdcard_rw inet
+ disabled
+ oneshot
+
+service dualmdlogger /system/bin/dualmdlogger
+ class main
+ user shell
+ group shell system radio sdcard_rw inet
+ disabled
+ oneshot
+
+service factory_no_image /system/bin/factory
+
+service mobile_log_d /system/bin/mobile_log_d
+ class main
+
+## Custom service area (END)
+
+
+#statusd service
+service statusd /system/bin/statusd -f [/system/bin/flashlessd -l -m 0]
+ socket statusd stream 660 radio radio
+ user radio
+ group radio cache inet misc system
+
+#mass_storage,adb,acm
+on property:ro.boot.usbconfig=0
+ write /sys/class/android_usb/android0/iSerial $ro.serialno
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor 0e8d
+ write /sys/class/android_usb/android0/idProduct 2006
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.acm_idx 1
+
+#acm
+on property:ro.boot.usbconfig=1
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/iSerial " "
+ write /sys/class/android_usb/android0/idVendor 0e8d
+ write /sys/class/android_usb/android0/idProduct 2007
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions acm
+ write /sys/class/android_usb/android0/bDeviceClass 02
+ write /sys/class/android_usb/android0/enable 1
+
+#singloe modem comport for factory mode
+on property:sys.usb.config=gs3,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor $sys.usb.vid
+ write /sys/class/android_usb/android0/idProduct 202E
+ write /sys/class/android_usb/android0/f_acm/port_index 1,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ chown system radio /dev/ttyGS3
+ chmod 0660 /dev/ttyGS3
+ start adbd
+ setprop sys.usb.state $sys.usb.config
+ setprop sys.usb.acm_idx 1,4
+
+#dual modem comport for factory mode
+on property:sys.usb.config=gs1gs3,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor $sys.usb.vid
+ write /sys/class/android_usb/android0/idProduct 202F
+ write /sys/class/android_usb/android0/f_acm/port_index 1,2,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ chown system radio /dev/ttyGS3
+ chmod 0660 /dev/ttyGS3
+ chown system radio /dev/ttyGS1
+ chmod 0660 /dev/ttyGS1
+ start adbd
+ setprop sys.usb.state $sys.usb.config
+ setprop sys.usb.acm_idx 1,2,4
+#INTERNAL_END
diff --git a/fstab.mt6797.nand b/fstab.mt6797.nand
new file mode 100755
index 0000000..558a1ee
--- /dev/null
+++ b/fstab.mt6797.nand
@@ -0,0 +1,6 @@
+# Android fstab file.
+#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
+# The filesystem that contains the filesystem checker binary (typically /system) cannot
+# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
+
+/devices/platform/mtk-msdc.1/mmc_host auto vfat defaults voldmanaged=sdcard:auto,noemulatedsd \ No newline at end of file
diff --git a/ht120.mtc b/ht120.mtc
new file mode 100755
index 0000000..c4167aa
--- /dev/null
+++ b/ht120.mtc
@@ -0,0 +1,58 @@
+/qtrg4s slopnhv4s s"sdrx1x$zz!t
+ !"
+/qtrg4s slopnhv4s s"sqolg2y% su
+ !"
+/qtrg4s slopnhv4s s"sqc0w#yy "
+ !"
+/qtrg4s slopnhv4s s"sxow1x$zz!t
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo23
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo24
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo25
+ !"
+/qtrg4jyq$es1wljxtiu/u!exxewi an
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"3$%&'()
+/qtrg4jyq$es1wljxtiu/u!exxvhgyascp
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"4$%&'()
+/qtrg4jyq$es1wljxtiu/dnpyyz
+0!634%778)112#656'990!8345&889 37845&'() !"
+/qtrg4jyq$es1wljxtiu/dnfxr
+0!:8456'>@012#8:678)49234%=<890!84456';>5123$;678)29735;&;>?7!48$7;'99012#$
+/qtrg4jyq$es1wljxtiu/u!ftz
+1!34;567(9 nvnxxiw"6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"545&8
+/qtrg4jyq$es1wljxtiu/u!sqni
+1!379567(9 nvnxxvtql-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#5567(
+/qtrg4jyq$es1wljxtiu/u!se
+1!354567(9 nvnxxvh5!yttvx%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!3345&
+/qtrg4jyq$es1wljxtiu/u!zqy
+1!354567(9 nvnxx"t!6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"4456'
+/qtrg4jyq$es1wljxtiu/u!exx
+1!354567(9 nvn1hr4s!hvvgs!t78)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ge>88<
+1!434567(9 nvn1hr4s!hvvgs!t79)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!exxvh
+1!354567(9 nvn1hr4s!hvvgs!t7:)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww6
+0!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#
+/qtrg4jyq$es1wljxtiu/u!ww7
+0!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#
+/qtrg4jyq$es1wljxtiu/u!ww9
+0!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#
+/qtrg4s s"z0owoyyjx#
+mbaois&8() !"#$%&
+/qtrg4s s"z0owoyywurc
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyywi
+mbaois&8() !"#$%&'() !"#
+/qtrg4s s"z0owoyy#u"
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyHX
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0vvhf?99=
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyi!!merd
+mbaois&;() !"#$%&'()
+EPH
+
diff --git a/init.fon.rc b/init.fon.rc
new file mode 100755
index 0000000..5738308
--- /dev/null
+++ b/init.fon.rc
@@ -0,0 +1,11 @@
+on init
+ mkdir /fat 0700 root root
+on fs_property:ro.mount.fs=YAFFS
+ mount yaffs2 mtd@fat /fat nosuid nodev
+on fs_property:ro.mount.fs=UBIFS
+ write /proc/bootprof "INIT:PROTECT:fat start"
+# mount ubifs ubi@fat /fat nosuid nodev wait
+ mount yaffs2 mtd@fat /fat nosuid nodev
+ write /proc/bootprof "INIT:PROTECT:fat end"
+on post-fs
+ exec /system/bin/vdc fatcreation
diff --git a/init.microtrust.rc b/init.microtrust.rc
new file mode 100755
index 0000000..244cc37
--- /dev/null
+++ b/init.microtrust.rc
@@ -0,0 +1,45 @@
+on property:vold.decrypt=trigger_restart_framework
+ setprop soter.teei.vold.decrypt OK
+
+on post-fs-data
+ write /proc/bootprof "start teei cfg (on post-fs-data)"
+ mkdir /data/thh
+ mkdir /data/thh/system
+ chmod 0755 /data/thh
+ chown system system /data/thh
+ chmod 0755 /data/thh/system
+ chown system system /data/thh/system
+ chmod 0666 /dev/teei_client
+ chown system system /dev/teei_client
+ chmod 0660 /dev/teei_config
+ chown system system /dev/teei_config
+ chmod 0660 /dev/tz_vfs
+ chown system system /dev/tz_vfs
+ chmod 0666 /dev/teei_fp
+ chown system /dev/teei_fp
+ chmod 0660 /dev/emmcrpmb0
+ chown system system /dev/emmcrpmb0
+ write /proc/bootprof "start teei cfg end (on post-fs-data)"
+
+on boot
+ write /proc/bootprof "start teei_daemon (on boot)"
+ start teei_daemon
+ write /proc/bootprof "start teei_daemon end (on boot)"
+
+# teei service daemon
+service teei_daemon /system/bin/teei_daemon
+ class core
+ user system
+ group system
+ disabled
+ # oneshot
+
+#on property:soter.teei.init=INIT_OK
+# start init_thh_service
+
+#service init_thh_service /system/bin/init_thh init
+# class core
+# user system
+# group system
+# disabled
+# oneshot
diff --git a/init.modem.rc b/init.modem.rc
new file mode 100755
index 0000000..ffa32ba
--- /dev/null
+++ b/init.modem.rc
@@ -0,0 +1,196 @@
+# Copyright (C) 2012 The Android Open Source Project
+#
+# IMPORTANT: Do not create world writable files or directories.
+# This is a common source of Android security bugs.
+#
+
+on early-init
+ write /sys/class/net/ccmni0/queues/rx-0/rps_cpus "3ff"
+ write /sys/class/net/ccmni1/queues/rx-0/rps_cpus "3ff"
+ write /sys/class/net/ccmni2/queues/rx-0/rps_cpus "3ff"
+ write /sys/class/net/ccmni0/queues/rx-0/rps_flow_cnt "1000"
+ write /sys/class/net/ccmni1/queues/rx-0/rps_flow_cnt "1000"
+ write /sys/class/net/ccmni2/queues/rx-0/rps_flow_cnt "1000"
+ setprop net.perf.rps 3ff
+ setprop net.perf.cpu.core 4,4,0,0,0,0
+ setprop net.perf.cpu.freq 1118000,1391000,0,0,0,0
+
+on post-fs-data
+
+ write /proc/bootprof "post-fs-data: on modem start"
+
+ # Modem related device nodes
+ mkdir /data/nvram/md 0770 root system
+ mkdir /data/nvram/md3 0770 root system
+ mkdir /data/md3 0770 root system
+# Build-in Modified - S
+# insmod /system/lib/modules/ccci_plat.ko
+# insmod /system/lib/modules/ccci.ko
+# Build-in Modified - E
+# chown radio radio /sys/class/BOOT/BOOT/boot/md
+ chown radio radio /sys/kernel/ccci/boot
+
+#SeLinux
+ mkdir /data/ccci_cfg 0770 system radio
+ restorecon /data/ccci_cfg
+ restorecon_recursive /protect_f
+ restorecon_recursive /protect_s
+
+ # Encrypt phone function
+ setprop vold.post_fs_data_done 1
+
+service gsm0710muxd /system/bin/gsm0710muxd -s /dev/ttyC0 -f 512 -n 8 -m basic
+ class core
+ user root
+ group radio cache inet misc
+ disabled
+ oneshot
+
+service gsm0710muxdmd2 /system/bin/gsm0710muxdmd2 -s /dev/ccci2_tty0 -f 512 -n 8 -m basic
+ class core
+ user root
+ group radio cache inet misc
+ disabled
+ oneshot
+
+service muxreport-daemon /system/bin/muxreport
+ class core
+ user radio
+ group radio cache inet misc
+ disabled
+ oneshot
+
+service ril-daemon-mtk /system/bin/mtkrild
+ class core
+ socket rild stream 660 root radio
+ socket rild2 stream 660 root radio
+ socket rild3 stream 660 root radio
+ socket rild4 stream 660 root radio
+ socket rild-ims stream 660 root radio
+ socket rild-debug stream 660 radio system
+ socket rild-oem stream 660 radio system
+ socket rild-mtk-ut stream 660 radio net_bt
+ socket rild-mtk-ut-2 stream 660 radio net_bt
+ socket rild-mtk-modem stream 660 radio system
+ socket rild-atci stream 660 root radio
+ socket rild-mal stream 660 radio system
+ socket rild-mal-at stream 660 radio system
+ socket rild-vsim stream 660 root radio
+ socket rild-mbim stream 660 root radio
+ socket sap_uim_socket1 stream 660 bluetooth bluetooth
+ socket sap_uim_socket2 stream 660 bluetooth bluetooth
+ user root
+ group radio cache inet misc audio sdcard_r sdcard_rw log system
+ disabled
+ oneshot
+
+service ril-daemon-mtkmd2 /system/bin/mtkrildmd2
+ class core
+ socket rild-md2 stream 660 root radio
+ socket rild2-md2 stream 660 root radio
+ socket rild-debug-md2 stream 660 radio system
+ socket rild-oem-md2 stream 660 radio system
+ socket rild-mtk-ut-md2 stream 660 radio net_bt
+ socket rild-mtk-ut-2-md2 stream 660 radio net_bt
+ socket rild-mtk-modem-md2 stream 660 radio system
+ socket rild-atci-md2 stream 660 root radio
+ socket rild-vsim-md2 stream 660 root radio
+ socket rild-mal-md2 stream 660 radio system
+ socket rild-vsim-md2 stream 660 root radio
+ socket rild-mbim-md2 stream 660 root radio
+ user root
+ group radio cache inet misc audio sdcard_r sdcard_rw log system
+ disabled
+ oneshot
+
+service md_minilog_util /system/bin/md_minilog_util
+ user radio
+ disabled
+ oneshot
+
+#VIA RILD service
+service viarild /system/bin/viarild -l /system/lib/libviatelecom-withuim-ril.so -- -d /dev/ttySDIO4
+ class core
+ socket rild-via stream 660 radio radio
+ socket msap_c2k_socket1 stream 660 radio radio
+ socket msap_c2k_socket2 stream 660 radio radio
+ socket msap_c2k_socket3 stream 660 radio radio
+ socket msap_c2k_socket4 stream 660 radio radio
+ socket rpc stream 660 radio system
+ socket rild-debug stream 660 radio system
+ socket rild-ctclient stream 660 radio system
+ socket rild-atci-c2k stream 660 radio system
+ group radio cache inet misc audio sdcard_r sdcard_rw log system
+ disabled
+ oneshot
+
+#
+# Modem related services (Begin)
+#
+
+service permission_check /system/bin/permission_check
+ class main
+ user root
+ group system radio
+ oneshot
+
+service ccci_fsd /system/bin/ccci_fsd 0
+ user radio
+ group radio system
+ class core
+ oneshot
+
+service ccci_mdinit /system/bin/ccci_mdinit 0
+ user system
+ group radio system
+ class core
+ oneshot
+
+service ccci3_fsd /system/bin/ccci_fsd 2
+ user radio
+ group radio system
+ class core
+ oneshot
+
+service ccci3_mdinit /system/bin/ccci_mdinit 2
+ user system
+ group radio system
+ class core
+ oneshot
+
+service ccci_rpcd /system/bin/ccci_rpcd 0
+ user radio
+ group radio system
+ class core
+ oneshot
+
+service pppd_gprs /system/bin/pppd_dt /dev/ttyACM0 debug noauth refuse-eap usepeerdns nodetach
+ user root
+ group radio cache inet misc
+ disabled
+ oneshot
+
+#Add by T.Zh for ppp daemon
+service pppd /system/bin/pppd file /data/misc/ppp/ppp_options
+ user root
+ disabled
+ oneshot
+
+#
+#
+# Modem related services (End)
+#
+
+#Add by hp.chen for
+#
+# Telephony Early Read service
+#
+service terservice /system/bin/terservice
+ class core
+ user radio
+ group radio cache inet misc
+ oneshot
+
+on property:ril.muxreport=1
+ start muxreport-daemon
+
diff --git a/init.mt6797.rc b/init.mt6797.rc
new file mode 100755
index 0000000..9baf209
--- /dev/null
+++ b/init.mt6797.rc
@@ -0,0 +1,1728 @@
+# MTK platform .rc configure
+
+import init.connectivity.rc
+import init.project.rc
+import /FWUpgradeInit.rc
+import init.xlog.rc
+import init.aee.rc
+import init.fon.rc
+import init.volte.rc
+import init.mal.rc
+import init.epdg.rc
+import init.wfca.rc
+import init.trustonic.rc
+import init.common_svc.rc
+import init.microtrust.rc
+
+# init.modem.rc must be the LAST rc file because vold.post_fs_data_done is set in it
+import init.modem.rc
+# *** DO NOT import the new rc file after this line ***
+
+on early-init
+ mount debugfs debugfs /sys/kernel/debug
+ chmod 0755 /sys/kernel/debug
+
+on init
+ # Support legacy paths
+ symlink /sdcard /mnt/sdcard
+
+ # if primary storage is physical, set ro.vold.primary_physical to 1
+ # setprop ro.vold.primary_physical 1
+
+ # BATTERY proc
+ chown shell system /proc/mtk_battery_cmd/current_cmd
+ chown shell system /proc/mtk_battery_cmd/discharging_cmd
+
+# Temp Backward compatibility
+ mkdir /protect_f 0771 system system
+ mkdir /protect_s 0771 system system
+ mkdir /nvcfg 0771 system system
+
+#Create nvdata mount point
+ mkdir /nvdata 0771 system system
+# Create CIP mount point
+ mkdir /custom
+
+ mkdir /mnt/cd-rom 0000 system system
+
+# change lk_env permission
+ chown root system /proc/lk_env
+ chmod 0660 /proc/lk_env
+
+# increase sysctl_rmem_max and sysctl_wmem_max values to 2M
+ write /proc/sys/net/core/wmem_max 2097152
+ write /proc/sys/net/core/rmem_max 2097152
+
+# mount different fs start
+
+on charger
+ mount ext4 /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/system /system ro wait
+ start spm_script
+ chmod 0666 /dev/kmsg
+ write /sys/devices/platform/battery_meter/FG_daemon_log_level 7
+ start fuelgauged
+ start kpoc_charger
+ start servicemanager
+
+on fs
+ write /proc/bootprof "INIT:Mount_START"
+ mount_all /fstab.mt6797
+ exec /system/bin/tune2fs -O has_journal -u 10010 -r 4096 /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/userdata
+ write /proc/bootprof "INIT:Mount_END"
+
+on fs
+
+ mount iso9660 loop@/system/etc/iAmCdRom.iso /mnt/cd-rom ro
+
+on post-fs
+ # Support legacy paths
+ symlink /sdcard /storage/sdcard0
+
+ #change permissions for mediaserver
+ chown root media /proc/clkmgr/mipi_test
+
+ #change permission for engineer mode
+ chown radio system /proc/clkmgr/pll_test
+ chown radio system /proc/clkmgr/pll_fsel
+ chmod 0664 /proc/clkmgr/pll_test
+ chmod 0664 /proc/clkmgr/pll_fsel
+ #change permission for engineer mode
+ chown radio system /proc/freqhopping/dramc
+ chown radio system /proc/freqhopping/dumpregs
+ chown radio system /proc/freqhopping/freqhopping_debug
+ chown radio system /proc/freqhopping/status
+ chown radio system /proc/freqhopping/userdef
+
+# change owner
+ chown system system /proc/bootprof
+ chown root system /proc/mtprof/cputime
+ chown root system /proc/mtprof/reboot_pid
+
+ chown system system /protect_f
+ chmod 0770 /protect_f
+
+ chown system system /protect_s
+ chmod 0770 /protect_s
+
+on post-fs-data
+ chown system system /nvcfg
+ chmod 0771 /nvcfg
+ restorecon_recursive /nvcfg
+
+ # create basic filesystem structure
+ # mkdir /data/nvram 2770 root system
+ # We chown/chmod /nvdata again so because mount is run as root + defaults
+ chown root system /nvdata
+ chmod 0771 /nvdata
+ symlink /nvdata /data/nvram
+ mkdir /nvdata/media 0771 media audio
+
+ #Create cct mount point
+ mkdir /data/cct
+ chown root system /data/cct
+ chmod 0771 /data/cct
+
+ # Set SELinux security contexts on upgrade or policy update.
+ restorecon_recursive /nvdata
+
+ chmod 0660 /data/misc/wifi/p2p_supplicant.conf
+
+ #give system access to rfkill device node
+ chmod 0660 /dev/rfkill
+
+ # create for muxd pts device node , to operate without root
+ mkdir /dev/radio 0770 radio radio
+
+ mkdir /data/drm/wv 0770 drm system
+
+# GPS
+ mkdir /data/gps_mnl 0771 gps system
+ mkdir /data/misc/gps 0770 gps system
+ mkdir /data/mpe_mnl 0771 gps system
+ chown gps system /data/mpe_mnl
+ chmod 0775 /system/xbin/MPED
+ chmod 0666 /dev/gps_emi
+
+ # NFC
+ mkdir /data/nfc_socket 0771 nfc radio
+
+# -----------------------
+# Add by MTK
+ # SCP log
+ chmod 0220 /sys/class/misc/scp/scp_mobile_log
+ chown root system /sys/class/misc/scp/scp_mobile_log
+ chmod 0220 /sys/class/misc/scp/scp_log_flush
+ chown root system /sys/class/misc/scp/scp_log_flush
+ chmod 0440 /dev/scp
+ chown root system /dev/scp
+
+
+ # dhcp server
+ mkdir /data/misc/dhcp 0770 dhcp wifi
+ chown dhcp wifi /data/misc/dhcp
+
+ # dhcpv6 server
+ mkdir /data/misc/wide-dhcpv6 0770 dhcp wifi
+ chown dhcp wifi /data/misc/wide-dhcpv6
+
+ # radvd
+ mkdir /data/misc/radvd 0770 system system
+ chmod 444 /etc/radvd/radvd.conf
+
+ # Mali 3D GPU driver
+ #insmod /system/lib/modules/mali.ko
+ chmod 666 /dev/mali0
+ #chown system graphics /dev/mali
+
+
+
+ # Touch Panel
+ # chmod 0664 /dev/touch
+ chown root diag /sys/module/tpd_setting/parameters/tpd_calmat
+ chown root diag /sys/module/tpd_setting/parameters/tpd_em_debounce_time
+ chown root diag /sys/module/tpd_setting/parameters/tpd_mode
+ chown root diag /sys/module/tpd_setting/parameters/tpd_em_debounce_time0
+ chown root diag /sys/module/tpd_setting/parameters/tpd_em_debounce_time1
+ chown root diag /sys/module/tpd_setting/parameters/tpd_em_spl_num
+ chown root diag /sys/module/tpd_setting/parameters/tpd_em_pressure_threshold
+ chown root diag /sys/module/tpd_setting/parameters/tpd_em_auto_time_interval
+ chown root diag /sys/module/tpd_setting/parameters/tpd_em_sample_cnt
+ chown root diag /sys/module/tpd_setting/parameters/tpd_em_asamp
+ chown root diag /sys/module/tpd_debug/parameters/tpd_em_log
+ chown root diag /sys/module/tpd_debug/parameters/tpd_em_log_to_fs
+
+ chmod 0666 /dev/pmem_multimedia
+
+ # watch dog kicker
+ write /proc/wdk "0 20 30"
+
+ # set ptmx group to non-root
+ chown root radio /dev/ptmx
+
+ # RTC
+ mkdir /data/misc/rtc 0770 system system
+
+ # M4U
+ #insmod /system/lib/modules/m4u.ko
+ #mknod /dev/M4U_device c 188 0
+ chmod 0444 /dev/m4u
+ #chown system media /dev/M4U_device
+
+ #set mlock limit to infinate (for m4u operation)
+ setrlimit 8 -1 -1
+
+ # CMDQ
+ chmod 0640 /dev/mtk_cmdq
+ chown system system /dev/mtk_cmdq
+
+ #OFFLOAD SERVICE
+ chmod 0640 /dev/offloadservice
+ chown media media /dev/offloadservice
+
+ #OPEN DSP
+ chmod 0640 /dev/audio_ipi
+ chown media media /dev/audio_ipi
+
+ # Sensor
+ chmod 0660 /dev/hwmsensor
+ chmod 0660 /dev/msensor
+ chmod 0660 /dev/gsensor
+ chmod 0660 /dev/als_ps
+ chmod 0660 /dev/gyroscope
+ chmod 0660 /dev/aal_als
+ chmod 0660 /dev/m_batch_misc
+ chmod 0660 /dev/humidity
+ chmod 0660 /dev/barometer
+ chmod 0660 /sys/devices/platform/msensor/driver/cpsopmode
+ chmod 0660 /sys/devices/platform/msensor/driver/cpsreptxy
+ chmod 0660 /sys/devices/platform/msensor/driver/cpsreptz
+ chmod 0660 /sys/devices/platform/gsensor/driver/cpsopmode
+ chmod 0660 /sys/devices/platform/gsensor/driver/cpsrange
+ chmod 0660 /sys/devices/platform/gsensor/driver/cpsbandwidth
+
+ chown system system /dev/hwmsensor
+ chown system system /dev/msensor
+ chown system system /dev/gsensor
+ chown radio system /dev/als_ps
+ chown system system /dev/gyroscope
+ chown system system /dev/aal_als
+ chown system system /dev/m_batch_misc
+ chown system system /dev/humidity
+ chown system system /dev/barometer
+ chmod 0660 /sys/class/misc/m_acc_misc/accenablenodata
+ chmod 0660 /sys/class/misc/m_acc_misc/accactive
+ chmod 0660 /sys/class/misc/m_acc_misc/accdelay
+ chmod 0660 /sys/class/misc/m_acc_misc/accbatch
+ chmod 0660 /sys/class/misc/m_acc_misc/accflush
+ chown system system /sys/class/misc/m_acc_misc/accenablenodata
+ chown system system /sys/class/misc/m_acc_misc/accactive
+ chown system system /sys/class/misc/m_acc_misc/accdelay
+ chown system system /sys/class/misc/m_acc_misc/accbatch
+ chown system system /sys/class/misc/m_acc_misc/accflush
+
+ chmod 0660 /sys/class/misc/m_mag_misc/magactive
+ chmod 0660 /sys/class/misc/m_mag_misc/magdelay
+ chmod 0660 /sys/class/misc/m_mag_misc/magbatch
+ chmod 0660 /sys/class/misc/m_mag_misc/magflush
+ chmod 0660 /sys/class/misc/m_mag_misc/magoactive
+ chmod 0660 /sys/class/misc/m_mag_misc/magodelay
+ chmod 0660 /sys/class/misc/m_mag_misc/magobatch
+ chmod 0660 /sys/class/misc/m_mag_misc/magoflush
+ chown system system /sys/class/misc/m_mag_misc/magactive
+ chown system system /sys/class/misc/m_mag_misc/magdelay
+ chown system system /sys/class/misc/m_mag_misc/magbatch
+ chown system system /sys/class/misc/m_mag_misc/magflush
+ chown system system /sys/class/misc/m_mag_misc/magoactive
+ chown system system /sys/class/misc/m_mag_misc/magodelay
+ chown system system /sys/class/misc/m_mag_misc/magobatch
+ chown system system /sys/class/misc/m_mag_misc/magoflush
+ chmod 0660 /sys/class/misc/m_batch_misc/batchactive
+ chmod 0660 /sys/class/misc/m_batch_misc/batchdelay
+ chmod 0660 /sys/class/misc/m_batch_misc/batchbatch
+ chmod 0660 /sys/class/misc/m_batch_misc/batchflush
+ chown system system /sys/class/misc/m_batch_misc/batchactive
+ chown system system /sys/class/misc/m_batch_misc/batchdelay
+ chown system system /sys/class/misc/m_batch_misc/batchbatch
+ chown system system /sys/class/misc/m_batch_misc/batchflush
+
+ chmod 0660 /sys/class/misc/m_gyro_misc/gyroenablenodata
+ chmod 0660 /sys/class/misc/m_gyro_misc/gyroactive
+ chmod 0660 /sys/class/misc/m_gyro_misc/gyrodelay
+ chmod 0660 /sys/class/misc/m_gyro_misc/gyrobatch
+ chmod 0660 /sys/class/misc/m_gyro_misc/gyroflush
+ chown system system /sys/class/misc/m_gyro_misc/gyroenablenodata
+ chown system system /sys/class/misc/m_gyro_misc/gyroactive
+ chown system system /sys/class/misc/m_gyro_misc/gyrodelay
+ chown system system /sys/class/misc/m_gyro_misc/gyrobatch
+ chown system system /sys/class/misc/m_gyro_misc/gyroflush
+
+ chmod 0660 /sys/class/misc/m_uncali_gyro_misc/ungyroenablenodata
+ chmod 0660 /sys/class/misc/m_uncali_gyro_misc/ungyroactive
+ chmod 0660 /sys/class/misc/m_uncali_gyro_misc/ungyrodelay
+ chmod 0660 /sys/class/misc/m_uncali_gyro_misc/ungyrobatch
+ chmod 0660 /sys/class/misc/m_uncali_gyro_misc/ungyroflush
+ chown system system /sys/class/misc/m_uncali_gyro_misc/ungyroenablenodata
+ chown system system /sys/class/misc/m_uncali_gyro_misc/ungyroactive
+ chown system system /sys/class/misc/m_uncali_gyro_misc/ungyrodelay
+ chown system system /sys/class/misc/m_uncali_gyro_misc/ungyrobatch
+ chown system system /sys/class/misc/m_uncali_gyro_misc/ungyroflush
+
+ chmod 0660 /sys/class/misc/m_uncali_mag_misc/unmagenablenodata
+ chmod 0660 /sys/class/misc/m_uncali_mag_misc/unmagactive
+ chmod 0660 /sys/class/misc/m_uncali_mag_misc/unmagdelay
+ chmod 0660 /sys/class/misc/m_uncali_mag_misc/unmagbatch
+ chmod 0660 /sys/class/misc/m_uncali_mag_misc/unmagflush
+ chown system system /sys/class/misc/m_uncali_mag_misc/unmagenablenodata
+ chown system system /sys/class/misc/m_uncali_mag_misc/unmagactive
+ chown system system /sys/class/misc/m_uncali_mag_misc/unmagdelay
+ chown system system /sys/class/misc/m_uncali_mag_misc/unmagbatch
+ chown system system /sys/class/misc/m_uncali_mag_misc/unmagflush
+
+ chmod 0660 /sys/class/misc/m_alsps_misc/alsactive
+ chmod 0660 /sys/class/misc/m_alsps_misc/alsdelay
+ chmod 0660 /sys/class/misc/m_alsps_misc/alsbatch
+ chmod 0660 /sys/class/misc/m_alsps_misc/alsflush
+ chmod 0660 /sys/class/misc/m_alsps_misc/psactive
+ chmod 0660 /sys/class/misc/m_alsps_misc/psdelay
+ chmod 0660 /sys/class/misc/m_alsps_misc/psbatch
+ chmod 0660 /sys/class/misc/m_alsps_misc/psflush
+ chown system system /sys/class/misc/m_alsps_misc/alsactive
+ chown system system /sys/class/misc/m_alsps_misc/alsdelay
+ chown system system /sys/class/misc/m_alsps_misc/alsbatch
+ chown system system /sys/class/misc/m_alsps_misc/alsflush
+ chown system system /sys/class/misc/m_alsps_misc/psactive
+ chown system system /sys/class/misc/m_alsps_misc/psdelay
+ chown system system /sys/class/misc/m_alsps_misc/psbatch
+ chown system system /sys/class/misc/m_alsps_misc/psflush
+
+ chmod 0660 /sys/class/misc/m_baro_misc/baroenablenodata
+ chmod 0660 /sys/class/misc/m_baro_misc/baroactive
+ chmod 0660 /sys/class/misc/m_baro_misc/barodelay
+ chmod 0660 /sys/class/misc/m_baro_misc/barobatch
+ chmod 0660 /sys/class/misc/m_baro_misc/baroflush
+ chown system system /sys/class/misc/m_baro_misc/baroenablenodata
+ chown system system /sys/class/misc/m_baro_misc/baroactive
+ chown system system /sys/class/misc/m_baro_misc/barodelay
+ chown system system /sys/class/misc/m_baro_misc/barobatch
+ chown system system /sys/class/misc/m_baro_misc/baroflush
+
+ chmod 0660 /sys/class/misc/m_hmdy_misc/hmdyenablenodata
+ chmod 0660 /sys/class/misc/m_hmdy_misc/hmdyactive
+ chmod 0660 /sys/class/misc/m_hmdy_misc/hmdydelay
+ chmod 0660 /sys/class/misc/m_hmdy_misc/hmdybatch
+ chmod 0660 /sys/class/misc/m_hmdy_misc/hmdyflush
+
+ chown system system /sys/class/misc/m_hmdy_misc/hmdyenablenodata
+ chown system system /sys/class/misc/m_hmdy_misc/hmdyactive
+ chown system system /sys/class/misc/m_hmdy_misc/hmdydelay
+ chown system system /sys/class/misc/m_hmdy_misc/hmdybatch
+ chown system system /sys/class/misc/m_hmdy_misc/hmdyflush
+
+ chmod 0660 /sys/class/misc/m_pedo_misc/pedoactive
+ chmod 0660 /sys/class/misc/m_pedo_misc/pedodelay
+ chmod 0660 /sys/class/misc/m_pedo_misc/pedobatch
+ chmod 0660 /sys/class/misc/m_pedo_misc/pedoflush
+ chown system system /sys/class/misc/m_pedo_misc/pedoactive
+ chown system system /sys/class/misc/m_pedo_misc/pedodelay
+ chown system system /sys/class/misc/m_pedo_misc/pedobatch
+ chown system system /sys/class/misc/m_pedo_misc/pedoflush
+
+ chmod 0660 /sys/class/misc/m_pkup_misc/pkupactive
+ chmod 0660 /sys/class/misc/m_pkup_misc/pkupdelay
+ chmod 0660 /sys/class/misc/m_pkup_misc/pkupbatch
+ chmod 0660 /sys/class/misc/m_pkup_misc/pkupflush
+ chown system system /sys/class/misc/m_pkup_misc/pkupactive
+ chown system system /sys/class/misc/m_pkup_misc/pkupdelay
+ chown system system /sys/class/misc/m_pkup_misc/pkupbatch
+ chown system system /sys/class/misc/m_pkup_misc/pkupflush
+
+ chmod 0660 /sys/class/misc/m_tilt_misc/tiltactive
+ chmod 0660 /sys/class/misc/m_tilt_misc/tiltdelay
+ chmod 0660 /sys/class/misc/m_tilt_misc/tiltbatch
+ chmod 0660 /sys/class/misc/m_tilt_misc/tiltflush
+ chown system system /sys/class/misc/m_tilt_misc/tiltactive
+ chown system system /sys/class/misc/m_tilt_misc/tiltdelay
+ chown system system /sys/class/misc/m_tilt_misc/tiltbatch
+ chown system system /sys/class/misc/m_tilt_misc/tiltflush
+
+ chmod 0660 /sys/class/misc/m_glg_misc/glgactive
+ chmod 0660 /sys/class/misc/m_glg_misc/glgdelay
+ chmod 0660 /sys/class/misc/m_glg_misc/glgbatch
+ chmod 0660 /sys/class/misc/m_glg_misc/glgflush
+ chown system system /sys/class/misc/m_glg_misc/glgactive
+ chown system system /sys/class/misc/m_glg_misc/glgdelay
+ chown system system /sys/class/misc/m_glg_misc/glgbatch
+ chown system system /sys/class/misc/m_glg_misc/glgflush
+
+ chmod 0660 /sys/class/misc/m_wag_misc/wagactive
+ chmod 0660 /sys/class/misc/m_wag_misc/wagdelay
+ chmod 0660 /sys/class/misc/m_wag_misc/wagbatch
+ chmod 0660 /sys/class/misc/m_wag_misc/wagflush
+ chown system system /sys/class/misc/m_wag_misc/wagactive
+ chown system system /sys/class/misc/m_wag_misc/wagdelay
+ chown system system /sys/class/misc/m_wag_misc/wagbatch
+ chown system system /sys/class/misc/m_wag_misc/wagflush
+
+ chmod 0660 /sys/class/misc/m_ancall_misc/ancallactive
+ chmod 0660 /sys/class/misc/m_ancall_misc/ancalldelay
+ chmod 0660 /sys/class/misc/m_ancall_misc/ancallbatch
+ chmod 0660 /sys/class/misc/m_ancall_misc/ancallflush
+ chown system system /sys/class/misc/m_ancall_misc/ancallactive
+ chown system system /sys/class/misc/m_ancall_misc/ancalldelay
+ chown system system /sys/class/misc/m_ancall_misc/ancallbatch
+ chown system system /sys/class/misc/m_ancall_misc/ancallflush
+
+ chmod 0660 /sys/class/misc/m_ges_misc/gesactive
+ chmod 0660 /sys/class/misc/m_ges_misc/gesdelay
+ chmod 0660 /sys/class/misc/m_ges_misc/gesbatch
+ chmod 0660 /sys/class/misc/m_ges_misc/gesflush
+ chown system system /sys/class/misc/m_ges_misc/gesactive
+ chown system system /sys/class/misc/m_ges_misc/gesdelay
+ chown system system /sys/class/misc/m_ges_misc/gesbatch
+ chown system system /sys/class/misc/m_ges_misc/gesflush
+ chmod 0660 /sys/class/misc/m_pdr_misc/pdractive
+ chmod 0660 /sys/class/misc/m_pdr_misc/pdrdelay
+ chmod 0660 /sys/class/misc/m_pdr_misc/pdrbatch
+ chmod 0660 /sys/class/misc/m_pdr_misc/pdrflush
+ chown system system /sys/class/misc/m_pdr_misc/pdractive
+ chown system system /sys/class/misc/m_pdr_misc/pdrdelay
+ chown system system /sys/class/misc/m_pdr_misc/pdrbatch
+ chown system system /sys/class/misc/m_pdr_misc/pdrflush
+
+ chmod 0660 /sys/class/misc/m_act_misc/actactive
+ chmod 0660 /sys/class/misc/m_act_misc/actdelay
+ chmod 0660 /sys/class/misc/m_act_misc/actbatch
+ chmod 0660 /sys/class/misc/m_act_misc/actflush
+ chown system system /sys/class/misc/m_act_misc/actactive
+ chown system system /sys/class/misc/m_act_misc/actdelay
+ chown system system /sys/class/misc/m_act_misc/actbatch
+ chown system system /sys/class/misc/m_act_misc/actflush
+
+ chmod 0660 /sys/class/misc/m_step_c_misc/step_cactive
+ chmod 0660 /sys/class/misc/m_step_c_misc/step_cdelay
+ chmod 0660 /sys/class/misc/m_step_c_misc/step_cbatch
+ chmod 0660 /sys/class/misc/m_step_c_misc/step_cflush
+ chown system system /sys/class/misc/m_step_c_misc/step_cactive
+ chown system system /sys/class/misc/m_step_c_misc/step_cdelay
+ chown system system /sys/class/misc/m_step_c_misc/step_cbatch
+ chown system system /sys/class/misc/m_step_c_misc/step_cflush
+
+ chmod 0660 /sys/class/misc/m_rv_misc/rvactive
+ chmod 0660 /sys/class/misc/m_rv_misc/rvdelay
+ chmod 0660 /sys/class/misc/m_rv_misc/rvbatch
+ chmod 0660 /sys/class/misc/m_rv_misc/rvflush
+ chown system system /sys/class/misc/m_rv_misc/rvactive
+ chown system system /sys/class/misc/m_rv_misc/rvdelay
+ chown system system /sys/class/misc/m_rv_misc/rvbatch
+ chown system system /sys/class/misc/m_rv_misc/rvflush
+
+ chmod 0660 /sys/class/misc/m_grv_misc/grvactive
+ chmod 0660 /sys/class/misc/m_grv_misc/grvdelay
+ chmod 0660 /sys/class/misc/m_grv_misc/grvbatch
+ chmod 0660 /sys/class/misc/m_grv_misc/grvflush
+ chown system system /sys/class/misc/m_grv_misc/grvactive
+ chown system system /sys/class/misc/m_grv_misc/grvdelay
+ chown system system /sys/class/misc/m_grv_misc/grvbatch
+ chown system system /sys/class/misc/m_grv_misc/grvflush
+
+ chmod 0660 /sys/class/misc/m_gmrv_misc/gmrvactive
+ chmod 0660 /sys/class/misc/m_gmrv_misc/gmrvdelay
+ chmod 0660 /sys/class/misc/m_gmrv_misc/gmrvbatch
+ chmod 0660 /sys/class/misc/m_gmrv_misc/gmrvflush
+ chown system system /sys/class/misc/m_gmrv_misc/gmrvactive
+ chown system system /sys/class/misc/m_gmrv_misc/gmrvdelay
+ chown system system /sys/class/misc/m_gmrv_misc/gmrvbatch
+ chown system system /sys/class/misc/m_gmrv_misc/gmrvflush
+
+ chmod 0660 /sys/class/misc/m_la_misc/laactive
+ chmod 0660 /sys/class/misc/m_la_misc/ladelay
+ chmod 0660 /sys/class/misc/m_la_misc/labatch
+ chmod 0660 /sys/class/misc/m_la_misc/laflush
+ chown system system /sys/class/misc/m_la_misc/laactive
+ chown system system /sys/class/misc/m_la_misc/ladelay
+ chown system system /sys/class/misc/m_la_misc/labatch
+ chown system system /sys/class/misc/m_la_misc/laflush
+
+ chmod 0660 /sys/class/misc/m_grav_misc/gravactive
+ chmod 0660 /sys/class/misc/m_grav_misc/gravdelay
+ chmod 0660 /sys/class/misc/m_grav_misc/gravbatch
+ chmod 0660 /sys/class/misc/m_grav_misc/gravflush
+ chown system system /sys/class/misc/m_grav_misc/gravactive
+ chown system system /sys/class/misc/m_grav_misc/gravdelay
+ chown system system /sys/class/misc/m_grav_misc/gravbatch
+ chown system system /sys/class/misc/m_grav_misc/gravflush
+
+ #added by dangchaobing for leds
+ #chmod 0660 /sys/class/misc/96board_leds/96_led0
+ #chmod 0660 /sys/class/misc/96board_leds/96_led1
+ #chmod 0660 /sys/class/misc/96board_leds/96_led2
+ #chmod 0660 /sys/class/misc/96board_leds/96_led3
+ chmod 0660 /sys/class/misc/96board_leds/96_led4
+ chmod 0660 /sys/class/misc/96board_leds/96_led5
+ #chown system system /sys/class/misc/96board_leds/96_led0
+ #chown system system /sys/class/misc/96board_leds/96_led1
+ #chown system system /sys/class/misc/96board_leds/96_led2
+ #chown system system /sys/class/misc/96board_leds/96_led3
+ chown wifi wifi /sys/class/misc/96board_leds/96_led4
+ chown bluetooth bluetooth /sys/class/misc/96board_leds/96_led5
+ #end
+
+ #sensorhub CDD
+ chmod 0660 /dev/shf
+ chown system system /dev/shf
+
+ #Accdet
+ chown root radio /sys/devices/platform/Accdet_Driver/driver/accdet_call_state
+
+ #VideoCodec
+ #insmod /system/lib/modules/vcodec_kernel_driver.ko
+ mknod /dev/Vcodec c 160 0
+ chmod 0660 /dev/Vcodec
+ chown media system /dev/Vcodec
+
+ #MJC
+ #insmod /system/lib/modules/mjc_kernel_driver.ko
+ #mknod /dev/MJC c 168 0
+ chmod 0660 /dev/MJC
+ chown media system /dev/MJC
+
+ #kpd
+ chown radio radio /sys/devices/platform/mtk-kpd/driver/kpd_call_state
+
+ #Charging Battery
+ chown radio radio /sys/devices/platform/battery/Charging_CallState
+
+ # PMIC property
+ chown radio system /sys/devices/platform/mt-pmic/low_battery_protect_stop
+ chown radio system /sys/devices/platform/mt-pmic/low_battery_protect_ut
+
+ mkdir /data/amit/ 0770 system system
+ mkdir /data/misc/sensor 0774 system system
+ mkdir /data/misc/akmd 0770 system system
+ mkdir /data/misc/s62x 0771 compass compass
+ mkdir /data/acdapi/ 0770 system system
+ chmod 0660 /data/misc/acdapi/calib.dat
+ chmod 0660 /data/misc/acdapi/param.dat
+ chmod 0660 /data/misc/acdapi/sensors.dat
+ chown system /sys/devices/platform/msensor/driver/cpsopmode
+ chown system /sys/devices/platform/msensor/driver/cpsreptxy
+ chown system /sys/devices/platform/msensor/driver/cpsreptz
+ chown system /sys/devices/platform/gsensor/driver/cpsopmode
+ chown system /sys/devices/platform/gsensor/driver/cpsrange
+ mkdir /data/data/mcube 0664 system system
+
+ chown system /sys/class/input/input1/enable
+ chown system /sys/class/input/input1/delay
+ chown system /sys/class/input/input1/wake
+ chown system /sys/class/input/input1/offsets
+ chown system /sys/class/input/input2/enable
+ chown system /sys/class/input/input2/delay
+ chown system /sys/class/input/input2/wake
+ chown system /sys/class/input/input2/offsets
+ chown system /sys/class/input/input3/enable
+ chown system /sys/class/input/input3/delay
+ chown system /sys/class/input/input3/wake
+ chown system /sys/class/input/input3/offsets
+ chown system /sys/class/input/input4/enable
+ chown system /sys/class/input/input4/delay
+ chown system /sys/class/input/input4/wake
+ chown system /sys/class/input/input4/offsets
+ chown system /sys/class/input/input5/enable
+ chown system /sys/class/input/input5/delay
+ chown system /sys/class/input/input5/wake
+ chown system /sys/class/input/input5/offsets
+ chown system /sys/class/input/input6/enable
+ chown system /sys/class/input/input6/delay
+ chown system /sys/class/input/input6/wake
+ chown system /sys/class/input/input6/offsets
+ chown system /sys/class/input/input7/enable
+ chown system /sys/class/input/input7/delay
+ chown system /sys/class/input/input7/wake
+ chown system /sys/class/input/input7/offsets
+ chown system /sys/class/input/input8/enable
+ chown system /sys/class/input/input8/delay
+ chown system /sys/class/input/input8/wake
+ chown system /sys/class/input/input8/offsets
+ chown system /sys/class/input/input9/enable
+ chown system /sys/class/input/input9/delay
+ chown system /sys/class/input/input9/wake
+ chown system /sys/class/input/input9/offsets
+ chown system /sys/class/input/input10/enable
+ chown system /sys/class/input/input10/delay
+ chown system /sys/class/input/input10/wake
+ chown system /sys/class/input/input10/offsets
+
+ #EM eint
+ chown root diag /sys/bus/platform/drivers/eint/current_eint
+
+ # Display
+ chmod 0660 /dev/graphics/fb0
+ chown system graphics /dev/graphics/fb0
+
+ chmod 0660 /dev/mtk_disp_mgr
+ chown system graphics /dev/mtk_disp_mgr
+
+ chmod 0660 /dev/mtkfb_vsync
+ chown system graphics /dev/mtkfb_vsync
+
+ chmod 0660 /dev/sw_sync
+ chown system graphics /dev/sw_sync
+
+ # EM baseband file
+ chown root diag /system/bin/baseband_regdump
+ chmod 4750 /system/bin/baseband_regdump
+
+ #pmu
+ chown root radio /sys/devices/platform/mt-pmic/pmic_access_bank0
+ chown root radio /sys/devices/platform/mt-pmic/pmic_access_bank1
+ chown root radio /sys/devices/platform/mt6311-user/mt6311_access
+ chown root radio /sys/devices/platform/mt-pmic/pmic_access
+ chmod 0664 /sys/devices/platform/mt-pmic/pmic_access_bank0
+ chmod 0664 /sys/devices/platform/mt-pmic/pmic_access_bank1
+ chmod 0664 /sys/devices/platform/mt6311-user/mt6311_access
+ chmod 0664 /sys/devices/platform/mt-pmic/pmic_access
+
+ # EM CPU Speed Stress
+ chown root radio /proc/cpu_ss/cpu_ss_debug_mode
+ chown root radio /proc/cpu_ss/cpu_ss_mode
+ chown root radio /proc/cpu_ss/cpu_ss_period
+ chown root radio /proc/cpu_ss/cpu_ss_period_mode
+ chmod 0664 /proc/cpu_ss/cpu_ss_debug_mode
+ chmod 0664 /proc/cpu_ss/cpu_ss_mode
+ chmod 0664 /proc/cpu_ss/cpu_ss_period
+ chmod 0664 /proc/cpu_ss/cpu_ss_period_mode
+
+ #EM eint
+ chown root diag /sys/bus/platform/drivers/eint/current_eint
+
+ # for ppp options file
+ mkdir /data/misc/ppp 0770 bluetooth net_bt
+
+ # Android SEC related device nodes
+ chmod 0660 /dev/sec
+ chown root system /dev/sec
+
+ # FM Radio device node
+ mknod /dev/fm c 193 0;
+ chmod 0660 /dev/fm
+ chown media media /dev/fm
+
+ # device apc settings
+
+ # device info /proc interface
+ mknod /dev/devmap c 196 0;
+ chmod 0440 /dev/devmap
+ chown root system /dev/devmap
+
+ # bluetooth
+ mkdir /data/@btmtk 0770 bluetooth net_bt
+ chown bluetooth bluetooth /data/@btmtk/host_cache
+ chown bluetooth bluetooth /data/@btmtk/dev_cache
+ chown bluetooth bluetooth /dev/hid-keyboard
+ chmod 0660 /dev/hid-keyboard
+ #Use uinput's default permission
+ chown system net_bt_admin /dev/uinput
+
+ # UIBC
+ chown system media /dev/uibc
+ chmod 0660 /dev/uibc
+
+ #TV-out
+ chmod 0664 /dev/TV-out
+
+ #HDMI
+ chown media system /dev/hdmitx
+ chmod 0664 /dev/hdmitx
+
+
+ # JPEG
+ #chmod 0444 /dev/mtk_jpeg
+
+ # almk
+ chmod 0440 /dev/mtk_almk
+
+ # DISP
+ chmod 0444 /dev/mtk_disp
+
+ #ANC SERVICE
+ chmod 0640 /dev/ancservice
+ chown media media /dev/ancservice
+
+ #Camera
+ chmod 0660 /dev/camera-sysram
+ chmod 0660 /dev/camera-isp
+ chmod 0660 /dev/camera-dpe
+ chmod 0660 /dev/camera-fdvt
+ chmod 0660 /dev/camera-pipemgr
+ chmod 0660 /dev/kd_camera_hw
+ chmod 0660 /dev/kd_camera_flashlight
+ chmod 0660 /dev/kd_camera_hw_bus2
+ chmod 0660 /dev/FM50AF
+ chmod 0660 /dev/CAM_CAL_DRV
+
+ chown system camera /dev/camera-sysram
+ chown system camera /dev/camera-isp
+ chown system camera /dev/camera-dpe
+ chown system camera /dev/camera-fdvt
+ chown system camera /dev/camera-pipemgr
+ chown system camera /dev/kd_camera_hw
+ chown system camera /dev/kd_camera_flashlight
+ chown system camera /dev/kd_camera_hw_bus2
+ chown system camera /dev/FM50AF
+ chown system camera /dev/CAM_CAL_DRV
+
+ #VOW
+ chmod 0640 /dev/vow
+ chown media media /dev/vow
+
+ #MATV
+ chmod 0660 /dev/MATV
+ chown system media /dev/MATV
+
+ # otg_test
+ chown root radio /dev/mt_otg_test
+ chmod 0660 /dev/mt_otg_test
+
+ # MDP
+ chmod 0660 /dev/mt-mdp
+ chown system media /dev/mt-mdp
+
+ # SMI
+ chmod 0660 /dev/MTK_SMI
+ chown media media /dev/MTK_SMI
+
+ # RRC
+ chmod 0660 /dev/mtk_rrc
+ chown media system /dev/mtk_rrc
+
+
+ #change partition permission
+
+ chmod 0640 /mtd@sec_ro
+ chown root system /mtd@sec_ro
+
+ chmod 0640 /mtd@preloader
+ chown root system /mtd@preloader
+
+ chmod 0660 /mtd@pro_info
+ chown root system /mtd@pro_info
+
+ chmod 0640 /mtd@bootimg
+ chown root system /mtd@bootimg
+
+ chmod 0640 /mtd@recovery
+ chown root system /mtd@recovery
+
+ chmod 0660 /mtd@nvram
+ chown root system /mtd@nvram
+
+ chmod 0660 /mtd@seccfg
+ chown root system /mtd@seccfg
+
+ chmod 0660 /mtd@misc
+ chown root system /mtd@misc
+
+ chmod 0664 /sys/bus/platform/drivers/mem_bw_ctrl/concurrency_scenario
+ chown media media /sys/bus/platform/drivers/mem_bw_ctrl/concurrency_scenario
+
+ #mtk_sched
+ chmod 0660 /dev/mtk_sched
+ chown system media /dev/mtk_sched
+
+ #BT SCO CVSD, for MT6572 and MT6582 CVSD codec on AP
+ chmod 0660 /dev/ebc
+ chown media media /dev/ebc
+
+ chmod 0666 /dev/uio0
+
+ #otp
+ chmod 0660 /proc/driver/otp
+ chown root system /proc/driver/otp
+
+ #sn
+ chmod 0664 /sys/class/android_usb/android0/iSerial
+ chown root system /sys/class/android_usb/android0/iSerial
+ chmod 0664 /sys/class/udc/musb-hdrc/device/cmode
+ chown root system /sys/class/udc/musb-hdrc/device/cmode
+
+ # secure memory
+ chown system system /proc/secmem0
+
+ # mcDriverDaemon
+ mkdir /data/app/mcRegistry 0775 system system
+ mkdir /data/app/mcRegistry/TbStorage 0775 system system
+
+ # AGPS
+ mkdir /data/agps_supl 0771 gps system
+
+ # Recycle stuffs
+ exec /system/bin/rm -f /cache/.ipoh.img
+
+ chmod 0666 /dev/exm0
+
+
+ #Thermal
+ mkdir /data/.tp/ 0775 system system
+
+# End of adding by MTK drivers
+# -----------------------
+
+on boot
+
+ # xlog
+ start xlogboot
+
+ write /proc/sys/vm/dirty_writeback_centisecs 300
+ chmod 0660 /sys/power/autosleep
+
+ chmod 0664 /sys/class/leds/lcd-backlight/brightness
+
+ chown system system /sys/devices/system/cpu/cpufreq/hotplug/cpu_num_base
+ chmod 0660 /sys/devices/system/cpu/cpufreq/hotplug/cpu_num_base
+ chown root system /sys/kernel/debug/binder/transaction_log_enable
+ chown root system /sys/kernel/debug/binder/perf_evalue
+
+ chown system /sys/module/mlog/parameters/do_mlog
+ chown system /sys/module/mlog/parameters/timer_intval
+
+ chown root radio /sys/class/leds/lcd-backlight/duty
+ chown root radio /sys/class/leds/lcd-backlight/div
+ chown system system /sys/class/leds/lcd-backlight/trigger
+ chown system system /sys/class/leds/button-backlight/trigger
+ chown system system /sys/class/leds/keyboard-backlight/trigger
+ chown system system /sys/class/leds/jogball-backlight/trigger
+ chown system system /sys/class/leds/red/trigger
+ chown system system /sys/class/leds/green/trigger
+ chown system system /sys/class/leds/blue/trigger
+
+ # Permission for hibernation
+ chown radio system /sys/power/tuxonice
+ chown radio system /sys/power/tuxonice/do_hibernate
+ chmod 0770 /sys/power/tuxonice
+ chmod 0220 /sys/power/tuxonice/do_hibernate
+
+
+# Smartbook Handler Framework
+ chown system system /sys/power/sb_state
+ chmod 0660 /sys/power/sb_state
+
+# HMP CPU hotplug strategy
+ chown system system /proc/hps/num_base_perf_serv
+ chmod 0660 /proc/hps/num_base_perf_serv
+ chown system system /proc/hps/num_limit_power_serv
+ chmod 0660 /proc/hps/num_limit_power_serv
+ chown system system /proc/hps/num_limit_ultra_power_saving
+ chmod 0660 /proc/hps/num_limit_ultra_power_saving
+ chown system system /proc/hps/down_threshold
+ chmod 0660 /proc/hps/down_threshold
+ chown system system /proc/hps/up_threshold
+ chmod 0660 /proc/hps/up_threshold
+ chown system system /proc/hps/rush_boost_enabled
+ chmod 0660 /proc/hps/rush_boost_enabled
+ chown system system /proc/hps/heavy_task_enabled
+ chmod 0660 /proc/hps/heavy_task_enabled
+ chown system system /proc/hps/power_mode
+ chmod 0660 /proc/hps/power_mode
+
+# PPM
+ chown system system /proc/ppm/mode
+ chmod 0660 /proc/ppm/mode
+ chown system system /proc/ppm/policy/perfserv_min_perf_idx
+ chmod 0440 /proc/ppm/policy/perfserv_min_perf_idx
+ chown system system /proc/ppm/policy/perfserv_max_perf_idx
+ chmod 0440 /proc/ppm/policy/perfserv_max_perf_idx
+ chown system system /proc/ppm/policy/perfserv_perf_idx
+ chmod 0660 /proc/ppm/policy/perfserv_perf_idx
+ chown system system /proc/ppm/policy/userlimit_min_cpu_freq
+ chmod 0660 /proc/ppm/policy/userlimit_min_cpu_freq
+ chown system system /proc/ppm/policy/userlimit_max_cpu_freq
+ chmod 0660 /proc/ppm/policy/userlimit_max_cpu_freq
+ chown system system /proc/ppm/policy/userlimit_min_cpu_core
+ chmod 0660 /proc/ppm/policy/userlimit_min_cpu_core
+ chown system system /proc/ppm/policy/userlimit_max_cpu_core
+ chmod 0660 /proc/ppm/policy/userlimit_max_cpu_core
+ chown system system /proc/ppm/dump_cluster_0_dvfs_table
+ chmod 0440 /proc/ppm/dump_cluster_0_dvfs_table
+ chown system system /proc/ppm/dump_cluster_1_dvfs_table
+ chmod 0440 /proc/ppm/dump_cluster_1_dvfs_table
+ chown system system /proc/ppm/dump_cluster_2_dvfs_table
+ chmod 0440 /proc/ppm/dump_cluster_2_dvfs_table
+ chown system system /proc/ppm/root_cluster
+ chmod 0660 /proc/ppm/root_cluster
+
+# CPU freq
+ chown system system /proc/cpufreq/cpufreq_limited_by_hevc
+ chmod 0660 /proc/cpufreq/cpufreq_limited_by_hevc
+ chown system system /proc/cpufreq/cpufreq_limited_max_freq_by_user
+ chmod 0660 /proc/cpufreq/cpufreq_limited_max_freq_by_user
+
+# BW monitor
+ chown system system /proc/fliper
+ chmod 0664 /proc/fliper
+
+##Netlog tool
+ #change permissions about terminal
+ chown root radio /proc/net/vlan/config
+ chmod 0640 /proc/net/vlan/config
+ chown root radio /proc/net/ip6_tables_matches
+ chown root radio /proc/net/ip6_tables_names
+ chown root radio /proc/net/ip6_tables_targets
+ chown root radio /proc/net/arp_tables_targets
+ chown root radio /proc/net/arp_tables_matches
+ chown root radio /proc/net/arp_tables_names
+ chown root radio /proc/net/ip_tables_targets
+ chown root radio /proc/net/ip_tables_matches
+ chown root radio /proc/net/ip_tables_names
+ chown root radio /proc/net/ip_conntrack_expect
+ chown root radio /proc/net/ip_conntrack
+ chown root radio /proc/net/nf_conntrack
+ chown root radio /proc/net/nf_conntrack_expect
+ chown root radio /proc/net/netfilter/nfnetlink_log
+ chown root radio /proc/net/netfilter/nfnetlink_queue
+
+# WMT proc
+ chown shell system /proc/driver/wmt_dbg
+ chown shell system /proc/driver/wmt_aee
+
+# define device for EMCSMDLOGGER
+ chown system radio /dev/ttyGS3
+ chmod 0660 /dev/ttyGS3
+
+#Define device for ATCID
+ chmod 660 /dev/ttyGS0
+ chown system radio /dev/ttyGS0
+ chmod 660 /dev/ttyGS1
+ chown system radio /dev/ttyGS1
+
+on property:ro.board.platform=mt6753
+ chown system system /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
+ chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
+ write /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq 1300000
+
+on property:vold.decrypt=trigger_reset_main
+ start stop_modem
+ setprop sys.boot_completed 0
+ setprop dev.bootcomplete 0
+ write /proc/bootprof "trigger_reset_main"
+
+on property:vold.decrypt=trigger_restart_min_framework
+ start start_modem
+ start msensord
+ start permission_check
+ start stp_dump
+ write /proc/bootprof "trigger_restart_min_framework"
+
+on property:vold.decrypt=trigger_restart_framework
+ start nvram_daemon
+ start start_modem
+ start msensord
+ start permission_check
+ write /proc/bootprof "trigger_restart_framework"
+
+on property:vold.decrypt=trigger_shutdown_framework
+ start stop_modem
+ start swapoff_action
+ stop stp_dump
+ setprop sys.boot_completed 0
+ setprop dev.bootcomplete 0
+ write /proc/bootprof "trigger_shutdown_framework"
+
+service stop_modem /system/bin/md_ctrl 0
+ class main
+ disabled
+ oneshot
+
+service start_modem /system/bin/md_ctrl 1
+ class main
+ disabled
+ oneshot
+# Define TCP buffer sizes for various networks
+# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
+ setprop net.tcp.buffersize.default 4096,87380,524288,4096,16384,524288
+ setprop net.tcp.buffersize.wifi 524288,1048576,2097152,262144,524288,1048576
+ setprop net.tcp.buffersize.lte 524288,1048576,2097152,262144,524288,1048576
+ setprop net.tcp.buffersize.umts 4094,87380,524288,4096,16384,524288
+ setprop net.tcp.buffersize.hspa 4094,87380,524288,4096,16384,524288
+ setprop net.tcp.buffersize.hsupa 4094,87380,524288,4096,16384,524288
+ setprop net.tcp.buffersize.hsdpa 4094,87380,524288,4096,16384,524288
+ setprop net.tcp.buffersize.hspap 4094,87380,1220608,4096,16384,1220608
+ setprop net.tcp.buffersize.edge 4093,26280,35040,4096,16384,35040
+ setprop net.tcp.buffersize.gprs 4092,8760,11680,4096,8760,11680
+
+ setprop persist.sys.strictmode.disable 1
+
+## mtk printk uart controller
+on property:persist.uartconsole.enable=1
+ write /proc/mtprintk 1
+
+# Update the second boot logo
+service bootlogoupdater /system/bin/boot_logo_updater
+ class core
+ oneshot
+
+service mobile_log_d /system/bin/mobile_log_d
+ class main
+# MTK PR_DEBUG SWITCH
+on property:debug.MB.prdebug=1
+ write /sys/kernel/debug/dynamic_debug/control "file *mediatek* +p"
+ write /sys/kernel/debug/dynamic_debug/control "file *gpu* -p"
+on property:debug.MB.prdebug=0
+ write /sys/kernel/debug/dynamic_debug/control "file *mediatek* -p"
+
+service met_log_d /system/bin/met_log_d
+ class main
+
+# bugreport is triggered by holding down volume down, volume up and power
+service bugreport /system/bin/dumpstate -d -p -B \
+ -o /data/data/com.android.shell/files/bugreports/bugreport
+ class main
+ disabled
+ oneshot
+ keycodes 114 115 116
+
+# start ged_srv
+on property:sys.boot_completed=1
+ start ged_srv
+
+service ged_srv /system/bin/ged_srv
+ class core
+ user system
+ group system
+ disabled
+
+on property:sys.boot_completed=1
+ start gas_srv
+
+service gas_srv /system/bin/gas_srv
+ class core
+ user system
+ group system
+ disabled
+
+service netdiag /system/bin/netdiag
+ class main
+ socket netdiag stream 0664 root inet
+
+
+service nvram_daemon /system/bin/nvram_daemon
+ class main
+ user root
+ group system
+ oneshot
+
+service atci_service /system/bin/atci_service
+ class core
+ socket atci-service stream 660 radio system
+ socket atci-serv-fw stream 660 radio system
+ user root
+ disabled
+ group radio system
+
+service atcid-daemon-u /system/bin/atcid
+ class main
+ socket adb_atci_socket stream 660 radio system
+ user system
+ group radio system media
+ disabled
+ oneshot
+
+service atcid-daemon-e /system/bin/atcid
+ class core
+ socket adb_atci_socket stream 660 radio system
+ user root
+ group radio system
+ disabled
+ oneshot
+
+on property:persist.service.atci.usermode=1
+ setprop persist.sys.usb.config mass_storage,adb,acm
+
+on property:ro.build.type=eng
+start atci_service
+start atcid-daemon-e
+
+on property:persist.service.atci.autostart=1
+start atci_service
+start atcid-daemon-u
+
+service audio-daemon /system/bin/audiocmdservice_atci
+ class main
+ socket atci-audio stream 660 root system
+ user root
+ disabled
+ oneshot
+
+service md_minilog_util /system/bin/md_minilog_util
+ user root
+ disabled
+ oneshot
+
+service pq /system/bin/pq
+ class main
+ user system
+ group system graphics
+
+service aal /system/bin/aal
+ class main
+ user system
+ group system graphics
+
+# FOTA upgrade
+service rbfota /system/bin/fota1
+ class main
+ disabled
+ oneshot
+
+
+service dhcpcd_bt-pan /system/bin/dhcpcd -BK -dd
+ class main
+ user root
+ group net_admin net_raw
+ disabled
+ oneshot
+
+
+
+service dhcpcd_wlan0 /system/bin/dhcpcd -BK -dd
+ class main
+ user root
+ group net_admin net_raw
+ disabled
+ oneshot
+
+service dhcpcd_p2p /system/bin/dhcpcd -BK -dd
+ class main
+ user root
+ group net_admin net_raw
+ disabled
+ oneshot
+
+service iprenew_wlan0 /system/bin/dhcpcd -n
+ class main
+ user dhcp
+ group net_admin net_raw
+ disabled
+ oneshot
+
+service iprenew_p2p /system/bin/dhcpcd -n
+ class main
+ user dhcp
+ group net_admin net_raw
+ disabled
+ oneshot
+
+service dhcp_inform /system/bin/dhcpcd -s -BK -A
+ class main
+ user root
+ group system radio dhcp net_admin net_raw
+ disabled
+ oneshot
+
+service dhcpv6_inform /system/bin/dhcp6c -c "/etc/wide-dhcpv6/dhcp6cSIP.conf" -Dfi
+ class main
+ user root
+ group system radio dhcp net_admin net_raw
+ disabled
+ oneshot
+
+service dhcp6cDNS_wlan0 /system/bin/dhcp6c -c "/etc/wide-dhcpv6/dhcp6cDNS.conf" -Df wlan0
+ disabled
+ oneshot
+
+service dhcp6c_wlan0 /system/bin/dhcp6c -c "/etc/wide-dhcpv6/dhcp6c.conf" -Df wlan0
+ disabled
+ oneshot
+
+on property:service.dhcp6c_wlan0.enable=0
+ stop dhcp6c_wlan0
+
+on property:service.dhcp6c_wlan0.enable=1
+ start dhcp6c_wlan0
+
+service dhcp6c_PD /system/bin/dhcp6c -c "/etc/wide-dhcpv6/dhcp6cPD.conf" -Df
+ disabled
+ oneshot
+
+service pppoe_wlan0 /system/bin/launchpppoe
+ user root
+ group radio cache inet misc
+ disabled
+ oneshot
+
+on property:service.pppoe_wlan0.enable=0
+ stop pppoe_wlan0
+
+on property:service.pppoe_wlan0.enable=1
+ start pppoe_wlan0
+# write proc for test sim
+ on property:gsm.sim.ril.testsim=0
+ write /proc/sys/net/netfilter/nf_conntrack_tcp_no_window_check 0
+ write /proc/sys/net/ipv4/tcp_rto_min 200
+ write /proc/sys/net/ipv4/tcp_early_retrans 3
+ on property:gsm.sim.ril.testsim=1
+ write /proc/sys/net/netfilter/nf_conntrack_tcp_no_window_check 1
+ write /proc/sys/net/ipv4/tcp_rto_min 400
+ write /proc/sys/net/ipv4/tcp_early_retrans 0
+ on property:gsm.sim.ril.testsim.2=0
+ write /proc/sys/net/netfilter/nf_conntrack_tcp_no_window_check 0
+ write /proc/sys/net/ipv4/tcp_rto_min 200
+ write /proc/sys/net/ipv4/tcp_early_retrans 3
+ on property:gsm.sim.ril.testsim.2=1
+ write /proc/sys/net/netfilter/nf_conntrack_tcp_no_window_check 1
+ write /proc/sys/net/ipv4/tcp_rto_min 400
+ write /proc/sys/net/ipv4/tcp_early_retrans 0
+ on property:gsm.sim.ril.testsim.3=0
+ write /proc/sys/net/netfilter/nf_conntrack_tcp_no_window_check 0
+ write /proc/sys/net/ipv4/tcp_rto_min 200
+ write /proc/sys/net/ipv4/tcp_early_retrans 3
+ on property:gsm.sim.ril.testsim.3=1
+ write /proc/sys/net/netfilter/nf_conntrack_tcp_no_window_check 1
+ write /proc/sys/net/ipv4/tcp_rto_min 400
+ write /proc/sys/net/ipv4/tcp_early_retrans 0
+ on property:gsm.sim.ril.testsim.4=0
+ write /proc/sys/net/netfilter/nf_conntrack_tcp_no_window_check 0
+ write /proc/sys/net/ipv4/tcp_rto_min 200
+ write /proc/sys/net/ipv4/tcp_early_retrans 3
+ on property:gsm.sim.ril.testsim.4=1
+ write /proc/sys/net/netfilter/nf_conntrack_tcp_no_window_check 1
+ write /proc/sys/net/ipv4/tcp_rto_min 400
+ write /proc/sys/net/ipv4/tcp_early_retrans 0
+
+service DMAgent /system/bin/dm_agent_binder
+ class main
+ user system
+ group system cache
+
+service PPLAgent /system/bin/ppl_agent
+ class main
+ user root
+ group system cache
+
+service vtservice /system/bin/vtservice
+ class main
+ socket soc_vt_tcv dgram 660 radio system
+ socket soc_vt_stk dgram 660 radio system
+ socket soc_vt_svc dgram 660 radio system
+ user root
+ group camera graphics media sdcard_rw radio sdcard_r media_rw
+ ioprio rt 4
+
+service cmmb /system/bin/cmmbsp
+ class main
+ user root
+ group system audio camera graphics inet net_bt net_bt_admin net_bw_acct media
+ ioprio rt 4
+
+service enableswap /system/bin/sh /enableswap.sh
+ class late_start
+ oneshot
+ seclabel u:r:enableswap:s0
+
+service swapoff_action /system/bin/sh /disableswap.sh
+ class main
+ disabled
+ oneshot
+
+service dbus /system/bin/dbus-daemon --system --nofork
+ class main
+ socket dbus stream 660 bluetooth bluetooth
+ user bluetooth
+ group bluetooth net_bt_admin
+
+service bluetoothd /system/bin/bluetoothd -n
+ class main
+ socket bluetooth stream 660 bluetooth bluetooth
+ socket dbus_bluetooth stream 660 bluetooth bluetooth
+ # init.rc does not yet support applying capabilities, so run as root and
+ # let bluetoothd drop uid to bluetooth with the right linux capabilities
+ group bluetooth net_bt_admin misc
+ disabled
+
+#service dpfd /system/bin/dpfd
+# user root
+# group system media
+
+#
+# External Modme control related services
+#
+
+#
+# Modem related services (Begin)
+#
+service pppd_gprs /system/bin/pppd_dt /dev/ttyACM0 debug noauth refuse-eap usepeerdns nodetach
+ user root
+ group radio cache inet misc
+ disabled
+ oneshot
+
+##Add by T.Zh for ppp daemon
+#service pppd /system/bin/pppd file /data/misc/ppp/ppp_options
+# user root
+# disabled
+# oneshot
+#
+##
+#
+# Modem related services (End)
+#
+
+#service agpsdcainit /system/bin/agpscacertinit
+# class main
+# oneshot
+
+service agpsd /system/bin/mtk_agpsd
+ class main
+ socket agpsd stream 660 gps system
+ socket agpsd2 stream 660 gps inet
+ socket agpsd3 stream 660 gps inet
+ user gps
+ group gps radio inet sdcard_r sdcard_rw misc
+
+service slpd /system/bin/slpd
+ class main
+ user gps
+ group gps inet
+
+service ipod /system/bin/ipod
+ user root
+ group root
+ disabled
+
+service extmdlogger /system/bin/extmdlogger
+ class main
+ user shell
+ group shell system radio sdcard_rw inet sdcard_r media_rw
+
+service GoogleOtaAgent /system/bin/GoogleOtaBinder
+ class main
+ user root
+ group root
+
+service mdlogger /system/bin/mdlogger
+ class main
+ user shell
+ group shell system radio sdcard_rw inet sdcard_r media_rw
+ disabled
+ oneshot
+
+service emdlogger1 /system/bin/emdlogger1
+ class main
+ user shell
+ group system shell radio sdcard_rw inet sdcard_r media_rw
+ disabled
+ oneshot
+
+service emdlogger2 /system/bin/emdlogger2
+ class main
+ user shell
+ group system shell radio sdcard_rw inet sdcard_r media_rw
+ disabled
+ oneshot
+
+service emdlogger3 /system/bin/emdlogger3
+ class main
+ user shell
+ group system shell radio sdcard_rw inet sdcard_r media_rw
+ disabled
+ oneshot
+
+service emdlogger5 /system/bin/emdlogger5
+ class main
+ user shell
+ group system shell radio sdcard_rw inet sdcard_r media_rw
+ disabled
+ oneshot
+
+service emdlogger6 /system/bin/emdlogger6
+ class main
+ user shell
+ group system shell radio sdcard_rw inet sdcard_r media_rw
+ disabled
+ oneshot
+
+#
+#sensor service (begin)
+#
+
+service msensord /system/bin/msensord
+ class main
+ oneshot
+
+service s62xd /system/bin/s62xd
+ disabled
+ user compass
+ group system
+ class main
+service ami304d /system/bin/ami304d
+ user system
+ group system
+ disabled
+ class main
+
+service memsicd /system/bin/memsicd
+ disabled
+ user system
+ group system
+ class main
+
+service memsicd3416x /system/bin/memsicd3416x
+ disabled
+ user system
+ group system
+ class main
+service akmd8975 /system/bin/akmd8975
+ disabled
+ user system
+ group system
+ class main
+
+service akmd8963 /system/bin/akmd8963
+ disabled
+ user system
+ group system
+ class main
+
+service akmd09911 /system/bin/akmd09911
+ disabled
+ user system
+ group system
+ class main
+service akmd09912 /system/bin/akmd09912
+ disabled
+ user system
+ group system
+ class main
+service bmm050d /system/bin/bmm050d
+ disabled
+ user system
+ group system
+ class main
+
+service bmm056d /system/bin/bmm056d
+ disabled
+ user system
+ group system
+ class main
+service mc6420d /system/bin/mc6420d
+ disabled
+ user system
+ group system
+ class main
+service qmc5983d /system/bin/qmc5983d
+ disabled
+ user system
+ group system
+ class main
+
+service orientationd /system/bin/orientationd
+ disabled
+ user system
+ group system input
+ class main
+service AcdApiDaemon /system/bin/AcdApiDaemon
+ disabled
+ user system
+ group system
+ class main
+
+service geomagneticd /system/bin/geomagneticd
+ disabled
+ user system
+ group system input
+ class main
+
+service mpud6050 /system/bin/mpud6050
+ oneshot
+ user system
+ group system
+
+service mc64xxd /system/bin/mc64xxd
+ disabled
+ user system
+ group system
+ class main
+#
+#sensor service (end)
+#
+
+#
+#emsvr service (start)
+#
+on property:ro.build.type=eng
+ start emsvr
+
+on property:ro.build.type=user
+ start emsvr_user
+
+on property:ro.build.type=userdebug
+ start emsvr_user
+
+service emsvr_user /system/bin/em_svr
+ disabled
+ user system
+ group system radio diag net_bt_stack
+
+service emsvr /system/bin/em_svr
+ disabled
+ user root
+ group net_bt_stack
+
+#
+#emsvr service (end)
+#
+
+service shutdown /system/bin/shutdown
+ user root
+ group root
+ disabled
+
+service NvRAMAgent /system/bin/nvram_agent_binder
+ class main
+ user system
+ group system
+
+service thermalloadalgod /system/bin/thermalloadalgod
+ class main
+ user system
+ group system
+
+
+service thermal_manager /system/bin/thermal_manager
+ class main
+ user root
+ oneshot
+
+service thermal /system/bin/thermal
+ class main
+ user system
+ group system
+
+service thermald /system/bin/thermald
+ class main
+ user system
+ group system
+
+service fuelgauged /system/bin/fuelgauged
+ class main
+ user root
+ group root
+
+service sn /system/bin/sn
+ class late_start
+ user system
+ group system sdcard_rw
+ oneshot
+
+#add for power-off alarm
+service poad /system/bin/poad
+ class main
+ user system
+ group system
+ oneshot
+
+#monitor battery status
+service batterywarning /system/bin/batterywarning
+ class main
+ user shell
+ group shell
+
+service backuprestore /system/bin/br_app_data_service
+ class main
+ socket backuprestore stream 0660 root sdcard_rw
+ user root
+
+#service BGW /system/xbin/BGW
+# user system
+# group gps system radio
+# class main
+service MtkCodecService /system/bin/MtkCodecService
+ class main
+ user system
+ group audio media sdcard_r
+
+# GuiExt Server init
+service guiext-server /system/bin/guiext-server
+ class main
+ user system
+ group system graphics
+
+# OperaMax Service
+service OperaMaxSystem /system/bin/OperaMaxSystem
+ socket tunman stream 0666 system system
+ class main
+ disabled
+
+on property:persist.service.operamax=1
+ start OperaMaxSystem
+
+on property:persist.service.operamax=0
+ stop OperaMaxSystem
+
+# Battery info
+on property:persist.mediatek.fg.disable=1
+ write /sys/devices/platform/battery_meter/FG_daemon_disable 1
+
+on property:persist.mediatek.fg.force25c=1
+ write /sys/devices/platform/battery_meter/FG_drv_force25c 1
+
+on property:persist.mediatek.fg.force25c=0
+ write /sys/devices/platform/battery_meter/FG_drv_force25c 0
+
+on property:persist.mediatek.fg.log.enable=1
+ write /sys/devices/platform/battery_meter/FG_daemon_log_level 7
+ write /proc/sys/kernel/printk 8
+
+service kpoc_charger /system/bin/kpoc_charger
+ class charger
+
+###########add for 3Gdongle
+
+on boot
+#
+# change the right of ip-up ip-down scripts(begin)
+#
+chmod 777 /etc/ppp/ip-up
+chmod 777 /etc/ppp/ip-down
+#
+# change the right of ip-up ip-down scripts(end)
+#
+
+#
+# change the right of ip-up-ppp0 ip-down-ppp0 scripts(begin)
+#
+chmod 777 /etc/ppp/ip-up-ppp0
+chmod 777 /etc/ppp/ip-down-ppp0
+#
+# change the right of ip-up ip-down scripts(end)
+#
+
+#set the property of persiste.radio.reset_on_switch
+setprop persist.radio.reset_on_switch false
+#end
+
+#set the property of rild.mark_switchuser
+setprop rild.mark_switchuser 0
+#end
+
+chmod 0644 /system/lib/libzteevdo-ril.so
+chomd 0644 /system/lib/zterilPara
+chown root /system/bin/pppd
+chmod 4755 /system/bin/pppd
+chown root /system/bin/chat
+chmod 4755 /system/bin/chat
+
+#
+#ril-daemon (begin)
+#
+service ril-3gddaemon /system/bin/rild_dongle
+ class main
+ socket rild-dongle stream 660 root radio
+ socket rild-dongle-debug stream 660 radio radio
+ user root
+ group radio cache inet misc audio log
+ disabled
+
+#
+#ril-daemon (end)
+#
+
+#
+#usbdongled(begin)
+#
+service usbdongled /system/bin/dongled
+ class main
+ user root
+ group radio cache inet misc
+ enabled
+
+
+#
+#usbdongled(end)
+#
+
+#
+# add the service for call pppd(begin)
+#
+service zpppd_gprs /system/bin/init.gprs-pppd
+ user root
+ group radio cache inet misc
+ disabled
+ oneshot
+#
+# add the service for call pppd(end)
+#
+
+# Program binary service
+service program_binary /system/bin/program_binary_service
+ class late_start
+ user system
+ group graphics
+ oneshot
+
+
+# MBIMD Service
+service mbimd /system/bin/mbimd debug
+ disabled
+ oneshot
+
+on property:service.mbim.enable=0
+ stop mbimd
+
+on property:service.mbim.enable=1
+ start mbimd
+
+# android log much detect
+on property:ro.build.type=eng
+ setprop persist.logmuch.detect false
+
+on property:ro.build.type=userdebug
+ setprop persist.logmuch.detect false
+
+on property:persist.logmuch.detect=*
+ start logd
+ start logd-reinit
+
+on property:logmuch.detect.value=*
+ start logd
+ start logd-reinit
+
diff --git a/init.mt6797.usb.rc b/init.mt6797.usb.rc
new file mode 100755
index 0000000..0d0c17a
--- /dev/null
+++ b/init.mt6797.usb.rc
@@ -0,0 +1,1073 @@
+on boot
+ setprop sys.usb.vid 0E8D
+ write /sys/class/android_usb/android0/iManufacturer MediaTek
+ write /sys/class/android_usb/android0/iProduct ${ro.product.model}
+ write /sys/class/android_usb/android0/iSerial ${ro.serialno}
+ write /sys/class/android_usb/android0/f_rndis/wceis 1
+ write /sys/class/android_usb/android0/f_rndis/manufacturer MediaTek
+ write /sys/class/android_usb/android0/f_rndis/vendorID ${sys.usb.vid}
+
+on fs
+ mkdir /dev/usb-ffs 0770 shell shell
+ mkdir /dev/usb-ffs/adb 0770 shell shell
+ mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
+ write /sys/class/android_usb/android0/f_ffs/aliases adb
+ chown system system /sys/class/android_usb/android0/f_acm/port_index
+ chmod 0660 /sys/class/android_usb/android0/f_acm/port_index
+
+
+on post-fs-data
+ chown radio system /sys/class/usb_rawbulk/data/enable
+ chmod 0660 /sys/class/usb_rawbulk/data/enable
+ chown radio system /sys/class/usb_rawbulk/ets/enable
+ chmod 0660 /sys/class/usb_rawbulk/ets/enable
+ chown radio system /sys/class/usb_rawbulk/atc/enable
+ chmod 0660 /sys/class/usb_rawbulk/atc/enable
+ chown radio system /sys/class/usb_rawbulk/pcv/enable
+ chmod 0660 /sys/class/usb_rawbulk/pcv/enable
+ chown radio system /sys/class/usb_rawbulk/gps/enable
+ chmod 0660 /sys/class/usb_rawbulk/gps/enable
+
+# Used to disable USB when switching states
+on property:sys.usb.config=none
+ stop adbd
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/bDeviceClass 0
+ write /sys/devices/platform/mt_usb/saving 0
+ setprop sys.usb.state ${sys.usb.config}
+
+#1.acm
+on property:sys.usb.config=acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2007
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/bDeviceClass 02
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#2.adb
+on property:sys.usb.config=adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 201C
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#3.adb,acm
+on property:sys.usb.config=adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 200E
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#4.mass_storage
+on property:sys.usb.config=mass_storage
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2002
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#5.mass_storage,adb
+on property:sys.usb.config=mass_storage,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2003
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#6.mtp
+on property:sys.usb.config=mtp
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2008
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#7.mtp,acm
+on property:sys.usb.config=mtp,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2012
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#8.mtp,adb
+on property:sys.usb.config=mtp,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 201D
+ write /sys/class/android_usb/android0/functions mtp,adb
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#9.mtp,adb,acm
+on property:sys.usb.config=mtp,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 200A
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#10.mtp,mass_storage
+on property:sys.usb.config=mtp,mass_storage
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2016
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#11.mtp,mass_storage,adb
+on property:sys.usb.config=mtp,mass_storage,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2017
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#12.ptp
+on property:sys.usb.config=ptp
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 200B
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#13.ptp,acm
+on property:sys.usb.config=ptp,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2013
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#14.ptp,adb
+on property:sys.usb.config=ptp,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 200C
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#15.ptp,adb,acm
+on property:sys.usb.config=ptp,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 200D
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#16.ptp,mass_storage
+on property:sys.usb.config=ptp,mass_storage
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2015
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#17.ptp,mass_storage,adb
+on property:sys.usb.config=ptp,mass_storage,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2014
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#18.rndis
+on property:sys.usb.config=rndis
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2004
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/bDeviceClass 224
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#19.rndis,acm
+on property:sys.usb.config=rndis,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2011
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#20.rndis,adb
+on property:sys.usb.config=rndis,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2005
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#21.rndis,adb,acm
+on property:sys.usb.config=rndis,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2010
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#22.mass_storage,acm
+on property:sys.usb.config=mass_storage,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 200F
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#23.mass_storage,adb,acm
+on property:sys.usb.config=mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2006
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#24.mtp,mass_storage,acm
+on property:sys.usb.config=mtp,mass_storage,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2018
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#25.mtp,mass_storage,adb,acm
+on property:sys.usb.config=mtp,mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2019
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#26.ptp,mass_storage,acm
+on property:sys.usb.config=ptp,mass_storage,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 201A
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#27.ptp,mass_storage,adb,acm
+on property:sys.usb.config=ptp,mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 201B
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+# duplicate of init.usb.rc
+
+#28. USB accessory configuration
+#on property:sys.usb.config=accessory
+# write /sys/class/android_usb/android0/enable 0
+# write /sys/class/android_usb/android0/idVendor 18d1
+# write /sys/class/android_usb/android0/idProduct 2d00
+# write /sys/class/android_usb/android0/functions ${sys.usb.config}
+# write /sys/class/android_usb/android0/enable 1
+# setprop sys.usb.state ${sys.usb.config}
+
+#39. USB accessory configuration, with adb
+#on property:sys.usb.config=accessory,adb
+# write /sys/class/android_usb/android0/enable 0
+# write /sys/class/android_usb/android0/idVendor 18d1
+# write /sys/class/android_usb/android0/idProduct 2d01
+# write /sys/class/android_usb/android0/functions ${sys.usb.config}
+# write /sys/class/android_usb/android0/enable 1
+# start adbd
+# setprop sys.usb.state ${sys.usb.config}
+
+#30. audio accessory configuration
+#on property:sys.usb.config=audio_source
+# write /sys/class/android_usb/android0/enable 0
+# write /sys/class/android_usb/android0/idVendor 18d1
+# write /sys/class/android_usb/android0/idProduct 2d02
+# write /sys/class/android_usb/android0/functions ${sys.usb.config}
+# write /sys/class/android_usb/android0/enable 1
+# setprop sys.usb.state ${sys.usb.config}
+
+#31. audio accessory configuration, with adb
+#on property:sys.usb.config=audio_source,adb
+# write /sys/class/android_usb/android0/enable 0
+# write /sys/class/android_usb/android0/idVendor 18d1
+# write /sys/class/android_usb/android0/idProduct 2d03
+# write /sys/class/android_usb/android0/functions ${sys.usb.config}
+# write /sys/class/android_usb/android0/enable 1
+# start adbd
+# setprop sys.usb.state ${sys.usb.config}
+
+#32. USB and audio accessory configuration
+#on property:sys.usb.config=accessory,audio_source
+# write /sys/class/android_usb/android0/enable 0
+# write /sys/class/android_usb/android0/idVendor 18d1
+# write /sys/class/android_usb/android0/idProduct 2d04
+# write /sys/class/android_usb/android0/functions ${sys.usb.config}
+# write /sys/class/android_usb/android0/enable 1
+# setprop sys.usb.state ${sys.usb.config}
+
+#33. USB and audio accessory configuration, with adb
+#on property:sys.usb.config=accessory,audio_source,adb
+# write /sys/class/android_usb/android0/enable 0
+# write /sys/class/android_usb/android0/idVendor 18d1
+# write /sys/class/android_usb/android0/idProduct 2d05
+# write /sys/class/android_usb/android0/functions ${sys.usb.config}
+# write /sys/class/android_usb/android0/enable 1
+# start adbd
+# setprop sys.usb.state ${sys.usb.config}
+
+#34.USB Charging Only configuration
+on property:sys.usb.config=charging
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.charging cdp
+
+on property:sys.usb.charging=cdp
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2008
+ write /sys/class/android_usb/android0/functions mtp
+ write /sys/class/android_usb/android0/enable 1
+ write /sys/class/udc/musb-hdrc/device/cmode 2
+
+on property:sys.usb.charging=yes
+ write /sys/class/udc/musb-hdrc/device/cmode 2
+
+on property:sys.usb.charging=no
+ write /sys/class/udc/musb-hdrc/device/cmode 1
+
+#35.USB BICR configuration(mass_storage)
+on property:sys.usb.config=bicr
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2002
+ write /sys/class/android_usb/android0/functions mass_storage
+ write /sys/class/android_usb/android0/f_mass_storage/bicr 1
+ write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#36.USB BICR configuration(mass_storage+adb)
+on property:sys.usb.config=bicr,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2003
+ write /sys/class/android_usb/android0/functions mass_storage,adb
+ write /sys/class/android_usb/android0/f_mass_storage/bicr 1
+ write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#37.USB BICR configuration(mass_storage+adb+acm)
+on property:sys.usb.config=bicr,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2006
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/f_mass_storage/bicr 1
+ write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#38.USB BICR configuration(mass_storage+acm)
+on property:sys.usb.config=bicr,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 200F
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions mass_storage,acm
+ write /sys/class/android_usb/android0/f_mass_storage/bicr 1
+ write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#39.eem
+on property:sys.usb.config=eem
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2026
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/bDeviceClass 224
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#40.eem,acm
+on property:sys.usb.config=eem,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2027
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#41.eem,adb
+on property:sys.usb.config=eem,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2028
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#42.eem,adb,acm
+on property:sys.usb.config=eem,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2030
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+# USB midi configuration
+on property:sys.usb.config=midi
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2046
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+# USB midi configuration, with acm
+on property:sys.usb.config=midi,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2047
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+# USB midi configuration, with adb
+on property:sys.usb.config=midi,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2048
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+# USB midi configuration, with adb acm
+on property:sys.usb.config=midi,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2049
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+
+#C2K bypass
+on property:sys.usb.config=via_bypass
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2031
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions via_modem,via_ets,via_atc
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K bypass,adb
+on property:sys.usb.config=via_bypass,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2032
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions via_modem,adb
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K bypass,acm
+on property:sys.usb.config=mass_storage,adb,via_bypass
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2033
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,via_modem
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K bypass,adb,acm
+on property:sys.usb.config=via_bypass,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2034
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions via_modem,via_ets,via_atc,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=c2k_bypass
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2051
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions via_modem
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K bypass,adb
+on property:sys.usb.config=c2k_bypass,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2052
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions via_modem,adb
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K bypass,acm
+on property:sys.usb.config=mass_storage,adb,c2k_bypass
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2053
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,via_modem
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K bypass,adb,acm
+on property:sys.usb.config=c2k_bypass,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2054
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions via_modem,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K rndis,bypass
+on property:sys.usb.config=rndis,via_bypass
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2036
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,via_ets
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K rndis,bypass,adb
+on property:sys.usb.config=rndis,via_bypass,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2037
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,via_ets,adb
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K rndis,bypass,acm
+ on property:sys.usb.config=rndis,via_bypass,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2038
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,via_ets,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K rndis,bypass,adb,acm
+ on property:sys.usb.config=rndis,via_bypass,adb,acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2039
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,via_ets,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#C2K bypass
+on property:sys.usb.config=via_bypass,gs1gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2050
+ write /sys/class/android_usb/android0/f_acm/port_index 2,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions via_modem,acm,adb
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 2,4
+
+on property:sys.usb.config=via_bypass,adb,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2050
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions via_modem,acm,adb
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=rndis,gs1gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2043
+ write /sys/class/android_usb/android0/f_acm/port_index 2,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 2,4
+
+#43.acm third port for bt
+on property:sys.usb.config=acm_third
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2006
+ write /sys/class/android_usb/android0/f_acm/port_index 3
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+#44.comport --> /dev/ttyGS3
+on property:sys.usb.config=gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2044
+ write /sys/class/android_usb/android0/f_acm/port_index 4
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 4
+
+on property:sys.usb.config=gs3,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 202E
+ write /sys/class/android_usb/android0/f_acm/port_index 1,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,4
+
+on property:sys.usb.config=gs1gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2029
+ write /sys/class/android_usb/android0/f_acm/port_index 2,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 2,4
+
+on property:sys.usb.config=gs1gs3,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 202F
+ write /sys/class/android_usb/android0/f_acm/port_index 1,2,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,2,4
+
+###############################################
+
+on property:sys.usb.config=mass_storage,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 202D
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mass_storage,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=mtp,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 202A
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mtp,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=ptp,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 202B
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions ptp,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=rndis,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 202C
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=mass_storage,adb,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2029
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=mtp,adb,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2026
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mtp,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=ptp,adb,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2027
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions ptp,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+
+#MTP setting
+#9.mtp,adb,acm
+on property:sys.usb.config=mtp,gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 205A
+ write /sys/class/android_usb/android0/f_acm/port_index 4
+ write /sys/class/android_usb/android0/functions mtp,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 4
+
+on property:sys.usb.config=mtp,gs3,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 205F
+ write /sys/class/android_usb/android0/f_acm/port_index 1,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mtp,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,4
+
+
+on property:sys.usb.config=mtp,gs1gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 205B
+ write /sys/class/android_usb/android0/f_acm/port_index 2,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mtp,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 2,4
+
+on property:sys.usb.config=mtp,gs0gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 205C
+ write /sys/class/android_usb/android0/f_acm/port_index 1,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mtp,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,4
+
+on property:sys.usb.config=mtp,gs0gs1
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2060
+ write /sys/class/android_usb/android0/f_acm/port_index 1,2
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mtp,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,2
+
+on property:sys.usb.config=rndis,adb,dual_acm
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2028
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=gs0gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2040
+ write /sys/class/android_usb/android0/f_acm/port_index 1,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,4
+
+on property:sys.usb.config=gs0gs1
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2041
+ write /sys/class/android_usb/android0/f_acm/port_index 1,2
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,2
+
+on property:sys.usb.config=rndis,gs0gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2042
+ write /sys/class/android_usb/android0/f_acm/port_index 1,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,4
+
+on property:sys.usb.config=rndis,gs0gs1
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2045
+ write /sys/class/android_usb/android0/f_acm/port_index 1,2
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,2
+
+on property:sys.usb.config=rndis,adb,gs0gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2061
+ write /sys/class/android_usb/android0/f_acm/port_index 1,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,4
+
+on property:sys.usb.config=rndis,adb,gs0gs1
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2062
+ write /sys/class/android_usb/android0/f_acm/port_index 1,2
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions rndis,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,2
+
+#MBIM setting
+on property:sys.usb.config=mbim_dun
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2055
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions mbim,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=mbim,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2056
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions mbim,adb
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=mbim_dun,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2057
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions mbim,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=mbim,gs1gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2058
+ write /sys/class/android_usb/android0/f_acm/port_index 2,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mbim,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 2,4
+
+on property:sys.usb.config=mbim,gs0gs3
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 205D
+ write /sys/class/android_usb/android0/f_acm/port_index 1,4
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mbim,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,4
+
+on property:sys.usb.config=mbim,gs0gs1
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 205E
+ write /sys/class/android_usb/android0/f_acm/port_index 1,2
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mbim,acm
+ write /sys/class/android_usb/android0/enable 1
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,2
+
+on property:sys.usb.config=mbim,adb,gs0gs1
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
+ write /sys/class/android_usb/android0/idProduct 2059
+ write /sys/class/android_usb/android0/f_acm/port_index 1,2
+ write /sys/devices/platform/mt_usb/saving 1
+ write /sys/class/android_usb/android0/functions mbim,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+ setprop sys.usb.acm_idx 1,2
+
+on property:sys.usb.bicr=yes
+ write /sys/class/android_usb/android0/f_mass_storage/bicr 1
+ write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
+
+on property:sys.usb.bicr=no
+ write /sys/class/android_usb/android0/f_mass_storage/bicr 0
+ write /sys/class/android_usb/android0/f_mass_storage/lun/file "off"
+
+on property:mediatek.usb.port.mode=usb
+ write /sys/bus/platform/devices/musb-hdrc/portmode 0
+
+on property:mediatek.usb.port.mode=uart
+ write /sys/bus/platform/devices/musb-hdrc/portmode 1
+
+on property:mediatek.usb.speed.mode=u3
+ write /sys/module/musb_hdrc/parameters/speed 1
+
+on property:mediatek.usb.speed.mode=u2
+ write /sys/module/musb_hdrc/parameters/speed 0
+
+on property:persist.mediatek.usb.speed.mode=u3
+ write /sys/module/musb_hdrc/parameters/speed 1
+
+on property:persist.mediatek.usb.speed.mode=u2
+ write /sys/module/musb_hdrc/parameters/speed 0
+
+on property:mediatek.usb.sib_enable=1
+ write /sys/bus/platform/devices/musb-hdrc/sib_enable 1
+ write /sys/kernel/debug/usb_c/sib 1
+
+on property:mediatek.usb.sib_enable=0
+ write /sys/bus/platform/devices/musb-hdrc/sib_enable 0
+ write /sys/kernel/debug/usb_c/sib 0
+
+on property:mediatek.em.usb.set=USB_DRIVING_CAPABILITY
+ write /sys/kernel/debug/usb20_phy/USB_DRIVING_CAPABILITY ${mediatek.em.usb.value}
+
+on property:mediatek.em.usb.set=RG_USB20_TERM_VREF_SEL
+ write /sys/kernel/debug/usb20_phy/RG_USB20_TERM_VREF_SEL ${mediatek.em.usb.value}
+
+on property:mediatek.em.usb.set=RG_USB20_HSTX_SRCTRL
+ write /sys/kernel/debug/usb20_phy/RG_USB20_HSTX_SRCTRL ${mediatek.em.usb.value}
+
+on property:mediatek.em.usb.set=RG_USB20_VRT_VREF_SEL
+ write /sys/kernel/debug/usb20_phy/RG_USB20_VRT_VREF_SEL ${mediatek.em.usb.value}
+
+on property:mediatek.em.usb.set=RG_USB20_INTR_EN
+ write /sys/kernel/debug/usb20_phy/RG_USB20_INTR_EN ${mediatek.em.usb.value}
diff --git a/init.recovery.mt6797.rc b/init.recovery.mt6797.rc
new file mode 100755
index 0000000..99ce0e6
--- /dev/null
+++ b/init.recovery.mt6797.rc
@@ -0,0 +1,25 @@
+on init
+# fake to CDP case
+# write /sys/module/musb_hdrc/parameters/musb_skip_charge_detect 1
+
+# set battery thread free
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor 0E8D
+ write /sys/class/android_usb/android0/idProduct 2008
+ write /sys/class/android_usb/android0/functions mtp
+ write /sys/class/android_usb/android0/enable 1
+
+# make this twice to keep following action not race with batyery thread
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor 0E8D
+ write /sys/class/android_usb/android0/idProduct 2008
+ write /sys/class/android_usb/android0/functions mtp
+ write /sys/class/android_usb/android0/enable 1
+
+# distinguish USB shoulde connect or not by this, CDP vs SDP
+ write /sys/devices/platform/mt_usb/cmode 2
+
+on property:ro.debuggable=1
+# restore cmode to normal for making USB enumeration
+ write /sys/devices/platform/mt_usb/cmode 1
+
diff --git a/init.trustonic.rc b/init.trustonic.rc
new file mode 100755
index 0000000..8755568
--- /dev/null
+++ b/init.trustonic.rc
@@ -0,0 +1,42 @@
+on init
+ #create mountpoint for persist partition
+ mkdir /persist 0771 system system
+
+on post-fs
+ chown system system /persist
+ chmod 0771 /persist
+
+ # We restorecon /persist to set SEPolicy label.
+ restorecon /persist
+
+on post-fs-data
+ # Create /data/key_provisioning dir and get proper encryption policy installed
+ # Key Installation
+ mkdir /data/key_provisioning 0771 system system
+
+on fs
+ write /proc/bootprof "start mobicore (on fs)"
+ mkdir /data/app/mcRegistry 0775 system system
+ mkdir /data/app/mcRegistry/TbStorage 0775 system system
+ chmod 0600 /dev/mobicore
+ chown system system /dev/mobicore
+ chmod 0666 /dev/mobicore-user
+ chown system system /dev/mobicore-user
+ chmod 0666 /dev/t-base-tui
+ chown system system /dev/t-base-tui
+ # MobiCore Daemon Paths
+ export MC_AUTH_TOKEN_PATH /efs
+ start mobicore
+ write /proc/bootprof "start mobicore end (on fs)"
+
+#service rda /system/bin/rda
+# class main
+# user shell
+# group shell
+
+# Start Daemon (Registry directories should already be present)
+service mobicore /system/bin/mcDriverDaemon -r /system/app/mcRegistry/020f0000000000000000000000000000.drbin -r /system/app/mcRegistry/05120000000000000000000000000000.drbin -r /system/app/mcRegistry/070b0000000000000000000000000000.drbin -r /system/app/mcRegistry/020b0000000000000000000000000000.drbin -r /system/app/mcRegistry/05070000000000000000000000000000.drbin
+ user system
+ group system
+ class core
+ oneshot
diff --git a/init.wfca.rc b/init.wfca.rc
new file mode 100755
index 0000000..3e3570b
--- /dev/null
+++ b/init.wfca.rc
@@ -0,0 +1,21 @@
+#
+## WFCA related services (Begin)
+#
+
+on property:ril.wfca=1
+ start wfca
+
+on property:ril.wfca=0
+ stop wfca
+
+service wfca /system/bin/wfca
+ class core
+ socket wfca stream 660 root system
+ socket wfca_rds stream 660 root system
+ user root
+ group system log inet radio net_admin root
+
+#
+## WFCA related services (End)
+#
+
diff --git a/init.xlog.rc b/init.xlog.rc
new file mode 100755
index 0000000..b08af17
--- /dev/null
+++ b/init.xlog.rc
@@ -0,0 +1,30 @@
+#
+# XLOG service configuration
+#
+service xlogboot /system/bin/xlog boot
+ user root
+ oneshot
+ disabled
+
+service xlogdebugchanged /system/bin/xlog debug-changed
+ user root
+ oneshot
+ disabled
+
+on property:persist.mtk.aee.mode=1
+ start xlogdebugchanged
+
+on property:persist.mtk.aee.mode=2
+ start xlogdebugchanged
+
+on property:persist.mtk.aee.mode=3
+ start xlogdebugchanged
+
+on property:persist.mtk.aee.mode=4
+ start xlogdebugchanged
+
+on property:init.svc.adbd=running
+ start xlogdebugchanged
+
+on property:init.svc.adbd=stopped
+ start xlogdebugchanged
diff --git a/kernel-headers/camera_dpe.h b/kernel-headers/camera_dpe.h
new file mode 100755
index 0000000..e09e4d6
--- /dev/null
+++ b/kernel-headers/camera_dpe.h
@@ -0,0 +1,295 @@
+#ifndef _MT_DPE_H
+#define _MT_DPE_H
+
+#include <linux/ioctl.h>
+
+#ifdef CONFIG_COMPAT
+//64 bit
+#include <linux/fs.h>
+#include <linux/compat.h>
+#endif
+
+/**
+ enforce kernel log enable
+*/
+#define KERNEL_LOG //enable debug log flag if defined
+
+#define _SUPPORT_MAX_DPE_FRAME_REQUEST_ 32
+#define _SUPPORT_MAX_DPE_REQUEST_RING_SIZE_ 32
+
+
+#define SIG_ERESTARTSYS 512 //ERESTARTSYS
+/*******************************************************************************
+*
+********************************************************************************/
+#define DPE_DEV_MAJOR_NUMBER 251
+#define DPE_MAGIC 'd'
+
+#define DPE_REG_RANGE (0x1000)
+#define DPE_BASE_HW 0x15028000
+
+
+#define DPE_DVE_INT_ST ((unsigned int)1<<1)
+#define DPE_WMFE_INT_ST ((unsigned int)1<<2)
+
+
+typedef struct
+{
+ unsigned int module;
+ unsigned int Addr; // register's addr
+ unsigned int Val; // register's value
+}DPE_REG_STRUCT;
+
+typedef struct
+{
+ DPE_REG_STRUCT* pData; // pointer to DPE_REG_STRUCT
+ unsigned int Count; // count
+}DPE_REG_IO_STRUCT;
+
+/**
+ interrupt clear type
+*/
+typedef enum
+{
+ DPE_IRQ_CLEAR_NONE, //non-clear wait, clear after wait
+ DPE_IRQ_CLEAR_WAIT, //clear wait, clear before and after wait
+ DPE_IRQ_WAIT_CLEAR, //wait the signal and clear it, avoid the hw executime is too s hort.
+ DPE_IRQ_CLEAR_STATUS, //clear specific status only
+ DPE_IRQ_CLEAR_ALL //clear all status
+}DPE_IRQ_CLEAR_ENUM;
+
+
+/**
+ module's interrupt , each module should have its own isr.
+ note:
+ mapping to isr table,ISR_TABLE when using no device tree
+*/
+typedef enum
+{
+ DPE_IRQ_TYPE_INT_DPE_ST, //DPE
+ DPE_IRQ_TYPE_AMOUNT
+}DPE_IRQ_TYPE_ENUM;
+
+typedef struct
+{
+ DPE_IRQ_CLEAR_ENUM Clear;
+ DPE_IRQ_TYPE_ENUM Type;
+ unsigned int Status; /*IRQ Status*/
+ unsigned int Timeout;
+ int UserKey; /* user key for doing interrupt operation */
+ int ProcessID; /* user ProcessID (will filled in kernel) */
+ unsigned int bDumpReg; /* check dump register or not*/
+}DPE_WAIT_IRQ_STRUCT;
+
+typedef struct
+{
+ DPE_IRQ_TYPE_ENUM Type;
+ int UserKey; /* user key for doing interrupt operation */
+ unsigned int Status; //Input
+}DPE_CLEAR_IRQ_STRUCT;
+
+
+
+
+typedef struct
+{
+ unsigned int DPE_DVE_CTRL;
+ unsigned int DPE_DVE_ORG_L_HORZ_BBOX;
+ unsigned int DPE_DVE_ORG_L_VERT_BBOX;
+ unsigned int DPE_DVE_ORG_R_HORZ_BBOX;
+ unsigned int DPE_DVE_ORG_R_VERT_BBOX;
+ unsigned int DPE_DVE_ORG_SIZE;
+ unsigned int DPE_DVE_ORG_SR_0;
+ unsigned int DPE_DVE_ORG_SR_1;
+ unsigned int DPE_DVE_ORG_SV;
+ unsigned int DPE_DVE_CAND_NUM;
+ unsigned int DPE_DVE_CAND_SEL_0;
+ unsigned int DPE_DVE_CAND_SEL_1;
+ unsigned int DPE_DVE_CAND_SEL_2;
+ unsigned int DPE_DVE_CAND_TYPE_0;
+ unsigned int DPE_DVE_CAND_TYPE_1;
+ unsigned int DPE_DVE_RAND_LUT;
+ unsigned int DPE_DVE_GMV;
+ unsigned int DPE_DVE_DV_INI;
+ unsigned int DPE_DVE_BLK_VAR_CTRL;
+ unsigned int DPE_DVE_SMTH_LUMA_CTRL;
+ unsigned int DPE_DVE_SMTH_DV_CTRL;
+ unsigned int DPE_DVE_ORD_CTRL;
+ unsigned int DPE_DVE_TYPE_CTRL_0;
+ unsigned int DPE_DVE_TYPE_CTRL_1;
+ unsigned int DPE_DVE_IMGI_L_BASE_ADDR;
+ unsigned int DPE_DVE_IMGI_L_STRIDE;
+ unsigned int DPE_DVE_IMGI_R_BASE_ADDR;
+ unsigned int DPE_DVE_IMGI_R_STRIDE;
+ unsigned int DPE_DVE_DVI_L_BASE_ADDR;
+ unsigned int DPE_DVE_DVI_L_STRIDE;
+ unsigned int DPE_DVE_DVI_R_BASE_ADDR;
+ unsigned int DPE_DVE_DVI_R_STRIDE;
+ unsigned int DPE_DVE_MASKI_L_BASE_ADDR;
+ unsigned int DPE_DVE_MASKI_L_STRIDE;
+ unsigned int DPE_DVE_MASKI_R_BASE_ADDR;
+ unsigned int DPE_DVE_MASKI_R_STRIDE;
+ unsigned int DPE_DVE_DVO_L_BASE_ADDR;
+ unsigned int DPE_DVE_DVO_L_STRIDE;
+ unsigned int DPE_DVE_DVO_R_BASE_ADDR;
+ unsigned int DPE_DVE_DVO_R_STRIDE;
+ unsigned int DPE_DVE_CONFO_L_BASE_ADDR;
+ unsigned int DPE_DVE_CONFO_L_STRIDE;
+ unsigned int DPE_DVE_CONFO_R_BASE_ADDR;
+ unsigned int DPE_DVE_CONFO_R_STRIDE;
+ unsigned int DPE_DVE_RESPO_L_BASE_ADDR;
+ unsigned int DPE_DVE_RESPO_L_STRIDE;
+ unsigned int DPE_DVE_RESPO_R_BASE_ADDR;
+ unsigned int DPE_DVE_RESPO_R_STRIDE;
+ unsigned int DPE_DVE_STA_0;//ReadOnly, DVE Statistic Result 0
+}DPE_DVEConfig;
+
+
+typedef struct
+{
+ unsigned int DPE_WMFE_CTRL_0;
+ unsigned int DPE_WMFE_SIZE_0;
+ unsigned int DPE_WMFE_IMGI_BASE_ADDR_0;
+ unsigned int DPE_WMFE_IMGI_STRIDE_0;
+ unsigned int DPE_WMFE_DPI_BASE_ADDR_0;
+ unsigned int DPE_WMFE_DPI_STRIDE_0;
+ unsigned int DPE_WMFE_TBLI_BASE_ADDR_0;
+ unsigned int DPE_WMFE_TBLI_STRIDE_0;
+ unsigned int DPE_WMFE_DPO_BASE_ADDR_0;
+ unsigned int DPE_WMFE_DPO_STRIDE_0;
+ unsigned int DPE_WMFE_CTRL_1;
+ unsigned int DPE_WMFE_SIZE_1;
+ unsigned int DPE_WMFE_IMGI_BASE_ADDR_1;
+ unsigned int DPE_WMFE_IMGI_STRIDE_1;
+ unsigned int DPE_WMFE_DPI_BASE_ADDR_1;
+ unsigned int DPE_WMFE_DPI_STRIDE_1;
+ unsigned int DPE_WMFE_TBLI_BASE_ADDR_1;
+ unsigned int DPE_WMFE_TBLI_STRIDE_1;
+ unsigned int DPE_WMFE_DPO_BASE_ADDR_1;
+ unsigned int DPE_WMFE_DPO_STRIDE_1;
+ unsigned int DPE_WMFE_CTRL_2;
+ unsigned int DPE_WMFE_SIZE_2;
+ unsigned int DPE_WMFE_IMGI_BASE_ADDR_2;
+ unsigned int DPE_WMFE_IMGI_STRIDE_2;
+ unsigned int DPE_WMFE_DPI_BASE_ADDR_2;
+ unsigned int DPE_WMFE_DPI_STRIDE_2;
+ unsigned int DPE_WMFE_TBLI_BASE_ADDR_2;
+ unsigned int DPE_WMFE_TBLI_STRIDE_2;
+ unsigned int DPE_WMFE_DPO_BASE_ADDR_2;
+ unsigned int DPE_WMFE_DPO_STRIDE_2;
+}DPE_WMFEConfig;
+
+/*******************************************************************************
+*
+********************************************************************************/
+typedef enum
+{
+ DPE_CMD_RESET, //Reset
+ DPE_CMD_DUMP_REG, //Dump DPE Register
+ DPE_CMD_DUMP_ISR_LOG, //Dump DPE ISR log
+ DPE_CMD_READ_REG, //Read register from driver
+ DPE_CMD_WRITE_REG, //Write register to driver
+ DPE_CMD_WAIT_IRQ, //Wait IRQ
+ DPE_CMD_CLEAR_IRQ, //Clear IRQ
+ DPE_CMD_DVE_ENQUE_NUM, //DVE Enque Number
+ DPE_CMD_DVE_ENQUE, //DVE Enque
+ DPE_CMD_DVE_ENQUE_REQ, //DVE Enque Request
+ DPE_CMD_DVE_DEQUE_NUM, //DVE Deque Number
+ DPE_CMD_DVE_DEQUE, //DVE Deque
+ DPE_CMD_DVE_DEQUE_REQ, //DVE Deque Request
+ DPE_CMD_WMFE_ENQUE_NUM, //WMFE Enque Number
+ DPE_CMD_WMFE_ENQUE, //WMFE Enque
+ DPE_CMD_WMFE_ENQUE_REQ, //WMFE Enque Request
+ DPE_CMD_WMFE_DEQUE_NUM, //WMFE Deque Number
+ DPE_CMD_WMFE_DEQUE, //WMFE Deque
+ DPE_CMD_WMFE_DEQUE_REQ, //WMFE Deque Request
+ DPE_CMD_TOTAL,
+}DPE_CMD_ENUM;
+//
+
+typedef struct
+{
+ unsigned int m_ReqNum;
+ DPE_DVEConfig* m_pDpeConfig;
+}DPE_DVERequest;
+
+
+typedef struct
+{
+ unsigned int m_ReqNum;
+ DPE_WMFEConfig* m_pWmfeConfig;
+}DPE_WMFERequest;
+
+
+
+
+
+
+#ifdef CONFIG_COMPAT
+typedef struct
+{
+ compat_uptr_t pData;
+ unsigned int Count; // count
+}compat_DPE_REG_IO_STRUCT;
+
+
+typedef struct
+{
+ unsigned int m_ReqNum;
+ compat_uptr_t m_pDpeConfig;
+}compat_DPE_DVERequest;
+
+typedef struct
+{
+ unsigned int m_ReqNum;
+ compat_uptr_t m_pWmfeConfig;
+}compat_DPE_WMFERequest;
+
+
+#endif
+
+
+
+
+#define DPE_RESET _IO (DPE_MAGIC, DPE_CMD_RESET)
+#define DPE_DUMP_REG _IO (DPE_MAGIC, DPE_CMD_DUMP_REG)
+#define DPE_DUMP_ISR_LOG _IO (DPE_MAGIC, DPE_CMD_DUMP_ISR_LOG)
+
+
+#define DPE_READ_REGISTER _IOWR(DPE_MAGIC, DPE_CMD_READ_REG, DPE_REG_IO_STRUCT)
+#define DPE_WRITE_REGISTER _IOWR(DPE_MAGIC, DPE_CMD_WRITE_REG, DPE_REG_IO_STRUCT)
+#define DPE_WAIT_IRQ _IOW (DPE_MAGIC, DPE_CMD_WAIT_IRQ, DPE_WAIT_IRQ_STRUCT)
+#define DPE_CLEAR_IRQ _IOW (DPE_MAGIC, DPE_CMD_CLEAR_IRQ, DPE_CLEAR_IRQ_STRUCT)
+
+#define DPE_DVE_ENQNUE_NUM _IOW(DPE_MAGIC,DPE_CMD_DVE_ENQUE_NUM, int)
+#define DPE_DVE_ENQUE _IOWR(DPE_MAGIC, DPE_CMD_DVE_ENQUE, DPE_DVEConfig)
+#define DPE_DVE_ENQUE_REQ _IOWR(DPE_MAGIC, DPE_CMD_DVE_ENQUE_REQ, DPE_DVERequest)
+
+#define DPE_DVE_DEQUE_NUM _IOR(DPE_MAGIC,DPE_CMD_DVE_DEQUE_NUM, int)
+#define DPE_DVE_DEQUE _IOWR(DPE_MAGIC, DPE_CMD_DVE_DEQUE, DPE_DVEConfig)
+#define DPE_DVE_DEQUE_REQ _IOWR(DPE_MAGIC, DPE_CMD_DVE_DEQUE_REQ, DPE_DVERequest)
+
+#define DPE_WMFE_ENQNUE_NUM _IOW(DPE_MAGIC,DPE_CMD_WMFE_ENQUE_NUM, int)
+#define DPE_WMFE_ENQUE _IOWR(DPE_MAGIC, DPE_CMD_WMFE_ENQUE, DPE_WMFEConfig)
+#define DPE_WMFE_ENQUE_REQ _IOWR(DPE_MAGIC, DPE_CMD_WMFE_ENQUE_REQ, DPE_WMFERequest)
+
+#define DPE_WMFE_DEQUE_NUM _IOR(DPE_MAGIC,DPE_CMD_WMFE_DEQUE_NUM, int)
+#define DPE_WMFE_DEQUE _IOWR(DPE_MAGIC, DPE_CMD_WMFE_DEQUE, DPE_WMFEConfig)
+#define DPE_WMFE_DEQUE_REQ _IOWR(DPE_MAGIC, DPE_CMD_WMFE_DEQUE_REQ, DPE_WMFERequest)
+
+
+#ifdef CONFIG_COMPAT
+#define COMPAT_DPE_WRITE_REGISTER _IOWR(DPE_MAGIC, DPE_CMD_WRITE_REG, compat_DPE_REG_IO_STRUCT)
+#define COMPAT_DPE_READ_REGISTER _IOWR(DPE_MAGIC, DPE_CMD_READ_REG, compat_DPE_REG_IO_STRUCT)
+
+#define COMPAT_DPE_DVE_ENQUE_REQ _IOWR(DPE_MAGIC, DPE_CMD_DVE_ENQUE_REQ, compat_DPE_DVERequest)
+#define COMPAT_DPE_DVE_DEQUE_REQ _IOWR(DPE_MAGIC, DPE_CMD_DVE_DEQUE_REQ, compat_DPE_DVERequest)
+
+#define COMPAT_DPE_WMFE_ENQUE_REQ _IOWR(DPE_MAGIC, DPE_CMD_WMFE_ENQUE_REQ, compat_DPE_WMFERequest)
+#define COMPAT_DPE_WMFE_DEQUE_REQ _IOWR(DPE_MAGIC, DPE_CMD_WMFE_DEQUE_REQ, compat_DPE_WMFERequest)
+
+#endif
+
+//
+#endif
+
diff --git a/kernel-headers/camera_fdvt.h b/kernel-headers/camera_fdvt.h
new file mode 100755
index 0000000..2d6855c
--- /dev/null
+++ b/kernel-headers/camera_fdvt.h
@@ -0,0 +1,88 @@
+#ifndef __CAMERA_FDVT_H__
+#define __CAMERA_FDVT_H__
+
+#include <linux/ioctl.h>
+#define FDVT_IOC_MAGIC 'N'
+
+#ifdef CONFIG_COMPAT
+//64 bit
+#include <linux/fs.h>
+#include <linux/compat.h>
+#endif
+
+typedef struct
+{
+ unsigned int *pAddr;
+ unsigned int *pData;
+ unsigned int u4Count;
+} FDVTRegIO;
+
+#ifdef CONFIG_COMPAT
+
+typedef struct
+{
+ compat_uptr_t pAddr;
+ compat_uptr_t pData;
+ unsigned int u4Count;
+} compat_FDVTRegIO;
+
+
+#endif
+
+
+//below is control message
+#define FDVT_IOC_INIT_SETPARA_CMD _IO(FDVT_IOC_MAGIC, 0x00)
+#define FDVT_IOC_STARTFD_CMD _IO(FDVT_IOC_MAGIC, 0x01)
+#define FDVT_IOC_G_WAITIRQ _IOR(FDVT_IOC_MAGIC, 0x02, unsigned int )
+#define FDVT_IOC_T_SET_FDCONF_CMD _IOW(FDVT_IOC_MAGIC, 0x03, FDVTRegIO)
+#define FDVT_IOC_G_READ_FDREG_CMD _IOWR(FDVT_IOC_MAGIC, 0x04, FDVTRegIO)
+#define FDVT_IOC_T_SET_SDCONF_CMD _IOW(FDVT_IOC_MAGIC, 0x05, FDVTRegIO)
+//#define FDVT_DESTROY_CMD _IO(FDVT_IOC_MAGIC, 0x10)
+
+#define FDVT_IOC_T_DUMPREG _IO(FDVT_IOC_MAGIC, 0x80)
+
+//#define FDVT_SET_CMD_CMD _IOW(FDVT_IOC_MAGIC, 0x03, unsigned int)
+//#define FDVT_SET_PWR_CMD _IOW(FDVT_IOC_MAGIC, 0x04, unsigned int)
+//#define FDVT_SET_ISR_CMD _IOW(FDVT_IOC_MAGIC, 0x05, unsigned int)
+//#define FDVT_GET_CACHECTRLADDR_CMD _IOR(FDVT_IOC_MAGIC, 0x06, int)
+
+#ifdef CONFIG_COMPAT
+
+#define COMPAT_FDVT_IOC_INIT_SETPARA_CMD _IO(FDVT_IOC_MAGIC, 0x00)
+#define COMPAT_FDVT_IOC_STARTFD_CMD _IO(FDVT_IOC_MAGIC, 0x01)
+#define COMPAT_FDVT_IOC_G_WAITIRQ _IOR(FDVT_IOC_MAGIC, 0x02, unsigned int )
+#define COMPAT_FDVT_IOC_T_SET_FDCONF_CMD _IOW(FDVT_IOC_MAGIC, 0x03, compat_FDVTRegIO)
+#define COMPAT_FDVT_IOC_G_READ_FDREG_CMD _IOWR(FDVT_IOC_MAGIC, 0x04, compat_FDVTRegIO)
+#define COMPAT_FDVT_IOC_T_SET_SDCONF_CMD _IOW(FDVT_IOC_MAGIC, 0x05, compat_FDVTRegIO)
+#define COMPAT_FDVT_IOC_T_DUMPREG _IO(FDVT_IOC_MAGIC, 0x80)
+
+#endif
+
+
+#endif //__CAMERA_FDVT_H__
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/kernel-headers/camera_isp.h b/kernel-headers/camera_isp.h
new file mode 100755
index 0000000..b8d8d83
--- /dev/null
+++ b/kernel-headers/camera_isp.h
@@ -0,0 +1,606 @@
+#ifndef _MT_ISP_H
+#define _MT_ISP_H
+
+#include <linux/ioctl.h>
+
+#ifndef CONFIG_OF
+extern void mt_irq_set_sens(unsigned int irq, unsigned int sens);
+extern void mt_irq_set_polarity(unsigned int irq, unsigned int polarity);
+#endif
+
+/**
+ enforce kernel log enable
+ */
+#define KERNEL_LOG
+#define ISR_LOG_ON
+
+#define SIG_ERESTARTSYS 512
+/*******************************************************************************
+ *
+ ********************************************************************************/
+#define ISP_DEV_MAJOR_NUMBER 251
+#define ISP_MAGIC 'k'
+
+#define CAM_A_BASE_HW 0x1A004000
+#define CAM_B_BASE_HW 0x1A005000
+#define CAMSV_0_BASE_HW 0x1A050000
+#define CAMSV_1_BASE_HW 0x1A051000
+#define CAMSV_2_BASE_HW 0x1A052000
+#define CAMSV_3_BASE_HW 0x1A053000
+#define CAMSV_4_BASE_HW 0x1A054000
+#define CAMSV_5_BASE_HW 0x1A055000
+#define DIP_A_BASE_HW 0x15022000
+#define UNI_A_BASE_HW 0x1A003000
+#define SENINF_BASE_HW 0x1A040000
+#define MIPI_RX_BASE_HW 0x10217000
+#define GPIO_BASE_HW 0x10002000
+
+#define ISP_REG_RANGE (PAGE_SIZE)
+#define ISP_REG_PER_DIP_RANGE (PAGE_SIZE*5)
+
+/* In order with the suquence of device nodes defined in dtsi */
+typedef enum {
+ ISP_IMGSYS_CONFIG_IDX = 0,
+ ISP_DIP_A_IDX, /* Remider: Add this device node manually in .dtsi */
+ ISP_CAMSYS_CONFIG_IDX,
+ ISP_UNI_A_IDX, /* CAMTOP in .dtsi */
+ ISP_CAM_A_IDX,
+ ISP_CAM_B_IDX,
+ ISP_CAMSV0_IDX,
+ ISP_CAMSV1_IDX,
+ ISP_CAMSV2_IDX,
+ ISP_CAMSV3_IDX,
+ ISP_CAMSV4_IDX,
+ ISP_CAMSV5_IDX,
+ ISP_DEV_NODE_NUM
+} ISP_DEV_NODE_ENUM;
+
+
+/* defined if want to support multiple dequne and enque or camera 3.0 */
+/**
+ support multiple deque and enque if defined.
+ note: still en/de que 1 buffer each time only
+ e.g:
+ deque();
+ deque();
+ enque();
+ enque();
+ */
+/* #define _rtbc_buf_que_2_0_ */
+/**
+ frame status
+ */
+typedef enum {
+ CAM_FST_NORMAL = 0, CAM_FST_DROP_FRAME = 1, CAM_FST_LAST_WORKING_FRAME = 2,
+} CAM_FrameST;
+
+/**
+ interrupt clear type
+ */
+typedef enum {
+ ISP_IRQ_CLEAR_NONE, /* non-clear wait, clear after wait */
+ ISP_IRQ_CLEAR_WAIT, /* clear wait, clear before and after wait */
+ ISP_IRQ_CLEAR_STATUS, /* clear specific status only */
+ ISP_IRQ_CLEAR_ALL /* clear all status */
+} ISP_IRQ_CLEAR_ENUM;
+
+/**
+ module's interrupt , each module should have its own isr.
+ note:
+ mapping to isr table,ISR_TABLE when using no device tree
+ */
+typedef enum {
+ ISP_IRQ_TYPE_INT_CAM_A_ST,
+ ISP_IRQ_TYPE_INT_CAM_B_ST,
+ ISP_IRQ_TYPE_INT_DIP_A_ST,
+ ISP_IRQ_TYPE_INT_CAMSV_0_ST,
+ ISP_IRQ_TYPE_INT_CAMSV_1_ST,
+ ISP_IRQ_TYPE_INT_CAMSV_2_ST,
+ ISP_IRQ_TYPE_INT_CAMSV_3_ST,
+ ISP_IRQ_TYPE_INT_CAMSV_4_ST,
+ ISP_IRQ_TYPE_INT_CAMSV_5_ST,
+ ISP_IRQ_TYPE_INT_UNI_A_ST,
+ ISP_IRQ_TYPE_AMOUNT
+} ISP_IRQ_TYPE_ENUM;
+
+typedef enum {
+ SIGNAL_INT = 0, DMA_INT, ISP_IRQ_ST_AMOUNT
+} ISP_ST_ENUM;
+
+typedef struct {
+ unsigned int tLastSig_sec; /* time stamp of the latest occurring signal*/
+ unsigned int tLastSig_usec; /* time stamp of the latest occurring signal*/
+ unsigned int tMark2WaitSig_sec; /* time period from marking a signal to user try to wait and get the signal*/
+ unsigned int tMark2WaitSig_usec; /* time period from marking a signal to user try to wait and get the signal*/
+ unsigned int tLastSig2GetSig_sec; /* time period from latest occurring signal to user try to wait and get the signal*/
+ unsigned int tLastSig2GetSig_usec; /* time period from latest occurring signal to user try to wait and get the signal*/
+ int passedbySigcnt; /* the count for the signal passed by */
+} ISP_IRQ_TIME_STRUCT;
+
+typedef struct {
+ ISP_IRQ_CLEAR_ENUM Clear;
+ ISP_ST_ENUM St_type;
+ unsigned int Status; /*ref. enum:ENUM_CAM_INT / ENUM_CAM_DMA_INT ...etc in isp_drv_stddef.h*/
+ int UserKey; /* user key for doing interrupt operation */
+ unsigned int Timeout;
+ ISP_IRQ_TIME_STRUCT TimeInfo;
+} ISP_WAIT_IRQ_ST;
+
+typedef struct {
+ ISP_IRQ_TYPE_ENUM Type;
+ unsigned int bDumpReg;
+ ISP_WAIT_IRQ_ST EventInfo;
+} ISP_WAIT_IRQ_STRUCT;
+
+typedef struct {
+ int userKey;
+ char userName[32]; /* this size must the same as the icamiopipe api - registerIrq(...) */
+} ISP_REGISTER_USERKEY_STRUCT;
+
+typedef struct {
+ int UserKey; /* user key for doing interrupt operation */
+ ISP_ST_ENUM St_type;
+ unsigned int Status;
+} ISP_CLEAR_IRQ_ST;
+
+typedef struct {
+ ISP_IRQ_TYPE_ENUM Type;
+ ISP_CLEAR_IRQ_ST EventInfo;
+} ISP_CLEAR_IRQ_STRUCT;
+
+typedef struct {
+ unsigned int module;
+ unsigned int Addr; /* register's addr */
+ unsigned int Val; /* register's value */
+} ISP_REG_STRUCT;
+
+typedef struct {
+ ISP_REG_STRUCT *pData; /* pointer to ISP_REG_STRUCT */
+ unsigned int Count; /* count */
+} ISP_REG_IO_STRUCT;
+
+#ifdef CONFIG_COMPAT
+typedef struct {
+ compat_uptr_t pData;
+ unsigned int Count; /* count */
+} compat_ISP_REG_IO_STRUCT;
+#endif
+
+/* length of the two memory areas */
+#define P1_DEQUE_CNT 1
+#define RT_BUF_TBL_NPAGES 16
+#define ISP_RT_BUF_SIZE 16
+#define ISP_RT_CQ0C_BUF_SIZE (ISP_RT_BUF_SIZE)/* (ISP_RT_BUF_SIZE>>1) */
+/* pass1 setting sync index */
+#define ISP_REG_P1_CFG_IDX 0x4090
+
+typedef enum {
+ _cam_tg_ = 0,
+ _cam_tg2_,
+ _camsv_tg_,
+ _camsv2_tg_,
+ _cam_tg_max_
+} _isp_tg_enum_;
+
+
+typedef enum {
+ _imgi_ = 0,
+ _imgbi_,
+ _imgci_,
+ _vipi_,
+ _vip2i_,
+ _vip3i_, /* 5 */
+ _ufdi_,
+ _lcei_,
+ _dmgi_,
+ _depi_,
+ _img2o_, /* 10 */
+ _img2bo_,
+ _img3o_,
+ _img3bo_,
+ _img3co_,
+ _mfbo_, /* 15 */
+ _feo_,
+ _wrot_,
+ _wdma_,
+ _jpeg_,
+ _venc_stream_, /* 20 */
+ _dip_max,
+ _rt_dma_max_ = _dip_max,
+
+ _imgo_ = 0,
+ _rrzo_,
+ _ufeo_,
+ _aao_,
+ _afo_,
+ _lcso_, /* 5 */
+ _pdo_,
+ _eiso_,
+ _flko_,
+ _rsso_,
+ _cam_max_,
+
+ _camsv_imgo_ = 0,
+ _camsv_max_,
+} _isp_dma_enum_;
+
+/* for keep ion handle */
+typedef enum {
+ _dma_cq0i_ = 0,/* 0168 */
+ _dma_cq1i_, /* 0180 */
+ _dma_cq2i_, /* 018c */
+ _dma_cq3i_, /* 0198 */
+ _dma_cq4i_, /* 01a4 */
+ _dma_cq5i_, /* 01b0 *//*5*/
+ _dma_cq6i_, /* 01bc */
+ _dma_cq7i_, /* 01c8 */
+ _dma_cq8i_, /* 01d4 */
+ _dma_cq9i_, /* 01e0 */
+ _dma_cq10i_, /* 01ec *//*10*/
+ _dma_cq11i_, /* 01f8 */
+ _dma_bpci_, /* 0370 */
+ _dma_caci_, /* 03a0 */
+ _dma_lsci_, /* 03d0 */
+ _dma_imgo_, /* 0220 *//*15*/
+ _dma_rrzo_, /* 0250 */
+ _dma_aao_, /* 0280 */
+ _dma_afo_, /* 02b0 */
+ _dma_lcso_, /* 02e0 */
+ _dma_ufeo_, /* 0310 *//*20*/
+ _dma_pdo_, /* 0340 */
+ _dma_eiso_, /* 0220 */
+ _dma_flko_, /* 0250 */
+ _dma_rsso_, /* 0280 */
+ _dma_imgo_fh_, /* 0c04 *//*25*/
+ _dma_rrzo_fh_, /* 0c08 */
+ _dma_aao_fh_, /* 0c0c */
+ _dma_afo_fh_, /* 0c10 */
+ _dma_lcso_fh_, /* 0c14 */
+ _dma_ufeo_fh_, /* 0c18 *//*30*/
+ _dma_pdo_fh_, /* 0c1c */
+ _dma_eiso_fh_, /* 03C4 */
+ _dma_flko_fh_, /* 03C8 */
+ _dma_rsso_fh_, /* 03CC */
+ _dma_max_wr_ /*35*/
+} ISP_WRDMA_ENUM;
+
+typedef struct {
+ unsigned int devNode;
+ ISP_WRDMA_ENUM dmaPort;
+ int memID;
+} ISP_DEV_ION_NODE_STRUCT;
+
+typedef struct {
+ unsigned int w; /* tg size */
+ unsigned int h;
+ unsigned int xsize; /* dmao xsize */
+ unsigned int stride;
+ unsigned int fmt;
+ unsigned int pxl_id;
+ unsigned int wbn;
+ unsigned int ob;
+ unsigned int lsc;
+ unsigned int rpg;
+ unsigned int m_num_0;
+ unsigned int frm_cnt;
+ unsigned int bus_size;
+} ISP_RT_IMAGE_INFO_STRUCT;
+
+typedef struct {
+ unsigned int srcX; /* crop window start point */
+ unsigned int srcY;
+ unsigned int srcW; /* crop window size */
+ unsigned int srcH;
+ unsigned int dstW; /* rrz out size */
+ unsigned int dstH;
+} ISP_RT_RRZ_INFO_STRUCT;
+
+typedef struct {
+ unsigned int x; /* in pix */
+ unsigned int y; /* in pix */
+ unsigned int w; /* in byte */
+ unsigned int h; /* in byte */
+} ISP_RT_DMAO_CROPPING_STRUCT;
+
+typedef struct {
+ unsigned int memID;
+ unsigned int size;
+ long long base_vAddr;
+ unsigned int base_pAddr;
+ unsigned int timeStampS;
+ unsigned int timeStampUs;
+ unsigned int bFilled;
+ unsigned int bProcessRaw;
+ ISP_RT_IMAGE_INFO_STRUCT image;
+ ISP_RT_RRZ_INFO_STRUCT rrzInfo;
+ ISP_RT_DMAO_CROPPING_STRUCT dmaoCrop; /* imgo */
+ unsigned int bDequeued;
+ signed int bufIdx; /* used for replace buffer */
+} ISP_RT_BUF_INFO_STRUCT;
+
+typedef struct {
+ unsigned int count;
+ unsigned int sof_cnt; /* cnt for current sof */
+ unsigned int img_cnt; /* cnt for mapping to which sof */
+ /* support only deque 1 image at a time */
+ /* ISP_RT_BUF_INFO_STRUCT data[ISP_RT_BUF_SIZE]; */
+ ISP_RT_BUF_INFO_STRUCT data[P1_DEQUE_CNT];
+} ISP_DEQUE_BUF_INFO_STRUCT;
+
+typedef struct {
+ unsigned int start; /* current DMA accessing buffer */
+ unsigned int total_count; /* total buffer number.Include Filled and empty */
+ unsigned int empty_count; /* total empty buffer number include current DMA accessing buffer */
+ unsigned int pre_empty_count; /* previous total empty buffer number include current DMA accessing buffer */
+ unsigned int active;
+ unsigned int read_idx;
+ unsigned int img_cnt; /* cnt for mapping to which sof */
+ ISP_RT_BUF_INFO_STRUCT data[ISP_RT_BUF_SIZE];
+} ISP_RT_RING_BUF_INFO_STRUCT;
+
+typedef enum {
+ ISP_RT_BUF_CTRL_DMA_EN, ISP_RT_BUF_CTRL_CLEAR, ISP_RT_BUF_CTRL_MAX
+} ISP_RT_BUF_CTRL_ENUM;
+
+typedef enum {
+ ISP_RTBC_STATE_INIT,
+ ISP_RTBC_STATE_SOF,
+ ISP_RTBC_STATE_DONE,
+ ISP_RTBC_STATE_MAX
+} ISP_RTBC_STATE_ENUM;
+
+typedef enum {
+ ISP_RTBC_BUF_EMPTY,
+ ISP_RTBC_BUF_FILLED,
+ ISP_RTBC_BUF_LOCKED,
+} ISP_RTBC_BUF_STATE_ENUM;
+
+typedef enum {
+ ISP_RROCESSED_RAW,
+ ISP_PURE_RAW,
+} ISP_RAW_TYPE_ENUM;
+
+typedef struct {
+ ISP_RTBC_STATE_ENUM state;
+ unsigned long dropCnt;
+ ISP_RT_RING_BUF_INFO_STRUCT ring_buf[_cam_max_];
+} ISP_RT_BUF_STRUCT;
+
+typedef struct {
+ ISP_RT_BUF_CTRL_ENUM ctrl;
+ ISP_IRQ_TYPE_ENUM module;
+ _isp_dma_enum_ buf_id;
+ /* unsigned int data_ptr; */
+ /* unsigned int ex_data_ptr; exchanged buffer */
+ ISP_RT_BUF_INFO_STRUCT *data_ptr;
+ ISP_RT_BUF_INFO_STRUCT *ex_data_ptr; /* exchanged buffer */
+ unsigned char *pExtend;
+} ISP_BUFFER_CTRL_STRUCT;
+
+/* reference count */
+#define _use_kernel_ref_cnt_
+
+typedef enum {
+ ISP_REF_CNT_GET,
+ ISP_REF_CNT_INC,
+ ISP_REF_CNT_DEC,
+ ISP_REF_CNT_DEC_AND_RESET_P1_P2_IF_LAST_ONE,
+ ISP_REF_CNT_DEC_AND_RESET_P1_IF_LAST_ONE,
+ ISP_REF_CNT_DEC_AND_RESET_P2_IF_LAST_ONE,
+ ISP_REF_CNT_MAX
+} ISP_REF_CNT_CTRL_ENUM;
+
+typedef enum {
+ ISP_REF_CNT_ID_IMEM,
+ ISP_REF_CNT_ID_ISP_FUNC,
+ ISP_REF_CNT_ID_GLOBAL_PIPE,
+ ISP_REF_CNT_ID_P1_PIPE,
+ ISP_REF_CNT_ID_P2_PIPE,
+ ISP_REF_CNT_ID_MAX,
+} ISP_REF_CNT_ID_ENUM;
+
+typedef struct {
+ ISP_REF_CNT_CTRL_ENUM ctrl;
+ ISP_REF_CNT_ID_ENUM id;
+ signed int *data_ptr;
+} ISP_REF_CNT_CTRL_STRUCT;
+
+/* struct for enqueue/dequeue control in ihalpipe wrapper */
+typedef enum {
+ ISP_P2_BUFQUE_CTRL_ENQUE_FRAME = 0, /* 0,signal that a specific buffer is enqueued */
+ ISP_P2_BUFQUE_CTRL_WAIT_DEQUE, /* 1,a dequeue thread is waiting to do dequeue */
+ ISP_P2_BUFQUE_CTRL_DEQUE_SUCCESS, /* 2,signal that a buffer is dequeued (success) */
+ ISP_P2_BUFQUE_CTRL_DEQUE_FAIL, /* 3,signal that a buffer is dequeued (fail) */
+ ISP_P2_BUFQUE_CTRL_WAIT_FRAME, /* 4,wait for a specific buffer */
+ ISP_P2_BUFQUE_CTRL_WAKE_WAITFRAME, /* 5,wake all slept users to check buffer is dequeued or not */
+ ISP_P2_BUFQUE_CTRL_CLAER_ALL, /* 6,free all recored dequeued buffer */
+ ISP_P2_BUFQUE_CTRL_MAX
+} ISP_P2_BUFQUE_CTRL_ENUM;
+
+typedef enum {
+ ISP_P2_BUFQUE_PROPERTY_DIP = 0,
+ ISP_P2_BUFQUE_PROPERTY_NUM = 1,
+ ISP_P2_BUFQUE_PROPERTY_WARP
+} ISP_P2_BUFQUE_PROPERTY;
+typedef struct {
+ ISP_P2_BUFQUE_CTRL_ENUM ctrl;
+ ISP_P2_BUFQUE_PROPERTY property;
+ unsigned int processID; /* judge multi-process */
+ unsigned int callerID; /* judge multi-thread and different kinds of buffer type */
+ int frameNum; /* total frame number in the enque request */
+ int cQIdx; /* cq index */
+ int dupCQIdx; /* dup cq index */
+ int burstQIdx; /* burst queue index */
+ unsigned int timeoutIns; /* timeout for wait buffer */
+} ISP_P2_BUFQUE_STRUCT;
+
+typedef enum {
+ ISP_P2_BUF_STATE_NONE = -1,
+ ISP_P2_BUF_STATE_ENQUE = 0,
+ ISP_P2_BUF_STATE_RUNNING,
+ ISP_P2_BUF_STATE_WAIT_DEQUE_FAIL,
+ ISP_P2_BUF_STATE_DEQUE_SUCCESS,
+ ISP_P2_BUF_STATE_DEQUE_FAIL
+} ISP_P2_BUF_STATE_ENUM;
+
+typedef enum {
+ ISP_P2_BUFQUE_LIST_TAG_PACKAGE = 0, ISP_P2_BUFQUE_LIST_TAG_UNIT
+} ISP_P2_BUFQUE_LIST_TAG;
+
+typedef enum {
+ ISP_P2_BUFQUE_MATCH_TYPE_WAITDQ = 0, /* waiting for deque */
+ ISP_P2_BUFQUE_MATCH_TYPE_WAITFM, /* wait frame from user */
+ ISP_P2_BUFQUE_MATCH_TYPE_FRAMEOP, /* frame operaetion */
+ ISP_P2_BUFQUE_MATCH_TYPE_WAITFMEQD /* wait frame enqueued for deque */
+} ISP_P2_BUFQUE_MATCH_TYPE;
+/********************************************************************************************
+ pass1 real time buffer control use cq0c
+ ********************************************************************************************/
+
+#define _rtbc_use_cq0c_
+
+#define _MAGIC_NUM_ERR_HANDLING_
+
+#ifdef CONFIG_COMPAT
+
+
+typedef struct {
+ ISP_RT_BUF_CTRL_ENUM ctrl;
+ ISP_IRQ_TYPE_ENUM module;
+ _isp_dma_enum_ buf_id;
+ compat_uptr_t data_ptr;
+ compat_uptr_t ex_data_ptr; /* exchanged buffer */
+ compat_uptr_t pExtend;
+} compat_ISP_BUFFER_CTRL_STRUCT;
+
+typedef struct {
+ ISP_REF_CNT_CTRL_ENUM ctrl;
+ ISP_REF_CNT_ID_ENUM id;
+ compat_uptr_t data_ptr;
+} compat_ISP_REF_CNT_CTRL_STRUCT;
+
+#endif
+
+
+/********************************************************************************************
+
+ ********************************************************************************************/
+
+/*******************************************************************************
+ *
+ ********************************************************************************/
+typedef enum {
+ ISP_CMD_RESET_CAM_P1, /* Reset */
+ ISP_CMD_RESET_CAM_P2,
+ ISP_CMD_RESET_CAMSV,
+ ISP_CMD_RESET_CAMSV2,
+ ISP_CMD_RESET_BY_HWMODULE,
+ ISP_CMD_READ_REG, /* Read register from driver */
+ ISP_CMD_WRITE_REG, /* Write register to driver */
+ ISP_CMD_WAIT_IRQ, /* Wait IRQ */
+ ISP_CMD_CLEAR_IRQ, /* Clear IRQ */
+ ISP_CMD_DUMP_REG, /* Dump ISP registers , for debug usage */
+ ISP_CMD_RT_BUF_CTRL, /* for pass buffer control */
+ ISP_CMD_REF_CNT, /* get imem reference count */
+ ISP_CMD_DEBUG_FLAG, /* Dump message level */
+ ISP_CMD_P2_BUFQUE_CTRL,
+ ISP_CMD_UPDATE_REGSCEN,
+ ISP_CMD_QUERY_REGSCEN,
+ ISP_CMD_UPDATE_BURSTQNUM,
+ ISP_CMD_QUERY_BURSTQNUM,
+ ISP_CMD_DUMP_ISR_LOG, /* dump isr log */
+ ISP_CMD_GET_CUR_SOF,
+ ISP_CMD_GET_DMA_ERR,
+ ISP_CMD_GET_INT_ERR,
+ ISP_CMD_GET_DROP_FRAME, /* dump current frame informaiton, 1 for drop frmae, 2 for last working frame */
+ ISP_CMD_WAKELOCK_CTRL,
+ ISP_CMD_REGISTER_IRQ_USER_KEY, /* register for a user key to do irq operation */
+ ISP_CMD_MARK_IRQ_REQUEST, /* mark for a specific register before wait for the interrupt if needed */
+ ISP_CMD_GET_MARK2QUERY_TIME, /* query time information between read and mark */
+ ISP_CMD_FLUSH_IRQ_REQUEST, /* flush signal */
+ ISP_CMD_GET_START_TIME,
+ ISP_CMD_VF_LOG, /* dbg only, prt log on kernel when vf_en is driven */
+ ISP_CMD_GET_VSYNC_CNT,
+ ISP_CMD_RESET_VSYNC_CNT,
+ ISP_CMD_ION_IMPORT, /* get ion handle */
+ ISP_CMD_ION_FREE, /* free ion handle */
+ ISP_CMD_CQ_SW_PATCH, /* sim cq update behavior as atomic behavior */
+ ISP_CMD_ION_FREE_BY_HWMODULE /* free all ion handle */
+} ISP_CMD_ENUM;
+
+
+/* Everest reset ioctl */
+#define ISP_RESET_CAM_P1 _IOWR(ISP_MAGIC, ISP_CMD_RESET_CAM_P1, unsigned int)
+#define ISP_RESET_BY_HWMODULE _IOW(ISP_MAGIC, ISP_CMD_RESET_BY_HWMODULE, unsigned long)
+
+/* read phy reg */
+#define ISP_READ_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_READ_REG, ISP_REG_IO_STRUCT)
+
+/* write phy reg */
+#define ISP_WRITE_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_WRITE_REG, ISP_REG_IO_STRUCT)
+
+#define ISP_WAIT_IRQ _IOW(ISP_MAGIC, ISP_CMD_WAIT_IRQ, ISP_WAIT_IRQ_STRUCT)
+#define ISP_CLEAR_IRQ _IOW(ISP_MAGIC, ISP_CMD_CLEAR_IRQ, ISP_CLEAR_IRQ_STRUCT)
+#define ISP_DUMP_REG _IO(ISP_MAGIC, ISP_CMD_DUMP_REG)
+#define ISP_BUFFER_CTRL _IOWR(ISP_MAGIC, ISP_CMD_RT_BUF_CTRL, ISP_BUFFER_CTRL_STRUCT)
+#define ISP_REF_CNT_CTRL _IOWR(ISP_MAGIC, ISP_CMD_REF_CNT, ISP_REF_CNT_CTRL_STRUCT)
+#define ISP_DEBUG_FLAG _IOW(ISP_MAGIC, ISP_CMD_DEBUG_FLAG, unsigned char*)
+#define ISP_P2_BUFQUE_CTRL _IOWR(ISP_MAGIC, ISP_CMD_P2_BUFQUE_CTRL, ISP_P2_BUFQUE_STRUCT)
+#define ISP_UPDATE_REGSCEN _IOWR(ISP_MAGIC, ISP_CMD_UPDATE_REGSCEN, unsigned int)
+#define ISP_QUERY_REGSCEN _IOR(ISP_MAGIC, ISP_CMD_QUERY_REGSCEN, unsigned int)
+#define ISP_UPDATE_BURSTQNUM _IOW(ISP_MAGIC, ISP_CMD_UPDATE_BURSTQNUM, int)
+#define ISP_QUERY_BURSTQNUM _IOR(ISP_MAGIC, ISP_CMD_QUERY_BURSTQNUM, int)
+#define ISP_DUMP_ISR_LOG _IOWR(ISP_MAGIC, ISP_CMD_DUMP_ISR_LOG, unsigned long)
+#define ISP_GET_CUR_SOF _IOWR(ISP_MAGIC, ISP_CMD_GET_CUR_SOF, unsigned char*)
+#define ISP_GET_DMA_ERR _IOWR(ISP_MAGIC, ISP_CMD_GET_DMA_ERR, unsigned char*)
+#define ISP_GET_INT_ERR _IOR(ISP_MAGIC, ISP_CMD_GET_INT_ERR, unsigned char*)
+#define ISP_GET_DROP_FRAME _IOWR(ISP_MAGIC, ISP_CMD_GET_DROP_FRAME, unsigned long)
+#define ISP_GET_START_TIME _IOWR(ISP_MAGIC, ISP_CMD_GET_START_TIME, unsigned char*)
+
+#define ISP_REGISTER_IRQ_USER_KEY _IOR(ISP_MAGIC, ISP_CMD_REGISTER_IRQ_USER_KEY, ISP_REGISTER_USERKEY_STRUCT)
+
+#define ISP_MARK_IRQ_REQUEST _IOWR(ISP_MAGIC, ISP_CMD_MARK_IRQ_REQUEST, ISP_WAIT_IRQ_STRUCT)
+#define ISP_GET_MARK2QUERY_TIME _IOWR(ISP_MAGIC, ISP_CMD_GET_MARK2QUERY_TIME, ISP_WAIT_IRQ_STRUCT)
+#define ISP_FLUSH_IRQ_REQUEST _IOW(ISP_MAGIC, ISP_CMD_FLUSH_IRQ_REQUEST, ISP_WAIT_IRQ_STRUCT)
+
+#define ISP_WAKELOCK_CTRL _IOWR(ISP_MAGIC, ISP_CMD_WAKELOCK_CTRL, unsigned long)
+#define ISP_VF_LOG _IOW(ISP_MAGIC, ISP_CMD_VF_LOG, unsigned char*)
+#define ISP_GET_VSYNC_CNT _IOWR(ISP_MAGIC, ISP_CMD_GET_VSYNC_CNT, unsigned int)
+#define ISP_RESET_VSYNC_CNT _IOW(ISP_MAGIC, ISP_CMD_RESET_VSYNC_CNT, unsigned int)
+#define ISP_ION_IMPORT _IOW(ISP_MAGIC, ISP_CMD_ION_IMPORT, ISP_DEV_ION_NODE_STRUCT)
+#define ISP_ION_FREE _IOW(ISP_MAGIC, ISP_CMD_ION_FREE, ISP_DEV_ION_NODE_STRUCT)
+#define ISP_ION_FREE_BY_HWMODULE _IOW(ISP_MAGIC, ISP_CMD_ION_FREE_BY_HWMODULE, unsigned int)
+#define ISP_CQ_SW_PATCH _IOW(ISP_MAGIC, ISP_CMD_CQ_SW_PATCH, unsigned int)
+
+#ifdef CONFIG_COMPAT
+#define COMPAT_ISP_READ_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_READ_REG, compat_ISP_REG_IO_STRUCT)
+#define COMPAT_ISP_WRITE_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_WRITE_REG, compat_ISP_REG_IO_STRUCT)
+/* #define COMPAT_ISP_REGISTER_IRQ_USER_KEY _IOR(ISP_MAGIC, ISP_CMD_REGISTER_IRQ_USER_KEY, compat_ISP_REGISTER_USERKEY_STRUCT) */
+#define COMPAT_ISP_DEBUG_FLAG _IOW(ISP_MAGIC, ISP_CMD_DEBUG_FLAG, compat_uptr_t)
+#define COMPAT_ISP_GET_DMA_ERR _IOWR(ISP_MAGIC, ISP_CMD_GET_DMA_ERR, compat_uptr_t)
+#define COMPAT_ISP_GET_INT_ERR _IOR(ISP_MAGIC, ISP_CMD_GET_INT_ERR, compat_uptr_t)
+
+#define COMPAT_ISP_BUFFER_CTRL _IOWR(ISP_MAGIC, ISP_CMD_RT_BUF_CTRL, compat_ISP_BUFFER_CTRL_STRUCT)
+#define COMPAT_ISP_REF_CNT_CTRL _IOWR(ISP_MAGIC, ISP_CMD_REF_CNT, compat_ISP_REF_CNT_CTRL_STRUCT)
+#define COMPAT_ISP_GET_START_TIME _IOWR(ISP_MAGIC, ISP_CMD_GET_START_TIME, compat_uptr_t)
+
+#define COMPAT_ISP_WAKELOCK_CTRL _IOWR(ISP_MAGIC, ISP_CMD_WAKELOCK_CTRL, compat_uptr_t)
+#define COMPAT_ISP_GET_DROP_FRAME _IOWR(ISP_MAGIC, ISP_CMD_GET_DROP_FRAME, compat_uptr_t)
+#define COMPAT_ISP_GET_CUR_SOF _IOWR(ISP_MAGIC, ISP_CMD_GET_CUR_SOF, compat_uptr_t)
+#define COMPAT_ISP_DUMP_ISR_LOG _IOWR(ISP_MAGIC, ISP_CMD_DUMP_ISR_LOG, compat_uptr_t)
+#define COMPAT_ISP_RESET_BY_HWMODULE _IOW(ISP_MAGIC, ISP_CMD_RESET_BY_HWMODULE, compat_uptr_t)
+#define COMPAT_ISP_VF_LOG _IOW(ISP_MAGIC, ISP_CMD_VF_LOG, compat_uptr_t)
+
+#endif
+
+int32_t ISP_MDPClockOnCallback(uint64_t engineFlag);
+int32_t ISP_MDPDumpCallback(uint64_t engineFlag, int level);
+int32_t ISP_MDPResetCallback(uint64_t engineFlag);
+
+int32_t ISP_MDPClockOffCallback(uint64_t engineFlag);
+
+int32_t ISP_BeginGCECallback(uint32_t taskID, uint32_t *regCount, uint32_t **regAddress);
+int32_t ISP_EndGCECallback(uint32_t taskID, uint32_t regCount, uint32_t *regValues);
+
+#endif
+
diff --git a/kernel-headers/camera_sysram.h b/kernel-headers/camera_sysram.h
new file mode 100755
index 0000000..4b23497
--- /dev/null
+++ b/kernel-headers/camera_sysram.h
@@ -0,0 +1,33 @@
+#ifndef CAMERA_SYSRAM_H
+#define CAMERA_SYSRAM_H
+/* ----------------------------------------------------------------------------- */
+#define SYSRAM_DEV_NAME "camera-sysram"
+#define SYSRAM_MAGIC_NO 'p'
+/* ----------------------------------------------------------------------------- */
+typedef enum {
+ SYSRAM_USER_VIDO,
+ SYSRAM_USER_GDMA,
+ SYSRAM_USER_SW_FD,
+ SYSRAM_USER_AMOUNT,
+ SYSRAM_USER_NONE
+} SYSRAM_USER_ENUM;
+/* */
+typedef struct {
+ unsigned long Alignment;
+ unsigned long Size;
+ SYSRAM_USER_ENUM User;
+ unsigned long Addr; /* In/Out : address */
+ unsigned long TimeoutMS; /* In : millisecond */
+} SYSRAM_ALLOC_STRUCT;
+/* */
+typedef enum {
+ SYSRAM_CMD_ALLOC,
+ SYSRAM_CMD_FREE,
+ SYSRAM_CMD_DUMP
+} SYSRAM_CMD_ENUM;
+/* ----------------------------------------------------------------------------- */
+#define SYSRAM_ALLOC _IOWR(SYSRAM_MAGIC_NO, SYSRAM_CMD_ALLOC, SYSRAM_ALLOC_STRUCT)
+#define SYSRAM_FREE _IOWR(SYSRAM_MAGIC_NO, SYSRAM_CMD_FREE, SYSRAM_USER_ENUM)
+#define SYSRAM_DUMP _IO(SYSRAM_MAGIC_NO, SYSRAM_CMD_DUMP)
+/* ----------------------------------------------------------------------------- */
+#endif
diff --git a/kernel-headers/cmdq_engine.h b/kernel-headers/cmdq_engine.h
new file mode 100755
index 0000000..5a6a869
--- /dev/null
+++ b/kernel-headers/cmdq_engine.h
@@ -0,0 +1,74 @@
+#ifndef __CMDQ_ENGINE_H__
+#define __CMDQ_ENGINE_H__
+
+typedef enum CMDQ_ENG_ENUM {
+ /* ISP */
+ CMDQ_ENG_ISP_IMGI = 0,
+ CMDQ_ENG_ISP_IMGO, /* 1 */
+ CMDQ_ENG_ISP_IMG2O, /* 2 */
+
+ /* MDP */
+ CMDQ_ENG_MDP_CAMIN, /* 3 */
+ CMDQ_ENG_MDP_RDMA0, /* 4 */
+ CMDQ_ENG_MDP_RDMA1, /* 5 */
+ CMDQ_ENG_MDP_RSZ0, /* 6 */
+ CMDQ_ENG_MDP_RSZ1, /* 7 */
+ CMDQ_ENG_MDP_RSZ2, /* 8 */
+ CMDQ_ENG_MDP_TDSHP0, /* 9 */
+ CMDQ_ENG_MDP_COLOR0, /* 10 */
+ CMDQ_ENG_MDP_WROT0, /* 11 */
+ CMDQ_ENG_MDP_WROT1, /* 12 */
+ CMDQ_ENG_MDP_WDMA, /* 13 */
+
+ /* JPEG & VENC */
+ CMDQ_ENG_JPEG_ENC, /* 14 */
+ CMDQ_ENG_VIDEO_ENC, /* 15 */
+ CMDQ_ENG_JPEG_DEC, /* 16 */
+ CMDQ_ENG_JPEG_REMDC, /* 17 */
+
+ /* DISP */
+ CMDQ_ENG_DISP_UFOE, /* 18 */
+ CMDQ_ENG_DISP_AAL, /* 19 */
+ CMDQ_ENG_DISP_COLOR0, /* 20 */
+ CMDQ_ENG_DISP_RDMA0, /* 21 */
+ CMDQ_ENG_DISP_RDMA1, /* 22 */
+ CMDQ_ENG_DISP_WDMA0, /* 23 */
+ CMDQ_ENG_DISP_WDMA1, /* 24 */
+ CMDQ_ENG_DISP_OVL0, /* 25 */
+ CMDQ_ENG_DISP_OVL1, /* 26 */
+ CMDQ_ENG_DISP_OVL2, /* 27 */
+ CMDQ_ENG_DISP_GAMMA, /* 28 */
+ CMDQ_ENG_DISP_DSI0_VDO, /* 29 */
+ CMDQ_ENG_DISP_DSI0_CMD, /* 30 */
+ CMDQ_ENG_DISP_DSI0, /* 31 */
+ CMDQ_ENG_DISP_DPI, /* 32 */
+ CMDQ_ENG_DISP_2L_OVL0, /* 33 */
+ CMDQ_ENG_DISP_2L_OVL1, /* 34 */
+ CMDQ_ENG_DISP_2L_OVL2, /* 35 */
+
+ /* DPE */
+ CMDQ_ENG_DPE, /* 36 */
+
+ /* temp: CMDQ internal usage */
+ CMDQ_ENG_CMDQ,
+ CMDQ_ENG_DISP_MUTEX,
+ CMDQ_ENG_MMSYS_CONFIG,
+
+ /* Dummy Engine */
+ CMDQ_ENG_MDP_TDSHP1,
+ CMDQ_ENG_MDP_MOUT0,
+ CMDQ_ENG_MDP_MOUT1,
+
+ CMDQ_ENG_DISP_COLOR1,
+ CMDQ_ENG_DISP_RDMA2,
+ CMDQ_ENG_DISP_MERGE,
+ CMDQ_ENG_DISP_SPLIT0,
+ CMDQ_ENG_DISP_SPLIT1,
+ CMDQ_ENG_DISP_DSI1_VDO,
+ CMDQ_ENG_DISP_DSI1_CMD,
+ CMDQ_ENG_DISP_DSI1,
+
+ CMDQ_MAX_ENGINE_COUNT /* ALWAYS keep at the end */
+} CMDQ_ENG_ENUM;
+
+#endif /* __CMDQ_ENGINE_H__ */
diff --git a/kernel-headers/cmdq_event.h b/kernel-headers/cmdq_event.h
new file mode 100755
index 0000000..7c588aa
--- /dev/null
+++ b/kernel-headers/cmdq_event.h
@@ -0,0 +1,247 @@
+/* MDP start frame */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA0_SOF, 0)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA1_SOF, 1)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ0_SOF, 2)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ1_SOF, 3)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ2_SOF, 4)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_TDSHP_SOF, 5)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_COLOR_SOF, 6)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WDMA_SOF, 7)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_SOF, (-2))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT0_SOF, 8)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT1_SOF, 9)
+
+/* Display start frame */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_SOF, 10)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_SOF, 11)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_2L_SOF, 12)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_2L_SOF, 13)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_SOF, 14)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_SOF, 15)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA0_SOF, 16)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA1_SOF, 17)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_COLOR_SOF, 18)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_CCORR_SOF, 19)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_AAL_SOF, 20)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_GAMMA_SOF, 21)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OD_SOF, 22)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DITHER_SOF, 23)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_UFOE_SOF, 24)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DSC_SOF, 25)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_PWM0_SOF, 26)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L0_SOF, (-3))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L1_SOF, (-4))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L2_SOF, (-5))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L3_SOF, (-6))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L0_SOF, (-7))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L1_SOF, (-8))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L2_SOF, (-9))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L3_SOF, (-10))
+
+/* MDP frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA0_EOF, 27)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA1_EOF, 28)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ0_EOF, 29)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ1_EOF, 30)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ2_EOF, 31)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_TDSHP_EOF, 32)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_COLOR_EOF, 33)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WDMA_EOF, 34)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_WRITE_EOF, (-11))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_READ_EOF, (-12))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT0_WRITE_EOF, 35)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT0_READ_EOF, 36)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT1_WRITE_EOF, 37)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT1_READ_EOF, 38)
+
+/* Display frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_EOF, 39)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_EOF, 40)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_2L_EOF, 41)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_2L_EOF, 42)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_EOF, 43)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_EOF, 44)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA0_EOF, 45)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA1_EOF, 46)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_COLOR_EOF, 47)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_CCORR_EOF, 48)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_AAL_EOF, 49)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_GAMMA_EOF, 50)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OD_EOF, 51)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DITHER_EOF, 52)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_UFOE_EOF, 53)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DSC_EOF, 54)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DSI0_EOF, 55)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DSI1_EOF, 56)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DPI0_EOF, 57)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L0_EOF, (-13))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L1_EOF, (-14))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L2_EOF, (-15))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L3_EOF, (-16))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L0_EOF, (-17))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L1_EOF, (-18))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L2_EOF, (-19))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L3_EOF, (-20))
+
+/* Mutex frame done */
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX0_STREAM_EOF, 58)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX1_STREAM_EOF, 59)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX2_STREAM_EOF, 60)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX3_STREAM_EOF, 61)
+/* DISPSYS, please refer to disp_hal.h */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX4_STREAM_EOF, 62)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX5_STREAM_EOF, 63)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX6_STREAM_EOF, 64)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX7_STREAM_EOF, 65)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX8_STREAM_EOF, 66)
+/* DpFramework via CMDQ_IOCTL_LOCK_MUTEX */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX9_STREAM_EOF, 67)
+
+/* Display underrun */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_UNDERRUN, 68)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_UNDERRUN, 69)
+
+/* Display TE */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DSI_TE, (-21))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DSI0_TE, 70)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DSI1_TE, 71)
+
+/* ISP frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_2_EOF, (-22))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_1_EOF, (-23))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_0_EOF, (-24))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS1_1_EOF, (-25))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS1_0_EOF, (-26))
+
+/* ISP (IMGSYS) frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD0_EOF, 129)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD1_EOF, 130)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD2_EOF, 131)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD3_EOF, 132)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD4_EOF, 133)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD5_EOF, 134)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD6_EOF, 135)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD7_EOF, 136)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD8_EOF, 137)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD9_EOF, 138)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD10_EOF, 139)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD11_EOF, 140)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD12_EOF, 141)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD13_EOF, 142)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DIP_CQ_THREAD14_EOF, 143)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DPE_EOF, 144)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_WMF_EOF, 145)
+
+/* ISP (IMGSYS) engine events */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_SENINF_CAM1_2_3_FULL, (-27))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_SENINF_CAM0_FULL, (-28))
+
+/* VENC frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_EOF, 257)
+
+/* JPEG frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_JPEG_DEC_EOF, 258)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_JPEG_ENC_EOF, 259)
+
+/* VENC engine events */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_MB_DONE, 260)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_128BYTE_CNT_DONE, 261)
+
+/* ISP (CAMSYS) frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_FRAME_DONE_A, 385)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_FRAME_DONE_B, 386)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_0_PASS1_DONE, 387)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_1_PASS1_DONE, 388)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_2_PASS1_DONE, 389)
+
+/* ISP (CAMSYS) engine events */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_SENINF_0_FIFO_FULL, 390)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_SENINF_1_FIFO_FULL, 391)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_SENINF_2_FIFO_FULL, 392)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_SENINF_3_FIFO_FULL, 393)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_SENINF_4_FIFO_FULL, 394)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_SENINF_5_FIFO_FULL, 395)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_SENINF_6_FIFO_FULL, 396)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_SENINF_7_FIFO_FULL, 397)
+
+/* Keep this at the end of HW events */
+DECLARE_CMDQ_EVENT(CMDQ_MAX_HW_EVENT_COUNT, 400)
+
+/* SW Sync Tokens (Pre-defined) */
+/* Config thread notify trigger thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_CONFIG_DIRTY, 401)
+/* Trigger thread notify config thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_STREAM_EOF, 402)
+/* Block Trigger thread until the ESD check finishes. */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_ESD_EOF, 403)
+/* check CABC setup finish */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_CABC_EOF, 404)
+/* Block Trigger thread until the path freeze finishes */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_FREEZE_EOF, 405)
+/* Pass-2 notifies VENC frame is ready to be encoded */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_VENC_INPUT_READY, 406)
+/* VENC notifies Pass-2 encode done so next frame may start */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_VENC_EOF, 407)
+
+/* Notify normal CMDQ there are some secure task done */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_SECURE_THR_EOF, 408)
+
+/* SW Sync Tokens (User-defined) */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_USER_0, 410)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_USER_1, 411)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_POLL_MONITOR, 412)
+
+/* Event for CMDQ to block executing command when append command
+* Plz sync CMDQ_SYNC_TOKEN_APPEND_THR(id) in cmdq_core source file. */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR0, 422)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR1, 423)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR2, 424)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR3, 425)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR4, 426)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR5, 427)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR6, 428)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR7, 429)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR8, 430)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR9, 431)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR10, 432)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR11, 433)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR12, 434)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR13, 435)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR14, 436)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR15, 437)
+
+/* GPR access tokens (for HW register backup) */
+/* There are 15 32-bit GPR, 3 GPR form a set (64-bit for address, 32-bit for value) */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_0, 450)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_1, 451)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_2, 452)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_3, 453)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_4, 454)
+
+/* Resource lock event to control resource in GCE thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_RESOURCE_WROT0, 460)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_RESOURCE_WROT1, 461)
+
+/* Secure video path notify SW token */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_DISP_OVL0_2NONSEC_END, 470)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_DISP_OVL1_2NONSEC_END, 471)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_DISP_2LOVL0_2NONSEC_END, 472)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_DISP_2LOVL1_2NONSEC_END, 473)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_DISP_RDMA0_2NONSEC_END, 474)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_DISP_RDMA1_2NONSEC_END, 475)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_DISP_WDMA0_2NONSEC_END, 476)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_DISP_WDMA1_2NONSEC_END, 477)
+
+/* event id is 9 bit */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_MAX, (0x1FF))
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_INVALID, (-1))
diff --git a/kernel-headers/cmdq_subsys.h b/kernel-headers/cmdq_subsys.h
new file mode 100755
index 0000000..033342d
--- /dev/null
+++ b/kernel-headers/cmdq_subsys.h
@@ -0,0 +1,28 @@
+/* msb id group reg-base-name */
+DECLARE_CMDQ_SUBSYS(0x1300, 0, MFG, G3D_CONFIG_BASE)
+DECLARE_CMDQ_SUBSYS(0x1400, 1, MMSYS, MMSYS_CONFIG_BASE)
+DECLARE_CMDQ_SUBSYS(0x1401, 2, MMSYS, DISP_DITHER_BASE)
+DECLARE_CMDQ_SUBSYS(0x1402, 3, MMSYS, NA)
+DECLARE_CMDQ_SUBSYS(0x1500, 4, CAM, IMGSYS_BASE)
+DECLARE_CMDQ_SUBSYS(0x1600, 5, VDEC, VDEC_GCON_BASE)
+DECLARE_CMDQ_SUBSYS(0x1700, 6, VENC, VENC_GCON_BASE)
+DECLARE_CMDQ_SUBSYS(0x1800, 7, PERISYS, CONN_PERIPHERALS)
+
+DECLARE_CMDQ_SUBSYS(0x1000, 8, TOP_AO_3, TOPCKGEN_BASE)
+DECLARE_CMDQ_SUBSYS(0x1001, 9, INFRA_AO, KP_BASE)
+DECLARE_CMDQ_SUBSYS(0x1002, 10, INFRA_AO, SCP_SRAM_BASE)
+DECLARE_CMDQ_SUBSYS(0x1003, 11, NA, NA)
+DECLARE_CMDQ_SUBSYS(0x1004, 12, NA, NA)
+DECLARE_CMDQ_SUBSYS(0x1005, 13, SCP, SCP)
+
+DECLARE_CMDQ_SUBSYS(0x1020, 14, INFRASYS, MCUCFG_BASE)
+DECLARE_CMDQ_SUBSYS(0x1021, 15, INFRASYS, GCPU_BASE)
+DECLARE_CMDQ_SUBSYS(0x1120, 16, PERISYS, USB0_BASE)
+DECLARE_CMDQ_SUBSYS(0x1121, 17, PERISYS, USB_SIF_BASE)
+DECLARE_CMDQ_SUBSYS(0x1122, 18, PERISYS, AUDIO_BASE)
+DECLARE_CMDQ_SUBSYS(0x1123, 19, PERISYS, MSDC0_BASE)
+DECLARE_CMDQ_SUBSYS(0x1124, 20, PERISYS, MSDC1_BASE)
+DECLARE_CMDQ_SUBSYS(0x1125, 21, PERISYS, MSDC2_BASE)
+DECLARE_CMDQ_SUBSYS(0x1126, 22, PERISYS, MSDC3_BASE)
+DECLARE_CMDQ_SUBSYS(0x1100, 23, INFRASYS, AP_DMA_BASE)
+DECLARE_CMDQ_SUBSYS(0x1A00, 24, CAMSYS, CAMSYS_BASE) \ No newline at end of file
diff --git a/kernel-headers/ddp_aal.h b/kernel-headers/ddp_aal.h
new file mode 100755
index 0000000..bd05bea
--- /dev/null
+++ b/kernel-headers/ddp_aal.h
@@ -0,0 +1,38 @@
+#ifndef __DDP_AAL_H__
+#define __DDP_AAL_H__
+
+#define AAL_HIST_BIN 33 /* [0..32] */
+#define AAL_DRE_POINT_NUM 29
+
+#define AAL_SERVICE_FORCE_UPDATE 0x1
+
+typedef struct {
+ /* DRE */
+ int dre_map_bypass;
+ /* CABC */
+ int cabc_gainlmt[33];
+} DISP_AAL_INITREG;
+
+typedef struct {
+ unsigned int serviceFlags;
+ int backlight;
+ int colorHist;
+ unsigned int maxHist[AAL_HIST_BIN];
+ int requestPartial;
+} DISP_AAL_HIST;
+
+enum DISP_AAL_REFRESH_LATENCY {
+ AAL_REFRESH_17MS = 17,
+ AAL_REFRESH_33MS = 33
+};
+
+typedef struct {
+ int DREGainFltStatus[AAL_DRE_POINT_NUM];
+ int cabc_fltgain_force; /* 10-bit ; [0,1023] */
+ int cabc_gainlmt[33];
+ int FinalBacklight; /* 10-bit ; [0,1023] */
+ int allowPartial;
+ int refreshLatency; /* DISP_AAL_REFRESH_LATENCY */
+} DISP_AAL_PARAM;
+
+#endif
diff --git a/kernel-headers/ddp_data_type.h b/kernel-headers/ddp_data_type.h
new file mode 100755
index 0000000..60486d1
--- /dev/null
+++ b/kernel-headers/ddp_data_type.h
@@ -0,0 +1,165 @@
+#ifndef __DP_DATA_TYPE_H__
+#define __DP_DATA_TYPE_H__
+
+#ifndef MAX
+ #define MAX(x, y) ((x) >= (y))? (x): (y)
+#endif // MAX
+
+#ifndef MIN
+ #define MIN(x, y) ((x) <= (y))? (x): (y)
+#endif // MIN
+
+//FMT GROUP , 0-RGB , 1-YUV , 2-Bayer raw , 3-compressed format
+#define DP_COLORFMT_PACK(VIDEO, PLANE, COPLANE, HFACTOR, VFACTOR, BITS, GROUP ,SWAP_ENABLE, UNIQUEID) \
+ ((VIDEO << 27) | \
+ (PLANE << 24) | \
+ (COPLANE << 22) | \
+ (HFACTOR << 20) | \
+ (VFACTOR << 18) | \
+ (BITS << 8) | \
+ (GROUP << 6) | \
+ (SWAP_ENABLE << 5) | \
+ (UNIQUEID << 0))
+
+#define DP_COLOR_GET_INTERLACED_MODE(color) ((0x10000000 & color) >> 28)
+#define DP_COLOR_GET_BLOCK_MODE(color) ((0x18000000 & color) >> 27)
+#define DP_COLOR_GET_PLANE_COUNT(color) ((0x07000000 & color) >> 24)
+#define DP_COLOR_IS_UV_COPLANE(color) ((0x00C00000 & color) >> 22)
+#define DP_COLOR_GET_H_SUBSAMPLE(color) ((0x00300000 & color) >> 20)
+#define DP_COLOR_GET_V_SUBSAMPLE(color) ((0x000C0000 & color) >> 18)
+#define DP_COLOR_BITS_PER_PIXEL(color) ((0x0003FF00 & color) >> 8)
+#define DP_COLOR_GET_COLOR_GROUP(color) ((0x000000C0 & color) >> 6)
+#define DP_COLOR_GET_SWAP_ENABLE(color) ((0x00000020 & color) >> 5)
+#define DP_COLOR_GET_UNIQUE_ID(color) ((0x0000001F & color) >> 0)
+#define DP_COLOR_GET_HW_FORMAT(color) ((0x0000001F & color) >> 0)
+
+typedef enum DP_COLOR_ENUM
+{
+ DP_COLOR_BAYER8 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 8, 2, 0, 20),
+ DP_COLOR_BAYER10 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 10, 2, 0, 21),
+ DP_COLOR_BAYER12 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 12, 2, 0, 22),
+ DP_COLOR_RGB565 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 16, 0, 0, 0),
+ DP_COLOR_BGR565 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 16, 0, 1, 0),
+ DP_COLOR_RGB888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 24, 0, 1, 1),
+ DP_COLOR_BGR888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 24, 0, 0, 1),
+ DP_COLOR_RGBX8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 0, 23),
+ DP_COLOR_BGRX8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 1, 23),
+ DP_COLOR_RGBA8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 1, 2),
+ DP_COLOR_BGRA8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 0, 2),
+ DP_COLOR_XRGB8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 0, 24),
+ DP_COLOR_XBGR8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 1, 24),
+ DP_COLOR_ARGB8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 1, 3),
+ DP_COLOR_ABGR8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 0, 3),
+ DP_COLOR_I420 = DP_COLORFMT_PACK(0, 3, 0, 1, 1, 8, 1, 0, 8),
+ DP_COLOR_YV12 = DP_COLORFMT_PACK(0, 3, 0, 1, 1, 8, 1, 1, 8),
+ DP_COLOR_NV12 = DP_COLORFMT_PACK(0, 2, 1, 1, 1, 8, 1, 0, 12),
+ DP_COLOR_NV21 = DP_COLORFMT_PACK(0, 2, 1, 1, 1, 8, 1, 1, 12),
+ DP_COLOR_I422 = DP_COLORFMT_PACK(0, 3, 0, 1, 0, 8, 1, 0, 9),
+ DP_COLOR_YV16 = DP_COLORFMT_PACK(0, 3, 0, 1, 0, 8, 1, 1, 9),
+ DP_COLOR_NV16 = DP_COLORFMT_PACK(0, 2, 1, 1, 0, 8, 1, 0, 13),
+ DP_COLOR_NV61 = DP_COLORFMT_PACK(0, 2, 1, 1, 0, 8, 1, 1, 13),
+ DP_COLOR_YUYV = DP_COLORFMT_PACK(0, 1, 0, 1, 0, 16, 1, 0, 5),
+ DP_COLOR_YVYU = DP_COLORFMT_PACK(0, 1, 0, 1, 0, 16, 1, 1, 5),
+ DP_COLOR_UYVY = DP_COLORFMT_PACK(0, 1, 0, 1, 0, 16, 1, 0, 4),
+ DP_COLOR_VYUY = DP_COLORFMT_PACK(0, 1, 0, 1, 0, 16, 1, 1, 4),
+ DP_COLOR_I444 = DP_COLORFMT_PACK(0, 3, 0, 0, 0, 8, 1, 0, 10),
+ DP_COLOR_YV24 = DP_COLORFMT_PACK(0, 3, 0, 0, 0, 8, 1, 1, 10),
+ DP_COLOR_IYU2 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 24, 1, 0, 25),
+ DP_COLOR_NV24 = DP_COLORFMT_PACK(0, 2, 1, 0, 0, 8, 1, 0, 14),
+ DP_COLOR_NV42 = DP_COLORFMT_PACK(0, 2, 1, 0, 0, 8, 1, 1, 14),
+ DP_COLOR_GREY = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 8, 1, 0, 7),
+
+
+ // Mediatek proprietary format
+ DP_COLOR_420_BLKP = DP_COLORFMT_PACK(1, 2, 1, 1, 1, 256, 1, 0 , 12),//Field mode
+ DP_COLOR_420_BLKI = DP_COLORFMT_PACK(3, 2, 1, 1, 1, 256, 1, 0 , 12),//Field mode + Video mode
+ DP_COLOR_422_BLKP = DP_COLORFMT_PACK(1, 1, 0, 1, 0, 512, 1, 0 , 4), //Field mode
+} DP_COLOR_ENUM;
+
+
+// Legacy for 6589 compatible
+typedef DP_COLOR_ENUM DpColorFormat;
+
+#define eYUV_420_3P DP_COLOR_I420
+#define eYUV_420_2P_YUYV DP_COLOR_YUYV
+#define eYUV_420_2P_UYVY DP_COLOR_UYVY
+#define eYUV_420_2P_YVYU DP_COLOR_YVYU
+#define eYUV_420_2P_VYUY DP_COLOR_VYUY
+#define eYUV_420_2P_ISP_BLK DP_COLOR_420_BLKP
+#define eYUV_420_2P_VDO_BLK DP_COLOR_420_BLKI
+#define eYUV_422_3P DP_COLOR_I422
+#define eYUV_422_2P DP_COLOR_NV16
+#define eYUV_422_I DP_COLOR_YUYV
+#define eYUV_422_I_BLK DP_COLOR_422_BLKP
+#define eYUV_444_3P DP_COLOR_I444
+#define eYUV_444_2P DP_COLOR_NV24
+#define eYUV_444_1P DP_COLOR_YUV444
+#define eBAYER8 DP_COLOR_BAYER8
+#define eBAYER10 DP_COLOR_BAYER10
+#define eBAYER12 DP_COLOR_BAYER12
+#define eRGB565 DP_COLOR_RGB565
+#define eBGR565 DP_COLOR_BGR565
+#define eRGB888 DP_COLOR_RGB888
+#define eBGR888 DP_COLOR_BGR888
+#define eARGB8888 DP_COLOR_ARGB8888
+#define eABGR8888 DP_COLOR_ABGR8888
+#define eRGBA8888 DP_COLOR_RGBA8888
+#define eBGRA8888 DP_COLOR_BGRA8888
+#define eXRGB8888 DP_COLOR_XRGB8888
+#define eXBGR8888 DP_COLOR_XBGR8888
+#define eRGBX8888 DP_COLOR_RGBX8888
+#define eBGRX8888 DP_COLOR_BGRX8888
+#define ePARGB8888 DP_COLOR_PARGB8888
+#define eXARGB8888 DP_COLOR_XARGB8888
+#define ePABGR8888 DP_COLOR_PABGR8888
+#define eXABGR8888 DP_COLOR_XABGR8888
+#define eGREY DP_COLOR_GREY
+#define eI420 DP_COLOR_I420
+#define eYV12 DP_COLOR_YV12
+#define eIYU2 DP_COLOR_IYU2
+
+
+#define eYV21 DP_COLOR_I420
+#define eNV12_BLK DP_COLOR_420_BLKP
+#define eNV12_BLK_FCM DP_COLOR_420_BLKI
+#define eYUV_420_3P_YVU DP_COLOR_YV12
+
+#define eNV12_BP DP_COLOR_420_BLKP
+#define eNV12_BI DP_COLOR_420_BLKI
+#define eNV12 DP_COLOR_NV12
+#define eNV21 DP_COLOR_NV21
+#define eI422 DP_COLOR_I422
+#define eYV16 DP_COLOR_YV16
+#define eNV16 DP_COLOR_NV16
+#define eNV61 DP_COLOR_NV61
+#define eUYVY DP_COLOR_UYVY
+#define eVYUY DP_COLOR_VYUY
+#define eYUYV DP_COLOR_YUYV
+#define eYVYU DP_COLOR_YVYU
+#define eUYVY_BP DP_COLOR_422_BLKP
+#define eI444 DP_COLOR_I444
+#define eNV24 DP_COLOR_NV24
+#define eNV42 DP_COLOR_NV42
+#define eYUY2 DP_COLOR_YUYV
+#define eY800 DP_COLOR_GREY
+//#define eIYU2
+#define eMTKYUV DP_COLOR_422_BLKP
+
+#define eCompactRaw1 DP_COLOR_BAYER10
+
+
+enum DpInterlaceFormat
+{
+ eInterlace_None,
+ eTop_Field,
+ eBottom_Field
+};
+
+enum DpSecure
+{
+ DP_SECURE_NONE = 0,
+ DP_SECURE = 1
+};
+
+
+#endif // __DP_DATA_TYPE_H__
diff --git a/kernel-headers/ddp_drv.h b/kernel-headers/ddp_drv.h
new file mode 100755
index 0000000..379d790
--- /dev/null
+++ b/kernel-headers/ddp_drv.h
@@ -0,0 +1,314 @@
+
+#ifndef __DDP_DRV_H__
+#define __DDP_DRV_H__
+#include <linux/ioctl.h>
+#include <sys/types.h>
+#include "ddp_hal.h"
+#include "ddp_aal.h"
+#include "ddp_gamma.h"
+#include "disp_event.h"
+
+
+typedef struct
+{
+ unsigned int reg;
+ unsigned int val;
+ unsigned int mask;
+} DISP_WRITE_REG;
+
+typedef struct
+{
+ unsigned int reg;
+ unsigned int val;
+ unsigned int mask;
+} DISP_READ_REG;
+
+#if 0
+typedef struct
+{
+ DISP_MODULE_ENUM module;
+ unsigned int timeout_ms; //timeout, unit is ms
+} disp_wait_irq_struct;
+#endif
+
+typedef struct DISP_EXEC_COMMAND
+{
+ int taskID;
+ uint32_t scenario;
+ uint32_t priority;
+ uint32_t engineFlag;
+ uint32_t *pFrameBaseSW;
+ uint32_t *pTileBaseSW;
+ uint32_t blockSize;
+} DISP_EXEC_COMMAND;
+
+typedef struct
+{
+ int layer;
+
+ unsigned long addr;
+ unsigned int fmt;
+
+ int x;
+ int y;
+ int w;
+ int h; // clip region
+ int pitch;
+} DISP_OVL_INFO;
+
+//PQ
+#define COLOR_TUNING_INDEX 19
+#define THSHP_TUNING_INDEX 12
+#define THSHP_PARAM_MAX 121 /*Everest Revision*/
+#define PARTIAL_Y_INDEX 10
+
+#define GLOBAL_SAT_SIZE 10
+#define CONTRAST_SIZE 10
+#define BRIGHTNESS_SIZE 10
+#define PARTIAL_Y_SIZE 16
+#define PQ_HUE_ADJ_PHASE_CNT 4
+#define PQ_SAT_ADJ_PHASE_CNT 4
+#define PQ_PARTIALS_CONTROL 5
+#define PURP_TONE_SIZE 3
+#define SKIN_TONE_SIZE 8 //(-6)
+#define GRASS_TONE_SIZE 6 //(-2)
+#define SKY_TONE_SIZE 3
+#define CCORR_COEF_CNT 4 /* ccorr feature */
+#define S_GAIN_BY_Y_CONTROL_CNT 5
+#define S_GAIN_BY_Y_HUE_PHASE_CNT 20
+
+enum TONE_ENUM {
+ PURP_TONE = 0,
+ SKIN_TONE = 1,
+ GRASS_TONE = 2,
+ SKY_TONE = 3
+};
+
+typedef struct {
+ unsigned int u4SHPGain; // 0 : min , 9 : max.
+ unsigned int u4SatGain; // 0 : min , 9 : max.
+ unsigned int u4PartialY; /* 0 : min , 9 : max. */
+ unsigned int u4HueAdj[PQ_HUE_ADJ_PHASE_CNT];
+ unsigned int u4SatAdj[PQ_SAT_ADJ_PHASE_CNT];
+ unsigned int u4Contrast; // 0 : min , 9 : max.
+ unsigned int u4Brightness; // 0 : min , 9 : max.
+ unsigned int u4Ccorr; /* 0 : min , 3 : max. ccorr feature */
+} DISP_PQ_PARAM;
+
+typedef struct {
+ int split_en;
+ int start_x;
+ int start_y;
+ int end_x;
+ int end_y;
+} DISP_PQ_WIN_PARAM;
+
+typedef struct {
+ int image;
+ int video;
+ int camera;
+} DISP_PQ_MAPPING_PARAM;
+
+typedef struct {
+ unsigned int en;
+ unsigned int pos_x;
+ unsigned int pos_y;
+} MDP_COLOR_CAP;
+
+typedef struct {
+ unsigned int TDS_GAIN_MID;
+ unsigned int TDS_GAIN_HIGH;
+ unsigned int TDS_COR_GAIN;
+ unsigned int TDS_COR_THR;
+ unsigned int TDS_COR_ZERO;
+ unsigned int TDS_GAIN;
+ unsigned int TDS_COR_VALUE;
+} MDP_TDSHP_REG;
+
+typedef struct{
+
+ unsigned short GLOBAL_SAT [GLOBAL_SAT_SIZE];
+ unsigned short CONTRAST [CONTRAST_SIZE];
+ unsigned short BRIGHTNESS [BRIGHTNESS_SIZE];
+ unsigned char PARTIAL_Y [PARTIAL_Y_INDEX][PARTIAL_Y_SIZE];
+ unsigned char PURP_TONE_S [COLOR_TUNING_INDEX][PQ_PARTIALS_CONTROL][PURP_TONE_SIZE];
+ unsigned char SKIN_TONE_S [COLOR_TUNING_INDEX][PQ_PARTIALS_CONTROL][SKIN_TONE_SIZE];
+ unsigned char GRASS_TONE_S [COLOR_TUNING_INDEX][PQ_PARTIALS_CONTROL][GRASS_TONE_SIZE];
+ unsigned char SKY_TONE_S [COLOR_TUNING_INDEX][PQ_PARTIALS_CONTROL][SKY_TONE_SIZE];
+ unsigned char PURP_TONE_H [COLOR_TUNING_INDEX][PURP_TONE_SIZE];
+ unsigned char SKIN_TONE_H [COLOR_TUNING_INDEX][SKIN_TONE_SIZE];
+ unsigned char GRASS_TONE_H [COLOR_TUNING_INDEX][GRASS_TONE_SIZE];
+ unsigned char SKY_TONE_H [COLOR_TUNING_INDEX][SKY_TONE_SIZE];
+ unsigned int CCORR_COEF [CCORR_COEF_CNT][3][3];
+ unsigned char S_GAIN_BY_Y [S_GAIN_BY_Y_CONTROL_CNT][S_GAIN_BY_Y_HUE_PHASE_CNT];
+ unsigned char S_GAIN_BY_Y_EN;
+ unsigned char LSP_EN;
+} DISPLAY_PQ_T;
+
+typedef struct {
+ unsigned short GLOBAL_SAT ;
+ unsigned short CONTRAST ;
+ unsigned short BRIGHTNESS ;
+ unsigned char PARTIAL_Y [PARTIAL_Y_SIZE];
+ unsigned char PURP_TONE_S [PQ_PARTIALS_CONTROL][PURP_TONE_SIZE];
+ unsigned char SKIN_TONE_S [PQ_PARTIALS_CONTROL][SKIN_TONE_SIZE];
+ unsigned char GRASS_TONE_S [PQ_PARTIALS_CONTROL][GRASS_TONE_SIZE];
+ unsigned char SKY_TONE_S [PQ_PARTIALS_CONTROL][SKY_TONE_SIZE];
+ unsigned char PURP_TONE_H [PURP_TONE_SIZE];
+ unsigned char SKIN_TONE_H [SKIN_TONE_SIZE];
+ unsigned char GRASS_TONE_H [GRASS_TONE_SIZE];
+ unsigned char SKY_TONE_H [SKY_TONE_SIZE];
+ unsigned char S_GAIN_BY_Y [S_GAIN_BY_Y_CONTROL_CNT][S_GAIN_BY_Y_HUE_PHASE_CNT];
+ unsigned char S_GAIN_BY_Y_EN;
+ unsigned char LSP_EN;
+} DISPLAY_COLOR_REG_T;
+
+typedef struct{
+
+ unsigned int entry[THSHP_TUNING_INDEX][THSHP_PARAM_MAX];
+
+} DISPLAY_TDSHP_T;
+
+typedef enum {
+ DS_en = 0,
+ iUpSlope,
+ iUpThreshold,
+ iDownSlope,
+ iDownThreshold,
+ iISO_en,
+ iISO_thr1,
+ iISO_thr0,
+ iISO_thr3,
+ iISO_thr2,
+ iISO_IIR_alpha,
+ iCorZero_clip2,
+ iCorZero_clip1,
+ iCorZero_clip0,
+ iCorThr_clip2,
+ iCorThr_clip1,
+ iCorThr_clip0,
+ iCorGain_clip2,
+ iCorGain_clip1,
+ iCorGain_clip0,
+ iGain_clip2,
+ iGain_clip1,
+ iGain_clip0,
+ PQ_DS_INDEX_MAX
+} PQ_DS_index_t;
+
+
+typedef struct {
+
+ int param[PQ_DS_INDEX_MAX];
+
+} DISP_PQ_DS_PARAM;
+
+
+// OD
+typedef struct {
+ unsigned int size;
+ unsigned int type;
+ unsigned int ret;
+ unsigned int param0;
+ unsigned int param1;
+ unsigned int param2;
+ unsigned int param3;
+} DISP_OD_CMD;
+
+typedef enum
+{
+ DISP_INTERLACE_FORMAT_NONE,
+ DISP_INTERLACE_FORMAT_TOP_FIELD,
+ DISP_INTERLACE_FORMAT_BOTTOM_FIELD
+}DISP_INTERLACE_FORMAT;
+
+#define DISP_IOCTL_MAGIC 'x'
+
+#define DISP_IOCTL_WRITE_REG _IOW (DISP_IOCTL_MAGIC, 1, DISP_WRITE_REG) // also defined in atci_pq_cmd.h
+#define DISP_IOCTL_READ_REG _IOWR (DISP_IOCTL_MAGIC, 2, DISP_READ_REG) // also defined in atci_pq_cmd.h
+//#define DISP_IOCTL_WAIT_IRQ _IOR (DISP_IOCTL_MAGIC, 3, disp_wait_irq_struct)
+#define DISP_IOCTL_DUMP_REG _IOR (DISP_IOCTL_MAGIC, 4, int)
+#define DISP_IOCTL_LOCK_THREAD _IOR (DISP_IOCTL_MAGIC, 5, int)
+#define DISP_IOCTL_UNLOCK_THREAD _IOR (DISP_IOCTL_MAGIC, 6, int)
+#define DISP_IOCTL_MARK_CMQ _IOR (DISP_IOCTL_MAGIC, 7, int)
+#define DISP_IOCTL_WAIT_CMQ _IOR (DISP_IOCTL_MAGIC, 8, int)
+#define DISP_IOCTL_SYNC_REG _IOR (DISP_IOCTL_MAGIC, 9, int)
+
+#define DISP_IOCTL_LOCK_MUTEX _IOW (DISP_IOCTL_MAGIC, 20, int)
+#define DISP_IOCTL_UNLOCK_MUTEX _IOR (DISP_IOCTL_MAGIC, 21, int)
+
+#define DISP_IOCTL_LOCK_RESOURCE _IOW (DISP_IOCTL_MAGIC, 25, int)
+#define DISP_IOCTL_UNLOCK_RESOURCE _IOR (DISP_IOCTL_MAGIC, 26, int)
+
+#define DISP_IOCTL_SET_INTR _IOR (DISP_IOCTL_MAGIC, 10, int)
+#define DISP_IOCTL_TEST_PATH _IOR (DISP_IOCTL_MAGIC, 11, int)
+
+#define DISP_IOCTL_CLOCK_ON _IOR (DISP_IOCTL_MAGIC, 12, int)
+#define DISP_IOCTL_CLOCK_OFF _IOR (DISP_IOCTL_MAGIC, 13, int)
+
+#define DISP_IOCTL_RUN_DPF _IOW (DISP_IOCTL_MAGIC, 30, int)
+#define DISP_IOCTL_CHECK_OVL _IOR (DISP_IOCTL_MAGIC, 31, int)
+#define DISP_IOCTL_GET_OVL _IOWR (DISP_IOCTL_MAGIC, 32, DISP_OVL_INFO)
+
+#define DISP_IOCTL_EXEC_COMMAND _IOW (DISP_IOCTL_MAGIC, 33, DISP_EXEC_COMMAND)
+#define DISP_IOCTL_RESOURCE_REQUIRE _IOR (DISP_IOCTL_MAGIC, 34, int)
+
+//Add for AAL control - S
+//0 : disable AAL event, 1 : enable AAL event
+#define DISP_IOCTL_AAL_EVENTCTL _IOW (DISP_IOCTL_MAGIC, 15 , int)
+//Get AAL statistics data.
+#define DISP_IOCTL_AAL_GET_HIST _IOR (DISP_IOCTL_MAGIC, 16 , DISP_AAL_HIST)
+//Update AAL setting
+#define DISP_IOCTL_AAL_SET_PARAM _IOW (DISP_IOCTL_MAGIC, 17 , DISP_AAL_PARAM)
+#define DISP_IOCTL_AAL_INIT_REG _IOW (DISP_IOCTL_MAGIC, 18 , DISP_AAL_INITREG)
+#define DISP_IOCTL_SET_GAMMALUT _IOW (DISP_IOCTL_MAGIC, 23 , DISP_GAMMA_LUT_T)
+#define DISP_IOCTL_SET_CCORR _IOW (DISP_IOCTL_MAGIC, 24 , DISP_CCORR_COEF_T)
+
+
+//Add for AAL control - E
+/*-----------------------------------------------------------------------------
+ DDP Kernel Mode API (for Kernel Trap)
+ -----------------------------------------------------------------------------*/
+//DDPK Bitblit
+//#define DISP_IOCTL_G_WAIT_REQUEST _IOR (DISP_IOCTL_MAGIC , 40 , DDPIOCTL_DdpkBitbltConfig)
+//#define DISP_IOCTL_T_INFORM_DONE _IOW (DISP_IOCTL_MAGIC , 41 , DDPIOCTL_DdpkBitbltInformDone)
+
+#define DISP_IOCTL_SET_CLKON _IOW (DISP_IOCTL_MAGIC, 50 , DISP_MODULE_ENUM)
+#define DISP_IOCTL_SET_CLKOFF _IOW (DISP_IOCTL_MAGIC, 51 , DISP_MODULE_ENUM)
+
+#define DISP_IOCTL_MUTEX_CONTROL _IOW (DISP_IOCTL_MAGIC, 55 , int) // also defined in atci_pq_cmd.h
+#define DISP_IOCTL_GET_LCMINDEX _IOR (DISP_IOCTL_MAGIC, 56 , int)
+
+// PQ setting
+#define DISP_IOCTL_SET_PQPARAM _IOW (DISP_IOCTL_MAGIC, 60 , DISP_PQ_PARAM)
+#define DISP_IOCTL_GET_PQPARAM _IOR (DISP_IOCTL_MAGIC, 61 , DISP_PQ_PARAM)
+#define DISP_IOCTL_GET_PQINDEX _IOR (DISP_IOCTL_MAGIC, 63, DISPLAY_PQ_T)
+#define DISP_IOCTL_SET_PQINDEX _IOW (DISP_IOCTL_MAGIC, 64 , DISPLAY_PQ_T)
+#define DISP_IOCTL_SET_TDSHPINDEX _IOW (DISP_IOCTL_MAGIC, 65 , DISPLAY_TDSHP_T)
+#define DISP_IOCTL_GET_TDSHPINDEX _IOR (DISP_IOCTL_MAGIC, 66 , DISPLAY_TDSHP_T)
+#define DISP_IOCTL_SET_PQ_CAM_PARAM _IOW (DISP_IOCTL_MAGIC, 67 , DISP_PQ_PARAM)
+#define DISP_IOCTL_GET_PQ_CAM_PARAM _IOR (DISP_IOCTL_MAGIC, 68 , DISP_PQ_PARAM)
+#define DISP_IOCTL_SET_PQ_GAL_PARAM _IOW (DISP_IOCTL_MAGIC, 69 , DISP_PQ_PARAM)
+#define DISP_IOCTL_GET_PQ_GAL_PARAM _IOR (DISP_IOCTL_MAGIC, 70 , DISP_PQ_PARAM)
+
+#define DISP_IOCTL_PQ_SET_BYPASS_COLOR _IOW (DISP_IOCTL_MAGIC, 71 , int)
+#define DISP_IOCTL_PQ_SET_WINDOW _IOW (DISP_IOCTL_MAGIC, 72 , DISP_PQ_WIN_PARAM)
+#define DISP_IOCTL_PQ_GET_TDSHP_FLAG _IOR (DISP_IOCTL_MAGIC, 73 , int)
+#define DISP_IOCTL_PQ_SET_TDSHP_FLAG _IOW (DISP_IOCTL_MAGIC, 74 , int)
+#define DISP_IOCTL_PQ_GET_DC_PARAM _IOR (DISP_IOCTL_MAGIC, 75, DISP_PQ_DC_PARAM)
+#define DISP_IOCTL_PQ_SET_DC_PARAM _IOW (DISP_IOCTL_MAGIC, 76, DISP_PQ_DC_PARAM)
+#define DISP_IOCTL_WRITE_SW_REG _IOW (DISP_IOCTL_MAGIC, 77, DISP_WRITE_REG) // also defined in atci_pq_cmd.h
+#define DISP_IOCTL_READ_SW_REG _IOWR (DISP_IOCTL_MAGIC, 78, DISP_READ_REG) // also defined in atci_pq_cmd.h
+#define DISP_IOCTL_SET_COLOR_REG _IOWR (DISP_IOCTL_MAGIC, 79, DISPLAY_COLOR_REG_T)
+
+// OD
+#define DISP_IOCTL_OD_CTL _IOWR (DISP_IOCTL_MAGIC, 80 , DISP_OD_CMD)
+
+// OVL
+#define DISP_IOCTL_OVL_ENABLE_CASCADE _IOW (DISP_IOCTL_MAGIC, 90 , int)
+#define DISP_IOCTL_OVL_DISABLE_CASCADE _IOW (DISP_IOCTL_MAGIC, 91 , int)
+// PQ setting
+#define DISP_IOCTL_PQ_GET_DS_PARAM _IOR (DISP_IOCTL_MAGIC, 100, DISP_PQ_DS_PARAM)
+#define DISP_IOCTL_PQ_GET_MDP_COLOR_CAP _IOR (DISP_IOCTL_MAGIC, 101, MDP_COLOR_CAP)
+#define DISP_IOCTL_PQ_GET_MDP_TDSHP_REG _IOR (DISP_IOCTL_MAGIC, 102, MDP_TDSHP_REG)
+#endif
diff --git a/kernel-headers/ddp_gamma.h b/kernel-headers/ddp_gamma.h
new file mode 100755
index 0000000..484bf27
--- /dev/null
+++ b/kernel-headers/ddp_gamma.h
@@ -0,0 +1,35 @@
+#ifndef __DDP_GAMMA_H__
+#define __DDP_GAMMA_H__
+
+//#include <asm/uaccess.h>
+
+
+typedef enum {
+ DISP_GAMMA0 = 0,
+ DISP_GAMMA_TOTAL
+} disp_gamma_id_t;
+
+
+typedef unsigned int gamma_entry;
+#define GAMMA_ENTRY(r10, g10, b10) (((r10) << 20) | ((g10) << 10) | (b10))
+
+#define DISP_GAMMA_LUT_SIZE 512
+
+typedef struct {
+ disp_gamma_id_t hw_id;
+ gamma_entry lut[DISP_GAMMA_LUT_SIZE];
+} DISP_GAMMA_LUT_T;
+
+
+typedef enum {
+ DISP_CCORR0 = 0,
+ DISP_CCORR_TOTAL
+} disp_ccorr_id_t;
+
+typedef struct {
+ disp_ccorr_id_t hw_id;
+ unsigned int coef[3][3];
+} DISP_CCORR_COEF_T;
+
+#endif
+
diff --git a/kernel-headers/ddp_hal.h b/kernel-headers/ddp_hal.h
new file mode 100755
index 0000000..ebb3ceb
--- /dev/null
+++ b/kernel-headers/ddp_hal.h
@@ -0,0 +1,125 @@
+#ifndef _H_DDP_HAL_
+#define _H_DDP_HAL_
+
+/* DISP Mutex */
+#define DISP_MUTEX_TOTAL (10)
+#define DISP_MUTEX_DDP_FIRST (0)
+#define DISP_MUTEX_DDP_LAST (4)
+#define DISP_MUTEX_DDP_COUNT (5)
+#define DISP_MUTEX_MDP_FIRST (5)
+#define DISP_MUTEX_MDP_COUNT (5)
+
+/* DISP MODULE */
+typedef enum
+{
+ DISP_MODULE_OVL0 ,
+ DISP_MODULE_OVL1 ,
+ DISP_MODULE_RDMA0 ,
+ DISP_MODULE_RDMA1 ,
+ DISP_MODULE_WDMA0 ,
+ DISP_MODULE_COLOR0,
+ DISP_MODULE_CCORR ,
+ DISP_MODULE_AAL ,
+ DISP_MODULE_GAMMA ,
+ DISP_MODULE_DITHER,
+ DISP_MODULE_UFOE , //10
+ DISP_MODULE_PWM0 ,
+ DISP_MODULE_WDMA1 ,
+ DISP_MODULE_DSI0 ,
+ DISP_MODULE_DPI ,
+ DISP_MODULE_SMI,
+ DISP_MODULE_CONFIG,
+ DISP_MODULE_CMDQ,
+ DISP_MODULE_MUTEX,
+
+ DISP_MODULE_COLOR1,
+ DISP_MODULE_RDMA2,
+ DISP_MODULE_PWM1,
+ DISP_MODULE_OD,
+ DISP_MODULE_MERGE,
+ DISP_MODULE_SPLIT0,
+ DISP_MODULE_SPLIT1,
+ DISP_MODULE_DSI1,
+ DISP_MODULE_DSIDUAL,
+
+ DISP_MODULE_SMI_LARB0 ,
+ DISP_MODULE_SMI_COMMON,
+ DISP_MODULE_UNKNOWN, //20
+ DISP_MODULE_NUM
+} DISP_MODULE_ENUM;
+
+typedef enum
+{
+ DISP_REG_OVL0 ,
+ DISP_REG_OVL1 ,
+ DISP_REG_RDMA0 ,
+ DISP_REG_RDMA1 ,
+ DISP_REG_WDMA0 ,
+ DISP_REG_COLOR ,
+ DISP_REG_CCORR ,
+ DISP_REG_AAL ,
+ DISP_REG_GAMMA ,
+ DISP_REG_DITHER ,
+ DISP_REG_UFOE ,
+ DISP_REG_PWM ,
+ DISP_REG_WDMA1 ,
+ DISP_REG_MUTEX ,
+ DISP_REG_DSI0 ,
+ DISP_REG_DPI0 ,
+ DISP_REG_CONFIG ,
+ DISP_REG_SMI_LARB0 ,
+ DISP_REG_SMI_COMMON,
+ DISP_REG_MIPI ,
+ DISP_REG_CONFIG2 ,
+ DISP_REG_CONFIG3 ,
+ DISP_REG_IO_DRIVING,
+ DISP_TVDPLL_CFG6,
+ DISP_TVDPLL_CON0,
+ DISP_TVDPLL_CON1,
+ DISP_REG_NUM
+} DISP_REG_ENUM;
+
+typedef enum {
+ SOF_SINGLE = 0,
+ SOF_DSI0,
+ SOF_DSI1,
+ SOF_DPI0,
+} MUTEX_SOF;
+
+enum OVL_LAYER_SOURCE {
+ OVL_LAYER_SOURCE_MEM = 0,
+ OVL_LAYER_SOURCE_RESERVED = 1,
+ OVL_LAYER_SOURCE_SCL = 2,
+ OVL_LAYER_SOURCE_PQ = 3,
+};
+
+enum OVL_LAYER_SECURE_MODE {
+ OVL_LAYER_NORMAL_BUFFER = 0,
+ OVL_LAYER_SECURE_BUFFER = 1,
+ OVL_LAYER_PROTECTED_BUFFER = 2
+};
+
+typedef enum
+{
+ CMDQ_DISABLE = 0,
+ CMDQ_ENABLE
+}CMDQ_SWITCH;
+
+typedef enum
+{
+ CMDQ_BEFORE_STREAM_SOF,
+ CMDQ_WAIT_STREAM_EOF_EVENT,
+ CMDQ_CHECK_IDLE_AFTER_STREAM_EOF,
+ CMDQ_AFTER_STREAM_EOF,
+ CMDQ_ESD_CHECK_READ,
+ CMDQ_ESD_CHECK_CMP,
+ CMDQ_ESD_ALLC_SLOT,
+ CMDQ_ESD_FREE_SLOT,
+ CMDQ_STOP_VDO_MODE,
+ CMDQ_START_VDO_MODE,
+ CMDQ_DSI_RESET
+}CMDQ_STATE;
+
+
+
+#endif
diff --git a/kernel-headers/ddp_ovl.h b/kernel-headers/ddp_ovl.h
new file mode 100755
index 0000000..01f0f44
--- /dev/null
+++ b/kernel-headers/ddp_ovl.h
@@ -0,0 +1,17 @@
+#ifndef _DDP_OVL_H_
+#define _DDP_OVL_H_
+#include "ddp_hal.h"
+#include "ddp_data_type.h"
+
+#define OVL_CASCADE_SUPPORT
+#define OVL_MAX_WIDTH (4095)
+#define OVL_MAX_HEIGHT (4095)
+#ifdef OVL_CASCADE_SUPPORT
+#define OVL_LAYER_NUM (8)
+#else
+#define OVL_LAYER_NUM (4)
+#endif
+
+#define OVL_LAYER_NUM_PER_OVL 4
+
+#endif
diff --git a/kernel-headers/disp_event.h b/kernel-headers/disp_event.h
new file mode 100755
index 0000000..e97ecf8
--- /dev/null
+++ b/kernel-headers/disp_event.h
@@ -0,0 +1,19 @@
+#ifndef __DISP_EVENT_H__
+#define __DISP_EVENT_H__
+
+typedef enum{
+ DISP_PATH_EVENT_FRAME_DONE = 0,
+ DISP_PATH_EVENT_FRAME_START,
+ DISP_PATH_EVENT_FRAME_REG_UPDATE,
+ DISP_PATH_EVENT_FRAME_TARGET_LINE,
+ DISP_PATH_EVENT_FRAME_COMPLETE,
+ DISP_PATH_EVENT_FRAME_STOP,
+ DISP_PATH_EVENT_IF_CMD_DONE,
+ DISP_PATH_EVENT_IF_VSYNC,
+ DISP_PATH_EVENT_TRIGGER,
+ DISP_PATH_EVENT_AAL_OUT_END_FRAME,
+ DISP_PATH_EVENT_NUM,
+ DISP_PATH_EVENT_NONE = 0xff,
+}DISP_PATH_EVENT;
+
+#endif
diff --git a/kernel-headers/errata.h b/kernel-headers/errata.h
new file mode 100755
index 0000000..61998a4
--- /dev/null
+++ b/kernel-headers/errata.h
@@ -0,0 +1,41 @@
+#ifndef ERRATA_H
+#define ERRATA_H
+
+#define SAFE_READ(x) \
+ __asm__ __volatile__( \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ ); \
+ x; \
+ __asm__ __volatile__( \
+ "nop\n" \
+ );
+
+#define SAFE_HEAD \
+ { \
+ __asm__ __volatile__( \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ ); \
+
+#define SAFE_TAIL \
+ __asm__ __volatile__( \
+ "nop\n" \
+ ); \
+ }
+
+#endif
diff --git a/kernel-headers/jpeg_drv.h b/kernel-headers/jpeg_drv.h
new file mode 100755
index 0000000..5699235
--- /dev/null
+++ b/kernel-headers/jpeg_drv.h
@@ -0,0 +1,677 @@
+#include <linux/ioctl.h>
+
+#ifndef __JPEG_DRV_H__
+#define __JPEG_DRV_H__
+
+
+
+#define TO_CEIL(x,a) ( ((x) + ((a)-1)) & ~((a)-1) )
+#define TO_FLOOR(x,a) ( (x) & ~((a)-1) )
+#define TO_MASK(x,a) ( (x) & (a) )
+
+#define DUNUM_MAPPING(value) (((value)-1)&0x3)
+
+
+
+typedef struct
+{
+ long timeout;
+ unsigned int *result;
+
+}JPEG_DEC_DRV_OUT;
+
+
+//===========================================================================================
+
+
+
+
+#define MAX_JPEG_COMPONENT 4
+#define MAX_NUM_SCAN 32
+
+#define D_MAX_JPEG_HW_COMP 3
+//#define D_MAX_JPEG_HUFF_TBL 4
+#define D_MAX_JPEG_QTBL 4
+#define D_MAX_JPEG_HW_QTBL 2
+#define D_MAX_JPEG_BLOCK_NUM 10
+#define D_HUFF_LOOKAHEAD_BITS 6 /* # of bits of lookahead */
+
+#define D_DCTSIZE 8
+#define D_JPEG_DRAM_ALIGN_MASK 0xf
+#define D_JPEG_DRAM_ALIGN_SIZE (D_JPEG_DRAM_ALIGN_MASK + 1)
+
+#define D_JPEG_BASELINE 0
+#define D_JPEG_DC_REFINE 1
+#define D_JPEG_AC_FIRST 2
+#define D_JPEG_AC_REFINE 3
+#define D_JPEG_DC_FIRST 4
+
+/* global data check flags */
+#define D_FLAG_NONE (0)
+
+#define D_GLOB_PROGRESSIVE (1 << 0)
+#define D_GLOB_NCOMP (1 << 1)
+#define D_GLOB_BLK_W (1 << 2)
+#define D_GLOB_BLK_H (1 << 3)
+#define D_GLOB_PIC_W (1 << 4)
+#define D_GLOB_PIC_H (1 << 5)
+#define D_GLOB_DCHUFF (1 << 6) /* no need */
+#define D_GLOB_ACHUFF (1 << 7) /* no need */
+#define D_GLOB_NZBUFF (1 << 8) /* no need */
+#define D_GLOB_QTBL (1 << 9) /* no need */
+#define D_GLOB_RESTART (1 << 10)
+/* scan data check flags */
+#define D_SCAN_DATASTART (1 << 0)
+#define D_SCAN_NCOMP (1 << 1)
+#define D_SCAN_COMPIN (1 << 2)
+#define D_SCAN_COMPQ (1 << 3)
+#define D_SCAN_BLKDC (1 << 4)
+#define D_SCAN_BLKAC (1 << 5)
+#define D_SCAN_ALAH (1 << 6)
+#define D_SCAN_SESS (1 << 7)
+#define D_SCAN_LAST (1 << 8)
+#define D_SCAN_ROWSTART (1 << 9)
+#define D_SCAN_ROWEND (1 << 10)
+#define D_SCAN_DCHUFF (1 << 11)
+#define D_SCAN_ACHUFF (1 << 12)
+#define D_SCAN_QTBL (1 << 13)
+#define D_SCAN_NZBUFF (1 << 14)
+/* mcu row check flags */
+#define D_ROW_CURR (1 << 0)
+#define D_ROW_OUTBUF (1 << 1)
+#define D_ROW_OUTBUFSIZE (1 << 2)
+/* mcu check flags */
+#define D_MCU_OUTADDR (1 << 0)
+#define D_MCU_COEFADDR (1 << 1)
+/* misc check flags */
+#define D_MISC_ADDR_X (1 << 0)
+#define D_MISC_ADDR_Y (1 << 1)
+
+
+#define M_JPEG_INTERFACE_START() \
+ int i4Ret = (int)E_HWJPG_OK;
+
+#define M_JPEG_INTERFACE_END() \
+ return i4Ret
+
+
+#define HORI 0
+#define VERT 1
+
+#define JPEG_ENC_DST_ADDR_OFFSET_MASK (0x0f)
+
+
+
+
+
+typedef enum _ENUM_JPEG_RET_CODE_T
+{
+ E_JPG_OK,
+ E_JPG_ERR_NONFATAL,
+ E_JPG_ERR_FATAL,
+ E_JPG_ERR_PARAM,
+ E_JPG_ERR_NOT_INITED,
+ E_JPG_ERR_ALREADY, //5
+ /* markers */
+ E_JPG_ERR_NOT_JPEG_IMAGE,
+ E_JPG_ERR_NOT_A_MARKER,
+ E_JPG_ERR_PASS_END,
+ E_JPG_ERR_MULTI_SOI,
+ E_JPG_ERR_UNSUPPORT_SOF, //10
+ E_JPG_ERR_MULTI_SOF,
+ E_JPG_ERR_INVALID_SOF,
+ E_JPG_ERR_SOS_BEFORE_SOF,
+ E_JPG_ERR_INVALID_SOS,
+ E_JPG_ERR_INVALID_DHT, //15
+ E_JPG_ERR_INVALID_DRI,
+ E_JPG_ERR_MULTI_APP1,
+ E_JPG_ERR_INVALID_APP0,
+ E_JPG_ERR_INVALID_APP1,
+ E_JPG_ERR_PARSE_FAILED, //20
+ E_JPG_ERR_NOT_PARSED,
+ E_JPG_ERR_MULTI_EOI,
+ /* instances */
+ E_JPG_ERR_ALLOC_PARSER,
+ E_JPG_ERR_ALLOC_DECODER,
+ E_JPG_ERR_ALLOC_MEM, //25
+ E_JPG_ERR_ALLOC_FLOW,
+ /* general */
+ E_JPG_ERR_UNSUPPORT,
+ E_JPG_ERR_GENERAL,
+ E_JPG_ERR_LAST,
+ E_JPG_ERR_DISPLAY_ADDR, //30
+ E_JPG_ERR_INVALID_COMPONENT //code sync
+} JpegDecRetCode;
+
+
+typedef enum
+{
+ E_HWJPG_OK = 0,
+ E_HWJPG_BUSY,
+
+ E_HWJPG_ERR_FETCH_TIMEOIT = E_JPG_ERR_LAST + 1,
+ E_HWJPG_ERR_SET_BS,
+ E_HWJPG_ERR_LOAD_Q,
+ E_HWJPG_ERR_QTBL_INDEX,
+ E_HWJPG_ERR_QTBL_NUM,
+
+ E_HWJPG_ERR_PARAM,
+ E_HWJPG_ERR_TIMEOUT,
+
+ E_HWJPG_ERR_COMP_RANGE,
+ E_HWJPG_ERR_TBL_RANGE,
+ E_HWJPG_ERR_BLOCK,
+ E_HWJPG_ERR_SIZE,
+ E_HWJPG_ERR_OUTBUF,
+
+ E_HWJPG_ERR_NULL_SCAN,
+
+ E_HWJPG_ERR_GLOB_NOT_READY,
+ E_HWJPG_ERR_SCAN_NOT_READY,
+ E_HWJPG_ERR_ROW_NOT_READY,
+ E_HWJPG_ERR_MCU_NOT_READY,
+ E_HWJPG_ERR_MISC_NOT_READY,
+ E_HWJPG_ERR_HUFF_ADDR,
+ /* last */
+ E_HWJPG_ERR_GENERAL
+} JpegDrvDecRetCode;
+
+
+typedef enum
+{
+ JDEC_HAL_DEC_MODE_NONE,
+ JDEC_HAL_DEC_MODE_BASELINE_PIC, ///< Jpeg baseline picture, decode whole picture
+ JDEC_HAL_DEC_MODE_BASELINE_MCU, ///< Jpeg baseline picture, decode MCU row
+ JDEC_HAL_DEC_MODE_BASELINE_MCU_ROW, ///< Jpeg baseline picture, decode MCU
+ JDEC_HAL_DEC_MODE_BASELINE_VIDEO_OUTPUT,
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_MULTI_COLLECT, ///< Jpeg progressive picture, decode MCU milti-collect
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_ENHANCE, ///< Jpeg progressive picture, decode MCU enhance decoding
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_ROW_MULTI_COLLECT, ///Jpeg progressive MCU-Row Mode
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_ROW_ENHANCE,
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_SCAN_MULTI_COLLECT,
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_SCAN_ENHANCE
+} JpegDrvDecMode;
+
+/* jpeg format */
+typedef enum _JpegDecFormat
+{
+ E_JPG_UNKNOWN_FORMAT,
+ E_JPG_BASELINE,
+ E_JPG_EX_SEQ_HUFFMAN,
+ E_JPG_PROGRESSIVE_HUFFMAN,
+ E_JPG_EX_SEQ_ARITHMETIC,
+ E_JPG_PROGRESSIVE_ARITHMETIC,
+ E_JPG_LOSSLESS_HUFFMAN,
+ E_JPG_DIFFERENTIAL_SEQ_HUFFMAN,
+ E_JPG_DIFF_PROG_HUFFMAN,
+ E_JPG_DIFF_LLESS_HUFFMAN,
+ E_JPG_RESERVED_FOR_EXTENSIONS,
+ E_JPG_LOSSLESS_ARITHMETIC,
+ E_JPG_DIFF_SEQ_ARITHMETIC,
+ E_JPG_DIFF_PROG_ARITHMETIC,
+ E_JPG_UNSUPPORT_FORMAT
+} JpegDecFormat;
+
+
+/* component info in SOF marker */
+typedef struct _JpegDecSOFComp
+{
+ unsigned char u1CompId;
+ unsigned char u1HSampFactor;
+ unsigned char u1VSampFactor;
+ unsigned char u1QuantTblNo;
+} JpegDecSOFComp;
+
+typedef struct _JpegDecSOS
+{
+ unsigned int u4ScanPass; /* scan pass */
+ unsigned char u1CompInScan;
+ unsigned char au1CompNoList[MAX_JPEG_COMPONENT];
+ unsigned char au1DcId[MAX_JPEG_COMPONENT];
+ unsigned char au1AcId[MAX_JPEG_COMPONENT];
+ unsigned char u1Ss, u1Se, u1Ah, u1Al, u1AhAl; /* OT: NO USE */
+ unsigned char* pu1ScanTableStart;
+ unsigned char* pu1ScanDataStart;
+} JpegDecSOS;
+
+
+/* raw de-huffman table */
+typedef struct
+{
+ unsigned char au1Bits[17];
+ unsigned char au1HuffVal[256];
+} JpegDecDhtHuffTbl;
+
+
+
+/* SOF data */
+typedef struct _JpegDecSOF
+{
+ int fgSOF; /* indicate that already have an SOF marker */
+ JpegDecFormat eJpegFormat;
+ unsigned char u1DataPrecision;
+ unsigned short u2ImageHeight;
+ unsigned short u2ImageWidth;
+ unsigned char u1NumComponents;
+ unsigned char au1MapId2Index[256];
+ JpegDecSOFComp arSofComp[MAX_JPEG_COMPONENT];
+} JpegDecSOF;
+
+
+
+/* DHT data */
+typedef struct
+{
+ unsigned int u4NumDcTbl;
+ unsigned int u4NumAcTbl;
+ unsigned int fgDcTblLoaded; /* bit mask for loaded dc table */
+ unsigned int fgAcTblLoaded; /* bit mask for loaded ac table */
+ JpegDecDhtHuffTbl arDcTbl[4];
+ JpegDecDhtHuffTbl arAcTbl[4];
+} JpegDecDHT;
+
+/* DQT data */
+typedef struct
+{
+ /*
+ although we leave 2bytes * 64 space here,
+ if q table precision is 8bits, we use only
+ first half (1x64) of this table
+ */
+ unsigned char aau1Qtbl[4][128];
+ unsigned int afgPrec[4];
+ unsigned char u1NumQ;
+ unsigned int fgDQT;
+} JpegDecDQT;
+
+
+/* new types for flw2 (wired) */
+typedef struct
+{
+ void *pvFreePoint; /* OT: NO USE */
+ unsigned int u4Width; /* OT: NO USE */
+ unsigned int u4Height; /* OT: NO USE */
+ unsigned int u4McuNumInRow; /* OT: NO USE */
+ unsigned int u4McuRows; /* OT: NO USE */
+ unsigned int u4TotalMcuNum; /* OT: NO USE */
+ unsigned int aau4SampleFactor[3][2]; /* OT: NO USE */
+ unsigned int au4CompBlock[3]; /* OT: NO USE */
+ unsigned int au4MaxFactor[2]; /* OT: NO USE */
+ unsigned int outputBuffer0[3];
+ unsigned int outputBuffer1[3]; /* nouse in full frame mode, only use in PauseResume/DirectCouple mode */
+ unsigned int au1CoffBuffer[3]; /* OT: NO USE */
+ int fgProgScan; /* OT: NO USE */
+ /* temp buffers */
+ unsigned int apvNzBuffer[3]; /* OT: NO USE */
+
+} JpegDrvDecFlow;
+
+
+
+//// jpeg decode mode
+typedef enum _JpegDecMode
+{
+ JPEG_DEC_MODE_NONE,
+ JPEG_DEC_MODE_FRAME, ///< Jpeg baseline picture, decode whole picture
+ JPEG_DEC_MODE_DC_LINK, ///< Jpeg baseline picture, decode whole picture
+ JPEG_DEC_MODE_MCU_ROW ///< Jpeg baseline picture, decode MCU row
+} JpegDecMode;
+
+
+//// JPEG Decoder Structure
+typedef struct
+{
+
+ /* common */
+ unsigned int decodeMode; //OK
+ unsigned int reg_OpMode ; //OK
+ unsigned int regDecDumpEn;
+ unsigned int totalMCU ; //OK
+ unsigned int comp0_DU ;
+
+ unsigned int membershipList ; //OK /* { GRAY, gmcEn, DU9, DU8,..., DU1, DU0} */
+
+ /* for BRZ (0): 1, (1): 1/2, (2): 1/4, (3): 1/8 */
+ unsigned char lumaHorDecimate; //OK
+ unsigned char lumaVerDecimate; //OK
+ unsigned char cbcrHorDecimate; //OK
+ unsigned char cbcrVerDecimate; //OK
+
+ unsigned int srcStreamAddrBase; //OK
+ unsigned int srcStreamSize; //OK
+ unsigned int srcStreamAddrWritePtr; //OK
+
+ unsigned int outputBuffer0[3]; //OK
+ unsigned int outputBuffer1[3]; //OK /* nouse in full frame mode, only use in PauseResume/DirectCouple mode */
+
+
+ // JPEG component information
+ unsigned int componentNum; //OK
+ unsigned int componentID[3]; //OK ///< Ci
+ unsigned int hSamplingFactor[3]; //OK ///< Hi
+ unsigned int vSamplingFactor[3]; //OK ///< Vi
+ unsigned int qTableSelector[3]; //OK ///< Tqi (OT: need this field?)
+
+ unsigned int dma_McuInGroup; //OK
+ unsigned int dma_GroupNum ; //OK
+ unsigned int dma_LastMcuNum ; //OK
+ unsigned int gmcEn ; //OK
+
+
+ //unsigned int totalMcuRows; //OK ///< number of MCU column in the JPEG file
+
+ unsigned int compImgStride[D_MAX_JPEG_HW_COMP]; //OK // hSamplingFactor[n] * 8 * mcuPerRow (byte pitch of a component)
+ unsigned int compMemStride[D_MAX_JPEG_HW_COMP]; //OK
+ unsigned int compTileBufStride[D_MAX_JPEG_HW_COMP]; // hSamplingFactor[n] * 8 * mcuPerRow (byte pitch of a component)
+
+
+
+ unsigned int mcuPerRow; //OK //move to HAL ///< number of MCU row in the JPEG file
+ unsigned int pauseRow_en; //OK
+ unsigned int pauseRowCnt; //move to HAL
+ unsigned int pauseMCU; //OK
+ unsigned int tileBufRowNum ; //move to HAL
+ unsigned int buffer_Y_PA ; //move to HAL
+ unsigned int buffer_Cb_PA; //move to HAL
+ unsigned int buffer_Cr_PA; //move to HAL
+ unsigned int buffer_Y_row_size ; //move to HAL
+ unsigned int buffer_C_row_size ; //move to HAL
+
+
+ //unsigned int compDU[3]; //OK ///< (required by HW decoder) number of DU for each component
+ //unsigned int duPerMCURow[3]; //OK ///< (required by HW decoder) DU per MCU row for each component (MT6589_NOUSE)
+ //unsigned int dummyDU[3]; //OK ///< (required by HW decoder) number of dummy DU for each component (MT6589_NOUSE)
+ //unsigned int samplingFormat; //OK /// how many format?
+
+
+
+
+}JPEG_DEC_DRV_IN;
+
+
+
+
+
+typedef struct
+{
+ unsigned int decRowBuf[3]; //OK
+ unsigned int pauseMCU; //OK
+
+
+}JPEG_DEC_CONFIG_ROW;
+
+
+
+typedef struct
+{
+ unsigned int goNum;
+ unsigned int pauseMCUidx[64];
+ unsigned int decRowBuf0[64];
+ unsigned int decRowBuf1[64];
+ unsigned int decRowBuf2[64];
+
+
+}JPEG_DEC_CONFIG_CMDQ;
+
+
+
+
+typedef struct
+{
+ // from mt6575
+ unsigned int srcStreamAddrBase;
+ unsigned int srcStreamSize;
+ unsigned int srcStreamAddrWritePtr;
+
+ unsigned int outputBuffer0[3];
+ unsigned int outputBuffer1[3]; /* nouse in full frame mode, only use in PauseResume/DirectCouple mode */
+
+ unsigned int mcuPerRow; ///< number of MCU row in the JPEG file
+ unsigned int totalMcuRows; ///< number of MCU column in the JPEG file
+
+ unsigned int compDU[3]; ///< (required by HW decoder) number of DU for each component
+ unsigned int duPerMCURow[3]; ///< (required by HW decoder) DU per MCU row for each component (MT6589_NOUSE)
+ unsigned int dummyDU[3]; ///< (required by HW decoder) number of dummy DU for each component (MT6589_NOUSE)
+
+ unsigned int samplingFormat; /// how many format?
+
+ // JPEG component information
+ unsigned int componentNum;
+ unsigned int componentID[3]; ///< Ci
+ unsigned int hSamplingFactor[3]; ///< Hi
+ unsigned int vSamplingFactor[3]; ///< Vi
+ unsigned int qTableSelector[3]; ///< Tqi (OT: need this field?)
+
+/*********************************************************************************/
+
+ /* common */
+ unsigned int totalMCU ;
+ unsigned char blkNumInMCU; //total drv no use
+
+ unsigned char u1MaxHorSample, u1MaxVerSample; // widest, highest
+ unsigned int u4PicWidth, u4PicHeight; // picture width and height
+ unsigned int compImgStride[D_MAX_JPEG_HW_COMP]; // hSamplingFactor[n] * 8 * mcuPerRow (byte pitch of a component)
+ unsigned int compTileBufStride[D_MAX_JPEG_HW_COMP]; // hSamplingFactor[n] * 8 * mcuPerRow (byte pitch of a component)
+ unsigned int au4PicWidthInBuf[D_MAX_JPEG_HW_COMP];
+
+
+ // use only in look ahead table
+ unsigned char au1MemberShip[D_MAX_JPEG_BLOCK_NUM]; // DU mapping to components
+ unsigned char aau1Qtbl[D_MAX_JPEG_QTBL][128]; // q tables in stream
+ unsigned int u4RestartInterval;
+
+ /* current scan */
+ unsigned char u1NumCompsInCurrScan; // number of components in current scan
+ int afgCompInScan[D_MAX_JPEG_HW_COMP + 1];
+ //unsigned char qTableSelector[D_MAX_JPEG_HW_COMP];
+ unsigned char au1BlkDc[D_MAX_JPEG_BLOCK_NUM];
+ unsigned char au1BlkAc[D_MAX_JPEG_BLOCK_NUM];
+ unsigned char u1Se; /* OT: NO USE */
+ unsigned char u1Ss; /* OT: NO USE */
+
+ /* current mcu row */
+ unsigned int u4CurrMcuRow;
+ unsigned int u4ModTotalRows;
+
+
+ /* for single component in p scan */
+ unsigned char u1FirstCompInScan;
+
+ /* for BRZ */
+ unsigned char lumaHorDecimate; //(0): 1, (1): 1/2, (2): 1/4, (3): 1/8
+ unsigned char lumaVerDecimate;
+ unsigned char cbcrHorDecimate;
+ unsigned char cbcrVerDecimate;
+ unsigned int srcColorFormat;
+ unsigned int dstColorFormat;
+ unsigned int u4isColorConv;
+ unsigned int u4ds_width[3] ;
+ unsigned int u4ds_height[3] ;
+
+ unsigned int decodeMode;
+ unsigned int gdmaBypassEn;
+ unsigned int regDecDumpEn;
+
+ unsigned int pauseRow_en;
+ unsigned int pauseRowCnt;
+ unsigned int tileBufRowNum ;
+ unsigned int buffer_Y_PA ;
+ unsigned int buffer_Cb_PA;
+ unsigned int buffer_Cr_PA;
+ unsigned int buffer_Y_row_size ;
+ unsigned int buffer_C_row_size ;
+
+} JpegDrvDecConfig;
+
+typedef struct
+{
+ unsigned int *pChksum;
+} JpegDrvDecResult;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//==========================================================================================
+
+
+// JPEG Encoder Structure
+typedef struct
+{
+
+ unsigned int dstBufferAddr;
+ unsigned int dstBufferSize;
+
+ unsigned int encWidth; //HW directly fill to header
+ unsigned int encHeight; //HW directly fill to header
+
+ unsigned char enableEXIF;
+ unsigned char allocBuffer;
+ //unsigned char enableSyncReset; //not use in mt6589
+
+ unsigned int encQuality;
+ unsigned int encFormat;
+
+ //extend in mt6589
+ unsigned int disableGMC; //TBD: not support
+ unsigned int restartInterval;
+ unsigned int srcBufferAddr; // YUV420: Luma
+ unsigned int srcChromaAddr;
+ unsigned int imgStride ;
+ unsigned int memStride ;
+ unsigned int totalEncDU ;
+ unsigned int dstBufAddrOffset;
+ unsigned int dstBufAddrOffsetMask;
+
+}JPEG_ENC_DRV_IN;
+
+
+
+
+
+typedef struct
+{
+ long timeout;
+ unsigned int *fileSize;
+ unsigned int *result;
+ unsigned int *cycleCount;
+
+}JPEG_ENC_DRV_OUT;
+
+typedef struct {
+ unsigned long startAddr;//In :
+ unsigned long size;
+ unsigned long result;// 0 : out of pmem range, 1 : inside pmem range, 2 : partially overlap with pmem range
+} JPEG_PMEM_RANGE;
+
+//====================================================================================
+
+
+typedef struct
+{
+ long timeout;
+ unsigned int *pFileSize;
+ unsigned int *pResult;
+ unsigned int *pCycleCount;
+
+} JpegDrvEncResult;
+
+
+
+
+
+
+//typedef struct
+//{
+// unsigned int srcBufferAddr; // YUV420: Luma
+// unsigned int srcChromaAddr;
+// unsigned int dstBufferAddr;
+// unsigned int dstBufferSize;
+//
+// unsigned int srcWidth;
+// unsigned int srcHeight;
+//
+// unsigned char enableEXIF;
+// unsigned char disableGMC; //not support
+//
+// unsigned int restartInterval;
+// unsigned int quality;
+// unsigned int yuvFormat;
+//
+//} JpegDrvEncParam;
+
+
+
+//======================================================================================
+
+
+
+
+
+
+
+#define JPEG_IOCTL_MAGIC 'x'
+
+#if 0
+ #define JPEG_DEC_IOCTL_INIT _IO (JPEG_IOCTL_MAGIC, 1)
+ //#define JPEG_DEC_IOCTL_CONFIG _IOW (JPEG_IOCTL_MAGIC, 2, JPEG_DEC_DRV_IN)
+ #define JPEG_DEC_IOCTL_START _IO (JPEG_IOCTL_MAGIC, 3)
+ #define JPEG_DEC_IOCTL_WAIT _IOWR(JPEG_IOCTL_MAGIC, 6, JPEG_DEC_DRV_OUT)
+ #define JPEG_DEC_IOCTL_DEINIT _IO (JPEG_IOCTL_MAGIC, 8)
+ //#define JPEG_DEC_IOCTL_RESUME _IOW(JPEG_IOCTL_MAGIC, 4, JPEG_DEC_RESUME_IN)
+ //#define JPEG_DEC_IOCTL_RANGE _IOWR(JPEG_IOCTL_MAGIC, 5, JPEG_DEC_RANGE_IN)
+ //#define JPEG_DEC_IOCTL_COPY _IOWR(JPEG_IOCTL_MAGIC, 7, int)
+#endif
+
+///////////////////// JPEG DEC IOCTL /////////////////////////////////////
+#define JPEG_DEC_IOCTL_INIT _IO (JPEG_IOCTL_MAGIC, 1)
+#define JPEG_DEC_IOCTL_CONFIG _IOW (JPEG_IOCTL_MAGIC, 2, JPEG_DEC_DRV_IN)
+#define JPEG_DEC_IOCTL_FLOW _IOW (JPEG_IOCTL_MAGIC, 3, JpegDrvDecFlow)
+#define JPEG_DEC_IOCTL_START _IO (JPEG_IOCTL_MAGIC, 4)
+#define JPEG_DEC_IOCTL_WAIT _IOWR (JPEG_IOCTL_MAGIC, 5, JPEG_DEC_DRV_OUT)
+#define JPEG_DEC_IOCTL_DEINIT _IO (JPEG_IOCTL_MAGIC, 6)
+
+#define JPEG_DEC_IOCTL_RESET _IO (JPEG_IOCTL_MAGIC, 7)
+#define JPEG_DEC_IOCTL_CHKSUM _IOWR (JPEG_IOCTL_MAGIC, 8, JpegDrvDecResult)
+#define JPEG_DEC_IOCTL_BREAK _IO (JPEG_IOCTL_MAGIC, 9)
+#define JPEG_DEC_IOCTL_RW_REG _IO (JPEG_IOCTL_MAGIC, 10)
+#define JPEG_DEC_IOCTL_RESUME _IOW (JPEG_IOCTL_MAGIC, 11, JPEG_DEC_CONFIG_ROW)
+
+#define JPEG_DEC_IOCTL_FLUSH_CMDQ _IOW (JPEG_IOCTL_MAGIC, 17, JPEG_DEC_CONFIG_CMDQ)
+
+#define JPEG_DEC_IOCTL_DUMP_REG _IO (JPEG_IOCTL_MAGIC, 30)
+//#define JPEG_DEC_IOCTL_MAN_GDMA _IOW (JPEG_IOCTL_MAGIC, 31, unsigned char)
+
+
+
+///////////////////// JPEG ENC IOCTL /////////////////////////////////////
+
+
+#define JPEG_ENC_IOCTL_INIT _IO (JPEG_IOCTL_MAGIC, 11)
+#define JPEG_ENC_IOCTL_CONFIG _IOW (JPEG_IOCTL_MAGIC, 12, JPEG_ENC_DRV_IN)
+#define JPEG_ENC_IOCTL_WAIT _IOWR(JPEG_IOCTL_MAGIC, 13, JPEG_ENC_DRV_OUT)
+#define JPEG_ENC_IOCTL_DEINIT _IO (JPEG_IOCTL_MAGIC, 14)
+#define JPEG_ENC_IOCTL_START _IO (JPEG_IOCTL_MAGIC, 15)
+
+
+#define JPEG_ENC_IOCTL_WARM_RESET _IO(JPEG_IOCTL_MAGIC, 20)
+#define JPEG_ENC_IOCTL_DUMP_REG _IO(JPEG_IOCTL_MAGIC, 21)
+#define JPEG_ENC_IOCTL_RW_REG _IO(JPEG_IOCTL_MAGIC, 22)
+
+
+#endif
+
diff --git a/kernel-headers/mt_smi.h b/kernel-headers/mt_smi.h
new file mode 100755
index 0000000..c425ee2
--- /dev/null
+++ b/kernel-headers/mt_smi.h
@@ -0,0 +1,189 @@
+#ifndef _MTK_SMI_H_
+#define _MTK_SMI_H_
+
+#define MTK_SMI_MAJOR_NUMBER 190
+
+#define MTK_IOW(num, dtype) _IOW('O', num, dtype)
+#define MTK_IOR(num, dtype) _IOR('O', num, dtype)
+#define MTK_IOWR(num, dtype) _IOWR('O', num, dtype)
+#define MTK_IO(num) _IO('O', num)
+
+/* -------------------------------------------------------------------------- */
+#define MTK_CONFIG_MM_MAU MTK_IOW(10, unsigned long)
+
+
+typedef struct {
+ int larb; /* 0~4: the larb you want to monitor */
+ int entry; /* 0~2: the mau entry to use */
+ unsigned int port_msk; /* port mask to be monitored */
+ int virt; /* 1: monitor va (this port is using m4u); */
+ /* 0: monitor pa (this port is not using m4u) */
+ int monitor_read; /* monitor read transaction 1-enable, 0-disable */
+ int monitor_write; /* monitor write transaction 1-enable, 0-disable */
+ unsigned int start; /* start address to monitor */
+ unsigned int end; /* end address to monitor */
+} MTK_MAU_CONFIG;
+
+
+int mau_config(MTK_MAU_CONFIG* pMauConf);
+int mau_dump_status(int larb);
+
+
+/* --------------------------------------------------------------------------- */
+typedef enum {
+ SMI_BWC_SCEN_NORMAL,
+ SMI_BWC_SCEN_VR,
+ SMI_BWC_SCEN_SWDEC_VP,
+ SMI_BWC_SCEN_VP,
+ SMI_BWC_SCEN_VR_SLOW,
+ SMI_BWC_SCEN_MM_GPU,
+ SMI_BWC_SCEN_WFD,
+ SMI_BWC_SCEN_VENC,
+ SMI_BWC_SCEN_ICFP,
+ SMI_BWC_SCEN_UI_IDLE,
+ SMI_BWC_SCEN_VSS,
+ SMI_BWC_SCEN_FORCE_MMDVFS,
+ SMI_BWC_SCEN_CNT
+} MTK_SMI_BWC_SCEN;
+
+/* MMDVFS */
+typedef enum {
+ MMDVFS_VOLTAGE_DEFAULT,
+ MMDVFS_VOLTAGE_0 = MMDVFS_VOLTAGE_DEFAULT,
+ MMDVFS_VOLTAGE_LOW = MMDVFS_VOLTAGE_0,
+ MMDVFS_VOLTAGE_1,
+ MMDVFS_VOLTAGE_HIGH = MMDVFS_VOLTAGE_1,
+ MMDVFS_VOLTAGE_DEFAULT_STEP,
+ MMDVFS_VOLTAGE_COUNT
+} mmdvfs_voltage_enum;
+
+typedef struct {
+ int scenario;
+ int b_on_off; /* 0 : exit this scenario , 1 : enter this scenario */
+} MTK_SMI_BWC_CONFIG;
+
+typedef struct
+{
+ unsigned int* hwc_max_pixel; //0 : exit this scenario , 1 : enter this scenario
+} MTK_SMI_BWC_STATE;
+
+typedef struct {
+ unsigned int address;
+ unsigned int value;
+} MTK_SMI_BWC_REGISTER_SET;
+
+typedef struct {
+ unsigned int address;
+ unsigned int *return_address;
+} MTK_SMI_BWC_REGISTER_GET;
+
+#define MMDVFS_CAMERA_MODE_FLAG_DEFAULT 1
+#define MMDVFS_CAMERA_MODE_FLAG_PIP (1 << 1)
+#define MMDVFS_CAMERA_MODE_FLAG_VFB (1 << 2)
+#define MMDVFS_CAMERA_MODE_FLAG_EIS_2_0 (1 << 3)
+#define MMDVFS_CAMERA_MODE_FLAG_IVHDR (1 << 4)
+
+typedef struct {
+ unsigned int type;
+ MTK_SMI_BWC_SCEN scen;
+
+ unsigned int sensor_size;
+ unsigned int sensor_fps;
+ unsigned int camera_mode;
+
+ unsigned int venc_size;
+
+ unsigned int ret;
+} MTK_MMDVFS_CMD;
+
+#define MTK_MMDVFS_CMD_TYPE_SET 0
+#define MTK_MMDVFS_CMD_TYPE_QUERY 1
+
+typedef enum {
+ SMI_BWC_INFO_CON_PROFILE = 0,
+ SMI_BWC_INFO_SENSOR_SIZE,
+ SMI_BWC_INFO_VIDEO_RECORD_SIZE,
+ SMI_BWC_INFO_DISP_SIZE,
+ SMI_BWC_INFO_TV_OUT_SIZE,
+ SMI_BWC_INFO_FPS,
+ SMI_BWC_INFO_VIDEO_ENCODE_CODEC,
+ SMI_BWC_INFO_VIDEO_DECODE_CODEC,
+ SMI_BWC_INFO_HW_OVL_LIMIT,
+ SMI_BWC_INFO_CNT
+} MTK_SMI_BWC_INFO_ID;
+
+typedef struct {
+ int property;
+ int value1;
+ int value2;
+} MTK_SMI_BWC_INFO_SET;
+
+
+typedef struct {
+ unsigned int flag; /* Reserved */
+ int concurrent_profile;
+ int sensor_size[2];
+ int video_record_size[2];
+ int display_size[2];
+ int tv_out_size[2];
+ int fps;
+ int video_encode_codec;
+ int video_decode_codec;
+ int hw_ovl_limit;
+} MTK_SMI_BWC_MM_INFO;
+
+
+#define MTK_IOC_SPC_CONFIG MTK_IOW(20, unsigned long)
+#define MTK_IOC_SPC_DUMP_REG MTK_IOW(21, unsigned long)
+#define MTK_IOC_SPC_DUMP_STA MTK_IOW(22, unsigned long)
+#define MTK_IOC_SPC_CMD MTK_IOW(23, unsigned long)
+#define MTK_IOC_SMI_BWC_CONFIG MTK_IOW(24, MTK_SMI_BWC_CONFIG)
+#define MTK_IOC_SMI_BWC_STATE MTK_IOWR(25, MTK_SMI_BWC_STATE)
+#define MTK_IOC_SMI_BWC_REGISTER_SET MTK_IOWR(26, MTK_SMI_BWC_REGISTER_SET)
+#define MTK_IOC_SMI_BWC_REGISTER_GET MTK_IOWR(27, MTK_SMI_BWC_REGISTER_GET)
+
+/* For BWC.MM property setting */
+#define MTK_IOC_SMI_BWC_INFO_SET MTK_IOWR(28, MTK_SMI_BWC_INFO_SET)
+/* For BWC.MM property get */
+#define MTK_IOC_SMI_BWC_INFO_GET MTK_IOWR(29, MTK_SMI_BWC_MM_INFO)
+
+/* GMP end */
+
+#define MTK_IOC_SMI_DUMP_LARB MTK_IOWR(66, unsigned int)
+#define MTK_IOC_SMI_DUMP_COMMON MTK_IOWR(67, unsigned int)
+#define MTK_IOC_MMDVFS_CMD MTK_IOW(88, MTK_MMDVFS_CMD)
+
+
+typedef enum {
+ SPC_PROT_NO_PROT = 0,
+ SPC_PROT_SEC_RW_ONLY,
+ SPC_PROT_SEC_RW_NONSEC_R,
+ SPC_PROT_NO_ACCESS,
+
+}SPC_PROT_T;
+
+
+typedef struct {
+ SPC_PROT_T domain_0_prot;
+ SPC_PROT_T domain_1_prot;
+ SPC_PROT_T domain_2_prot;
+ SPC_PROT_T domain_3_prot;
+ unsigned int start; /* start address to monitor */
+ unsigned int end; /* end address to monitor */
+} MTK_SPC_CONFIG;
+
+void spc_config(MTK_SPC_CONFIG* pCfg);
+unsigned int spc_status_check(void);
+unsigned int spc_dump_reg(void);
+unsigned int spc_register_isr(void* dev);
+unsigned int spc_clear_irq(void);
+int spc_test(int code);
+int MTK_SPC_Init(void* dev);
+
+#define MMDVFS_ENABLE_DEFAULT_STEP_QUERY
+#define MMDVFS_MMCLOCK_NOTIFICATION
+/* MMDVFS kernel API */
+extern int mmdvfs_set_step(MTK_SMI_BWC_SCEN scenario, mmdvfs_voltage_enum step);
+extern int mmdvfs_is_default_step_need_perf(void);
+extern void mmdvfs_mm_clock_switch_notify(int is_before, int is_to_high);
+#endif
diff --git a/kernel-headers/videocodec_kernel_driver.h b/kernel-headers/videocodec_kernel_driver.h
new file mode 100755
index 0000000..20d785c
--- /dev/null
+++ b/kernel-headers/videocodec_kernel_driver.h
@@ -0,0 +1,48 @@
+#ifndef __MT6589_VCODEC_H__
+#define __MT6589_VCODEC_H__
+
+#define MFV_IOC_MAGIC 'M'
+
+//below is control message
+#define MFV_TEST_CMD _IO(MFV_IOC_MAGIC, 0x00)
+#define MFV_INIT_CMD _IO(MFV_IOC_MAGIC, 0x01)
+#define MFV_DEINIT_CMD _IO(MFV_IOC_MAGIC, 0x02)
+#define MFV_SET_CMD_CMD _IOW(MFV_IOC_MAGIC, 0x03, unsigned int) //P_MFV_DRV_CMD_QUEUE_T
+#define MFV_SET_PWR_CMD _IOW(MFV_IOC_MAGIC, 0x04, unsigned int) //HAL_POWER_T *
+#define MFV_SET_ISR_CMD _IOW(MFV_IOC_MAGIC, 0x05, unsigned int) //HAL_ISR_T *
+#define MFV_ALLOC_MEM_CMD _IOW(MFV_IOC_MAGIC, 0x06, unsigned int)
+#define MFV_FREE_MEM_CMD _IOW(MFV_IOC_MAGIC, 0x07, unsigned int)
+#define MFV_MAKE_PMEM_TO_NONCACHED _IOW(MFV_IOC_MAGIC, 0x08, unsigned int) //unsigned int*
+#define MFV_ALLOC_INT_MEM_CMD _IOW(MFV_IOC_MAGIC, 0x09, unsigned int) //VAL_INTMEM_T*
+#define MFV_FREE_INT_MEM_CMD _IOW(MFV_IOC_MAGIC, 0x0a, unsigned int)//VAL_INTMEM_T*
+#define VCODEC_WAITISR _IOW(MFV_IOC_MAGIC, 0x0b, unsigned int)//HAL_POWER_T *
+#define VCODEC_LOCKHW _IOW(MFV_IOC_MAGIC, 0x0d, unsigned int)//VAL_HW_LOCK_T *
+#define VCODEC_PMEM_FLUSH _IOW(MFV_IOC_MAGIC, 0x10, unsigned int)//HAL_POWER_T *
+#define VCODEC_PMEM_CLEAN _IOW(MFV_IOC_MAGIC, 0x11, unsigned int)//HAL_POWER_T *
+#define VCODEC_INC_SYSRAM_USER _IOW(MFV_IOC_MAGIC, 0x13, unsigned int)//VAL_UINT32_T *
+#define VCODEC_DEC_SYSRAM_USER _IOW(MFV_IOC_MAGIC, 0x14, unsigned int)//VAL_UINT32_T *
+#define VCODEC_INC_ENC_EMI_USER _IOW(MFV_IOC_MAGIC, 0x15, unsigned int)//VAL_UINT32_T *
+#define VCODEC_DEC_ENC_EMI_USER _IOW(MFV_IOC_MAGIC, 0x16, unsigned int)//VAL_UINT32_T *
+#define VCODEC_INC_DEC_EMI_USER _IOW(MFV_IOC_MAGIC, 0x17, unsigned int)//VAL_UINT32_T *
+#define VCODEC_DEC_DEC_EMI_USER _IOW(MFV_IOC_MAGIC, 0x18, unsigned int)//VAL_UINT32_T *
+#define VCODEC_INITHWLOCK _IOW(MFV_IOC_MAGIC, 0x20, unsigned int)//VAL_VCODEC_OAL_HW_REGISTER_T *
+#define VCODEC_DEINITHWLOCK _IOW(MFV_IOC_MAGIC, 0x21, unsigned int)//VAL_VCODEC_OAL_HW_REGISTER_T *
+#define VCODEC_ALLOC_NON_CACHE_BUFFER _IOW(MFV_IOC_MAGIC, 0x22, unsigned int)//VAL_MEMORY_T *
+#define VCODEC_FREE_NON_CACHE_BUFFER _IOW(MFV_IOC_MAGIC, 0x23, unsigned int)//VAL_MEMORY_T *
+#define VCODEC_SET_THREAD_ID _IOW(MFV_IOC_MAGIC, 0x24, unsigned int)//VAL_VCODEC_THREAD_ID_T *
+#define VCODEC_SET_SYSRAM_INFO _IOW(MFV_IOC_MAGIC, 0x25, unsigned int)//VAL_INTMEM_T *
+#define VCODEC_GET_SYSRAM_INFO _IOW(MFV_IOC_MAGIC, 0x26, unsigned int)//VAL_INTMEM_T *
+#define VCODEC_INC_PWR_USER _IOW(MFV_IOC_MAGIC, 0x27, unsigned int)//HAL_POWER_T *
+#define VCODEC_DEC_PWR_USER _IOW(MFV_IOC_MAGIC, 0x28, unsigned int)//HAL_POWER_T *
+#define VCODEC_GET_CPU_LOADING_INFO _IOW(MFV_IOC_MAGIC, 0x29, unsigned int)//VAL_VCODEC_CPU_LOADING_INFO_T *
+#define VCODEC_GET_CORE_LOADING _IOW(MFV_IOC_MAGIC, 0x30, unsigned int)//VAL_VCODEC_CORE_LOADING_T *
+#define VCODEC_GET_CORE_NUMBER _IOW(MFV_IOC_MAGIC, 0x31, unsigned int)//int *
+#define VCODEC_SET_CPU_OPP_LIMIT _IOW(MFV_IOC_MAGIC, 0x32, unsigned int)//VAL_VCODEC_CPU_OPP_LIMIT_T *
+#define VCODEC_UNLOCKHW _IOW(MFV_IOC_MAGIC, 0x33, unsigned int)//VAL_HW_LOCK_T *
+#define VCODEC_MB _IOW(MFV_IOC_MAGIC, 0x34, unsigned int)//VAL_UINT32_T *
+#define VCODEC_SET_LOG_COUNT _IOW(MFV_IOC_MAGIC, 0x35, unsigned int)//VAL_BOOL_T *
+
+
+//#define MFV_GET_CACHECTRLADDR_CMD _IOR(MFV_IOC_MAGIC, 0x06, int)
+
+#endif //__MT6589_MFLEXVIDEO_H__
diff --git a/media_codecs.xml b/media_codecs.xml
new file mode 100755
index 0000000..6487008
--- /dev/null
+++ b/media_codecs.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright (C) 2012 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 MediaCodecs (Decoders,Encoders)>
+<!ELEMENT Decoders (MediaCodec*)>
+<!ELEMENT Encoders (MediaCodec*)>
+<!ELEMENT MediaCodec (Type*,Quirk*)>
+<!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.
+
+ 2012/07/13 config for MTK OMX Media Codecs, created by Morris Yang (mtk03147)
+-->
+
+<MediaCodecs>
+ <Settings>
+ <Setting name="max-video-encoder-input-buffers" value="10" />
+ </Settings>
+ <Include href="media_codecs_mediatek_audio.xml" />
+ <Include href="media_codecs_mediatek_video.xml" />
+ <Include href="media_codecs_google_audio.xml" />
+ <Include href="media_codecs_google_video_le.xml" />
+</MediaCodecs>
diff --git a/media_codecs_mediatek_audio.xml b/media_codecs_mediatek_audio.xml
new file mode 100755
index 0000000..a69d73a
--- /dev/null
+++ b/media_codecs_mediatek_audio.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright (C) 2012 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 MediaCodecs (Decoders,Encoders)>
+<!ELEMENT Decoders (MediaCodec*)>
+<!ELEMENT Encoders (MediaCodec*)>
+<!ELEMENT MediaCodec (Type*,Quirk*)>
+<!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.
+
+ 2012/07/13 config for MTK OMX Media Codecs, created by Morris Yang (mtk03147)
+-->
+
+<Included>
+ <Decoders>
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.MP3" >
+ <Type name="audio/mpeg" />
+ <Type name="audio/mpeg-L2" />
+ <Quirk name="decoder-lies-about-number-of-channels" />
+ <Quirk name="supports-multiple-frames-per-input-buffer" />
+ </MediaCodec>
+
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.ADPCM.MS" type="audio/x-adpcm-ms" />
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.ADPCM.DVI" type="audio/x-adpcm-dvi-ima" />
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.GSM" type="audio/gsm" />
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.RAW" type="audio/raw" />
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.G711.ALAW" type="audio/g711-alaw" >
+ <Quirk name="decoder-lies-about-number-of-channels" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.G711.MLAW" type="audio/g711-mlaw" >
+ <Quirk name="decoder-lies-about-number-of-channels" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.FLAC" type="audio/flac" />
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.WMA" type="audio/x-ms-wma" />
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.WMAPRO" type="audio/x-ms-wmapro" />
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.APE" type="audio/ape" >
+ <Quirk name="decoder-lies-about-number-of-channels" />
+ <Quirk name="supports-multiple-frames-per-input-buffer" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.AUDIO.DECODER.ALAC" type="audio/alac" />
+
+ <!-- DOLBY_UDC -->
+ <MediaCodec name="OMX.dolby.ac3.decoder" >
+ <Type name="audio/ac3" />
+ <Quirk name="needs-flush-before-disable" />
+ <Quirk name="requires-flush-complete-emulation" />
+ </MediaCodec>
+ <MediaCodec name="OMX.dolby.ec3.decoder" >
+ <Type name="audio/eac3" />
+ <Quirk name="needs-flush-before-disable" />
+ <Quirk name="requires-flush-complete-emulation" />
+ </MediaCodec>
+ <!-- DOLBY_UDC END -->
+ </Decoders>
+
+ <Encoders>
+ <MediaCodec name="OMX.MTK.AUDIO.ENCODER.VORBIS" type="audio/vorbis" />
+ <MediaCodec name="OMX.MTK.AUDIO.ENCODER.ADPCM.MS" type="audio/x-adpcm-ms" />
+ <MediaCodec name="OMX.MTK.AUDIO.ENCODER.ADPCM.DVI" type="audio/x-adpcm-dvi-ima" />
+ </Encoders>
+</Included>
diff --git a/media_codecs_mediatek_video.xml b/media_codecs_mediatek_video.xml
new file mode 100755
index 0000000..93b13bb
--- /dev/null
+++ b/media_codecs_mediatek_video.xml
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright (C) 2012 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 MediaCodecs (Decoders,Encoders)>
+<!ELEMENT Decoders (MediaCodec*)>
+<!ELEMENT Encoders (MediaCodec*)>
+<!ELEMENT MediaCodec (Type*,Quirk*)>
+<!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.
+
+ 2012/07/13 config for MTK OMX Media Codecs, created by Morris Yang (mtk03147)
+-->
+
+<Included>
+ <Decoders>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.MPEG2" type="video/mpeg2" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.HEVC" type="video/hevc" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Feature name="adaptive-playback"/>
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.HEVC.secure" type="video/hevc" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Feature name="secure-playback" required="true" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.MPEG4" type="video/mp4v-es" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Feature name="adaptive-playback"/>
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.H263" type="video/3gpp" >
+ <Limit name="size" min="128x96" max="1408x1152" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Feature name="adaptive-playback"/>
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.AVC" type="video/avc" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Quirk name="wants-NAL-fragments" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Feature name="adaptive-playback"/>
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.AVC.secure" type="video/avc" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Feature name="secure-playback" required="true" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.VPX" type="video/x-vnd.on2.vp8" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Feature name="adaptive-playback"/>
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.VP9" type="video/x-vnd.on2.vp9" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Feature name="adaptive-playback"/>
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.VC1" type="video/x-ms-wmv" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.DIVX" type="video/divx" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.DIVX3" type="video/divx3" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.XVID" type="video/xvid" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.S263" type="video/flv1" >
+ <Limit name="size" min="16x16" max="1920x1088" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ </Decoders>
+
+ <Encoders>
+ <MediaCodec name="OMX.MTK.VIDEO.ENCODER.MPEG4" type="video/mp4v-es" >
+ <Limit name="size" min="176x144" max="176x144" />
+ <Limit name="alignment" value="16x16" />
+ <Limit name="block-size" value="16x16" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.ENCODER.H263" type="video/3gpp" >
+ <Limit name="size" min="176x144" max="176x144" />
+ <Limit name="alignment" value="16x16" />
+ <Limit name="block-size" value="16x16" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.ENCODER.AVC" type="video/avc" >
+ <Limit name="size" min="128x96" max="1920x1080" />
+ <Limit name="alignment" value="16x16" />
+ <Limit name="block-size" value="16x16" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.ENCODER.HEVC" type="video/hevc" >
+ <Limit name="size" min="160x128" max="3840x2176" />
+ <Limit name="alignment" value="16x16" />
+ <Limit name="block-size" value="16x16" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.ENCODER.VPX" type="video/x-vnd.on2.vp8" >
+ <Limit name="size" min="64x64" max="1280x720" />
+ <Limit name="alignment" value="16x16" />
+ <Limit name="block-size" value="16x16" />
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Quirk name="avoid-memcpy-input-recording-frames" />
+ <Limit name="concurrent-instances" max="16" />
+ </MediaCodec>
+ </Encoders>
+</Included>
diff --git a/media_codecs_performance.xml b/media_codecs_performance.xml
new file mode 100755
index 0000000..945149c
--- /dev/null
+++ b/media_codecs_performance.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright (C) 2012 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 MediaCodecs (Decoders,Encoders)>
+<!ELEMENT Decoders (MediaCodec*)>
+<!ELEMENT Encoders (MediaCodec*)>
+<!ELEMENT MediaCodec (Type*,Quirk*)>
+<!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.
+
+ 2012/07/13 config for MTK OMX Media Codecs, created by Morris Yang (mtk03147)
+-->
+
+<MediaCodecs>
+ <Encoders>
+ <!-- MTK codec -->
+ <MediaCodec name="OMX.MTK.VIDEO.ENCODER.MPEG4" type="video/mp4v-es" update="true">
+ <Limit name="measured-frame-rate-176x144" range="235-818" />
+ <Limit name="measured-frame-rate-0352x0288" range="145-506" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.ENCODER.H263" type="video/3gpp" update="true">
+ <Limit name="measured-frame-rate-176x144" range="238-828" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.ENCODER.AVC" type="video/avc" update="true">
+ <Limit name="measured-frame-rate-320x240" range="161-561" />
+ <Limit name="measured-frame-rate-720x480" range="67-234" />
+ <Limit name="measured-frame-rate-1280x720" range="29-102" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.ENCODER.VPX" type="video/x-vnd.on2.vp8" update="true">
+ <Limit name="measured-frame-rate-1280x720" range="20-71" />
+ </MediaCodec>
+ <!-- Google codec -->
+ <MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es" update="true">
+ <Limit name="measured-frame-rate-176x144" range="188-653" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.h263.encoder" type="video/3gpp" update="true">
+ <Limit name="measured-frame-rate-176x144" range="165-573" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.h264.encoder" type="video/avc" update="true">
+ <Limit name="measured-frame-rate-320x240" range="104-361" />
+ <Limit name="measured-frame-rate-720x480" range="27-95" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
+ <Limit name="measured-frame-rate-320x240" range="109-379" />
+ <Limit name="measured-frame-rate-640x360" range="45-156" />
+ </MediaCodec>
+ </Encoders>
+ <Decoders>
+ <!-- MTK codec -->
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.MPEG4" type="video/mp4v-es" update="true">
+ <Limit name="measured-frame-rate-480x360" range="136-474" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.H263" type="video/3gpp" update="true">
+ <Limit name="measured-frame-rate-176x144" range="136-474" />
+ <Limit name="measured-frame-rate-352x288" range="120-419" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.AVC" type="video/avc" update="true">
+ <Limit name="measured-frame-rate-320x240" range="186-646" />
+ <Limit name="measured-frame-rate-720x480" range="124-433" />
+ <Limit name="measured-frame-rate-1280x720" range="74-256" />
+ <Limit name="measured-frame-rate-1920x1080" range="26-90" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.HEVC" type="video/hevc" update="true">
+ <Limit name="measured-frame-rate-352x288" range="177-615" />
+ <Limit name="measured-frame-rate-720x480" range="142-494" />
+ <Limit name="measured-frame-rate-1280x720" range="75-262" />
+ <Limit name="measured-frame-rate-1920x1080" range="38-132" />
+ <Limit name="measured-frame-rate-3840x2160" range="14-48" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.VPX" type="video/x-vnd.on2.vp8" update="true">
+ <Limit name="measured-frame-rate-320x240" range="158-549" />
+ <Limit name="measured-frame-rate-640x360" range="91-315" />
+ <Limit name="measured-frame-rate-1280x720" range="32-112" />
+ <Limit name="measured-frame-rate-1920x1080" range="23-79" />
+ </MediaCodec>
+ <MediaCodec name="OMX.MTK.VIDEO.DECODER.VP9" type="video/x-vnd.on2.vp9" update="true">
+ <Limit name="measured-frame-rate-320x240" range="87-304" />
+ <Limit name="measured-frame-rate-640x360" range="92-321" />
+ <Limit name="measured-frame-rate-1280x720" range="40-138" />
+ <Limit name="measured-frame-rate-1920x1080" range="23-79" />
+ <Limit name="measured-frame-rate-3840x2160" range="7-25" />
+ </MediaCodec>
+ <!-- Google codec -->
+ <MediaCodec name="OMX.google.h263.decoder" type="video/3gpp" update="true">
+ <Limit name="measured-frame-rate-176x144" range="204-708" />
+ <Limit name="measured-frame-rate-352x288" range="178-618" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.h264.decoder" type="video/avc" update="true">
+ <Limit name="measured-frame-rate-320x240" range="183-636" />
+ <Limit name="measured-frame-rate-720x480" range="45-156" />
+ <Limit name="measured-frame-rate-1280x720" range="28-96" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.hevc.decoder" type="video/hevc" update="true">
+ <Limit name="measured-frame-rate-352x288" range="182-634" />
+ <Limit name="measured-frame-rate-720x480" range="81-282" />
+ <Limit name="measured-frame-rate-1280x720" range="25-86" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.vp8.decoder" type="video/x-vnd.on2.vp8" update="true">
+ <Limit name="measured-frame-rate-320x240" range="288-1003" />
+ <Limit name="measured-frame-rate-640x360" range="103-359" />
+ <Limit name="measured-frame-rate-1280x720" range="20-68" />
+ <Limit name="measured-frame-rate-1920x1080" range="14-50" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
+ <Limit name="measured-frame-rate-320x240" range="144-502" />
+ <Limit name="measured-frame-rate-640x360" range="109-378" />
+ <Limit name="measured-frame-rate-1280x720" range="30-104" />
+ </MediaCodec>
+ </Decoders>
+</MediaCodecs>
diff --git a/meta_init.modem.rc b/meta_init.modem.rc
new file mode 100755
index 0000000..495819d
--- /dev/null
+++ b/meta_init.modem.rc
@@ -0,0 +1,59 @@
+# Copyright (C) 2012 The Android Open Source Project
+#
+# IMPORTANT: Do not create world writable files or directories.
+# This is a common source of Android security bugs.
+#
+
+on post-fs-data
+
+ write /proc/bootprof "post-fs-data: on meta modem start"
+
+ # Modem related device nodes
+ mkdir /data/nvram/md 0770 root system
+ mkdir /data/nvram/md3 0770 root system
+ mkdir /data/md3 0770 root system
+
+# Build-in Modified - S
+# insmod /system/lib/modules/ccci_plat.ko
+# insmod /system/lib/modules/ccci.ko
+# Build-in Modified - E
+ chown radio radio /sys/kernel/ccci/boot
+
+#SeLinux
+ mkdir /data/ccci_cfg 0770 system radio
+ restorecon /data/ccci_cfg
+ restorecon_recursive /protect_f
+ restorecon_recursive /protect_s
+
+ # Encrypt phone function
+ setprop vold.post_fs_data_done 1
+
+service permission_check /system/bin/permission_check
+ user root
+ group system radio
+ oneshot
+
+service ccci_fsd /system/bin/ccci_fsd 0
+ user radio
+ group radio system
+ oneshot
+
+service ccci_mdinit /system/bin/ccci_mdinit 0
+ user system
+ group radio system
+ oneshot
+
+service ccci3_fsd /system/bin/ccci_fsd 2
+ user radio
+ group radio system
+ oneshot
+
+service ccci3_mdinit /system/bin/ccci_mdinit 2
+ user system
+ group radio system
+ oneshot
+
+service ccci_rpcd /system/bin/ccci_rpcd 0
+ user radio
+ group radio system
+ oneshot
diff --git a/meta_init.rc b/meta_init.rc
new file mode 100755
index 0000000..4356f35
--- /dev/null
+++ b/meta_init.rc
@@ -0,0 +1,457 @@
+# Copyright (C) 2012 The Android Open Source Project
+#
+# IMPORTANT: Do not create world writable files or directories.
+# This is a common source of Android security bugs.
+#
+import /init.environ.rc
+import init.fon.rc
+import init.aee.rc
+import init.trustonic.rc
+import meta_init.connectivity.rc
+import meta_init.project.rc
+#Make sure meta_init.modem.rc is the last rc file.
+import meta_init.modem.rc
+import init.microtrust.rc
+
+on early-init
+ # Set init and its forked children's oom_adj.
+ write /proc/1/oom_score_adj -1000
+
+ # Set the security context of /adb_keys if present.
+ restorecon /adb_keys
+
+ start ueventd
+
+#INTERNAL_START
+ mount debugfs debugfs /sys/kernel/debug
+ chmod 0755 /sys/kernel/debug
+#INTERNAL_END
+
+on init
+ sysclktz 0
+
+loglevel 5
+ write /proc/bootprof "INIT: on init start"
+
+# Backward compatibility
+ symlink /system/etc /etc
+ symlink /sys/kernel/debug /d
+
+# Right now vendor lives on the same filesystem as system,
+# but someday that may change.
+ symlink /system/vendor /vendor
+
+# Temp Backward compatibility
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/boot /dev/bootimg
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/recovery /dev/recovery
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/secro /dev/sec_ro
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/kb /dev/kb
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/dkb /dev/dkb
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/seccfg /dev/seccfg
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/proinfo /dev/pro_info
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/nvram /dev/nvram
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/para /dev/misc
+ symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/logo /dev/logo
+# Create cgroup mount point for cpu accounting
+ mkdir /acct
+ mount cgroup none /acct cpuacct
+ mkdir /acct/uid
+
+ mkdir /system
+ mkdir /data 0771 system system
+ mkdir /cache 0770 system cache
+ mkdir /config 0500 root root
+
+
+ # Mount staging areas for devices managed by vold
+ # See storage config details at http://source.android.com/tech/storage/
+ mkdir /mnt 0755 root system
+ mount tmpfs tmpfs /mnt mode=0755,uid=0,gid=1000
+ restorecon_recursive /mnt
+
+ mkdir /mnt/secure 0700 root root
+ mkdir /mnt/secure/asec 0700 root root
+ mkdir /mnt/asec 0755 root system
+ mkdir /mnt/obb 0755 root system
+ mkdir /mnt/media_rw 0750 root media_rw
+ mkdir /mnt/user 0755 root root
+ mkdir /mnt/user/0 0755 root root
+ mkdir /mnt/expand 0771 system system
+
+ # Storage views to support runtime permissions
+ mkdir /storage 0755 root root
+ mkdir /mnt/runtime 0700 root root
+ mkdir /mnt/runtime/default 0755 root root
+ mkdir /mnt/runtime/default/self 0755 root root
+ mkdir /mnt/runtime/read 0755 root root
+ mkdir /mnt/runtime/read/self 0755 root root
+ mkdir /mnt/runtime/write 0755 root root
+ mkdir /mnt/runtime/write/self 0755 root root
+
+ # Symlink to keep legacy apps working in multi-user world
+ symlink /storage/self/primary /sdcard
+ symlink /mnt/user/0/primary /mnt/runtime/default/self/primary
+
+ write /proc/sys/kernel/panic_on_oops 1
+ write /proc/sys/kernel/hung_task_timeout_secs 0
+ write /proc/cpu/alignment 4
+ write /proc/sys/kernel/sched_latency_ns 10000000
+ write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
+ write /proc/sys/kernel/sched_compat_yield 1
+
+#INTERNAL_START
+ mkdir /protect_f 0771 system system
+ mkdir /protect_s 0771 system system
+ symlink /sdcard /mnt/sdcard
+ #Create nvdata mount point
+ mkdir /nvdata 0771 system system
+ mkdir /nvcfg 0771 system system
+
+ #Create CIP mount point
+ mkdir /custom
+
+ mkdir /mnt/cd-rom 0000 system system
+#INTERNAL_END
+# Healthd can trigger a full boot from charger mode by signaling this
+# property when the power button is held.
+on property:sys.boot_from_charger_mode=1
+ class_stop charger
+ trigger late-init
+
+# Load properties from /system/ + /factory after fs mount.
+on load_all_props_action
+ load_all_props
+ start logd
+ start logd-reinit
+
+# Mount filesystems and start core system services.
+on late-init
+ trigger early-fs
+ trigger fs
+ trigger post-fs
+ trigger post-fs-data
+
+ # Load properties from /system/ + /factory after fs mount. Place
+ # this in another action so that the load will be scheduled after the prior
+ # issued fs triggers have completed.
+ trigger load_all_props_action
+
+ trigger early-boot
+ trigger boot
+
+on fs
+ mkdir /dev/usb-ffs 0770 shell shell
+ mkdir /dev/usb-ffs/adb 0770 shell shell
+ mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
+ write /sys/class/android_usb/android0/f_ffs/aliases adb
+#INTERNAL_START
+ write /proc/bootprof "INIT:Mount_START"
+ mount_all /fstab.mt6797
+ write /proc/bootprof "INIT:Mount_END"
+#INTERNAL_END
+
+on post-fs
+ start logd
+ # once everything is setup, no need to modify /
+ mount rootfs rootfs / ro remount
+ # Mount shared so changes propagate into child namespaces
+ mount rootfs rootfs / shared rec
+ # Mount default storage into root namespace
+ mount none /mnt/runtime/default /storage slave bind rec
+ # Support legacy paths
+ symlink /sdcard /storage/sdcard0
+
+ # We chown/chmod /cache again so because mount is run as root + defaults
+ chown system cache /cache
+ chmod 0770 /cache
+ # We restorecon /cache in case the cache partition has been reset.
+ restorecon_recursive /cache
+
+ #change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks
+ chown root system /proc/kmsg
+ chmod 0440 /proc/kmsg
+ chown root system /proc/sysrq-trigger
+ chmod 0220 /proc/sysrq-trigger
+ chown system log /proc/last_kmsg
+ chmod 0440 /proc/last_kmsg
+
+ # make the selinux kernel policy world-readable
+ chmod 0444 /sys/fs/selinux/policy
+
+ # create the lost+found directories, so as to enforce our permissions
+ mkdir /cache/lost+found 0770 root root
+
+#INTERNAL_START
+ chown system system /protect_f
+ chmod 0770 /protect_f
+
+ chown system system /protect_s
+ chmod 0770 /protect_s
+
+ chown system system /nvcfg
+ chmod 0771 /nvcfg
+ restorecon_recursive /nvcfg
+#INTERNAL_END
+
+on post-fs-data
+ # We chown/chmod /data again so because mount is run as root + defaults
+ chown system system /data
+ chmod 0771 /data
+ # We restorecon /data in case the userdata partition has been reset.
+ restorecon /data
+ # Make sure we have the device encryption key
+ start logd
+ start vold
+ installkey /data
+
+ # create basic filesystem structure
+ #mkdir /data/nvram 2770 root system
+ # We chown/chmod /nvdata again so because mount is run as root + defaults
+ chown root system /nvdata
+ chmod 0771 /nvdata
+ symlink /nvdata /data/nvram
+ mkdir /nvdata/media 0771 media audio
+
+ #Create cct mount point
+ mkdir /data/cct
+ chown root system /data/cct
+ chmod 0771 /data/cct
+
+ # Set SELinux security contexts on upgrade or policy update.
+ restorecon_recursive /nvdata
+
+
+ mkdir /data/misc 01771 system misc
+ mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth
+ mkdir /data/misc/bluetooth 0770 system system
+ mkdir /data/misc/keystore 0700 keystore keystore
+ mkdir /data/misc/keychain 0771 system system
+ mkdir /data/misc/vpn 0770 system vpn
+ mkdir /data/misc/systemkeys 0700 system system
+ # give system access to wpa_supplicant.conf for backup and restore
+ mkdir /data/misc/wifi 0770 wifi wifi
+ chmod 0660 /data/misc/wifi/wpa_supplicant.conf
+ chmod 0660 /data/misc/wifi/p2p_supplicant.conf
+ mkdir /data/local 0751 root root
+ # For security reasons, /data/local/tmp should always be empty.
+ # Do not place files or directories in /data/local/tmp
+ mkdir /data/local/tmp 0771 shell shell
+ mkdir /data/data 0771 system system
+ mkdir /data/app-private 0771 system system
+ mkdir /data/app-asec 0700 root root
+ mkdir /data/app 0771 system system
+ mkdir /data/property 0700 root root
+ mkdir /data/ssh 0750 root shell
+ mkdir /data/ssh/empty 0700 root root
+
+ # create the lost+found directories, so as to enforce our permissions
+ mkdir /data/lost+found 0770 root root
+ mkdir /data/adb 0700 root root
+
+ # double check the perms, in case lost+found already exists, and set owner
+ chown root root /data/lost+found
+ chmod 0770 /data/lost+found
+
+ # Separate location for storing security policy files on data
+ mkdir /data/security 0711 system system
+
+ # Reload policy from /data/security if present.
+ setprop selinux.reload_policy 1
+
+ # Set SELinux security contexts on upgrade or policy update.
+ restorecon_recursive /data
+
+ # If there is no fs-post-data action in the init.<device>.rc file, you
+ # must uncomment this line, otherwise encrypted filesystems
+ # won't work.
+ # Set indication (checked by vold) that we have finished this action
+ # setprop vold.post_fs_data_done 1
+#INTERNAL_START
+ # WiFi
+ mkdir /data/misc/wifi 0770 system wifi
+ mkdir /data/misc/wifi/sockets 0770 system wifi
+ mkdir /data/misc/dhcp 0770 dhcp dhcp
+ chown dhcp dhcp /data/misc/dhcp
+ chmod 0660 /sys/class/rfkill/rfkill1/state
+ chown system system /sys/class/rfkill/rfkill1/state
+ # Turn off wifi by default
+ write /sys/class/rfkill/rfkill1/state 0
+
+ # RTC
+ mkdir /data/misc/rtc 0770 system system
+
+ # Android SEC related device nodes
+ chmod 0660 /dev/sec
+ chown root system /dev/sec
+
+ #change partition permission
+ exec /system/etc/partition_permission.sh
+
+ chmod 0666 /dev/exm0
+#INTERNAL_END
+
+on boot
+
+
+# basic network init
+ ifup lo
+ hostname localhost
+ domainname localdomain
+
+#INTERNAL_START
+ class_start default
+#INTERNAL_END
+ class_start core
+
+on nonencrypted
+ class_start main
+ class_start late_start
+
+on property:vold.decrypt=trigger_default_encryption
+ start defaultcrypto
+
+on property:vold.decrypt=trigger_encryption
+ start surfaceflinger
+ start encrypt
+
+on property:sys.init_log_level=*
+ loglevel ${sys.init_log_level}
+
+on property:vold.decrypt=trigger_reset_main
+ class_reset main
+
+on property:vold.decrypt=trigger_load_persist_props
+ load_persist_props
+ start logd
+ start logd-reinit
+
+on property:vold.decrypt=trigger_post_fs_data
+ trigger post-fs-data
+
+on property:vold.decrypt=trigger_restart_min_framework
+ class_start main
+
+on property:vold.decrypt=trigger_restart_framework
+ start nvram_daemon
+ class_start main
+ class_start late_start
+ start permission_check
+
+on property:vold.decrypt=trigger_shutdown_framework
+ class_reset late_start
+ class_reset main
+
+on property:sys.powerctl=*
+ powerctl ${sys.powerctl}
+## Daemon processes to be run by init.
+##
+service ueventd /sbin/ueventd
+ class core
+ critical
+ seclabel u:r:ueventd:s0
+
+service logd /system/bin/logd
+ class core
+ socket logd stream 0666 logd logd
+ socket logdr seqpacket 0666 logd logd
+ socket logdw dgram 0222 logd logd
+
+service logd-reinit /system/bin/logd --reinit
+ oneshot
+ disabled
+
+service console /system/bin/sh
+ class core
+ console
+ disabled
+ user shell
+ seclabel u:r:shell:s0
+
+on property:ro.debuggable=1
+ start console
+
+# adbd is controlled via property triggers in init.<platform>.usb.rc
+service adbd /sbin/adbd --root_seclabel=u:r:su:s0
+ class core
+ socket adbd stream 660 system system
+ disabled
+ seclabel u:r:adbd:s0
+
+service vold /system/bin/vold \
+ --blkid_context=u:r:blkid:s0 --blkid_untrusted_context=u:r:blkid_untrusted:s0 \
+ --fsck_context=u:r:fsck:s0 --fsck_untrusted_context=u:r:fsck_untrusted:s0
+ class core
+ socket vold stream 0660 root mount
+ socket cryptd stream 0660 root mount
+ ioprio be 2
+service debuggerd /system/bin/debuggerd
+ class main
+
+service debuggerd64 /system/bin/debuggerd64
+ class main
+
+# One shot invocation to deal with encrypted volume.
+service defaultcrypto /system/bin/vdc --wait cryptfs mountdefaultencrypted
+ disabled
+ oneshot
+ # vold will set vold.decrypt to trigger_restart_framework (default
+ # encryption) or trigger_restart_min_framework (other encryption)
+
+# One shot invocation to encrypt unencrypted volumes
+service encrypt /system/bin/vdc --wait cryptfs enablecrypto inplace default
+ disabled
+ oneshot
+ # vold will set vold.decrypt to trigger_restart_framework (default
+ # encryption)
+
+on property:persist.logd.logpersistd=logcatd
+ # all exec/services are called with umask(077), so no gain beyond 0700
+ mkdir /data/misc/logd 0700 logd log
+ # logd for write to /data/misc/logd, log group for read from pstore (-L)
+ exec - logd log -- /system/bin/logcat -L -b all -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 64 -n 256
+ start logcatd
+
+service logcatd /system/bin/logcat -b all -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 64 -n 256
+ class late_start
+ disabled
+ # logd for write to /data/misc/logd, log group for read from log daemon
+ user logd
+ group log
+
+
+#INTERNAL_START
+service meta_tst /system/bin/meta_tst
+
+service nvram_daemon /system/bin/nvram_daemon
+ class main
+ user root
+ group system
+ oneshot
+
+
+service mobile_log_d /system/bin/mobile_log_d
+ class main
+
+
+#mass_storage,adb,acm
+on property:ro.boot.usbconfig=0
+ write /sys/class/android_usb/android0/iSerial $ro.serialno
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor 0e8d
+ write /sys/class/android_usb/android0/idProduct 2006
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions mass_storage,adb,acm
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+
+#acm
+on property:ro.boot.usbconfig=1
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/iSerial " "
+ write /sys/class/android_usb/android0/idVendor 0e8d
+ write /sys/class/android_usb/android0/idProduct 2007
+ write /sys/class/android_usb/android0/f_acm/instances 1
+ write /sys/class/android_usb/android0/functions acm
+ write /sys/class/android_usb/android0/bDeviceClass 02
+ write /sys/class/android_usb/android0/enable 1
+#INTERNAL_END
diff --git a/mtk_clear_motion.cfg b/mtk_clear_motion.cfg
new file mode 100755
index 0000000..4398fa8
--- /dev/null
+++ b/mtk_clear_motion.cfg
@@ -0,0 +1,8 @@
+FLUENCY_LEVEL 255
+MAX_WIDTH 1920
+MAX_HEIGHT 1088
+MIN_WIDTH 256
+MIN_HEIGHT 120
+MIN_FRAMERATE 12
+MAX_FRAMERATE 35
+OUTPUT_FRAMERATE 120
diff --git a/mtk_omx_core.cfg b/mtk_omx_core.cfg
new file mode 100755
index 0000000..1fa2f28
--- /dev/null
+++ b/mtk_omx_core.cfg
@@ -0,0 +1,36 @@
+OMX.MTK.VIDEO.DECODER.HEVC video_decoder.hevc libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.HEVC.secure video_decoder.hevc libMtkOmxVdecEx.so 1
+OMX.MTK.VIDEO.DECODER.MPEG2 video_decoder.mpeg2 libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.H263 video_decoder.h263 libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.MPEG4 video_decoder.mpeg4 libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.AVC video_decoder.avc libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.AVC.secure video_decoder.avc libMtkOmxVdecEx.so 1
+OMX.MTK.VIDEO.DECODER.RV video_decoder.rv libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.VC1 video_decoder.vc1 libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.VPX video_decoder.vpx libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.VP9 video_decoder.vp9 libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.DIVX video_decoder.divx libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.DIVX3 video_decoder.divx3 libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.XVID video_decoder.xvid libMtkOmxVdecEx.so 16
+OMX.MTK.VIDEO.DECODER.S263 video_decoder.s263 libMtkOmxVdecEx.so 16
+OMX.MTK.AUDIO.DECODER.RA audio_decoder.ra libMtkOmxCookDec.so 32
+OMX.MTK.AUDIO.DECODER.MP3 audio_decoder.mp3 libMtkOmxMp3Dec.so 32
+OMX.MTK.AUDIO.DECODER.G711.ALAW audio_decoder.g711 libMtkOmxG711Dec.so 32
+OMX.MTK.AUDIO.DECODER.G711.MLAW audio_decoder.g711 libMtkOmxG711Dec.so 32
+OMX.MTK.AUDIO.DECODER.WMAPRO audio_decoder.wma libMtkOmxWmaProDec.so 32
+OMX.MTK.AUDIO.DECODER.WMA audio_decoder.wma libMtkOmxWmaDec.so 32
+OMX.MTK.VIDEO.ENCODER.AVC video_encoder.avc libMtkOmxVenc.so 16
+OMX.MTK.VIDEO.ENCODER.HEVC video_encoder.hevc libMtkOmxVenc.so 16
+OMX.MTK.VIDEO.ENCODER.H263 video_encoder.h263 libMtkOmxVenc.so 16
+OMX.MTK.VIDEO.ENCODER.MPEG4 video_encoder.mpeg4 libMtkOmxVenc.so 16
+OMX.MTK.VIDEO.ENCODER.VPX video_encoder.vp8 libMtkOmxVenc.so 16
+OMX.MTK.AUDIO.ENCODER.VORBIS audio_encoder.vorbis libMtkOmxVorbisEnc.so 32
+OMX.MTK.AUDIO.DECODER.APE audio_decoder.ape libMtkOmxApeDec.so 32
+OMX.MTK.AUDIO.DECODER.FLAC audio_decoder.flac libMtkOmxFlacDec.so 32
+OMX.MTK.AUDIO.DECODER.ADPCM.MS audio_decoder.adpcm libMtkOmxAdpcmDec.so 32
+OMX.MTK.AUDIO.DECODER.ADPCM.DVI audio_decoder.adpcm libMtkOmxAdpcmDec.so 32
+OMX.MTK.AUDIO.ENCODER.ADPCM.MS audio_encoder.adpcm libMtkOmxAdpcmEnc.so 32
+OMX.MTK.AUDIO.ENCODER.ADPCM.DVI audio_encoder.adpcm libMtkOmxAdpcmEnc.so 32
+OMX.MTK.AUDIO.DECODER.RAW audio_decoder.raw libMtkOmxRawDec.so 32
+OMX.MTK.AUDIO.DECODER.GSM audio_decoder.gsm libMtkOmxGsmDec.so 32
+OMX.MTK.AUDIO.DECODER.ALAC audio_decoder.alac libMtkOmxAlacDec.so 32
diff --git a/partition_permission.sh b/partition_permission.sh
new file mode 100755
index 0000000..3add273
--- /dev/null
+++ b/partition_permission.sh
@@ -0,0 +1,22 @@
+#!/system/bin/sh
+
+#change partition permission
+/system/bin/chown root:system /mtd@preloader
+/system/bin/chmod 0640 /mtd@preloader
+/system/bin/chown root:system /mtd@pro_info
+/system/bin/chmod 0660 /mtd@pro_info
+/system/bin/chown root:system /mtd@bootimg
+/system/bin/chmod 0640 /mtd@bootimg
+/system/bin/chown root:system /mtd@recovery
+/system/bin/chmod 0640 /mtd@recovery
+/system/bin/chown root:system /mtd@sec_ro
+/system/bin/chmod 0640 /mtd@sec_ro
+
+/system/bin/chown root:system /mtd@nvram
+/system/bin/chmod 0660 /mtd@nvram
+/system/bin/chown root:system /mtd@seccfg
+/system/bin/chmod 0660 /mtd@seccfg
+/system/bin/chown root:system /mtd@misc
+/system/bin/chmod 0660 /mtd@misc
+
+
diff --git a/recovery_emmc.fstab b/recovery_emmc.fstab
new file mode 100755
index 0000000..dca6141
--- /dev/null
+++ b/recovery_emmc.fstab
@@ -0,0 +1,8 @@
+boot /boot emmc defaults defaults
+/dev/block/mmcblk0p2 /cache ext4 defaults defaults
+/dev/block/mmcblk0p3 /data ext4 defaults defaults
+misc /misc emmc defaults defaults
+recovery /recovery emmc defaults defaults
+/dev/block/mmcblk0p4 /sdcard vfat defaults defaults
+/dev/block/mmcblk0p6 /system ext4 defaults defaults
+/dev/block/mmcblk0p12 /custom ext4 defaults defaults
diff --git a/recovery_ubifs.fstab b/recovery_ubifs.fstab
new file mode 100755
index 0000000..485ed28
--- /dev/null
+++ b/recovery_ubifs.fstab
@@ -0,0 +1,8 @@
+boot /boot mtd defaults defaults
+cache /cache ubifs defaults defaults
+userdata /data ubifs defaults defaults
+misc /misc mtd defaults defaults
+recovery /recovery mtd defaults defaults
+/dev/block/mmcblk0p1 /sdcard vfat defaults defaults
+system /system ubifs defaults defaults
+
diff --git a/recovery_yaffs2.fstab b/recovery_yaffs2.fstab
new file mode 100755
index 0000000..833d1a9
--- /dev/null
+++ b/recovery_yaffs2.fstab
@@ -0,0 +1,8 @@
+boot /boot mtd defaults defaults
+cache /cache yaffs2 defaults defaults
+userdata /data yaffs2 defaults defaults
+misc /misc mtd defaults defaults
+recovery /recovery mtd defaults defaults
+/dev/block/mmcblk0p1 /sdcard vfat defaults defaults
+system /system yaffs2 defaults defaults
+
diff --git a/sepolicy/device.te b/sepolicy/device.te
new file mode 100755
index 0000000..b79409f
--- /dev/null
+++ b/sepolicy/device.te
@@ -0,0 +1,5 @@
+# ==============================================
+# MTK Policy Rule
+# ==============================================
+
+type gps_emi_device, dev_type;
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
new file mode 100755
index 0000000..77156d6
--- /dev/null
+++ b/sepolicy/file_contexts
@@ -0,0 +1,33 @@
+#########################################
+# Platform dependent label definitions
+#
+
+# define raw block partition label
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/proinfo u:object_r:nvram_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/nvram u:object_r:nvram_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/nvdata u:object_r:nvdata_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/frp u:object_r:frp_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/expdb u:object_r:expdb_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/misc2 u:object_r:misc2_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/logo u:object_r:logo_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/para u:object_r:para_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/tee1 u:object_r:tee_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/tee2 u:object_r:tee_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/seccfg u:object_r:seccfg_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/userdata u:object_r:userdata_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/cache u:object_r:cache_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/recovery u:object_r:recovery_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/protect1 u:object_r:protect1_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/protect2 u:object_r:protect2_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/keystore u:object_r:keystore_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/oemkeystore u:object_r:oemkeystore_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/boot u:object_r:boot_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/persist u:object_r:persist_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/system u:object_r:system_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/nvcfg u:object_r:nvcfg_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/md1img u:object_r:md_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/md1dsp u:object_r:dsp_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/md1arm7 u:object_r:md_block_device:s0
+/dev/block/platform/mtk-msdc\.0/[0-9]+\.msdc0/by-name/md3img u:object_r:md_block_device:s0
+
+/dev/gps_emi(/.*)? u:object_r:gps_emi_device:s0 \ No newline at end of file
diff --git a/sepolicy/mnld.te b/sepolicy/mnld.te
new file mode 100755
index 0000000..7662b9a
--- /dev/null
+++ b/sepolicy/mnld.te
@@ -0,0 +1,5 @@
+# add for gps emi download platform
+
+allow mnld gps_emi_device:chr_file rw_file_perms;
+allow mnld storage_file:lnk_file read;
+allow mnld mnt_user_file:dir search; \ No newline at end of file
diff --git a/sepolicy/system_server.te b/sepolicy/system_server.te
new file mode 100755
index 0000000..ec0d2bd
--- /dev/null
+++ b/sepolicy/system_server.te
@@ -0,0 +1,8 @@
+# ==============================================
+# MTK Policy Rule
+# ============
+
+# Date : WK15.45
+# Operation : Migration
+# Purpose : for debug
+allow system_server gps_data_file:dir search; \ No newline at end of file
diff --git a/thermal.conf b/thermal.conf
new file mode 100755
index 0000000..c6e6fb3
--- /dev/null
+++ b/thermal.conf
@@ -0,0 +1,110 @@
+/qtrg4s slopnhv4s s"sdrx1x$zz!t
+ !"
+/qtrg4s slopnhv4iw"haecsxn!lg9
+EYKW$;678)
+/qtrg4s slopnhv4iw"haecsxn!lg:
+mumwwFV'>?012#I]O[(>012#
+/qtrg4s slopnhv4s s"sqolg2y% su
+ !"
+/qtrg4s slopnhv4s s"sccwxjx%5!yttvx
+ !"
+/qtrg4s slopnhv4s s6cm/eghz7:
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/eghz79
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/eghz78
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n13
+ !"
+/qtrg4s slopnhv4s s"setdq2y% su
+ !"
+/qtrg4s slopnhv4s s"sxow1x$zz!t
+ !"
+/qtrg4s slopnhv4s s"sqc0w#yy "
+ !"
+/qtrg4s slopnhv4s s6cm/fer67
+mumwwgg !nrz"76567(NXJV#9567(
+/qtrg4s slopnhv4giklt
+EYKW$>?@()
+/qtrg4s slopnhv4zzlj93371x$zz!t
+ !"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n14
+ !"
+/qtrg4s slopnhv4s s6cm/phtlm
+EYKW$8678)
+/qtrg4s slopnhv4s s6cm/qsNSZ
+EYKW$7678)
+/qtrg4s slopnhv4s s6cm/dhu3t""t
+EYKW$7678)
+/qtrg4s slopnhv4s s6cm/nwm lxwo23
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo24
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo25
+ !"
+/qtrg4jyq$es1wljxtiu/u!exxewi an
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"3$%&'()
+/qtrg4jyq$es1wljxtiu/u!exxvhgyascp
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"4$%&'()
+/qtrg4jyq$es1wljxtiu/dneghz
+0!784%9<8)162#$%&'() !"#$
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+0!5345&88)16"4$:<7(9 483$5&'() !"
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+1!4345&8=)31"4$7<7(;012#6;6'<90!"#$%&'
+/qtrg4jyq$es1wljxtiu/dnpyyz
+0!634%778)112#656'990!8345&889 37845&'() !"
+/qtrg4jyq$es1wljxtiu/dnfxr
+2!:8456'=A012#8=678)51234%=<890!75456'?<3123$69<89 74:456'9:512#956'=90!36956'(
+/qtrg4jyq$es1wljxtiu/dndfhi
+58234%7789 323456'=)3123$5&'() !"#$%
+/qtrg4jyq$es1wljxtiu/dnitxesm$em
+4!83$86':9 27#$%&'() !"#
+/qtrg4jyq$es1wljxtiu/u!ftz
+3!344567(9 nvnxxiw"6szuuwy&<@901"3$hv!gjdbrwm kf8)58234%6'kyu`cgeuzp#n_2"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 52#5
+/qtrg4jyq$es1wljxtiu/u!sqni
+1!379567(9 nvnxxvtql-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#5567(
+/qtrg4jyq$es1wljxtiu/u!eeyzlz'
+4!83456'8)mumwwgg !nrz/v"xxz!)49234%6'u"k.eo1gij!92!6:456'8)mum0gq3iklt13#8;678)0!owo2is5kcdv34%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)1123$
+/qtrg4jyq$es1wljxtiu/u!se
+1!354567(9 nvn1hr4 quufr s68(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$7678)
+/qtrg4jyq$es1wljxtiu/u!gvfs
+1!434567(9 nvnxxjyiv-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%
+/qtrg4jyq$es1wljxtiu/u!zqy
+1!354567(9 nvnxx"t!6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"8456'
+/qtrg4jyq$es1wljxtiu/u!exx
+3!334567(9 nvnxxvh5!yttvx%<9890!2#qyq4ku-dcp45&<>901"3$fhjk" 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(:012#
+/qtrg4jyq$es1wljxtiu/u!ge>88<
+1!434567(9 uuge>88<6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"4456'
+/qtrg4jyq$es1wljxtiu/u!exxvh
+4!354567(9 nvn1hr4 quufr s69(:11234%6'u"k.eo1rjvno 223456'8)mum0gq3uwRMT"8;567(9 nvn1hr4imp.oxxy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 2234%
+/qtrg4jyq$es1wljxtiu/u!ww6
+1!384567(9 nvn1hr4s!hvvgs!t78)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww7
+1!384567(9 nvn1hr4s!hvvgs!t79)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww9
+1!384567(9 nvn1hr4s!hvvgs!t7:)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4s s"z0owoyyjx#
+mbaois&8() !"#$%&
+/qtrg4s s"z0owoyywurc
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyyii"tft!
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyywi
+mbaois&8() !"#$%&'() !"#
+/qtrg4s s"z0owoyy#u"
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyHX
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0vvhf?99=
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyi!!merd
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy8
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy9
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy;
+mbaois&8() !"#$%&'()
+EPH
+
diff --git a/thermal.eng.conf b/thermal.eng.conf
new file mode 100755
index 0000000..f9049ce
--- /dev/null
+++ b/thermal.eng.conf
@@ -0,0 +1,110 @@
+/qtrg4s slopnhv4s s"sdrx1x$zz!t
+ !"
+/qtrg4s slopnhv4iw"haecsxn!lg9
+EYKW$;678)
+/qtrg4s slopnhv4iw"haecsxn!lg:
+mumwwFV'>?012#I]O[(>012#
+/qtrg4s slopnhv4s s"sqolg2y% su
+ !"
+/qtrg4s slopnhv4s s"sccwxjx%5!yttvx
+ !"
+/qtrg4s slopnhv4s s6cm/eghz7:
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/eghz79
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/eghz78
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n13
+ !"
+/qtrg4s slopnhv4s s"setdq2y% su
+ !"
+/qtrg4s slopnhv4s s"sxow1x$zz!t
+ !"
+/qtrg4s slopnhv4s s"sqc0w#yy "
+ !"
+/qtrg4s slopnhv4s s6cm/fer67
+mumwwgg !nrz"76567(NXJV#9567(
+/qtrg4s slopnhv4giklt
+EYKW$>?@()
+/qtrg4s slopnhv4zzlj93371x$zz!t
+ !"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n14
+ !"
+/qtrg4s slopnhv4s s6cm/phtlm
+EYKW$8678)
+/qtrg4s slopnhv4s s6cm/qsNSZ
+EYKW$7678)
+/qtrg4s slopnhv4s s6cm/dhu3t""t
+EYKW$7678)
+/qtrg4s slopnhv4s s6cm/nwm lxwo23
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo24
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo25
+ !"
+/qtrg4jyq$es1wljxtiu/u!exxewi an
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"3$%&'()
+/qtrg4jyq$es1wljxtiu/u!exxvhgyascp
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"4$%&'()
+/qtrg4jyq$es1wljxtiu/dneghz
+0!784%9<8)162#$%&'() !"#$
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+0!5345&88)16"4$<;<(9 483$5&'() !"
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+1!4345&8=)31"4$7<7(;012#6;6'<90!"#$%&'
+/qtrg4jyq$es1wljxtiu/dnpyyz
+0!634%778)112#656'990!8345&889 37845&'() !"
+/qtrg4jyq$es1wljxtiu/dnfxr
+2!:8456'=A012#8=678)51234%=<890!75456'?<3123$69<89 74:456'9:512#956'=90!36956'(
+/qtrg4jyq$es1wljxtiu/dndfhi
+58234%7789 323456'=)3123$5&'() !"#$%
+/qtrg4jyq$es1wljxtiu/dnitxesm$em
+4!83$86':9 27#$%&'() !"#
+/qtrg4jyq$es1wljxtiu/u!ftz
+3!344567(9 nvnxxiw"6szuuwy&<@901"3$hv!gjdbrwm kf8)58234%6'kyu`cgeuzp#n_2"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 52#5
+/qtrg4jyq$es1wljxtiu/u!sqni
+1!379567(9 nvnxxvtql-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#5567(
+/qtrg4jyq$es1wljxtiu/u!eeyzlz'
+4!83456'8)mumwwgg !nrz/v"xxz!)49234%6'u"k.eo1gij!92!6:456'8)mum0gq3iklt13#8;678)0!owo2is5kcdv34%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)1123$
+/qtrg4jyq$es1wljxtiu/u!se
+1!354567(9 nvn1hr4 quufr s68(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$7678)
+/qtrg4jyq$es1wljxtiu/u!gvfs
+1!434567(9 nvnxxjyiv-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%
+/qtrg4jyq$es1wljxtiu/u!zqy
+1!354567(9 nvnxx"t!6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"8456'
+/qtrg4jyq$es1wljxtiu/u!exx
+3!334567(9 nvnxxvh5!yttvx%<9890!2#qyq4ku-dcp45&<>901"3$fhjk" 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(:012#
+/qtrg4jyq$es1wljxtiu/u!ge>88<
+1!434567(9 uuge>88<6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"4456'
+/qtrg4jyq$es1wljxtiu/u!exxvh
+4!354567(9 nvn1hr4 quufr s69(:11234%6'u"k.eo1rjvno 223456'8)mum0gq3uwRMT"8;567(9 nvn1hr4imp.oxxy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 2234%
+/qtrg4jyq$es1wljxtiu/u!ww6
+1!384567(9 nvn1hr4s!hvvgs!t78)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww7
+1!384567(9 nvn1hr4s!hvvgs!t79)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww9
+1!384567(9 nvn1hr4s!hvvgs!t7:)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4s s"z0owoyyjx#
+mbaois&8() !"#$%&
+/qtrg4s s"z0owoyywurc
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyyii"tft!
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyywi
+mbaois&8() !"#$%&'() !"#
+/qtrg4s s"z0owoyy#u"
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyHX
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0vvhf?99=
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyi!!merd
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy8
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy9
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy;
+mbaois&8() !"#$%&'()
+EPH
+
diff --git a/thermal.fdvrgis.6797.conf b/thermal.fdvrgis.6797.conf
new file mode 100755
index 0000000..05e8cb3
--- /dev/null
+++ b/thermal.fdvrgis.6797.conf
@@ -0,0 +1,110 @@
+/qtrg4s slopnhv4s s"sdrx1x$zz!t
+ !"
+/qtrg4s slopnhv4iw"haecsxn!lg9
+EYKW$;678)
+/qtrg4s slopnhv4iw"haecsxn!lg:
+mumwwFV'>?012#I]O[(>012#
+/qtrg4s slopnhv4s s"sqolg2y% su
+ !"
+/qtrg4s slopnhv4s s"sccwxjx%5!yttvx
+ !"
+/qtrg4s slopnhv4s s6cm/eghz7:
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/eghz79
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/eghz78
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n13
+ !"
+/qtrg4s slopnhv4s s"setdq2y% su
+ !"
+/qtrg4s slopnhv4s s"sxow1x$zz!t
+ !"
+/qtrg4s slopnhv4s s"sqc0w#yy "
+ !"
+/qtrg4s slopnhv4s s6cm/fer67
+EYKW$:678)
+/qtrg4s slopnhv4giklt
+EYKW$>?@()
+/qtrg4s slopnhv4zzlj93371x$zz!t
+ !"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n14
+ !"
+/qtrg4s slopnhv4s s6cm/phtlm
+EYKW$8678)
+/qtrg4s slopnhv4s s6cm/qsNSZ
+EYKW$7678)
+/qtrg4s slopnhv4s s6cm/dhu3t""t
+EYKW$7678)
+/qtrg4s slopnhv4s s6cm/nwm lxwo23
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo24
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo25
+ !"
+/qtrg4jyq$es1wljxtiu/u!exxewi an
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"3$%&'()
+/qtrg4jyq$es1wljxtiu/u!exxvhgyascp
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"4$%&'()
+/qtrg4jyq$es1wljxtiu/dneghz
+0!784%9<8)162#$%&'() !"#$
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+0!5345&88)16"4$:<7(9 483$5&'() !"
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+1!4345&8=)31"4$7<7(;012#6;6'<90!"#$%&'
+/qtrg4jyq$es1wljxtiu/dnpyyz
+0!634%778)112#656'990!8345&889 37845&'() !"
+/qtrg4jyq$es1wljxtiu/dnfxr
+2!:8456'=A012#8=678)51234%=<890!75456'?<3123$69<89 74:456'9:512#956'=90!36956'(
+/qtrg4jyq$es1wljxtiu/dndfhi
+53234%7789 323456'=)3123$5&'() !"#$%
+/qtrg4jyq$es1wljxtiu/dnitxesm$em
+4!83$86':9 27#$%&'() !"#
+/qtrg4jyq$es1wljxtiu/u!ftz
+3!344567(9 nvnxxiw"6szuuwy&<@901"3$hv!gjdbrwm kf8)58234%6'kyu`cgeuzp#n_2"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 52#5
+/qtrg4jyq$es1wljxtiu/u!sqni
+1!379567(9 nvnxxvtql-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#5567(
+/qtrg4jyq$es1wljxtiu/u!eeyzlz'
+4!83456'8)mumwwgg !nrz/v"xxz!)49234%6'u"k.eo1gij!92!6:456'8)mum0gq3iklt13#8;678)0!owo2is5kcdv34%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)1123$
+/qtrg4jyq$es1wljxtiu/u!se
+1!354567(9 nvn1hr4 quufr s68(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$7678)
+/qtrg4jyq$es1wljxtiu/u!gvfs
+1!434567(9 nvnxxjyiv-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%
+/qtrg4jyq$es1wljxtiu/u!zqy
+1!354567(9 nvnxx"t!6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"8456'
+/qtrg4jyq$es1wljxtiu/u!exx
+3!334567(9 nvnxxvh5!yttvx%;@890!2#qyq4ku-dcp45&<9901"3$fhjk" 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(:012#
+/qtrg4jyq$es1wljxtiu/u!ge>88<
+1!434567(9 uuge>88<6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"4456'
+/qtrg4jyq$es1wljxtiu/u!exxvh
+4!354567(9 nvn1hr4 quufr s69(:11234%6'u"k.eo1rjvno 223456'8)mum0gq3uwRMT"8;567(9 nvn1hr4imp.oxxy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 2234%
+/qtrg4jyq$es1wljxtiu/u!ww6
+1!384567(9 nvn1hr4s!hvvgs!t78)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww7
+1!384567(9 nvn1hr4s!hvvgs!t79)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww9
+1!384567(9 nvn1hr4s!hvvgs!t7:)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4s s"z0owoyyjx#
+mbaois&8() !"#$%&
+/qtrg4s s"z0owoyywurc
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyyii"tft!
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyywi
+mbaois&8() !"#$%&'() !"#
+/qtrg4s s"z0owoyy#u"
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyHX
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0vvhf?99=
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyi!!merd
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy8
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy9
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy;
+mbaois&8() !"#$%&'()
+EPH
+
diff --git a/thermal.off.conf b/thermal.off.conf
new file mode 100755
index 0000000..22b1d5d
--- /dev/null
+++ b/thermal.off.conf
@@ -0,0 +1,74 @@
+/qtrg4s slopnhv4s s"sdrx1x$zz!t
+ !"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n12
+ !"
+/qtrg4s slopnhv4iw"haecsxn!lg9
+EYKW$6;789 !
+/qtrg4s slopnhv4s s"sqolg2y% su
+ !"
+/qtrg4s slopnhv4s s"sccwxjx%5!yttvx
+ !"
+/qtrg4s slopnhv4s s"sqc0w#yy "
+ !"
+/qtrg4s slopnhv4s s"setdq2y% su
+ !"
+/qtrg4s slopnhv4s s"sxow1x$zz!t
+ !"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n13
+ !"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n14
+ !"
+/qtrg4s slopnhv4s s6cm/eehqsqphu24
+ !"
+/qtrg4jyq$es1wljxtiu/u!exxewi an
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"3$%&'()
+/qtrg4jyq$es1wljxtiu/u!exxvhgyascp
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"4$%&'()
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+0!4845&88)16"44%<78)3123$:;7(:612#$%&'()
+/qtrg4jyq$es1wljxtiu/dnpyyz
+0!634%778)112#656'990!8345&889 37845&'() !"
+/qtrg4jyq$es1wljxtiu/dnfxr
+0!:8456'>@012#8:678)49234%=<890!84456';>5123$;678)29735;&;>?7!48$7;'99012#$
+/qtrg4jyq$es1wljxtiu/u!ftz
+3!34;567(9 nvnxxiw"6szuuwy&88>012#4%s s6cm/vlzzkw%n12#<:678)0!esydgkiytjxhc5&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$767(:
+/qtrg4jyq$es1wljxtiu/u!sqni
+1!379567(9 nvnxxvtql-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#5567(
+/qtrg4jyq$es1wljxtiu/u!eeyzlz'
+1!83456'8)mumwwgg !nrz/v"xxz!)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!se
+1!354567(9 nvnxxvh5!yttvx%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!3345&
+/qtrg4jyq$es1wljxtiu/u!gvfs
+1!434567(9 nvnxxjyiv-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%
+/qtrg4jyq$es1wljxtiu/u!zqy
+1!354567(9 nvnxx"t!6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"4456'
+/qtrg4jyq$es1wljxtiu/u!exx
+1!;3456'8)mum0gq3zp#teqzr57'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#5567(
+/qtrg4jyq$es1wljxtiu/u!ge>88<
+1!434567(9 nvn1hr4 quufr s69(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$6678)
+/qtrg4jyq$es1wljxtiu/u!exxvh
+1!434567(9 nvn1hr4jjclnlkmz79)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww6
+0!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#
+/qtrg4jyq$es1wljxtiu/u!ww7
+0!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#
+/qtrg4jyq$es1wljxtiu/u!ww9
+0!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#
+/qtrg4s s"z0owoyyjx#
+mbaois&8() !"#$%&
+/qtrg4s s"z0owoyywurc
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyyii"tft!
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyywi
+mbaois&8() !"#$%&'() !"#
+/qtrg4s s"z0owoyy#u"
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyHX
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0vvhf?99=
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyi!!merd
+mbaois&8() !"#$%&'()
+EPH
+
diff --git a/thermal.pip.6797.conf b/thermal.pip.6797.conf
new file mode 100755
index 0000000..abedd50
--- /dev/null
+++ b/thermal.pip.6797.conf
@@ -0,0 +1,110 @@
+/qtrg4s slopnhv4s s"sdrx1x$zz!t
+ !"
+/qtrg4s slopnhv4iw"haecsxn!lg9
+EYKW$;678)
+/qtrg4s slopnhv4iw"haecsxn!lg:
+mumwwFV'>?012#I]O[(>012#
+/qtrg4s slopnhv4s s"sqolg2y% su
+ !"
+/qtrg4s slopnhv4s s"sccwxjx%5!yttvx
+ !"
+/qtrg4s slopnhv4s s6cm/eghz7:
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/eghz79
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/eghz78
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n13
+ !"
+/qtrg4s slopnhv4s s"setdq2y% su
+ !"
+/qtrg4s slopnhv4s s"sxow1x$zz!t
+ !"
+/qtrg4s slopnhv4s s"sqc0w#yy "
+ !"
+/qtrg4s slopnhv4s s6cm/fer67
+EYKW$:678)
+/qtrg4s slopnhv4giklt
+EYKW$>?@()
+/qtrg4s slopnhv4zzlj93371x$zz!t
+ !"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n14
+ !"
+/qtrg4s slopnhv4s s6cm/phtlm
+EYKW$8678)
+/qtrg4s slopnhv4s s6cm/qsNSZ
+EYKW$7678)
+/qtrg4s slopnhv4s s6cm/dhu3t""t
+EYKW$7678)
+/qtrg4s slopnhv4s s6cm/nwm lxwo23
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo24
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo25
+ !"
+/qtrg4jyq$es1wljxtiu/u!exxewi an
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"3$%&'()
+/qtrg4jyq$es1wljxtiu/u!exxvhgyascp
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"4$%&'()
+/qtrg4jyq$es1wljxtiu/dneghz
+0!784%9<8)162#$%&'() !"#$
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+0!5345&88)16"4$6778)0!594%6'() !"#
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+1!4345&8=)31"4$7<7(;012#6;6'<90!"#$%&'
+/qtrg4jyq$es1wljxtiu/dnpyyz
+0!634%778)112#656'990!8345&889 37845&'() !"
+/qtrg4jyq$es1wljxtiu/dnfxr
+2!:8456'=A012#8=678)51234%=<890!75456'?<3123$69<89 74:456'9:512#956'=90!36956'(
+/qtrg4jyq$es1wljxtiu/dndfhi
+53234%7789 323456'=)3123$5&'() !"#$%
+/qtrg4jyq$es1wljxtiu/dnitxesm$em
+4!83$86':9 27#$%&'() !"#
+/qtrg4jyq$es1wljxtiu/u!ftz
+3!344567(9 nvnxxiw"6szuuwy&<@901"3$hv!gjdbrwm kf8)58234%6'kyu`cgeuzp#n_2"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 52#5
+/qtrg4jyq$es1wljxtiu/u!sqni
+1!379567(9 nvnxxvtql-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#5567(
+/qtrg4jyq$es1wljxtiu/u!eeyzlz'
+4!83456'8)mumwwgg !nrz/v"xxz!)49234%6'u"k.eo1gij!92!6:456'8)mum0gq3iklt13#8;678)0!owo2is5kcdv34%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)1123$
+/qtrg4jyq$es1wljxtiu/u!se
+1!354567(9 nvn1hr4 quufr s68(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$7678)
+/qtrg4jyq$es1wljxtiu/u!gvfs
+1!434567(9 nvnxxjyiv-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%
+/qtrg4jyq$es1wljxtiu/u!zqy
+1!354567(9 nvnxx"t!6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"8456'
+/qtrg4jyq$es1wljxtiu/u!exx
+3!334567(9 nvnxxvh5!yttvx%;@890!2#qyq4ku-dcp45&<9901"3$fhjk" 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(:012#
+/qtrg4jyq$es1wljxtiu/u!ge>88<
+1!434567(9 uuge>88<6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"4456'
+/qtrg4jyq$es1wljxtiu/u!exxvh
+4!354567(9 nvn1hr4 quufr s69(:11234%6'u"k.eo1rjvno 223456'8)mum0gq3uwRMT"8;567(9 nvn1hr4imp.oxxy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 2234%
+/qtrg4jyq$es1wljxtiu/u!ww6
+1!384567(9 nvn1hr4s!hvvgs!t78)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww7
+1!384567(9 nvn1hr4s!hvvgs!t79)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww9
+1!384567(9 nvn1hr4s!hvvgs!t7:)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4s s"z0owoyyjx#
+mbaois&8() !"#$%&
+/qtrg4s s"z0owoyywurc
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyyii"tft!
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyywi
+mbaois&8() !"#$%&'() !"#
+/qtrg4s s"z0owoyy#u"
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyHX
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0vvhf?99=
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyi!!merd
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy8
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy9
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy;
+mbaois&8() !"#$%&'()
+EPH
+
diff --git a/thermal.wfd.6797.conf b/thermal.wfd.6797.conf
new file mode 100755
index 0000000..1e43046
--- /dev/null
+++ b/thermal.wfd.6797.conf
@@ -0,0 +1,110 @@
+/qtrg4s slopnhv4s s"sdrx1x$zz!t
+ !"
+/qtrg4s slopnhv4iw"haecsxn!lg9
+EYKW$;678)
+/qtrg4s slopnhv4iw"haecsxn!lg:
+mumwwFV'>?012#I]O[(>012#
+/qtrg4s slopnhv4s s"sqolg2y% su
+ !"
+/qtrg4s slopnhv4s s"sccwxjx%5!yttvx
+ !"
+/qtrg4s slopnhv4s s6cm/eghz7:
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/eghz79
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/eghz78
+mumwwFV'<A012#I]O[(B9:"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n13
+ !"
+/qtrg4s slopnhv4s s"setdq2y% su
+ !"
+/qtrg4s slopnhv4s s"sxow1x$zz!t
+ !"
+/qtrg4s slopnhv4s s"sqc0w#yy "
+ !"
+/qtrg4s slopnhv4s s6cm/fer67
+EYKW$:678)
+/qtrg4s slopnhv4giklt
+EYKW$>?@()
+/qtrg4s slopnhv4zzlj93371x$zz!t
+ !"
+/qtrg4s slopnhv4s s6cm/vlzzkw%n14
+ !"
+/qtrg4s slopnhv4s s6cm/phtlm
+EYKW$8678)
+/qtrg4s slopnhv4s s6cm/qsNSZ
+EYKW$7678)
+/qtrg4s slopnhv4s s6cm/dhu3t""t
+EYKW$7678)
+/qtrg4s slopnhv4s s6cm/nwm lxwo23
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo24
+ !"
+/qtrg4s slopnhv4s s6cm/nwm lxwo25
+ !"
+/qtrg4jyq$es1wljxtiu/u!exxewi an
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"3$%&'()
+/qtrg4jyq$es1wljxtiu/u!exxvhgyascp
+PVRbV%9@8901"SYUe]WUT!3;45&V^NR`EUMYOJIU_M"76:7789 OVFcYGITN 7"4$%&'()
+/qtrg4jyq$es1wljxtiu/dneghz
+0!784%9<8)162#$%&'() !"#$
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+0!5345&88)16"4$>67(9 483$5&'() !"
+/qtrg4jyq$es1wljxtiu/dndxrezm"tjpj
+1!4345&8=)31"4$7<7(;012#6;6'<90!"#$%&'
+/qtrg4jyq$es1wljxtiu/dnpyyz
+0!634%778)112#656'990!8345&889 37845&'() !"
+/qtrg4jyq$es1wljxtiu/dnfxr
+2!:8456'=A012#8=678)51234%=<890!75456'?<3123$69<89 74:456'9:512#956'=90!36956'(
+/qtrg4jyq$es1wljxtiu/dndfhi
+53234%7789 323456'=)3123$5&'() !"#$%
+/qtrg4jyq$es1wljxtiu/dnitxesm$em
+4!83$86':9 27#$%&'() !"#
+/qtrg4jyq$es1wljxtiu/u!ftz
+3!344567(9 nvnxxiw"6szuuwy&<@901"3$hv!gjdbrwm kf8)58234%6'kyu`cgeuzp#n_2"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 52#5
+/qtrg4jyq$es1wljxtiu/u!sqni
+1!379567(9 nvnxxvtql-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#5567(
+/qtrg4jyq$es1wljxtiu/u!eeyzlz'
+4!83456'8)mumwwgg !nrz/v"xxz!)49234%6'u"k.eo1gij!92!6:456'8)mum0gq3iklt13#8;678)0!owo2is5kcdv34%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)1123$
+/qtrg4jyq$es1wljxtiu/u!se
+1!354567(9 nvn1hr4 quufr s68(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$7678)
+/qtrg4jyq$es1wljxtiu/u!gvfs
+1!434567(9 nvnxxjyiv-t vvxz'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%
+/qtrg4jyq$es1wljxtiu/u!zqy
+1!354567(9 nvnxx"t!6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"8456'
+/qtrg4jyq$es1wljxtiu/u!exx
+3!334567(9 nvnxxvh5!yttvx%;@890!2#qyq4ku-dcp45&<9901"3$fhjk" 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(:012#
+/qtrg4jyq$es1wljxtiu/u!ge>88<
+1!434567(9 uuge>88<6szuuwy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"4456'
+/qtrg4jyq$es1wljxtiu/u!exxvh
+4!354567(9 nvn1hr4 quufr s69(:11234%6'u"k.eo1rjvno 223456'8)mum0gq3uwRMT"8;567(9 nvn1hr4imp.oxxy&7(9 oq0gtusm 1"3$su4kxomgu$5&7(wo.ersqky(9 1"qs2ivwues"3$5&uw6cpqoiw&7(9 oq0gtusm 2234%
+/qtrg4jyq$es1wljxtiu/u!ww6
+1!384567(9 nvn1hr4s!hvvgs!t78)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww7
+1!384567(9 nvn1hr4s!hvvgs!t79)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4jyq$es1wljxtiu/u!ww9
+1!384567(9 nvn1hr4s!hvvgs!t7:)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%6'8)np/fstrlz)0!2#rt3jwxlft#4%6'vx-dqrpjx'8)0!pr1huvtnr!2#4%tv5lopnhv%7789
+/qtrg4s s"z0owoyyjx#
+mbaois&8() !"#$%&
+/qtrg4s s"z0owoyywurc
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyyii"tft!
+mbaois&;() !"#$%&'()
+/qtrg4s s"z0owoyywi
+mbaois&8() !"#$%&'() !"#
+/qtrg4s s"z0owoyy#u"
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyHX
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0vvhf?99=
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyyi!!merd
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy8
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy9
+mbaois&8() !"#$%&'()
+/qtrg4s s"z0owoyy;
+mbaois&8() !"#$%&'()
+EPH
+
diff --git a/throttle.sh b/throttle.sh
new file mode 100755
index 0000000..0b0d6b6
--- /dev/null
+++ b/throttle.sh
@@ -0,0 +1,19 @@
+#!/system/bin/sh
+# traffic control; arg1:ifname, arg2: rx, arg 3 tx.
+#
+export PATH=/data:$PATH
+
+# clear rules
+tc qdisc del dev $1 root
+tc qdisc del dev $1 ingress
+tc qdisc del dev ifb0 root
+
+# set interface throttle
+tc qdisc add dev $1 root handle 1: htb default 1 r2q 1000
+tc class add dev $1 parent 1: classid 1:1 htb rate $3kbit
+ifconfig ifb0 up
+tc qdisc add dev ifb0 root handle 1: htb default 1 r2q 1000
+tc class add dev ifb0 parent 1: classid 1:1 htb rate $2kbit
+tc qdisc add dev $1 ingress
+tc filter add dev $1 parent ffff: protocol ip prio 10 u32 match \
+ u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0
diff --git a/ueventd.mt6797.rc b/ueventd.mt6797.rc
new file mode 100755
index 0000000..9301247
--- /dev/null
+++ b/ueventd.mt6797.rc
@@ -0,0 +1,116 @@
+#change partition permission
+/dev/block/mmcblk0 0660 root system
+/dev/block/mmcblk0boot0 0660 root system
+/dev/block/mmcblk0boot1 0660 root system
+/dev/misc-sd 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/misc2 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/boot 0640 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/recovery 0640 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/secro 0640 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/seccfg 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/proinfo 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/nvram 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/para 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/logo 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/frp 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/md1img 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/md1dsp 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/md1arm7 0660 root system
+/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/md3img 0660 root system
+
+# OTP
+/dev/otp 0660 system system
+
+# Connectivity
+/dev/stpwmt 0660 system system
+/dev/wmtdetect 0660 system system
+
+# BT
+/dev/stpbt 0660 bluetooth net_bt_stack
+
+# GPS
+/dev/stpgps 0660 gps gps
+/dev/gps 0660 gps system
+
+# ANT
+/dev/stpant 0660 system system
+
+# WIFI
+/dev/wmtWifi 0660 system system
+
+# FMRadio
+/dev/fm 0660 media media
+
+# NFC
+/dev/msr3110 0666 root root
+/dev/mt6605 0660 nfc radio
+
+# MTK BTIF driver
+/dev/btif 0600 system system
+
+# Trusty driver
+/dev/trusty-ipc-dev0 0660 system keystore
+
+# add the read write right of ttyUSB*
+/dev/bus/usb/* 0660 root usb
+/dev/ttyUSB0 0660 radio radio
+/dev/ttyUSB1 0660 radio radio
+/dev/ttyUSB2 0660 radio radio
+/dev/ttyUSB3 0660 radio radio
+/dev/ttyUSB4 0660 radio radio
+
+# Anyone can read the logs, but if they're not in the "logs"
+# group, then they'll only see log entries for their UID.
+/dev/xLog 0600 root root
+/dev/log/ksystem 0600 root log
+
+/dev/ccci* 0660 radio radio
+/dev/ttyC* 0660 radio radio
+/sys/kernel/ccci modem_info 0644 radio radio
+/sys/kernel/ccci md1_postfix 0644 radio radio
+/sys/kernel/ccci md2_postfix 0644 radio radio
+/dev/eemcs* 0660 radio radio
+/dev/emd* 0660 radio radio
+/dev/ccci_pcm_rx 0660 audio audio
+/dev/ccci_pcm_tx 0660 audio audio
+/dev/ccci_aud 0660 audio audio
+/dev/ccci2_aud 0660 audio audio
+/dev/ccci3_aud 0660 audio audio
+/dev/eemcs_aud 0660 audio audio
+/dev/irtx 0660 system system
+# SGX device node
+/dev/pvrsrvkm 0666 root root
+/dev/pvr_sync 0666 root root
+
+
+/sys/devices/platform/leds-mt65xx/leds/green delay_on 0664 system system
+/sys/devices/platform/leds-mt65xx/leds/green delay_off 0664 system system
+/sys/devices/platform/leds-mt65xx/leds/red delay_on 0664 system system
+/sys/devices/platform/leds-mt65xx/leds/red delay_off 0664 system system
+/sys/devices/platform/leds-mt65xx/leds/blue delay_on 0664 system system
+/sys/devices/platform/leds-mt65xx/leds/blue delay_off 0664 system system
+
+#GPIO
+/dev/mtgpio 0600 radio root
+
+
+#FOR VIA MODEM
+/dev/ttySDIO* 0660 radio sdcard_rw
+/dev/ttyRB* 0660 radio radio
+
+# Mali node
+/dev/mali 0666 system graphics
+
+# Change ION driver permission
+/dev/ion 0666 system graphics
+
+#touch
+/dev/touch 0660 root system
+/dev/hotknot 0660 root system
+
+#hang_detect
+/dev/RT_Monitor 0600 system system
+/dev/kick_powerkey 0600 system system
+
+#MTK In-House TEE
+/dev/ttyACM0 0660 radio radio