From d2b64dd57878890dd8335e450145608e7cfcd202 Mon Sep 17 00:00:00 2001 From: Vasishath Kaushal Date: Wed, 6 Jun 2018 21:00:07 +0530 Subject: [PATCH] whyred: add init library --- BoardConfig.mk | 4 ++ init/Android.mk | 28 ++++++++++++ init/init_sagit.cpp | 107 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+) create mode 100644 init/Android.mk create mode 100644 init/init_sagit.cpp diff --git a/BoardConfig.mk b/BoardConfig.mk index 4389ac3..68d84eb 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -151,6 +151,10 @@ OVERRIDE_RS_DRIVER := libRSDriver_adreno.so VSYNC_EVENT_PHASE_OFFSET_NS := 2000000 SF_VSYNC_EVENT_PHASE_OFFSET_NS := 6000000 +# Vendor init +TARGET_INIT_VENDOR_LIB := libinit_sagit +TARGET_RECOVERY_DEVICE_MODULES := libinit_sagit + # Wifi BOARD_HAS_QCOM_WLAN := true BOARD_HAS_QCOM_WLAN_SDK := true diff --git a/init/Android.mk b/init/Android.mk new file mode 100644 index 0000000..7ddd660 --- /dev/null +++ b/init/Android.mk @@ -0,0 +1,28 @@ + +# Copyright (C) 2016 The CyanogenMod Project +# Copyright (C) 2017 The LineageOS Project +# Copyright (C) 2018 The LineageOS Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +LOCAL_PATH:= $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := optional +LOCAL_C_INCLUDES := system/core/init +LOCAL_CFLAGS := -Wall -DANDROID_TARGET=\"$(TARGET_BOARD_PLATFORM)\" +LOCAL_SRC_FILES := init_sdm660.cpp +LOCAL_MODULE := libinit_sdm660 + +include $(BUILD_STATIC_LIBRARY) diff --git a/init/init_sagit.cpp b/init/init_sagit.cpp new file mode 100644 index 0000000..2f0ba32 --- /dev/null +++ b/init/init_sagit.cpp @@ -0,0 +1,107 @@ +/* + Copyright (c) 2015, The Linux Foundation. All rights reserved. + Copyright (C) 2016 The CyanogenMod Project. + 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 "vendor_init.h" +#include "property_service.h" +#include "log.h" +#include "util.h" + +char const *heapminfree; +char const *heapmaxfree; + +static void init_alarm_boot_properties() +{ + int boot_reason; + FILE *fp; + + fp = fopen("/proc/sys/kernel/boot_reason", "r"); + fscanf(fp, "%d", &boot_reason); + fclose(fp); + + /* + * 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 inserted + * 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 (boot_reason == 3) { + property_set("ro.alarm_boot", "true"); + } else { + property_set("ro.alarm_boot", "false"); + } +} + +void check_device() +{ + struct sysinfo sys; + + sysinfo(&sys); + + if (sys.totalram > 3072ull * 1024 * 1024) { + // from - phone-xxxhdpi-4096-dalvik-heap.mk + heapminfree = "4m"; + heapmaxfree = "16m"; + } else { + // from - phone-xxhdpi-3072-dalvik-heap.mk + heapminfree = "512k"; + heapmaxfree = "8m"; + } +} + +void vendor_load_properties() +{ + std::string platform; + + platform = property_get("ro.board.platform"); + if (platform != ANDROID_TARGET) + return; + + check_device(); + + property_set("dalvik.vm.heapstartsize", "8m"); + property_set("dalvik.vm.heapgrowthlimit", "256m"); + property_set("dalvik.vm.heapsize", "512m"); + property_set("dalvik.vm.heaptargetutilization", "0.75"); + property_set("dalvik.vm.heapminfree", heapminfree); + property_set("dalvik.vm.heapmaxfree", heapmaxfree); + + init_alarm_boot_properties(); +}