From a2119cee4941b0cd5d8300483274c679038c813b Mon Sep 17 00:00:00 2001 From: Ethan Chen Date: Tue, 24 May 2016 18:44:57 -0700 Subject: msm8916: Commonize msm8939 and msm8916 Change-Id: Iddc1a5e7793fe8110cba1f2314b53e3bb164c34d --- Android.mk | 2 +- BoardConfigCommon.mk | 23 +-- configs/media_codecs.xml | 317 -------------------------------- configs/media_codecs_msm8916.xml | 317 ++++++++++++++++++++++++++++++++ configs/media_codecs_msm8939.xml | 319 +++++++++++++++++++++++++++++++++ configs/msm_irqbalance.conf | 2 + msm8916.mk | 15 +- msm8916.prop | 5 + msm8939.prop | 6 + recovery/Android.mk | 8 + recovery/recovery_updater.c | 183 +++++++++++++++++++ releasetools.py | 18 +- rootdir/Android.mk | 4 +- rootdir/etc/init.qcom.power.rc | 52 ------ rootdir/etc/init.qcom.power_msm8916.rc | 52 ++++++ rootdir/etc/init.qcom.power_msm8939.rc | 92 ++++++++++ rootdir/etc/init.qcom.rc | 16 ++ rootdir/etc/ueventd.qcom.rc | 20 +++ sepolicy/mm-qcamerad.te | 1 + system.prop | 7 +- 20 files changed, 1063 insertions(+), 396 deletions(-) delete mode 100644 configs/media_codecs.xml create mode 100644 configs/media_codecs_msm8916.xml create mode 100644 configs/media_codecs_msm8939.xml create mode 100644 configs/msm_irqbalance.conf create mode 100644 msm8916.prop create mode 100644 msm8939.prop create mode 100644 recovery/Android.mk create mode 100644 recovery/recovery_updater.c delete mode 100644 rootdir/etc/init.qcom.power.rc create mode 100644 rootdir/etc/init.qcom.power_msm8916.rc create mode 100644 rootdir/etc/init.qcom.power_msm8939.rc create mode 100644 sepolicy/mm-qcamerad.te diff --git a/Android.mk b/Android.mk index c3625db..fd2842a 100644 --- a/Android.mk +++ b/Android.mk @@ -15,7 +15,7 @@ LOCAL_PATH := $(call my-dir) -ifeq ($(TARGET_CYANOGEN_COMMON),msm8916) +ifneq ($(filter msm8916 msm8939,$(TARGET_BOARD_PLATFORM_VARIANT)),) include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk index d4b4cdb..b3c824a 100644 --- a/BoardConfigCommon.mk +++ b/BoardConfigCommon.mk @@ -17,12 +17,6 @@ VENDOR_PATH := device/cyanogen/msm8916-common TARGET_SPECIFIC_HEADER_PATH := $(VENDOR_PATH)/include -TARGET_CYANOGEN_COMMON := msm8916 - -# Platform -TARGET_BOARD_PLATFORM := msm8916 -TARGET_BOARD_PLATFORM_GPU := qcom-adreno306 - # Architecture ifneq ($(FORCE_32_BIT),true) TARGET_BOARD_SUFFIX := _64 @@ -30,7 +24,7 @@ TARGET_ARCH := arm64 TARGET_ARCH_VARIANT := armv8-a TARGET_CPU_ABI := arm64-v8a TARGET_CPU_ABI2 := -TARGET_CPU_VARIANT := generic +TARGET_CPU_VARIANT := cortex-a53 TARGET_2ND_ARCH := arm TARGET_2ND_ARCH_VARIANT := armv7-a-neon @@ -48,8 +42,11 @@ TARGET_CPU_ABI2 := armeabi TARGET_CPU_VARIANT := cortex-a53 endif +TARGET_BOARD_PLATFORM := msm8916 + # Properties (reset them here, include more in device if needed) TARGET_SYSTEM_PROP := $(VENDOR_PATH)/system.prop +TARGET_SYSTEM_PROP += $(VENDOR_PATH)/$(TARGET_BOARD_PLATFORM_VARIANT).prop # Bootloader TARGET_BOOTLOADER_BOARD_NAME := MSM8916 @@ -66,8 +63,8 @@ BOARD_RAMDISK_OFFSET := 0x02000000 TARGET_KERNEL_SOURCE := kernel/cyanogen/msm8916 ifneq ($(FORCE_32_BIT),true) TARGET_KERNEL_ARCH := arm64 -TARGET_KERNEL_HEADER_ARCH := arm64 TARGET_KERNEL_CROSS_COMPILE_PREFIX := aarch64-linux-android- +TARGET_KERNEL_HEADER_ARCH := arm64 TARGET_USES_UNCOMPRESSED_KERNEL := true else TARGET_KERNEL_ARCH := arm @@ -94,15 +91,6 @@ BOARD_HARDWARE_CLASS += hardware/cyanogen/cmhw # Crypto TARGET_HW_DISK_ENCRYPTION := true -# Dex -ifeq ($(HOST_OS),linux) - ifeq ($(TARGET_BUILD_VARIANT),user) - ifeq ($(WITH_DEXPREOPT),) - WITH_DEXPREOPT := true - endif - endif -endif - # Display MAX_EGL_CACHE_KEY_SIZE := 12*1024 MAX_EGL_CACHE_SIZE := 2048*1024 @@ -142,6 +130,7 @@ BOARD_USES_QCOM_HARDWARE := true # Recovery TARGET_USERIMAGES_USE_EXT4 := true +TARGET_RECOVERY_UPDATER_LIBS := librecovery_updater_cm # Releasetools TARGET_RELEASETOOLS_EXTENSIONS := $(VENDOR_PATH) diff --git a/configs/media_codecs.xml b/configs/media_codecs.xml deleted file mode 100644 index d28ecda..0000000 --- a/configs/media_codecs.xml +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/configs/media_codecs_msm8916.xml b/configs/media_codecs_msm8916.xml new file mode 100644 index 0000000..d28ecda --- /dev/null +++ b/configs/media_codecs_msm8916.xml @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/media_codecs_msm8939.xml b/configs/media_codecs_msm8939.xml new file mode 100644 index 0000000..f0826fd --- /dev/null +++ b/configs/media_codecs_msm8939.xml @@ -0,0 +1,319 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/msm_irqbalance.conf b/configs/msm_irqbalance.conf new file mode 100644 index 0000000..0692d4c --- /dev/null +++ b/configs/msm_irqbalance.conf @@ -0,0 +1,2 @@ +PRIO=0,0,0,0,1,1,1,1 +IGNORED_IRQ=20,39,200,203,155,157 diff --git a/msm8916.mk b/msm8916.mk index 4129635..74fef11 100644 --- a/msm8916.mk +++ b/msm8916.mk @@ -24,7 +24,6 @@ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \ 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.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml \ frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.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 \ @@ -35,6 +34,11 @@ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.midi.xml \ frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml +ifeq ($(TARGET_BOARD_PLATFORM_VARIANT),msm8939) +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/android.hardware.opengles.aep.xml:system/etc/permissions/android.hardware.opengles.aep.xml +endif + # Audio PRODUCT_PACKAGES += \ audiod \ @@ -87,6 +91,12 @@ PRODUCT_PACKAGES += \ PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/configs/sec_config:system/etc/sec_config +# IRQ balance +ifeq ($(TARGET_BOARD_PLATFORM_VARIANT),msm8939) +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/msm_irqbalance.conf:system/vendor/etc/msm_irqbalance.conf +endif + # Keystore PRODUCT_PACKAGES += \ keystore.msm8916 @@ -95,8 +105,9 @@ PRODUCT_PACKAGES += \ 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 \ frameworks/av/media/libstagefright/data/media_codecs_google_video_le.xml:system/etc/media_codecs_google_video_le.xml \ - $(LOCAL_PATH)/configs/media_codecs.xml:system/etc/media_codecs.xml + $(LOCAL_PATH)/configs/media_codecs_$(TARGET_BOARD_PLATFORM_VARIANT).xml:system/etc/media_codecs.xml PRODUCT_PACKAGES += \ libextmedia_jni \ diff --git a/msm8916.prop b/msm8916.prop new file mode 100644 index 0000000..4ba6057 --- /dev/null +++ b/msm8916.prop @@ -0,0 +1,5 @@ +# Display +ro.opengles.version=196608 + +# Perf +ro.min_freq_0=800000 diff --git a/msm8939.prop b/msm8939.prop new file mode 100644 index 0000000..8d9217c --- /dev/null +++ b/msm8939.prop @@ -0,0 +1,6 @@ +# Display +ro.opengles.version=196609 + +# Perf +ro.min_freq_0=960000 +ro_min_freq_4=800000 diff --git a/recovery/Android.mk b/recovery/Android.mk new file mode 100644 index 0000000..86fb070 --- /dev/null +++ b/recovery/Android.mk @@ -0,0 +1,8 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) +LOCAL_C_INCLUDES := bootable/recovery +LOCAL_SRC_FILES := recovery_updater.c +LOCAL_MODULE := librecovery_updater_cm +LOCAL_MODULE_TAGS := eng +include $(BUILD_STATIC_LIBRARY) diff --git a/recovery/recovery_updater.c b/recovery/recovery_updater.c new file mode 100644 index 0000000..c0036f9 --- /dev/null +++ b/recovery/recovery_updater.c @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2015, The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "edify/expr.h" + +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) + +#define ALPHABET_LEN 256 +#define KB 1024 + +#define TZ_PART_PATH "/dev/block/platform/7824900.sdhci/by-name/tz" +#define TZ_VER_STR "QC_IMAGE_VERSION_STRING=" +#define TZ_VER_STR_LEN 24 +#define TZ_VER_BUF_LEN 255 +#define TZ_SZ 500 * KB /* MMAP 500K of TZ, TZ partition is 500K */ + +/* Boyer-Moore string search implementation from Wikipedia */ + +/* Return longest suffix length of suffix ending at str[p] */ +static int max_suffix_len(const char *str, size_t str_len, size_t p) { + uint32_t i; + + for (i = 0; (str[p - i] == str[str_len - 1 - i]) && (i < p); ) { + i++; + } + + return i; +} + +/* Generate table of distance between last character of pat and rightmost + * occurrence of character c in pat + */ +static void bm_make_delta1(int *delta1, const char *pat, size_t pat_len) { + uint32_t i; + for (i = 0; i < ALPHABET_LEN; i++) { + delta1[i] = pat_len; + } + for (i = 0; i < pat_len - 1; i++) { + uint8_t idx = (uint8_t) pat[i]; + delta1[idx] = pat_len - 1 - i; + } +} + +/* Generate table of next possible full match from mismatch at pat[p] */ +static void bm_make_delta2(int *delta2, const char *pat, size_t pat_len) { + int p; + uint32_t last_prefix = pat_len - 1; + + for (p = pat_len - 1; p >= 0; p--) { + /* Compare whether pat[p-pat_len] is suffix of pat */ + if (strncmp(pat + p, pat, pat_len - p) == 0) { + last_prefix = p + 1; + } + delta2[p] = last_prefix + (pat_len - 1 - p); + } + + for (p = 0; p < (int) pat_len - 1; p++) { + /* Get longest suffix of pattern ending on character pat[p] */ + int suf_len = max_suffix_len(pat, pat_len, p); + if (pat[p - suf_len] != pat[pat_len - 1 - suf_len]) { + delta2[pat_len - 1 - suf_len] = pat_len - 1 - p + suf_len; + } + } +} + +static char * bm_search(const char *str, size_t str_len, const char *pat, + size_t pat_len) { + int delta1[ALPHABET_LEN]; + int delta2[pat_len]; + int i; + + bm_make_delta1(delta1, pat, pat_len); + bm_make_delta2(delta2, pat, pat_len); + + if (pat_len == 0) { + return (char *) str; + } + + i = pat_len - 1; + while (i < (int) str_len) { + int j = pat_len - 1; + while (j >= 0 && (str[i] == pat[j])) { + i--; + j--; + } + if (j < 0) { + return (char *) (str + i + 1); + } + i += MAX(delta1[(uint8_t) str[i]], delta2[j]); + } + + return NULL; +} + +static int get_tz_version(char *ver_str, size_t len) { + int ret = 0; + int fd; + char *tz_data = NULL; + char *offset = NULL; + + fd = open(TZ_PART_PATH, O_RDONLY); + if (fd < 0) { + ret = errno; + goto err_ret; + } + + tz_data = (char *) mmap(NULL, TZ_SZ, PROT_READ, MAP_PRIVATE, fd, 0); + if (tz_data == (char *)-1) { + ret = errno; + goto err_fd_close; + } + + /* Do Boyer-Moore search across TZ data */ + offset = bm_search(tz_data, TZ_SZ, TZ_VER_STR, TZ_VER_STR_LEN); + if (offset != NULL) { + strncpy(ver_str, offset + TZ_VER_STR_LEN, len); + } else { + ret = -ENOENT; + } + + munmap(tz_data, TZ_SZ); +err_fd_close: + close(fd); +err_ret: + return ret; +} + +/* verify_trustzone("TZ_VERSION", "TZ_VERSION", ...) */ +Value * VerifyTrustZoneFn(const char *name, State *state, int argc, Expr *argv[]) { + char current_tz_version[TZ_VER_BUF_LEN]; + char *tz_version; + int i, ret; + + ret = get_tz_version(current_tz_version, TZ_VER_BUF_LEN); + if (ret) { + return ErrorAbort(state, "%s() failed to read current TZ version: %d", + name, ret); + } + + for (i = 1; i <= argc; i++) { + ret = ReadArgs(state, argv, i, &tz_version); + if (ret < 0) { + return ErrorAbort(state, "%s() error parsing arguments: %d", + name, ret); + } + + uiPrintf(state, "Comparing TZ version %s to %s", + tz_version, current_tz_version); + if (strncmp(tz_version, current_tz_version, strlen(tz_version)) == 0) { + return StringValue(strdup("1")); + } + } + + return StringValue(strdup("0")); +} + +void Register_librecovery_updater_cm() { + RegisterFunction("cm.verify_trustzone", VerifyTrustZoneFn); +} diff --git a/releasetools.py b/releasetools.py index cc73d5f..31bf958 100755 --- a/releasetools.py +++ b/releasetools.py @@ -48,11 +48,11 @@ def GetRadioFiles(z): return out def FullOTA_Assertions(info): - #TODO: Implement device specific asserstions. + AddTrustZoneAssertion(info) return def IncrementalOTA_Assertions(info): - #TODO: Implement device specific asserstions. + AddTrustZoneAssertion(info) return def InstallRawImage(image_data, api_version, input_zip, fn, info, filesmap): @@ -107,3 +107,17 @@ def FullOTA_InstallEnd(info): def IncrementalOTA_InstallEnd(info): InstallRadioFiles(info) + +def AddTrustZoneAssertion(info): + # Presence of filesmap indicates packaged firmware + filesmap = LoadFilesMap(info.input_zip) + if filesmap != {}: + return + android_info = info.input_zip.read("OTA/android-info.txt") + m = re.search(r'require\s+version-trustzone\s*=\s*(\S+)', android_info) + if m: + versions = m.group(1).split('|') + if len(versions) and '*' not in versions: + cmd = 'assert(cm.verify_trustzone(' + ','.join(['"%s"' % tz for tz in versions]) + ') == "1");' + info.script.AppendExtra(cmd) + return diff --git a/rootdir/Android.mk b/rootdir/Android.mk index d88195f..abb6ae7 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -23,7 +23,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := init.qcom.power.rc LOCAL_MODULE_TAGS := optional eng LOCAL_MODULE_CLASS := ETC -LOCAL_SRC_FILES := etc/init.qcom.power.rc +LOCAL_SRC_FILES := etc/init.qcom.power_$(TARGET_BOARD_PLATFORM_VARIANT).rc LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) include $(BUILD_PREBUILT) @@ -40,7 +40,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := init.recovery.qcom.rc LOCAL_MODULE_TAGS := optional eng LOCAL_MODULE_CLASS := ETC -LOCAL_SRC_FILES := etc/init.qcom.power.rc +LOCAL_SRC_FILES := etc/init.qcom.power_$(TARGET_BOARD_PLATFORM_VARIANT).rc LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) include $(BUILD_PREBUILT) diff --git a/rootdir/etc/init.qcom.power.rc b/rootdir/etc/init.qcom.power.rc deleted file mode 100644 index 6be9da5..0000000 --- a/rootdir/etc/init.qcom.power.rc +++ /dev/null @@ -1,52 +0,0 @@ -on enable-low-power - # HMP scheduler load tracking settings - write /proc/sys/kernel/sched_window_stats_policy 3 - write /proc/sys/kernel/sched_ravg_hist_size 3 - - # HMP Task packing settings for 8916 - write /proc/sys/kernel/sched_small_task 20 - write /proc/sys/kernel/sched_mostly_idle_load 30 - write /proc/sys/kernel/sched_mostly_idle_nr_run 3 - - # disable thermal core_control to update interactive governor settings - write /sys/module/msm_thermal/core_control/enabled 0 - - # enable governor - write /sys/devices/system/cpu/cpu0/online 1 - write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "interactive" - write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 800000 - # enable thermal core_control now - write /sys/module/msm_thermal/core_control/enabled 1 - - write /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay "25000 1094400:50000" - write /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load 90 - write /sys/devices/system/cpu/cpufreq/interactive/timer_rate 30000 - write /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq 998400 - write /sys/devices/system/cpu/cpufreq/interactive/io_is_busy 0 - write /sys/devices/system/cpu/cpufreq/interactive/target_loads "1 800000:85 998400:90 1094400:80" - write /sys/devices/system/cpu/cpufreq/interactive/min_sample_time 50000 - write /sys/devices/system/cpu/cpufreq/interactive/max_freq_hysteresis 50000 - - # bring all CPUs online - write /sys/devices/system/cpu/cpu1/online 1 - write /sys/devices/system/cpu/cpu2/online 1 - write /sys/devices/system/cpu/cpu3/online 1 - - # Enable low power modes - write /sys/module/lpm_levels/parameters/sleep_disabled 0 - - rm /data/system/perfd/default_values - start perfd - -on charger - write /sys/module/lpm_levels/parameters/sleep_disabled 0 - write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave" - -on class_start:late_start - trigger enable-low-power - -on property:init.svc.recovery=running - trigger enable-low-power - -on property:dev.bootcomplete=1 - setprop sys.io.scheduler bfq diff --git a/rootdir/etc/init.qcom.power_msm8916.rc b/rootdir/etc/init.qcom.power_msm8916.rc new file mode 100644 index 0000000..6be9da5 --- /dev/null +++ b/rootdir/etc/init.qcom.power_msm8916.rc @@ -0,0 +1,52 @@ +on enable-low-power + # HMP scheduler load tracking settings + write /proc/sys/kernel/sched_window_stats_policy 3 + write /proc/sys/kernel/sched_ravg_hist_size 3 + + # HMP Task packing settings for 8916 + write /proc/sys/kernel/sched_small_task 20 + write /proc/sys/kernel/sched_mostly_idle_load 30 + write /proc/sys/kernel/sched_mostly_idle_nr_run 3 + + # disable thermal core_control to update interactive governor settings + write /sys/module/msm_thermal/core_control/enabled 0 + + # enable governor + write /sys/devices/system/cpu/cpu0/online 1 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "interactive" + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 800000 + # enable thermal core_control now + write /sys/module/msm_thermal/core_control/enabled 1 + + write /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay "25000 1094400:50000" + write /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load 90 + write /sys/devices/system/cpu/cpufreq/interactive/timer_rate 30000 + write /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq 998400 + write /sys/devices/system/cpu/cpufreq/interactive/io_is_busy 0 + write /sys/devices/system/cpu/cpufreq/interactive/target_loads "1 800000:85 998400:90 1094400:80" + write /sys/devices/system/cpu/cpufreq/interactive/min_sample_time 50000 + write /sys/devices/system/cpu/cpufreq/interactive/max_freq_hysteresis 50000 + + # bring all CPUs online + write /sys/devices/system/cpu/cpu1/online 1 + write /sys/devices/system/cpu/cpu2/online 1 + write /sys/devices/system/cpu/cpu3/online 1 + + # Enable low power modes + write /sys/module/lpm_levels/parameters/sleep_disabled 0 + + rm /data/system/perfd/default_values + start perfd + +on charger + write /sys/module/lpm_levels/parameters/sleep_disabled 0 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave" + +on class_start:late_start + trigger enable-low-power + +on property:init.svc.recovery=running + trigger enable-low-power + +on property:dev.bootcomplete=1 + setprop sys.io.scheduler bfq diff --git a/rootdir/etc/init.qcom.power_msm8939.rc b/rootdir/etc/init.qcom.power_msm8939.rc new file mode 100644 index 0000000..75329d0 --- /dev/null +++ b/rootdir/etc/init.qcom.power_msm8939.rc @@ -0,0 +1,92 @@ +on enable-low-power + write /proc/sys/kernel/sched_boost 1 + + # RPS mask + write /sys/class/net/rmnet0/queues/rx-0/rps_cpus 10 + + # Adaptive LMK + write /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk 1 + write /sys/module/lowmemorykiller/parameters/vmpressure_file_min 81250 + + # HMP scheduler load tracking settings + write /proc/sys/kernel/sched_window_stats_policy 3 + write /proc/sys/kernel/sched_ravg_hist_size 5 + + # HMP Task packing settings for 8939, 8929 + write /proc/sys/kernel/sched_small_task 20 + write /proc/sys/kernel/sched_mostly_idle_load 30 + write /proc/sys/kernel/sched_mostly_idle_nr_run 3 + + write /sys/class/devfreq/qcom,cpubw.64/governor "bw_hwmon" + write /sys/class/devfreq/qcom,cpubw.64/bw_hwmon/io_percent 20 + write /sys/class/devfreq/qcom,gpubw.61/governor "bw_hwmon" + write /sys/class/devfreq/qcom,gpubw.61/bw_hwmon/io_percent 40 + write /sys/class/devfreq/qcom,mincpubw.65/governor "cpufreq" + + # Disable thermal core_control to update interactive gov settings + write /sys/module/msm_thermal/core_control/enabled 0 + + # Enable governor for perf cluster + write /sys/devices/system/cpu/cpu0/online 1 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "interactive" + write /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay "20000 1113600:50000" + write /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load 85 + write /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate 20000 + write /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq 1113600 + write /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy 0 + write /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads "1 960000:85 1113600:90 1344000:80" + write /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time 50000 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 960000 + + # Enable governor for power cluster + write /sys/devices/system/cpu/cpu4/online 1 + write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor "interactive" + write /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay "25000 800000:50000" + write /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load 90 + write /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate 40000 + write /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq 998400 + write /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy 0 + write /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads "1 800000:90" + write /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time 40000 + write /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq 800000 + + # Enable thermal core_control now + write /sys/module/msm_thermal/core_control/enabled 1 + + # HMP scheduler (big.Little cluster related) settings + write /proc/sys/kernel/sched_upmigrate 75 + write /proc/sys/kernel/sched_downmigrate 60 + + # Bring all CPUs online + 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/devices/system/cpu/cpu5/online 1 + write /sys/devices/system/cpu/cpu6/online 1 + write /sys/devices/system/cpu/cpu7/online 1 + + # Enable low power modes + write /sys/module/lpm_levels/parameters/sleep_disabled 0 + + # Per-process reclaim + write /sys/module/process_reclaim/parameters/enable_process_reclaim 1 + write /sys/module/process_reclaim/parameters/pressure_min 10 + write /sys/module/process_reclaim/parameters/per_swap_size 1024 + write /sys/module/process_reclaim/parameters/pressure_max 70 + write /sys/module/process_reclaim/parameters/swap_opt_eff 30 + + rm /data/system/perfd/default_values + start perfd + +on charger + write /sys/module/lpm_levels/parameters/sleep_disabled 0 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave" + +on class_start:late_start + trigger enable-low-power + +on property:init.svc.recovery=running + trigger enable-low-power + +on property:dev.bootcomplete=1 + setprop sys.io.scheduler bfq diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc index 520c1ab..32ed76c 100644 --- a/rootdir/etc/init.qcom.rc +++ b/rootdir/etc/init.qcom.rc @@ -53,6 +53,7 @@ on fs # msm specific files that need to be created on /data on post-fs-data + mkdir /data/fdAlbum 0770 camera camera mkdir /data/misc/camera 0770 camera camera #Create PERFD deamon related dirs @@ -341,6 +342,11 @@ service qmuxd /system/bin/qmuxd user root group radio audio bluetooth gps qcom_diag +service msm_irqbalance /system/bin/msm_irqbalance -f /system/vendor/etc/msm_irqbalance.conf + class core + user root + group root + service netmgrd /system/bin/netmgrd class main @@ -433,6 +439,16 @@ service dhcpcd_bnep4 /system/bin/dhcpcd -BKLG disabled oneshot +service dhcpcd_eth0 /system/bin/dhcpcd -aABDKL + class late_start + disabled + oneshot + +service iprenew_eth0 /system/bin/dhcpcd -n + class late_start + disabled + oneshot + service loc_launcher /system/bin/loc_launcher #loc_launcher will start as root and set its uid to gps class late_start diff --git a/rootdir/etc/ueventd.qcom.rc b/rootdir/etc/ueventd.qcom.rc index f3ab6d1..5b209c1 100644 --- a/rootdir/etc/ueventd.qcom.rc +++ b/rootdir/etc/ueventd.qcom.rc @@ -157,6 +157,7 @@ /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 @@ -168,6 +169,25 @@ /dev/tsc_ci0 0660 media media # sensors +/dev/yl_alsprox_sensor 0660 system system +/dev/yl_params1 0660 system 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/soc.0/78b6000.i2c/i2c-0/0-* accel_enable 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* accel_delay 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* calibration 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* debug 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* device_delay 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* enable_als_sensor 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* enable_ps_sensor 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* gyro_enable 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* gyro_delay 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* ps_calibration 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* reg 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 diff --git a/sepolicy/mm-qcamerad.te b/sepolicy/mm-qcamerad.te new file mode 100644 index 0000000..1078951 --- /dev/null +++ b/sepolicy/mm-qcamerad.te @@ -0,0 +1 @@ +allow mm-qcamerad camera_data_file:dir r_dir_perms; diff --git a/system.prop b/system.prop index 09c3d8d..60db1c5 100644 --- a/system.prop +++ b/system.prop @@ -1,3 +1,6 @@ +# Art +ro.sys.fw.dex2oat_thread_count=4 + # ActivityManager ro.config.max_starting_bg=8 ro.sys.fw.use_trim_settings=true @@ -22,7 +25,6 @@ debug.sf.gpu_comp_tiling=1 debug.mdpcomp.idletime=600 persist.hwc.mdpcomp.enable=true persist.hwc.ptor.enable=true -ro.opengles.version=196608 debug.enable.sglscale=1 # GPS @@ -48,8 +50,7 @@ persist.rild.nitz_short_ons_1= persist.rild.nitz_short_ons_2= persist.rild.nitz_short_ons_3= -# perf -ro.min_freq_0=800000 +# Perf ro.vendor.extension_library=libqti-perfd-client.so # Radio -- cgit v1.2.3