diff --git a/appops/Android.mk b/appops/Android.mk new file mode 100644 index 000000000..09ba90baf --- /dev/null +++ b/appops/Android.mk @@ -0,0 +1,19 @@ +define validate-xml-file + @echo "validating xml: $2" + @xmllint --noout --schema $1 $2 +endef +LOCAL_PATH:= $(call my-dir) +####################################### + +include $(CLEAR_VARS) +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE := appops_policy.xml +APPOPS_POLICY_XSD_FILE := $(LOCAL_PATH)/appops_policy.xsd +include $(BUILD_SYSTEM)/base_rules.mk + +$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/appops_policy.xml $(APPOPS_POLICY_XSD_FILE) $(ACP) + @echo Validating $< + @xmllint --noout --schema $(APPOPS_POLICY_XSD_FILE) $< + $(copy-file-to-target) +####################################### + diff --git a/appops/README.txt b/appops/README.txt new file mode 100644 index 000000000..3c028afb9 --- /dev/null +++ b/appops/README.txt @@ -0,0 +1,125 @@ +=============================================================================== +Copyright (c) 2014, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +=============================================================================== + +1. Introduction: +---------------- + Android provides support for AppOps service to manage and control + user-permissions of different operations of installed packages. + + AppOps service reads /system/etc/appops_policy.xml file to read all default + user-permissions of different operations of installed packages. + +2. AppOps Policy File: +---------------------- + AppOps policy file can be used to assign default permissions to both system + and user installed applications. Since hardcoded in AppOpsService this file + should be at /system/etc/appops_policy.xml path on the device. + + Following section talks about various tags used in appops_policy.xml file: + + 2.1 appops-policy + This is the root tag of appops_policy file. + + Parameters: + i) version (Required) -This parameter defines the version of + appops_policy.xml format. It should be set to "1". + + Tags: + i) user-app - section to configure default permissions of user + installed apps. + ii) system-app - section to configure default permissions of preset + (system) apps + iii) application - section to override default permission of particular + packages. + 2.2 user-app + This tag is used to set default permission of user installed applications. + + Parameters: + i) permission - To set default permission of all user installed apps. + ii) show - To show/hide operations in app ops settings activity. + + Tags: + + + 2.3 system-app + This tag is used to set default permission of preset installed applications. + + Parameters: + i) permission - To set default permission of all system installed apps. + ii) show - To show/hide operations in app ops settings activity. + + Tags: + + + 2.4 application + This tag is used to set default permission of specific applications. + + Parameters: + + + Tags: + i) pkg - section to set default permission of specific package. + + 2.5 pkg + This tag is used to set default permission of specific package. + + Parameters: + i) name - To specify name of the package. + ii) type - To set if package is part of preset or user installed application. + iii) permission - To set default permission of package's all operations. + iv) show - To show/hide operations in app ops settings activity. + + Tags: + i) op - section to set defualt permission of an operation. + + 2.5 op + This tag is used to set default permission of specific operation + + Parameters: + i) name - To specify name of the operation + ii) permission - To set default permisison of operation + iii) show - To show/hide operation in app ops settings activity. + +3 Example: +---------- + + + + + + + + + + + + + + + diff --git a/appops/appops_policy.xml b/appops/appops_policy.xml new file mode 100644 index 000000000..d73fc15a3 --- /dev/null +++ b/appops/appops_policy.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + diff --git a/appops/appops_policy.xsd b/appops/appops_policy.xsd new file mode 100644 index 000000000..0f27d1651 --- /dev/null +++ b/appops/appops_policy.xsd @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/base.mk b/base.mk new file mode 100644 index 000000000..a6cc9b204 --- /dev/null +++ b/base.mk @@ -0,0 +1,847 @@ +# Board platforms lists to be used for +# TARGET_BOARD_PLATFORM specific featurization +QCOM_BOARD_PLATFORMS += msm8974 +QCOM_BOARD_PLATFORMS += msm8610 +QCOM_BOARD_PLATFORMS += msm8226 +QCOM_BOARD_PLATFORMS += apq8084 +QCOM_BOARD_PLATFORMS += mpq8092 +QCOM_BOARD_PLATFORMS += msm_bronze +QCOM_BOARD_PLATFORMS += msm8916 +QCOM_BOARD_PLATFORMS += msm8916_32 +QCOM_BOARD_PLATFORMS += msm8916_32_512 +QCOM_BOARD_PLATFORMS += msm8916_64 +QCOM_BOARD_PLATFORMS += msm8994 +QCOM_BOARD_PLATFORMS += msm8909 +QCOM_BOARD_PLATFORMS += msm8909_512 +QCOM_BOARD_PLATFORMS += msm8909w + +QSD8K_BOARD_PLATFORMS := qsd8k + +TARGET_USE_VENDOR_CAMERA_EXT := true + +#List of targets that use video hw +MSM_VIDC_TARGET_LIST := msm8974 msm8610 msm8226 apq8084 msm8916 msm8994 msm8909 + +# Below projects/packages with LOCAL_MODULEs will be used by +# PRODUCT_PACKAGES to build LOCAL_MODULEs that are tagged with +# optional tag, which will not be available on target unless +# explicitly list here. Where project corresponds to the vars here +# in CAPs. + +#ALSA +ALSA_HARDWARE := alsa.msm8960 +ALSA_HARDWARE += alsa.msm8974 +ALSA_HARDWARE += alsa.msm8226 +ALSA_HARDWARE += alsa.msm8610 +ALSA_HARDWARE += alsa.apq8084 + +ALSA_UCM := snd_soc_msm +ALSA_UCM += snd_soc_msm_2x +ALSA_UCM += snd_soc_msm_2x_mpq +ALSA_UCM += snd_soc_msm_2x_Fusion3 +ALSA_UCM += snd_soc_msm_Sitar +ALSA_UCM += snd_soc_msm_auxpcm +ALSA_UCM += snd_soc_msm_2x_auxpcm +ALSA_UCM += snd_soc_msm_2x_mpq_auxpcm +ALSA_UCM += snd_soc_msm_2x_Fusion3_auxpcm +ALSA_UCM += snd_soc_msm_Sitar_auxpcm +ALSA_UCM += snd_soc_msm_Taiko +ALSA_UCM += snd_soc_msm_Taiko_CDP +ALSA_UCM += snd_soc_msm_Taiko_Fluid +ALSA_UCM += snd_soc_msm_Taiko_liquid +ALSA_UCM += snd_soc_apq_Taiko_DB +ALSA_UCM += snd_soc_msm_I2SFusion +ALSA_UCM += snd_soc_msm_Tapan +ALSA_UCM += snd_soc_msm_TapanLite +ALSA_UCM += snd_soc_msm_Tapan_SKUF +ALSA_UCM += snd_soc_msm_TapanLite_SKUF +ALSA_UCM += snd_soc_msm_8x10_wcd +ALSA_UCM += snd_soc_msm_8x10_wcd_skuab +ALSA_UCM += snd_soc_msm_8x10_wcd_skuaa +ALSA_UCM += snd_soc_msm_samarium_Tapan + +#ANGLE +ANGLE := libangle + +#APPOPS_POLICY +APPOPS_POLICY := appops_policy.xml + +AUDIO_HARDWARE := audio.primary.mpq8064 +AUDIO_HARDWARE += audio.primary.apq8084 +AUDIO_HARDWARE += audio.primary.msm8960 +AUDIO_HARDWARE += audio.primary.msm8974 +AUDIO_HARDWARE += audio.primary.msm8226 +AUDIO_HARDWARE += audio.primary.msm8660 +AUDIO_HARDWARE += audio.primary.msm8610 +#AUDIO_HARDWARE += audio.primary.msm7627_surf +AUDIO_HARDWARE += audio.primary.msm7627a +AUDIO_HARDWARE += audio.primary.msm7630_surf +AUDIO_HARDWARE += audio.primary.msm7630_fusion +#AUDIO_HARDWARE += audio.primary.default +AUDIO_HARDWARE += audio.a2dp.default +AUDIO_HARDWARE += audio.usb.default +AUDIO_HARDWARE += audio.r_submix.default +AUDIO_HARDWARE += audio.primary.mpq8092 +AUDIO_HARDWARE += audio.primary.msm8916 +AUDIO_HARDWARE += audio.primary.msm8909 +AUDIO_HARDWARE += audio.primary.msm8994 +# +AUDIO_POLICY := audio_policy.mpq8064 +AUDIO_POLICY += audio_policy.apq8084 +AUDIO_POLICY += audio_policy.msm8960 +AUDIO_POLICY += audio_policy.msm8974 +AUDIO_POLICY += audio_policy.msm8226 +AUDIO_POLICY += audio_policy.msm8660 +AUDIO_POLICY += audio_policy.msm8610 +AUDIO_POLICY += audio_policy.mpq8092 +#AUDIO_POLICY += audio_policy.msm7627_surf +AUDIO_POLICY += audio_policy.msm7627a +AUDIO_POLICY += audio_policy.msm7630_surf +AUDIO_POLICY += audio_policy.msm7630_fusion +#AUDIO_POLICY += audio_policy.default +AUDIO_POLICY += audio_policy.conf +AUDIO_POLICY += audio_policy_8064.conf +AUDIO_POLICY += audio_policy.msm8916 +AUDIO_POLICY += audio_policy.msm8909 +AUDIO_POLICY += audio_policy.msm8994 + +#tinyalsa test apps +TINY_ALSA_TEST_APPS := tinyplay +TINY_ALSA_TEST_APPS += tinycap +TINY_ALSA_TEST_APPS += tinymix +TINY_ALSA_TEST_APPS += tinypcminfo +TINY_ALSA_TEST_APPS += cplay + +#AMPLOADER +AMPLOADER := amploader + +#APPS +APPS := QualcommSoftAP +APPS += TSCalibration + +#BRCTL +BRCTL := brctl +BRTCL += libbridge + +#BSON +BSON := libbson + +#BT +BT := javax.btobex +BT += libattrib_static +BT += hcidump.sh +BT += libbt-vendor +BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/qcom/common + +#C2DColorConvert +C2DCC := libc2dcolorconvert + +CHROMIUM := libwebviewchromium +CHROMIUM += libwebviewchromium_loader +CHROMIUM += libwebviewchromium_plat_support + +#CIMAX +CIMAX := libcimax_spi + +#CONNECTIVITY +CONNECTIVITY := libcnefeatureconfig +CONNECTIVITY += services-ext + +#CURL +CURL := libcurl +CURL += curl + +#CM +CM := CMFileManager +CM += Trebuchet +CM += Eleven + +#DASH +DASH := libdashplayer +DASH += libqcmediaplayer +DASH += qcmediaplayer +DASH += libextmedia_jni + +#EXTENDEDMEDIA_EXT +EXTENDEDMEDIA_EXT := libextendedmediaextractor +EXTENDEDMEDIA_EXT += libextendedmediaextractor_jni +EXTENDEDMEDIA_EXT += extendedmediaextractor +EXTENDEDMEDIA_EXT += ExtendedMediaPlayer + + +#DATA_OS +DATA_OS := librmnetctl +DATA_OS += rmnetcli + +#E2FSPROGS +E2FSPROGS := e2fsck + +#EBTABLES +EBTABLES := ebtables +EBTABLES += ethertypes +EBTABLES += libebtc + +#FASTPOWERON +FASTPOWERON := FastBoot + +#FM +FM := qcom.fmradio +FM += libqcomfm_jni +FM += libfmjni + +#GPS +GPS_HARDWARE := gps.conf +GPS_HARDWARE += gps.default +GPS_HARDWARE += gps.mahimahi +GPS_HARDWARE += libloc_adapter +GPS_HARDWARE += libgps.utils +GPS_HARDWARE += libloc_eng +GPS_HARDWARE += libloc_api_v02 + +#HDMID +HDMID := hdmid + +#HOSTAPD +HOSTAPD := hostapd +HOSTAPD += hostapd_cli +HOSTAPD += nt_password_hash +HOSTAPD += hlr_auc_gw +HOSTAPD += test-milenage +HOSTAPD += hostapd.conf +HOSTAPD += hostapd_default.conf +HOSTAPD += hostapd.deny +HOSTAPD += hostapd.accept + +#I420COLORCONVERT +I420CC := libI420colorconvert + +#INIT +INIT := init.qcom.composition_type.sh +INIT += init.target.8x25.sh +INIT += init.qcom.mdm_links.sh +INIT += init.qcom.modem_links.sh +INIT += init.qcom.sensor.sh +INIT += init.target.rc +INIT += init.qti.ims.sh +INIT += init.qcom.bt.sh +INIT += hsic.control.bt.sh +INIT += init.qcom.coex.sh +INIT += init.qcom.fm.sh +INIT += init.qcom.early_boot.sh +INIT += init.qcom.post_boot.sh +INIT += init.qcom.syspart_fixup.sh +INIT += init.qcom.rc +INIT += init.qcom.factory.rc +INIT += init.qcom.sdio.sh +INIT += init.qcom.sh +INIT += init.qcom.class_core.sh +INIT += init.class_main.sh +INIT += init.qcom.wifi.sh +INIT += vold.fstab +INIT += init.qcom.ril.path.sh +INIT += init.qcom.usb.rc +INIT += init.qcom.usb.sh +INIT += usf_post_boot.sh +INIT += init.qcom.efs.sync.sh +INIT += ueventd.qcom.rc +INIT += init.ath3k.bt.sh +INIT += qca6234-service.sh +INIT += init.qcom.audio.sh +INIT += ssr_setup +INIT += enable_swap.sh +INIT += init.mdm.sh +INIT += init.qcom.uicc.sh +INIT += fstab.qcom +INIT += init.qcom.debug.sh +INIT += init.qcom.zram.sh +INIT += init.qti.memcheck.sh +INIT += init.qti.synaptics_dsx_qhd.sh +INIT += init.qcom.bms.sh + +#IPROUTE2 +IPROUTE2 := ip +IPROUTE2 += libiprouteutil + +#IPTABLES +IPTABLES := libiptc +IPTABLES += libext +IPTABLES += iptables + +#KERNEL_TESTS +KERNEL_TESTS := mm-audio-native-test + +#KEYPAD +KEYPAD := ffa-keypad_qwerty.kcm +KEYPAD += ffa-keypad_numeric.kcm +KEYPAD += fluid-keypad_qwerty.kcm +KEYPAD += fluid-keypad_numeric.kcm +KEYPAD += surf_keypad_qwerty.kcm +KEYPAD += surf_keypad_numeric.kcm +KEYPAD += surf_keypad.kcm +KEYPAD += 7k_ffa_keypad.kcm +KEYPAD += 7x27a_kp.kcm +KEYPAD += keypad_8960_qwerty.kcm +KEYPAD += 7k_ffa_keypad.kl +KEYPAD += 7k_handset.kl +KEYPAD += 7x27a_kp.kl +KEYPAD += 8660_handset.kl +KEYPAD += atmel_mxt_ts.kl +KEYPAD += synaptics_rmi4_i2c.kl +KEYPAD += synaptics_dsx.kl +KEYPAD += cyttsp-i2c.kl +KEYPAD += ft5x06_ts.kl +KEYPAD += ffa-keypad.kl +KEYPAD += fluid-keypad.kl +KEYPAD += gpio-keys.kl +KEYPAD += keypad_8960.kl +KEYPAD += keypad_8960_liquid.kl +KEYPAD += synaptics_rmi4_i2c.kl +KEYPAD += msm_tma300_ts.kl +KEYPAD += philips_remote_ir.kl +KEYPAD += samsung_remote_ir.kl +KEYPAD += surf_keypad.kl +KEYPAD += ue_rf4ce_remote.kl + +#KS +KS := ks +KS += qcks +KS += efsks + +#LIB_NL +LIB_NL := libnl_2 + +#LIB_XML2 +LIB_XML2 := libxml2 + +#LIBCAMERA +LIBCAMERA := camera.apq8084 +LIBCAMERA += camera.msm8974 +LIBCAMERA += camera.msm8226 +LIBCAMERA += camera.msm8610 +LIBCAMERA += camera.msm8960 +LIBCAMERA += camera.msm8660 +LIBCAMERA += camera.msm7630_surf +LIBCAMERA += camera.msm7630_fusion +LIBCAMERA += camera.msm7627a +LIBCAMERA += camera.msm8916 +LIBCAMERA += camera.msm8994 +LIBCAMERA += camera.msm8909 +LIBCAMERA += libcamera +LIBCAMERA += libmmcamera_interface +LIBCAMERA += libmmcamera_interface2 +LIBCAMERA += libmmjpeg_interface +LIBCAMERA += libqomx_core +LIBCAMERA += mm-qcamera-app +LIBCAMERA += camera_test +LIBCAMERA += org.codeaurora.camera + +#LIBCOPYBIT +LIBCOPYBIT := copybit.msm8660 +LIBCOPYBIT += copybit.msm8960 +LIBCOPYBIT += copybit.msm8974 +LIBCOPYBIT += copybit.msm8226 +LIBCOPYBIT += copybit.msm8610 +LIBCOPYBIT += copybit.msm8909 +LIBCOPYBIT += copybit.msm8916 +LIBCOPYBIT += copybit.msm8994 +LIBCOPYBIT += copybit.apq8084 +LIBCOPYBIT += copybit.msm7k +LIBCOPYBIT += copybit.qsd8k +LIBCOPYBIT += copybit.msm7630_surf +LIBCOPYBIT += copybit.msm7630_fusion +LIBCOPYBIT += copybit.msm7627_surf +LIBCOPYBIT += copybit.msm7627_6x +LIBCOPYBIT += copybit.msm7627a + +#LIBGESTURES +LIBGESTURES := libgestures +LIBGESTURES += gestures.msm8960 + +#LIBGRALLOC +LIBGRALLOC := gralloc.default +LIBGRALLOC += gralloc.msm8660 +LIBGRALLOC += gralloc.msm8960 +LIBGRALLOC += gralloc.msm8974 +LIBGRALLOC += gralloc.msm8226 +LIBGRALLOC += gralloc.msm8610 +LIBGRALLOC += gralloc.msm8909 +LIBGRALLOC += gralloc.msm8916 +LIBGRALLOC += gralloc.msm8994 +LIBGRALLOC += gralloc.apq8084 +LIBGRALLOC += gralloc.mpq8092 +LIBGRALLOC += gralloc.msm7k +LIBGRALLOC += gralloc.msm7630_surf +LIBGRALLOC += gralloc.msm7630_fusion +LIBGRALLOC += gralloc.msm7627_surf +LIBGRALLOC += gralloc.msm7627_6x +LIBGRALLOC += gralloc.msm7627a +LIBGRALLOC += libmemalloc + +#memtrack +LIBMEMTRACK := memtrack.default +LIBMEMTRACK += memtrack.msm8974 +LIBMEMTRACK += memtrack.msm8226 +LIBMEMTRACK += memtrack.msm8909 +LIBMEMTRACK += memtrack.msm8916 +LIBMEMTRACK += memtrack.msm8994 +LIBMEMTRACK += memtrack.msm8610 +LIBMEMTRACK += memtrack.apq8084 +LIBMEMTRACK += memtrack.mpq8092 + +#LIBLIGHTS +LIBLIGHTS := lights.msm8660 +LIBLIGHTS += lights.msm8960 +LIBLIGHTS += lights.msm8974 +LIBLIGHTS += lights.msm8226 +LIBLIGHTS += lights.msm8909 +LIBLIGHTS += lights.msm8916 +LIBLIGHTS += lights.msm8994 +LIBLIGHTS += lights.msm7k +LIBLIGHTS += lights.msm7630_surf +LIBLIGHTS += lights.msm7630_fusion +LIBLIGHTS += lights.msm7627_surf +LIBLIGHTS += lights.msm7627_6x +LIBLIGHTS += lights.msm7627a +LIBLIGHTS += lights.msm8610 +LIBLIGHTS += lights.apq8084 + +#LIBHWCOMPOSER +LIBHWCOMPOSER := hwcomposer.msm8660 +LIBHWCOMPOSER += hwcomposer.msm8960 +LIBHWCOMPOSER += hwcomposer.msm8974 +LIBHWCOMPOSER += hwcomposer.msm8226 +LIBHWCOMPOSER += hwcomposer.msm8610 +LIBHWCOMPOSER += hwcomposer.msm8909 +LIBHWCOMPOSER += hwcomposer.msm8916 +LIBHWCOMPOSER += hwcomposer.msm8994 +LIBHWCOMPOSER += hwcomposer.apq8084 +LIBHWCOMPOSER += hwcomposer.mpq8092 +LIBHWCOMPOSER += hwcomposer.msm7k +LIBHWCOMPOSER += hwcomposer.msm7630_surf +LIBHWCOMPOSER += hwcomposer.msm7630_fusion +LIBHWCOMPOSER += hwcomposer.msm7627_surf +LIBHWCOMPOSER += hwcomposer.msm7627_6x +LIBHWCOMPOSER += hwcomposer.msm7627a + +#LIBAUDIOPARAM -- Exposing AudioParameter as dynamic library for SRS TruMedia to work +LIBAUDIOPARAM := libaudioparameter + +#LIBAUDIORESAMPLER -- High-quality audio resampler +LIBAUDIORESAMPLER := libaudio-resampler + +#LIBOPENCOREHW +LIBOPENCOREHW := libopencorehw + +#LIBOVERLAY +LIBOVERLAY := liboverlay +LIBOVERLAY += overlay.default + +#LIBGENLOCK +LIBGENLOCK := libgenlock + +#LIBPERFLOCK +LIBPERFLOCK := org.codeaurora.Performance + +#LIBQCOMUI +LIBQCOMUI := libQcomUI + +#LIBQDUTILS +LIBQDUTILS := libqdutils + +#LIBQDMETADATA +LIBQDMETADATA := libqdMetaData + +#LIBPOWER +LIBPOWER := power.qcom + +#LLVM for RenderScript +#use qcom LLVM +$(call inherit-product-if-exists, external/llvm/llvm-select.mk) + +#LOC_API +LOC_API := libloc_api-rpc-qc + +#MEDIA_PROFILES +MEDIA_PROFILES := media_profiles.xml + +#MM_AUDIO +MM_AUDIO := libOmxAacDec +MM_AUDIO += libOmxAacEnc +MM_AUDIO += libOmxAmrEnc +MM_AUDIO += libOmxEvrcEnc +MM_AUDIO += libOmxMp3Dec +MM_AUDIO += libOmxQcelp13Enc +MM_AUDIO += libOmxAc3HwDec + +#MM_CORE +MM_CORE := libmm-omxcore +MM_CORE += libOmxCore + +#MM_VIDEO +MM_VIDEO := ast-mm-vdec-omx-test +MM_VIDEO += libdivxdrmdecrypt +MM_VIDEO += libavenhancements +MM_VIDEO += liblasic +MM_VIDEO += libOmxSwVencMpeg4 +MM_VIDEO += libOmxVdec +MM_VIDEO += libOmxVdecHevc +MM_VIDEO += libOmxVdpp +MM_VIDEO += libOmxVenc +MM_VIDEO += libOmxVidEnc +MM_VIDEO += libstagefrighthw +MM_VIDEO += mm-vdec-omx-property-mgr +MM_VIDEO += mm-vdec-omx-test +MM_VIDEO += mm-venc-omx-test +MM_VIDEO += mm-venc-omx-test720p +MM_VIDEO += mm-video-driver-test +MM_VIDEO += mm-video-encdrv-test + +#OPENCORE +OPENCORE := libomx_aacdec_sharedlibrary +OPENCORE += libomx_amrdec_sharedlibrary +OPENCORE += libomx_amrenc_sharedlibrary +OPENCORE += libomx_avcdec_sharedlibrary +OPENCORE += libomx_m4vdec_sharedlibrary +OPENCORE += libomx_mp3dec_sharedlibrary +OPENCORE += libomx_sharedlibrary +OPENCORE += libopencore_author +OPENCORE += libopencore_common +OPENCORE += libopencore_download +OPENCORE += libopencore_downloadreg +OPENCORE += libopencore_mp4local +OPENCORE += libopencore_mp4localreg +OPENCORE += libopencore_net_support +OPENCORE += libopencore_player +OPENCORE += libopencore_rtsp +OPENCORE += libopencore_rtspreg +OPENCORE += libpvdecoder_gsmamr +OPENCORE += libpvplayer_engine +OPENCORE += libpvamrwbdecoder +OPENCORE += libpvauthorengine +OPENCORE += libomx_amr_component_lib +OPENCORE += pvplayer +OPENCORE += pvplayer_engine_test + +#PPP +PPP := ip-up-vpn + +#PVOMX +PVOMX := libqcomm_omx +PVOMX += 01_qcomm_omx + +#RF4CE +RF4CE := RemoTI_RNP.cfg +RF4CE += rf4ce + +#SENSORS_HARDWARE +SENSORS_HARDWARE := sensors.msm7630_surf +SENSORS_HARDWARE += sensors.msm7630_fusion + +#SOFTAP +SOFTAP := libQWiFiSoftApCfg +SOFTAP += libqsap_sdk + +#STK +STK := Stk + +#STM LOG +STMLOG := libstm-log + +#TSLIB_EXTERNAL +TSLIB_EXTERNAL := corgi +TSLIB_EXTERNAL += dejitter +TSLIB_EXTERNAL += inputraw +TSLIB_EXTERNAL += linear +TSLIB_EXTERNAL += variance +TSLIB_EXTERNAL += pthres +TSLIB_EXTERNAL += libtslib +TSLIB_EXTERNAL += tsprint +TSLIB_EXTERNAL += tstest +TSLIB_EXTERNAL += tsutils +TSLIB_EXTERNAL += tscalib +TSLIB_EXTERNAL += ts + +#QRGND +QRGND := qrngd +QRGND += qrngp +QRGND += qrngtest + +#WPA +WPA := wpa_supplicant.conf +WPA += wpa_supplicant_wcn.conf +WPA += wpa_supplicant_ath6kl.conf +WPA += wpa_supplicant + +#ZLIB +ZLIB := gzip +ZLIB += minigzip +ZLIB += libunz + +#Charger +CHARGER := charger +CHARGER += charger_res_images + +#VT_JNI +VT_JNI := libvt_jni +VT_JNI += libimscamera_jni + +# VT QTI Permissions +VT_QTI_PERMISSIONS := qti_permissions.xml + +#IMS SETTINGS +IMS_SETTINGS := imssettings + +#IMS Extension module for Android Telephony +IMS_EXT := ims-ext-common + +#RCS +RCS := rcs_service_aidl +RCS += rcs_service_aidl.xml +RCS += rcs_service_aidl_static +RCS += rcs_service_api +RCS += rcs_service_api.xml + +#CRDA +CRDA := crda +CRDA += regdbdump +CRDA += regulatory.bin +CRDA += linville.key.pub.pem +CRDA += init.crda.sh + +#WLAN +WLAN := prima_wlan.ko +WLAN += pronto_wlan.ko + +PRODUCT_PACKAGES := \ + AccountAndSyncSettings \ + DeskClock \ + AlarmProvider \ + Bluetooth \ + Calculator \ + Calendar \ + Camera \ + CellBroadcastReceiver \ + CertInstaller \ + DrmProvider \ + Email \ + Gallery2 \ + LatinIME \ + Mms \ + Music \ + Phone \ + Provision \ + Protips \ + QuickSearchBox \ + Settings \ + Sync \ + SystemUI \ + Updater \ + CalendarProvider \ + SyncProvider \ + IM \ + VoiceDialer \ + FM2 \ + FMRadio \ + FMRecord \ + VideoEditor + + +ifneq ($(TARGET_USES_AOSP),true) +PRODUCT_PACKAGES += \ + BluetoothExt \ + BTTestApp \ + HiddTestApp \ + BTLogKit \ + BTLogSave +endif + +PRODUCT_PACKAGES += $(ALSA_HARDWARE) +PRODUCT_PACKAGES += $(ALSA_UCM) +PRODUCT_PACKAGES += $(ANGLE) +PRODUCT_PACKAGES += $(APPOPS_POLICY) +PRODUCT_PACKAGES += $(AUDIO_HARDWARE) +PRODUCT_PACKAGES += $(AUDIO_POLICY) +PRODUCT_PACKAGES += $(TINY_ALSA_TEST_APPS) +PRODUCT_PACKAGES += $(AMPLOADER) +PRODUCT_PACKAGES += $(APPS) +PRODUCT_PACKAGES += $(BRCTL) +PRODUCT_PACKAGES += $(BSON) +PRODUCT_PACKAGES += $(BT) +PRODUCT_PACKAGES += $(C2DCC) +PRODUCT_PACKAGES += $(CHROMIUM) +PRODUCT_PACKAGES += $(CIMAX) +PRODUCT_PACKAGES += $(CONNECTIVITY) +PRODUCT_PACKAGES += $(CHARGER) +PRODUCT_PACKAGES += $(CURL) +PRODUCT_PACKAGES += $(CM) +PRODUCT_PACKAGES += $(RCS) +PRODUCT_PACKAGES += $(DASH) +PRODUCT_PACKAGES += $(DATA_OS) +PRODUCT_PACKAGES += $(E2FSPROGS) +PRODUCT_PACKAGES += $(EBTABLES) +PRODUCT_PACKAGES += $(EXTENDEDMEDIA_EXT) +PRODUCT_PACKAGES += $(FASTPOWERON) +PRODUCT_PACKAGES += $(FM) +PRODUCT_PACKAGES += $(GPS_HARDWARE) +PRODUCT_PACKAGES += $(HDMID) +PRODUCT_PACKAGES += $(HOSTAPD) +PRODUCT_PACKAGES += $(I420CC) +PRODUCT_PACKAGES += $(INIT) +PRODUCT_PACKAGES += $(IPROUTE2) +PRODUCT_PACKAGES += $(IPTABLES) +PRODUCT_PACKAGES += $(KERNEL_TESTS) +PRODUCT_PACKAGES += $(KEYPAD) +PRODUCT_PACKAGES += $(KS) +PRODUCT_PACKAGES += $(LIB_NL) +PRODUCT_PACKAGES += $(LIB_XML2) +PRODUCT_PACKAGES += $(LIBCAMERA) +PRODUCT_PACKAGES += $(LIBGESTURES) +PRODUCT_PACKAGES += $(LIBCOPYBIT) +PRODUCT_PACKAGES += $(LIBGRALLOC) +PRODUCT_PACKAGES += $(LIBMEMTRACK) +PRODUCT_PACKAGES += $(LIBLIGHTS) +PRODUCT_PACKAGES += $(LIBAUDIOPARAM) +PRODUCT_PACKAGES += $(LIBAUDIORESAMPLER) +PRODUCT_PACKAGES += $(LIBOPENCOREHW) +PRODUCT_PACKAGES += $(LIBOVERLAY) +PRODUCT_PACKAGES += $(LIBHWCOMPOSER) +PRODUCT_PACKAGES += $(LIBGENLOCK) +PRODUCT_PACKAGES += $(LIBPERFLOCK) +PRODUCT_PACKAGES += $(LIBQCOMUI) +PRODUCT_PACKAGES += $(LIBQDUTILS) +PRODUCT_PACKAGES += $(LIBQDMETADATA) +PRODUCT_PACKAGES += $(LIBPOWER) +PRODUCT_PACKAGES += $(LOC_API) +PRODUCT_PACKAGES += $(MEDIA_PROFILES) +PRODUCT_PACKAGES += $(MM_AUDIO) +PRODUCT_PACKAGES += $(MM_CORE) +PRODUCT_PACKAGES += $(MM_VIDEO) +PRODUCT_PACKAGES += $(OPENCORE) +PRODUCT_PACKAGES += $(PPP) +PRODUCT_PACKAGES += $(PVOMX) +PRODUCT_PACKAGES += $(RF4CE) +PRODUCT_PACKAGES += $(SENSORS_HARDWARE) +PRODUCT_PACKAGES += $(SOFTAP) +PRODUCT_PACKAGES += $(STK) +PRODUCT_PACKAGES += $(STMLOG) +PRODUCT_PACKAGES += $(TSLIB_EXTERNAL) +PRODUCT_PACKAGES += $(QRGND) +PRODUCT_PACKAGES += $(UPDATER) +PRODUCT_PACKAGES += $(WPA) +PRODUCT_PACKAGES += $(ZLIB) +PRODUCT_PACKAGES += $(VT_JNI) +PRODUCT_PACKAGES += $(VT_QTI_PERMISSIONS) +PRODUCT_PACKAGES += $(IMS_SETTINGS) +PRODUCT_PACKAGES += $(CRDA) +PRODUCT_PACKAGES += $(WLAN) +PRODUCT_PACKAGES += $(IMS_EXT) + +# Live Wallpapers +PRODUCT_PACKAGES += \ + LiveWallpapers \ + LiveWallpapersPicker \ + VisualizationWallpapers \ + librs_jni + +# Filesystem management tools +PRODUCT_PACKAGES += \ + make_ext4fs \ + setup_fs + +# Qcril configuration file +PRODUCT_PACKAGES += qcril.db + +# Flatland +PRODUCT_PACKAGES += flatland + +# MSM updater library +PRODUCT_PACKAGES += librecovery_updater_msm + +# vcard jar +PRODUCT_PACKAGES += vcard + +# tcmiface for tcm support +PRODUCT_PACKAGES += tcmiface + +# healthd libaray expanded for mode charger +PRODUCT_PACKAGES += libhealthd.msm + +#intialise PRODUCT_PACKAGES_DEBUG list for debug modules +PRODUCT_PACKAGES_DEBUG := init.qcom.testscripts.sh + +# ITE tech firmware +PRODUCT_PACKAGES += it7260_cfg_62011E01.bin +PRODUCT_PACKAGES += it7260_fw_050D0014.bin + +PRODUCT_COPY_FILES := \ + frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:system/etc/permissions/android.hardware.camera.flash-autofocus.xml \ + frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \ + frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \ + frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \ + frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \ + frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \ + frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \ + frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \ + frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \ + frameworks/native/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml \ + frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \ + frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \ + frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \ + frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \ + frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \ + frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \ + +ifneq ($(TARGET_SUPPORTS_WEARABLES),true) +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml +endif + +# Bluetooth configuration files +#PRODUCT_COPY_FILES += \ + system/bluetooth/data/audio.conf:system/etc/bluetooth/audio.conf \ + system/bluetooth/data/auto_pairing.conf:system/etc/bluetooth/auto_pairing.conf \ + system/bluetooth/data/blacklist.conf:system/etc/bluetooth/blacklist.conf \ + system/bluetooth/data/input.conf:system/etc/bluetooth/input.conf \ + system/bluetooth/data/network.conf:system/etc/bluetooth/network.conf \ + +#ifeq ($(BOARD_HAVE_BLUETOOTH_BLUEZ),true) +#PRODUCT_COPY_FILES += \ + system/bluetooth/data/stack.conf:system/etc/bluetooth/stack.conf +#endif # BOARD_HAVE_BLUETOOTH_BLUEZ + +# gps/location secuity configuration file +PRODUCT_COPY_FILES += \ + device/qcom/common/sec_config:system/etc/sec_config + +PRODUCT_COPY_FILES += \ + frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:system/etc/media_codecs_google_audio.xml \ + frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:system/etc/media_codecs_google_telephony.xml \ + frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:system/etc/media_codecs_google_video.xml \ + device/qcom/common/media/media_profiles.xml:system/etc/media_profiles.xml \ + device/qcom/common/media/media_codecs.xml:system/etc/media_codecs.xml + +# enable overlays to use our version of +# source/resources etc. +DEVICE_PACKAGE_OVERLAYS += device/qcom/common/device/overlay +PRODUCT_PACKAGE_OVERLAYS += device/qcom/common/product/overlay + +# include additional build utilities +-include device/qcom/common/utils.mk + +#Enabling Ring Tones +#include frameworks/base/data/sounds/OriginalAudio.mk + +#Enabling video for live effects +-include frameworks/base/data/videos/VideoPackage1.mk + +# dm-verity definitions +PRODUCT_VERITY_PARTITION=/dev/block/bootdevice/by-name/system +$(call inherit-product, build/target/product/verity.mk) + +#skip boot jars check +SKIP_BOOT_JARS_CHECK := true + +ifeq ($(TARGET_BUILD_VARIANT),user) +PRODUCT_DEFAULT_PROPERTY_OVERRIDES+= \ + ro.adb.secure=1 +endif diff --git a/bdroid_buildcfg.h b/bdroid_buildcfg.h index df500c39f..82283a5ac 100644 --- a/bdroid_buildcfg.h +++ b/bdroid_buildcfg.h @@ -22,7 +22,13 @@ #ifndef _BDROID_BUILDCFG_H #define _BDROID_BUILDCFG_H #define BTM_DEF_LOCAL_NAME "QCOM-BTD" -// Enables Interleave scan -#define BTA_HOST_INTERLEAVE_SEARCH TRUE -#define MAX_L2CAP_CHANNELS 14 +// Disables read remote device feature +#define BTA_SKIP_BLE_READ_REMOTE_FEAT FALSE +#define MAX_ACL_CONNECTIONS 7 +#define MAX_L2CAP_CHANNELS 16 +#define BLE_VND_INCLUDED TRUE +// skips conn update at conn completion +#define BTA_BLE_SKIP_CONN_UPD FALSE +#define BLE_PERIPHERAL_ADV_NAME FALSE +#define BT_CLEAN_TURN_ON_DISABLED 1 #endif diff --git a/build/tasks/vendor_bootjars.mk b/build/tasks/vendor_bootjars.mk new file mode 100644 index 000000000..cc89cc5c2 --- /dev/null +++ b/build/tasks/vendor_bootjars.mk @@ -0,0 +1,15 @@ +# This makefile is used to include +# extra product boot jars for SDK + +ifneq ($(call is-vendor-board-platform,QCOM),true) + +#add extra jars here +PRODUCT_BOOT_JARS += tcmiface + +# Preloading QPerformance jar to ensure faster perflocks in Boost Framework +PRODUCT_BOOT_JARS += QPerformance + +#call dex_preopt.mk for extra jars +include $(BUILD_SYSTEM)/dex_preopt.mk + +endif diff --git a/common.mk b/common.mk index 9a0a403f3..ef154f7ef 100644 --- a/common.mk +++ b/common.mk @@ -1,707 +1,4 @@ -# Board platforms lists to be used for -# TARGET_BOARD_PLATFORM specific featurization -QCOM_BOARD_PLATFORMS := msm7627_surf -QCOM_BOARD_PLATFORMS += msm7627_6x -QCOM_BOARD_PLATFORMS += msm7627a -QCOM_BOARD_PLATFORMS += msm7630_surf -QCOM_BOARD_PLATFORMS += msm7630_fusion -QCOM_BOARD_PLATFORMS += msm8660 -QCOM_BOARD_PLATFORMS += msm8960 -QCOM_BOARD_PLATFORMS += msm8974 -QCOM_BOARD_PLATFORMS += msm8610 -QCOM_BOARD_PLATFORMS += msm8226 -QCOM_BOARD_PLATFORMS += apq8084 -QCOM_BOARD_PLATFORMS += mpq8092 - -MSM7K_BOARD_PLATFORMS := msm7630_surf -MSM7K_BOARD_PLATFORMS += msm7630_fusion -MSM7K_BOARD_PLATFORMS += msm7627_surf -MSM7K_BOARD_PLATFORMS += msm7627_6x -MSM7K_BOARD_PLATFORMS += msm7627a -MSM7K_BOARD_PLATFORMS += msm7k - -QSD8K_BOARD_PLATFORMS := qsd8k - -TARGET_USE_VENDOR_CAMERA_EXT := true - -# Below projects/packages with LOCAL_MODULEs will be used by -# PRODUCT_PACKAGES to build LOCAL_MODULEs that are tagged with -# optional tag, which will not be available on target unless -# explicitly list here. Where project corresponds to the vars here -# in CAPs. - -#ALSA -ALSA_HARDWARE := alsa.msm8960 -ALSA_HARDWARE += alsa.msm8974 -ALSA_HARDWARE += alsa.msm8226 -ALSA_HARDWARE += alsa.msm8610 -ALSA_HARDWARE += alsa.apq8084 - -ALSA_UCM := snd_soc_msm -ALSA_UCM += snd_soc_msm_2x -ALSA_UCM += snd_soc_msm_2x_mpq -ALSA_UCM += snd_soc_msm_2x_Fusion3 -ALSA_UCM += snd_soc_msm_Sitar -ALSA_UCM += snd_soc_msm_auxpcm -ALSA_UCM += snd_soc_msm_2x_auxpcm -ALSA_UCM += snd_soc_msm_2x_mpq_auxpcm -ALSA_UCM += snd_soc_msm_2x_Fusion3_auxpcm -ALSA_UCM += snd_soc_msm_Sitar_auxpcm -ALSA_UCM += snd_soc_msm_Taiko -ALSA_UCM += snd_soc_msm_Taiko_CDP -ALSA_UCM += snd_soc_msm_Taiko_Fluid -ALSA_UCM += snd_soc_msm_Taiko_liquid -ALSA_UCM += snd_soc_apq_Taiko_DB -ALSA_UCM += snd_soc_msm_I2SFusion -ALSA_UCM += snd_soc_msm_Tapan -ALSA_UCM += snd_soc_msm_TapanLite -ALSA_UCM += snd_soc_msm_Tapan_SKUF -ALSA_UCM += snd_soc_msm_TapanLite_SKUF -ALSA_UCM += snd_soc_msm_8x10_wcd -ALSA_UCM += snd_soc_msm_8x10_wcd_skuab -ALSA_UCM += snd_soc_msm_8x10_wcd_skuaa -ALSA_UCM += snd_soc_msm_samarium_Tapan - -#ANGLE -ANGLE := libangle - -AUDIO_HARDWARE := audio.primary.mpq8064 -AUDIO_HARDWARE += audio.primary.apq8084 -AUDIO_HARDWARE += audio.primary.msm8960 -AUDIO_HARDWARE += audio.primary.msm8974 -AUDIO_HARDWARE += audio.primary.msm8226 -AUDIO_HARDWARE += audio.primary.msm8660 -AUDIO_HARDWARE += audio.primary.msm8610 -#AUDIO_HARDWARE += audio.primary.msm7627_surf -AUDIO_HARDWARE += audio.primary.msm7627a -AUDIO_HARDWARE += audio.primary.msm7630_surf -AUDIO_HARDWARE += audio.primary.msm7630_fusion -#AUDIO_HARDWARE += audio.primary.default -AUDIO_HARDWARE += audio.a2dp.default -AUDIO_HARDWARE += audio.usb.default -# -AUDIO_POLICY := audio_policy.mpq8064 -AUDIO_POLICY += audio_policy.apq8084 -AUDIO_POLICY += audio_policy.msm8960 -AUDIO_POLICY += audio_policy.msm8974 -AUDIO_POLICY += audio_policy.msm8226 -AUDIO_POLICY += audio_policy.msm8660 -AUDIO_POLICY += audio_policy.msm8610 -#AUDIO_POLICY += audio_policy.msm7627_surf -AUDIO_POLICY += audio_policy.msm7627a -AUDIO_POLICY += audio_policy.msm7630_surf -AUDIO_POLICY += audio_policy.msm7630_fusion -#AUDIO_POLICY += audio_policy.default -AUDIO_POLICY += audio_policy.conf -AUDIO_POLICY += audio_policy_8064.conf - -#tinyalsa test apps -TINY_ALSA_TEST_APPS := tinyplay -TINY_ALSA_TEST_APPS += tinycap -TINY_ALSA_TEST_APPS += tinymix -TINY_ALSA_TEST_APPS += tinypcminfo -TINY_ALSA_TEST_APPS += cplay - -#AMPLOADER -AMPLOADER := amploader - -#APPS -APPS := QualcommSoftAP -APPS += TSCalibration - -#BRCTL -BRCTL := brctl -BRTCL += libbridge - -#BSON -BSON := libbson - -#BT -BT := javax.btobex -BT += libattrib_static -BT += hcidump.sh -BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/qcom/common - -#C2DColorConvert -C2DCC := libc2dcolorconvert - -#CIMAX -CIMAX := libcimax_spi - -#CONNECTIVITY -CONNECTIVITY := libcnefeatureconfig -CONNECTIVITY += services-ext - -#CURL -CURL := libcurl -CURL += curl - -#DASH -DASH := libdashplayer -DASH += qcmediaplayer - -#DATA_OS -DATA_OS := librmnetctl -DATA_OS += rmnetcli - -#E2FSPROGS -E2FSPROGS := e2fsck - -#EBTABLES -EBTABLES := ebtables -EBTABLES += ethertypes -EBTABLES += libebtc - -#FASTPOWERON -FASTPOWERON := FastBoot - -#FM -FM := qcom.fmradio -FM += libqcomfm_jni - -#GPS -GPS_HARDWARE := gps.conf -GPS_HARDWARE += gps.default -GPS_HARDWARE += gps.mahimahi -GPS_HARDWARE += libloc_adapter -GPS_HARDWARE += libgps.utils -GPS_HARDWARE += libloc_eng -GPS_HARDWARE += libloc_api_v02 - -#HDMID -HDMID := hdmid - -#HOSTAPD -HOSTAPD := hostapd -HOSTAPD += hostapd_cli -HOSTAPD += nt_password_hash -HOSTAPD += hlr_auc_gw -HOSTAPD += test-milenage -HOSTAPD += hostapd.conf -HOSTAPD += hostapd_default.conf -HOSTAPD += hostapd.deny -HOSTAPD += hostapd.accept - -#I420COLORCONVERT -I420CC := libI420colorconvert - -#INIT -INIT := init.qcom.composition_type.sh -INIT += init.target.8x25.sh -INIT += init.qcom.mdm_links.sh -INIT += init.qcom.modem_links.sh -INIT += init.qcom.sensor.sh -INIT += init.target.rc -INIT += init.qcom.bt.sh -INIT += hsic.control.bt.sh -INIT += init.qcom.coex.sh -INIT += init.qcom.fm.sh -INIT += init.qcom.early_boot.sh -INIT += init.qcom.post_boot.sh -INIT += init.qcom.syspart_fixup.sh -INIT += init.qcom.rc -INIT += init.qcom.factory.sh -INIT += init.qcom.sdio.sh -INIT += init.qcom.sh -INIT += init.qcom.class_core.sh -INIT += init.class_main.sh -INIT += init.qcom.wifi.sh -INIT += vold.fstab -INIT += init.qcom.ril.path.sh -INIT += init.qcom.ril.sh -INIT += init.qcom.usb.rc -INIT += init.qcom.usb.sh -INIT += usf_post_boot.sh -INIT += init.qcom.efs.sync.sh -INIT += ueventd.qcom.rc -INIT += init.ath3k.bt.sh -INIT += init.qcom.audio.sh -INIT += init.qcom.ssr.sh -INIT += init.mdm.sh - -#IPROUTE2 -IPROUTE2 := ip -IPROUTE2 += libiprouteutil - -#IPTABLES -IPTABLES := libiptc -IPTABLES += libext -IPTABLES += iptables - -#KERNEL_TESTS -KERNEL_TESTS := mm-audio-native-test - -#KEYPAD -KEYPAD := ffa-keypad_qwerty.kcm -KEYPAD += ffa-keypad_numeric.kcm -KEYPAD += fluid-keypad_qwerty.kcm -KEYPAD += fluid-keypad_numeric.kcm -KEYPAD += surf_keypad_qwerty.kcm -KEYPAD += surf_keypad_numeric.kcm -KEYPAD += surf_keypad.kcm -KEYPAD += 7k_ffa_keypad.kcm -KEYPAD += 7x27a_kp.kcm -KEYPAD += keypad_8960_qwerty.kcm -KEYPAD += 7k_ffa_keypad.kl -KEYPAD += 7k_handset.kl -KEYPAD += 7x27a_kp.kl -KEYPAD += 8660_handset.kl -KEYPAD += atmel_mxt_ts.kl -KEYPAD += synaptics_rmi4_i2c.kl -KEYPAD += cyttsp-i2c.kl -KEYPAD += ft5x06_ts.kl -KEYPAD += ffa-keypad.kl -KEYPAD += fluid-keypad.kl -KEYPAD += gpio-keys.kl -KEYPAD += keypad_8960.kl -KEYPAD += keypad_8960_liquid.kl -KEYPAD += synaptics_rmi4_i2c.kl -KEYPAD += msm_tma300_ts.kl -KEYPAD += philips_remote_ir.kl -KEYPAD += samsung_remote_ir.kl -KEYPAD += surf_keypad.kl -KEYPAD += ue_rf4ce_remote.kl - -#KS -KS := ks -KS += qcks -KS += efsks - -#LIB_NL -LIB_NL := libnl_2 - -#LIB_XML2 -LIB_XML2 := libxml2 - -#LIBCAMERA -LIBCAMERA := camera.apq8084 -LIBCAMERA += camera.msm8974 -LIBCAMERA += camera.msm8226 -LIBCAMERA += camera.msm8610 -LIBCAMERA += camera.msm8960 -LIBCAMERA += camera.msm8660 -LIBCAMERA += camera.msm7630_surf -LIBCAMERA += camera.msm7630_fusion -LIBCAMERA += camera.msm7627a -LIBCAMERA += libcamera -LIBCAMERA += libmmcamera_interface -LIBCAMERA += libmmcamera_interface2 -LIBCAMERA += libmmjpeg_interface -LIBCAMERA += libqomx_core -LIBCAMERA += mm-qcamera-app - -#LIBCOPYBIT -LIBCOPYBIT := copybit.msm8660 -LIBCOPYBIT += copybit.msm8960 -LIBCOPYBIT += copybit.msm8974 -LIBCOPYBIT += copybit.msm8226 -LIBCOPYBIT += copybit.msm8610 -LIBCOPYBIT += copybit.apq8084 -LIBCOPYBIT += copybit.msm7k -LIBCOPYBIT += copybit.qsd8k -LIBCOPYBIT += copybit.msm7630_surf -LIBCOPYBIT += copybit.msm7630_fusion -LIBCOPYBIT += copybit.msm7627_surf -LIBCOPYBIT += copybit.msm7627_6x -LIBCOPYBIT += copybit.msm7627a - -#LIBGESTURES -LIBGESTURES := libgestures -LIBGESTURES += gestures.msm8960 - -#LIBGRALLOC -LIBGRALLOC := gralloc.default -LIBGRALLOC += gralloc.msm8660 -LIBGRALLOC += gralloc.msm8960 -LIBGRALLOC += gralloc.msm8974 -LIBGRALLOC += gralloc.msm8226 -LIBGRALLOC += gralloc.msm8610 -LIBGRALLOC += gralloc.apq8084 -LIBGRALLOC += gralloc.msm7k -LIBGRALLOC += gralloc.msm7630_surf -LIBGRALLOC += gralloc.msm7630_fusion -LIBGRALLOC += gralloc.msm7627_surf -LIBGRALLOC += gralloc.msm7627_6x -LIBGRALLOC += gralloc.msm7627a -LIBGRALLOC += libmemalloc - -#LIBLIGHTS -LIBLIGHTS := lights.msm8660 -LIBLIGHTS += lights.msm8960 -LIBLIGHTS += lights.msm8974 -LIBLIGHTS += lights.msm8226 -LIBLIGHTS += lights.msm7k -LIBLIGHTS += lights.msm7630_surf -LIBLIGHTS += lights.msm7630_fusion -LIBLIGHTS += lights.msm7627_surf -LIBLIGHTS += lights.msm7627_6x -LIBLIGHTS += lights.msm7627a -LIBLIGHTS += lights.msm8610 -LIBLIGHTS += lights.apq8084 - -#LIBHWCOMPOSER -LIBHWCOMPOSER := hwcomposer.msm8660 -LIBHWCOMPOSER += hwcomposer.msm8960 -LIBHWCOMPOSER += hwcomposer.msm8974 -LIBHWCOMPOSER += hwcomposer.msm8226 -LIBHWCOMPOSER += hwcomposer.msm8610 -LIBHWCOMPOSER += hwcomposer.apq8084 -LIBHWCOMPOSER += hwcomposer.msm7k -LIBHWCOMPOSER += hwcomposer.msm7630_surf -LIBHWCOMPOSER += hwcomposer.msm7630_fusion -LIBHWCOMPOSER += hwcomposer.msm7627_surf -LIBHWCOMPOSER += hwcomposer.msm7627_6x -LIBHWCOMPOSER += hwcomposer.msm7627a - -#LIBAUDIOPARAM -- Exposing AudioParameter as dynamic library for SRS TruMedia to work -LIBAUDIOPARAM := libaudioparameter - -#LIBAUDIORESAMPLER -- High-quality audio resampler -LIBAUDIORESAMPLER := libaudio-resampler - -#LIBOPENCOREHW -LIBOPENCOREHW := libopencorehw - -#LIBOVERLAY -LIBOVERLAY := liboverlay -LIBOVERLAY += overlay.default - -#LIBGENLOCK -LIBGENLOCK := libgenlock - -#LIBPERFLOCK -LIBPERFLOCK := org.codeaurora.Performance - -#LIBQCOMUI -LIBQCOMUI := libQcomUI - -#LIBQDUTILS -LIBQDUTILS := libqdutils - -#LIBQDMETADATA -LIBQDMETADATA := libqdMetaData - -#LIBPOWER -LIBPOWER := power.qcom - -#LLVM for RenderScript -#use qcom LLVM -$(call inherit-product-if-exists, external/llvm/llvm-select.mk) - -#LOC_API -LOC_API := libloc_api-rpc-qc - -#MEDIA_PROFILES -MEDIA_PROFILES := media_profiles.xml - -#MM_AUDIO -MM_AUDIO := libOmxAacDec -MM_AUDIO += libOmxAacEnc -MM_AUDIO += libOmxAmrEnc -MM_AUDIO += libOmxEvrcEnc -MM_AUDIO += libOmxMp3Dec -MM_AUDIO += libOmxQcelp13Enc -MM_AUDIO += libOmxAc3HwDec - -#MM_CORE -MM_CORE := libmm-omxcore -MM_CORE += libOmxCore - -#MM_VIDEO -MM_VIDEO := ast-mm-vdec-omx-test -MM_VIDEO += libdivxdrmdecrypt -MM_VIDEO += liblasic -MM_VIDEO += libOmxVdec -MM_VIDEO += libOmxVdecHevc -MM_VIDEO += libOmxVenc -MM_VIDEO += libOmxVidEnc -MM_VIDEO += libstagefrighthw -MM_VIDEO += mm-vdec-omx-property-mgr -MM_VIDEO += mm-vdec-omx-test -MM_VIDEO += mm-venc-omx-test -MM_VIDEO += mm-venc-omx-test720p -MM_VIDEO += mm-video-driver-test -MM_VIDEO += mm-video-encdrv-test - -#OPENCORE -OPENCORE := libomx_aacdec_sharedlibrary -OPENCORE += libomx_amrdec_sharedlibrary -OPENCORE += libomx_amrenc_sharedlibrary -OPENCORE += libomx_avcdec_sharedlibrary -OPENCORE += libomx_m4vdec_sharedlibrary -OPENCORE += libomx_mp3dec_sharedlibrary -OPENCORE += libomx_sharedlibrary -OPENCORE += libopencore_author -OPENCORE += libopencore_common -OPENCORE += libopencore_download -OPENCORE += libopencore_downloadreg -OPENCORE += libopencore_mp4local -OPENCORE += libopencore_mp4localreg -OPENCORE += libopencore_net_support -OPENCORE += libopencore_player -OPENCORE += libopencore_rtsp -OPENCORE += libopencore_rtspreg -OPENCORE += libpvdecoder_gsmamr -OPENCORE += libpvplayer_engine -OPENCORE += libpvamrwbdecoder -OPENCORE += libpvauthorengine -OPENCORE += libomx_amr_component_lib -OPENCORE += pvplayer -OPENCORE += pvplayer_engine_test - -#PPP -PPP := ip-up-vpn - -#PVOMX -PVOMX := libqcomm_omx -PVOMX += 01_qcomm_omx - -#RF4CE -RF4CE := RemoTI_RNP.cfg -RF4CE += rf4ce - -#SENSORS_HARDWARE -SENSORS_HARDWARE := sensors.msm7630_surf -SENSORS_HARDWARE += sensors.msm7630_fusion - -#SOFTAP -SOFTAP := libQWiFiSoftApCfg -SOFTAP += libqsap_sdk - -#STK -STK := Stk - -#STM LOG -STMLOG := libstm-log - -#TSLIB_EXTERNAL -TSLIB_EXTERNAL := corgi -TSLIB_EXTERNAL += dejitter -TSLIB_EXTERNAL += inputraw -TSLIB_EXTERNAL += linear -TSLIB_EXTERNAL += variance -TSLIB_EXTERNAL += pthres -TSLIB_EXTERNAL += libtslib -TSLIB_EXTERNAL += tsprint -TSLIB_EXTERNAL += tstest -TSLIB_EXTERNAL += tsutils -TSLIB_EXTERNAL += tscalib -TSLIB_EXTERNAL += ts - -#QRGND -QRGND := qrngd -QRGND += qrngp -QRGND += qrngtest - -#WPA -WPA := wpa_supplicant.conf -WPA += wpa_supplicant_wcn.conf -WPA += wpa_supplicant_ath6kl.conf - -#ZLIB -ZLIB := gzip -ZLIB += minigzip -ZLIB += libunz - -#Charger -CHARGER := charger -CHARGER += charger_res_images - -#VT_JNI -VT_JNI := libvt_jni - -#CRDA -CRDA := crda -CRDA += regdbdump -CRDA += regulatory.bin -CRDA += linville.key.pub.pem -CRDA += init.crda.sh - -#WLAN -WLAN := prima_wlan.ko - -PRODUCT_PACKAGES := \ - AccountAndSyncSettings \ - DeskClock \ - AlarmProvider \ - Bluetooth \ - BluetoothExt \ - BTTestApp \ - HiddTestApp \ - Calculator \ - Calendar \ - Camera \ - CellBroadcastReceiver \ - CertInstaller \ - DrmProvider \ - Email \ - Gallery2 \ - LatinIME \ - Launcher2 \ - Mms \ - Music \ - Phone \ - Provision \ - Protips \ - QuickSearchBox \ - Settings \ - Sync \ - SystemUI \ - Updater \ - CalendarProvider \ - SyncProvider \ - IM \ - VoiceDialer \ - FM2 \ - FMRecord \ - VideoEditor - -PRODUCT_PACKAGES += $(ALSA_HARDWARE) -PRODUCT_PACKAGES += $(ALSA_UCM) -PRODUCT_PACKAGES += $(ANGLE) -PRODUCT_PACKAGES += $(AUDIO_HARDWARE) -PRODUCT_PACKAGES += $(AUDIO_POLICY) -PRODUCT_PACKAGES += $(TINY_ALSA_TEST_APPS) -PRODUCT_PACKAGES += $(AMPLOADER) -PRODUCT_PACKAGES += $(APPS) -PRODUCT_PACKAGES += $(BRCTL) -PRODUCT_PACKAGES += $(BSON) -PRODUCT_PACKAGES += $(BT) -PRODUCT_PACKAGES += $(C2DCC) -PRODUCT_PACKAGES += $(CIMAX) -PRODUCT_PACKAGES += $(CONNECTIVITY) -PRODUCT_PACKAGES += $(CHARGER) -PRODUCT_PACKAGES += $(CURL) -PRODUCT_PACKAGES += $(DASH) -PRODUCT_PACKAGES += $(DATA_OS) -PRODUCT_PACKAGES += $(E2FSPROGS) -PRODUCT_PACKAGES += $(EBTABLES) -PRODUCT_PACKAGES += $(FASTPOWERON) -PRODUCT_PACKAGES += $(FM) -PRODUCT_PACKAGES += $(GPS_HARDWARE) -PRODUCT_PACKAGES += $(HDMID) -PRODUCT_PACKAGES += $(HOSTAPD) -PRODUCT_PACKAGES += $(I420CC) -PRODUCT_PACKAGES += $(INIT) -PRODUCT_PACKAGES += $(IPROUTE2) -PRODUCT_PACKAGES += $(IPTABLES) -PRODUCT_PACKAGES += $(KERNEL_TESTS) -PRODUCT_PACKAGES += $(KEYPAD) -PRODUCT_PACKAGES += $(KS) -PRODUCT_PACKAGES += $(LIB_NL) -PRODUCT_PACKAGES += $(LIB_XML2) -PRODUCT_PACKAGES += $(LIBCAMERA) -PRODUCT_PACKAGES += $(LIBGESTURES) -PRODUCT_PACKAGES += $(LIBCOPYBIT) -PRODUCT_PACKAGES += $(LIBGRALLOC) -PRODUCT_PACKAGES += $(LIBLIGHTS) -PRODUCT_PACKAGES += $(LIBAUDIOPARAM) -PRODUCT_PACKAGES += $(LIBAUDIORESAMPLER) -PRODUCT_PACKAGES += $(LIBOPENCOREHW) -PRODUCT_PACKAGES += $(LIBOVERLAY) -PRODUCT_PACKAGES += $(LIBHWCOMPOSER) -PRODUCT_PACKAGES += $(LIBGENLOCK) -PRODUCT_PACKAGES += $(LIBPERFLOCK) -PRODUCT_PACKAGES += $(LIBQCOMUI) -PRODUCT_PACKAGES += $(LIBQDUTILS) -PRODUCT_PACKAGES += $(LIBQDMETADATA) -PRODUCT_PACKAGES += $(LIBPOWER) -PRODUCT_PACKAGES += $(LOC_API) -PRODUCT_PACKAGES += $(MEDIA_PROFILES) -PRODUCT_PACKAGES += $(MM_AUDIO) -PRODUCT_PACKAGES += $(MM_CORE) -PRODUCT_PACKAGES += $(MM_VIDEO) -PRODUCT_PACKAGES += $(OPENCORE) -PRODUCT_PACKAGES += $(PPP) -PRODUCT_PACKAGES += $(PVOMX) -PRODUCT_PACKAGES += $(RF4CE) -PRODUCT_PACKAGES += $(SENSORS_HARDWARE) -PRODUCT_PACKAGES += $(SOFTAP) -PRODUCT_PACKAGES += $(STK) -PRODUCT_PACKAGES += $(STMLOG) -PRODUCT_PACKAGES += $(TSLIB_EXTERNAL) -PRODUCT_PACKAGES += $(QRGND) -PRODUCT_PACKAGES += $(UPDATER) -PRODUCT_PACKAGES += $(WPA) -PRODUCT_PACKAGES += $(ZLIB) -PRODUCT_PACKAGES += $(VT_JNI) -PRODUCT_PACKAGES += $(CRDA) -PRODUCT_PACKAGES += $(WLAN) - -# Live Wallpapers -PRODUCT_PACKAGES += \ - LiveWallpapers \ - LiveWallpapersPicker \ - VisualizationWallpapers \ - librs_jni - -# Filesystem management tools -PRODUCT_PACKAGES += \ - make_ext4fs \ - setup_fs - -# Flatland -PRODUCT_PACKAGES += flatland - -# MSM updater library -PRODUCT_PACKAGES += librecovery_updater_msm - - -#intialise PRODUCT_PACKAGES_DEBUG list for debug modules -PRODUCT_PACKAGES_DEBUG := - - -PRODUCT_COPY_FILES := \ - frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:system/etc/permissions/android.hardware.camera.flash-autofocus.xml \ - frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \ - frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \ - frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \ - frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \ - frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \ - frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \ - frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \ - frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \ - frameworks/native/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml \ - frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \ - frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \ - frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \ - frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \ - frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \ - packages/wallpapers/LivePicker/android.software.live_wallpaper.xml:system/etc/permissions/android.software.live_wallpaper.xml \ - frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \ - -# Bluetooth configuration files -PRODUCT_COPY_FILES += \ - system/bluetooth/data/audio.conf:system/etc/bluetooth/audio.conf \ - system/bluetooth/data/auto_pairing.conf:system/etc/bluetooth/auto_pairing.conf \ - system/bluetooth/data/blacklist.conf:system/etc/bluetooth/blacklist.conf \ - system/bluetooth/data/input.conf:system/etc/bluetooth/input.conf \ - system/bluetooth/data/network.conf:system/etc/bluetooth/network.conf \ - -ifeq ($(BOARD_HAVE_BLUETOOTH_BLUEZ),true) -PRODUCT_COPY_FILES += \ - system/bluetooth/data/stack.conf:system/etc/bluetooth/stack.conf -endif # BOARD_HAVE_BLUETOOTH_BLUEZ - -# gps/location secuity configuration file -PRODUCT_COPY_FILES += \ - device/qcom/common/sec_config:system/etc/sec_config - -PRODUCT_COPY_FILES += device/qcom/common/media/media_profiles.xml:system/etc/media_profiles.xml \ - device/qcom/common/media/media_codecs.xml:system/etc/media_codecs.xml - -# enable overlays to use our version of -# source/resources etc. -DEVICE_PACKAGE_OVERLAYS += device/qcom/common/overlay - -# include additional build utilities --include device/qcom/common/utils.mk - -#Enabling Ring Tones -#include frameworks/base/data/sounds/OriginalAudio.mk - -#Enabling video for live effects --include frameworks/base/data/videos/VideoPackage1.mk +$(call inherit-product, device/qcom/common/base.mk) # For PRODUCT_COPY_FILES, the first instance takes precedence. # Since we want use QC specific files, we should inherit @@ -710,12 +7,18 @@ $(call inherit-product-if-exists, $(QCPATH)/common/config/device-vendor.mk) $(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk) PRODUCT_BRAND := qcom -PRODUCT_LOCALES := en_US es_US de_DE zh_CN -PRODUCT_LOCALES += hdpi mdpi +PRODUCT_AAPT_CONFIG += hdpi mdpi + +ifndef PRODUCT_MANUFACTURER +PRODUCT_MANUFACTURER := QUALCOMM +endif PRODUCT_PROPERTY_OVERRIDES += \ - ro.vendor.extension_library=/vendor/lib/libqc-opt.so \ - persist.radio.apm_sim_not_pwdn=1 + ro.vendor.extension_library=libqti-perfd-client.so \ + persist.radio.apm_sim_not_pwdn=1 \ + persist.radio.sib16_support=1 \ + persist.radio.custom_ecc=1 \ + ro.frp.pst=/dev/block/bootdevice/by-name/config PRODUCT_PRIVATE_KEY := device/qcom/common/qcom.key diff --git a/common64.mk b/common64.mk new file mode 100644 index 000000000..e19849a6a --- /dev/null +++ b/common64.mk @@ -0,0 +1,27 @@ +$(call inherit-product, device/qcom/common/base.mk) + +# For PRODUCT_COPY_FILES, the first instance takes precedence. +# Since we want use QC specific files, we should inherit +# device-vendor.mk first to make sure QC specific files gets installed. +$(call inherit-product-if-exists, $(QCPATH)/common/config/device-vendor.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_arm64.mk) + +PRODUCT_BRAND := qcom +PRODUCT_AAPT_CONFIG += hdpi mdpi + +ifndef PRODUCT_MANUFACTURER +PRODUCT_MANUFACTURER := QUALCOMM +endif + +PRODUCT_PROPERTY_OVERRIDES += \ + ro.vendor.extension_library=libqti-perfd-client.so \ + persist.radio.apm_sim_not_pwdn=1 \ + persist.radio.sib16_support=1 \ + persist.radio.custom_ecc=1 \ + ro.frp.pst=/dev/block/bootdevice/by-name/config + +PRODUCT_PRIVATE_KEY := device/qcom/common/qcom.key + +$(call inherit-product, frameworks/native/build/phone-xhdpi-1024-dalvik-heap.mk) +#$(call inherit-product, frameworks/base/data/fonts/fonts.mk) +#$(call inherit-product, frameworks/base/data/keyboards/keyboards.mk) diff --git a/cryptfs_hw/Android.mk b/cryptfs_hw/Android.mk new file mode 100644 index 000000000..4b55f68c1 --- /dev/null +++ b/cryptfs_hw/Android.mk @@ -0,0 +1,35 @@ +ifeq ($(TARGET_HW_DISK_ENCRYPTION),true) +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +sourceFiles := \ + cryptfs_hw.c + +commonSharedLibraries := \ + libcutils \ + libutils \ + libdl \ + libhardware +commonIncludes := \ + hardware/libhardware/include/hardware/ + +LOCAL_C_INCLUDES := $(commonIncludes) +LOCAL_SRC_FILES := $(sourceFiles) + +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE:= libcryptfs_hw +LOCAL_SHARED_LIBRARIES := $(commonSharedLibraries) + +LOCAL_MODULE_OWNER := qcom + +ifeq ($(TARGET_SWV8_DISK_ENCRYPTION),true) +LOCAL_CFLAGS += -DCONFIG_SWV8_DISK_ENCRYPTION +endif +# USE_ICE_FOR_STORAGE_ENCRYPTION would be true in future if +# TARGET_USE_EMMC_USE_ICE is set +ifeq ($(TARGET_USE_UFS_ICE),true) +LOCAL_CFLAGS += -DUSE_ICE_FOR_STORAGE_ENCRYPTION +endif + +include $(BUILD_SHARED_LIBRARY) +endif diff --git a/cryptfs_hw/cryptfs_hw.c b/cryptfs_hw/cryptfs_hw.c new file mode 100644 index 000000000..151fd704d --- /dev/null +++ b/cryptfs_hw/cryptfs_hw.c @@ -0,0 +1,346 @@ +/* Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cutils/log.h" +#include "cutils/properties.h" +#include "cutils/android_reboot.h" +#include "keymaster_common.h" +#include "hardware.h" + +#if defined(__LP64__) +#define QSEECOM_LIBRARY_PATH "/vendor/lib64/libQSEEComAPI.so" +#else +#define QSEECOM_LIBRARY_PATH "/vendor/lib/libQSEEComAPI.so" +#endif + + +// When device comes up or when user tries to change the password, user can +// try wrong password upto a certain number of times. If user enters wrong +// password further, HW would wipe all disk encryption related crypto data +// and would return an error ERR_MAX_PASSWORD_ATTEMPTS to VOLD. VOLD would +// wipe userdata partition once this error is received. +#define ERR_MAX_PASSWORD_ATTEMPTS -10 +#define QSEECOM_DISK_ENCRYPTION 1 +#define QSEECOM_UFS_ICE_DISK_ENCRYPTION 3 +#define QSEECOM_SDCC_ICE_DISK_ENCRYPTION 4 +#define MAX_PASSWORD_LEN 32 +#define QTI_ICE_STORAGE_UFS 1 +#define QTI_ICE_STORAGE_SDCC 2 + +/* Operations that be performed on HW based device encryption key */ +#define SET_HW_DISK_ENC_KEY 1 +#define UPDATE_HW_DISK_ENC_KEY 2 +#define MAX_DEVICE_ID_LENGTH 4 /* 4 = 3 (MAX_SOC_ID_LENGTH) + 1 */ + +static unsigned int cpu_id[] = { + 239, /* MSM8939 SOC ID */ +}; + +#define KEYMASTER_PARTITION_NAME "/dev/block/bootdevice/by-name/keymaster" + +#define QSEECOM_UP_CHECK_COUNT 10 + +static int loaded_library = 0; +static int (*qseecom_create_key)(int, void*); +static int (*qseecom_update_key)(int, void*, void*); +static int (*qseecom_wipe_key)(int); + +static int map_usage(int usage) +{ + int storage_type = is_ice_enabled(); + if (usage == QSEECOM_DISK_ENCRYPTION) { + if (storage_type == QTI_ICE_STORAGE_UFS) { + return QSEECOM_UFS_ICE_DISK_ENCRYPTION; + } + else if (storage_type == QTI_ICE_STORAGE_SDCC) { + return QSEECOM_SDCC_ICE_DISK_ENCRYPTION ; + } + } + return usage; +} + +static unsigned char* get_tmp_passwd(const char* passwd) +{ + int passwd_len = 0; + unsigned char * tmp_passwd = NULL; + if(passwd) { + tmp_passwd = (unsigned char*)malloc(MAX_PASSWORD_LEN); + if(tmp_passwd) { + memset(tmp_passwd, 0, MAX_PASSWORD_LEN); + passwd_len = (strlen(passwd) > MAX_PASSWORD_LEN) ? MAX_PASSWORD_LEN : strlen(passwd); + memcpy(tmp_passwd, passwd, passwd_len); + } else { + SLOGE("%s: Failed to allocate memory for tmp passwd \n", __func__); + } + } else { + SLOGE("%s: Passed argument is NULL \n", __func__); + } + return tmp_passwd; +} + +static void wipe_userdata() +{ + mkdir("/cache/recovery", 0700); + int fd = open("/cache/recovery/command", O_RDWR|O_CREAT|O_TRUNC|O_NOFOLLOW, 0600); + if (fd >= 0) { + write(fd, "--wipe_data", strlen("--wipe_data") + 1); + close(fd); + } else { + SLOGE("could not open /cache/recovery/command\n"); + } + android_reboot(ANDROID_RB_RESTART2, 0, "recovery"); +} + +static int is_qseecom_up() +{ + int i = 0; + char value[PROPERTY_VALUE_MAX] = {0}; + + for (; i 0) { + device_id = atoi(buf); + } else { + SLOGE("Failed to read device id"); + return status; + } + + array_size = sizeof(cpu_id) / sizeof(cpu_id[0]); + for (i = 0; i < array_size; i++) { + if (device_id == cpu_id[i]) { + status = 0; + break; + } + } + + return status; +} +#else +unsigned int is_hw_fde_enabled(void) +{ + return 1; +} +#endif + +int is_ice_enabled(void) +{ + char prop_storage[PATH_MAX]; + int storage_type = 0; + int fd; + + if (property_get("ro.boot.bootdevice", prop_storage, "")) { + if (strstr(prop_storage, "ufs")) { + /* All UFS based devices has ICE in it. So we dont need + * to check if corresponding device exists or not + */ + storage_type = QTI_ICE_STORAGE_UFS; + } else if (strstr(prop_storage, "sdhc")) { + if (access("/dev/icesdcc", F_OK) != -1) + storage_type = QTI_ICE_STORAGE_SDCC; + } + } + return storage_type; +} + +static int get_keymaster_version() +{ + int rc = -1; + const hw_module_t* mod; + rc = hw_get_module_by_class(KEYSTORE_HARDWARE_MODULE_ID, NULL, &mod); + if (rc) { + SLOGE("could not find any keystore module"); + return rc; + } + + return mod->module_api_version; +} + +int should_use_keymaster() +{ + /* HW FDE key would be tied to keymaster only if: + * New Keymaster is available + * keymaster partition exists on the device + */ + int rc = 0; + if (get_keymaster_version() != KEYMASTER_MODULE_API_VERSION_1_0) { + SLOGI("Keymaster version is not 1.0"); + return rc; + } + + if (access(KEYMASTER_PARTITION_NAME, F_OK) == -1) { + SLOGI("Keymaster partition does not exists"); + return rc; + } + + return 1; +} diff --git a/cryptfs_hw/cryptfs_hw.h b/cryptfs_hw/cryptfs_hw.h new file mode 100644 index 000000000..f0351b3b4 --- /dev/null +++ b/cryptfs_hw/cryptfs_hw.h @@ -0,0 +1,47 @@ +/* Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __CRYPTFS_HW_H_ +#define __CRYPTFS_HW_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +int set_hw_device_encryption_key(const char*, const char*); +int update_hw_device_encryption_key(const char*, const char*, const char*); +int clear_hw_device_encryption_key(void); +unsigned int is_hw_disk_encryption(const char*); +unsigned int is_hw_fde_enabled(void); +int is_ice_enabled(void); +int should_use_keymaster(); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_active.png b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_active.png new file mode 100644 index 000000000..3eb5190fb Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_active.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_background_side_channel.png b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_background_side_channel.png new file mode 100644 index 000000000..2df5d1a85 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_background_side_channel.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_blocked_mic_red.png b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_blocked_mic_red.png new file mode 100644 index 000000000..43b9e6038 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_blocked_mic_red.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_blocked_mic_yellow.png b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_blocked_mic_yellow.png new file mode 100644 index 000000000..e8c1556a4 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_blocked_mic_yellow.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_low_battery.png b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_low_battery.png new file mode 100644 index 000000000..4c0eab663 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_low_battery.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_positioning_problem.png b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_positioning_problem.png new file mode 100755 index 000000000..3aac85417 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-hdpi/digital_pen_positioning_problem.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_active.png b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_active.png new file mode 100644 index 000000000..4a28d0322 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_active.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_background_side_channel.png b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_background_side_channel.png new file mode 100644 index 000000000..eb4f360f6 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_background_side_channel.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_blocked_mic_red.png b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_blocked_mic_red.png new file mode 100644 index 000000000..fdac878e4 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_blocked_mic_red.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_blocked_mic_yellow.png b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_blocked_mic_yellow.png new file mode 100644 index 000000000..4aab71de1 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_blocked_mic_yellow.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_low_battery.png b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_low_battery.png new file mode 100644 index 000000000..caa75045f Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_low_battery.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_positioning_problem.png b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_positioning_problem.png new file mode 100755 index 000000000..3aac85417 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-ldpi/digital_pen_positioning_problem.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_active.png b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_active.png new file mode 100644 index 000000000..4a28d0322 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_active.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_background_side_channel.png b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_background_side_channel.png new file mode 100644 index 000000000..eb4f360f6 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_background_side_channel.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_blocked_mic_red.png b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_blocked_mic_red.png new file mode 100644 index 000000000..fdac878e4 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_blocked_mic_red.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_blocked_mic_yellow.png b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_blocked_mic_yellow.png new file mode 100644 index 000000000..4aab71de1 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_blocked_mic_yellow.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_low_battery.png b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_low_battery.png new file mode 100644 index 000000000..caa75045f Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_low_battery.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_positioning_problem.png b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_positioning_problem.png new file mode 100755 index 000000000..3aac85417 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-mdpi/digital_pen_positioning_problem.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_active.png b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_active.png new file mode 100644 index 000000000..4215579ae Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_active.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_background_side_channel.png b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_background_side_channel.png new file mode 100644 index 000000000..9dc447ec1 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_background_side_channel.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_blocked_mic_red.png b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_blocked_mic_red.png new file mode 100644 index 000000000..8c8cc4562 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_blocked_mic_red.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_blocked_mic_yellow.png b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_blocked_mic_yellow.png new file mode 100644 index 000000000..b1e5217c8 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_blocked_mic_yellow.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_low_battery.png b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_low_battery.png new file mode 100644 index 000000000..163447784 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_low_battery.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_positioning_problem.png b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_positioning_problem.png new file mode 100755 index 000000000..3aac85417 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xhdpi/digital_pen_positioning_problem.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_active.png b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_active.png new file mode 100644 index 000000000..4215579ae Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_active.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_background_side_channel.png b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_background_side_channel.png new file mode 100644 index 000000000..9dc447ec1 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_background_side_channel.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_blocked_mic_red.png b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_blocked_mic_red.png new file mode 100644 index 000000000..8c8cc4562 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_blocked_mic_red.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_blocked_mic_yellow.png b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_blocked_mic_yellow.png new file mode 100644 index 000000000..b1e5217c8 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_blocked_mic_yellow.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_low_battery.png b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_low_battery.png new file mode 100644 index 000000000..163447784 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_low_battery.png differ diff --git a/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_positioning_problem.png b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_positioning_problem.png new file mode 100755 index 000000000..3aac85417 Binary files /dev/null and b/device/overlay/frameworks/base/core/res/res/drawable-xxhdpi/digital_pen_positioning_problem.png differ diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml b/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml new file mode 100644 index 000000000..1597995d5 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml @@ -0,0 +1,36 @@ + + + + + + + 6 + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml b/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml new file mode 100644 index 000000000..477f28ce7 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml @@ -0,0 +1,36 @@ + + + + + + + 6 + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc260/config.xml b/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc260/config.xml new file mode 100644 index 000000000..7bd009b71 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc260/config.xml @@ -0,0 +1,36 @@ + + + + + + + 3 + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml b/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml new file mode 100644 index 000000000..7bd009b71 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml @@ -0,0 +1,36 @@ + + + + + + + 3 + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml b/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml new file mode 100644 index 000000000..024198e97 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + 6 + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc490/config.xml b/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc490/config.xml new file mode 100644 index 000000000..477f28ce7 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc490/config.xml @@ -0,0 +1,36 @@ + + + + + + + 6 + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc870/config.xml b/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc870/config.xml new file mode 100644 index 000000000..477f28ce7 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc870/config.xml @@ -0,0 +1,36 @@ + + + + + + + 6 + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc940/config.xml b/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc940/config.xml new file mode 100644 index 000000000..477f28ce7 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc311-mnc940/config.xml @@ -0,0 +1,36 @@ + + + + + + + 6 + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc840/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc840/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc840/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc854/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc854/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc854/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc855/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc855/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc855/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc856/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc856/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc856/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc857/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc857/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc857/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc858/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc858/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc858/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc859/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc859/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc859/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc860/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc860/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc860/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc861/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc861/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc861/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc862/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc862/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc862/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc863/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc863/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc863/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc864/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc864/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc864/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc865/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc865/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc865/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc866/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc866/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc866/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc867/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc867/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc867/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc868/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc868/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc868/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc869/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc869/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc869/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc870/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc870/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc870/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc871/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc871/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc871/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc872/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc872/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc872/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc873/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc873/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc873/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc874/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc874/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc405-mnc874/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc00/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc00/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc00/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc02/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc02/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc02/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc03/config.xml b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc03/config.xml new file mode 100644 index 000000000..477f28ce7 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc03/config.xml @@ -0,0 +1,36 @@ + + + + + + + 6 + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc07/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc07/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc07/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc08/strings.xml b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc08/strings.xml new file mode 100644 index 000000000..644427161 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc08/strings.xml @@ -0,0 +1,34 @@ + + + + + + %s (HD) + + diff --git a/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc11/config.xml b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc11/config.xml new file mode 100644 index 000000000..477f28ce7 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values-mcc460-mnc11/config.xml @@ -0,0 +1,36 @@ + + + + + + + 6 + diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/device/overlay/frameworks/base/core/res/res/values/config.xml similarity index 65% rename from overlay/frameworks/base/core/res/res/values/config.xml rename to device/overlay/frameworks/base/core/res/res/values/config.xml index 0ad725119..5be75c497 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/device/overlay/frameworks/base/core/res/res/values/config.xml @@ -1,8 +1,7 @@ - - + + + + + managed_profile + ime + sync_failing + sync_active + cast + hotspot + location + bluetooth + nfc + femtoicon + tty + speakerphone + zen + mute + volume + wifi + vowifi + cdma_eri + data_connection + phone_evdo_signal + phone_signal + battery + alarm_clock + secure + clock + true @@ -49,7 +78,7 @@ "wifi,1,1,1,-1,true" "mobile,0,0,0,-1,true" - "mobile_mms,2,0,2,60000,true" + "mobile_mms,2,0,4,60000,true" "mobile_supl,3,0,2,60000,true" "mobile_dun,4,0,2,60000,true" "mobile_hipri,5,0,3,60000,true" @@ -57,6 +86,7 @@ "mobile_ims,11,0,2,60000,true" "mobile_cbs,12,0,2,60000,true" "bluetooth,7,7,2,-1,true" + "mobile_emergency,15,0,5,-1,true" true + + true + + + + true + + + true + + + + true + + + true + + + true + + + true + + + "lte:2097152,4194304,8388608,262144,524288,1048576" + "umts:4094,87380,1220608,4096,16384,1220608" + "hspa:4094,87380,1220608,4096,16384,1220608" + "hsupa:4094,87380,1220608,4096,16384,1220608" + "hsdpa:4094,87380,2441216,4096,16384,2441216" + "hspap:4094,87380,1220608,4096,16384,1220608" + "edge:4093,26280,35040,4096,16384,35040" + "gprs:4092,8760,11680,4096,8760,11680" + "evdo:4094,87380,1048576,4096,16384,262144" + "ehrpd:4094,87380,1048576,4096,16384,262144" + + + + + 4 + + true + + com.google.android.gms + diff --git a/device/overlay/frameworks/base/core/res/res/values/public.xml b/device/overlay/frameworks/base/core/res/res/values/public.xml new file mode 100644 index 000000000..db8d11311 --- /dev/null +++ b/device/overlay/frameworks/base/core/res/res/values/public.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + diff --git a/overlay/frameworks/base/core/res/res/xml/storage_list.xml b/device/overlay/frameworks/base/core/res/res/xml/storage_list.xml similarity index 77% rename from overlay/frameworks/base/core/res/res/xml/storage_list.xml rename to device/overlay/frameworks/base/core/res/res/xml/storage_list.xml index 2eb5a31a9..1524f98a4 100755 --- a/overlay/frameworks/base/core/res/res/xml/storage_list.xml +++ b/device/overlay/frameworks/base/core/res/res/xml/storage_list.xml @@ -48,4 +48,20 @@ android:emulated="false" android:removable="true" android:allowMassStorage="true" /> + + + diff --git a/device/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/device/overlay/frameworks/base/packages/SystemUI/res/values/config.xml new file mode 100644 index 000000000..5f88fd132 --- /dev/null +++ b/device/overlay/frameworks/base/packages/SystemUI/res/values/config.xml @@ -0,0 +1,41 @@ + + + + + + + + wifi,bt,inversion,dnd,cell,airplane,rotation,flashlight,location,cast,hotspot,intent(org.codeaurora.qs.tiles.wificallingtile) + + + 12 + + diff --git a/device/overlay/packages/apps/Bluetooth/res/values/config.xml b/device/overlay/packages/apps/Bluetooth/res/values/config.xml new file mode 100644 index 000000000..679153987 --- /dev/null +++ b/device/overlay/packages/apps/Bluetooth/res/values/config.xml @@ -0,0 +1,37 @@ + + + + true + true + true + true + diff --git a/device/overlay/packages/apps/Calendar/res/values/config.xml b/device/overlay/packages/apps/Calendar/res/values/config.xml new file mode 100644 index 000000000..274e921c0 --- /dev/null +++ b/device/overlay/packages/apps/Calendar/res/values/config.xml @@ -0,0 +1,17 @@ + + + + + true + diff --git a/device/overlay/packages/apps/Camera2/res/layout-land/camera_controls.xml b/device/overlay/packages/apps/Camera2/res/layout-land/camera_controls.xml new file mode 100644 index 000000000..41a9a7fa4 --- /dev/null +++ b/device/overlay/packages/apps/Camera2/res/layout-land/camera_controls.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + diff --git a/device/overlay/packages/apps/Camera2/res/layout-port/camera_controls.xml b/device/overlay/packages/apps/Camera2/res/layout-port/camera_controls.xml new file mode 100644 index 000000000..71f6b348d --- /dev/null +++ b/device/overlay/packages/apps/Camera2/res/layout-port/camera_controls.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + diff --git a/device/overlay/packages/apps/Camera2/res/values/arrays.xml b/device/overlay/packages/apps/Camera2/res/values/arrays.xml new file mode 100644 index 000000000..19426eae7 --- /dev/null +++ b/device/overlay/packages/apps/Camera2/res/values/arrays.xml @@ -0,0 +1,45 @@ + + + + + + + @string/pref_camera_flashmode_entry_off + @string/pref_camera_flashmode_entry_on + + + + @string/pref_camera_flashmode_label_off + @string/pref_camera_flashmode_label_on + + + + off + torch + + + + @drawable/ic_flash_off_holo_light + @drawable/ic_flash_on_holo_light + + + + @drawable/ic_flash_off_holo_light + @drawable/ic_flash_on_holo_light + + diff --git a/overlay/packages/apps/CellBroadcastReceiver/res/values/config.xml b/device/overlay/packages/apps/CellBroadcastReceiver/res/values/config.xml similarity index 100% rename from overlay/packages/apps/CellBroadcastReceiver/res/values/config.xml rename to device/overlay/packages/apps/CellBroadcastReceiver/res/values/config.xml diff --git a/device/overlay/packages/apps/Gallery2/res/layout-land/camera_controls.xml b/device/overlay/packages/apps/Gallery2/res/layout-land/camera_controls.xml new file mode 100644 index 000000000..3e6423d0e --- /dev/null +++ b/device/overlay/packages/apps/Gallery2/res/layout-land/camera_controls.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + diff --git a/device/overlay/packages/apps/Gallery2/res/layout-port/camera_controls.xml b/device/overlay/packages/apps/Gallery2/res/layout-port/camera_controls.xml new file mode 100644 index 000000000..026567c11 --- /dev/null +++ b/device/overlay/packages/apps/Gallery2/res/layout-port/camera_controls.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/overlay/packages/apps/Gallery2/res/values/arrays.xml b/device/overlay/packages/apps/Gallery2/res/values/arrays.xml similarity index 100% rename from overlay/packages/apps/Gallery2/res/values/arrays.xml rename to device/overlay/packages/apps/Gallery2/res/values/arrays.xml diff --git a/device/overlay/packages/apps/InCallUI/res/values/config.xml b/device/overlay/packages/apps/InCallUI/res/values/config.xml new file mode 100644 index 000000000..8624cedaa --- /dev/null +++ b/device/overlay/packages/apps/InCallUI/res/values/config.xml @@ -0,0 +1,34 @@ + + + + + + 6 + diff --git a/device/overlay/packages/apps/Launcher2/res/xml/default_workspace.xml b/device/overlay/packages/apps/Launcher2/res/xml/default_workspace.xml new file mode 100644 index 000000000..e7e51e5df --- /dev/null +++ b/device/overlay/packages/apps/Launcher2/res/xml/default_workspace.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/overlay/packages/apps/Phone/res/values/config.xml b/device/overlay/packages/apps/Phone/res/values/config.xml similarity index 100% rename from overlay/packages/apps/Phone/res/values/config.xml rename to device/overlay/packages/apps/Phone/res/values/config.xml diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc840/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc840/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc840/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc854/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc854/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc854/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc855/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc855/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc855/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc856/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc856/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc856/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc857/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc857/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc857/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc858/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc858/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc858/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc859/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc859/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc859/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc860/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc860/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc860/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc861/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc861/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc861/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc862/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc862/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc862/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc863/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc863/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc863/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc864/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc864/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc864/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc865/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc865/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc865/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc866/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc866/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc866/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc867/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc867/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc867/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc868/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc868/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc868/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc869/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc869/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc869/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc870/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc870/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc870/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc871/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc871/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc871/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc872/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc872/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc872/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc873/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc873/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc873/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values-mcc405-mnc874/config.xml b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc874/config.xml new file mode 100644 index 000000000..b5cdd5fe9 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values-mcc405-mnc874/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + false + + diff --git a/device/overlay/packages/apps/Settings/res/values/dimens.xml b/device/overlay/packages/apps/Settings/res/values/dimens.xml new file mode 100755 index 000000000..ef1948680 --- /dev/null +++ b/device/overlay/packages/apps/Settings/res/values/dimens.xml @@ -0,0 +1,36 @@ + + + + + + 248 + diff --git a/device/overlay/packages/apps/SnapdragonCamera/res/values/arrays.xml b/device/overlay/packages/apps/SnapdragonCamera/res/values/arrays.xml new file mode 100644 index 000000000..6bd4c1bcf --- /dev/null +++ b/device/overlay/packages/apps/SnapdragonCamera/res/values/arrays.xml @@ -0,0 +1,56 @@ + + + + + + + @string/pref_camera_flashmode_entry_off + @string/pref_camera_flashmode_entry_on + + + + @string/pref_camera_flashmode_label_off + @string/pref_camera_flashmode_label_on + + + + off + torch + + + + @drawable/ic_flash_off_holo_light + @drawable/ic_flash_on_holo_light + + + + @drawable/ic_flash_off_holo_light + @drawable/ic_flash_on_holo_light + + diff --git a/device/overlay/packages/services/Telecomm/res/values/config.xml b/device/overlay/packages/services/Telecomm/res/values/config.xml new file mode 100644 index 000000000..0fb64a583 --- /dev/null +++ b/device/overlay/packages/services/Telecomm/res/values/config.xml @@ -0,0 +1,38 @@ + + + + + + true + + diff --git a/device/overlay/packages/services/Telephony/res/values-mcc460-mnc00/config.xml b/device/overlay/packages/services/Telephony/res/values-mcc460-mnc00/config.xml new file mode 100644 index 000000000..782f62790 --- /dev/null +++ b/device/overlay/packages/services/Telephony/res/values-mcc460-mnc00/config.xml @@ -0,0 +1,32 @@ + + + + + + true + diff --git a/device/overlay/packages/services/Telephony/res/values-mcc460-mnc02/config.xml b/device/overlay/packages/services/Telephony/res/values-mcc460-mnc02/config.xml new file mode 100644 index 000000000..782f62790 --- /dev/null +++ b/device/overlay/packages/services/Telephony/res/values-mcc460-mnc02/config.xml @@ -0,0 +1,32 @@ + + + + + + true + diff --git a/device/overlay/packages/services/Telephony/res/values-mcc460-mnc07/config.xml b/device/overlay/packages/services/Telephony/res/values-mcc460-mnc07/config.xml new file mode 100644 index 000000000..782f62790 --- /dev/null +++ b/device/overlay/packages/services/Telephony/res/values-mcc460-mnc07/config.xml @@ -0,0 +1,32 @@ + + + + + + true + diff --git a/device/overlay/packages/services/Telephony/res/values-mcc460-mnc08/config.xml b/device/overlay/packages/services/Telephony/res/values-mcc460-mnc08/config.xml new file mode 100644 index 000000000..782f62790 --- /dev/null +++ b/device/overlay/packages/services/Telephony/res/values-mcc460-mnc08/config.xml @@ -0,0 +1,32 @@ + + + + + + true + diff --git a/overlay/packages/services/Telephony/res/values/config.xml b/device/overlay/packages/services/Telephony/res/values/config.xml similarity index 93% rename from overlay/packages/services/Telephony/res/values/config.xml rename to device/overlay/packages/services/Telephony/res/values/config.xml index afb1bdef5..878f33758 100644 --- a/overlay/packages/services/Telephony/res/values/config.xml +++ b/device/overlay/packages/services/Telephony/res/values/config.xml @@ -26,9 +26,6 @@ true - - true - true @@ -42,4 +39,7 @@ ignored and manual operator selection will always be available. See CPHS4_2.WW6, CPHS B.4.7.1 for more information --> true + + + true diff --git a/display/logo/logo_gen.py b/display/logo/logo_gen.py new file mode 100755 index 000000000..c9bcb1af9 --- /dev/null +++ b/display/logo/logo_gen.py @@ -0,0 +1,263 @@ +# Copyright (c) 2013,2015, The Linux Foundation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of The Linux Foundation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#=========================================================================== + +# This script read the logo png and creates the logo.img + +# when who what, where, why +# -------- --- ------------------------------------------------------- +# 2013-04 QRD init +# 2015-04 QRD support the RLE24 compression + +# Environment requirement: +# Python + PIL +# PIL install: +# (ubuntu) sudo apt-get install python-imaging +# (windows) (http://www.pythonware.com/products/pil/) + +# limit: +# a This script only support Python 2.7.x, 2.6.x, +# Can't use in py3x for StringIO module +# b This script's input can be a png, jpeg, bmp, gif file. +# But if it is a gif, only get the first frame by default. +# +# description: +# struct logo_header { +# unsigned char[8]; // "SPLASH!!" +# unsigned width; // logo's width, little endian +# unsigned height; // logo's height, little endian +# unsigned type; // 0, Raw Image; 1, RLE24 Compressed Image +# unsigned blocks; // block number, real size / 512 +# ...... +# }; + +# the logo Image layout: +# logo_header + Payload data + +# ===========================================================================*/ +from __future__ import print_function +import sys,os +import struct +import StringIO +from PIL import Image + +SUPPORT_RLE24_COMPRESSIONT = 1 + +## get header +def GetImgHeader(size, compressed=0, real_bytes=0): + SECTOR_SIZE_IN_BYTES = 512 # Header size + header = [0 for i in range(SECTOR_SIZE_IN_BYTES)] + + width, height = size + real_size = (real_bytes + 511) / 512 + + # magic + header[:8] = [ord('S'),ord('P'), ord('L'), ord('A'), + ord('S'),ord('H'), ord('!'), ord('!')] + + # width + header[8] = ( width & 0xFF) + header[9] = ((width >> 8 ) & 0xFF) + header[10]= ((width >> 16) & 0xFF) + header[11]= ((width >> 24) & 0xFF) + + # height + header[12]= ( height & 0xFF) + header[13]= ((height >> 8) & 0xFF) + header[14]= ((height >> 16) & 0xFF) + header[15]= ((height >> 24) & 0xFF) + + #type + header[16]= ( compressed & 0xFF) + #header[17]= 0 + #header[18]= 0 + #header[19]= 0 + + # block number + header[20] = ( real_size & 0xFF) + header[21] = ((real_size >> 8) & 0xFF) + header[22] = ((real_size >> 16) & 0xFF) + header[23] = ((real_size >> 24) & 0xFF) + + output = StringIO.StringIO() + for i in header: + output.write(struct.pack("B", i)) + content = output.getvalue() + output.close() + return content + +def encode(line): + count = 0 + lst = [] + repeat = -1 + run = [] + total = len(line) - 1 + for index, current in enumerate(line[:-1]): + if current != line[index + 1]: + run.append(current) + count += 1 + if repeat == 1: + entry = (count+128,run) + lst.append(entry) + count = 0 + run = [] + repeat = -1 + if index == total - 1: + run = [line[index + 1]] + entry = (1,run) + lst.append(entry) + else: + repeat = 0 + + if count == 128: + entry = (128,run) + lst.append(entry) + count = 0 + run = [] + repeat = -1 + if index == total - 1: + run.append(line[index + 1]) + entry = (count+1,run) + lst.append(entry) + else: + if repeat == 0: + entry = (count,run) + lst.append(entry) + count = 0 + run = [] + repeat = -1 + if index == total - 1: + run.append( line[index + 1]) + run.append( line[index + 1]) + entry = (2+128,run) + lst.append(entry) + break + run.append(current) + repeat = 1 + count += 1 + if count == 128: + entry = (256,run) + lst.append(entry) + count = 0 + run = [] + repeat = -1 + if index == total - 1: + if count == 0: + run = [line[index + 1]] + entry = (1,run) + lst.append(entry) + else: + run.append(current) + entry = (count+1+128,run) + lst.append(entry) + return lst + +def encodeRLE24(img): + width, height = img.size + output = StringIO.StringIO() + + for h in range(height): + line = [] + result=[] + for w in range(width): + (r, g, b) = img.getpixel((w,h)) + line.append((r << 16)+(g << 8) + b) + result = encode(line) + for count, pixel in result: + output.write(struct.pack("B", count-1)) + if count > 128: + output.write(struct.pack("B", (pixel[0]) & 0xFF)) + output.write(struct.pack("B", ((pixel[0]) >> 8) & 0xFF)) + output.write(struct.pack("B", ((pixel[0]) >> 16) & 0xFF)) + else: + for item in pixel: + output.write(struct.pack("B", (item) & 0xFF)) + output.write(struct.pack("B", (item >> 8) & 0xFF)) + output.write(struct.pack("B", (item >> 16) & 0xFF)) + content = output.getvalue() + output.close() + return content + + +## get payload data : BGR Interleaved +def GetImageBody(img, compressed=0): + color = (0, 0, 0) + if img.mode == "RGB": + background = img + elif img.mode == "RGBA": + background = Image.new("RGB", img.size, color) + img.load() + background.paste(img, mask=img.split()[3]) # alpha channel + elif img.mode == "P" or img.mode == "L": + background = Image.new("RGB", img.size, color) + img.load() + background.paste(img) + #background.save("splash.png") + else: + print ("sorry, can't support this format") + sys.exit() + + if compressed == 1: + return encodeRLE24(background) + else: + r, g, b = background.split() + return Image.merge("RGB",(b,g,r)).tostring() + +## make a image + +def MakeLogoImage(logo, out): + img = Image.open(logo) + file = open(out, "wb") + body = GetImageBody(img, SUPPORT_RLE24_COMPRESSIONT) + file.write(GetImgHeader(img.size, SUPPORT_RLE24_COMPRESSIONT, len(body))) + file.write(body) + file.close() + + +## mian + +def ShowUsage(): + print(" usage: python logo_gen.py [logo.png]") + +def GetPNGFile(): + infile = "logo.png" #default file name + num = len(sys.argv) + if num > 3: + ShowUsage() + sys.exit(); # error arg + + if num == 2: + infile = sys.argv[1] + + if os.access(infile, os.R_OK) != True: + ShowUsage() + sys.exit(); # error file + return infile + +if __name__ == "__main__": + MakeLogoImage(GetPNGFile(), "splash.img") diff --git a/display/logo/readme.txt b/display/logo/readme.txt new file mode 100644 index 000000000..00559fa11 --- /dev/null +++ b/display/logo/readme.txt @@ -0,0 +1,3 @@ +The steps to generate a splash.img: +1 sudo apt-get install python-imaging +2 python ./logo_gen.py snapdragon.png diff --git a/display/tools/parser.pl b/display/tools/parser.pl index 70c30b72a..7d91d1a07 100755 --- a/display/tools/parser.pl +++ b/display/tools/parser.pl @@ -1,4 +1,4 @@ -# Copyright (c) 2013, The Linux Foundation. All rights reserved. +# Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are @@ -71,7 +71,7 @@ open (my $PANELH, '>panel_' . $nameinH . '.h'); printheader($PANELH); print $PANELH "\n#ifndef _PANEL_". uc($nameinH) . "_H_\n"; - print $PANELH "\n#define _PANEL_". uc($nameinH) . "_H_\n"; + print $PANELH "#define _PANEL_". uc($nameinH) . "_H_\n"; printdtsheader($PANELDTSI, $nameinH); @@ -84,9 +84,6 @@ print $PANELH "#include \"panel.h\"\n\n"; - printSectionHeader($PANELH, "Panel configuration"); - print $PANELH "\n"; - for my $property($xmldoc->findnodes('/GCDB/PanelEntry/PanelController')) { (my $controllerName) = $property->textContent() =~ /"([^"]*)"/; @@ -146,6 +143,16 @@ printArray($PANELDTSI, \@tmp, $property, "qcom,mdss-dsi-panel-framerate"); } + elsif($_ eq "PixelPacking") + { + printPixelPacking($PANELDTSI, \@tmp, $property, + "qcom,mdss-dsi-pixel-packing"); + } + elsif($_ eq "ColorOrder") + { + printColorOrder($PANELDTSI, \@tmp, $property, + "qcom,mdss-dsi-color-order"); + } else { printArray($PANELDTSI, \@tmp, $property, @@ -161,13 +168,13 @@ "DSIStream", "InterleaveMode","BitClockFrequency", "PanelOperatingMode", "PanelWithEnableGPIO"); + printSectionHeader($PANELH, "Panel configuration"); printDataStruct($PANELH, \@panelConfigAttrs, $property, "panel_config", lc($nameinH) . "_panel_data", "qcom,mdss_dsi_" .lc($nameinH)); } print $PANELH "\n\n"; - printSectionHeader($PANELH, "Panel resolution"); for my $property($xmldoc->findnodes('/GCDB/PanelEntry')) { @@ -178,16 +185,17 @@ "VActiveRes", "InvertDataPolarity", "InvertVsyncPolarity", "InvertHsyncPolarity"); + printSectionHeader($PANELH, "Panel resolution"); printStruct($PANELH, \@panelConfigAttrs, $property, "panel_resolution", lc($nameinH) . "_panel_res"); print $PANELH "\n"; } print $PANELH "\n"; - printSectionHeader($PANELH, "Panel Color Information" ); for my $property($xmldoc->findnodes('/GCDB/PanelEntry')) { + printSectionHeader($PANELH, "Panel color information" ); my @panelConfigAttrs = ("ColorFormat", "ColorOrder", "UnderFlowColor", "BorderColor", "PixelPacking", "PixelAlignment"); @@ -198,7 +206,7 @@ } print $PANELH "\n"; - printSectionHeader($PANELH, "Panel Command information" ); + printSectionHeader($PANELH, "Panel on/off command information" ); for my $property ($xmldoc->findnodes('/GCDB/PanelEntry/OnCommand')) { @@ -230,8 +238,7 @@ "qcom,mdss-dsi-" . $lower); } - my @attrs = ("HSyncPulse", "TrafficMode", - "DSILaneMap",); + my @attrs = ("HSyncPulse",); foreach(@attrs) { @@ -243,6 +250,22 @@ "qcom,mdss-dsi-" . $lower); } + @attrs = ("TrafficMode",); + foreach(@attrs) + { + push(my @tmp, $_); + printTrafficMode($PANELDTSI, \@tmp, $property, + "qcom,mdss-dsi-traffic-mode"); + } + + @attrs = ("DSILaneMap",); + foreach(@attrs) + { + push(my @tmp, $_); + printLaneMap($PANELDTSI, \@tmp, $property, + "qcom,mdss-dsi-lane-map"); + } + @attrs = ("BLLPEOFPowerMode"); foreach(@attrs) { @@ -286,8 +309,6 @@ } } - printSectionHeader($PANELH, "Command mode panel information"); - print $PANELH "\n"; for my $property($xmldoc->findnodes('/GCDB/PanelEntry')) { my @attrs = ("TECheckEnable", "TEPinSelect", "TEUsingTEPin", @@ -296,6 +317,7 @@ "TEvSyncStartLineDivisor", "TEPercentVariance", "TEDCSCommand", "DisableEoTAfterHSXfer", "CmdModeIdleTime"); + printSectionHeader($PANELH, "Command mode panel information"); printStruct($PANELH, \@attrs, $property, "commandpanel_info", lc($nameinH) . "_command_panel"); print $PANELH "\n\n"; @@ -364,25 +386,21 @@ } - printSectionHeader($PANELH, "Video mode panel information"); - print $PANELH "\n"; - for my $property($xmldoc->findnodes('/GCDB/PanelEntry')) { my @commandAttrs = ("HSyncPulse", "HFPPowerMode", "HBPPowerMode", "HSAPowerMode", "BLLPEOFPowerMode", "BLLPPowerMode", "TrafficMode", "DMADelayAfterVsync", "BLLPEOFPower"); + printSectionHeader($PANELH, "Video mode panel information"); printStruct($PANELH, \@commandAttrs, $property, "videopanel_info", lc($nameinH) . "_video_panel"); print $PANELH "\n\n"; } - printSectionHeader($PANELH, "Lane Configuration"); - print $PANELH "\n"; - for my $property($xmldoc->findnodes('/GCDB/PanelEntry')) { + printSectionHeader($PANELH, "Lane configuration"); my @commandAttrs = ("DSILanes", "DSILaneMap", "Lane0State", "Lane1State", "Lane2State", "Lane3State"); @@ -391,11 +409,10 @@ print $PANELH "\n\n"; } - print $PANELH "\n"; - printSectionHeader($PANELH, "Panel Timing"); for my $property ($xmldoc->findnodes('/GCDB/PanelEntry/PanelTimings')) { + printSectionHeader($PANELH, "Panel timing"); printTargetPhysical($PANELH, $property, lc($nameinH) . "_timings","uint32_t"); print $PANELH "\n\n"; @@ -405,6 +422,7 @@ for my $property ($xmldoc->findnodes('/GCDB/PanelEntry/PanelRotation')) { + printSectionHeader($PANELH, "Panel rotation"); printOnCommand($PANELH, $property, lc($nameinH) . "_rotation", lc($nameinH) . "_rotation_cmd"); print $PANELH "\n\n"; @@ -421,23 +439,26 @@ lc($nameinH) . "_timing_info"); print $PANELH "\n\n"; } + for my $tmpProperty($xmldoc->findnodes('/GCDB/PanelEntry/ResetSequence')) { + printSectionHeader($PANELH, "Panel reset sequence"); print $PANELH "static struct panel_reset_sequence " . - lc($nameinH) . "_reset_seq = {\n "; + lc($nameinH) . "_reset_seq = {\n\t"; + printResetSeqinH($PANELH, $tmpProperty); - print $PANELH "\n\n" + print $PANELH "\n" } - printSectionHeader($PANELH, "Backlight Settings"); - print $PANELH "\n"; + for my $property($xmldoc->findnodes('/GCDB/PanelEntry')) { my @timingAttrs = ("BLInterfaceType", "BLMinLevel", "BLMaxLevel", "BLStep", "BLPMICControlType", "BLPMICModel"); + printSectionHeader($PANELH, "Backlight setting"); printStruct($PANELH, \@timingAttrs, $property, "backlight", lc($nameinH) . "_backlight"); - print $PANELH "\n\n"; + print $PANELH "\n"; my @attrs = ("TClkPost", "TClkPre"); @@ -483,14 +504,14 @@ foreach(@attrs) { push(my @tmp, $_); - printArray($PANELDTSI, \@tmp, $property, + printTrigger($PANELDTSI, \@tmp, $property, "qcom,mdss-dsi-dma-trigger"); } @attrs = ("DSIMDPTrigger"); foreach(@attrs) { push(my @tmp, $_); - printArray($PANELDTSI, \@tmp, $property, + printTrigger($PANELDTSI, \@tmp, $property, "qcom,mdss-dsi-mdp-trigger"); } @@ -600,6 +621,22 @@ printGPIO($PLATFORMDTSI, $property, "qcom,platform-te-gpio"); } + for my $property ($xmldoc->findnodes('/GCDB/PlatformEntry/ModeGPIO')) + { + printStruct($PLATFORMH, \@gpioConfAttrs, $property, "gpio_pin", + "mode_gpio"); + print $PLATFORMH "\n\n"; + + printGPIO($PLATFORMDTSI, $property, "qcom,platform-mode-gpio"); + } + for my $property ($xmldoc->findnodes('/GCDB/PlatformEntry/BacklightGPIO')) + { + printStruct($PLATFORMH, \@gpioConfAttrs, $property, + "gpio_pin", "bklight_gpio"); + print $PLATFORMH "\n\n"; + + printGPIO($PLATFORMDTSI, $property, "qcom,platform-bklight-gpio"); + } for my $property ($xmldoc->findnodes('/GCDB/PlatformEntry/PWMGPIO')) { printStruct($PLATFORMH, \@gpioConfAttrs, $property, "gpio_pin", @@ -726,9 +763,9 @@ sub printTargetPhysical my $name = shift; my $datatype = shift; (my $element) = $property->textContent() =~ /"([^"]*)"/; - print $fh "static const " . $datatype . " " . $name . "[] = {\n"; + print $fh "static const " . $datatype . " " . $name . "[] = {\n\t"; $element =~ s/\t//g; - $element =~ s/^/ /mg; + $element =~ s/^//mg; print $fh $element . "\n};"; } @@ -746,7 +783,7 @@ sub printOnCommand { my @sep = split /,/, $line; print $fh "static char " . $cmdname . $i . "[] = {\n"; - $toPrint = ""; + $toPrint = "\t"; if(scalar @sep > 7) { my $cmdlen = $sep[6]; @@ -757,9 +794,10 @@ sub printOnCommand $cmdlen =~ s/\t//g; if($cmdtype eq "0x29" || $cmdtype eq "0x39") { - $toPrint .= $cmdlen . ", 0x00, " . $cmdtype . ", 0xC0,\n"; + $toPrint .= $cmdlen . ", 0x00, " . $cmdtype . ", 0xC0,\n\t"; } my $j = 0; + for(my $i = 7; $i < scalar @sep; $i++) { my $tmp = $sep[$i]; @@ -773,29 +811,42 @@ sub printOnCommand if (($j % 4) == 0) { chop($toPrint); - $toPrint .= "\n"; + $toPrint .= "\n\t"; } } if($cmdtype eq "0x29" || $cmdtype eq "0x39") { - for( ; ($j % 4) ne 0 ; $j++) + if ( ($j % 4) ne 0) { - $toPrint .= "0xFF, "; + for( ; ($j % 4) ne 0 ; $j++) + { + $toPrint .= "0xFF, "; + } + chop($toPrint); + $toPrint .= "\n"; + } + else + { + chop($toPrint); } } else { - $toPrint .= $cmdtype . ", 0x80"; + for( ; ($j % 2) ne 0 ; $j++) + { + $toPrint .= "0xFF, "; + } + $toPrint .= $cmdtype . ", 0x80\n"; } - $toPrint .= " };\n" + $toPrint .= "};\n" } $i++; - $toPrint .= "\n\n"; + $toPrint .= "\n"; print $fh $toPrint ; } - print $fh "\n\nstatic struct mipi_dsi_cmd " . $name . "[] = {\n"; + print $fh "static struct mipi_dsi_cmd " . $name . "[] = {\n"; my $bool = 0; $toPrint = ""; $i = 0; @@ -804,6 +855,8 @@ sub printOnCommand { my @sep = split /,/, $line; + $toPrint .= "\t"; + if(scalar @sep > 7) { my $cmdtype = $sep[0]; @@ -833,20 +886,18 @@ sub printOnCommand } # calculate the correct size of command - $hexsize = sprintf("{ 0x%x , ", $cmdsize + 4); + $hexsize = sprintf("{0x%x, ", $cmdsize + 4); } else { - $hexsize = sprintf("{ 0x%x , ", 4); + $hexsize = sprintf("{0x%x, ", 4); } - $toPrint .= $hexsize; - $toPrint .= $cmdname . $i . "},"; + $toPrint .= $cmdname . $i . "," . $sep[4] . "},"; $i++; - } $toPrint .= "\n"; @@ -854,7 +905,7 @@ sub printOnCommand chop($toPrint); chop($toPrint); $toPrint .= "\n"; - print $fh $toPrint . "};"; + print $fh $toPrint . "};\n"; print $fh "\n#define " . uc($name) . " " . $i . "\n"; @@ -889,7 +940,7 @@ sub printResetSeqinH { my $fh = shift; my $property = shift; - print $fh "{ "; + print $fh "{"; for (my $i = 1; $i <=5; $i++) { for my $element ($property->findnodes("PinState" . $i)) @@ -897,7 +948,7 @@ sub printResetSeqinH print $fh $element->textContent() . ", "; } } - print $fh "}, { "; + print $fh "}, {"; for (my $i = 1; $i <=5; $i++) { for my $element ($property->findnodes("PulseWidth" . $i)) @@ -1104,6 +1155,217 @@ sub printCommandState } } +sub printTrigger +{ + my $fh = shift; + my $attrs = shift; + my @attrs = @$attrs; + my $property = shift; + my $name = shift; + my $first = 1; + foreach(@attrs) + { + for my $element ($property->findnodes("./" . $_)) + { + print $fh "\t\t" . $name . " = \""; + my $str = $element->textContent(); + if ($str =~ /0x0.$/) { + $str =~ s/0x0//; + } + $str =~ s/0x//; + if($str eq "0") + { + print $fh "none"; + } + elsif($str eq "2") + { + print $fh "trigger_te"; + } + elsif($str eq "4") + { + print $fh "trigger_sw"; + } + elsif($str eq "5") + { + print $fh "trigger_sw_seof"; + } + elsif($str eq "6") + { + print $fh "trigger_sw_te"; + } + print $fh "\";\n"; + } + } +} + +sub printPixelPacking +{ + my $fh = shift; + my $attrs = shift; + my @attrs = @$attrs; + my $property = shift; + my $name = shift; + my $first = 1; + foreach(@attrs) + { + for my $element ($property->findnodes("./" . $_)) + { + my $str = $element->textContent(); + if ($str =~ /0x0.$/) { + $str =~ s/0x0//; + } + $str =~ s/0x//; + print $fh "\t\t" . $name . " = \""; + if($str eq "1") + { + print $fh "loose"; + } + elsif($str eq "0") + { + print $fh "tight"; + } + print $fh "\";\n"; + } + } +} + +sub printTrafficMode +{ + my $fh = shift; + my $attrs = shift; + my @attrs = @$attrs; + my $property = shift; + my $name = shift; + my $first = 1; + foreach(@attrs) + { + for my $element ($property->findnodes("./" . $_)) + { + print $fh "\t\t" . $name . " = \""; + my $str = $element->textContent(); + if ($str =~ /0x0.$/) { + $str =~ s/0x0//; + } + $str =~ s/0x//; + if($str eq "0") + { + print $fh "non_burst_sync_pulse"; + } + elsif($str eq "1") + { + print $fh "non_burst_sync_event"; + } + elsif($str eq "2") + { + print $fh "burst_mode"; + } + print $fh "\";\n"; + } + } +} + +sub printColorOrder +{ + my $fh = shift; + my $attrs = shift; + my @attrs = @$attrs; + my $property = shift; + my $name = shift; + my $first = 1; + foreach(@attrs) + { + for my $element ($property->findnodes("./" . $_)) + { + print $fh "\t\t" . $name . " = \""; + my $str = $element->textContent(); + if ($str =~ /0x0.$/) { + $str =~ s/0x0//; + } + $str =~ s/0x//; + if($str eq "0") + { + print $fh "rgb_swap_rgb"; + } + elsif($str eq "1") + { + print $fh "rgb_swap_rbg"; + } + elsif($str eq "2") + { + print $fh "rgb_swap_bgr"; + } + elsif($str eq "3") + { + print $fh "rgb_swap_brg"; + } + elsif($str eq "4") + { + print $fh "rgb_swap_grb"; + } + elsif($str eq "5") + { + print $fh "rgb_swap_gbr"; + } + print $fh "\";\n"; + } + } +} + +sub printLaneMap +{ + my $fh = shift; + my $attrs = shift; + my @attrs = @$attrs; + my $property = shift; + my $name = shift; + my $first = 1; + foreach(@attrs) + { + for my $element ($property->findnodes("./" . $_)) + { + print $fh "\t\t" . $name . " = \""; + my $str = $element->textContent(); + if ($str =~ /0x0.$/) { + $str =~ s/0x0//; + } + $str =~ s/0x//; + if($str eq "0") + { + print $fh "lane_map_0123"; + } + elsif($str eq "1") + { + print $fh "lane_map_3012"; + } + elsif($str eq "2") + { + print $fh "lane_map_2301"; + } + elsif($str eq "3") + { + print $fh "lane_map_1230"; + } + elsif($str eq "4") + { + print $fh "lane_map_0321"; + } + elsif($str eq "5") + { + print $fh "lane_map_1032"; + } + elsif($str eq "6") + { + print $fh "lane_map_2103"; + } + elsif($str eq "7") + { + print $fh "lane_map_3210"; + } + print $fh "\";\n"; + } + } +} + sub printPanelType { my $fh = shift; @@ -1183,7 +1445,7 @@ sub printStruct my $property = shift; my $structName = shift; my $name = shift; - print $fh "static struct " . $structName . " " . $name . " = {\n "; + print $fh "static struct " . $structName . " " . $name . " = {\n\t"; my $flag = 0; foreach (@attrs) { my $node = "./" . $_; @@ -1226,7 +1488,7 @@ sub printDataStruct my $structName = shift; my $name = shift; my $nameinDTS = shift; - print $fh "static struct " . $structName . " " . $name . " = {\n "; + print $fh "static struct " . $structName . " " . $name . " = {\n\t"; my $flag = 0; my $firsttime = 1; print $fh "\"" . $nameinDTS . "\", "; @@ -1273,7 +1535,7 @@ sub printDataStruct } if ($firsttime == 1) { - print $fh ",\n "; + print $fh ",\n\t"; $flag = 0; } $firsttime = 0; diff --git a/dlkm/AndroidKernelModule.mk b/dlkm/AndroidKernelModule.mk index cf6911d5a..6676085ff 100644 --- a/dlkm/AndroidKernelModule.mk +++ b/dlkm/AndroidKernelModule.mk @@ -1,3 +1,16 @@ +DISABLE_THIS_DLKM := $(strip $(TARGET_KERNEL_DLKM_DISABLE)) + +ifeq ($(DISABLE_THIS_DLKM),true) +ifneq (,$(filter $(LOCAL_MODULE),$(TARGET_KERNEL_DLKM_OVERRIDE))) + DISABLE_THIS_DLKM = false +else +endif +endif + +ifeq ($(DISABLE_THIS_DLKM),true) +$(warning DLKM '$(LOCAL_MODULE)' disabled for target) +else + # Assign external kernel modules to the DLKM class LOCAL_MODULE_CLASS := DLKM @@ -64,11 +77,23 @@ endif # the modules $(LOCAL_BUILT_MODULE): $(KBUILD_MODULE) | $(ACP) ifneq "$(LOCAL_MODULE_DEBUG_ENABLE)" "" - @mkdir -p $(dir $@) - $(hide) $(TARGET_STRIP) --strip-debug $< -o $@ -else - $(transform-prebuilt-to-target) + mkdir -p $(dir $@) + cp $< $<.unstripped + $(TARGET_STRIP) --strip-debug $< + cp $< $<.stripped endif + @sh -c "\ + KMOD_SIG_ALL=`cat $(KERNEL_OUT)/.config | grep CONFIG_MODULE_SIG_ALL | cut -d'=' -f2`; \ + KMOD_SIG_HASH=`cat $(KERNEL_OUT)/.config | grep CONFIG_MODULE_SIG_HASH | cut -d'=' -f2 | sed 's/\"//g'`; \ + if [ \"\$$KMOD_SIG_ALL\" = \"y\" ] && [ -n \"\$$KMOD_SIG_HASH\" ]; then \ + echo \"Signing kernel module: \" `basename $<`; \ + MODSECKEY=$(KERNEL_OUT)/signing_key.priv; \ + MODPUBKEY=$(KERNEL_OUT)/signing_key.x509; \ + cp $< $<.unsigned; \ + perl ./kernel/scripts/sign-file \$$KMOD_SIG_HASH \$$MODSECKEY \$$MODPUBKEY $<; \ + fi; \ + " + $(transform-prebuilt-to-target) # This should really be cleared in build/core/clear-vars.mk, but for # the time being, we need to clear it ourselves @@ -118,7 +143,7 @@ $(KBUILD_TARGET): kbuild_options := $(KBUILD_OPTIONS) $(KBUILD_TARGET): $(TARGET_PREBUILT_INT_KERNEL) @mkdir -p $(kbuild_out_dir) $(hide) cp -f $(local_path)/Kbuild $(kbuild_out_dir)/Kbuild - $(MAKE) -C kernel M=../$(local_path) O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- modules $(kbuild_options) + $(MAKE) -C kernel M=../$(local_path) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) $(KERNEL_CFLAGS) modules $(kbuild_options) # Once the KBUILD_OPTIONS variable has been used for the target # that's specific to the LOCAL_PATH, clear it. If this isn't done, @@ -127,3 +152,4 @@ $(KBUILD_TARGET): $(TARGET_PREBUILT_INT_KERNEL) # which would require a change to build/core. KBUILD_OPTIONS := endif +endif diff --git a/dtbtool/dtbtool.c b/dtbtool/dtbtool.c index 804dd5dc0..af219ca55 100644 --- a/dtbtool/dtbtool.c +++ b/dtbtool/dtbtool.c @@ -41,10 +41,12 @@ #include #define QCDT_MAGIC "QCDT" /* Master DTB magic */ -#define QCDT_VERSION 2 /* QCDT version */ +#define QCDT_VERSION 3 /* QCDT version */ #define QCDT_DT_TAG "qcom,msm-id = <" #define QCDT_BOARD_TAG "qcom,board-id = <" +#define QCDT_PMIC_TAG "qcom,pmic-id = <" + #define PAGE_SIZE_DEF 2048 #define PAGE_SIZE_MAX (1024*1024) @@ -63,6 +65,7 @@ struct chipInfo_t { uint32_t platform; uint32_t subtype; uint32_t revNum; + uint32_t pmic_model[4]; uint32_t dtb_size; char *dtb_file; struct chipInfo_t *prev; @@ -89,6 +92,15 @@ struct chipSt_t { struct chipSt_t *t_next; }; +struct chipPt_t { + uint32_t pmic0; + uint32_t pmic1; + uint32_t pmic2; + uint32_t pmic3; + struct chipPt_t *next; + struct chipPt_t *t_next; +}; + char *input_dir; char *output_file; char *dtc_path; @@ -201,7 +213,11 @@ int chip_add(struct chipInfo_t *c) if ((c->chipset == x->chipset) && (c->platform == x->platform) && (c->subtype == x->subtype) && - (c->revNum == x->revNum)) { + (c->revNum == x->revNum) && + (c->pmic_model[0] == x->pmic_model[0]) && + (c->pmic_model[1] == x->pmic_model[1]) && + (c->pmic_model[2] == x->pmic_model[2]) && + (c->pmic_model[3] == x->pmic_model[3])) { return RC_ERROR; /* duplicate */ } if (!x->next) { @@ -247,15 +263,20 @@ struct chipInfo_t *getChipInfo(const char *filename, int *num, uint32_t msmversi size_t line_size; FILE *pfile; int llen; - struct chipInfo_t *chip = NULL, *tmp; + struct chipInfo_t *chip = NULL, *tmp, *chip_t; uint32_t data[3] = {0, 0, 0}; uint32_t data_st[2] = {0, 0}; + uint32_t data_pt[4] = {0, 0, 0, 0}; char *tok, *sptr = NULL; int i, entryValid, entryEnded; - int count = 0, count1 = 0, count2 =0; - int entryValidST, entryEndedST, entryValidDT, entryEndedDT; + int count = 0, count1 = 0, count2 = 0, count3 = 0; + int entryValidST, entryEndedST, entryValidDT, entryEndedDT, entryValidPT, entryEndedPT; struct chipId_t *chipId = NULL, *cId = NULL, *tmp_id = NULL; struct chipSt_t *chipSt = NULL, *cSt = NULL, *tmp_st = NULL; + struct chipPt_t *chipPt = NULL, *cPt = NULL, *tmp_pt = NULL; + struct chipId_t *chipId_tmp = NULL; + struct chipSt_t *chipSt_tmp = NULL; + struct chipPt_t *chipPt_tmp = NULL; line_size = 1024; line = (char *)malloc(line_size); @@ -335,6 +356,10 @@ struct chipInfo_t *getChipInfo(const char *filename, int *num, uint32_t msmversi tmp->platform = data[1]; tmp->subtype = 0; tmp->revNum = data[2]; + tmp->pmic_model[0] = 0; + tmp->pmic_model[1] = 0; + tmp->pmic_model[2] = 0; + tmp->pmic_model[3] = 0; tmp->dtb_size = 0; tmp->dtb_file = NULL; tmp->master = chip; @@ -347,7 +372,7 @@ struct chipInfo_t *getChipInfo(const char *filename, int *num, uint32_t msmversi log_err("... skip, incorrect '%s' format\n", QCDT_DT_TAG); break; } - } else if (msmversion == 2) { + } else if (msmversion == 2 || msmversion == 3) { if ((pos = strstr(line, QCDT_DT_TAG)) != NULL) { pos += strlen(QCDT_DT_TAG); @@ -437,6 +462,53 @@ struct chipInfo_t *getChipInfo(const char *filename, int *num, uint32_t msmversi } } } + + if ((pos = strstr(line,QCDT_PMIC_TAG)) != NULL) { + pos += strlen(QCDT_PMIC_TAG); + entryEndedPT = 0; + for (;entryEndedPT < 1;) { + entryValidPT = 1; + for (i = 0; i < 4; i++) { + tok = strtok_r(pos, " \t", &sptr); + pos = NULL; + if (tok != NULL) { + if (*tok == '>') { + entryEndedPT = 1; + entryValidPT = 0; + break; + } + data_pt[i] = strtoul(tok, NULL, 0); + } else { + data_pt[i] = 0; + entryValidPT = 0; + entryEndedPT = 1; + } + } + if (entryValidPT) { + tmp_pt = (struct chipPt_t *) + malloc(sizeof(struct chipPt_t)); + if (!tmp_pt) { + log_err("Out of memory\n"); + break; + } + + if (!chipPt) { + chipPt = tmp_pt; + cPt = tmp_pt; + chipPt->t_next = NULL; + } else { + tmp_pt->t_next = chipPt->t_next; + chipPt->t_next = tmp_pt; + } + + tmp_pt->pmic0 = data_pt[0]; + tmp_pt->pmic1 = data_pt[1]; + tmp_pt->pmic2 = data_pt[2]; + tmp_pt->pmic3 = data_pt[3]; + count3++; + } + } + } } } } @@ -452,49 +524,116 @@ struct chipInfo_t *getChipInfo(const char *filename, int *num, uint32_t msmversi log_err("... skip, incorrect '%s' format\n", QCDT_BOARD_TAG); return NULL; } + if (count3 == 0 && msmversion == 3) { + log_err("... skip, incorrect '%s' format\n", QCDT_PMIC_TAG); + return NULL; + } tmp_st = cSt; + tmp_pt = cPt; while (cId != NULL) { while (cSt != NULL) { - tmp = (struct chipInfo_t *) - malloc(sizeof(struct chipInfo_t)); - if (!tmp) { - log_err("Out of memory\n"); - break; - } - if (!chip) { - chip = tmp; - chip->t_next = NULL; + if (msmversion == 3) { + while (cPt != NULL) { + tmp = (struct chipInfo_t *) + malloc(sizeof(struct chipInfo_t)); + if (!tmp) { + log_err("Out of memory\n"); + break; + } + if (!chip) { + chip = tmp; + chip->t_next = NULL; + } else { + tmp->t_next = chip->t_next; + chip->t_next = tmp; + } + + tmp->chipset = cId->chipset; + tmp->platform = cSt->platform; + tmp->revNum = cId->revNum; + tmp->subtype = cSt->subtype; + tmp->pmic_model[0] = cPt->pmic0; + tmp->pmic_model[1] = cPt->pmic1; + tmp->pmic_model[2] = cPt->pmic2; + tmp->pmic_model[3] = cPt->pmic3; + tmp->dtb_size = 0; + tmp->dtb_file = NULL; + tmp->master = chip; + tmp->wroteDtb = 0; + tmp->master_offset = 0; + cPt = cPt->t_next; + } + cPt = tmp_pt; } else { - tmp->t_next = chip->t_next; - chip->t_next = tmp; + tmp = (struct chipInfo_t *) + malloc(sizeof(struct chipInfo_t)); + if (!tmp) { + log_err("Out of memory\n"); + break; + } + if (!chip) { + chip = tmp; + chip->t_next = NULL; + } else { + tmp->t_next = chip->t_next; + chip->t_next = tmp; + } + tmp->chipset = cId->chipset; + tmp->platform = cSt->platform; + tmp->revNum = cId->revNum; + tmp->subtype = cSt->subtype; + tmp->pmic_model[0] = 0; + tmp->pmic_model[1] = 0; + tmp->pmic_model[2] = 0; + tmp->pmic_model[3] = 0; + tmp->dtb_size = 0; + tmp->dtb_file = NULL; + tmp->master = chip; + tmp->wroteDtb = 0; + tmp->master_offset = 0; } - - tmp->chipset = cId->chipset; - tmp->platform = cSt->platform; - tmp->revNum = cId->revNum; - tmp->subtype = cSt->subtype; - tmp->dtb_size = 0; - tmp->dtb_file = NULL; - tmp->master = chip; - tmp->wroteDtb = 0; - tmp->master_offset = 0; - cSt = cSt->t_next; - } cSt = tmp_st; cId = cId->t_next; } - if (entryEndedST == 1 && entryEndedDT == 1) { - pclose(pfile); + if (msmversion == 2) + entryEndedPT = 1; + + /* clear memory*/ + pclose(pfile); + while (chipId) { + chipId_tmp = chipId; + chipId = chipId->t_next; + free(chipId_tmp); + } + while (chipSt) { + chipSt_tmp= chipSt; + chipSt = chipSt->t_next; + free(chipSt_tmp); + } + + while (chipPt) { + chipPt_tmp= chipPt; + chipPt = chipPt->t_next; + free(chipPt_tmp); + } + + if (entryEndedST == 1 && entryEndedDT == 1 && entryEndedPT == 1) { *num = count1; - free(chipSt); - free(chipId); return chip; } + /* clear memory*/ + while (chip) { + chip_t = chip; + chip = chip->next; + if (chip_t->dtb_file) + free(chip_t->dtb_file); + free(chip_t); + } return NULL; } @@ -541,15 +680,18 @@ int GetVersionInfo(const char *filename) } else { /* Find the type of version */ while ((llen = getline(&line, &line_size, pfile)) != -1) { - if ((pos = strstr(line,QCDT_BOARD_TAG)) != NULL) { + if ((pos = strstr(line,QCDT_BOARD_TAG)) != NULL) { v = 2; + } + if ((pos = strstr(line,QCDT_PMIC_TAG)) != NULL) { + v = 3; break; - } + } } } - if (v == 1) - log_info(" Old Version:%d\n", v); + free(line); + log_info("Version:%d\n", v); return v; } @@ -620,7 +762,7 @@ int main(int argc, char **argv) flen = strlen(dp->d_name); if ((flen > 4) && (strncmp(&dp->d_name[flen-4], ".dtb", 4) == 0)) { - log_info("Found file: %s ... ", dp->d_name); + log_info("Found file: %s ... \n", dp->d_name); flen = strlen(input_dir) + strlen(dp->d_name) + 1; filename = (char *)malloc(flen); @@ -654,6 +796,14 @@ int main(int argc, char **argv) continue; } } + if (msmversion == 3) { + if (!chip) { + log_err("skip, failed to scan for '%s', '%s' or '%s' tag\n", + QCDT_DT_TAG, QCDT_BOARD_TAG, QCDT_PMIC_TAG); + free(filename); + continue; + } + } if ((stat(filename, &st) != 0) || (st.st_size == 0)) { @@ -662,12 +812,14 @@ int main(int argc, char **argv) continue; } - log_info("chipset: %u, rev: %u, platform: %u, subtype: %u\n", - chip->chipset, chip->revNum, chip->platform, chip->subtype); + log_info("chipset: %u, rev: %u, platform: %u, subtype: %u, pmic0: %u, pmic1: %u, pmic2: %u, pmic3: %u\n", + chip->chipset, chip->revNum, chip->platform, chip->subtype, + chip->pmic_model[0], chip->pmic_model[1], chip->pmic_model[2], chip->pmic_model[3]); for (t_chip = chip->t_next; t_chip; t_chip = t_chip->t_next) { - log_info(" additional chipset: %u, rev: %u, platform: %u, subtype: %u\n", - t_chip->chipset, t_chip->revNum, t_chip->platform, t_chip->subtype); + log_info("additional chipset: %u, rev: %u, platform: %u, subtype: %u, pmic0: %u, pmic1: %u, pmic2: %u, pmic3: %u\n", + t_chip->chipset, t_chip->revNum, t_chip->platform, t_chip->subtype, + t_chip->pmic_model[0], t_chip->pmic_model[1], t_chip->pmic_model[2], t_chip->pmic_model[3]); } rc = chip_add(chip); @@ -725,8 +877,9 @@ int main(int argc, char **argv) /* Calculate offset of first DTB block */ dtb_offset = 12 + /* header */ - (24 * dtb_count) + /* DTB table entries */ + (40 * dtb_count) + /* DTB table entries */ 4; /* end of table indicator */ + /* Round up to page size */ padding = page_size - (dtb_offset % page_size); dtb_offset += padding; @@ -737,6 +890,10 @@ int main(int argc, char **argv) platform subtype soc rev + pmic model0 + pmic model1 + pmic model2 + pmic model3 dtb offset dtb size */ @@ -745,6 +902,10 @@ int main(int argc, char **argv) wrote += write(out_fd, &chip->platform, sizeof(uint32_t)); wrote += write(out_fd, &chip->subtype, sizeof(uint32_t)); wrote += write(out_fd, &chip->revNum, sizeof(uint32_t)); + wrote += write(out_fd, &chip->pmic_model[0], sizeof(uint32_t)); + wrote += write(out_fd, &chip->pmic_model[1], sizeof(uint32_t)); + wrote += write(out_fd, &chip->pmic_model[2], sizeof(uint32_t)); + wrote += write(out_fd, &chip->pmic_model[3], sizeof(uint32_t)); if (chip->master->master_offset != 0) { wrote += write(out_fd, &chip->master->master_offset, sizeof(uint32_t)); } else { diff --git a/dtbtool/dtbtool.txt b/dtbtool/dtbtool.txt index b48e4bf46..1aa0be438 100644 --- a/dtbtool/dtbtool.txt +++ b/dtbtool/dtbtool.txt @@ -1,4 +1,4 @@ -Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. +Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. Redistribution and use in source form and compiled forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are @@ -73,7 +73,7 @@ Android - Table of Device Tree x +------------------+ | | MAGIC ("QCDT") | 4B | +------------------+ - header | VERSION | uint32 (version 2) + header | VERSION | uint32 (version 3) | +------------------+ | | num of DTBs | uint32 (number of DTB entries) x +------------------+ @@ -85,6 +85,14 @@ Android - Table of Device Tree device +------------------+ #1 | soc rev #1 | uint32 (e.g. MSM8974 v2) entry +------------------+ + | | pmic0 #1 | uint32 (pmic0-> first smallest SID of existing pmic) + | +------------------+ + | | pmic1 #1 | uint32 (pmic1-> secondary smallest SID of existing pmic) + | +------------------+ + | | pmic2 #1 | uint32 (pmic2-> third smallest SID of existing pmic) + | +------------------+ + | | pmic3 #1 | uint32 (pmic3-> fourth smallest SID of existing pmic) + | +------------------+ | | offset #1 | uint32 (byte offset from start/before MAGIC | +------------------+ to DTB entry) | | size #1 | uint32 (size in bytes of DTB blob) @@ -98,10 +106,18 @@ Android - Table of Device Tree | +------------------+ device | variant id #Z | uint32 (e.g. ID for CDP, MTP) #Z +------------------+ - entry | variant id #Z | uint32 (e.g. ID for subtype) (QCDT v2) + entry | subtype id #Z | uint32 (e.g. ID for subtype) (QCDT v2) (last) +------------------+ | | soc rev #Z | uint32 (e.g. MSM8974 v2) | +------------------+ + | | pmic0 #1 | uint32 (pmic0-> first smallest SID of existing pmic) + | +------------------+ + | | pmic1 #1 | uint32 (pmic1-> secondary smallest SID of existing pmic) + | +------------------+ + | | pmic2 #1 | uint32 (pmic2-> third smallest SID of existing pmic) + | +------------------+ + | | pmic3 #1 | uint32 (pmic3-> fourth smallest SID of existing pmic) + | +------------------+ | | offset #Z | uint32 (byte offset from start/before MAGIC x +------------------+ to DTB entry) | 0 ("zero") | uint32 (end of list delimiter) @@ -133,28 +149,57 @@ Android - Table of Device Tree or qcom,msm-id = ; qcom,board-id = ; + or + qcom,msm-id = ; + qcom,board-id = ; + qcom,pmic-id = ; x = ID for msm8974 y = ID for CDP, MTP, etc. y' = ID for subtype (assumed zero if absent) z = ID for soc revision + a = pmic0 + b = pmic1 + c = pmic2 + d = pmic3 + SBL populates the pmic entries always in ascending order of SID, so + pmic0-> SID0, pmic1-> SID1, pmic2-> SID2, pmic3-> SID3. + e.g. for qcom,pmic-id = + Board X = MSM8994 + PM8994 + PMI8994 (Existing boards [ROW]) + Board Y = MSM8994 + PM8994 + PMI8994 + PM8004 (Internal SS board variant) + Board Z = MSM8994 + PM8994 + PM8004 (Boards that SS will be making) + + For all boards X, Y, and Z, PMICs have the following SIDs and REVID SUBTYPEs + (i.e. PMIC Model): + PM8994 - SID 0 and 1; subtype = 9 + PMI8994 - SID 2 and 3; subtype = 10 + PM8004 - SID 4 and 5; subtype = 12 + + LK using SMEM PMIC info(1 as major and 0 as minor version for example): + Board X: qcom,pmic-id = <0x0109 0x010A 0x0 0x0>; + Board Y: qcom,pmic-id = <0x0109 0x010A 0x010C 0x0>; + Board Z: qcom,pmic-id = <0x0109 0x010C 0x0 0x0>; + The entry can optionally be an array: qcom,msm-id = , , ...; or qcom,msm-id = , , ...; qcom,board-id = , ...; - Note that qcom,msm-id and qcom,board-id are not matched - pairs. + or + qcom,msm-id = , , ...; + qcom,board-id = , ...; + qcom,pmic-id = , ...; + Note that qcom,msm-id, qcom,board-id and qcom,pmic-id are not matched pairs. 2) Kernel compile will generate the DTB 3) Android build will run a new tool (dtbTool) a) scan the DTB output directory for all compiled DTB - b) decompile the DTB for "qcom,msm-id"/"qcom,board-id" + b) decompile the DTB for "qcom,msm-id"/"qcom,board-id"/"qcom,pmic-id" c) generate the QC table of device tree in sorted - order (platform, variant, subtype, soc rev) + order (platform, variant, subtype, soc rev, pmic0, pmic1, pmic2, pmic3) d) modified mkbootimg will merge new table of DT 3.2) Run-time: - 1) LK bootloader will obtain MSM id/variant/subtype/soc rev - info either from early bootloaders or via other means + 1) LK bootloader will obtain platform id/variant/subtype/soc rev/major ver/minor ver + /pmic0/pmic1/pmic2/pmic3 info either from early bootloaders or via other means 2) LK bootloader will check entries #10 for non-zero value (set to zero for standard boot.img). If the value is non-zero, refer to page section after @@ -164,10 +209,27 @@ Android - Table of Device Tree QCDT version) 5) LK scans through the QCDT table to look for matching entry. Search order is: - 1) platform ID exact match - 2) variant ID exact match + 1) msm ID exact match + 2) Platform type exact match 3) subtype ID exact match - 4) select the highest soc rev in QCDT that is + 4) HLOS subtype exact match + 5) Pmic0 model ID exact match + 6) Pmic1 model ID exact match + 7) Pmic2 model ID exact match + 8) Pmic3 model ID exact match + 9) foundry ID, look for exact match, if not found choose + device tree with foundry-id(0x0) + 10) select the highest soc rev in QCDT that is equal to or lower than the runtime detected soc rev + 11) select the highest major&minor ver in QCDT that is + equal to or lower than the runtime detected major ver + 12) select the highest pmic0 major&minor in QCDT that is + equal to or lower than the runtime detected pmic0 + 13) select the highest pmic1 major&minor in QCDT that is + equal to or lower than the runtime detected pmic1 + 14) select the highest pmic2 major&minor in QCDT that is + equal to or lower than the runtime detected pmic2 + 15) select the highest pmic3 major&minor in QCDT that is + equal to or lower than the runtime detected pmic3 6) Load the matching DTB blob to the tags addr 7) LK pass the correct DTB to the kernel diff --git a/generate_extra_images.mk b/generate_extra_images.mk index cb84efbd2..1bdab24f5 100644 --- a/generate_extra_images.mk +++ b/generate_extra_images.mk @@ -17,6 +17,13 @@ recovery_ramdisk := $(PRODUCT_OUT)/ramdisk-recovery.img INSTALLED_USBIMAGE_TARGET := $(PRODUCT_OUT)/usbdisk.img endif +#--------------------------------------------------------------------- +#Add systemimage as a dependency on userdata.img +#--------------------------------------------------------------------- +$(INSTALLED_USERDATAIMAGE_TARGET) : systemimage \ + $(INTERNAL_USERIMAGES_DEPS) \ + $(INTERNAL_USERDATAIMAGE_FILES) + #---------------------------------------------------------------------- # Generate secure boot image #---------------------------------------------------------------------- @@ -81,6 +88,7 @@ endif #---------------------------------------------------------------------- # Generate device tree image (dt.img) #---------------------------------------------------------------------- +ifneq ($(strip $(TARGET_NO_KERNEL)),true) ifeq ($(strip $(BOARD_KERNEL_SEPARATED_DT)),true) ifeq ($(strip $(BUILD_TINY_ANDROID)),true) include device/qcom/common/dtbtool/Android.mk @@ -90,7 +98,7 @@ DTBTOOL := $(HOST_OUT_EXECUTABLES)/dtbTool$(HOST_EXECUTABLE_SUFFIX) INSTALLED_DTIMAGE_TARGET := $(PRODUCT_OUT)/dt.img -possible_dtb_dirs = $(KERNEL_OUT)/arch/arm/boot/dts/ $(KERNEL_OUT)/arch/arm/boot/ +possible_dtb_dirs = $(KERNEL_OUT)/arch/$(TARGET_KERNEL_ARCH)/boot/dts/ $(KERNEL_OUT)/arch/arm/boot/dts/ $(KERNEL_OUT)/arch/arm/boot/ dtb_dir = $(firstword $(wildcard $(possible_dtb_dirs))) define build-dtimage-target @@ -105,6 +113,7 @@ $(INSTALLED_DTIMAGE_TARGET): $(DTBTOOL) $(INSTALLED_KERNEL_TARGET) ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_DTIMAGE_TARGET) ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_DTIMAGE_TARGET) endif +endif #--------------------------------------------------------------------- # Generate usbdisk.img FAT32 image @@ -126,20 +135,57 @@ endif #---------------------------------------------------------------------- # Generate CDROM image #---------------------------------------------------------------------- -CDROM_RES_FILE = $(TARGET_DEVICE_DIR)/cdrom_res +CDROM_RES_FILE := $(TARGET_DEVICE_DIR)/cdrom_res +CDROM_DUMMY_FILE := $(TARGET_DEVICE_DIR)/cdrom_res/zero.bin + ifneq ($(wildcard $(CDROM_RES_FILE)),) CDROM_ISO_TARGET := $(PRODUCT_OUT)/system/etc/cdrom_install.iso +#delete the dummy file if it already exists. +ifneq ($(wildcard $(CDROM_DUMMY_FILE)),) +$(shell rm -f $(CDROM_DUMMY_FILE)) +endif +CDROM_RES_SIZE := $(shell du -bs $(CDROM_RES_FILE) | egrep -o '^[0-9]+') +#At least 300 sectors, 2048Bytes per Sector, set as 310 here +CDROM_MIN_SIZE := 634880 +CDROM_CAPACITY_IS_ENOUGH := $(shell expr $(CDROM_RES_SIZE) / $(CDROM_MIN_SIZE)) +ifeq ($(CDROM_CAPACITY_IS_ENOUGH),0) +CDROM_DUMMY_SIZE := $(shell expr $(CDROM_MIN_SIZE) - $(CDROM_RES_SIZE)) +CDROM_DUMMY_SIZE_KB := $(shell expr `expr $(CDROM_DUMMY_SIZE) + 1023` / 1024) +$(shell dd if=/dev/zero of=$(CDROM_RES_FILE)/zero.bin bs=1024 count=$(CDROM_DUMMY_SIZE_KB)) +endif define build-cdrom-target + @mkdir -p $(PRODUCT_OUT)/system/etc $(hide) mkisofs -o $(CDROM_ISO_TARGET) $(CDROM_RES_FILE) endef -$(CDROM_ISO_TAREGT): $(CDROM_RES_FILE) +$(CDROM_ISO_TARGET): $(CDROM_RES_FILE) $(build-cdrom-target) ALL_DEFAULT_INSTALLED_MODULES += $(CDROM_ISO_TARGET) ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(CDROM_ISO_TARGET) endif +#--------------------------------------------------------------------- +#Generate the SingleImage.bin / MMC_FLASHMEM1.dat +#--------------------------------------------------------------------- +ifeq ($(strip $(BOARD_DISK_ANDROID_IMG)),true) +DISK_IMG_TOOL := $(HOST_OUT_EXECUTABLES)/singleimage.py +$(call pretty,"Android Disk Image for simulator: $(DISK_IMG_TOOL)") + +INSTALLED_DISK_IMG_TARGET := $(PRODUCT_OUT)/MMC_FLASHMEM1.dat +$(call pretty,"Android Disk Image for simulator: $(INSTALLED_DISK_IMG_TARGET)") + +define build-disk-img-target + $(call pretty,"Android Disk Image for simulator: $(INSTALLED_DISK_IMG_TARGET)") + $(hide) $(DISK_IMG_TOOL) $(PRODUCT_OUT) + $(hide) mv $(PRODUCT_OUT)/singleimage.bin $(PRODUCT_OUT)/MMC_FLASHMEM1.dat +endef + +$(INSTALLED_DISK_IMG_TARGET): $(INSTALLED_BOOTIMAGE_TARGET) $(INSTALLED_RAMDISK_TARGET) $(INSTALLED_SYSTEMIMAGE) $(INSTALLED_USERDATAIMAGE_TARGET) $(INSTALLED_RECOVERYIMAGE_TARGET) $(BUILT_CACHEIMAGE_TARGET) $(DISK_IMG_TOOL) + $(build-disk-img-target) +ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_DISK_IMG_TARGET) +ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_DISK_IMG_TARGET) +endif #---------------------------------------------------------------------- # Generate NAND images @@ -147,8 +193,6 @@ endif ifeq ($(call is-board-platform-in-list,msm7627a msm7630_surf),true) 2K_NAND_OUT := $(PRODUCT_OUT)/2k_nand_images -4K_NAND_OUT := $(PRODUCT_OUT)/4k_nand_images -BCHECC_OUT := $(PRODUCT_OUT)/bchecc_images INSTALLED_2K_BOOTIMAGE_TARGET := $(2K_NAND_OUT)/boot.img INSTALLED_2K_SYSTEMIMAGE_TARGET := $(2K_NAND_OUT)/system.img @@ -156,6 +200,35 @@ INSTALLED_2K_USERDATAIMAGE_TARGET := $(2K_NAND_OUT)/userdata.img INSTALLED_2K_PERSISTIMAGE_TARGET := $(2K_NAND_OUT)/persist.img INSTALLED_2K_RECOVERYIMAGE_TARGET := $(2K_NAND_OUT)/recovery.img +recovery_nand_fstab := $(TARGET_DEVICE_DIR)/recovery_nand.fstab + +NAND_BOOTIMAGE_ARGS := \ + --kernel $(INSTALLED_KERNEL_TARGET) \ + --ramdisk $(INSTALLED_RAMDISK_TARGET) \ + --cmdline "$(BOARD_KERNEL_CMDLINE)" \ + --base $(BOARD_KERNEL_BASE) + +NAND_RECOVERYIMAGE_ARGS := \ + --kernel $(INSTALLED_KERNEL_TARGET) \ + --ramdisk $(recovery_ramdisk) \ + --cmdline "$(BOARD_KERNEL_CMDLINE)" \ + --base $(BOARD_KERNEL_BASE) + + +INTERNAL_2K_BOOTIMAGE_ARGS := $(NAND_BOOTIMAGE_ARGS) +INTERNAL_2K_BOOTIMAGE_ARGS += --pagesize $(BOARD_KERNEL_2KPAGESIZE) + +INTERNAL_2K_MKYAFFS2_FLAGS := -c $(BOARD_KERNEL_2KPAGESIZE) +INTERNAL_2K_MKYAFFS2_FLAGS += -s $(BOARD_KERNEL_2KSPARESIZE) + +INTERNAL_2K_RECOVERYIMAGE_ARGS := $(NAND_RECOVERYIMAGE_ARGS) +INTERNAL_2K_RECOVERYIMAGE_ARGS += --pagesize $(BOARD_KERNEL_2KPAGESIZE) + +ifeq ($(call is-board-platform-in-list,msm7627a msm7630_surf),true) + +4K_NAND_OUT := $(PRODUCT_OUT)/4k_nand_images +BCHECC_OUT := $(PRODUCT_OUT)/bchecc_images + INSTALLED_4K_BOOTIMAGE_TARGET := $(4K_NAND_OUT)/boot.img INSTALLED_4K_SYSTEMIMAGE_TARGET := $(4K_NAND_OUT)/system.img INSTALLED_4K_USERDATAIMAGE_TARGET := $(4K_NAND_OUT)/userdata.img @@ -168,40 +241,20 @@ INSTALLED_BCHECC_USERDATAIMAGE_TARGET := $(BCHECC_OUT)/userdata.img INSTALLED_BCHECC_PERSISTIMAGE_TARGET := $(BCHECC_OUT)/persist.img INSTALLED_BCHECC_RECOVERYIMAGE_TARGET := $(BCHECC_OUT)/recovery.img -recovery_nand_fstab := $(TARGET_DEVICE_DIR)/recovery_nand.fstab - -NAND_BOOTIMAGE_ARGS := \ - --kernel $(INSTALLED_KERNEL_TARGET) \ - --ramdisk $(INSTALLED_RAMDISK_TARGET) \ - --cmdline "$(BOARD_KERNEL_CMDLINE)" \ - --base $(BOARD_KERNEL_BASE) - -NAND_RECOVERYIMAGE_ARGS := \ - --kernel $(INSTALLED_KERNEL_TARGET) \ - --ramdisk $(recovery_ramdisk) \ - --cmdline "$(BOARD_KERNEL_CMDLINE)" \ - --base $(BOARD_KERNEL_BASE) - INTERNAL_4K_BOOTIMAGE_ARGS := $(NAND_BOOTIMAGE_ARGS) INTERNAL_4K_BOOTIMAGE_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE) -INTERNAL_2K_BOOTIMAGE_ARGS := $(NAND_BOOTIMAGE_ARGS) -INTERNAL_2K_BOOTIMAGE_ARGS += --pagesize $(BOARD_KERNEL_2KPAGESIZE) - INTERNAL_4K_MKYAFFS2_FLAGS := -c $(BOARD_KERNEL_PAGESIZE) INTERNAL_4K_MKYAFFS2_FLAGS += -s $(BOARD_KERNEL_SPARESIZE) -INTERNAL_2K_MKYAFFS2_FLAGS := -c $(BOARD_KERNEL_2KPAGESIZE) -INTERNAL_2K_MKYAFFS2_FLAGS += -s $(BOARD_KERNEL_2KSPARESIZE) - INTERNAL_BCHECC_MKYAFFS2_FLAGS := -c $(BOARD_KERNEL_PAGESIZE) INTERNAL_BCHECC_MKYAFFS2_FLAGS += -s $(BOARD_KERNEL_BCHECC_SPARESIZE) INTERNAL_4K_RECOVERYIMAGE_ARGS := $(NAND_RECOVERYIMAGE_ARGS) INTERNAL_4K_RECOVERYIMAGE_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE) -INTERNAL_2K_RECOVERYIMAGE_ARGS := $(NAND_RECOVERYIMAGE_ARGS) -INTERNAL_2K_RECOVERYIMAGE_ARGS += --pagesize $(BOARD_KERNEL_2KPAGESIZE) +endif + # Generate boot image for NAND ifeq ($(TARGET_BOOTIMG_SIGNED),true) @@ -313,8 +366,77 @@ endif # !BUILD_TINY_ANDROID endif # is-board-platform-in-list +##################################################################################################### +# support for small user data image + +ifneq ($(strip $(BOARD_SMALL_USERDATAIMAGE_PARTITION_SIZE)),) +# Don't build userdata.img if it's extfs but no partition size +skip_userdata.img := +ifdef INTERNAL_USERIMAGES_EXT_VARIANT +ifndef BOARD_USERDATAIMAGE_PARTITION_SIZE +skip_userdata.img := true +endif +endif + +ifneq ($(skip_userdata.img),true) + +INSTALLED_SMALL_USERDATAIMAGE_TARGET := $(PRODUCT_OUT)/userdata_small.img + +define build-small-userdataimage + @echo "target small userdata image" + $(hide) mkdir -p $(1) + $(hide) $(MKEXTUSERIMG) -s $(TARGET_OUT_DATA) $(2) ext4 data $(BOARD_SMALL_USERDATAIMAGE_PARTITION_SIZE) + $(hide) chmod a+r $@ + $(hide) $(call assert-max-image-size,$@,$(BOARD_SMALL_USERDATAIMAGE_PARTITION_SIZE),yaffs) +endef + + +$(INSTALLED_SMALL_USERDATAIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS) $(INSTALLED_USERDATAIMAGE_TARGET) + $(hide) $(call build-small-userdataimage,$(PRODUCT_OUT),$(INSTALLED_SMALL_USERDATAIMAGE_TARGET)) + +ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_SMALL_USERDATAIMAGE_TARGET) +ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_SMALL_USERDATAIMAGE_TARGET) + +endif + +endif + +#---------------------------------------------------------------------- +# Compile (L)ittle (K)ernel bootloader and the nandwrite utility +#---------------------------------------------------------------------- +ifneq ($(strip $(TARGET_NO_BOOTLOADER)),true) + +# Compile +include bootable/bootloader/lk/AndroidBoot.mk + +$(INSTALLED_BOOTLOADER_MODULE): $(TARGET_EMMC_BOOTLOADER) | $(ACP) + $(transform-prebuilt-to-target) +$(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_BOOTLOADER_MODULE) + +droidcore: $(INSTALLED_BOOTLOADER_MODULE) +endif + +#---------------------------------------------------------------------- +# Generate secure boot image +#---------------------------------------------------------------------- +ifeq ($(TARGET_BOOTIMG_SIGNED),true) +.PHONY: bootimage +bootimage: $(INSTALLED_BOOTIMAGE_TARGET) $(INSTALLED_SEC_BOOTIMAGE_TARGET) +endif + +################################################################################################### + +ifeq ($(TARGET_BOOTIMG_SIGNED),true) +.PHONY: otapackage +otapackage: $(INSTALLED_SEC_BOOTIMAGE_TARGET) $(INSTALLED_SEC_RECOVERYIMAGE_TARGET) +endif + .PHONY: aboot +ifeq ($(USESECIMAGETOOL), true) +aboot: gensecimage_target +else aboot: $(INSTALLED_BOOTLOADER_MODULE) +endif .PHONY: kernel kernel: $(INSTALLED_BOOTIMAGE_TARGET) $(INSTALLED_SEC_BOOTIMAGE_TARGET) $(INSTALLED_4K_BOOTIMAGE_TARGET) diff --git a/healthd/Android.mk b/healthd/Android.mk new file mode 100644 index 000000000..d8f0a5512 --- /dev/null +++ b/healthd/Android.mk @@ -0,0 +1,8 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) +LOCAL_SRC_FILES := healthd_board_msm.cpp +LOCAL_MODULE := libhealthd.msm +LOCAL_CFLAGS := -Werror +LOCAL_C_INCLUDES := system/core/healthd bootable/recovery +include $(BUILD_STATIC_LIBRARY) diff --git a/healthd/healthd_board_msm.cpp b/healthd/healthd_board_msm.cpp new file mode 100644 index 000000000..fda8a13cb --- /dev/null +++ b/healthd/healthd_board_msm.cpp @@ -0,0 +1,324 @@ +/* + *Copyright (c) 2015, The Linux Foundation. All rights reserved. + * + *Redistribution and use in source and binary forms, with or without + *modification, are permitted provided that the following conditions are + *met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + *THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + *WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + *ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + *BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + *CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + *SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + *WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + *OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + *IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "minui/minui.h" + +#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) + +#define HVDCP_CHARGER "USB_HVDCP" +#define HVDCP_BLINK_TYPE 2 + +#define RED_LED_PATH "/sys/class/leds/red/brightness" +#define GREEN_LED_PATH "/sys/class/leds/green/brightness" +#define BLUE_LED_PATH "/sys/class/leds/blue/brightness" +#define RED_LED_BLINK_PATH "/sys/class/leds/red/blink" +#define GREEN_LED_BLINK_PATH "/sys/class/leds/green/blink" +#define BACKLIGHT_PATH "/sys/class/leds/lcd-backlight/brightness" + +#define CHARGING_ENABLED_PATH "/sys/class/power_supply/battery/charging_enabled" +#define CHARGER_TYPE_PATH "/sys/class/power_supply/usb/type" + +#define LOGE(x...) do { KLOG_ERROR("charger", x); } while (0) +#define LOGW(x...) do { KLOG_WARNING("charger", x); } while (0) +#define LOGV(x...) do { KLOG_DEBUG("charger", x); } while (0) + +enum { + RED_LED = 0x01 << 0, + GREEN_LED = 0x01 << 1, + BLUE_LED = 0x01 << 2, +}; + +struct led_ctl { + int color; + const char *path; +}; + +struct led_ctl leds[3] = + {{RED_LED, RED_LED_PATH}, + {GREEN_LED, GREEN_LED_PATH}, + {BLUE_LED, BLUE_LED_PATH}}; + +#define HVDCP_COLOR_MAP (RED_LED | GREEN_LED) + +struct soc_led_color_mapping { + int soc; + int color; +}; + +struct soc_led_color_mapping soc_leds[3] = { + {15, RED_LED}, + {90, RED_LED | GREEN_LED}, + {100, GREEN_LED}, +}; + +static int write_file_int(char const* path, int value) +{ + int fd; + char buffer[20]; + int rc = -1, bytes; + + fd = open(path, O_WRONLY); + if (fd >= 0) { + bytes = snprintf(buffer, sizeof(buffer), "%d\n", value); + rc = write(fd, buffer, bytes); + close(fd); + } + + return rc > 0 ? 0 : -1; +} + +static int set_tricolor_led(int on, int color) +{ + int fd, i; + char buffer[10]; + + for (i = 0; i < (int)ARRAY_SIZE(leds); i++) { + if ((color & leds[i].color) && (access(leds[i].path, R_OK | W_OK) == 0)) { + fd = open(leds[i].path, O_RDWR); + if (fd < 0) { + LOGE("Could not open red led node\n"); + goto cleanup; + } + if (on) + snprintf(buffer, sizeof(int), "%d\n", 255); + else + snprintf(buffer, sizeof(int), "%d\n", 0); + + if (write(fd, buffer, strlen(buffer)) < 0) + LOGE("Could not write to led node\n"); +cleanup: + if (fd >= 0) + close(fd); + } + } + + return 0; +} + +static bool is_hvdcp_inserted() +{ + bool hvdcp = false; + char buff[12] = "\0"; + int fd, cnt; + + fd = open(CHARGER_TYPE_PATH, O_RDONLY); + if (fd >= 0) { + cnt = read(fd, buff, sizeof(buff)); + if (cnt > 0 && !strncmp(buff, HVDCP_CHARGER, 9)) + hvdcp = true; + close(fd); + } + + return hvdcp; +} + +static int leds_blink_for_hvdcp_allow(void) +{ + int rc = 0, bytes; + int red_blink_fd = -1, green_blink_fd = -1, type_fd = -1; + char buf[20]; + + green_blink_fd = open(GREEN_LED_BLINK_PATH, O_RDWR); + red_blink_fd = open(RED_LED_BLINK_PATH, O_RDWR); + if (red_blink_fd < 0 && green_blink_fd < 0) { + LOGE("Could not open red && green led blink node\n"); + } else { + type_fd = open(CHARGER_TYPE_PATH, O_RDONLY); + if (type_fd < 0) { + LOGE("Could not open USB type node\n"); + close(red_blink_fd); + close(green_blink_fd); + return rc; + } else { + close(type_fd); + if (red_blink_fd > 0) { + rc |= RED_LED; + bytes = snprintf(buf, sizeof(buf), "%d\n", 0); + if (write(red_blink_fd, buf, bytes) < 0) { + LOGE("Fail to write: %s\n", RED_LED_BLINK_PATH); + rc = 0; + } + close(red_blink_fd); + } + if (green_blink_fd > 0) { + rc |= GREEN_LED; + bytes = snprintf(buf, sizeof(buf), "%d\n", 0); + if (write(green_blink_fd, buf, bytes) < 0) { + LOGE("Fail to write: %s\n", GREEN_LED_BLINK_PATH); + rc = 0; + } + close(green_blink_fd); + } + } + } + + return rc; +} + +#define STR_LEN 8 +void healthd_board_mode_charger_draw_battery( + struct android::BatteryProperties *batt_prop) +{ + char cap_str[STR_LEN]; + int x, y; + int str_len_px; + static int char_height = -1, char_width = -1; + + if (char_height == -1 && char_width == -1) + gr_font_size(&char_width, &char_height); + snprintf(cap_str, (STR_LEN - 1), "%d%%", batt_prop->batteryLevel); + str_len_px = gr_measure(cap_str); + x = (gr_fb_width() - str_len_px) / 2; + y = (gr_fb_height() + char_height) / 2; + gr_color(0xa4, 0xc6, 0x39, 255); + gr_text(x, y, cap_str, 0); +} + +void healthd_board_mode_charger_battery_update( + struct android::BatteryProperties *batt_prop) +{ + static int blink_for_hvdcp = -1; + static int old_color = 0; + int i, color, soc, rc; + bool blink = false; + + if (blink_for_hvdcp == -1) + blink_for_hvdcp = leds_blink_for_hvdcp_allow(); + + if ((blink_for_hvdcp > 0) && is_hvdcp_inserted()) + blink = true; + + soc = batt_prop->batteryLevel; + + for (i = 0; i < ((int)ARRAY_SIZE(soc_leds) - 1); i++) { + if (soc < soc_leds[i].soc) + break; + } + color = soc_leds[i].color; + + if (old_color != color) { + if ((color & HVDCP_COLOR_MAP) && blink) { + if (blink_for_hvdcp & RED_LED) { + rc = write_file_int(RED_LED_BLINK_PATH, HVDCP_BLINK_TYPE); + if (rc < 0) { + LOGE("Fail to write: %s\n", RED_LED_BLINK_PATH); + return; + } + } + if (blink_for_hvdcp & GREEN_LED) { + rc = write_file_int(GREEN_LED_BLINK_PATH, HVDCP_BLINK_TYPE); + if (rc < 0) { + LOGE("Fail to write: %s\n", GREEN_LED_BLINK_PATH); + return; + } + } + } else { + set_tricolor_led(0, old_color); + set_tricolor_led(1, color); + old_color = color; + LOGV("soc = %d, set led color 0x%x\n", soc, soc_leds[i].color); + } + } +} + +#define BACKLIGHT_ON_LEVEL 100 +#define BACKLIGHT_OFF_LEVEL 0 +void healthd_board_mode_charger_set_backlight(bool en) +{ + int fd; + char buffer[10]; + + if (access(BACKLIGHT_PATH, R_OK | W_OK) != 0) + { + LOGW("Backlight control not support\n"); + return; + } + + memset(buffer, '\0', sizeof(buffer)); + fd = open(BACKLIGHT_PATH, O_RDWR); + if (fd < 0) { + LOGE("Could not open backlight node : %s\n", strerror(errno)); + goto cleanup; + } + LOGV("set backlight status to %d\n", en); + if (en) + snprintf(buffer, sizeof(buffer), "%d\n", BACKLIGHT_ON_LEVEL); + else + snprintf(buffer, sizeof(buffer), "%d\n", BACKLIGHT_OFF_LEVEL); + + if (write(fd, buffer,strlen(buffer)) < 0) { + LOGE("Could not write to backlight node : %s\n", strerror(errno)); + goto cleanup; + } +cleanup: + if (fd >= 0) + close(fd); +} + +void healthd_board_mode_charger_init() +{ + int ret; + char buff[8] = "\0"; + int charging_enabled = 0; + int fd; + + /* check the charging is enabled or not */ + fd = open(CHARGING_ENABLED_PATH, O_RDONLY); + if (fd < 0) + return; + ret = read(fd, buff, sizeof(buff)); + close(fd); + if (ret > 0 && sscanf(buff, "%d\n", &charging_enabled)) { + /* if charging is disabled, reboot and exit power off charging */ + if (charging_enabled) + return; + LOGW("android charging is disabled, exit!\n"); + android_reboot(ANDROID_RB_RESTART, 0, 0); + } +} + +void healthd_board_init(struct healthd_config*) +{ + // use defaults +} + +int healthd_board_battery_update(struct android::BatteryProperties*) +{ + // return 0 to log periodic polled battery status to kernel log + return 1; +} diff --git a/init/init_apq8084.c b/init/init_apq8084.c index b832ccf2e..e7181ea37 100644 --- a/init/init_apq8084.c +++ b/init/init_apq8084.c @@ -49,13 +49,20 @@ void init_msm_properties(unsigned long msm_id, unsigned long msm_ver, char *boar return; if (ISMATCH(board_type, "Liquid")) { - property_set(PROP_LCDDENSITY, "293"); + property_set(PROP_LCDDENSITY, "320"); /* Liquid do not have hardware navigation keys, so enable Android sw navigation bar */ property_set(PROP_QEMU_NAVKEY, "0"); } + else if (ISMATCH(board_type, "SBC")) { + property_set(PROP_LCDDENSITY, "200"); + /* SBC does not have hardware navigation keys, so enable + Android sw navigation bar + */ + property_set(PROP_QEMU_NAVKEY, "0"); + } else { - property_set(PROP_LCDDENSITY, "440"); + property_set(PROP_LCDDENSITY, "480"); } } diff --git a/init/init_msm.c b/init/init_msm.c index 6ee196bb1..c68f80115 100644 --- a/init/init_msm.c +++ b/init/init_msm.c @@ -1,5 +1,5 @@ /* - Copyright (c) 2013, The Linux Foundation. All rights reserved. + Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -42,6 +42,8 @@ #include "init_msm.h" +#include + #define SOC_ID_PATH1 "/sys/devices/soc0/soc_id" #define SOC_ID_PATH2 "/sys/devices/system/soc/soc0/id" #define SOC_VER_PATH1 "/sys/devices/soc0/platform_version" @@ -71,7 +73,7 @@ void init_msm_properties(unsigned long soc, unsigned long socrev, char *board) UNUSED(board); } -static int read_file2(const char *fname, char *data, int max_size) +int read_file2(const char *fname, char *data, int max_size) { int fd, rc; @@ -127,11 +129,43 @@ void setOwners(char *path, int owner, int group) } } +void init_alarm_boot_properties() +{ + char *alarm_file = "/proc/sys/kernel/boot_reason"; + char buf[BUF_SIZE]; + char tmp[PROP_VALUE_MAX]=""; + + property_get("ro.boot.alarmboot", tmp); + + if(read_file2(alarm_file, buf, sizeof(buf))) { + + /* + * Setup ro.alarm_boot value to true when it is RTC triggered boot up + * For existing PMIC chips, the following mapping applies + * for the value of boot_reason: + * + * 0 -> unknown + * 1 -> hard reset + * 2 -> sudden momentary power loss (SMPL) + * 3 -> real time clock (RTC) + * 4 -> DC charger inserted + * 5 -> USB charger insertd + * 6 -> PON1 pin toggled (for secondary PMICs) + * 7 -> CBLPWR_N pin toggled (for external power supply) + * 8 -> KPDPWR_N pin toggled (power key pressed) + */ + if(buf[0] == '3' || !strcmp(tmp,"true")) + property_set("ro.alarm_boot", "true"); + else + property_set("ro.alarm_boot", "false"); + } +} + /* - * Setup HDMI related nodes & permissions. HDMI can be fb1 or fb2 + * Setup Display related nodes & permissions. For HDMI, it can be fb1 or fb2 * Loop through the sysfs nodes and determine the HDMI(dtv panel) */ -void set_hdmi_node_perms() +void set_display_node_perms() { char panel_type[] = "dtv panel"; char buf[BUF_SIZE]; @@ -169,6 +203,35 @@ void set_hdmi_node_perms() } } } + // Set the permission for idle_time. + snprintf(tmp, sizeof(tmp), "%sfb0/idle_time", sys_fb_path); + setPerms(tmp, 0664); + setOwners(tmp, AID_SYSTEM, AID_GRAPHICS); + // Set write permission for dynamic_fps node. + snprintf(tmp, sizeof(tmp), "%sfb0/dynamic_fps", sys_fb_path); + setPerms(tmp, 0664); + setOwners(tmp, AID_SYSTEM, AID_GRAPHICS); + // Set permissions for dynamic partial update + snprintf(tmp, sizeof(tmp), "%sfb0/dyn_pu", sys_fb_path); + setPerms(tmp, 0664); + setOwners(tmp, AID_SYSTEM, AID_GRAPHICS); +} + +static int check_rlim_action() +{ + char pval[PROP_VALUE_MAX]; + int rc; + struct rlimit rl; + rc = property_get("persist.debug.trace",pval); + + if(rc && (strcmp(pval,"1") == 0)) { + rl.rlim_cur = RLIM_INFINITY; + rl.rlim_max = RLIM_INFINITY; + if (setrlimit(RLIMIT_CORE, &rl) < 0) { + ERROR("could not enable core file generation"); + } + } + return 0; } void vendor_load_properties() @@ -209,6 +272,10 @@ void vendor_load_properties() /* Define MSM family properties */ init_msm_properties(msm_id, msm_ver, board_type); - /* Set Hdmi Node Permissions */ - set_hdmi_node_perms(); + init_alarm_boot_properties(); + + /* Set Display Node Permissions */ + set_display_node_perms(); + /*check for coredump*/ + check_rlim_action(); } diff --git a/init/init_msm.h b/init/init_msm.h index aacfa6fd4..24e02aade 100644 --- a/init/init_msm.h +++ b/init/init_msm.h @@ -1,5 +1,5 @@ /* - Copyright (c) 2013, The Linux Foundation. All rights reserved. + Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -35,10 +35,13 @@ #define PROP_HWROTATE "ro.sf.hwrotation" #define PROP_LCDDENSITY "ro.sf.lcd_density" #define PROP_QEMU_NAVKEY "qemu.hw.mainkeys" +#define PROP_BOOT_BASEBAND "ro.boot.baseband" +#define PROP_BLUETOOTH_SOC "qcom.bluetooth.soc" #define UNUSED(a) ((void)(a)) #define ISMATCH(a,b) (!strncmp(a,b,PROP_VALUE_MAX)) void init_msm_properties(unsigned long msm_id, unsigned long msm_ver, char *board_type); +int read_file2(const char *fname, char *data, int max_size); #endif /* __INIT_MSM__H__ */ diff --git a/init/init_msm8226.c b/init/init_msm8226.c index 32a9ce040..a8bf341af 100644 --- a/init/init_msm8226.c +++ b/init/init_msm8226.c @@ -1,5 +1,5 @@ /* - Copyright (c) 2013, The Linux Foundation. All rights reserved. + Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -36,10 +36,23 @@ #include "init_msm.h" +#define SUBTYPE_ID_PATH1 "/sys/devices/soc0/platform_subtype_id" +#define SUBTYPE_ID_PATH2 "/sys/devices/system/soc/soc0/platform_subtype_id" +#define BUF_SIZE 64 + +enum { + PLATFORM_SUBTYPE_720p = 0x0, + PLATFORM_SUBTYPE_1080p = 0x2, + PLATFORM_SUBTYPE_1080p_EXT_BUCK = 0x3, + PLATFORM_SUBTYPE_INVALID, +}; + void init_msm_properties(unsigned long msm_id, unsigned long msm_ver, char *board_type) { char platform[PROP_VALUE_MAX]; int rc; + unsigned long subtype = PLATFORM_SUBTYPE_720p; + char tmp[BUF_SIZE]; UNUSED(msm_id); UNUSED(msm_ver); @@ -49,5 +62,16 @@ void init_msm_properties(unsigned long msm_id, unsigned long msm_ver, char *boar if (!rc || !ISMATCH(platform, ANDROID_TARGET)) return; - property_set(PROP_LCDDENSITY, "320"); + rc = read_file2(SUBTYPE_ID_PATH1, tmp, sizeof(tmp)); + if (!rc) { + rc = read_file2(SUBTYPE_ID_PATH2, tmp, sizeof(tmp)); + } + if (rc) { + subtype = strtoul(tmp, NULL, 0); + } + + if ((subtype == PLATFORM_SUBTYPE_1080p) || (subtype == PLATFORM_SUBTYPE_1080p_EXT_BUCK)) + property_set(PROP_LCDDENSITY, "480"); + else + property_set(PROP_LCDDENSITY, "320"); } diff --git a/init/init_msm8909.c b/init/init_msm8909.c new file mode 100644 index 000000000..730ef0fa0 --- /dev/null +++ b/init/init_msm8909.c @@ -0,0 +1,78 @@ +/* + Copyright (c) 2014, The Linux Foundation. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include "vendor_init.h" +#include "property_service.h" +#include "log.h" +#include "util.h" + +#include "init_msm.h" + +#define VIRTUAL_SIZE "/sys/class/graphics/fb0/virtual_size" +#define BUF_SIZE 64 + +void init_msm_properties(unsigned long msm_id, unsigned long msm_ver, char *board_type) +{ + char platform[PROP_VALUE_MAX]; + int rc; + unsigned long virtual_size = 0; + char str[BUF_SIZE]; + + UNUSED(msm_id); + UNUSED(msm_ver); + UNUSED(board_type); + + rc = property_get("ro.board.platform", platform); + if (!rc || !ISMATCH(platform, ANDROID_TARGET)){ + return; + } + + rc = read_file2(VIRTUAL_SIZE, str, sizeof(str)); + if (rc) { + virtual_size = strtoul(str, NULL, 0); + } + + if(virtual_size >= 1080) { + property_set(PROP_LCDDENSITY, "480"); + } else if (virtual_size >= 720) { + // For 720x1280 resolution + property_set(PROP_LCDDENSITY, "320"); + } else if (virtual_size >= 480) { + // For 480x854 resolution QRD. + property_set(PROP_LCDDENSITY, "240"); + } else + property_set(PROP_LCDDENSITY, "320"); + + if (msm_id == 206) { + property_set("media.swhevccodectype", "1"); + property_set("vidc.enc.narrow.searchrange", "0"); + } +} diff --git a/init/init_msm8916.c b/init/init_msm8916.c new file mode 100644 index 000000000..7cd92b5b4 --- /dev/null +++ b/init/init_msm8916.c @@ -0,0 +1,88 @@ +/* + Copyright (c) 2014, The Linux Foundation. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include "vendor_init.h" +#include "property_service.h" +#include "log.h" +#include "util.h" + +#include "init_msm.h" + +#define VIRTUAL_SIZE "/sys/class/graphics/fb0/virtual_size" +#define BUF_SIZE 64 + +void init_msm_properties(unsigned long msm_id, unsigned long msm_ver, char *board_type) +{ + char platform[PROP_VALUE_MAX]; + int rc; + unsigned long virtual_size = 0; + char str[BUF_SIZE]; + + UNUSED(msm_id); + UNUSED(msm_ver); + + rc = property_get("ro.board.platform", platform); + if (!rc || !ISMATCH(platform, ANDROID_TARGET)){ + return; + } + + rc = read_file2(VIRTUAL_SIZE, str, sizeof(str)); + if (rc) { + virtual_size = strtoul(str, NULL, 0); + } + + if(virtual_size >= 1080) { + if (ISMATCH(board_type, "SBC")) { + property_set(PROP_LCDDENSITY, "240"); + property_set(PROP_QEMU_NAVKEY, "0"); + } else + property_set(PROP_LCDDENSITY, "480"); + } else if (virtual_size >= 720) { + // For 720x1280 resolution + property_set(PROP_LCDDENSITY, "320"); + } else if (virtual_size >= 480) { + // For 480x854 resolution QRD. + property_set(PROP_LCDDENSITY, "240"); + } else + property_set(PROP_LCDDENSITY, "320"); + + if (msm_id >= 239 && msm_id <= 243) { + property_set("media.msm8939hw", "1"); + } + + if (msm_id >= 268 && msm_id <= 271) { + property_set("media.msm8929hw", "1"); + } + + if (msm_id == 206) { + property_set("vidc.enc.narrow.searchrange", "0"); + } +} diff --git a/init/init_msm8974.c b/init/init_msm8974.c index 6173eff79..c8a806c7a 100644 --- a/init/init_msm8974.c +++ b/init/init_msm8974.c @@ -39,6 +39,7 @@ void init_msm_properties(unsigned long msm_id, unsigned long msm_ver, char *board_type) { char platform[PROP_VALUE_MAX]; + char baseband[PROP_VALUE_MAX]; int rc; UNUSED(msm_id); @@ -60,4 +61,9 @@ void init_msm_properties(unsigned long msm_id, unsigned long msm_ver, char *boar else { property_set(PROP_LCDDENSITY, "320"); } + + rc = property_get(PROP_BOOT_BASEBAND, baseband); + if ((rc != NULL) && ISMATCH(baseband, "apq")) { + property_set(PROP_BLUETOOTH_SOC, "ath3k"); + } } diff --git a/init/init_msm8994.c b/init/init_msm8994.c new file mode 100644 index 000000000..c76ca84a3 --- /dev/null +++ b/init/init_msm8994.c @@ -0,0 +1,55 @@ +/* + Copyright (c) 2014, The Linux Foundation. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include "vendor_init.h" +#include "property_service.h" +#include "log.h" +#include "util.h" + +#include "init_msm.h" + +void init_msm_properties(unsigned long msm_id, unsigned long msm_ver, char *board_type) +{ + char platform[PROP_VALUE_MAX]; + int rc; + + UNUSED(msm_id); + UNUSED(msm_ver); + + rc = property_get("ro.board.platform", platform); + if (!rc || !ISMATCH(platform, ANDROID_TARGET)) + return; + + if (ISMATCH(board_type, "Dragon")) + property_set(PROP_LCDDENSITY, "240"); + else + property_set(PROP_LCDDENSITY, "480"); +} diff --git a/media/audio_policy.conf b/media/audio_policy.conf new file mode 100644 index 000000000..7b1f0662f --- /dev/null +++ b/media/audio_policy.conf @@ -0,0 +1,127 @@ +# 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 +# - defines whether the speaker output path uses DRC +# "TRUE" means DRC is enabled, "FALSE" or omission means DRC isn't used. + +global_configuration { + attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER + default_output_device AUDIO_DEVICE_OUT_SPEAKER + attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX + speaker_drc_enabled TRUE +} + +# 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..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 { + outputs { + primary { + sampling_rates 44100|48000 + channel_masks AUDIO_CHANNEL_OUT_STEREO + formats 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_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL + flags AUDIO_OUTPUT_FLAG_PRIMARY + } + deep_buffer { + sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000 + channel_masks AUDIO_CHANNEL_OUT_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL + flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER + } + hdmi { + sampling_rates 44100|48000 + channel_masks dynamic + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_AUX_DIGITAL + flags AUDIO_OUTPUT_FLAG_DIRECT + } + compress_offload { + sampling_rates 8000|11025|16000|22050|32000|44100|48000 + channel_masks AUDIO_CHANNEL_OUT_MONO|AUDIO_CHANNEL_OUT_STEREO + formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2 + devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE + flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING + } + } + inputs { + primary { + sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000 + channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_FRONT_BACK + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_VOICE_CALL|AUDIO_DEVICE_IN_BACK_MIC + } + } + } + a2dp { + 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|48000 + channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_IN_BLUETOOTH_A2DP + } + } + } + usb { + 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 AUDIO_CHANNEL_OUT_STEREO + 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 { + outputs { + submix { + sampling_rates 48000 + channel_masks AUDIO_CHANNEL_OUT_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX + } + } + inputs { + 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/media/media_codecs.xml b/media/media_codecs.xml index dd6114e6c..f847b0742 100644 --- a/media/media_codecs.xml +++ b/media/media_codecs.xml @@ -15,6 +15,8 @@ --> + + @@ -36,21 +38,9 @@ - - - - - + - - - - - - - - @@ -71,10 +61,6 @@ - - - - - + diff --git a/power/Android.mk b/power/Android.mk index fbf16d24d..72ac079a8 100644 --- a/power/Android.mk +++ b/power/Android.mk @@ -6,7 +6,7 @@ ifeq ($(call is-vendor-board-platform,QCOM),true) # hw/..so include $(CLEAR_VARS) -LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)/hw +LOCAL_MODULE_RELATIVE_PATH := hw LOCAL_SHARED_LIBRARIES := liblog libcutils libdl LOCAL_SRC_FILES := power.c metadata-parser.c utils.c list.c hint-data.c @@ -23,6 +23,22 @@ ifeq ($(call is-board-platform-in-list, msm8610), true) LOCAL_SRC_FILES += power-8610.c endif +ifeq ($(call is-board-platform-in-list, apq8084), true) +LOCAL_SRC_FILES += power-8084.c +endif + +ifeq ($(call is-board-platform-in-list, msm8909), true) +LOCAL_SRC_FILES += power-8909.c +endif + +ifeq ($(call is-board-platform-in-list,msm8916), true) +LOCAL_SRC_FILES += power-8916.c +endif + +ifeq ($(call is-board-platform-in-list,msm8952), true) +LOCAL_SRC_FILES += power-8952.c +endif + ifeq ($(TARGET_USES_INTERACTION_BOOST),true) LOCAL_CFLAGS += -DINTERACTION_BOOST endif diff --git a/power/hint-data.h b/power/hint-data.h index e205c9e8e..2a8113a2f 100644 --- a/power/hint-data.h +++ b/power/hint-data.h @@ -31,6 +31,7 @@ #define DEFAULT_VIDEO_ENCODE_HINT_ID (0x0A00) #define DEFAULT_VIDEO_DECODE_HINT_ID (0x0B00) #define DISPLAY_STATE_HINT_ID (0x0C00) +#define DISPLAY_STATE_HINT_ID_2 (0x0D00) struct hint_data { unsigned long hint_id; /* This is our key. */ diff --git a/power/performance.h b/power/performance.h index 3c09cf525..fc6c4bb6b 100755 --- a/power/performance.h +++ b/power/performance.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012, 2014, The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -40,7 +40,7 @@ enum SCREEN_DISPLAY_TYPE { }; enum PWR_CLSP_TYPE { - ALL_CPUS_PWR_CLPS_DIS = 0x100, + ALL_CPUS_PWR_CLPS_DIS = 0x101, }; /* For CPUx min freq, the leftmost byte @@ -80,21 +80,36 @@ enum CPU3_MIN_FREQ_LVL { CPU3_MIN_FREQ_TURBO_MAX = 0x5FE, }; -enum CPUS_ONLINE_LVL { +enum CPU0_MAX_FREQ_LVL { + CPU0_MAX_FREQ_NONTURBO_MAX = 0x150A, +}; + +enum CPU1_MAX_FREQ_LVL { + CPU1_MAX_FREQ_NONTURBO_MAX = 0x160A, +}; + +enum CPU2_MAX_FREQ_LVL { + CPU2_MAX_FREQ_NONTURBO_MAX = 0x170A, +}; + +enum CPU3_MAX_FREQ_LVL { + CPU3_MAX_FREQ_NONTURBO_MAX = 0x180A, +}; + +enum MIN_CPUS_ONLINE_LVL { CPUS_ONLINE_MIN_2 = 0x702, CPUS_ONLINE_MIN_3 = 0x703, CPUS_ONLINE_MIN_4 = 0x704, - CPUS_ONLINE_MAX = 0x704, - CPUS_ONLINE_MAX_LIMIT_1 = 0x7FE, - CPUS_ONLINE_MAX_LIMIT_2 = 0x7FD, - CPUS_ONLINE_MAX_LIMIT_3 = 0x7FC, - CPUS_ONLINE_MAX_LIMIT_4 = 0x7FB, - CPUS_ONLINE_MAX_LIMIT_MAX = 0x7FB, + CPUS_ONLINE_MPD_OVERRIDE = 0x777, + CPUS_ONLINE_MAX = 0x7FF, }; -enum ALL_CPUS_FREQBOOST_LVL { - ALL_CPUS_FREQ_NONTURBO_MAX = 0x90A, - ALL_CPUS_FREQ_TURBO = 0x9FE, +enum MAX_CPUS_ONLINE_LVL { + CPUS_ONLINE_MAX_LIMIT_1 = 0x8FE, + CPUS_ONLINE_MAX_LIMIT_2 = 0x8FD, + CPUS_ONLINE_MAX_LIMIT_3 = 0x8FC, + CPUS_ONLINE_MAX_LIMIT_4 = 0x8FB, + CPUS_ONLINE_MAX_LIMIT_MAX = 0x8FB, }; enum SAMPLING_RATE_LVL { @@ -113,14 +128,38 @@ enum ONDEMAND_SAMPLING_DOWN_FACTOR_LVL { SAMPLING_DOWN_FACTOR_4 = 0xD04, }; + enum INTERACTIVE_TIMER_RATE_LVL { TR_MS_500 = 0xECD, + TR_MS_100 = 0xEF5, + TR_MS_50 = 0xEFA, TR_MS_30 = 0xEFC, TR_MS_20 = 0xEFD, }; +/* This timer rate applicable to cpu0 + across 8939/8952 series chipset */ +enum INTERACTIVE_TIMER_RATE_LVL_CPU0_8939 { + TR_MS_CPU0_500 = 0x30CD, + TR_MS_CPU0_100 = 0x30F5, + TR_MS_CPU0_50 = 0x30FA, + TR_MS_CPU0_30 = 0x30FC, + TR_MS_CPU0_20 = 0x30FD, +}; + +/* This timer rate applicable to cpu4 + across 8939/8952 series chipset */ +enum INTERACTIVE_TIMER_RATE_LVL_CPU4_8939 { + TR_MS_CPU4_500 = 0x3BCD, + TR_MS_CPU4_100 = 0x3BF5, + TR_MS_CPU4_50 = 0x3BFA, + TR_MS_CPU4_30 = 0x3BFC, + TR_MS_CPU4_20 = 0x3BFD, +}; + enum INTERACTIVE_HISPEED_FREQ_LVL { HS_FREQ_1026 = 0xF0A, + HS_FREQ_800 = 0xF08, }; enum INTERACTIVE_HISPEED_LOAD_LVL { @@ -151,6 +190,61 @@ enum SCREEN_PWR_CLPS_LVL { enum THREAD_MIGRATION_LVL { THREAD_MIGRATION_SYNC_OFF = 0x1400, }; + +enum INTERACTIVE_IO_BUSY_LVL { + INTERACTIVE_IO_BUSY_OFF = 0x1B00, + INTERACTIVE_IO_BUSY_ON = 0x1B01, +}; + +enum SCHED_BOOST_LVL { + SCHED_BOOST_ON = 0x1E01, +}; + +enum CPU4_MIN_FREQ_LVL { + CPU4_MIN_FREQ_NONTURBO_MAX = 0x1F0A, + CPU4_MIN_FREQ_TURBO_MAX = 0x1FFE, +}; + +enum CPU5_MIN_FREQ_LVL { + CPU5_MIN_FREQ_NONTURBO_MAX = 0x200A, + CPU5_MIN_FREQ_TURBO_MAX = 0x20FE, +}; + +enum CPU6_MIN_FREQ_LVL { + CPU6_MIN_FREQ_NONTURBO_MAX = 0x210A, + CPU6_MIN_FREQ_TURBO_MAX = 0x21FE, +}; + +enum CPU7_MIN_FREQ_LVL { + CPU7_MIN_FREQ_NONTURBO_MAX = 0x220A, + CPU7_MIN_FREQ_TURBO_MAX = 0x22FE, +}; + +enum CPU4_MAX_FREQ_LVL { + CPU4_MAX_FREQ_NONTURBO_MAX = 0x230A, +}; + +enum CPU5_MAX_FREQ_LVL { + CPU5_MAX_FREQ_NONTURBO_MAX = 0x240A, +}; + +enum CPU6_MAX_FREQ_LVL { + CPU6_MAX_FREQ_NONTURBO_MAX = 0x250A, +}; + +enum CPU7_MAX_FREQ_LVL { + CPU7_MAX_FREQ_NONTURBO_MAX = 0x260A, +}; + +enum SCHED_PREFER_IDLE { + SCHED_PREFER_IDLE_DIS = 0x3E01, +}; + +enum SCHED_MIGRATE_COST_CHNG { + SCHED_MIGRATE_COST_SET = 0x3F01, +}; + + #ifdef __cplusplus } #endif diff --git a/power/power-8084.c b/power/power-8084.c new file mode 100644 index 000000000..e4aacb71e --- /dev/null +++ b/power/power-8084.c @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#define LOG_NIDEBUG 0 + +#include +#include +#include +#include +#include +#include +#include + +#define LOG_TAG "QCOM PowerHAL" +#include +#include +#include + +#include "utils.h" +#include "metadata-defs.h" +#include "hint-data.h" +#include "performance.h" +#include "power-common.h" + +static int display_hint_sent; +static int display_hint2_sent; +static int first_display_off_hint; +extern int display_boost; + +int set_interactive_override(struct power_module *module, int on) +{ + char governor[80]; + + if (get_scaling_governor(governor, sizeof(governor)) == -1) { + ALOGE("Can't obtain scaling governor."); + + return HINT_NONE; + } + + if (!on) { + /* Display off. */ + /* + * We need to be able to identify the first display off hint + * and release the current lock holder + */ + if (display_boost) { + if (!first_display_off_hint) { + undo_initial_hint_action(); + first_display_off_hint = 1; + } + /* used for all subsequent toggles to the display */ + if (!display_hint2_sent) { + undo_hint_action(DISPLAY_STATE_HINT_ID_2); + display_hint2_sent = 1; + } + } + + if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) && + (strlen(governor) == strlen(ONDEMAND_GOVERNOR))) { + int resource_values[] = {MS_500, SYNC_FREQ_600, OPTIMAL_FREQ_600, THREAD_MIGRATION_SYNC_OFF}; + + if (!display_hint_sent) { + perform_hint_action(DISPLAY_STATE_HINT_ID, + resource_values, sizeof(resource_values)/sizeof(resource_values[0])); + display_hint_sent = 1; + } + + return HINT_HANDLED; + } + } else { + /* Display on */ + if (display_boost && display_hint2_sent) { + int resource_values2[] = {CPUS_ONLINE_MIN_2}; + perform_hint_action(DISPLAY_STATE_HINT_ID_2, + resource_values2, sizeof(resource_values2)/sizeof(resource_values2[0])); + display_hint2_sent = 0; + } + + if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) && + (strlen(governor) == strlen(ONDEMAND_GOVERNOR))) { + undo_hint_action(DISPLAY_STATE_HINT_ID); + display_hint_sent = 0; + + return HINT_HANDLED; + } + } + + return HINT_NONE; +} diff --git a/power/power-8909.c b/power/power-8909.c new file mode 100755 index 000000000..8de654363 --- /dev/null +++ b/power/power-8909.c @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2015, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#define LOG_NIDEBUG 0 + +#include +#include +#include +#include +#include +#include +#include + +#define LOG_TAG "QTI PowerHAL" +#include +#include +#include + +#include "utils.h" +#include "metadata-defs.h" +#include "hint-data.h" +#include "performance.h" +#include "power-common.h" + + +static void process_video_encode_hint(void *metadata) +{ + char governor[80]; + struct video_encode_metadata_t video_encode_metadata; + char tmp_str[NODE_MAX]; + + if (get_scaling_governor(governor, sizeof(governor)) == -1) { + ALOGE("Can't obtain scaling governor."); + + return; + } + + /* Initialize encode metadata struct fields. */ + memset(&video_encode_metadata, 0, sizeof(struct video_encode_metadata_t)); + video_encode_metadata.state = -1; + video_encode_metadata.hint_id = DEFAULT_VIDEO_ENCODE_HINT_ID; + + if (metadata) { + if (parse_video_encode_metadata((char *)metadata, &video_encode_metadata) == + -1) { + ALOGE("Error occurred while parsing metadata."); + return; + } + } else { + return; + } + + if (video_encode_metadata.state == 1) { + if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) && + (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) { + int resource_values[] = {HS_FREQ_800, THREAD_MIGRATION_SYNC_OFF}; + perform_hint_action(video_encode_metadata.hint_id, + resource_values, sizeof(resource_values)/sizeof(resource_values[0])); + } + } else if (video_encode_metadata.state == 0) { + if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) && + (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) { + undo_hint_action(video_encode_metadata.hint_id); + } + } +} + +int power_hint_override(struct power_module *module, power_hint_t hint, void *data) +{ + switch(hint) { + case POWER_HINT_VIDEO_ENCODE: + { + process_video_encode_hint(data); + return HINT_HANDLED; + } + default: + { + break; + } + } + return HINT_NONE; +} diff --git a/power/power-8916.c b/power/power-8916.c new file mode 100644 index 000000000..7bdd88804 --- /dev/null +++ b/power/power-8916.c @@ -0,0 +1,234 @@ +/* + * Copyright (c) 2015, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#define LOG_NIDEBUG 0 + +#include +#include +#include +#include +#include +#include +#include + +#define LOG_TAG "QTI PowerHAL" +#include +#include +#include + +#include "utils.h" +#include "metadata-defs.h" +#include "hint-data.h" +#include "performance.h" +#include "power-common.h" + +#define MIN_FREQ_CPU0_DISP_OFF 400000 +#define MIN_FREQ_CPU0_DISP_ON 960000 + +char scaling_min_freq[4][80] ={ + "sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq", + "sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq", + "sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq", + "sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq" +}; + +static int saved_dcvs_cpu0_slack_max = -1; +static int saved_dcvs_cpu0_slack_min = -1; +static int saved_mpdecision_slack_max = -1; +static int saved_mpdecision_slack_min = -1; +static int saved_interactive_mode = -1; +static int slack_node_rw_failed = 0; +static int display_hint_sent; +int display_boost; + +static int is_target_8916() /* Returns value=8916 if target is 8916 else value 0 */ +{ + int fd; + int is_target_8916=0; + char buf[10] = {0}; + + fd = open("/sys/devices/soc0/soc_id", O_RDONLY); + if (fd >= 0) { + if (read(fd, buf, sizeof(buf) - 1) == -1) { + ALOGW("Unable to read soc_id"); + is_target_8916 = 0; + } else { + int soc_id = atoi(buf); + if (soc_id == 206 || (soc_id >= 247 && soc_id <= 250)) { + is_target_8916 = 8916; /* Above SOCID for 8916 */ + } + } + } + close(fd); + return is_target_8916; +} + +/* Declare function before use */ +void interaction(int duration, int num_args, int opt_list[]); + + +int power_hint_override(struct power_module *module, power_hint_t hint, + void *data) +{ + + switch(hint) { + case POWER_HINT_VSYNC: + break; + case POWER_HINT_INTERACTION: + { + int resources[] = {0x702, 0x20F, 0x30F}; + int duration = 3000; + + interaction(duration, sizeof(resources)/sizeof(resources[0]), resources); + } + return HINT_HANDLED; + case POWER_HINT_VIDEO_ENCODE: /* Do nothing for encode case */ + return HINT_HANDLED; + case POWER_HINT_VIDEO_DECODE: /*Do nothing for encode case */ + return HINT_HANDLED; + default: + return HINT_HANDLED; + } +return HINT_NONE; +} + +int set_interactive_override(struct power_module *module, int on) +{ + char governor[80]; + char tmp_str[NODE_MAX]; + struct video_encode_metadata_t video_encode_metadata; + int rc; + + ALOGI("Got set_interactive hint"); + if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU0) == -1) { + if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU1) == -1) { + if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU2) == -1) { + if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU3) == -1) { + ALOGE("Can't obtain scaling governor."); + return HINT_HANDLED; + } + } + } + } + + if (!on) { + /* Display off. */ + switch(is_target_8916()) { + + case 8916: + { + if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) && + (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) { + int resource_values[] = {TR_MS_50, THREAD_MIGRATION_SYNC_OFF}; + + if (!display_hint_sent) { + perform_hint_action(DISPLAY_STATE_HINT_ID, + resource_values, sizeof(resource_values)/sizeof(resource_values[0])); + display_hint_sent = 1; + } + } /* Perf time rate set for 8916 target*/ + } /* End of Switch case for 8916 */ + break ; + + default: + { + if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) && + (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) { + int resource_values[] = {TR_MS_CPU0_50,TR_MS_CPU4_50, THREAD_MIGRATION_SYNC_OFF}; + + /* Set CPU0 MIN FREQ to 400Mhz avoid extra peak power + impact in volume key press */ + snprintf(tmp_str, NODE_MAX, "%d", MIN_FREQ_CPU0_DISP_OFF); + if (sysfs_write(scaling_min_freq[0], tmp_str) != 0) { + if (sysfs_write(scaling_min_freq[1], tmp_str) != 0) { + if (sysfs_write(scaling_min_freq[2], tmp_str) != 0) { + if (sysfs_write(scaling_min_freq[3], tmp_str) != 0) { + if(!slack_node_rw_failed) { + ALOGE("Failed to write to %s",SCALING_MIN_FREQ ); + } + rc = 1; + } + } + } + } + + if (!display_hint_sent) { + perform_hint_action(DISPLAY_STATE_HINT_ID, + resource_values, sizeof(resource_values)/sizeof(resource_values[0])); + display_hint_sent = 1; + } + } /* Perf time rate set for CORE0,CORE4 8939 target*/ + }/* End of Switch case for 8939 */ + break ; + } + + } else { + /* Display on. */ + switch(is_target_8916()){ + case 8916: + { + if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) && + (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) { + undo_hint_action(DISPLAY_STATE_HINT_ID); + display_hint_sent = 0; + } + } + break ; + default : + { + + if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) && + (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) { + + /* Recovering MIN_FREQ in display ON case */ + snprintf(tmp_str, NODE_MAX, "%d", MIN_FREQ_CPU0_DISP_ON); + if (sysfs_write(scaling_min_freq[0], tmp_str) != 0) { + if (sysfs_write(scaling_min_freq[1], tmp_str) != 0) { + if (sysfs_write(scaling_min_freq[2], tmp_str) != 0) { + if (sysfs_write(scaling_min_freq[3], tmp_str) != 0) { + if(!slack_node_rw_failed) { + ALOGE("Failed to write to %s",SCALING_MIN_FREQ ); + } + rc = 1; + } + } + } + } + undo_hint_action(DISPLAY_STATE_HINT_ID); + display_hint_sent = 0; + } + + } + break ; + } /* End of check condition during the DISPLAY ON case */ + } + saved_interactive_mode = !!on; + return HINT_HANDLED; +} + diff --git a/power/power-8952.c b/power/power-8952.c new file mode 100644 index 000000000..194dbf3cf --- /dev/null +++ b/power/power-8952.c @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2015, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#define LOG_NIDEBUG 0 + +#include +#include +#include +#include +#include +#include +#include + +#define LOG_TAG "QTI PowerHAL" +#include +#include +#include + +#include "utils.h" +#include "metadata-defs.h" +#include "hint-data.h" +#include "performance.h" +#include "power-common.h" + +static int saved_interactive_mode = -1; +static int display_hint_sent; + +/* Declare function before use */ +void interaction(int duration, int num_args, int opt_list[]); + +int power_hint_override(struct power_module *module, power_hint_t hint, + void *data) +{ + + switch(hint) { + case POWER_HINT_VSYNC: + break; + case POWER_HINT_INTERACTION: + { + int resources[] = {0x702, 0x20F, 0x30F}; + int duration = 3000; + + interaction(duration, sizeof(resources)/sizeof(resources[0]), resources); + } + return HINT_HANDLED; + case POWER_HINT_VIDEO_ENCODE: /* Do nothing for encode case */ + return HINT_HANDLED; + case POWER_HINT_VIDEO_DECODE: /*Do nothing for encode case */ + return HINT_HANDLED; + default: + return HINT_HANDLED; + } +return HINT_NONE; +} + +int set_interactive_override(struct power_module *module, int on) +{ + char governor[80]; + char tmp_str[NODE_MAX]; + struct video_encode_metadata_t video_encode_metadata; + int rc; + + ALOGI("Got set_interactive hint"); + + if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU0) == -1) { + if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU1) == -1) { + if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU2) == -1) { + if (get_scaling_governor_check_cores(governor, sizeof(governor),CPU3) == -1) { + ALOGE("Can't obtain scaling governor."); + return HINT_HANDLED; + } + } + } + } + + if (!on) { + /* Display off. */ + if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) && + (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) { + int resource_values[] = {TR_MS_CPU0_50,TR_MS_CPU4_50, THREAD_MIGRATION_SYNC_OFF}; + + if (!display_hint_sent) { + perform_hint_action(DISPLAY_STATE_HINT_ID, + resource_values, sizeof(resource_values)/sizeof(resource_values[0])); + display_hint_sent = 1; + } + } /* Perf time rate set for CORE0,CORE4 8952 target*/ + + } else { + /* Display on. */ + if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) && + (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) { + + undo_hint_action(DISPLAY_STATE_HINT_ID); + display_hint_sent = 0; + } + } + saved_interactive_mode = !!on; + return HINT_HANDLED; +} + diff --git a/power/power-8974.c b/power/power-8974.c index 91a404511..7aa152949 100644 --- a/power/power-8974.c +++ b/power/power-8974.c @@ -48,6 +48,9 @@ #include "power-common.h" static int display_hint_sent; +static int display_hint2_sent; +static int first_display_off_hint; +extern int display_boost; int set_interactive_override(struct power_module *module, int on) { @@ -61,6 +64,22 @@ int set_interactive_override(struct power_module *module, int on) if (!on) { /* Display off. */ + /* + * We need to be able to identify the first display off hint + * and release the current lock holder + */ + if (display_boost) { + if (!first_display_off_hint) { + undo_initial_hint_action(); + first_display_off_hint = 1; + } + /* used for all subsequent toggles to the display */ + if (!display_hint2_sent) { + undo_hint_action(DISPLAY_STATE_HINT_ID_2); + display_hint2_sent = 1; + } + } + if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) && (strlen(governor) == strlen(ONDEMAND_GOVERNOR))) { int resource_values[] = {MS_500, SYNC_FREQ_600, OPTIMAL_FREQ_600, THREAD_MIGRATION_SYNC_OFF}; @@ -75,6 +94,13 @@ int set_interactive_override(struct power_module *module, int on) } } else { /* Display on */ + if (display_boost && display_hint2_sent) { + int resource_values2[] = {CPUS_ONLINE_MIN_2}; + perform_hint_action(DISPLAY_STATE_HINT_ID_2, + resource_values2, sizeof(resource_values2)/sizeof(resource_values2[0])); + display_hint2_sent = 0; + } + if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) && (strlen(governor) == strlen(ONDEMAND_GOVERNOR))) { undo_hint_action(DISPLAY_STATE_HINT_ID); diff --git a/power/power-common.h b/power/power-common.h index c00ce4e33..5ba5e8102 100644 --- a/power/power-common.h +++ b/power/power-common.h @@ -33,10 +33,17 @@ #define DCVS_CPU0_SLACK_MIN_NODE "/sys/module/msm_dcvs/cores/cpu0/slack_time_min_us" #define MPDECISION_SLACK_MAX_NODE "/sys/module/msm_mpdecision/slack_time_max_us" #define MPDECISION_SLACK_MIN_NODE "/sys/module/msm_mpdecision/slack_time_min_us" - +#define SCALING_MIN_FREQ "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq" #define ONDEMAND_GOVERNOR "ondemand" #define INTERACTIVE_GOVERNOR "interactive" #define MSMDCVS_GOVERNOR "msm-dcvs" #define HINT_HANDLED (0) #define HINT_NONE (-1) + +enum CPU_GOV_CHECK { + CPU0 = 0, + CPU1 = 1, + CPU2 = 2, + CPU3 = 3 +}; diff --git a/power/power.c b/power/power.c index 3cd447325..d3d23ecbe 100644 --- a/power/power.c +++ b/power/power.c @@ -55,6 +55,7 @@ static int saved_mpdecision_slack_min = -1; static int saved_interactive_mode = -1; static int slack_node_rw_failed = 0; static int display_hint_sent; +int display_boost; static struct hw_module_methods_t power_module_methods = { .open = NULL, @@ -63,6 +64,22 @@ static struct hw_module_methods_t power_module_methods = { static void power_init(struct power_module *module) { ALOGI("QCOM power HAL initing."); + + int fd; + char buf[10] = {0}; + + fd = open("/sys/devices/soc0/soc_id", O_RDONLY); + if (fd >= 0) { + if (read(fd, buf, sizeof(buf) - 1) == -1) { + ALOGW("Unable to read soc_id"); + } else { + int soc_id = atoi(buf); + if (soc_id == 194 || (soc_id >= 208 && soc_id <= 218) || soc_id == 178) { + display_boost = 1; + } + } + close(fd); + } } static void process_video_decode_hint(void *metadata) @@ -154,7 +171,8 @@ static void process_video_encode_hint(void *metadata) resource_values, sizeof(resource_values)/sizeof(resource_values[0])); } else if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) && (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) { - int resource_values[] = {TR_MS_30, HISPEED_LOAD_90, HS_FREQ_1026, THREAD_MIGRATION_SYNC_OFF}; + int resource_values[] = {TR_MS_30, HISPEED_LOAD_90, HS_FREQ_1026, THREAD_MIGRATION_SYNC_OFF, + INTERACTIVE_IO_BUSY_OFF}; perform_hint_action(video_encode_metadata.hint_id, resource_values, sizeof(resource_values)/sizeof(resource_values[0])); @@ -176,6 +194,9 @@ int __attribute__ ((weak)) power_hint_override(struct power_module *module, powe return HINT_NONE; } +/* Declare function before use */ +void interaction(int duration, int num_args, int opt_list[]); + static void power_hint(struct power_module *module, power_hint_t hint, void *data) { @@ -242,7 +263,7 @@ void set_interactive(struct power_module *module, int on) } } else if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) && (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) { - int resource_values[] = {DISPLAY_OFF, TR_MS_500, THREAD_MIGRATION_SYNC_OFF}; + int resource_values[] = {TR_MS_50, THREAD_MIGRATION_SYNC_OFF}; if (!display_hint_sent) { perform_hint_action(DISPLAY_STATE_HINT_ID, diff --git a/power/utils.c b/power/utils.c index 15f7aed13..0aad8e163 100644 --- a/power/utils.c +++ b/power/utils.c @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include "utils.h" #include "list.h" @@ -40,6 +42,13 @@ #define LOG_TAG "QCOM PowerHAL" #include +char scaling_gov_path[4][80] ={ + "sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", + "sys/devices/system/cpu/cpu1/cpufreq/scaling_governor", + "sys/devices/system/cpu/cpu2/cpufreq/scaling_governor", + "sys/devices/system/cpu/cpu3/cpufreq/scaling_governor" +}; + static void *qcopt_handle; static int (*perf_lock_acq)(unsigned long handle, int duration, int list[], int numArgs); @@ -171,6 +180,24 @@ int get_scaling_governor(char governor[], int size) return 0; } +int get_scaling_governor_check_cores(char governor[], int size,int core_num) +{ + + if (sysfs_read(scaling_gov_path[core_num], governor, + size) == -1) { + // Can't obtain the scaling governor. Return. + return -1; + } + + // Strip newline at the end. + int len = strlen(governor); + len--; + while (len >= 0 && (governor[len] == '\n' || governor[len] == '\r')) + governor[len--] = '\0'; + + return 0; +} + void interaction(int duration, int num_args, int opt_list[]) { #ifdef INTERACTION_BOOST @@ -269,3 +296,16 @@ void undo_hint_action(int hint_id) } } } + +/* + * Used to release initial lock holding + * two cores online when the display is on + */ +void undo_initial_hint_action() +{ + if (qcopt_handle) { + if (perf_lock_rel) { + perf_lock_rel(1); + } + } +} diff --git a/power/utils.h b/power/utils.h index cd12c15cd..50d31dd8d 100644 --- a/power/utils.h +++ b/power/utils.h @@ -32,6 +32,7 @@ int sysfs_read(char *path, char *s, int num_bytes); int sysfs_write(char *path, char *s); int get_scaling_governor(char governor[], int size); +int get_scaling_governor_check_cores(char governor[], int size,int core_num); void vote_ondemand_io_busy_off(); void unvote_ondemand_io_busy_off(); diff --git a/product/overlay/frameworks/base/core/res/res/values/config.xml b/product/overlay/frameworks/base/core/res/res/values/config.xml new file mode 100644 index 000000000..743fd5bdd --- /dev/null +++ b/product/overlay/frameworks/base/core/res/res/values/config.xml @@ -0,0 +1,48 @@ + + + + + + + false + false + com.qualcomm.location + com.qualcomm.location + true + + com.android.systemui/com.android.systemui.doze.DozeService + true + + 17 + true + + diff --git a/product/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/product/overlay/frameworks/base/packages/SystemUI/res/values/config.xml new file mode 100644 index 000000000..53f00d472 --- /dev/null +++ b/product/overlay/frameworks/base/packages/SystemUI/res/values/config.xml @@ -0,0 +1,35 @@ + + + + + true + diff --git a/product/overlay/packages/apps/CMFileManager/res/values/config.xml b/product/overlay/packages/apps/CMFileManager/res/values/config.xml new file mode 100644 index 000000000..27ace1f4d --- /dev/null +++ b/product/overlay/packages/apps/CMFileManager/res/values/config.xml @@ -0,0 +1,20 @@ + + + + + true + diff --git a/recovery/oem-recovery/Android.mk b/recovery/oem-recovery/Android.mk index 267154652..5b39fecfa 100644 --- a/recovery/oem-recovery/Android.mk +++ b/recovery/oem-recovery/Android.mk @@ -1,7 +1,5 @@ -ifeq ($(TARGET_RECOVERY_UPDATER_LIBS),librecovery_updater_msm) - +ifneq ($(filter librecovery_updater_msm,$(TARGET_RECOVERY_UPDATER_LIBS)),) LOCAL_PATH := $(call my-dir) - include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_C_INCLUDES := bootable/recovery \ @@ -11,5 +9,4 @@ LOCAL_SRC_FILES := gpt-utils.c dec.c oem-updater.c LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr LOCAL_MODULE := librecovery_updater_msm include $(BUILD_STATIC_LIBRARY) - endif diff --git a/recovery/oem-recovery/dec.c b/recovery/oem-recovery/dec.c index 3c28a400e..5f48f72c9 100644 --- a/recovery/oem-recovery/dec.c +++ b/recovery/oem-recovery/dec.c @@ -30,6 +30,9 @@ #include #include #include +#include +#include +#include #include #include #include @@ -115,7 +118,7 @@ ion_memalloc(struct ion_buf_handle *buf, uint32_t size, uint32_t heap) alloc_data.align = 4096; alloc_data.flags = 0; - alloc_data.heap_mask = ION_HEAP(heap); + alloc_data.heap_id_mask = ION_HEAP(heap); /* Set the buffers to be uncached */ alloc_data.flags = 0; diff --git a/recovery/oem-recovery/gpt-utils.h b/recovery/oem-recovery/gpt-utils.h index eed7557d3..637fb3348 100644 --- a/recovery/oem-recovery/gpt-utils.h +++ b/recovery/oem-recovery/gpt-utils.h @@ -29,7 +29,8 @@ #ifndef __GPT_UTILS_H__ #define __GPT_UTILS_H__ - +#include +#include /****************************************************************************** * TYPES ******************************************************************************/ diff --git a/recovery/oem-recovery/oem-updater.c b/recovery/oem-recovery/oem-updater.c index 203e7f3f8..f74da83d3 100644 --- a/recovery/oem-recovery/oem-updater.c +++ b/recovery/oem-recovery/oem-updater.c @@ -28,6 +28,7 @@ */ #include +#include #include #include "edify/expr.h" #include "dec.h" @@ -45,6 +46,9 @@ Value* DecryptFn(const char* name, State* state, int argc, Expr* argv[]) { rc = decrypt_image(src_file, dst_file); + free(src_file); + free(dst_file); + return StringValue(strdup(rc >= 0 ? "t" : "")); } @@ -71,6 +75,8 @@ Value* BootUpdateFn(const char* name, State* state, int argc, Expr* argv[]) rc = -1; } + free(stageStr); + if (!rc) rc = prepare_boot_update(stage); diff --git a/releasetools.py b/releasetools.py index 4c7373c2c..4e02144c2 100755 --- a/releasetools.py +++ b/releasetools.py @@ -226,9 +226,8 @@ def IncrementalOTA_Assertions(info): def IncrementalOTA_VerifyEnd(info): - if info.type == 'MMC': - OTA_VerifyEnd(info, info.target_version, info.target_zip, info.source_zip) - return + OTA_VerifyEnd(info, info.target_version, info.target_zip, info.source_zip) + return # This function handles only non-HLOS whole partition images @@ -346,13 +345,9 @@ def FullOTA_InstallEnd_MTD(info): def FullOTA_InstallEnd(info): - if info.type == 'MMC': - FullOTA_InstallEnd_MMC(info) - elif info.type == 'MTD': - FullOTA_InstallEnd_MTD(info) + FullOTA_InstallEnd_MMC(info) return - def IncrementalOTA_InstallEnd_MMC(info): OTA_InstallEnd(info) return @@ -362,10 +357,6 @@ def IncrementalOTA_InstallEnd_MTD(info): print "warning radio-update: radio update for NAND devices not supported" return - def IncrementalOTA_InstallEnd(info): - if info.type == 'MMC': - IncrementalOTA_InstallEnd_MMC(info) - elif info.type == 'MTD': - IncrementalOTA_InstallEnd_MTD(info) + IncrementalOTA_InstallEnd_MMC(info) return diff --git a/rootdir/Android.mk b/rootdir/Android.mk index 2afd1a441..ba536f808 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -18,6 +18,13 @@ LOCAL_MODULE_CLASS := ETC LOCAL_SRC_FILES := etc/init.qcom.post_boot.sh include $(BUILD_PREBUILT) +include $(CLEAR_VARS) +LOCAL_MODULE := init.qti.ims.sh +LOCAL_MODULE_TAGS := optional eng +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.qti.ims.sh +include $(BUILD_PREBUILT) + include $(CLEAR_VARS) LOCAL_MODULE := init.qcom.bt.sh LOCAL_MODULE_TAGS := optional eng @@ -90,10 +97,10 @@ LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) include $(BUILD_PREBUILT) include $(CLEAR_VARS) -LOCAL_MODULE := init.qcom.factory.sh +LOCAL_MODULE := init.qcom.factory.rc LOCAL_MODULE_TAGS := optional eng LOCAL_MODULE_CLASS := ETC -LOCAL_SRC_FILES := etc/init.qcom.factory.sh +LOCAL_SRC_FILES := etc/init.qcom.factory.rc LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) include $(BUILD_PREBUILT) @@ -106,26 +113,26 @@ LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) include $(BUILD_PREBUILT) include $(CLEAR_VARS) -LOCAL_MODULE := init.qcom.class_core.sh +LOCAL_MODULE := init.qcom.bms.sh LOCAL_MODULE_TAGS := optional eng LOCAL_MODULE_CLASS := ETC -LOCAL_SRC_FILES := etc/init.qcom.class_core.sh +LOCAL_SRC_FILES := etc/init.qcom.bms.sh LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) include $(BUILD_PREBUILT) include $(CLEAR_VARS) -LOCAL_MODULE := init.class_main.sh +LOCAL_MODULE := init.qcom.class_core.sh LOCAL_MODULE_TAGS := optional eng LOCAL_MODULE_CLASS := ETC -LOCAL_SRC_FILES := etc/init.class_main.sh +LOCAL_SRC_FILES := etc/init.qcom.class_core.sh LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) include $(BUILD_PREBUILT) include $(CLEAR_VARS) -LOCAL_MODULE := init.qcom.ril.sh -LOCAL_MODULE_TAGS := optional +LOCAL_MODULE := init.class_main.sh +LOCAL_MODULE_TAGS := optional eng LOCAL_MODULE_CLASS := ETC -LOCAL_SRC_FILES := etc/init.qcom.ril.sh +LOCAL_SRC_FILES := etc/init.class_main.sh LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) include $(BUILD_PREBUILT) @@ -168,6 +175,13 @@ LOCAL_MODULE_CLASS := ETC LOCAL_SRC_FILES := etc/init.qcom.audio.sh include $(BUILD_PREBUILT) +include $(CLEAR_VARS) +LOCAL_MODULE := qca6234-service.sh +LOCAL_MODULE_TAGS := optional eng +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/qca6234-service.sh +include $(BUILD_PREBUILT) + include $(CLEAR_VARS) LOCAL_MODULE := hcidump.sh LOCAL_MODULE_TAGS := optional eng @@ -190,3 +204,31 @@ LOCAL_MODULE_CLASS := ETC LOCAL_SRC_FILES := etc/init.mdm.sh LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.debug.sh +LOCAL_MODULE_TAGS := optional eng +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.qcom.debug.sh +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.testscripts.sh +LOCAL_MODULE_TAGS := optional eng +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.qcom.testscripts.sh +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.zram.sh +LOCAL_MODULE_TAGS := optional eng +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.qcom.zram.sh +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.uicc.sh +LOCAL_MODULE_TAGS := optional eng +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.qcom.uicc.sh +include $(BUILD_PREBUILT) diff --git a/rootdir/etc/init.class_main.sh b/rootdir/etc/init.class_main.sh old mode 100755 new mode 100644 index b95b754b3..ea4b5c2c7 --- a/rootdir/etc/init.class_main.sh +++ b/rootdir/etc/init.class_main.sh @@ -1,5 +1,5 @@ #!/system/bin/sh -# Copyright (c) 2013, The Linux Foundation. All rights reserved. +# Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -30,8 +30,9 @@ # start ril-daemon only for targets on which radio is present # baseband=`getprop ro.baseband` -netmgr=`getprop ro.use_data_netmgrd` sgltecsfb=`getprop persist.radio.sglte_csfb` +datamode=`getprop persist.data.mode` +netmgr=`getprop ro.use_data_netmgrd` case "$baseband" in "apq") @@ -40,8 +41,10 @@ case "$baseband" in esac case "$baseband" in - "msm" | "csfb" | "svlte2a" | "mdm" | "sglte" | "sglte2" | "dsda2" | "unknown") + "msm" | "csfb" | "svlte2a" | "mdm" | "mdm2" | "sglte" | "sglte2" | "dsda2" | "unknown" | "dsda3") start qmuxd + start ipacm-diag + start ipacm case "$baseband" in "svlte2a" | "csfb") start qmiproxy @@ -60,18 +63,39 @@ case "$baseband" in multisim=`getprop persist.radio.multisim.config` if [ "$multisim" = "dsds" ] || [ "$multisim" = "dsda" ]; then - stop ril-daemon - start ril-daemon - start ril-daemon1 + start ril-daemon2 elif [ "$multisim" = "tsts" ]; then - stop ril-daemon - start ril-daemon - start ril-daemon1 start ril-daemon2 + start ril-daemon3 fi - case "$netmgr" in - "true") - start netmgrd + case "$datamode" in + "tethered") + start qti + start port-bridge + ;; + "concurrent") + start qti + if [ "$netmgr" = "true" ]; then + start netmgrd + fi + ;; + *) + if [ "$netmgr" = "true" ]; then + start netmgrd + fi + ;; esac esac + +# +# Allow persistent faking of bms +# User needs to set fake bms charge in persist.bms.fake_batt_capacity +# +fake_batt_capacity=`getprop persist.bms.fake_batt_capacity` +case "$fake_batt_capacity" in + "") ;; #Do nothing here + * ) + echo "$fake_batt_capacity" > /sys/class/power_supply/battery/capacity + ;; +esac diff --git a/rootdir/etc/init.mdm.sh b/rootdir/etc/init.mdm.sh index 451e58805..67e4667ed 100644 --- a/rootdir/etc/init.mdm.sh +++ b/rootdir/etc/init.mdm.sh @@ -27,7 +27,7 @@ # baseband=`getprop ro.baseband` -if [ "$baseband" = "mdm" ]; then +if [ "$baseband" = "mdm" ] || [ "$baseband" = "mdm2" ]; then start mdm_helper fi diff --git a/rootdir/etc/init.qcom.bms.sh b/rootdir/etc/init.qcom.bms.sh new file mode 100644 index 000000000..b849375f0 --- /dev/null +++ b/rootdir/etc/init.qcom.bms.sh @@ -0,0 +1,49 @@ +#!/system/bin/sh +# Copyright (c) 2009-2015, The Linux Foundation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of The Linux Foundation nor +# the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +target=`getprop ro.board.platform` + +start_vm_bms() +{ + if [ -e /dev/vm_bms ]; then + chown -h root.system /sys/class/power_supply/bms/current_now + chown -h root.system /sys/class/power_supply/bms/voltage_ocv + chmod 0664 /sys/class/power_supply/bms/current_now + chmod 0664 /sys/class/power_supply/bms/voltage_ocv + start vm_bms + fi +} + +case "$target" in + "msm8916") + start_vm_bms + ;; + "msm8909") + start_vm_bms + ;; +esac diff --git a/rootdir/etc/init.qcom.bt.sh b/rootdir/etc/init.qcom.bt.sh index a1532173f..ecacf938a 100644 --- a/rootdir/etc/init.qcom.bt.sh +++ b/rootdir/etc/init.qcom.bt.sh @@ -71,6 +71,10 @@ config_bt () fi btsoc=`getprop qcom.bluetooth.soc` + if ls /sys/class/leds/bt; then + chmod 0666 /sys/class/leds/bt/brightness + fi + case $baseband in "apq") setprop ro.qualcomm.bluetooth.opp true @@ -103,7 +107,15 @@ config_bt () setprop ro.qualcomm.bluetooth.map true setprop ro.qualcomm.bluetooth.nap true setprop ro.bluetooth.sap true - setprop ro.bluetooth.dun false + case $target in + "apq8084") + setprop ro.bluetooth.dun true + logi "Enabling BT-DUN for APQ8084" + ;; + *) + setprop ro.bluetooth.dun false + ;; + esac ;; "msm") setprop ro.qualcomm.bluetooth.opp true @@ -145,21 +157,20 @@ config_bt () setprop ro.qualcomm.bt.hci_transport smd fi ;; - "msm8974" | "msm8226" | "msm8610" ) + "msm8974" | "msm8226" | "msm8610" | "msm8916" | "msm8909" ) if [ "$btsoc" != "ath3k" ] then - setprop ro.bluetooth.hfp.ver 1.6 + setprop ro.bluetooth.hfp.ver 1.7 setprop ro.qualcomm.bt.hci_transport smd fi ;; - "apq8084" | "mpq8092" ) + "apq8084" | "mpq8092" | "msm8994" ) if [ "$btsoc" != "rome" ] then setprop ro.qualcomm.bt.hci_transport smd elif [ "$btsoc" = "rome" ] then setprop ro.bluetooth.hfp.ver 1.6 - setprop ro.bluetooth.dun true fi ;; *) diff --git a/rootdir/etc/init.qcom.class_core.sh b/rootdir/etc/init.qcom.class_core.sh index 0345bfc0b..bc89e865a 100755 --- a/rootdir/etc/init.qcom.class_core.sh +++ b/rootdir/etc/init.qcom.class_core.sh @@ -169,6 +169,25 @@ case "$target" in ;; esac ;; + + "msm8610" | "msm8974" | "msm8226") + case "$serial" in + "0") + echo 0 > /sys/devices/f991f000.serial/console + ;; + "1") + echo 1 > /sys/devices/f991f000.serial/console + start console + ;; + *) + case "$dserial" in + "1") + start console + ;; + esac + ;; + esac + ;; *) case "$dserial" in "1") @@ -178,18 +197,6 @@ case "$target" in ;; esac -# -# Allow persistent faking of bms -# User needs to set fake bms charge in persist.bms.fake_batt_capacity -# -fake_batt_capacity=`getprop persist.bms.fake_batt_capacity` -case "$fake_batt_capacity" in - "") ;; #Do nothing here - * ) - echo "$fake_batt_capacity" > /sys/class/power_supply/battery/capacity - ;; -esac - case "$target" in "msm7630_surf" | "msm7630_1x" | "msm7630_fusion") insmod /system/lib/modules/ss_mfcinit.ko diff --git a/rootdir/etc/init.qcom.debug.sh b/rootdir/etc/init.qcom.debug.sh new file mode 100644 index 000000000..24274b822 --- /dev/null +++ b/rootdir/etc/init.qcom.debug.sh @@ -0,0 +1,84 @@ +#!/system/bin/sh +# Copyright (c) 2014, The Linux Foundation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of The Linux Foundation nor +# the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# function to enable ftrace events to CoreSight STM +enable_stm_events() +{ + # bail out if its perf config + if [ ! -d /sys/module/msm_rtb ] + then + return + fi + # bail out if coresight isn't present + if [ ! -d /sys/bus/coresight ] + then + return + fi + # bail out if ftrace events aren't present + if [ ! -d /sys/kernel/debug/tracing/events ] + then + return + fi + + echo 1 > /sys/bus/coresight/devices/coresight-tmc-etr/curr_sink + echo 1 > /sys/bus/coresight/devices/coresight-stm/enable + echo 1 > /sys/kernel/debug/tracing/tracing_on + # schedular + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_cpu_hotplug/enable + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_cpu_load/enable + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_enq_deq_task/enable + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_load_balance/enable + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_migrate_task/enable + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_switch/enable + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_task_load/enable + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_update_history/enable + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_update_task_ravg/enable + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable + echo 1 > /sys/kernel/debug/tracing/events/sched/sched_wakeup_new/enable + # sound + echo 1 > /sys/kernel/debug/tracing/events/asoc/snd_soc_reg_read/enable + echo 1 > /sys/kernel/debug/tracing/events/asoc/snd_soc_reg_write/enable + # mdp + echo 1 > /sys/kernel/debug/tracing/events/mdss/mdp_video_underrun_done/enable + # video + echo 1 > /sys/kernel/debug/tracing/events/msm_vidc/enable + # clock + echo 1 > /sys/kernel/debug/tracing/events/power/clock_set_rate/enable + # regulator + echo 1 > /sys/kernel/debug/tracing/events/regulator/enable + # power + echo 1 > /sys/kernel/debug/tracing/events/msm_low_power/enable +} + +coresight_config=`getprop persist.debug.coresight.config` + +case "$coresight_config" in + "stm-events") + enable_stm_events + ;; +esac diff --git a/rootdir/etc/init.qcom.early_boot.sh b/rootdir/etc/init.qcom.early_boot.sh index fa97d92f7..c05bfb2a7 100755 --- a/rootdir/etc/init.qcom.early_boot.sh +++ b/rootdir/etc/init.qcom.early_boot.sh @@ -44,10 +44,14 @@ if [ -f /sys/devices/soc0/platform_version ]; then else soc_hwver=`cat /sys/devices/system/soc/soc0/platform_version` 2> /dev/null fi +if [ -f /sys/class/graphics/fb0/virtual_size ]; then + virtual_size=$(echo `cat /sys/class/graphics/fb0/virtual_size` | cut -d',' -f1) 2>/dev/null +fi -log -t BOOT -p i "MSM target '$1', SoC '$soc_hwplatform', HwID '$soc_hwid', SoC ver '$soc_hwver'" +platform=`getprop ro.board.platform` +log -t BOOT -p i "MSM target '$platform', SoC '$soc_hwplatform', HwID '$soc_hwid', SoC ver '$soc_hwver', virtual size '$virtual_size'" -case "$1" in +case "$platform" in "msm7630_surf" | "msm7630_1x" | "msm7630_fusion") case "$soc_hwplatform" in "FFA" | "SVLTE_FFA") @@ -140,7 +144,7 @@ case "$1" in esac ;; - "msm8610") + "msm8610" | "apq8084" | "mpq8092") case "$soc_hwplatform" in *) setprop ro.sf.lcd_density 240 @@ -150,22 +154,91 @@ case "$1" in "apq8084") case "$soc_hwplatform" in "Liquid") - setprop ro.sf.lcd_density 293 + setprop ro.sf.lcd_density 320 # Liquid do not have hardware navigation keys, so enable # Android sw navigation bar setprop ro.hw.nav_keys 0 ;; + "SBC") + setprop ro.sf.lcd_density 200 + # SBC do not have hardware navigation keys, so enable + # Android sw navigation bar + setprop qemu.hw.mainkeys 0 + ;; *) - setprop ro.sf.lcd_density 440 + setprop ro.sf.lcd_density 480 ;; esac ;; + "msm8916" | "msm8909") + if test -n "$virtual_size" + then + if [ $virtual_size -ge "1080" ] + then + if [ $soc_hwplatform == "SBC" ] + then + setprop ro.sf.lcd_density 240 + setprop qemu.hw.mainkeys 0 + else + setprop ro.sf.lcd_density 480 + fi + elif [ $virtual_size -ge "720" ] + then + setprop ro.sf.lcd_density 320 + elif [ $virtual_size -ge "480" ] + then + setprop ro.sf.lcd_density 240 + else + setprop ro.sf.lcd_density 320 + fi + fi + + # Set ro.opengles.version based on chip id. + # MSM8939 variants supports OpenGLES 3.1 + # 196608 is decimal for 0x30000 to report version 3.0 + # 196609 is decimal for 0x30001 to report version 3.1 + case "$soc_hwid" in + 233|239|240|241|242|243|263|268|269|270|271) + setprop ro.opengles.version 196609 + if [ $soc_hwid -ge "239" ] && [ $soc_hwid -le "243" ] + then + setprop media.msm8939hw 1 + fi + if [ $soc_hwid -ge "268" ] && [ $soc_hwid -le "271" ] + then + setprop media.msm8929hw 1 + fi + ;; + *) + setprop ro.opengles.version 196608 + ;; + esac + + # auto firmware upgrade for ITE tecg touch screen + case $platform in + "msm8909" | "msm8909w") + case $soc_hwplatform in + "MTP") + echo 1 > /sys/bus/i2c/devices/5-0046/cfg_update + echo 1 > /sys/bus/i2c/devices/5-0046/fw_update + ;; + esac + ;; + esac + ;; esac -# Setup HDMI related nodes & permissions +# Setup display nodes & permissions # HDMI can be fb1 or fb2 # Loop through the sysfs nodes and determine # the HDMI(dtv panel) + +function set_perms() { + #Usage set_perms + chown -h $2 $1 + chmod $3 $1 +} + for fb_cnt in 0 1 2 do file=/sys/class/graphics/fb$fb_cnt @@ -175,25 +248,36 @@ dev_file=/dev/graphics/fb$fb_cnt value=`cat $file/msm_fb_type` case "$value" in "dtv panel") - chown -h system.graphics $file/hpd - chown -h system.system $file/hdcp/tp - chown -h system.graphics $file/vendor_name - chown -h system.graphics $file/product_description - chmod -h 0664 $file/hpd - chmod -h 0664 $file/hdcp/tp - chmod -h 0664 $file/vendor_name - chmod -h 0664 $file/product_description - chmod -h 0664 $file/video_mode - chmod -h 0664 $file/format_3d - # create symbolic link + set_perms $file/hpd system.graphics 0664 + set_perms $file/res_info system.graphics 0664 + set_perms $file/vendor_name system.graphics 0664 + set_perms $file/product_description system.graphics 0664 + set_perms $file/video_mode system.graphics 0664 + set_perms $file/format_3d system.graphics 0664 + set_perms $file/s3d_mode system.graphics 0664 + set_perms $file/cec/enable system.graphics 0664 + set_perms $file/cec/logical_addr system.graphics 0664 + set_perms $file/cec/rd_msg system.graphics 0664 + set_perms $file/pa system.graphics 0664 + set_perms $file/cec/wr_msg system.graphics 0600 + set_perms $file/hdcp/tp system.graphics 0664 ln -s $dev_file /dev/graphics/hdmi - # Change owner and group for media server and surface flinger - chown -h system.system $file/format_3d;; esac + if [ $fb_cnt -eq 0 ] + then + set_perms $file/idle_time system.graphics 0664 + set_perms $file/dynamic_fps system.graphics 0664 + set_perms $file/dyn_pu system.graphics 0664 + set_perms $file/modes system.graphics 0664 + set_perms $file/mode system.graphics 0664 + fi fi done -# Set date to a time after 2008 -# This is a workaround for Zygote to preload time related classes properly -date -s 20090102.130000 - +reason_value=`cat /proc/sys/kernel/boot_reason` +if [ "$reason_value" = "3" ]; then + setprop ro.alarm_boot true + setprop debug.sf.nobootanimation 1 +else + setprop ro.alarm_boot false +fi diff --git a/rootdir/etc/init.qcom.factory.rc b/rootdir/etc/init.qcom.factory.rc new file mode 100644 index 000000000..f70fc33e8 --- /dev/null +++ b/rootdir/etc/init.qcom.factory.rc @@ -0,0 +1,316 @@ +# +# Copyright (c) 2009-2015, The Linux Foundation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of The Linux Foundation nor +# the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# Define fastmmi +service fastmmi /system/bin/mmi + user root + group root + disabled + +service srvmag_ffbm /system/bin/servicemanager + user root + disabled + oneshot + +# Creating a scratch storage on /data for factory testing. +on factory-fs + mount tmpfs tmpfs /data + +on mmi + # ==================================================================== + # The follow setting come from "on boot" in init.qcom.rc + # ==================================================================== + chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power + chown bluetooth bluetooth /sys/class/rfkill/rfkill0/type + chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state + chown bluetooth bluetooth /proc/bluetooth/sleep/proto + chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_lpm + chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_btwrite + chown system system /sys/module/sco/parameters/disable_esco + chown bluetooth bluetooth /sys/module/hci_smd/parameters/hcismd_set + chmod 0660 /sys/module/bluetooth_power/parameters/power + chmod 0660 /sys/module/hci_smd/parameters/hcismd_set + chmod 0660 /sys/class/rfkill/rfkill0/state + chmod 0660 /proc/bluetooth/sleep/proto + chown bluetooth bluetooth /dev/ttyHS0 + chmod 0660 /sys/module/hci_uart/parameters/ath_lpm + chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite + chmod 0660 /dev/ttyHS0 + chown bluetooth bluetooth /sys/devices/platform/msm_serial_hs.0/clock + chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock + chown system system /sys/module/radio_iris_transport/parameters/fmsmd_set + chmod 0660 /sys/module/radio_iris_transport/parameters/fmsmd_set + + chmod 0660 /dev/ttyHS2 + chown bluetooth bluetooth /dev/ttyHS2 + + chown bluetooth bluetooth /sys/class/rfkill/rfkill0/device/extldo + chmod 0660 /sys/class/rfkill/rfkill0/device/extldo + + #Create QMUX deamon socket area + mkdir /dev/socket/qmux_radio 0770 radio radio + chmod 2770 /dev/socket/qmux_radio + mkdir /dev/socket/qmux_audio 0770 media audio + chmod 2770 /dev/socket/qmux_audio + mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth + chmod 2770 /dev/socket/qmux_bluetooth + mkdir /dev/socket/qmux_gps 0770 gps gps + chmod 2770 /dev/socket/qmux_gps + + setprop wifi.interface wlan0 + + #disable camera read sensors data on FFBM + setprop persist.camera.gyro.disable 1 + +# Define TCP buffer sizes for various networks +# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax, + setprop net.tcp.buffersize.wifi 524288,2097152,4194304,262144,524288,1048576 + + + setprop ro.telephony.call_ring.multiple false + + #Remove SUID bit for iproute2 ip tool + chmod 0755 /system/bin/ip + + + chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state + + #For bridgemgr daemon to inform the USB driver of the correct transport + chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport + +# Define TCP buffer sizes for various networks +# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax, + setprop net.tcp.buffersize.default 4096,87380,524288,4096,16384,110208 + setprop net.tcp.buffersize.lte 2097152,4194304,8388608,262144,524288,1048576 + setprop net.tcp.buffersize.umts 4094,87380,110208,4096,16384,110208 + setprop net.tcp.buffersize.hspa 4094,87380,1220608,4096,16384,1220608 + setprop net.tcp.buffersize.hsupa 4094,87380,1220608,4096,16384,1220608 + setprop net.tcp.buffersize.hsdpa 4094,87380,1220608,4096,16384,1220608 + 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 net.tcp.buffersize.evdo 4094,87380,524288,4096,16384,262144 + + #Assign TCP buffer thresholds to be ceiling value of technology maximums + #Increased technology maximums should be reflected here. + write /proc/sys/net/core/rmem_max 8388608 + write /proc/sys/net/core/wmem_max 8388608 + + #To allow interfaces to get v6 address when tethering is enabled + write /proc/sys/net/ipv6/conf/rmnet0/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet1/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet2/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet3/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet4/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet5/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet6/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet7/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_sdio0/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_sdio1/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_sdio2/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_sdio3/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_sdio4/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_sdio5/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_sdio6/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_sdio7/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_usb0/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_usb1/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra 2 + write /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra 2 + + # To prevent out of order acknowledgements from making + # connection tracking to treat them as not belonging to + # the connection they belong to. + # Otherwise, a weird issue happens in which some long + # connections on high-throughput links get dropped when + # an ack packet comes out of order + write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1 + + # Set the console loglevel to < KERN_INFO + # Set the default message loglevel to KERN_INFO + write /proc/sys/kernel/printk "6 6 1 7" + + # Allow access for CCID command/response timeout configuration + chown system system /sys/module/ccid_bridge/parameters/bulk_msg_timeout + + # ============================================================= + # The follow settings come from "on boot" in init.rc + # ============================================================= + # basic network init + ifup lo + hostname localhost + domainname localdomain + + # set RLIMIT_NICE to allow priorities from 19 to -20 + setrlimit 13 40 40 + + # Memory management. Basic kernel parameters, and allow the high + # level system server to be able to adjust the kernel OOM driver + # parameters to match how it is managing things. + write /proc/sys/vm/overcommit_memory 1 + write /proc/sys/vm/min_free_order_shift 4 + chown root system /sys/module/lowmemorykiller/parameters/adj + chmod 0220 /sys/module/lowmemorykiller/parameters/adj + chown root system /sys/module/lowmemorykiller/parameters/minfree + chmod 0220 /sys/module/lowmemorykiller/parameters/minfree + + # Tweak background writeout + write /proc/sys/vm/dirty_expire_centisecs 200 + write /proc/sys/vm/dirty_background_ratio 5 + + # Permissions for System Server and daemons. + chown radio system /sys/android_power/state + chown radio system /sys/android_power/request_state + chown radio system /sys/android_power/acquire_full_wake_lock + chown radio system /sys/android_power/acquire_partial_wake_lock + chown radio system /sys/android_power/release_wake_lock + chown system system /sys/power/autosleep + chown system system /sys/power/state + chown system system /sys/power/wakeup_count + chown radio system /sys/power/wake_lock + chown radio system /sys/power/wake_unlock + chmod 0660 /sys/power/state + chmod 0660 /sys/power/wake_lock + chmod 0660 /sys/power/wake_unlock + + chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_rate + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_rate + chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_slack + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_slack + chown system system /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + chown system system /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + chown system system /sys/devices/system/cpu/cpufreq/interactive/target_loads + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/target_loads + chown system system /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + chown system system /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + chown system system /sys/devices/system/cpu/cpufreq/interactive/boost + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/boost + chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse + chown system system /sys/devices/system/cpu/cpufreq/interactive/input_boost + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/input_boost + chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration + chown system system /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + + # Assume SMP uses shared cpufreq policy for all CPUs + chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + chmod 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + + chown system system /sys/class/timed_output/vibrator/enable + chown system system /sys/class/leds/keyboard-backlight/brightness + chown system system /sys/class/leds/lcd-backlight/brightness + chown system system /sys/class/leds/torch-light/brightness + chown system system /sys/class/leds/flashlight/brightness + chown system system /sys/class/leds/button-backlight/brightness + chown system system /sys/class/leds/jogball-backlight/brightness + chown system system /sys/class/leds/red/brightness + chown system system /sys/class/leds/green/brightness + chown system system /sys/class/leds/blue/brightness + chown system system /sys/class/leds/red/device/grpfreq + chown system system /sys/class/leds/red/device/grppwm + chown system system /sys/class/leds/red/device/blink + chown system system /sys/class/timed_output/vibrator/enable + chown system system /sys/module/sco/parameters/disable_esco + chown system system /sys/kernel/ipv4/tcp_wmem_min + chown system system /sys/kernel/ipv4/tcp_wmem_def + chown system system /sys/kernel/ipv4/tcp_wmem_max + chown system system /sys/kernel/ipv4/tcp_rmem_min + chown system system /sys/kernel/ipv4/tcp_rmem_def + chown system system /sys/kernel/ipv4/tcp_rmem_max + chown root radio /proc/cmdline + + # Define default initial receive window size in segments. + setprop net.tcp.default_init_rwnd 60 + + # ======================================================== + # This is FFBM only settings. + # ======================================================== + + #mount sdcard by default + mount vfat /dev/block/mmcblk1p1 /storage/sdcard1 + + #mkdir for factory data files. + mkdir /cache/FTM_AP 0750 root root + #sensor settings + chmod 775 /persist/sensors + chmod 664 /persist/sensors/sensors_settings + chown system root /persist/sensors/sensors_settings + mkdir /data/misc/sensors 775 system root + + #Create NETMGR daemon socket area + mkdir /dev/socket/netmgr 0750 radio radio + + #Start the following services needed for fftm + start qcom-usb-sh + start logd + start debuggerd + start debuggerd64 + start per_mgr + start ril-daemon + start config_bluetooth + start sensors + start media + start srvmag_ffbm + start surfaceflinger + start fastmmi + start wcnss-service + start qcom-post-boot + start rmt_storage + start qcom-c_main-sh + start irsc_util + start qcamerasvr + start qcomsysd + start ptt_ffbm + start tftp_server + +on ffbm + trigger early-fs + trigger factory-fs + trigger fs + trigger post-fs + + # 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_system_props_action + + # Now we can mount /data. File encryption requires keymaster to decrypt + # /data, which in turn can only be loaded when system properties are present + trigger post-fs-data + trigger load_persist_props_action + + # Remove a file to wake up anything waiting for firmware. + trigger firmware_mounts_complete + + trigger early-boot + trigger mmi diff --git a/rootdir/etc/init.qcom.factory.sh b/rootdir/etc/init.qcom.factory.sh deleted file mode 100644 index 302d243ac..000000000 --- a/rootdir/etc/init.qcom.factory.sh +++ /dev/null @@ -1,247 +0,0 @@ -#!/system/bin/sh -# Copyright (c) 2009-2013, The Linux Foundation. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of The Linux Foundation nor -# the names of its contributors may be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# Actions on fast factory test mode - chown -h bluetooth.bluetooth /sys/module/bluetooth_power/parameters/power - chown -h bluetooth.bluetooth /sys/class/rfkill/rfkill0/type - chown -h bluetooth.bluetooth /sys/class/rfkill/rfkill0/state - chown -h bluetooth.bluetooth /proc/bluetooth/sleep/proto - chown -h system.system /sys/module/sco/parameters/disable_esco - chown -h bluetooth.bluetooth /sys/module/hci_smd/parameters/hcismd_set - chmod -h 0660 /sys/module/bluetooth_power/parameters/power - chmod -h 0660 /sys/module/hci_smd/parameters/hcismd_set - chmod -h 0660 /sys/class/rfkill/rfkill0/state - chmod -h 0660 /proc/bluetooth/sleep/proto - chown -h bluetooth.bluetooth /dev/ttyHS0 - chmod -h 0660 /dev/ttyHS0 - chown -h bluetooth.bluetooth /sys/devices/platform/msm_serial_hs.0/clock - chmod -h 0660 /sys/devices/platform/msm_serial_hs.0/clock - - chmod -h 0660 /dev/ttyHS2 - chown -h bluetooth.bluetooth /dev/ttyHS2 - - #Create QMUX deamon socket area - mkdir -p /dev/socket/qmux_radio - chown -h radio.radio /dev/socket/qmux_radio - chmod -h 2770 /dev/socket/qmux_radio - mkdir -p /dev/socket/qmux_audio - chown -h media.audio /dev/socket/qmux_audio - chmod -h 2770 /dev/socket/qmux_audio - mkdir -p /dev/socket/qmux_bluetooth - chown -h bluetooth.bluetooth /dev/socket/qmux_bluetooth - chmod -h 2770 /dev/socket/qmux_bluetooth - mkdir -p /dev/socket/qmux_gps - chown -h gps.gps /dev/socket/qmux_gps - chmod -h 2770 /dev/socket/qmux_gps - - # Allow QMUX daemon to assign port open wait time - chown -h radio.radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait - - setprop wifi.interface wlan0 - - setprop ro.telephony.call_ring.multiple false - - #Set SUID bit for usbhub - chmod -h 4755 /system/bin/usbhub - chmod -h 755 /system/bin/usbhub_init - - #Remove SUID bit for iproute2 ip tool - chmod -h 0755 /system/bin/ip - - chmod -h 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state - - # setup permissions for fb1 related nodes - chown -h system.graphics /sys/class/graphics/fb1/hpd - chown -h system.system /sys/class/graphics/fb1/hdcp/tp - chmod -h 0664 /sys/devices/virtual/graphics/fb1/hpd - chmod -h 0664 /sys/devices/virtual/graphics/fb1/hdcp/tp - chmod -h 0664 /sys/devices/virtual/graphics/fb1/video_mode - chmod -h 0664 /sys/devices/virtual/graphics/fb1/format_3d - - # Change owner and group for media server and surface flinger - chown -h system.system /sys/devices/virtual/graphics/fb1/format_3d - - #For bridgemgr daemon to inform the USB driver of the correct transport - chown -h radio.radio /sys/class/android_usb/f_rmnet_smd_sdio/transport - - #To allow interfaces to get v6 address when tethering is enabled - echo 2 > /proc/sys/net/ipv6/conf/rmnet0/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet1/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet2/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet3/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet4/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet5/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet6/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet7/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio0/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio1/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio2/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio3/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio4/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio5/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio6/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio7/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_usb0/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_usb1/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra - echo 2 > /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra - - # To prevent out of order acknowledgements from making - # connection tracking to treat them as not belonging to - # the connection they belong to. - # Otherwise, a weird issue happens in which some long - # connections on high-throughput links get dropped when - # an ack packet comes out of order - echo 1 > /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal - -#TODO: -# basic network init -# ifup lo -# hostname localhost -# domainname localdomain - -# set RLIMIT_NICE to allow priorities from 19 to -20 -# setrlimit 13 40 40 - -# Memory management. Basic kernel parameters, and allow the high -# level system server to be able to adjust the kernel OOM driver -# parameters to match how it is managing things. - echo 1 > /proc/sys/vm/overcommit_memory - echo 4 > /proc/sys/vm/min_free_order_shift - chown -h root.system /sys/module/lowmemorykiller/parameters/adj - chmod -h 0664 /sys/module/lowmemorykiller/parameters/adj - chown -h root.system /sys/module/lowmemorykiller/parameters/minfree - chmod -h 0664 /sys/module/lowmemorykiller/parameters/minfree - - # Tweak background writeout - echo 200 > /proc/sys/vm/dirty_expire_centisecs - echo 5 > /proc/sys/vm/dirty_background_ratio - - # Permissions for System Server and daemons. - chown -h radio.system /sys/android_power/state - chown -h radio.system /sys/android_power/request_state - chown -h radio.system /sys/android_power/acquire_full_wake_lock - chown -h radio.system /sys/android_power/acquire_partial_wake_lock - chown -h radio.system /sys/android_power/release_wake_lock - chown -h system.system /sys/power/autosleep - chown -h system.system /sys/power/state - chown -h system.system /sys/power/wakeup_count - chown -h radio.system /sys/power/wake_lock - chown -h radio.system /sys/power/wake_unlock - chmod -h 0660 /sys/power/state - chmod -h 0660 /sys/power/wake_lock - chmod -h 0660 /sys/power/wake_unlock - - chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/timer_rate - chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_rate - chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/min_sample_time - chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/min_sample_time - chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq - chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq - chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load - chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load - chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay - chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay - chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/boost - chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/boost - chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/boostpulse - chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/input_boost - chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/input_boost - chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration - chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration - - # Assume SMP uses shared cpufreq policy for all CPUs - chown -h system.system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq - chmod -h 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq - - chown -h system.system /sys/class/timed_output/vibrator/enable - chown -h system.system /sys/class/leds/keyboard-backlight/brightness - chown -h system.system /sys/class/leds/lcd-backlight/brightness - chown -h system.system /sys/class/leds/button-backlight/brightness - chown -h system.system /sys/class/leds/jogball-backlight/brightness - chown -h system.system /sys/class/leds/red/brightness - chown -h system.system /sys/class/leds/green/brightness - chown -h system.system /sys/class/leds/blue/brightness - chown -h system.system /sys/class/leds/red/device/grpfreq - chown -h system.system /sys/class/leds/red/device/grppwm - chown -h system.system /sys/class/leds/red/device/blink - chown -h system.system /sys/class/leds/red/brightness - chown -h system.system /sys/class/leds/green/brightness - chown -h system.system /sys/class/leds/blue/brightness - chown -h system.system /sys/class/leds/red/device/grpfreq - chown -h system.system /sys/class/leds/red/device/grppwm - chown -h system.system /sys/class/leds/red/device/blink - chown -h system.system /sys/class/timed_output/vibrator/enable - chown -h system.system /sys/module/sco/parameters/disable_esco - chown -h system.system /sys/kernel/ipv4/tcp_wmem_min - chown -h system.system /sys/kernel/ipv4/tcp_wmem_def - chown -h system.system /sys/kernel/ipv4/tcp_wmem_max - chown -h system.system /sys/kernel/ipv4/tcp_rmem_min - chown -h system.system /sys/kernel/ipv4/tcp_rmem_def - chown -h system.system /sys/kernel/ipv4/tcp_rmem_max - chown -h root radio /proc/cmdline - -# Define TCP buffer sizes for various networks -# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax, - setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208 - 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,110208,4096,16384,110208 - setprop net.tcp.buffersize.hspa 4094,87380,1220608,4096,16384,1220608 - setprop net.tcp.buffersize.hsupa 4094,87380,1220608,4096,16384,1220608 - setprop net.tcp.buffersize.hsdpa 4094,87380,1220608,4096,16384,1220608 - 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 net.tcp.buffersize.evdo 4094,87380,262144,4096,16384,262144 - -# Assign TCP buffer thresholds to be ceiling value of technology maximums -# Increased technology maximums should be reflected here. - echo 2097152 > /proc/sys/net/core/rmem_max - echo 2097152 > /proc/sys/net/core/wmem_max - -# Set the property to indicate type of virtual display to 0 -# 0 indicates that virtual display is not a Wifi display and that the -# session is not exercised through RemoteDisplay in the android framework - setprop persist.sys.wfd.virtual 0 - -# Set this property so surfaceflinger is not started by system_init - setprop system_init.startsurfaceflinger 0 - -# Start the following services needed for fftm - start config_bluetooth - start media - start fastmmi - start adbd - start qcom-post-boot - start rmt_storage - start qcom-c_main-sh - start irsc_util - start qcamerasvr - start qcom-usb-sh - start qcomsysd diff --git a/rootdir/etc/init.qcom.fm.sh b/rootdir/etc/init.qcom.fm.sh index 481e06fcd..a3b163117 100755 --- a/rootdir/etc/init.qcom.fm.sh +++ b/rootdir/etc/init.qcom.fm.sh @@ -1,5 +1,5 @@ #!/system/bin/sh -# Copyright (c) 2009-2011, The Linux Foundation. All rights reserved. +# Copyright (c) 2009-2011, 2015, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -29,11 +29,7 @@ setprop hw.fm.init 0 mode=`getprop hw.fm.mode` -version=`getprop hw.fm.version` -isAnalog=`getprop hw.fm.isAnalog` - -#find the transport type -TRANSPORT=`getprop ro.qualcomm.bt.hci_transport` +version=199217 LOG_TAG="qcom-fm" LOG_NAME="${0}:" @@ -56,24 +52,15 @@ failed () logi "In FM shell Script" logi "mode: $mode" -logi "isAnalog: $isAnalog" -logi "Transport : $TRANSPORT" logi "Version : $version" #$fm_qsoc_patches # case $mode in "normal") - case $TRANSPORT in - "smd") logi "inserting the radio transport module" - insmod /system/lib/modules/radio-iris-transport.ko - ;; - *) - logi "default transport case " - ;; - esac - /system/bin/fm_qsoc_patches $version 0 + echo 1 > /sys/module/radio_iris_transport/parameters/fmsmd_set + /system/bin/fm_qsoc_patches $version 0 ;; "wa_enable") /system/bin/fm_qsoc_patches $version 1 @@ -81,9 +68,6 @@ case $mode in "wa_disable") /system/bin/fm_qsoc_patches $version 2 ;; - "config_dac") - /system/bin/fm_qsoc_patches $version 3 $isAnalog - ;; *) logi "Shell: Default case" /system/bin/fm_qsoc_patches $version 0 diff --git a/rootdir/etc/init.qcom.post_boot.sh b/rootdir/etc/init.qcom.post_boot.sh old mode 100755 new mode 100644 index bbb08a5f3..be7bf4fcb --- a/rootdir/etc/init.qcom.post_boot.sh +++ b/rootdir/etc/init.qcom.post_boot.sh @@ -1,5 +1,5 @@ #!/system/bin/sh -# Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. +# Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -61,14 +61,14 @@ case "$target" in echo 2 > /sys/module/rpm_resources/enable_low_power/vdd_dig echo 2 > /sys/module/rpm_resources/enable_low_power/vdd_mem echo 1 > /sys/module/rpm_resources/enable_low_power/rpm_cpu - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate @@ -94,20 +94,20 @@ case "$target" in echo 1 > /sys/module/rpm_resources/enable_low_power/pxo echo 1 > /sys/module/rpm_resources/enable_low_power/vdd_dig echo 1 > /sys/module/rpm_resources/enable_low_power/vdd_mem - echo 1 > /sys/module/pm_8x60/modes/cpu0/retention/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled echo 0 > /sys/module/msm_thermal/core_control/enabled echo 1 > /sys/devices/system/cpu/cpu1/online echo 1 > /sys/devices/system/cpu/cpu2/online @@ -245,27 +245,27 @@ esac case "$target" in "msm8974") - echo 2 > /sys/module/lpm_resources/enable_low_power/l2 - echo 1 > /sys/module/lpm_resources/enable_low_power/pxo - echo 1 > /sys/module/lpm_resources/enable_low_power/vdd_dig - echo 1 > /sys/module/lpm_resources/enable_low_power/vdd_mem - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/retention/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/retention/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/retention/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/retention/idle_enabled + echo 4 > /sys/module/lpm_levels/enable_low_power/l2 + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled echo 0 > /sys/module/msm_thermal/core_control/enabled echo 1 > /sys/devices/system/cpu/cpu1/online echo 1 > /sys/devices/system/cpu/cpu2/online @@ -277,19 +277,26 @@ case "$target" in fi case "$soc_id" in "208" | "211" | "214" | "217" | "209" | "212" | "215" | "218" | "194" | "210" | "213" | "216") - echo 1 > /sys/module/cpubw_krait/parameters/enable + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "cpubw_hwmon" > $devfreq_gov + done echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo "interactive" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor echo "interactive" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor - echo "20000 1500000:80000 1700000:20000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo "20000 1400000:40000 1700000:20000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load - echo 1497600 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 1190400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpufreq/interactive/target_loads echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time echo 20 > /sys/module/cpu_boost/parameters/boost_ms echo 1728000 > /sys/module/cpu_boost/parameters/sync_threshold echo 100000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + echo 1497600 > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + setprop ro.qualcomm.perf.cores_online 2 ;; *) echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor @@ -329,25 +336,91 @@ case "$target" in esac case "$target" in - "msm8226") - echo 2 > /sys/module/lpm_resources/enable_low_power/l2 - soc_revision=`cat /sys/devices/soc0/revision` - if [ "$soc_revision" != "1.0" ]; then - echo 1 > /sys/module/lpm_resources/enable_low_power/pxo + "msm8916") + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` fi - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled + case "$soc_id" in + "206") + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 2 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus + ;; + "247" | "248" | "249" | "250") + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + ;; + "239" | "241" | "263") + if [ -f /sys/devices/soc0/revision ]; then + revision=`cat /sys/devices/soc0/revision` + else + revision=`cat /sys/devices/system/soc/soc0/revision` + fi + echo 10 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + fi + case "$soc_id" in + "239") + case "$hw_platform" in + "Surf") + case "$platform_subtype_id" in + "1" | "2") + start hbtp + ;; + esac + ;; + "MTP") + case "$platform_subtype_id" in + "3") + start hbtp + ;; + esac + ;; + esac + ;; + esac + ;; + "268" | "269" | "270" | "271") + echo 10 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus + ;; + "233" | "240" | "242") + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + ;; + esac + ;; +esac + +case "$target" in + "msm8226") + echo 4 > /sys/module/lpm_levels/enable_low_power/l2 + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled echo 1 > /sys/devices/system/cpu/cpu1/online echo 1 > /sys/devices/system/cpu/cpu2/online echo 1 > /sys/devices/system/cpu/cpu3/online @@ -358,8 +431,8 @@ case "$target" in echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core - echo 3 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core - echo 300000 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq + echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core + echo 787200 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq echo 300000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq @@ -376,23 +449,23 @@ esac case "$target" in "msm8610") - echo 2 > /sys/module/lpm_resources/enable_low_power/l2 - echo 1 > /sys/module/lpm_resources/enable_low_power/pxo - echo 1 > /sys/module/lpm_resources/enable_low_power/vdd_dig - echo 1 > /sys/module/lpm_resources/enable_low_power/vdd_mem - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled + echo 4 > /sys/module/lpm_levels/enable_low_power/l2 + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled echo 1 > /sys/devices/system/cpu/cpu1/online echo 1 > /sys/devices/system/cpu/cpu2/online echo 1 > /sys/devices/system/cpu/cpu3/online @@ -403,11 +476,13 @@ case "$target" in echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core - echo 3 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core - echo 300000 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq + echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core + echo 787200 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq echo 300000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + setprop ro.qualcomm.perf.min_freq 7 + echo 1 > /sys/kernel/mm/ksm/deferred_timer chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq chown -h root.system /sys/devices/system/cpu/cpu1/online @@ -419,26 +494,636 @@ case "$target" in ;; esac +case "$target" in + "msm8916") + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + #Enable adaptive LMK and set vmpressure_file_min + ProductName=`getprop ro.product.name` + if [ "$ProductName" == "msm8916_32" ] || [ "$ProductName" == "msm8916_32_LMT" ]; then + echo 1 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk + echo 53059 > /sys/module/lowmemorykiller/parameters/vmpressure_file_min + elif [ "$ProductName" == "msm8916_64" ] || [ "$ProductName" == "msm8916_64_LMT" ]; then + echo 1 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk + echo 81250 > /sys/module/lowmemorykiller/parameters/vmpressure_file_min + fi + + # HMP scheduler settings for 8916, 8936, 8939, 8929 + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + + # Apply governor settings for 8916 + case "$soc_id" in + "206" | "247" | "248" | "249" | "250") + + # HMP scheduler load tracking settings + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + + # HMP Task packing settings for 8916 + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /proc/sys/kernel/sched_mostly_idle_load + echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run + + # disable thermal core_control to update scaling_min_freq + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + echo "25000 1094400:50000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate + echo 998400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + echo "1 800000:85 998400:90 1094400:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + ;; + esac + + # Apply governor settings for 8936 + case "$soc_id" in + "233" | "240" | "242") + + # HMP scheduler load tracking settings + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + + # HMP Task packing settings for 8936 + echo 50 > /proc/sys/kernel/sched_small_task + echo 50 > /proc/sys/kernel/sched_mostly_idle_load + echo 10 > /proc/sys/kernel/sched_mostly_idle_nr_run + + # disable thermal core_control to update scaling_min_freq, interactive gov + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + echo "25000 1113600:50000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate + echo 960000 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + echo "1 800000:85 1113600:90 1267200:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + + ;; + esac + + # Apply governor settings for 8939 + case "$soc_id" in + "239" | "241" | "263" | "268" | "269" | "270" | "271") + + if [ `cat /sys/devices/soc0/revision` != "3.0" ]; then + # Apply 1.0 and 2.0 specific Sched & Governor settings + + # HMP scheduler load tracking settings + echo 5 > /proc/sys/kernel/sched_ravg_hist_size + + # HMP Task packing settings for 8939, 8929 + echo 20 > /proc/sys/kernel/sched_small_task + + for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor + do + echo "cpufreq" > $devfreq_gov + done + + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/qcom,cpubw*/bw_hwmon/io_percent + do + echo 20 > $cpu_io_percent + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + # disable thermal core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "20000 1113600:50000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 50000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 50000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo "25000 800000:50000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 998400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "1 800000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor + echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # HMP scheduler (big.Little cluster related) settings + echo 75 > /proc/sys/kernel/sched_upmigrate + echo 60 > /proc/sys/kernel/sched_downmigrate + + # cpu idle load threshold + echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load + + # cpu idle nr run threshold + echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run + + else + # Apply 3.0 specific Sched & Governor settings + # HMP scheduler settings for 8939 V3.0 + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + echo 20000000 > /proc/sys/kernel/sched_ravg_window + + # HMP Task packing settings for 8939 V3.0 + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /proc/sys/kernel/sched_mostly_idle_load + echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run + + echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle + + for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor + do + echo "cpufreq" > $devfreq_gov + done + + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/qcom,cpubw*/bw_hwmon/io_percent + do + echo 20 > $cpu_io_percent + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + # disable thermal core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "19000 1113600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "1 800000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor + echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # HMP scheduler (big.Little cluster related) settings + echo 93 > /proc/sys/kernel/sched_upmigrate + echo 83 > /proc/sys/kernel/sched_downmigrate + + # Enable sched guided freq control + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo 50000 > /proc/sys/kernel/sched_freq_inc_notify + echo 50000 > /proc/sys/kernel/sched_freq_dec_notify + + # Enable core control + insmod /system/lib/modules/core_ctl.ko + echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus + echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + case "$revision" in + "3.0") + # Enable dynamic clock gatin + echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating + ;; + esac + fi + ;; + esac + + ;; +esac + +case "$target" in + "msm8952") + + # HMP scheduler settings for 8952 soc id is 264 + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + + # HMP Task packing settings for 8952 + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load + + echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run + + echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle + + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/qcom,cpubw*/bw_hwmon/io_percent + do + echo 20 > $cpu_io_percent + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + # disable thermal core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "19000 1113600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "1 800000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor + echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # HMP scheduler (big.Little cluster related) settings + echo 93 > /proc/sys/kernel/sched_upmigrate + echo 70 > /proc/sys/kernel/sched_downmigrate + + # Enable sched guided freq control + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo 50000 > /proc/sys/kernel/sched_freq_inc_notify + echo 50000 > /proc/sys/kernel/sched_freq_dec_notify + + # Enable core control + insmod /system/lib/modules/core_ctl.ko + echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus + echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + ;; +esac + +case "$target" in + "msm8952") + + # HMP scheduler settings for 8952 soc id is 264 + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + + # HMP Task packing settings for 8952 + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load + + echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run + + echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle + + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/qcom,cpubw*/bw_hwmon/io_percent + do + echo 20 > $cpu_io_percent + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + # disable thermal core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "19000 1113600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo "39000 998400:19000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "1 800000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor + echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # HMP scheduler (big.Little cluster related) settings + echo 93 > /proc/sys/kernel/sched_upmigrate + echo 70 > /proc/sys/kernel/sched_downmigrate + + # Enable sched guided freq control + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo 50000 > /proc/sys/kernel/sched_freq_inc_notify + echo 50000 > /proc/sys/kernel/sched_freq_dec_notify + + # Enable core control + insmod /system/lib/modules/core_ctl.ko + echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus + echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + ;; +esac + + case "$target" in "apq8084") echo 4 > /sys/module/lpm_levels/enable_low_power/l2 - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/suspend_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu0/retention/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu1/retention/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu2/retention/idle_enabled - echo 1 > /sys/module/pm_8x60/modes/cpu3/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "cpubw_hwmon" > $devfreq_gov + done + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "interactive" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor + echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor + echo "interactive" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor + echo "20000 1400000:40000 1700000:20000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 1497600 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 20 > /sys/module/cpu_boost/parameters/boost_ms + echo 1728000 > /sys/module/cpu_boost/parameters/sync_threshold + echo 100000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + echo 1497600 > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + echo 1 > /dev/cpuctl/apps/cpu.notify_on_migrate + echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + echo 1 > /sys/module/msm_thermal/core_control/enabled + setprop ro.qualcomm.perf.cores_online 2 + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + chown -h root.system /sys/devices/system/cpu/mfreq + chmod -h 220 /sys/devices/system/cpu/mfreq + chown -h root.system /sys/devices/system/cpu/cpu1/online + chown -h root.system /sys/devices/system/cpu/cpu2/online + chown -h root.system /sys/devices/system/cpu/cpu3/online + chmod -h 664 /sys/devices/system/cpu/cpu1/online + chmod -h 664 /sys/devices/system/cpu/cpu2/online + chmod -h 664 /sys/devices/system/cpu/cpu3/online + ;; +esac + +case "$target" in + "mpq8092") + echo 4 > /sys/module/lpm_levels/enable_low_power/l2 + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled echo 0 > /sys/module/msm_thermal/core_control/enabled echo 1 > /sys/devices/system/cpu/cpu1/online echo 1 > /sys/devices/system/cpu/cpu2/online @@ -450,7 +1135,6 @@ case "$target" in echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy - echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq @@ -466,9 +1150,190 @@ case "$target" in chmod -h 664 /sys/devices/system/cpu/cpu1/online chmod -h 664 /sys/devices/system/cpu/cpu2/online chmod -h 664 /sys/devices/system/cpu/cpu3/online + ;; +esac + +case "$target" in + "msm8994") + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo -n disable > /sys/devices/soc.*/qcom,bcl.*/mode + bcl_hotplug_mask=`cat /sys/devices/soc.*/qcom,bcl.*/hotplug_mask` + echo 0 > /sys/devices/soc.*/qcom,bcl.*/hotplug_mask + echo -n enable > /sys/devices/soc.*/qcom,bcl.*/mode + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + # configure governor settings for little cluster + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo "20000 750000:40000 800000:20000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 768000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "85 780000:90" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # configure governor settings for big cluster + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo "20000 750000:40000 800000:20000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 99 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "85 780000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 384000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 1 > /sys/module/msm_thermal/core_control/enabled + echo -n disable > /sys/devices/soc.*/qcom,bcl.*/mode + echo $bcl_hotplug_mask > /sys/devices/soc.*/qcom,bcl.*/hotplug_mask + echo -n enable > /sys/devices/soc.*/qcom,bcl.*/mode + # Enable task migration fixups in the scheduler + echo 1 > /proc/sys/kernel/sched_migration_fixup + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + done + /system/bin/energy-awareness + #enable rps static configuration + echo 8 > /sys/class/net/rmnet_ipa0/queues/rx-0/rps_cpus + echo 30 > /proc/sys/kernel/sched_small_task ;; esac +case "$target" in + "msm8909") + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + #Set mmcblk0 read_ahead value for 8909_512 target + ProductName=`getprop ro.product.name` + if [ "$ProductName" == "msm8909_512" ]; then + echo 128 > /sys/block/mmcblk0/queue/read_ahead_kb + fi + + #Enable adaptive LMK and set vmpressure_file_min + ProductName=`getprop ro.product.name` + if [ "$ProductName" == "msm8909" ] || [ "$ProductName" == "msm8909_LMT" ]; then + echo 1 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk + echo 53059 > /sys/module/lowmemorykiller/parameters/vmpressure_file_min + elif [ "$ProductName" == "msm8909_512" ] || [ "$ProductName" == "msm8909w" ]; then + echo "8192,11264,14336,17408,20480,26624" > /sys/module/lowmemorykiller/parameters/minfree + echo 1 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk + echo 32768 > /sys/module/lowmemorykiller/parameters/vmpressure_file_min + fi + + if [ "$ProductName" != "msm8909w" ]; then + # HMP scheduler settings for 8909 similiar to 8916 + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + + # HMP Task packing settings for 8909 similiar to 8916 + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /proc/sys/kernel/sched_mostly_idle_load + echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run + fi + + # disable thermal core_control to update scaling_min_freq + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu0/online + if [ "$ProductName" == "msm8909w" ]; then + echo 1 > /sys/devices/system/cpu/cpu1/online + fi + + if [ "$ProductName" == "msm8909w" ]; then + echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "performance" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor + echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + echo 800000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq + echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 800000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + #Below entries are to set the GPU frequency and DCVS governor + echo 200000000 > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq + echo 200000000 > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq + echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor + else + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + fi + + # enable thermal core_control now + if [ "$ProductName" != "msm8909w" ]; then + echo 1 > /sys/module/msm_thermal/core_control/enabled + fi + + echo "30000 1094400:50000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate + echo 998400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + echo "1 800000:85 998400:90 1094400:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + + if [ "$ProductName" == "msm8909w" ]; then + # Post boot, have cpu0 and cpu1 online. Make all other cores go offline + echo 0 > /sys/devices/system/cpu/cpu2/online + echo 0 > /sys/devices/system/cpu/cpu3/online + else + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + fi + + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # Enable core control + if [ "$ProductName" != "msm8909w" ]; then + insmod /system/lib/modules/core_ctl.ko + echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + max_freq=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq` + min_freq=800000 + echo $((min_freq*100 / max_freq)) $((min_freq*100 / max_freq)) $((66*1000000 / max_freq)) \ + $((55*1000000 / max_freq)) > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo $((33*1000000 / max_freq)) > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + fi + + # Apply governor settings for 8909 + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_bimc_bw_step in /sys/class/devfreq/qcom,cpubw*/bw_hwmon/bw_step + do + echo 60 > $cpu_bimc_bw_step + done + for cpu_guard_band_mbps in /sys/class/devfreq/qcom,cpubw*/bw_hwmon/guard_band_mbps + do + echo 30 > $cpu_guard_band_mbps + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + for gpu_bimc_bw_step in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/bw_step + do + echo 60 > $gpu_bimc_bw_step + done + for gpu_bimc_guard_band_mbps in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/guard_band_mbps + do + echo 30 > $gpu_bimc_guard_band_mbps + done + ;; +esac + case "$target" in "msm7627_ffa" | "msm7627_surf" | "msm7627_6x") echo 25000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate @@ -512,13 +1377,40 @@ esac # Post-setup services case "$target" in - "msm8660" | "msm8960" | "msm8226" | "msm8610") + "msm8660" | "msm8960" | "msm8226" | "msm8610" | "mpq8092" ) start mpdecision ;; + "msm8916") + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + case $soc_id in + "239" | "241" | "263" | "268" | "269" | "270" | "271") + setprop ro.min_freq_0 960000 + setprop ro.min_freq_4 800000 + ;; + "206" | "247" | "248" | "249" | "250" | "233" | "240" | "242") + setprop ro.min_freq_0 800000 + ;; + esac + #start perfd after setprop + start perfd # start perfd on 8916, 8939 and 8929 + ;; + "msm8909") + start perfd + ;; "msm8974") start mpdecision echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb ;; + "msm8994") + rm /data/system/default_values + setprop ro.min_freq_0 384000 + setprop ro.min_freq_4 384000 + start perfd + ;; "apq8084") rm /data/system/default_values start mpdecision @@ -578,9 +1470,9 @@ if [ -f /data/prebuilt/AdrenoTest.apk ]; then fi # Install SWE_Browser.apk if not already installed -if [ -f /data/prebuilt/SWE_Browser.apk ]; then - if [ ! -d /data/data/org.codeaurora.swe.browser ]; then - pm install /data/prebuilt/SWE_Browser.apk +if [ -f /data/prebuilt/SWE_AndroidBrowser.apk ]; then + if [ ! -d /data/data/com.android.swe.browser ]; then + pm install /data/prebuilt/SWE_AndroidBrowser.apk fi fi @@ -592,3 +1484,21 @@ case "$target" in echo 5120 > /proc/sys/vm/min_free_kbytes ;; esac + +case "$target" in + "msm8226" | "msm8974" | "msm8610" | "apq8084" | "mpq8092" | "msm8610" | "msm8916" | "msm8994") + # Let kernel know our image version/variant/crm_version + image_version="10:" + image_version+=`getprop ro.build.id` + image_version+=":" + image_version+=`getprop ro.build.version.incremental` + image_variant=`getprop ro.product.name` + image_variant+="-" + image_variant+=`getprop ro.build.type` + oem_version=`getprop ro.build.version.codename` + echo 10 > /sys/devices/soc0/select_image + echo $image_version > /sys/devices/soc0/image_version + echo $image_variant > /sys/devices/soc0/image_variant + echo $oem_version > /sys/devices/soc0/image_crm_version + ;; +esac diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc index 9971704f2..df0e887b7 100644 --- a/rootdir/etc/init.qcom.rc +++ b/rootdir/etc/init.qcom.rc @@ -1,4 +1,4 @@ -# Copyright (c) 2009-2012, The Linux Foundation. All rights reserved. +# Copyright (c) 2009-2012, 2014-2015, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -27,6 +27,7 @@ import init.qcom.usb.rc import init.target.rc +import init.qcom.factory.rc on early-init mount debugfs debugfs /sys/kernel/debug @@ -34,31 +35,33 @@ on early-init on init # Set permissions for persist partition mkdir /persist 0771 system system - # See storage config details at http://source.android.com/tech/storage/ - mkdir /mnt/shell/emulated 0700 shell shell - mkdir /storage 0050 system sdcard_r - mkdir /storage/emulated 0555 root root - mkdir /storage/emulated/legacy 0555 root root mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw + mkdir /mnt/media_rw/usbotg 0700 media_rw media_rw + mkdir /mnt/media_rw/uicc0 0700 media_rw media_rw + mkdir /mnt/media_rw/uicc1 0700 media_rw media_rw mkdir /storage/sdcard1 0700 root root + mkdir /storage/uicc0 0700 root root + mkdir /storage/uicc1 0700 root root + mkdir /storage/usbotg 0700 root root - export EXTERNAL_STORAGE /storage/emulated/legacy + export EXTERNAL_STORAGE /sdcard export SECONDARY_STORAGE /storage/sdcard1 - export EMULATED_STORAGE_SOURCE /mnt/shell/emulated - export EMULATED_STORAGE_TARGET /storage/emulated # Support legacy paths - symlink /storage/emulated/legacy /sdcard - symlink /storage/emulated/legacy /mnt/sdcard - symlink /storage/emulated/legacy /storage/sdcard0 + symlink /sdcard /mnt/sdcard + symlink /sdcard /storage/sdcard0 on early-boot # set RLIMIT_MEMLOCK to 64MB setrlimit 8 67108864 67108864 # Allow subsystem (modem etc) debugging write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug} - exec /system/bin/sh /init.qcom.early_boot.sh ${ro.board.platform} - exec /system/bin/sh /init.qcom.syspart_fixup.sh ${ro.board.platform} ${ro.serialno} + write /sys/module/pil_msa/parameters/pbl_mba_boot_timeout_ms ${persist.sys.mba_boot_timeout} + write /sys/module/pil_msa/parameters/modem_auth_timeout_ms ${persist.sys.modem_auth_timeout} + write /sys/module/peripheral_loader/parameters/proxy_timeout_ms ${persist.sys.pil_proxy_timeout} + write /sys/kernel/boot_adsp/boot 1 + chown root audio /sys/kernel/boot_adsp/boot + exec u:r:qti_init_shell:s0 -- /init.qcom.early_boot.sh on boot chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power @@ -69,8 +72,10 @@ on boot chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_btwrite chown system system /sys/module/sco/parameters/disable_esco chown bluetooth bluetooth /sys/module/hci_smd/parameters/hcismd_set + chown system system /sys/module/radio_iris_transport/parameters/fmsmd_set chmod 0660 /sys/module/bluetooth_power/parameters/power chmod 0660 /sys/module/hci_smd/parameters/hcismd_set + chmod 0660 /sys/module/radio_iris_transport/parameters/fmsmd_set chmod 0660 /sys/class/rfkill/rfkill0/state chmod 0660 /proc/bluetooth/sleep/proto chown bluetooth bluetooth /dev/ttyHS0 @@ -83,6 +88,9 @@ on boot chmod 0660 /dev/ttyHS2 chown bluetooth bluetooth /dev/ttyHS2 + chown bluetooth bluetooth /sys/class/rfkill/rfkill0/device/extldo + chmod 0660 /sys/class/rfkill/rfkill0/device/extldo + #Create QMUX deamon socket area mkdir /dev/socket/qmux_radio 0770 radio radio chmod 2770 /dev/socket/qmux_radio @@ -93,6 +101,12 @@ on boot mkdir /dev/socket/qmux_gps 0770 gps gps chmod 2770 /dev/socket/qmux_gps + mkdir /persist/drm 0770 system system + mkdir /persist/misc 0770 system system + + #Create NETMGR daemon socket area + mkdir /dev/socket/netmgr 0750 radio radio + setprop wifi.interface wlan0 # Define TCP buffer sizes for various networks @@ -102,10 +116,6 @@ on boot setprop ro.telephony.call_ring.multiple false - #Set SUID bit for usbhub - chmod 4755 /system/bin/usbhub - chmod 755 /system/bin/usbhub_init - #Remove SUID bit for iproute2 ip tool chmod 0755 /system/bin/ip @@ -115,6 +125,24 @@ on boot #For bridgemgr daemon to inform the USB driver of the correct transport chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport +# Define TCP buffer sizes for various networks +# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax, + setprop net.tcp.buffersize.default 4096,87380,524288,4096,16384,110208 + setprop net.tcp.buffersize.lte 2097152,4194304,8388608,262144,524288,1048576 + setprop net.tcp.buffersize.umts 4094,87380,110208,4096,16384,110208 + setprop net.tcp.buffersize.hspa 4094,87380,1220608,4096,16384,1220608 + setprop net.tcp.buffersize.hsupa 4094,87380,1220608,4096,16384,1220608 + setprop net.tcp.buffersize.hsdpa 4094,87380,1220608,4096,16384,1220608 + 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 net.tcp.buffersize.evdo 4094,87380,524288,4096,16384,262144 + +# Assign TCP buffer thresholds to be ceiling value of technology maximums +# Increased technology maximums should be reflected here. + write /proc/sys/net/core/rmem_max 8388608 + write /proc/sys/net/core/wmem_max 8388608 + #To allow interfaces to get v6 address when tethering is enabled write /proc/sys/net/ipv6/conf/rmnet0/accept_ra 2 write /proc/sys/net/ipv6/conf/rmnet1/accept_ra 2 @@ -145,19 +173,22 @@ on boot # an ack packet comes out of order write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1 - # NFC local data and nfcee xml storage - mkdir /data/nfc 0770 nfc nfc - mkdir /data/nfc/param 0770 nfc nfc - # Set the console loglevel to < KERN_INFO # Set the default message loglevel to KERN_INFO write /proc/sys/kernel/printk "6 6 1 7" + # Allow access for CCID command/response timeout configuration + chown system system /sys/module/ccid_bridge/parameters/bulk_msg_timeout + # msm specific files that need to be created on /data on post-fs-data + # Create directory for TZ Apps + mkdir /data/misc/qsee 0770 system system + # we will remap this as /mnt/sdcard with the sdcard fuse tool - mkdir /data/media 0770 media_rw media_rw - chown media_rw media_rw /data/media + mkdir /data/misc/camera 0770 camera camera + + mkdir /data/misc/ipa 0700 net_admin net_admin mkdir /data/misc/bluetooth 0770 bluetooth bluetooth @@ -172,12 +203,23 @@ on post-fs-data mkdir /data/connectivity 0771 system system chown system system /data/connectivity - mkdir /data/connectivity/nsrm 0771 system system - chown system system /data/connectivity/nsrm + # Create the directories used by DPM subsystem + mkdir /data/dpm 0771 system system + chown system system /data/dpm + + mkdir /data/dpm/nsrm 0771 system system + chown system system /data/dpm/nsrm # Create directory used by audio subsystem mkdir /data/misc/audio 0770 audio audio + # Create directory used by the DASH client + mkdir /data/misc/dash 0770 media audio + + # Create directory used by display clients + mkdir /data/misc/display 0770 system graphics + mkdir /persist/display 0770 system graphics + # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections # We chown/chmod /persist again so because mount is run as root + defaults chown system system /persist @@ -197,16 +239,13 @@ on post-fs-data mkdir /data/system 0775 system system #symlink /data/misc/wifi/wpa_supplicant /data/system/wpa_supplicant - #Create directories for gpsone_daemon services - mkdir /data/misc/gpsone_d 0770 system gps - - #Create directories for QuIPS - mkdir /data/misc/quipc 0770 gps system - #Create directories for Location services mkdir /data/misc/location 0770 gps gps mkdir /data/misc/location/mq 0770 gps gps mkdir /data/misc/location/xtwifi 0770 gps gps + mkdir /data/misc/location/gpsone_d 0770 system gps + mkdir /data/misc/location/quipc 0770 gps system + mkdir /data/misc/location/gsiff 0770 gps gps #Create directory from IMS services mkdir /data/shared 0755 @@ -223,30 +262,121 @@ on post-fs-data mkdir /data/time/ 0700 system system mkdir /data/audio/ 0770 media audio - # Enable the setgid bit on the directory - chmod 2770 /data/audio setprop vold.post_fs_data_done 1 #Create a folder for SRS to be able to create a usercfg file mkdir /data/data/media 0770 media media -# Export GPIO56 for fusion targets to enable/disable hub -service usbhub_init /system/bin/usbhub_init - class late_start - user root - disabled - oneshot + #Create folder for qlogd + mkdir /data/misc/qlogd 0664 + + #Create folder for mm-qcamera-daemon + mkdir /data/camera 0770 media camera + + #Create PERFD deamon related dirs + mkdir /data/system/perfd 0770 root system + chmod 2770 /data/system/perfd + mkdir /persist/drm 0770 system system + + # NFC local data and nfcee xml storage + mkdir /data/nfc 0770 nfc nfc + mkdir /data/nfc/param 0770 nfc nfc + + # Sensor + mkdir /persist/sensors 0770 system system + + #Create FM dir for patchdownloader + mkdir /data/misc/fm 0770 system system + chmod 0770 /data/misc/fm + + # RIDL data + mkdir /data/misc/SelfHost/ 0710 system shell + mkdir /data/misc/SelfHost/QCLogs/ 2750 system shell + mkdir /data/misc/SelfHost/QCLogs/temp/ 0700 system shell + mkdir /data/misc/SelfHost/storage/ 0700 system shell + mkdir /data/misc/SelfHost/Running/ 2750 system shell + mkdir /data/misc/SelfHost/socket/ 2770 system system + + # Mark the copy complete flag to not completed + write /data/misc/radio/copy_complete 0 + chown radio radio /data/misc/radio/copy_complete + chmod 0660 /data/misc/radio/copy_complete + + # File flags for prebuilt ril db file + write /data/misc/radio/prebuilt_db_support 1 + chown radio radio /data/misc/radio/prebuilt_db_support + chmod 0400 /data/misc/radio/prebuilt_db_support + write /data/misc/radio/db_check_done 0 + chown radio radio /data/misc/radio/db_check_done + chmod 0660 /data/misc/radio/db_check_done + +service perfd /system/vendor/bin/perfd + class main + user root + disabled + socket perfd seqpacket 0666 root system + +service qcomsysd /system/bin/qcom-system-daemon + class main + user root + group root qcom_diag + +service ssr_setup /system/bin/ssr_setup + oneshot + disabled + +service ss_ramdump /system/bin/subsystem_ramdump + class main + user system + group system + disabled + +on property:persist.sys.ssr.restart_level=* + start ssr_setup + +on property:persist.sys.ssr.enable_ramdumps=1 + write /sys/module/subsystem_restart/parameters/enable_ramdumps 1 + mkdir /data/ramdump 770 system system + start ss_ramdump + +on property:persist.sys.ssr.enable_ramdumps=0 + write /sys/module/subsystem_restart/parameters/enable_ramdumps 0 + +on property:sys.boot_completed=1 + write /dev/kmsg "Boot completed " on property:persist.radio.atfwd.start=false stop atfwd -on property:init.svc.surfaceflinger=stopped - stop ppd - stop hdmid +on property:radio.atfwd.start=false + stop atfwd + +service qcom-debug /system/bin/sh /system/etc/init.qcom.debug.sh + class core + user root + oneshot -on property:ro.board.platform=msm7630_fusion - start usbhub_init +# corefile limit and ETB enabling +on property:persist.debug.trace=1 + mkdir /data/core 0777 root root + write /proc/sys/kernel/core_pattern "/data/core/%E.%p.%e" + write /sys/devices/system/cpu/cpu1/online 1 + write /sys/devices/system/cpu/cpu2/online 1 + write /sys/devices/system/cpu/cpu3/online 1 + write /sys/bus/coresight/devices/coresight-etm0/enable 0 + write /sys/bus/coresight/devices/coresight-etm1/enable 0 + write /sys/bus/coresight/devices/coresight-etm2/enable 0 + write /sys/bus/coresight/devices/coresight-etm3/enable 0 + write /sys/bus/coresight/devices/coresight-etm0/reset 1 + write /sys/bus/coresight/devices/coresight-etm1/reset 1 + write /sys/bus/coresight/devices/coresight-etm2/reset 1 + write /sys/bus/coresight/devices/coresight-etm3/reset 1 + write /sys/bus/coresight/devices/coresight-etm0/enable 1 + write /sys/bus/coresight/devices/coresight-etm1/enable 1 + write /sys/bus/coresight/devices/coresight-etm2/enable 1 + write /sys/bus/coresight/devices/coresight-etm3/enable 1 + write /sys/module/coresight_event/parameters/event_abort_enable 1 on property:init.svc.wpa_supplicant=stopped stop dhcpcd @@ -270,6 +400,12 @@ on property:bluetooth.dun.status=stopped on property:ro.bluetooth.ftm_enabled=true start ftmd +on property:bluetooth.startbtsnoop=true + start btsnoop + +on property:bluetooth.startbtsnoop=false + stop btsnoop + service qcom-c_core-sh /system/bin/sh /init.qcom.class_core.sh class core user root @@ -280,23 +416,23 @@ service qcom-c_main-sh /system/bin/sh /init.class_main.sh user root oneshot -service ril-qmi /system/bin/sh /init.qcom.ril.sh - class main - user root - oneshot - on property:vold.decrypt=trigger_restart_framework start qcom-c_main-sh start config_bluetooth + start wcnss-service on property:persist.env.fastdorm.enabled=true setprop persist.radio.data_no_toggle 1 service cnd /system/bin/cnd - class late_start + class main socket cnd stream 660 root inet -service irsc_util /system/bin/logwrapper /system/bin/irsc_util "/etc/sec_config" +service dpmd /system/bin/dpmd + class late_start + socket dpmd stream 660 root system + +service irsc_util /system/bin/irsc_util "/etc/sec_config" class main user root oneshot @@ -306,27 +442,25 @@ service rmt_storage /system/bin/rmt_storage user root disabled -on property:ro.boot.emmc=true - start rmt_storage - service rfs_access /system/bin/rfs_access class core - user system + user root group system net_raw -on property:ro.boot.emmc=true - start rfs_access +service tftp_server /system/bin/tftp_server + class main + user root -on property:bluetooth.start_hci=true +on property:wc_transport.start_hci=true start start_hci_filter -on property:bluetooth.start_hci=false +on property:wc_transport.start_hci=false stop start_hci_filter service start_hci_filter /system/bin/wcnss_filter class late_start - user bluetooth - group bluetooth + user root + group bluetooth qcom_diag disabled service config_bluetooth /system/bin/sh /system/etc/init.qcom.bt.sh "onboot" @@ -368,6 +502,13 @@ service bt-sap /system/bin/sapd 15 disabled oneshot +service btsnoop /system/bin/btsnoop + user bluetooth + group bluetooth net_bt_admin sdcard_rw sdcard_r media_rw + class late_start + disabled + oneshot + service ftmd /system/bin/logwrapper /system/bin/ftmdaemon class late_start user root @@ -381,10 +522,10 @@ service bridgemgrd /system/bin/bridgemgrd group radio qcom_diag disabled -service port-bridge /system/bin/port-bridge /dev/smd0 /dev/ttyGS0 - class late_start - user system - group system inet +service port-bridge /system/bin/port-bridge /dev/mhi_pipe_32 /dev/ttyGS0 + class main + user radio system + group radio system inet disabled service qmiproxy /system/bin/qmiproxy @@ -396,14 +537,33 @@ service qmiproxy /system/bin/qmiproxy # QMUX must be in multiple groups to support external process connections service qmuxd /system/bin/qmuxd class main - user radio - group radio audio bluetooth gps qcom_diag + user root + group radio audio bluetooth gps nfc qcom_diag disabled service netmgrd /system/bin/netmgrd class main disabled +service ipacm-diag /system/bin/ipacm-diag + class main + user system + socket ipacm_log_file dgram 660 system net_admin + group net_admin qcom_diag + disabled + +service ipacm /system/bin/ipacm + class main + user net_admin + group net_admin inet + disabled + +service qti /system/vendor/bin/qti + class main + user radio + group radio net_raw qcom_diag usb net_admin + disabled + service sensors /system/bin/sensors.qcom class late_start user root @@ -449,7 +609,7 @@ service p2p_supplicant /system/bin/wpa_supplicant \ -I/system/etc/wifi/p2p_supplicant_overlay.conf -N \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ - -O/data/misc/wifi/sockets -puse_p2p_group_interface=1 -dddd \ + -O/data/misc/wifi/sockets -puse_p2p_group_interface=1 -dd \ -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT @@ -463,7 +623,7 @@ service p2p_supplicant /system/bin/wpa_supplicant \ service wpa_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ - -O/data/misc/wifi/sockets -dddd \ + -O/data/misc/wifi/sockets -dd \ -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT @@ -494,12 +654,37 @@ service iprenew_p2p /system/bin/dhcpcd -n disabled oneshot -service ptt_socket_app /system/bin/ptt_socket_app +service ptt_socket_app /system/bin/ptt_socket_app -d class main + user root + group root + oneshot + +service ptt_ffbm /system/bin/ptt_socket_app -f -d + user root + group root + disabled + oneshot + +service wifi_ftmd /system/bin/wifi_ftmd user system - group system + group system inet net_admin + socket wififtmd_server dgram 0660 system system + disabled oneshot +on property:wifi.ftmd.load=true + insmod /system/lib/modules/wlan.ko con_mode=5 + +service cnss_diag /system/bin/cnss_diag --q + class main + user root + group root + oneshot + +service cnss-daemon /system/bin/cnss-daemon -n -l + class late_start + service dhcpcd_bt-pan /system/bin/dhcpcd -BKLG class late_start disabled @@ -530,52 +715,15 @@ service dhcpcd_bnep4 /system/bin/dhcpcd -BKLG disabled oneshot -service gpsone_daemon /system/bin/gpsone_daemon - class late_start - user gps - group gps inet net_raw - disabled - -service quipc_igsn /system/bin/quipc_igsn - class late_start - user gps - group inet gps qcom_diag - disabled - -service quipc_main /system/bin/quipc_main - class late_start - user gps - group gps net_admin wifi inet qcom_diag - disabled - -service location_mq /system/bin/location-mq +service loc_launcher /system/bin/loc_launcher + #loc_launcher will start as root and set its uid to gps class late_start - user gps - group gps - disabled - -service xtwifi_inet /system/bin/xtwifi-inet-agent - class late_start - user gps - group inet gps - disabled - -service xtwifi_client /system/bin/xtwifi-client - class late_start - user gps - group net_admin wifi inet gps - disabled - -service lowi-server /system/bin/lowi-server - class late_start - user gps - group gps net_admin wifi inet qcom_diag - disabled + group gps inet net_raw qcom_diag net_admin wifi service fm_dl /system/bin/sh /system/etc/init.qcom.fm.sh class late_start - user root - group system fm_radio + user system + group system disabled oneshot @@ -583,10 +731,6 @@ on property:crypto.driver.load=1 insmod /system/lib/modules/qce.ko insmod /system/lib/modules/qcedev.ko -on property:crypto.driver.load=0 - exec /system/bin/rmmod qcedev.ko - exec /system/bin/rmmod qce.ko - service drmdiag /system/bin/drmdiagapp class late_start user root @@ -610,6 +754,13 @@ service qcom-post-boot /system/bin/sh /system/etc/init.qcom.post_boot.sh disabled oneshot +service qti-testscripts /system/bin/sh /system/etc/init.qcom.testscripts.sh + class late_start + user root + disabled + oneshot + seclabel u:r:qti-testscripts:s0 + service wifi-sdio-on /system/bin/sh /system/etc/init.qcom.sdio.sh class late_start group wifi inet @@ -622,27 +773,25 @@ service wifi-crda /system/bin/sh /system/etc/init.crda.sh disabled oneshot - -on property:sys.boot_completed=1 - start qcom-post-boot +service config-zram /system/bin/sh /system/etc/init.qcom.zram.sh + class late_start + user root + disabled + oneshot service atfwd /system/bin/ATFWD-daemon class late_start user system - group system radio - -service hdmid /system/bin/hdmid - class late_start - socket hdmid stream 0660 root system graphics disabled + group system radio -service ppd /system/bin/mm-pp-daemon - class late_start - user system - socket pps stream 0660 system system graphics - group system graphics +on property:sys.boot_completed=1 + start qcom-post-boot + start qti-testscripts + start config-zram + start atfwd -service hostapd /system/bin/hostapd -dddd /data/hostapd/hostapd.conf +service hostapd /system/bin/hostapd -dd /data/hostapd/hostapd.conf class late_start user root group root @@ -675,21 +824,39 @@ service battery_monitor /system/bin/battery_monitor group system disabled -service ril-daemon1 /system/bin/rild -c 1 +service ril-daemon2 /system/bin/rild -c 2 class main - socket rild1 stream 660 root radio - socket rild-debug1 stream 660 radio system + socket rild2 stream 660 root radio + socket rild-debug2 stream 660 radio system user root disabled - group radio cache inet misc audio sdcard_r sdcard_rw diag qcom_diag log + group radio cache inet misc audio sdcard_r sdcard_rw qcom_diag log -service ril-daemon2 /system/bin/rild -c 2 +service ril-daemon3 /system/bin/rild -c 3 class main - socket rild2 stream 660 root radio - socket rild-debug2 stream 660 radio system + socket rild3 stream 660 root radio + socket rild-debug3 stream 660 radio system user root disabled - group radio cache inet misc audio sdcard_r sdcard_rw diag qcom_diag log + group radio cache inet misc audio sdcard_r sdcard_rw qcom_diag log + +service usb_uicc_enable /system/bin/sh /system/etc/init.qcom.uicc.sh + class late_start + user root + disabled + oneshot + +service usb_uicc_daemon /system/bin/usb_uicc_client + class main + user system + group system log net_raw + oneshot + +on property:sys.usb_uicc.enabled=1 + start usb_uicc_enable + +on property:sys.usb_uicc.enabled=0 + start usb_uicc_enable service profiler_daemon /system/bin/profiler_daemon class late_start @@ -697,16 +864,20 @@ service profiler_daemon /system/bin/profiler_daemon group root disabled -service sdcard /system/bin/sdcard /data/media /mnt/shell/emulated 1023 1023 +service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1 + class late_start + disabled + +service fuse_uicc0 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/uicc0 /storage/uicc0 class late_start -service fuse_sdcard /system/bin/sdcard -u 1023 -g 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1 +service fuse_uicc1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/uicc1 /storage/uicc1 class late_start + disabled -# Binding fuse mount point to /storage/emulated/legacy -on property:init.svc.sdcard=running - wait /mnt/shell/emulated/0 - mount none /mnt/shell/emulated/0 /storage/emulated/legacy bind +service fuse_usbotg /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/usbotg /storage/usbotg + class late_start + disabled service hcidump /system/bin/sh /system/etc/hcidump.sh user bluetooth @@ -716,29 +887,14 @@ service hcidump /system/bin/sh /system/etc/hcidump.sh service charger /charger class charger + group graphics + seclabel u:r:healthd:s0 service ssr_diag /system/bin/ssr_diag class late_start user system group system - -# SSR setting -on property:persist.sys.ssr.restart_level=* - exec /system/bin/sh /init.qcom.ssr.sh ${persist.sys.ssr.restart_level} - -# Define fastmmi -service fastmmi /system/bin/mmi - user root - group root - disabled - -service fastmmisrv /system/bin/sh /init.qcom.factory.sh - user root disabled - oneshot - -on ffbm - start fastmmisrv service hvdcp /system/bin/hvdcp class core @@ -752,20 +908,106 @@ on property:persist.usb.hvdcp.detect=false stop hvdcp service charger_monitor /system/bin/charger_monitor - user system - group system + user root + group root disabled +service qbcharger /charger -m 1 + disabled + oneshot + +on property:sys.qbcharger.enable=true + write /sys/power/wake_lock QuickBoot + start qbcharger + +on property:sys.qbcharger.enable=false + write /sys/power/wake_unlock QuickBoot + stop qbcharger + service diag_mdlog_start /system/bin/diag_mdlog class late_start - user sdcard_rw + user shell group system qcom_diag sdcard_rw sdcard_r media_rw disabled oneshot service diag_mdlog_stop /system/bin/diag_mdlog -k class late_start - user sdcard_rw + user shell group system qcom_diag sdcard_rw sdcard_r media_rw disabled oneshot + +service qlogd /system/xbin/qlogd + socket qlogd stream 0662 system system + class main + disabled +on property:persist.sys.qlogd=1 + start qlogd +on property:persist.sys.qlogd=0 + stop qlogd + +service rootagent /system/bin/sh /system/etc/init.qcom.rootagent.sh + disabled + oneshot +on property:persist.sys.rootagent=1 + start rootagent +on property:persist.sys.rootagent=0 + stop rootagent + +service bms-sh /system/bin/sh /init.qcom.bms.sh + class main + user root + oneshot + +service vm_bms /system/bin/vm_bms + user root + group root + disabled + +service msm_irqbalance /system/bin/msm_irqbalance -f /system/vendor/etc/msm_irqbalance.conf + class core + user root + group root + disabled + +service wfdservice /system/bin/wfdservice + class main + user system + group graphics audio camera inet net_bt net_bt_admin net_bt_stack drmrpc bluetooth media_rw media + disabled + oneshot + +on property:sys.wfdservice=enable + start wfdservice + +on property:sys.wfdservice=disable + stop wfdservice + +service RIDL /system/vendor/bin/RIDLClient.exe + class late_start + oneshot + user root + group root inet log sdcard_r sdcard_rw qcom_diag radio net_raw + # removed for security team - misc bluetooth gps wifi diag media_rw + # limited to 12 groups. Unused: audio usb net_bt_admin net_bt_stac net_admin + +# bugreport is triggered by developer options +service bugreport /system/bin/dumpstate -d -p -B \ + -o /data/data/com.android.shell/files/bugreports/bugreport + class main + disabled + oneshot + +service fidodaemon /system/vendor/bin/fidodaemon + class late_start + user system + group system + +#add poweroffhandler +service poweroffhandler /system/bin/poweroffhandler + class core + user media + group graphics audio + disabled + oneshot diff --git a/rootdir/etc/init.qcom.sh b/rootdir/etc/init.qcom.sh index f0ff33c51..e535eeaf8 100644 --- a/rootdir/etc/init.qcom.sh +++ b/rootdir/etc/init.qcom.sh @@ -1,5 +1,5 @@ #!/system/bin/sh -# Copyright (c) 2009-2013, The Linux Foundation. All rights reserved. +# Copyright (c) 2009-2014, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -38,20 +38,13 @@ fi start_sensors() { if [ -c /dev/msm_dsps -o -c /dev/sensors ]; then - mkdir -p /data/system/sensors - touch /data/system/sensors/settings - chmod -h 775 /data/system/sensors - chmod -h 664 /data/system/sensors/settings - chown -h system /data/system/sensors/settings + chmod -h 775 /persist/sensors + chmod -h 664 /persist/sensors/sensors_settings + chown -h system.root /persist/sensors/sensors_settings mkdir -p /data/misc/sensors chmod -h 775 /data/misc/sensors - if [ ! -s /data/system/sensors/settings ]; then - # If the settings file is empty, enable sensors HAL - # Otherwise leave the file with it's current contents - echo 1 > /data/system/sensors/settings - fi start sensors fi } @@ -64,11 +57,11 @@ start_battery_monitor() chown -h root.system /sys/bus/spmi/devices/qpnp-bms-*/fcc_data chown -h root.system /sys/bus/spmi/devices/qpnp-bms-*/fcc_temp chown -h root.system /sys/bus/spmi/devices/qpnp-bms-*/fcc_chgcyl - chmod -h 0660 /sys/module/qpnp_bms/parameters/* - chmod -h 0660 /sys/module/pm8921_bms/parameters/* + chmod 0660 /sys/module/qpnp_bms/parameters/* + chmod 0660 /sys/module/pm8921_bms/parameters/* mkdir -p /data/bms chown -h root.system /data/bms - chmod -h 0770 /data/bms + chmod 0770 /data/bms start battery_monitor fi } @@ -79,89 +72,51 @@ start_charger_monitor() chown -h root.system /sys/module/qpnp_charger/parameters/* chown -h root.system /sys/class/power_supply/battery/input_current_max chown -h root.system /sys/class/power_supply/battery/input_current_trim + chown -h root.system /sys/class/power_supply/battery/input_current_settled chown -h root.system /sys/class/power_supply/battery/voltage_min - chmod -h 0664 /sys/class/power_supply/battery/input_current_max - chmod -h 0664 /sys/class/power_supply/battery/input_current_trim - chmod -h 0664 /sys/class/power_supply/battery/voltage_min - chmod -h 0664 /sys/module/qpnp_charger/parameters/charger_monitor + chmod 0664 /sys/class/power_supply/battery/input_current_max + chmod 0664 /sys/class/power_supply/battery/input_current_trim + chmod 0664 /sys/class/power_supply/battery/input_current_settled + chmod 0664 /sys/class/power_supply/battery/voltage_min + chmod 0664 /sys/module/qpnp_charger/parameters/charger_monitor start charger_monitor fi } -baseband=`getprop ro.baseband` -izat_premium_enablement=`getprop ro.qc.sdk.izat.premium_enabled` -izat_service_mask=`getprop ro.qc.sdk.izat.service_mask` +start_msm_irqbalance_8939() +{ + if [ -f /system/bin/msm_irqbalance ]; then + case "$platformid" in + "239" | "241" | "263" | "268" | "269" | "270" | "271") + start msm_irqbalance;; + esac + fi +} -# -# Suppress default route installation during RA for IPV6; user space will take -# care of this -# exception default ifc -for file in /proc/sys/net/ipv6/conf/* -do - echo 0 > $file/accept_ra_defrtr -done -echo 1 > /proc/sys/net/ipv6/conf/default/accept_ra_defrtr +start_msm_irqbalance() +{ + if [ -f /system/bin/msm_irqbalance ]; then + start msm_irqbalance + fi +} -# -# Start gpsone_daemon for SVLTE Type I & II devices -# +start_copying_prebuilt_qcril_db() +{ + if [ -f /system/vendor/qcril.db -a ! -f /data/misc/radio/qcril.db ]; then + cp /system/vendor/qcril.db /data/misc/radio/qcril.db + chown -h radio.radio /data/misc/radio/qcril.db + fi +} + +baseband=`getprop ro.baseband` +echo 1 > /proc/sys/net/ipv6/conf/default/accept_ra_defrtr -# platform id 126 is for MSM8974 -case "$platformid" in - "126") - start gpsone_daemon -esac -case "$target" in - "msm7630_fusion") - start gpsone_daemon -esac case "$baseband" in "svlte2a") - start gpsone_daemon start bridgemgrd ;; - "sglte" | "sglte2") - start gpsone_daemon - ;; esac -let "izat_service_gtp_wifi=$izat_service_mask & 2#1" -let "izat_service_gtp_wwan_lite=($izat_service_mask & 2#10)>>1" -let "izat_service_pip=($izat_service_mask & 2#100)>>2" - -if [ "$izat_premium_enablement" -ne 1 ]; then - if [ "$izat_service_gtp_wifi" -ne 0 ]; then -# GTP WIFI bit shall be masked by the premium service flag - let "izat_service_gtp_wifi=0" - fi -fi - -if [ "$izat_service_gtp_wwan_lite" -ne 0 ] || - [ "$izat_service_gtp_wifi" -ne 0 ] || - [ "$izat_service_pip" -ne 0 ]; then -# OS Agent would also be started under the same condition - start location_mq -fi - -if [ "$izat_service_gtp_wwan_lite" -ne 0 ] || - [ "$izat_service_gtp_wifi" -ne 0 ]; then -# start GTP services shared by WiFi and WWAN Lite - start xtwifi_inet - start xtwifi_client -fi - -if [ "$izat_service_gtp_wifi" -ne 0 ] || - [ "$izat_service_pip" -ne 0 ]; then -# advanced WiFi scan service shared by WiFi and PIP - start lowi-server -fi - -if [ "$izat_service_pip" -ne 0 ]; then -# PIP services - start quipc_main - start quipc_igsn -fi - start_sensors case "$target" in @@ -220,10 +175,86 @@ case "$target" in esac start_charger_monitor ;; + "apq8084") + platformvalue=`cat /sys/devices/soc0/hw_platform` + case "$platformvalue" in + "Fluid") + start profiler_daemon;; + "Liquid") + start profiler_daemon;; + esac + ;; "msm8226") start_charger_monitor ;; "msm8610") start_charger_monitor ;; + "msm8916") + start_msm_irqbalance_8939 + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + fi + case "$soc_id" in + "239") + case "$hw_platform" in + "Surf") + case "$platform_subtype_id" in + "1" | "2") + setprop qemu.hw.mainkeys 0 + ;; + esac + ;; + "MTP") + case "$platform_subtype_id" in + "3") + setprop qemu.hw.mainkeys 0 + ;; + esac + ;; + esac + ;; + esac + ;; + "msm8994") + start_msm_irqbalance + ;; + "msm8909") + ;; esac + +bootmode=`getprop ro.bootmode` +emmc_boot=`getprop ro.boot.emmc` +case "$emmc_boot" + in "true") + if [ "$bootmode" != "charger" ]; then # start rmt_storage and rfs_access + start rmt_storage + start rfs_access + fi + ;; +esac + +# +# Copy qcril.db if needed for RIL +# +start_copying_prebuilt_qcril_db +echo 1 > /data/misc/radio/db_check_done + +# +# Make modem config folder and copy firmware config to that folder for RIL +# +rm -rf /data/misc/radio/modem_config +mkdir /data/misc/radio/modem_config +chmod 770 /data/misc/radio/modem_config +cp -r /firmware/image/modem_pr/mbn_ota/* /data/misc/radio/modem_config +chown -hR radio.radio /data/misc/radio/modem_config +echo 1 > /data/misc/radio/copy_complete diff --git a/rootdir/etc/init.qcom.syspart_fixup.sh b/rootdir/etc/init.qcom.syspart_fixup.sh index c5e2ba56b..661b635aa 100755 --- a/rootdir/etc/init.qcom.syspart_fixup.sh +++ b/rootdir/etc/init.qcom.syspart_fixup.sh @@ -70,11 +70,6 @@ if [ -f /system/etc/init.qcom.sensor.sh ]; then /system/bin/sh /system/etc/init.qcom.sensor.sh fi -# Run usf script -if [ -f /system/etc/usf_settings.sh ]; then - /system/bin/sh /system/etc/usf_settings.sh -fi - touch /system/etc/boot_fixup if $mount_needed ;then diff --git a/rootdir/etc/init.qcom.testscripts.sh b/rootdir/etc/init.qcom.testscripts.sh new file mode 100644 index 000000000..01b8c9c18 --- /dev/null +++ b/rootdir/etc/init.qcom.testscripts.sh @@ -0,0 +1,33 @@ +#!/system/bin/sh +# Copyright (c) 2015, The Linux Foundation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of The Linux Foundation nor +# the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# This is the file for test teams to trigger their test setup. +# +# Sample command: /system/bin/sh /sdcard/command.sh +# All the output files will be created under root privilege. Please use +# "adb root" before pulling the generated files. diff --git a/rootdir/etc/init.qcom.uicc.sh b/rootdir/etc/init.qcom.uicc.sh new file mode 100644 index 000000000..e226c0d46 --- /dev/null +++ b/rootdir/etc/init.qcom.uicc.sh @@ -0,0 +1,115 @@ +#!/system/bin/sh +# Copyright (c) 2014, The Linux Foundation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of The Linux Foundation nor +# the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +target=`getprop ro.board.platform` +action=`getprop sys.usb_uicc.enabled` + +if [ -f /sys/devices/soc0/soc_id ]; then + soc_hwid=`cat /sys/devices/soc0/soc_id` +else + soc_hwid=`cat /sys/devices/system/soc/soc0/id` +fi + +# No path is set up at this point so we have to do it here. +PATH=/sbin:/system/sbin:/system/bin:/system/xbin +export PATH + +uicc_insert() +{ + case $target in + "msm8916") + if [ $soc_hwid == "239" ] || [ $soc_hwid == "268" ] || [ $soc_hwid == "269" ] || [ $soc_hwid == "270" ] || [ $soc_hwid == "271" ]; then + echo Y > /sys/module/ehci_msm_uicc/parameters/uicc_card_present + echo 79c0000.qcom,ehci-host > /sys/bus/platform/drivers/msm_ehci_uicc/bind + elif [ $soc_hwid == "206" ]; then + echo Y > /sys/module/ice40_hcd/parameters/uicc_card_present + echo spi0.0 > /sys/bus/spi/drivers/ice40_spi/bind + else + echo "The TARGET ID is $target hw $soc_hwid" + fi + ;; + "msm8610") + insmod /system/lib/modules/ice40-hcd.ko + ;; + "msm8226") + echo 1 > /sys/bus/platform/devices/msm_smsc_hub/enable + ;; + "msm8974") + echo Y > /sys/module/ehci_hcd/parameters/uicc_card_present + echo msm_ehci_host > /sys/bus/platform/drivers/msm_ehci_host/bind + ;; + *) + echo "USB_UICC invalid target when insert uicc!" + ;; + esac +} + +uicc_remove() +{ + case $target in + "msm8916") + if [ $soc_hwid == "239" ] || [ $soc_hwid == "268" ] || [ $soc_hwid == "269" ] || [ $soc_hwid == "270" ] || [ $soc_hwid == "271" ]; then + echo 79c0000.qcom,ehci-host > /sys/bus/platform/drivers/msm_ehci_uicc/unbind + echo N > /sys/module/ehci_msm_uicc/parameters/uicc_card_present + elif [ $soc_hwid == "206" ]; then + echo spi0.0 > /sys/bus/spi/drivers/ice40_spi/unbind + echo N > /sys/module/ice40_hcd/parameters/uicc_card_present + else + echo "The TARGET ID is $target hw $soc_hwid" + fi + ;; + "msm8610") + rmmod /system/lib/modules/ice40-hcd.ko + ;; + "msm8226") + echo 0 > /sys/bus/platform/devices/msm_smsc_hub/enable + ;; + "msm8974") + echo msm_ehci_host > /sys/bus/platform/drivers/msm_ehci_host/unbind + echo N > /sys/module/ehci_hcd/parameters/uicc_card_present + ;; + *) + echo "USB_UICC invalid target when remove uicc!" + ;; + esac +} + +case $action in +"1") + uicc_insert + setprop sys.usb_uicc.loading 1 + ;; +"0") + uicc_remove + setprop sys.usb_uicc.loading 1 + ;; +*) + echo "USB_UICC invalid action for uicc operation!" + ;; +esac + diff --git a/rootdir/etc/init.qcom.usb.rc b/rootdir/etc/init.qcom.usb.rc index 29d3cd32a..0c18f8560 100644 --- a/rootdir/etc/init.qcom.usb.rc +++ b/rootdir/etc/init.qcom.usb.rc @@ -27,6 +27,7 @@ on init write /sys/class/android_usb/android0/f_rndis/wceis 1 + write /sys/class/android_usb/android0/iSerial ${ro.serialno} on charger setprop sys.usb.config mass_storage @@ -38,7 +39,7 @@ on fs write /sys/class/android_usb/android0/f_ffs/aliases adb service qcom-usb-sh /system/bin/sh /init.qcom.usb.sh - class core + class main user root oneshot @@ -91,7 +92,30 @@ service qcom-usb-sh /system/bin/sh /init.qcom.usb.sh # Only required for transport type hsic, optional for other transport types. # USB compositions +on property:sys.usb.config=diag,serial_tty,serial_smd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9002 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports tty,smd + write /sys/class/android_usb/android0/functions diag,serial + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_tty,serial_smd,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9020 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd,tty + write /sys/class/android_usb/android0/functions diag,adb,serial + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + on property:sys.usb.config=diag,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 901D @@ -101,7 +125,65 @@ on property:sys.usb.config=diag,adb start adbd setprop sys.usb.state ${sys.usb.config} +on property:sys.usb.config=diag + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 900E + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/functions diag + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_smd,rmnet_bam,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9091 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/f_rmnet/transports smd,bam + write /sys/class/android_usb/android0/functions diag,serial,rmnet,adb + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_smd,rmnet_qti_bam,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9091 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam + write /sys/class/android_usb/android0/functions diag,serial,rmnet,adb + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_smd,rmnet_bam + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9092 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/f_rmnet/transports smd,bam + write /sys/class/android_usb/android0/functions diag,serial,rmnet + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_smd,rmnet_qti_bam + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9092 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam + write /sys/class/android_usb/android0/functions diag,serial,rmnet + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9025 @@ -114,6 +196,7 @@ on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,acm_smd,acm_tty,rmnet_bam,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 903D @@ -148,6 +231,7 @@ on property:sys.usb.config=diag,acm_smd,acm_tty,rmnet_bam,mass_storage setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,diag_mdm,serial_sdio,serial_smd,rmnet_smd_sdio,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9037 @@ -159,6 +243,7 @@ on property:sys.usb.config=diag,diag_mdm,serial_sdio,serial_smd,rmnet_smd_sdio,m setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,diag_mdm,acm_sdio,acm_smd,rmnet_smd_sdio,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 903B @@ -190,6 +275,7 @@ on property:sys.usb.config=diag,diag_mdm,acm_sdio,acm_smd,rmnet_smd_sdio,mass_st setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,diag_mdm,serial_sdio,serial_tty,rmnet_sdio,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9031 @@ -201,6 +287,7 @@ on property:sys.usb.config=diag,diag_mdm,serial_sdio,serial_tty,rmnet_sdio,mass_ setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,diag_mdm,acm_sdio,acm_tty,rmnet_sdio,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 903B @@ -232,6 +319,7 @@ on property:sys.usb.config=diag,diag_mdm,acm_sdio,acm_tty,rmnet_sdio,mass_storag setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,serial_tty,serial_tty,rmnet_smd,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9025 @@ -244,6 +332,7 @@ on property:sys.usb.config=diag,serial_tty,serial_tty,rmnet_smd,mass_storage,adb setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,acm_tty,acm_tty,rmnet_smd,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 903D @@ -277,6 +366,7 @@ on property:sys.usb.config=diag,acm_tty,acm_tty,rmnet_smd,mass_storage setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_smd,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9025 @@ -288,6 +378,7 @@ on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_smd,mass_storage,adb setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,acm_smd,acm_tty,rmnet_smd,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 903D @@ -319,8 +410,58 @@ on property:sys.usb.config=diag,acm_smd,acm_tty,rmnet_smd,mass_storage write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} +# RmNet using USB BAM to IPA BAM +on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_ipa,mass_storage,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9025 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd,tty + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa + write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_ipa,mass_storage + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9026 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd,tty + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa + write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_smd,rmnet_ipa,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9091 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa + write /sys/class/android_usb/android0/functions diag,serial,rmnet,adb + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_smd,rmnet_ipa + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9092 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa + write /sys/class/android_usb/android0/functions diag,serial,rmnet + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + # Fusion 3 composition on property:sys.usb.config=diag,serial_hsic,serial_tty,rmnet_hsic,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9025 @@ -330,12 +471,17 @@ on property:sys.usb.config=diag,serial_hsic,serial_tty,rmnet_hsic,mass_storage,a write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage + write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384 + write /sys/module/mdm_bridge/parameters/max_rx_urbs 20 + write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384 + write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20 write /sys/class/android_usb/android0/enable 1 start adbd setprop sys.usb.state ${sys.usb.config} # Fusion 3 composition with diag_mdm and adb on property:sys.usb.config=diag,diag_mdm,serial_hsic,serial_tty,rmnet_hsic,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9031 @@ -345,6 +491,10 @@ on property:sys.usb.config=diag,diag_mdm,serial_hsic,serial_tty,rmnet_hsic,mass_ write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage + write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384 + write /sys/module/mdm_bridge/parameters/max_rx_urbs 20 + write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384 + write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20 write /sys/class/android_usb/android0/enable 1 start adbd setprop sys.usb.state ${sys.usb.config} @@ -360,11 +510,16 @@ on property:sys.usb.config=diag,diag_mdm,serial_hsic,serial_tty,rmnet_hsic,mass_ write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage + write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384 + write /sys/module/mdm_bridge/parameters/max_rx_urbs 20 + write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384 + write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20 write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} # Fusion 3 DSDA composition with adb on property:sys.usb.config=diag,diag_mdm,diag_qsc,serial_hsic,serial_hsuart,rmnet_hsic,rmnet_hsuart,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9065 @@ -374,6 +529,10 @@ on property:sys.usb.config=diag,diag_mdm,diag_qsc,serial_hsic,serial_hsuart,rmne write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic,hsuart,hsuart write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic,rmnet_hsuart write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage + write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384 + write /sys/module/mdm_bridge/parameters/max_rx_urbs 20 + write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384 + write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20 write /sys/class/android_usb/android0/enable 1 start adbd setprop sys.usb.state ${sys.usb.config} @@ -389,11 +548,16 @@ on property:sys.usb.config=diag,diag_mdm,diag_qsc,serial_hsic,serial_hsuart,rmne write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic,hsuart,hsuart write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic,rmnet_hsuart write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage + write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384 + write /sys/module/mdm_bridge/parameters/max_rx_urbs 20 + write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384 + write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20 write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} # Fusion 3 DSDA2 composition with adb on property:sys.usb.config=diag,diag_mdm,diag_mdm2,serial_hsic,serial_hsusb,rmnet_hsic,rmnet_hsusb,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9065 @@ -403,6 +567,10 @@ on property:sys.usb.config=diag,diag_mdm,diag_mdm2,serial_hsic,serial_hsusb,rmne write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic,hsic,hsic write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic,rmnet_hsusb write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage + write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384 + write /sys/module/mdm_bridge/parameters/max_rx_urbs 20 + write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384 + write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20 write /sys/class/android_usb/android0/enable 1 start adbd setprop sys.usb.state ${sys.usb.config} @@ -418,11 +586,74 @@ on property:sys.usb.config=diag,diag_mdm,diag_mdm2,serial_hsic,serial_hsusb,rmne write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic,hsic,hsic write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic,rmnet_hsusb write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage + write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384 + write /sys/module/mdm_bridge/parameters/max_rx_urbs 20 + write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384 + write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20 + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +# Fusion PCIe composition with diag_mdm and adb +# Serial & RmNet bridged in userspace with tty and qti/ether +on property:sys.usb.config=diag,diag_mdm,serial_tty,rmnet_qti_ether,mass_storage,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9035 + write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm + write /sys/class/android_usb/android0/f_serial/transports tty + write /sys/class/android_usb/android0/f_rmnet/transports qti,ether + write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +# Fusion PCIe composition with diag_mdm +# Serial & RmNet bridged in userspace with tty and qti/ether +on property:sys.usb.config=diag,diag_mdm,serial_hsic,rmnet_hsic,mass_storage + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9036 + write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm + write /sys/class/android_usb/android0/f_serial/transports tty + write /sys/class/android_usb/android0/f_rmnet/transports qti,ether + write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +# Fusion HSIC/PCIe Hybrid composition with diag_mdm and adb +# RmNet is bridged over PCIe using qti,ether ctrl/data transports +on property:sys.usb.config=diag,diag_mdm,serial_hsic,rmnet_qti_ether,mass_storage,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9035 + write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm + write /sys/class/android_usb/android0/f_serial/transports hsic + write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic + write /sys/class/android_usb/android0/f_rmnet/transports qti,ether + write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +# Fusion HSIC/PCIe Hybrid composition with diag_mdm +# RmNet is bridged over PCIe using qti,ether ctrl/data transports +on property:sys.usb.config=diag,diag_mdm,serial_hsic,rmnet_hsic,mass_storage + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9036 + write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm + write /sys/class/android_usb/android0/f_serial/transports hsic + write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic + write /sys/class/android_usb/android0/f_rmnet/transports qti,ether + write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} # Fusion 2.2 composition with diag_qsc and adb on property:sys.usb.config=diag,diag_qsc,serial_smd,serial_tty,serial_hsuart,rmnet_hsuart,mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9053 @@ -446,22 +677,32 @@ on property:sys.usb.config=diag,diag_qsc,serial_smd,serial_tty,serial_hsuart,rmn write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} +on property:sys.usb.tethering=true + write /sys/class/net/rndis0/queues/rx-0/rps_cpus ${sys.usb.rps_mask} + on property:sys.usb.config=rndis + setprop sys.usb.config rndis,${persist.sys.usb.config.extra} + +on property:sys.usb.config=rndis,none write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct F00E write /sys/class/android_usb/android0/functions rndis write /sys/class/android_usb/android0/enable 1 - setprop sys.usb.state ${sys.usb.config} + setprop sys.usb.state rndis on property:sys.usb.config=rndis,adb + setprop sys.usb.config rndis,${persist.sys.usb.config.extra},adb + +on property:sys.usb.config=rndis,none,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9024 write /sys/class/android_usb/android0/functions rndis,adb write /sys/class/android_usb/android0/enable 1 start adbd - setprop sys.usb.state ${sys.usb.config} + setprop sys.usb.state rndis,adb on property:sys.usb.config=rndis,diag write /sys/class/android_usb/android0/enable 0 @@ -470,9 +711,10 @@ on property:sys.usb.config=rndis,diag write /sys/class/android_usb/android0/f_diag/clients diag write /sys/class/android_usb/android0/functions rndis,diag write /sys/class/android_usb/android0/enable 1 - setprop sys.usb.state ${sys.usb.config} + setprop sys.usb.state rndis on property:sys.usb.config=rndis,diag,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 902D @@ -480,7 +722,49 @@ on property:sys.usb.config=rndis,diag,adb write /sys/class/android_usb/android0/functions rndis,diag,adb write /sys/class/android_usb/android0/enable 1 start adbd - setprop sys.usb.state ${sys.usb.config} + setprop sys.usb.state rndis,adb + +on property:sys.usb.config=rndis,serial_smd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 90B3 + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/functions rndis,serial + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state rndis + +on property:sys.usb.config=rndis,serial_smd,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 90B4 + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/functions rndis,serial,adb + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state rndis,adb + +on property:sys.usb.config=rndis,serial_smd,diag + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 90B5 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/functions rndis,serial,diag + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state rndis + +on property:sys.usb.config=rndis,serial_smd,diag,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 90B6 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/functions rndis,serial,diag,adb + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state rndis,adb on property:sys.usb.config=rndis,diag,diag_mdm write /sys/class/android_usb/android0/enable 0 @@ -489,9 +773,10 @@ on property:sys.usb.config=rndis,diag,diag_mdm write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm write /sys/class/android_usb/android0/functions rndis,diag write /sys/class/android_usb/android0/enable 1 - setprop sys.usb.state ${sys.usb.config} + setprop sys.usb.state rndis on property:sys.usb.config=rndis,diag,diag_mdm,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9042 @@ -499,7 +784,7 @@ on property:sys.usb.config=rndis,diag,diag_mdm,adb write /sys/class/android_usb/android0/functions rndis,diag,adb write /sys/class/android_usb/android0/enable 1 start adbd - setprop sys.usb.state ${sys.usb.config} + setprop sys.usb.state rndis,adb on property:sys.usb.config=rndis,diag,diag_mdm,diag_qsc write /sys/class/android_usb/android0/enable 0 @@ -508,9 +793,10 @@ on property:sys.usb.config=rndis,diag,diag_mdm,diag_qsc write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm,diag_qsc write /sys/class/android_usb/android0/functions rndis,diag write /sys/class/android_usb/android0/enable 1 - setprop sys.usb.state ${sys.usb.config} + setprop sys.usb.state rndis on property:sys.usb.config=rndis,diag,diag_mdm,diag_qsc,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9087 @@ -518,7 +804,7 @@ on property:sys.usb.config=rndis,diag,diag_mdm,diag_qsc,adb write /sys/class/android_usb/android0/functions rndis,diag,adb write /sys/class/android_usb/android0/enable 1 start adbd - setprop sys.usb.state ${sys.usb.config} + setprop sys.usb.state rndis,adb on property:sys.usb.config=ptp write /sys/class/android_usb/android0/enable 0 @@ -529,6 +815,7 @@ on property:sys.usb.config=ptp setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=ptp,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 904E @@ -546,6 +833,7 @@ on property:sys.usb.config=mtp setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=mtp,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9039 @@ -564,6 +852,7 @@ on property:sys.usb.config=mtp,diag setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=mtp,diag,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 903A @@ -583,6 +872,7 @@ on property:sys.usb.config=mtp,diag,diag_mdm setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=mtp,diag,diag_mdm,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 903F @@ -602,6 +892,7 @@ on property:sys.usb.config=mtp,diag,diag_mdm,diag_qsc setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=mtp,diag,diag_mdm,diag_qsc,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9089 @@ -621,6 +912,7 @@ on property:sys.usb.config=diag,diag_mdm,ccid setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,diag_mdm,ccid,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9044 @@ -631,6 +923,7 @@ on property:sys.usb.config=diag,diag_mdm,ccid,adb setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=mass_storage,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9015 @@ -653,15 +946,48 @@ on property:sys.usb.config=diag,qdss write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 904A write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam write /sys/class/android_usb/android0/functions diag,qdss write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,qdss,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9060 write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam + write /sys/class/android_usb/android0/functions diag,qdss,adb + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,diag_mdm,qdss + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9099 + write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam + write /sys/class/android_usb/android0/functions diag,qdss + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,diag_mdm,qdss,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9098 + write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam write /sys/class/android_usb/android0/functions diag,qdss,adb write /sys/class/android_usb/android0/enable 1 start adbd @@ -673,16 +999,139 @@ on property:sys.usb.config=diag,qdss,rmnet_bam write /sys/class/android_usb/android0/idProduct 9083 write /sys/class/android_usb/android0/f_diag/clients diag write /sys/class/android_usb/android0/f_rmnet/transports smd,bam + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam + write /sys/class/android_usb/android0/functions diag,qdss,rmnet + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,qdss,rmnet_qti_bam + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9083 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam write /sys/class/android_usb/android0/functions diag,qdss,rmnet write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=diag,qdss,rmnet_bam,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9084 write /sys/class/android_usb/android0/f_diag/clients diag write /sys/class/android_usb/android0/f_rmnet/transports smd,bam + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam + write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet + write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1 + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,qdss,rmnet_qti_bam,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9084 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam + write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet + write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1 + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,qdss,rmnet_ipa + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9083 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam + write /sys/class/android_usb/android0/functions diag,qdss,rmnet + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,qdss,rmnet_ipa,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 9084 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam + write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet + write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1 + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,diag_mdm,qdss,rmnet_hsic + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 909B + write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm + write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam + write /sys/class/android_usb/android0/functions diag,qdss,rmnet + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,diag_mdm,qdss,rmnet_hsic,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 909A + write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm + write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam + write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet + write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1 + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,diag_mdm,qdss_apq,qdss_mdm,rmnet_hsic + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 90A3 + write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm + write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic + write /sys/class/android_usb/android0/f_qdss/debug_intf 0 + write /sys/class/android_usb/android0/f_qdss/transports bam,hsic + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam,qdss_hsic + write /sys/class/android_usb/android0/functions diag,qdss,rmnet + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,diag_mdm,qdss_apq,qdss_mdm,rmnet_hsic,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 90A2 + write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm + write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic + write /sys/class/android_usb/android0/f_qdss/debug_intf 0 + write /sys/class/android_usb/android0/f_qdss/transports bam,hsic + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam,qdss_hsic write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1 write /sys/class/android_usb/android0/enable 1 @@ -694,15 +1143,22 @@ on property:sys.usb.config=rndis,diag,qdss write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9081 write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam write /sys/class/android_usb/android0/functions rndis,diag,qdss write /sys/class/android_usb/android0/enable 1 setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=rndis,diag,qdss,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 9082 write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_qdss/debug_intf 1 + write /sys/class/android_usb/android0/f_qdss/transports bam + write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam write /sys/class/android_usb/android0/functions rndis,diag,qdss,adb write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1 write /sys/class/android_usb/android0/enable 1 @@ -718,6 +1174,7 @@ on property:sys.usb.config=ncm setprop sys.usb.state ${sys.usb.config} on property:sys.usb.config=ncm,adb + stop adbd write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 05C6 write /sys/class/android_usb/android0/idProduct 908C @@ -725,3 +1182,55 @@ on property:sys.usb.config=ncm,adb write /sys/class/android_usb/android0/enable 1 start adbd setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=charging + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct F006 + write /sys/class/android_usb/android0/functions charging + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_smd,rmnet_qti_bam,dpl_qti_bam_dmux + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 90B7 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam + write /sys/class/android_usb/android0/f_qdss/transports qti,bam_dmux + write /sys/class/android_usb/android0/functions diag,serial,rmnet,qdss + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_smd,rmnet_qti_bam,dpl_qti_bam_dmux,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 90B8 + write /sys/class/android_usb/android0/f_diag/clients diag + write /sys/class/android_usb/android0/f_serial/transports smd + write /sys/class/android_usb/android0/f_rmnet/transports qti,bam + write /sys/class/android_usb/android0/f_qdss/transports qti,bam_dmux + write /sys/class/android_usb/android0/functions diag,serial,rmnet,qdss,adb + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=midi + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 90BA + write /sys/class/android_usb/android0/functions midi + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=midi,adb + stop adbd + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 05C6 + write /sys/class/android_usb/android0/idProduct 90BB + write /sys/class/android_usb/android0/functions midi,adb + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} diff --git a/rootdir/etc/init.qcom.usb.sh b/rootdir/etc/init.qcom.usb.sh index 5b3f5e843..d12a4ff9a 100644 --- a/rootdir/etc/init.qcom.usb.sh +++ b/rootdir/etc/init.qcom.usb.sh @@ -27,26 +27,10 @@ # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # -# Update USB serial number from persist storage if present, if not update -# with value passed from kernel command line, if none of these values are -# set then use the default value. This order is needed as for devices which -# do not have unique serial number. -# User needs to set unique usb serial number to persist.usb.serialno -# -serialno=`getprop persist.usb.serialno` -case "$serialno" in - "") - serialnum=`getprop ro.serialno` - case "$serialnum" in - "");; #Do nothing, use default serial number - *) - echo "$serialnum" > /sys/class/android_usb/android0/iSerial - esac - ;; - *) - echo "$serialno" > /sys/class/android_usb/android0/iSerial -esac - +vbus_draw=`getprop persist.sys.usb.vbus.draw` +if [ "$vbus_draw" != "" ]; then + echo "${vbus_draw}" > /sys/module/ci13xxx_msm/parameters/vbus_draw_mA +fi chown -h root.system /sys/devices/platform/msm_hsusb/gadget/wakeup chmod -h 220 /sys/devices/platform/msm_hsusb/gadget/wakeup @@ -80,6 +64,26 @@ case "$usbcurrentlimit" in ;; esac esac + +# +# Check ESOC for external MDM +# +# Note: currently only a single MDM is supported +# +if [ -d /sys/bus/esoc/devices ]; then +for f in /sys/bus/esoc/devices/*; do + if [ -d $f ]; then + esoc_name=`cat $f/esoc_name` + if [ "$esoc_name" = "MDM9x25" -o "$esoc_name" = "MDM9x35" ]; then + esoc_link=`cat $f/esoc_link` + break + fi + fi +done +fi + +target=`getprop ro.board.platform` + # # Allow USB enumeration with default PID/VID # @@ -88,47 +92,57 @@ echo 1 > /sys/class/android_usb/f_mass_storage/lun/nofua usb_config=`getprop persist.sys.usb.config` case "$usb_config" in "" | "adb") #USB persist config not set, select default configuration - case "$baseband" in - "mdm") - setprop persist.sys.usb.config diag,diag_mdm,serial_hsic,serial_tty,rmnet_hsic,mass_storage,adb - ;; - "sglte") - setprop persist.sys.usb.config diag,diag_qsc,serial_smd,serial_tty,serial_hsuart,rmnet_hsuart,mass_storage,adb + case "$esoc_link" in + "HSIC") + setprop persist.sys.usb.config diag,diag_mdm,serial_hsic,serial_tty,rmnet_hsic,mass_storage,adb + setprop persist.rmnet.mux enabled ;; - "dsda" | "sglte2") - setprop persist.sys.usb.config diag,diag_mdm,diag_qsc,serial_hsic,serial_hsuart,rmnet_hsic,rmnet_hsuart,mass_storage,adb + "HSIC+PCIe") + setprop persist.sys.usb.config diag,diag_mdm,serial_hsic,rmnet_qti_ether,mass_storage,adb ;; - "dsda2") - setprop persist.sys.usb.config diag,diag_mdm,diag_mdm2,serial_hsic,serial_hsusb,rmnet_hsic,rmnet_hsusb,mass_storage,adb + "PCIe") + setprop persist.sys.usb.config diag,diag_mdm,serial_tty,rmnet_qti_ether,mass_storage,adb ;; *) - setprop persist.sys.usb.config diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb + case "$baseband" in + "mdm") + setprop persist.sys.usb.config diag,diag_mdm,serial_hsic,serial_tty,rmnet_hsic,mass_storage,adb + ;; + "mdm2") + setprop persist.sys.usb.config diag,diag_mdm,serial_hsic,serial_tty,rmnet_hsic,mass_storage,adb + ;; + "sglte") + setprop persist.sys.usb.config diag,diag_qsc,serial_smd,serial_tty,serial_hsuart,rmnet_hsuart,mass_storage,adb + ;; + "dsda" | "sglte2") + setprop persist.sys.usb.config diag,diag_mdm,diag_qsc,serial_hsic,serial_hsuart,rmnet_hsic,rmnet_hsuart,mass_storage,adb + ;; + "dsda2") + setprop persist.sys.usb.config diag,diag_mdm,diag_mdm2,serial_hsic,serial_hsusb,rmnet_hsic,rmnet_hsusb,mass_storage,adb + ;; + *) + case "$target" in + "msm8916") + setprop persist.sys.usb.config diag,serial_smd,rmnet_bam,adb + ;; + "msm8994") + setprop persist.sys.usb.config diag,serial_smd,serial_tty,rmnet_ipa,mass_storage,adb + ;; + "msm8909") + setprop persist.sys.usb.config diag,serial_smd,rmnet_qti_bam,adb + ;; + *) + setprop persist.sys.usb.config diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb + ;; + esac + ;; + esac ;; esac ;; * ) ;; #USB persist config exists, do nothing esac -# -# Add support for exposing lun0 as cdrom in mass-storage -# -target=`getprop ro.product.device` -cdromname="/system/etc/cdrom_install.iso" -cdromenable=`getprop persist.service.cdrom.enable` -case "$target" in - "msm8226" | "msm8610") - case "$cdromenable" in - 0) - echo "" > /sys/class/android_usb/android0/f_mass_storage/lun0/file - ;; - 1) - echo "mounting usbcdrom lun" - echo $cdromname > /sys/class/android_usb/android0/f_mass_storage/lun0/file - ;; - esac - ;; -esac - # # Do target specific things # @@ -149,6 +163,10 @@ case "$target" in fi fi ;; + "msm8994") + echo BAM2BAM_IPA > /sys/class/android_usb/android0/f_rndis_qc/rndis_transports + echo 1 > /sys/class/android_usb/android0/f_rndis_qc/max_pkt_per_xfer # Disable RNDIS UL aggregation + ;; esac # @@ -193,3 +211,46 @@ case "$baseband" in chown -h radio.radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait ;; esac + +# +# Add support for exposing lun0 as cdrom in mass-storage +# +cdromname="/system/etc/cdrom_install.iso" +platformver=`cat /sys/devices/soc0/hw_platform` +case "$target" in + "msm8226" | "msm8610" | "msm8916" | "msm8909") + case $platformver in + "QRD") + echo "mounting usbcdrom lun" + echo $cdromname > /sys/class/android_usb/android0/f_mass_storage/rom/file + chmod 0444 /sys/class/android_usb/android0/f_mass_storage/rom/file + ;; + esac + ;; +esac + +# +# Initialize RNDIS Diag option. If unset, set it to 'none'. +# +diag_extra=`getprop persist.sys.usb.config.extra` +if [ "$diag_extra" == "" ]; then + setprop persist.sys.usb.config.extra none +fi + +# soc_ids for 8916/8939 differentiation +if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` +else + soc_id=`cat /sys/devices/system/soc/soc0/id` +fi + +# enable rps cpus on msm8939/msm8909/msm8929 target +setprop sys.usb.rps_mask 0 +case "$soc_id" in + "239" | "241" | "263" | "268" | "269" | "270") + setprop sys.usb.rps_mask 10 + ;; + "245" | "258" | "259" | "265" | "275") + setprop sys.usb.rps_mask 4 + ;; +esac diff --git a/rootdir/etc/init.qcom.wifi.sh b/rootdir/etc/init.qcom.wifi.sh index 89dc2d593..bc03f5c17 100644 --- a/rootdir/etc/init.qcom.wifi.sh +++ b/rootdir/etc/init.qcom.wifi.sh @@ -251,7 +251,7 @@ case "$target" in ln -s /system/lib/modules/pronto/pronto_wlan.ko \ /system/lib/modules/wlan.ko # Populate the writable driver configuration file - if [ ! -e /data/misc/wifi/WCNSS_qcom_cfg.ini ]; then + if [ ! -s /data/misc/wifi/WCNSS_qcom_cfg.ini ]; then cp /system/etc/wifi/WCNSS_qcom_cfg.ini \ /data/misc/wifi/WCNSS_qcom_cfg.ini chown -h system:wifi /data/misc/wifi/WCNSS_qcom_cfg.ini diff --git a/rootdir/etc/init.qcom.ril.sh b/rootdir/etc/init.qcom.zram.sh old mode 100755 new mode 100644 similarity index 55% rename from rootdir/etc/init.qcom.ril.sh rename to rootdir/etc/init.qcom.zram.sh index 7dc519be0..81a77d174 --- a/rootdir/etc/init.qcom.ril.sh +++ b/rootdir/etc/init.qcom.zram.sh @@ -1,5 +1,5 @@ #!/system/bin/sh -# Copyright (c) 2013, The Linux Foundation. All rights reserved. +# Copyright (c) 2014, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -8,7 +8,7 @@ # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. -# * Neither the name of Linux Foundation nor +# * Neither the name of The Linux Foundation nor # the names of its contributors may be used to endorse or promote # products derived from this software without specific prior written # permission. @@ -25,36 +25,25 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # +# The script will check total_ram and modify PPR parameters for +# 64 bit devices with total_ram greater than 1GB -carrier=`getprop persist.env.spec` -if [ "$carrier" = "ChinaTelecom" ]; then - # Update the props. - setprop persist.env.phone.global true - setprop persist.env.plmn.update true +MemTotalStr=`cat /proc/meminfo | grep MemTotal` +MemTotal=${MemTotalStr:16:8} +ZRAM_THRESHOLD=1048576 +IsLargeMemory=0 +((IsLargeMemory=MemTotal>ZRAM_THRESHOLD?1:0)) - # Remount /system with read-write permission for copy action. - `mount -o remount,rw /system` - - # Copy the modules to system app. - `cp /system/vendor/ChinaTelecom/system/app/RoamingSettings.apk /system/app/RoamingSettings.apk` - `cp /system/vendor/ChinaTelecom/system/app/UniversalDownload.apk /system/app/UniversalDownload.apk` - `chmod -h 644 /system/app/RoamingSettings.apk` - `chmod -h 644 /system/app/UniversalDownload.apk` - - # Remount /system with read-only - `mount -o remount,ro /system` +setprop ro.config.zram true +#Set per_process_reclaim tuning parameters +echo 1 > /sys/module/process_reclaim/parameters/enable_process_reclaim +ProductName=`getprop ro.product.name` +if [ "$ProductName" == "msm8916_64" ] && [ $IsLargeMemory -eq 1 ]; then + echo 10 > /sys/module/process_reclaim/parameters/pressure_min + echo 1024 > /sys/module/process_reclaim/parameters/per_swap_size else - # Update the props. - setprop persist.env.phone.global false - setprop persist.env.plmn.update false - - # Remount /system with read-write permission for remove action. - `mount -o remount,rw /system` - - # Remove the modules from the system app. - `rm /system/app/RoamingSettings.apk` - `rm /system/app/UniversalDownload.apk` - - # Remount /system with read-only - `mount -o remount,ro /system` + echo 50 > /sys/module/process_reclaim/parameters/pressure_min + echo 512 > /sys/module/process_reclaim/parameters/per_swap_size fi +echo 70 > /sys/module/process_reclaim/parameters/pressure_max +echo 30 > /sys/module/process_reclaim/parameters/swap_opt_eff diff --git a/rootdir/etc/init.qti.ims.sh b/rootdir/etc/init.qti.ims.sh new file mode 100644 index 000000000..d7d2726de --- /dev/null +++ b/rootdir/etc/init.qti.ims.sh @@ -0,0 +1,56 @@ +#!/system/bin/sh +# Copyright (c) 2015, The Linux Foundation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of The Linux Foundation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +dir0=/data +trigger_file=$dir0/ims_diabled +ims_disabled=`getprop persist.ims.disabled` +target=`getprop ro.build.product` + +#if [ ! -e $trigger_file ]; then +# for future use in doing conditional debugging +#else +# +#fi +echo "$ims_disabled" +echo "$target" + +if [ "$ims_disabled" = "0" ]; then + echo "ims will be enabled" + setprop service.qti.ims.enabled 1 + exit +fi + +if [ "$ims_disabled" = "1" ] || [ "$target" = "msm8909_512" ]; then + echo "ims is disabled" + setprop service.qti.ims.enabled 0 +else + echo "ims is enabled" + setprop service.qti.ims.enabled 1 +fi diff --git a/rootdir/etc/qca6234-service.sh b/rootdir/etc/qca6234-service.sh new file mode 100644 index 000000000..8510eaaa9 --- /dev/null +++ b/rootdir/etc/qca6234-service.sh @@ -0,0 +1,86 @@ +#!/system/bin/sh +# Copyright (c) 2010-2014, The Linux Foundation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of The Linux Foundation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Check whether device is plugged on the HSIC bus +# Currently HSIC bus will be the first index + +PATH=/sbin:/system/sbin:/system/bin:/system/xbin +export PATH + +deviceprop=`getprop ro.baseband` +boardprop=`getprop ro.board.platform` + +if [ -e /sys/bus/platform/drivers/msm_hsic_host ]; then + if [ ! -L /sys/bus/usb/devices/1-1 ]; then + echo msm_hsic_host > /sys/bus/platform/drivers/msm_hsic_host/unbind + fi + + chown -h system.system /sys/bus/platform/drivers/msm_hsic_host/bind + chown -h system.system /sys/bus/platform/drivers/msm_hsic_host/unbind + chmod -h 0200 /sys/bus/platform/drivers/msm_hsic_host/bind + chmod -h 0200 /sys/bus/platform/drivers/msm_hsic_host/unbind +fi + +wlanchip="" + +if [ "$deviceprop" == "apq" ] && [ "$boardprop" == "msm8974" ]; then + wlanchip="AR6004-USB" +fi + +# force ar6004 is ar6004_wlan.conf existed. +if [ -f /system/etc/firmware/ath6k/AR6004/ar6004_wlan.conf ]; then + wlanchip=`cat /system/etc/firmware/ath6k/AR6004/ar6004_wlan.conf` +fi + +echo "The WLAN Chip ID is $wlanchip" +if [ "$wlanchip" == "AR6004-USB" ]; then + echo msm_hsic_host > /sys/bus/platform/drivers/msm_hsic_host/unbind + setprop wlan.driver.ath 2 + setprop qcom.bluetooth.soc ath3k + setprop wlan.driver.name /system/lib/modules/ath6kl-3.5/ath6kl_usb.ko + setprop wlan.supp.template /system/etc/wifi/wpa_supplicant_ath6kl.conf + btsoc="ath3k" +elif [ "$wlanchip" == "AR6004-SDIO" ]; then + setprop wlan.driver.ath 2 + setprop qcom.bluetooth.soc ath3k + setprop wlan.driver.name /system/lib/modules/ath6kl-3.5/ath6kl_sdio.ko + setprop wlan.supp.template /system/etc/wifi/wpa_supplicant_ath6kl.conf + btsoc="ath3k" + + # Chown polling nodes as needed from UI running on system server + chmod -h 0200 /sys/devices/msm_sdcc.1/polling + chmod -h 0200 /sys/devices/msm_sdcc.2/polling + chmod -h 0200 /sys/devices/msm_sdcc.3/polling + chmod -h 0200 /sys/devices/msm_sdcc.4/polling + + chown -h system.system /sys/devices/msm_sdcc.1/polling + chown -h system.system /sys/devices/msm_sdcc.2/polling + chown -h system.system /sys/devices/msm_sdcc.3/polling + chown -h system.system /sys/devices/msm_sdcc.4/polling +fi + diff --git a/rootdir/etc/ueventd.qcom.rc b/rootdir/etc/ueventd.qcom.rc index 801e9b920..aa99f368a 100644 --- a/rootdir/etc/ueventd.qcom.rc +++ b/rootdir/etc/ueventd.qcom.rc @@ -1,4 +1,4 @@ -# Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. +# Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -41,12 +41,19 @@ /dev/smd5 0660 system system /dev/smd6 0660 system system /dev/smd7 0660 bluetooth bluetooth +/dev/ccid_bridge 0660 system system +/dev/ipa 0660 net_admin net_admin +/dev/wwan_ioctl 0660 net_admin net_admin +/dev/ipaNatTable 0660 net_admin net_admin +/dev/rmnet_ctrl 0660 usb usb +/dev/dpl_ctrl 0660 usb usb #permissions for CSVT /dev/smd11 0660 radio radio /dev/radio0 0640 system system /dev/rfcomm0 0660 bluetooth bluetooth +/dev/ttyUSB0 0660 bluetooth bluetooth /dev/smdcntl0 0640 radio radio /dev/smdcntl1 0640 radio radio /dev/smdcntl2 0640 radio radio @@ -55,6 +62,7 @@ /dev/smdcntl5 0640 radio radio /dev/smdcntl6 0640 radio radio /dev/smdcntl7 0640 radio radio +/dev/smdcntl8 0640 radio radio /dev/smdcnt_rev0 0640 radio radio /dev/smdcnt_rev1 0640 radio radio /dev/smdcnt_rev2 0640 radio radio @@ -92,14 +100,19 @@ /dev/hsicctl14 0640 radio radio /dev/hsicctl15 0640 radio radio /dev/hsicctl16 0640 radio radio +/dev/mhi_pipe_14 0640 radio radio +/dev/mhi_pipe_16 0640 radio radio +/dev/mhi_pipe_32 0640 radio radio /dev/video* 0660 system camera /dev/media* 0660 system camera /dev/v4l-subdev* 0660 system camera /dev/qseecom 0660 system drmrpc +/dev/pft 0660 system drmrpc /dev/gemini0 0660 system camera /dev/jpeg0 0660 system camera /dev/jpeg1 0660 system camera /dev/jpeg2 0660 system camera +/dev/jpeg3 0660 system camera /dev/adsprpc-smd 0664 system system /dev/msm_camera/* 0660 system camera /dev/gemini/ 0660 system camera @@ -109,10 +122,11 @@ /dev/msm_vidc_dec_sec 0660 system audio /dev/msm_vidc_enc 0660 system audio /dev/msm_rotator 0660 system system -/dev/hw_random 0660 system system +/dev/hw_random 0600 root root /dev/adsprpc-smd 0664 system system #permissions for audio +/dev/audio_slimslave 0660 system audio /dev/msm_qcelp 0660 system audio /dev/msm_evrc 0660 system audio /dev/msm_wma 0660 system audio @@ -128,7 +142,7 @@ /dev/msm_amrnb_in 0640 system audio /dev/msm_a2dp_in 0660 system audio /dev/msm_ac3 0660 system audio -/dev/msm_acdb 0660 system audio +/dev/msm_audio_cal 0660 system audio /dev/msm_cad 0660 system audio /dev/msm_fm 0660 system audio /dev/msm_mvs 0660 system audio @@ -136,16 +150,18 @@ /dev/msm_preproc_ctl 0660 system audio /dev/msm_rtac 0660 system audio /dev/msm_voicememo 0660 system audio -/dev/radio0 0640 fm_radio fm_radio /dev/smd3 0660 bluetooth net_bt_stack /dev/smd2 0660 bluetooth net_bt_stack /dev/ttyHSL1 0660 system system +/dev/ttyHS1 0660 system system /dev/mdm 0660 system radio /sys/devices/virtual/smdpkt/smdcntl* open_timeout 0664 radio radio /dev/sdio_tty_ciq_00 0660 system system /dev/tty_sdio_00 0660 system system /dev/ttyGS0 0660 system system /dev/i2c-5 0660 media media +/dev/voice_svc 0660 system audio +/dev/avtimer 0660 system audio # DVB devices /dev/dvb/adapter0/demux* 0440 media media @@ -158,8 +174,20 @@ # sensors /sys/devices/i2c-12/12-* pollrate_ms 0664 system system -/sys/devices/f9925000.i2c/i2c-0/0-* enable 0660 input system -/sys/devices/f9925000.i2c/i2c-0/0-* poll_delay 0660 input system +/sys/devices/f9925000.i2c/i2c-0/0-* enable 0660 input system +/sys/devices/f9925000.i2c/i2c-0/0-* poll_delay 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* enable 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* poll_delay 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* enable_wakeup 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* max_latency 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* flush 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* calibrate 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* enable 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* poll_delay 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* enable_wakeup 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* max_latency 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* flush 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* calibrate 0660 input system /sys/devices/virtual/optical_sensors/proximity ps_adc 0660 input system /sys/devices/virtual/optical_sensors/proximity ps_poll_delay 0660 input system /sys/devices/virtual/optical_sensors/lightsensor ls_auto 0660 input system @@ -167,12 +195,46 @@ /sys/devices/virtual/input/input* poll 0660 input system /sys/devices/virtual/input/input* pollrate_ms 0660 input system +# ctp +/sys/devices/soc.0/78b9000.i2c/i2c-5/5-0038/sensors/ft5x06-proximity enable 0660 input system +/sys/devices/virtual/gesture/gesture* enable 0660 input system +/sys/devices/virtual/gesture/gesture* pocket 0660 input system + +# led +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-0045/leds/red blink 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-0045/leds/green blink 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-0045/leds/blue blink 0660 input system + +# vm_bms +/dev/vm_bms 0660 system system +/dev/battery_data 0660 system system + # wlan /dev/wcnss_wlan 0660 system system +/dev/wcnss_ctrl 0660 system system #nfc permissions /dev/nfc-nci 0660 nfc nfc +/dev/nq-nci 0660 nfc nfc +/dev/assd 0660 nfc nfc # UIO devices /dev/uio0 0660 system system /dev/uio1 0660 system system /dev/uio2 0660 system system + +# SSR devices +/dev/subsys_* 0640 system system + +# Ultrasound device +/dev/usf1 0660 system system + +# Ramdump devices +/dev/ramdump* 0640 system system + +#Improve Touch +/dev/hbtp_input 0660 system system +/dev/hbtp_vm 0660 system system +/dev/jdi-bu21150 0660 system system + +# Add device block for FRP +/dev/block/platform/soc.0/7824900.sdhci/by-name/config 0660 system system diff --git a/sec_config b/sec_config index 62e509755..77639f747 100644 --- a/sec_config +++ b/sec_config @@ -3,3 +3,302 @@ 16:4294967295:1000:3004 /* Allow SS CTL service to be used by system and net_raw processes */ 43:4294967295:1000:3004 +/* QMI-SLIM service permitted to gps and net_raw */ +55:4294967295:1021:3004 +/* Allow Sensor services to be used by sensor process */ +256:4294967295:3011 +257:4294967295:3011 +258:4294967295:3011 +259:4294967295:3011 +260:4294967295:3011 +261:4294967295:3011 +262:4294967295:3011 +263:4294967295:3011 +264:4294967295:3011 +265:4294967295:3011 +266:4294967295:3011 +267:4294967295:3011 +268:4294967295:3011 +269:4294967295:3011 +270:4294967295:3011 +271:4294967295:3011 +272:4294967295:3011 +273:4294967295:3011 +274:4294967295:3011 +275:4294967295:3011 +276:4294967295:3011 +277:4294967295:3011 +278:4294967295:3011 +279:4294967295:3011 +280:4294967295:3011 +281:4294967295:3011 +282:4294967295:3011 +283:4294967295:3011 +284:4294967295:3011 +285:4294967295:3011 +286:4294967295:3011 +287:4294967295:3011 +288:4294967295:3011 +289:4294967295:3011 +290:4294967295:3011 +291:4294967295:3011 +292:4294967295:3011 +293:4294967295:3011 +294:4294967295:3011 +295:4294967295:3011 +296:4294967295:3011 +297:4294967295:3011 +298:4294967295:3011 +299:4294967295:3011 +300:4294967295:3011 +301:4294967295:3011 +302:4294967295:3011 +303:4294967295:3011 +304:4294967295:3011 +305:4294967295:3011 +306:4294967295:3011 +307:4294967295:3011 +308:4294967295:3011 +309:4294967295:3011 +310:4294967295:3011 +311:4294967295:3011 +312:4294967295:3011 +313:4294967295:3011 +314:4294967295:3011 +315:4294967295:3011 +316:4294967295:3011 +317:4294967295:3011 +318:4294967295:3011 +319:4294967295:3011 +320:4294967295:3011 +321:4294967295:3011 +322:4294967295:3011 +323:4294967295:3011 +324:4294967295:3011 +325:4294967295:3011 +326:4294967295:3011 +327:4294967295:3011 +328:4294967295:3011 +329:4294967295:3011 +330:4294967295:3011 +331:4294967295:3011 +332:4294967295:3011 +333:4294967295:3011 +334:4294967295:3011 +335:4294967295:3011 +336:4294967295:3011 +337:4294967295:3011 +338:4294967295:3011 +339:4294967295:3011 +340:4294967295:3011 +341:4294967295:3011 +342:4294967295:3011 +343:4294967295:3011 +344:4294967295:3011 +345:4294967295:3011 +346:4294967295:3011 +347:4294967295:3011 +348:4294967295:3011 +349:4294967295:3011 +350:4294967295:3011 +351:4294967295:3011 +352:4294967295:3011 +353:4294967295:3011 +354:4294967295:3011 +355:4294967295:3011 +356:4294967295:3011 +357:4294967295:3011 +358:4294967295:3011 +359:4294967295:3011 +360:4294967295:3011 +361:4294967295:3011 +362:4294967295:3011 +363:4294967295:3011 +364:4294967295:3011 +365:4294967295:3011 +366:4294967295:3011 +367:4294967295:3011 +368:4294967295:3011 +369:4294967295:3011 +370:4294967295:3011 +371:4294967295:3011 +372:4294967295:3011 +373:4294967295:3011 +374:4294967295:3011 +375:4294967295:3011 +376:4294967295:3011 +377:4294967295:3011 +378:4294967295:3011 +379:4294967295:3011 +380:4294967295:3011 +381:4294967295:3011 +382:4294967295:3011 +383:4294967295:3011 +384:4294967295:3011 +385:4294967295:3011 +386:4294967295:3011 +387:4294967295:3011 +388:4294967295:3011 +389:4294967295:3011 +390:4294967295:3011 +391:4294967295:3011 +392:4294967295:3011 +393:4294967295:3011 +394:4294967295:3011 +395:4294967295:3011 +396:4294967295:3011 +397:4294967295:3011 +398:4294967295:3011 +399:4294967295:3011 +400:4294967295:3011 +401:4294967295:3011 +402:4294967295:3011 +403:4294967295:3011 +404:4294967295:3011 +405:4294967295:3011 +406:4294967295:3011 +407:4294967295:3011 +408:4294967295:3011 +409:4294967295:3011 +410:4294967295:3011 +411:4294967295:3011 +412:4294967295:3011 +413:4294967295:3011 +414:4294967295:3011 +415:4294967295:3011 +416:4294967295:3011 +417:4294967295:3011 +418:4294967295:3011 +419:4294967295:3011 +420:4294967295:3011 +421:4294967295:3011 +422:4294967295:3011 +423:4294967295:3011 +424:4294967295:3011 +425:4294967295:3011 +426:4294967295:3011 +427:4294967295:3011 +428:4294967295:3011 +429:4294967295:3011 +430:4294967295:3011 +431:4294967295:3011 +432:4294967295:3011 +433:4294967295:3011 +434:4294967295:3011 +435:4294967295:3011 +436:4294967295:3011 +437:4294967295:3011 +438:4294967295:3011 +439:4294967295:3011 +440:4294967295:3011 +441:4294967295:3011 +442:4294967295:3011 +443:4294967295:3011 +444:4294967295:3011 +445:4294967295:3011 +446:4294967295:3011 +447:4294967295:3011 +448:4294967295:3011 +449:4294967295:3011 +450:4294967295:3011 +451:4294967295:3011 +452:4294967295:3011 +453:4294967295:3011 +454:4294967295:3011 +455:4294967295:3011 +456:4294967295:3011 +457:4294967295:3011 +458:4294967295:3011 +459:4294967295:3011 +460:4294967295:3011 +461:4294967295:3011 +462:4294967295:3011 +463:4294967295:3011 +464:4294967295:3011 +465:4294967295:3011 +466:4294967295:3011 +467:4294967295:3011 +468:4294967295:3011 +469:4294967295:3011 +470:4294967295:3011 +471:4294967295:3011 +472:4294967295:3011 +473:4294967295:3011 +474:4294967295:3011 +475:4294967295:3011 +476:4294967295:3011 +477:4294967295:3011 +478:4294967295:3011 +479:4294967295:3011 +480:4294967295:3011 +481:4294967295:3011 +482:4294967295:3011 +483:4294967295:3011 +484:4294967295:3011 +485:4294967295:3011 +486:4294967295:3011 +487:4294967295:3011 +488:4294967295:3011 +489:4294967295:3011 +490:4294967295:3011 +491:4294967295:3011 +492:4294967295:3011 +493:4294967295:3011 +494:4294967295:3011 +495:4294967295:3011 +496:4294967295:3011 +497:4294967295:3011 +498:4294967295:3011 +499:4294967295:3011 +500:4294967295:3011 +501:4294967295:3011 +502:4294967295:3011 +503:4294967295:3011 +504:4294967295:3011 +505:4294967295:3011 +506:4294967295:3011 +507:4294967295:3011 +508:4294967295:3011 +509:4294967295:3011 +510:4294967295:3011 +511:4294967295:3011 +/* Allow RCS service to aquire net_raw permission */ +18:4294967295:1001:3004 +/* Allow QMID service to aquire net_raw permission */ +3:4294967295:1001:3004 +2:4294967295:1001:3004 +42:4294967295:1001:3004 +18:4294967295:1001:3004 +9:4294967295:1001:3004 +1:4294967295:1001:3004:1000 +4:4294967295:1001:3004 +2797:4294967295:1001:3004 +2808:4294967295:1001:3004:1000 +/* DPM */ +47:4294967295:1001:3004 +/* Allow communication to some QMI services with radio privilages */ +/* Format is :: */ +/* PBM */ +12:4294967295:1001 +/* WMS */ +5:4294967295:1001 +/* IMS VT */ +32:4294967295:1001 +/* IMSP */ +31:4294967295:1001 +/* PDC */ +36:4294967295:1001 +/* SAR */ +17:4294967295:1001 +/* RFRPE */ +41:4294967295:1001 +/*UIM*/ +11:4294967295:1001 +/*CAT*/ +10:4294967295:1001 +/*IMSA*/ +33:4294967295:1001 +/* Allow Data dpmd to access QMI DFS */ +48:4294967295:1000:3004 +/* DIAG */ +4097:4294967295:3009 diff --git a/vendorsetup.sh b/vendorsetup.sh index 97cbfa4a0..9de80491f 100755 --- a/vendorsetup.sh +++ b/vendorsetup.sh @@ -27,13 +27,21 @@ # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -add_lunch_combo msm7627a-userdebug -add_lunch_combo msm8625-userdebug -add_lunch_combo msm7630_surf-userdebug -add_lunch_combo msm8660_surf-userdebug -add_lunch_combo msm8960-userdebug add_lunch_combo msm8974-userdebug add_lunch_combo msm8610-userdebug add_lunch_combo msm8226-userdebug add_lunch_combo apq8084-userdebug add_lunch_combo mpq8092-userdebug +add_lunch_combo msm_bronze-userdebug +add_lunch_combo msm8916_32-userdebug +add_lunch_combo msm8916_32_LMT-userdebug +add_lunch_combo msm8916_32_512-userdebug +add_lunch_combo msm8916_32_k64-userdebug +add_lunch_combo msm8916_64-userdebug +add_lunch_combo msm8916_64_LMT-userdebug +add_lunch_combo msm8994-userdebug +add_lunch_combo thulium-userdebug +add_lunch_combo msm8909-userdebug +add_lunch_combo msm8909_512-userdebug +add_lunch_combo msm8909_LMT-userdebug +add_lunch_combo msm8909w-userdebug