From 795d6b8cdcd8318cec106e520acd072b8b4313a5 Mon Sep 17 00:00:00 2001 From: Tom Marshall Date: Sun, 12 Oct 2014 19:52:00 +0300 Subject: otterx: Use pathmap for recovery Change-Id: I68e2b5e7d362c8942616fcccef3cb1a458ed4ded --- charger/Android.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charger/Android.mk b/charger/Android.mk index 260a0f9..ef7dedb 100644 --- a/charger/Android.mk +++ b/charger/Android.mk @@ -22,7 +22,7 @@ LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED) -LOCAL_C_INCLUDES := $(call include-path-for, recovery) +LOCAL_C_INCLUDES := $(call project-path-for,recovery) LOCAL_STATIC_LIBRARIES := libminui libpixelflinger_static libpng ifeq ($(strip $(BOARD_CHARGER_ENABLE_SUSPEND)),true) -- cgit v1.2.3 From d1a79bc1bdf5669de1281d70f846d872bf0687cf Mon Sep 17 00:00:00 2001 From: Michael Scott Date: Wed, 26 Nov 2014 15:56:36 -0800 Subject: otterx: fix partition sizes Signed-off-by: Michael Scott --- BoardConfig.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index b89720b..d1e65ec 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -35,8 +35,9 @@ TARGET_RECOVERY_FSTAB = $(DEVICE_FOLDER)/fstab.otterx RECOVERY_FSTAB_VERSION = 2 BOARD_BOOTIMAGE_PARTITION_SIZE := 10485760 BOARD_RECOVERYIMAGE_PARTITION_SIZE := 16777216 -BOARD_SYSTEMIMAGE_PARTITION_SIZE := 536870912 -BOARD_USERDATAIMAGE_PARTITION_SIZE := 1192230912 +BOARD_CACHEIMAGE_PARTITION_SIZE := 536870912 +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 801112064 +BOARD_USERDATAIMAGE_PARTITION_SIZE := 6083313664 # Recovery TARGET_RECOVERY_INITRC := $(DEVICE_FOLDER)/init.recovery.rc -- cgit v1.2.3 From f4822a6b2bbf1f00ae31f7533bb1ebbc217c935a Mon Sep 17 00:00:00 2001 From: Michael Scott Date: Wed, 26 Nov 2014 15:57:31 -0800 Subject: otterx: remove legacy charger Signed-off-by: Michael Scott --- charger/Android.mk | 74 -- charger/charger.c | 1344 ------------------------------------- charger/images/battery_0.png | Bin 1295 -> 0 bytes charger/images/battery_1.png | Bin 1290 -> 0 bytes charger/images/battery_2.png | Bin 1289 -> 0 bytes charger/images/battery_3.png | Bin 1291 -> 0 bytes charger/images/battery_4.png | Bin 1288 -> 0 bytes charger/images/battery_5.png | Bin 1267 -> 0 bytes charger/images/battery_charge.png | Bin 2475 -> 0 bytes charger/images/battery_fail.png | Bin 1805 -> 0 bytes 10 files changed, 1418 deletions(-) delete mode 100644 charger/Android.mk delete mode 100644 charger/charger.c delete mode 100644 charger/images/battery_0.png delete mode 100644 charger/images/battery_1.png delete mode 100644 charger/images/battery_2.png delete mode 100644 charger/images/battery_3.png delete mode 100644 charger/images/battery_4.png delete mode 100644 charger/images/battery_5.png delete mode 100644 charger/images/battery_charge.png delete mode 100644 charger/images/battery_fail.png diff --git a/charger/Android.mk b/charger/Android.mk deleted file mode 100644 index ef7dedb..0000000 --- a/charger/Android.mk +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2011 The Android Open Source Project - -ifneq ($(BUILD_TINY_ANDROID),true) - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - charger.c - -ifeq ($(strip $(BOARD_CHARGER_DISABLE_INIT_BLANK)),true) -LOCAL_CFLAGS := -DCHARGER_DISABLE_INIT_BLANK -endif - -ifeq ($(strip $(BOARD_CHARGER_ENABLE_SUSPEND)),true) -LOCAL_CFLAGS += -DCHARGER_ENABLE_SUSPEND -endif - -LOCAL_MODULE := charger_otterx -LOCAL_MODULE_TAGS := optional -LOCAL_FORCE_STATIC_EXECUTABLE := true -LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) -LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED) - -LOCAL_C_INCLUDES := $(call project-path-for,recovery) - -LOCAL_STATIC_LIBRARIES := libminui libpixelflinger_static libpng -ifeq ($(strip $(BOARD_CHARGER_ENABLE_SUSPEND)),true) -LOCAL_STATIC_LIBRARIES += libsuspend -endif -LOCAL_STATIC_LIBRARIES += libz libstdc++ libcutils liblog libm libc - -ifneq ($(BOARD_BATTERY_DEVICE_NAME),) -LOCAL_CFLAGS += -DBATTERY_DEVICE_NAME=\"$(BOARD_BATTERY_DEVICE_NAME)\" -endif - -ifeq ($(BOARD_ALLOW_SUSPEND_IN_CHARGER),true) -LOCAL_CFLAGS += -DALLOW_SUSPEND_IN_CHARGER -endif - -include $(BUILD_EXECUTABLE) - -define _add-charger-image -include $$(CLEAR_VARS) -LOCAL_MODULE := device_amazon_otterx_charger_$(notdir $(1)) -LOCAL_MODULE_STEM := $(notdir $(1)) -_img_modules += $$(LOCAL_MODULE) -LOCAL_SRC_FILES := $1 -LOCAL_MODULE_TAGS := optional -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $$(TARGET_ROOT_OUT)/res/images/charger -include $$(BUILD_PREBUILT) -endef - -_img_modules := -_images := -ifneq ($(BOARD_CHARGER_RES),) -$(foreach _img, $(call find-subdir-subdir-files, ../../../$(BOARD_CHARGER_RES), "*.png"), \ - $(eval $(call _add-charger-image,$(_img)))) -else -$(foreach _img, $(call find-subdir-subdir-files, "images", "*.png"), \ - $(eval $(call _add-charger-image,$(_img)))) -endif - -include $(CLEAR_VARS) -LOCAL_MODULE := charger_res_images_otterx -LOCAL_MODULE_TAGS := optional -LOCAL_REQUIRED_MODULES := $(_img_modules) -include $(BUILD_PHONY_PACKAGE) - -_add-charger-image := -_img_modules := - -endif diff --git a/charger/charger.c b/charger/charger.c deleted file mode 100644 index b3d5b2e..0000000 --- a/charger/charger.c +++ /dev/null @@ -1,1344 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define DEBUG_UEVENTS -#define CHARGER_KLOG_LEVEL 6 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#ifdef CHARGER_ENABLE_SUSPEND -#include -#endif - -#include "minui/minui.h" - -#include -#include -#include - -#ifndef max -#define max(a,b) ((a) > (b) ? (a) : (b)) -#endif - -#ifndef min -#define min(a,b) ((a) < (b) ? (a) : (b)) -#endif - -#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) - -#define MSEC_PER_SEC (1000LL) -#define NSEC_PER_MSEC (1000000LL) - -#define BATTERY_UNKNOWN_TIME (2 * MSEC_PER_SEC) -#define POWER_ON_KEY_TIME (2 * MSEC_PER_SEC) -#define UNPLUGGED_SHUTDOWN_TIME (10 * MSEC_PER_SEC) // shutdown 10 seconds w/o charger - -#define BATTERY_FULL_THRESH 95 - -#define BACKLIGHT_TOGGLE_PATH "/sys/class/leds/lcd-backlight/brightness" - -#define LAST_KMSG_PATH "/proc/last_kmsg" -#define LAST_KMSG_MAX_SZ (32 * 1024) - -#if 1 -#define LOGE(x...) do { KLOG_ERROR("charger", x); } while (0) -#define LOGI(x...) do { KLOG_INFO("charger", x); } while (0) -#define LOGV(x...) do { KLOG_DEBUG("charger", x); } while (0) -#else -#define LOG_NDEBUG 0 -#define LOG_TAG "charger" -#include -#endif - -#define SYS_POWER_STATE "/sys/power/state" - -static const struct option OPTIONS[] = { - { "mode", required_argument, NULL, 'm' }, - { NULL, 0, NULL, 0 }, -}; - -enum MODE { - NORMAL = 0, - QUICKBOOT, -}; - -int mode = NORMAL; - -struct key_state { - bool pending; - bool down; - int64_t timestamp; -}; - -struct power_supply { - struct listnode list; - char name[256]; - char type[32]; - bool online; - bool valid; - char cap_path[PATH_MAX]; -}; - -struct frame { - const char *name; - int disp_time; - int min_capacity; - bool level_only; - - gr_surface surface; -}; - -struct animation { - bool run; - - struct frame *frames; - int cur_frame; - int num_frames; - - int cur_cycle; - int num_cycles; - - /* current capacity being animated */ - int capacity; -}; - -struct charger { - int64_t next_screen_transition; - int64_t next_key_check; - int64_t next_pwr_check; - - struct key_state keys[KEY_MAX + 1]; - int uevent_fd; - - struct listnode supplies; - int num_supplies; - int num_supplies_online; - - struct animation *batt_anim; - gr_surface surf_unknown; - - struct power_supply *battery; -}; - -struct uevent { - const char *action; - const char *path; - const char *subsystem; - const char *ps_name; - const char *ps_type; - const char *ps_online; -}; - -static struct frame batt_anim_frames[] = { - { - .name = "charger/battery_0", - .disp_time = 750, - .min_capacity = 0, - }, - { - .name = "charger/battery_1", - .disp_time = 750, - .min_capacity = 20, - }, - { - .name = "charger/battery_2", - .disp_time = 750, - .min_capacity = 40, - }, - { - .name = "charger/battery_3", - .disp_time = 750, - .min_capacity = 60, - }, - { - .name = "charger/battery_4", - .disp_time = 750, - .min_capacity = 80, - .level_only = true, - }, - { - .name = "charger/battery_5", - .disp_time = 750, - .min_capacity = BATTERY_FULL_THRESH, - }, -}; - -static struct animation battery_animation = { - .frames = batt_anim_frames, - .num_frames = ARRAY_SIZE(batt_anim_frames), - .num_cycles = 3, -}; - -static struct charger charger_state = { - .batt_anim = &battery_animation, -}; - -static int char_width; -static int char_height; - -/*On certain targets the FBIOBLANK ioctl does not turn off the - * backlight. In those cases we need to manually toggle it on/off - */ -static int set_backlight(int toggle) -{ - int fd; - char buffer[10]; - - memset(buffer, '\0', sizeof(buffer)); - fd = open(BACKLIGHT_TOGGLE_PATH, O_RDWR); - if (fd < 0) { - LOGE("Could not open backlight node : %s", strerror(errno)); - goto cleanup; - } - if (toggle) { - LOGI("Enabling backlight"); - snprintf(buffer, sizeof(int), "%d\n", 100); - } else { - LOGI("Disabling backlight"); - snprintf(buffer, sizeof(int), "%d\n", 0); - } - if (write(fd, buffer,strlen(buffer)) < 0) { - LOGE("Could not write to backlight node : %s", strerror(errno)); - goto cleanup; - } -cleanup: - if (fd >= 0) - close(fd); - return 0; -} -/* current time in milliseconds */ -static int64_t curr_time_ms(void) -{ - struct timespec tm; - clock_gettime(CLOCK_MONOTONIC, &tm); - return tm.tv_sec * MSEC_PER_SEC + (tm.tv_nsec / NSEC_PER_MSEC); -} - -static void clear_screen(void) -{ - gr_color(0, 0, 0, 255); - gr_fill(0, 0, gr_fb_width(), gr_fb_height()); -}; - -#define MAX_KLOG_WRITE_BUF_SZ 256 - -static void dump_last_kmsg(void) -{ - char *buf; - char *ptr; - unsigned sz = 0; - int len; - - LOGI("\n"); - LOGI("*************** LAST KMSG ***************\n"); - LOGI("\n"); - buf = load_file(LAST_KMSG_PATH, &sz); - if (!buf || !sz) { - LOGI("last_kmsg not found. Cold reset?\n"); - goto out; - } - - len = min(sz, LAST_KMSG_MAX_SZ); - ptr = buf + (sz - len); - - while (len > 0) { - int cnt = min(len, MAX_KLOG_WRITE_BUF_SZ); - char yoink; - char *nl; - - nl = memrchr(ptr, '\n', cnt - 1); - if (nl) - cnt = nl - ptr + 1; - - yoink = ptr[cnt]; - ptr[cnt] = '\0'; - klog_write(6, "<6>%s", ptr); - ptr[cnt] = yoink; - - len -= cnt; - ptr += cnt; - } - - free(buf); - -out: - LOGI("\n"); - LOGI("************* END LAST KMSG *************\n"); - LOGI("\n"); -} - -static int read_file(const char *path, char *buf, size_t sz) -{ - int fd; - size_t cnt; - - fd = open(path, O_RDONLY, 0); - if (fd < 0) - goto err; - - cnt = read(fd, buf, sz - 1); - if (cnt <= 0) - goto err; - buf[cnt] = '\0'; - if (buf[cnt - 1] == '\n') { - cnt--; - buf[cnt] = '\0'; - } - - close(fd); - return cnt; - -err: - if (fd >= 0) - close(fd); - return -1; -} - -static int read_file_int(const char *path, int *val) -{ - char buf[32]; - int ret; - int tmp; - char *end; - - ret = read_file(path, buf, sizeof(buf)); - if (ret < 0) - return -1; - - tmp = strtol(buf, &end, 0); - if (end == buf || - ((end < buf+sizeof(buf)) && (*end != '\n' && *end != '\0'))) - goto err; - - *val = tmp; - return 0; - -err: - return -1; -} - -static int write_file(const char *path, char *buf, size_t sz) -{ - int fd; - size_t cnt; - - fd = open(path, O_WRONLY, 0); - if (fd < 0) - goto err; - - cnt = write(fd, buf, sz); - if (cnt <= 0) - goto err; - - close(fd); - return cnt; - -err: - if (fd >= 0) - close(fd); - return -1; -} - -static int get_battery_capacity(struct charger *charger) -{ - int ret; - int batt_cap = -1; - - if (!charger->battery) - return -1; - - ret = read_file_int(charger->battery->cap_path, &batt_cap); - if (ret < 0 || batt_cap > 100) { - batt_cap = -1; - } - - return batt_cap; -} - -static struct power_supply *find_supply(struct charger *charger, - const char *name) -{ - struct listnode *node; - struct power_supply *supply; - - list_for_each(node, &charger->supplies) { - supply = node_to_item(node, struct power_supply, list); - if (!strncmp(name, supply->name, sizeof(supply->name))) - return supply; - } - return NULL; -} - -static struct power_supply *add_supply(struct charger *charger, - const char *name, const char *type, - const char *path, bool online) -{ - struct power_supply *supply; - - supply = calloc(1, sizeof(struct power_supply)); - if (!supply) - return NULL; - - strlcpy(supply->name, name, sizeof(supply->name)); - strlcpy(supply->type, type, sizeof(supply->type)); - snprintf(supply->cap_path, sizeof(supply->cap_path), - "/sys/%s/capacity", path); - supply->online = online; - list_add_tail(&charger->supplies, &supply->list); - charger->num_supplies++; - LOGV("... added %s %s %d\n", supply->name, supply->type, online); - return supply; -} - -static void remove_supply(struct charger *charger, struct power_supply *supply) -{ - if (!supply) - return; - list_remove(&supply->list); - charger->num_supplies--; - free(supply); -} - -#ifdef CHARGER_ENABLE_SUSPEND -static int request_suspend(bool enable) -{ - if (enable) - return autosuspend_enable(); - else - return autosuspend_disable(); -} -#else -static int request_suspend(bool enable) -{ - return 0; -} -#endif - -static void parse_uevent(const char *msg, struct uevent *uevent) -{ - uevent->action = ""; - uevent->path = ""; - uevent->subsystem = ""; - uevent->ps_name = ""; - uevent->ps_online = ""; - uevent->ps_type = ""; - - /* currently ignoring SEQNUM */ - while (*msg) { -#ifdef DEBUG_UEVENTS - LOGV("uevent str: %s\n", msg); -#endif - if (!strncmp(msg, "ACTION=", 7)) { - msg += 7; - uevent->action = msg; - } else if (!strncmp(msg, "DEVPATH=", 8)) { - msg += 8; - uevent->path = msg; - } else if (!strncmp(msg, "SUBSYSTEM=", 10)) { - msg += 10; - uevent->subsystem = msg; - } else if (!strncmp(msg, "POWER_SUPPLY_NAME=", 18)) { - msg += 18; - uevent->ps_name = msg; - } else if (!strncmp(msg, "POWER_SUPPLY_ONLINE=", 20)) { - msg += 20; - uevent->ps_online = msg; - } else if (!strncmp(msg, "POWER_SUPPLY_TYPE=", 18)) { - msg += 18; - uevent->ps_type = msg; - } - - /* advance to after the next \0 */ - while (*msg++) - ; - } - - LOGV("event { '%s', '%s', '%s', '%s', '%s', '%s' }\n", - uevent->action, uevent->path, uevent->subsystem, - uevent->ps_name, uevent->ps_type, uevent->ps_online); -} - -static void process_ps_uevent(struct charger *charger, struct uevent *uevent) -{ - int online; - char ps_type[32]; - struct power_supply *supply = NULL; - int i; - bool was_online = false; - bool battery = false; - - if (uevent->ps_type[0] == '\0') { - char *path; - int ret; - - if (uevent->path[0] == '\0') - return; - ret = asprintf(&path, "/sys/%s/type", uevent->path); - if (ret <= 0) - return; - ret = read_file(path, ps_type, sizeof(ps_type)); - free(path); - if (ret < 0) - return; - } else { - strlcpy(ps_type, uevent->ps_type, sizeof(ps_type)); - } - -#ifdef BATTERY_DEVICE_NAME - // We only want to look at one device - if (strcmp(BATTERY_DEVICE_NAME, uevent->ps_name) != 0) - return; -#endif - - if (!strncmp(ps_type, "Battery", 7)) - battery = true; - - online = atoi(uevent->ps_online); - supply = find_supply(charger, uevent->ps_name); - if (supply) { - was_online = supply->online; - supply->online = online; - } - - if (!strcmp(uevent->action, "add")) { - if (!supply) { - supply = add_supply(charger, uevent->ps_name, ps_type, uevent->path, - online); - if (!supply) { - LOGE("cannot add supply '%s' (%s %d)\n", uevent->ps_name, - uevent->ps_type, online); - return; - } - /* only pick up the first battery for now */ - if (battery && !charger->battery) - charger->battery = supply; - } else { - LOGE("supply '%s' already exists..\n", uevent->ps_name); - } - } else if (!strcmp(uevent->action, "remove")) { - if (supply) { - if (charger->battery == supply) - charger->battery = NULL; - remove_supply(charger, supply); - supply = NULL; - } - } else if (!strcmp(uevent->action, "change")) { - if (!supply) { - LOGE("power supply '%s' not found ('%s' %d)\n", - uevent->ps_name, ps_type, online); - } - } else { - return; - } - - /* allow battery to be managed in the supply list but make it not - * contribute to online power supplies. */ -#ifndef BATTERY_DEVICE_NAME - if (!battery) { -#endif - if (was_online && !online) - charger->num_supplies_online--; - else if (supply && !was_online && online) - charger->num_supplies_online++; -#ifndef BATTERY_DEVICE_NAME - } -#endif - LOGI("power supply %s (%s) %s (action=%s num_online=%d num_supplies=%d)\n", - uevent->ps_name, ps_type, battery ? "" : online ? "online" : "offline", - uevent->action, charger->num_supplies_online, charger->num_supplies); -} - -static void process_uevent(struct charger *charger, struct uevent *uevent) -{ - if (!strcmp(uevent->subsystem, "power_supply")) - process_ps_uevent(charger, uevent); -} - -#define UEVENT_MSG_LEN 1024 -static int handle_uevent_fd(struct charger *charger, int fd) -{ - char msg[UEVENT_MSG_LEN+2]; - int n; - - if (fd < 0) - return -1; - - while (true) { - struct uevent uevent; - - n = uevent_kernel_multicast_recv(fd, msg, UEVENT_MSG_LEN); - if (n <= 0) - break; - if (n >= UEVENT_MSG_LEN) /* overflow -- discard */ - continue; - - msg[n] = '\0'; - msg[n+1] = '\0'; - - parse_uevent(msg, &uevent); - process_uevent(charger, &uevent); - } - - return 0; -} - -static int uevent_callback(int fd, short revents, void *data) -{ - struct charger *charger = data; - - if (!(revents & POLLIN)) - return -1; - return handle_uevent_fd(charger, fd); -} - -/* force the kernel to regenerate the change events for the existing - * devices, if valid */ -static void do_coldboot(struct charger *charger, DIR *d, const char *event, - bool follow_links, int max_depth) -{ - struct dirent *de; - int dfd, fd; - - dfd = dirfd(d); - - fd = openat(dfd, "uevent", O_WRONLY); - if (fd >= 0) { - write(fd, event, strlen(event)); - close(fd); - handle_uevent_fd(charger, charger->uevent_fd); - } - - while ((de = readdir(d)) && max_depth > 0) { - DIR *d2; - - LOGV("looking at '%s'\n", de->d_name); - - if ((de->d_type != DT_DIR && !(de->d_type == DT_LNK && follow_links)) || - de->d_name[0] == '.') { - LOGV("skipping '%s' type %d (depth=%d follow=%d)\n", - de->d_name, de->d_type, max_depth, follow_links); - continue; - } - LOGV("can descend into '%s'\n", de->d_name); - - fd = openat(dfd, de->d_name, O_RDONLY | O_DIRECTORY); - if (fd < 0) { - LOGE("cannot openat %d '%s' (%d: %s)\n", dfd, de->d_name, - errno, strerror(errno)); - continue; - } - - d2 = fdopendir(fd); - if (d2 == 0) - close(fd); - else { - LOGV("opened '%s'\n", de->d_name); - do_coldboot(charger, d2, event, follow_links, max_depth - 1); - closedir(d2); - } - } -} - -static void coldboot(struct charger *charger, const char *path, - const char *event) -{ - char str[256]; - - LOGV("doing coldboot '%s' in '%s'\n", event, path); - DIR *d = opendir(path); - if (d) { - snprintf(str, sizeof(str), "%s\n", event); - do_coldboot(charger, d, str, true, 1); - closedir(d); - } -} - -static int draw_text(const char *str, int x, int y) -{ - int str_len_px = gr_measure(str); - - if (x < 0) - x = (gr_fb_width() - str_len_px) / 2; - if (y < 0) - y = (gr_fb_height() - char_height) / 2; - gr_text(x, y, str, 0); - - return y + char_height; -} - -static void android_green(void) -{ - gr_color(0xa4, 0xc6, 0x39, 255); -} - -static void draw_capacity(struct charger *charger) -{ - char cap_str[64]; - int x, y; - int str_len_px; - - snprintf(cap_str, sizeof(cap_str), "%d%%", charger->batt_anim->capacity); - str_len_px = gr_measure(cap_str); - x = (gr_fb_width() - str_len_px) / 2; - y = (gr_fb_height() + char_height) / 2; - android_green(); - gr_text(x, y, cap_str, 0); -} - -/* returns the last y-offset of where the surface ends */ -static int draw_surface_centered(struct charger *charger, gr_surface surface) -{ - int w; - int h; - int x; - int y; - - w = gr_get_width(surface); - h = gr_get_height(surface); - x = (gr_fb_width() - w) / 2 ; - y = (gr_fb_height() - h) / 2 ; - - LOGV("drawing surface %dx%d+%d+%d\n", w, h, x, y); - gr_blit(surface, 0, 0, w, h, x, y); - return y + h; -} - -static void draw_unknown(struct charger *charger) -{ - int y; - if (charger->surf_unknown) { - draw_surface_centered(charger, charger->surf_unknown); - } else { - android_green(); - y = draw_text("Charging!", -1, -1); - draw_text("?\?/100", -1, y + 25); - } -} - -static void draw_battery(struct charger *charger) -{ - struct animation *batt_anim = charger->batt_anim; - struct frame *frame = &batt_anim->frames[batt_anim->cur_frame]; - - if (batt_anim->num_frames != 0) { - draw_surface_centered(charger, frame->surface); - LOGV("drawing frame #%d name=%s min_cap=%d time=%d\n", - batt_anim->cur_frame, frame->name, frame->min_capacity, - frame->disp_time); - } -} - -static void redraw_screen(struct charger *charger) -{ - struct animation *batt_anim = charger->batt_anim; - - clear_screen(); - - /* try to display *something* */ - if (batt_anim->capacity < 0 || batt_anim->num_frames == 0) - draw_unknown(charger); - else { - draw_battery(charger); - draw_capacity(charger); - } - gr_flip(); -} - -static void kick_animation(struct animation *anim) -{ -#ifdef ALLOW_SUSPEND_IN_CHARGER - write_file(SYS_POWER_STATE, "on", strlen("on")); -#endif - anim->run = true; -} - -static void reset_animation(struct animation *anim) -{ - anim->cur_cycle = 0; - anim->cur_frame = 0; - anim->run = false; -} - -static void update_screen_state(struct charger *charger, int64_t now) -{ - struct animation *batt_anim = charger->batt_anim; - int cur_frame; - int disp_time; - - if (!batt_anim->run || now < charger->next_screen_transition) - return; - - /* animation is over, blank screen and leave */ - if (batt_anim->cur_cycle == batt_anim->num_cycles) { - reset_animation(batt_anim); - charger->next_screen_transition = -1; - set_backlight(false); - gr_fb_blank(true); - -#ifdef ALLOW_SUSPEND_IN_CHARGER - write_file(SYS_POWER_STATE, "mem", strlen("mem")); -#endif - - LOGV("[%lld] animation done\n", now); - if (charger->num_supplies_online > 0) - request_suspend(true); - return; - } - - disp_time = batt_anim->frames[batt_anim->cur_frame].disp_time; - - /* animation starting, set up the animation */ - if (batt_anim->cur_frame == 0) { - int batt_cap; - int ret; - - LOGV("[%lld] animation starting\n", now); - batt_cap = get_battery_capacity(charger); - if (batt_cap >= 0 && batt_anim->num_frames != 0) { - int i; - - /* find first frame given current capacity */ - for (i = 1; i < batt_anim->num_frames; i++) { - if (batt_cap < batt_anim->frames[i].min_capacity) - break; - } - batt_anim->cur_frame = i - 1; - - /* show the first frame for twice as long */ - disp_time = batt_anim->frames[batt_anim->cur_frame].disp_time * 2; - } - - batt_anim->capacity = batt_cap; - } - - /* unblank the screen on first cycle */ - if (batt_anim->cur_cycle == 0) { - gr_fb_blank(false); - set_backlight(true); - } - - - /* draw the new frame (@ cur_frame) */ - redraw_screen(charger); - - /* if we don't have anim frames, we only have one image, so just bump - * the cycle counter and exit - */ - if (batt_anim->num_frames == 0 || batt_anim->capacity < 0) { - LOGV("[%lld] animation missing or unknown battery status\n", now); - charger->next_screen_transition = now + BATTERY_UNKNOWN_TIME; - batt_anim->cur_cycle++; - return; - } - - /* schedule next screen transition */ - charger->next_screen_transition = now + disp_time; - - /* advance frame cntr to the next valid frame - * if necessary, advance cycle cntr, and reset frame cntr - */ - batt_anim->cur_frame++; - - /* if the frame is used for level-only, that is only show it when it's - * the current level, skip it during the animation. - */ - while (batt_anim->cur_frame < batt_anim->num_frames && - batt_anim->frames[batt_anim->cur_frame].level_only) - batt_anim->cur_frame++; - if (batt_anim->cur_frame >= batt_anim->num_frames) { - batt_anim->cur_cycle++; - batt_anim->cur_frame = 0; - - /* don't reset the cycle counter, since we use that as a signal - * in a test above to check if animation is over - */ - } -} - -static int set_key_callback(int code, int value, void *data) -{ - struct charger *charger = data; - int64_t now = curr_time_ms(); - int down = !!value; - - if (code > KEY_MAX) - return -1; - - /* ignore events that don't modify our state */ - if (charger->keys[code].down == down) - return 0; - - /* only record the down even timestamp, as the amount - * of time the key spent not being pressed is not useful */ - if (down) - charger->keys[code].timestamp = now; - charger->keys[code].down = down; - charger->keys[code].pending = true; - if (down) { - LOGV("[%lld] key[%d] down\n", now, code); - } else { - int64_t duration = now - charger->keys[code].timestamp; - int64_t secs = duration / 1000; - int64_t msecs = duration - secs * 1000; - LOGV("[%lld] key[%d] up (was down for %lld.%lldsec)\n", now, - code, secs, msecs); - } - - return 0; -} - -static void update_input_state(struct charger *charger, - struct input_event *ev) -{ - if (ev->type != EV_KEY) - return; - set_key_callback(ev->code, ev->value, charger); -} - -static void set_next_key_check(struct charger *charger, - struct key_state *key, - int64_t timeout) -{ - int64_t then = key->timestamp + timeout; - - if (charger->next_key_check == -1 || then < charger->next_key_check) - charger->next_key_check = then; -} - -static void process_key(struct charger *charger, int code, int64_t now) -{ - struct animation *batt_anim = charger->batt_anim; - struct key_state *key = &charger->keys[code]; - int64_t next_key_check; - - if (code == KEY_POWER) { - if (key->down) { - int64_t reboot_timeout = key->timestamp + POWER_ON_KEY_TIME; - if (now >= reboot_timeout) { - LOGI("[%lld] rebooting\n", now); - android_reboot(ANDROID_RB_RESTART, 0, 0); - } else { - /* if the key is pressed but timeout hasn't expired, - * make sure we wake up at the right-ish time to check - */ - set_next_key_check(charger, key, POWER_ON_KEY_TIME); - } - } else { - /* if the power key got released, force screen state cycle */ - if (key->pending) { - if (!batt_anim->run) { - request_suspend(false); - kick_animation(charger->batt_anim); - } else { - reset_animation(batt_anim); - charger->next_screen_transition = -1; - set_backlight(false); - gr_fb_blank(true); - if (charger->num_supplies_online > 0) - request_suspend(true); - } - } - } - } else { - if (key->pending) { - request_suspend(false); - kick_animation(charger->batt_anim); - } - } - - key->pending = false; -} - -static void handle_input_state(struct charger *charger, int64_t now) -{ - process_key(charger, KEY_POWER, now); - process_key(charger, KEY_HOME, now); - process_key(charger, KEY_HOMEPAGE, now); - - if (charger->next_key_check != -1 && now > charger->next_key_check) - charger->next_key_check = -1; -} - -static void handle_power_supply_state(struct charger *charger, int64_t now) -{ - if (charger->num_supplies_online == 0) { - request_suspend(false); - if (charger->next_pwr_check == -1) { - if (mode == QUICKBOOT) { - set_backlight(false); - gr_fb_blank(true); - request_suspend(true); - /* exit here. There is no need to keep running when charger - * unplugged under QuickBoot mode - */ - exit(0); - } - charger->next_pwr_check = now + UNPLUGGED_SHUTDOWN_TIME; - LOGI("[%lld] device unplugged: shutting down in %lld (@ %lld)\n", - now, UNPLUGGED_SHUTDOWN_TIME, charger->next_pwr_check); - } else if (now >= charger->next_pwr_check) { - LOGI("[%lld] shutting down\n", now); - android_reboot(ANDROID_RB_POWEROFF, 0, 0); - } else { - /* otherwise we already have a shutdown timer scheduled */ - } - } else { - /* online supply present, reset shutdown timer if set */ - if (charger->next_pwr_check != -1) { - LOGI("[%lld] device plugged in: shutdown cancelled\n", now); - kick_animation(charger->batt_anim); - } - charger->next_pwr_check = -1; - } -} - -static void wait_next_event(struct charger *charger, int64_t now) -{ - int64_t next_event = INT64_MAX; - int64_t timeout; - struct input_event ev; - int ret; - - LOGV("[%lld] next screen: %lld next key: %lld next pwr: %lld\n", now, - charger->next_screen_transition, charger->next_key_check, - charger->next_pwr_check); - - if (charger->next_screen_transition != -1) - next_event = charger->next_screen_transition; - if (charger->next_key_check != -1 && charger->next_key_check < next_event) - next_event = charger->next_key_check; - if (charger->next_pwr_check != -1 && charger->next_pwr_check < next_event) - next_event = charger->next_pwr_check; - - if (next_event != -1 && next_event != INT64_MAX) - timeout = max(0, next_event - now); - else - timeout = -1; - LOGV("[%lld] blocking (%lld)\n", now, timeout); - ret = ev_wait((int)timeout); - if (!ret) - ev_dispatch(); -} - -static int input_callback(int fd, short revents, void *data) -{ - struct charger *charger = data; - struct input_event ev; - int ret; - - ret = ev_get_input(fd, revents, &ev); - if (ret) - return -1; - update_input_state(charger, &ev); - return 0; -} - -static void event_loop(struct charger *charger) -{ - int ret; - - while (true) { - int64_t now = curr_time_ms(); - - LOGV("[%lld] event_loop()\n", now); - handle_input_state(charger, now); - handle_power_supply_state(charger, now); - - /* do screen update last in case any of the above want to start - * screen transitions (animations, etc) - */ - update_screen_state(charger, now); - - wait_next_event(charger, now); - } -} - -static int alarm_open_alm_dev() -{ - int fd; - - fd = open("/dev/alarm", O_RDWR); - if(fd < 0 ) - LOGE("Can't open alarm devfs node\n"); - - return fd; -} - -static void alarm_close_alm_dev(int fd) -{ - close(fd); -} - -static int alarm_open_rtc_dev() -{ - int fd; - - fd = open("/dev/rtc0", O_RDWR); - if (fd < 0 ) - LOGE("Can't open rtc devfs node\n"); - - return fd; -} - -static void alarm_close_rtc_dev(int fd) -{ - close(fd); -} - -static int alarm_set_reboot_time(int fd, int type, time_t secs) -{ - struct timespec ts; - ts.tv_sec = secs; - ts.tv_nsec = 0; - int ret; - - ret = ioctl(fd, ANDROID_ALARM_SET(type), &ts); - if (ret < 0) - LOGE("Unable to set reboot time to %d\n", secs); - return ret; -} - -static int alarm_get_alm_time(int fd, time_t *secs) -{ - struct tm alm_tm; - int ret; - - ret = ioctl(fd, RTC_ALM_READ, &alm_tm); - if (ret < 0) { - LOGE("Unable to get alarm time\n"); - goto err; - } - - *secs = mktime(&alm_tm) + alm_tm.tm_gmtoff; - if (*secs < 0) { - LOGE("Invalid alarm seconds = %ld\n", *secs); - goto err; - } - - return 0; - -err: - return -1; -} - -static int alarm_get_rtc_time(int fd, time_t *secs) -{ - struct tm rtc_tm; - int ret; - - ret = ioctl(fd, RTC_RD_TIME, &rtc_tm); - if (ret < 0) { - LOGE("Unable to get rtc time\n"); - goto err; - } - - *secs = mktime(&rtc_tm) + rtc_tm.tm_gmtoff; - if (*secs < 0) { - LOGE("Invalid rtc seconds = %ld\n", *secs); - goto err; - } - - return 0; - -err: - return -1; -} - -static int alarm_wait(int fd) -{ - int ret = 0; - - do { - ret = ioctl(fd, ANDROID_ALARM_WAIT); - } while (ret < 0 && errno == EINTR); - - if (ret < 0) { - LOGE("Unable to wait on alarm\n"); - return 0; - } - - return ret; -} - -static void alarm_reboot() -{ - android_reboot(ANDROID_RB_RESTART, 0, 0); -} - -void *alarm_thread(void *p) -{ - int alm_fd, rtc_fd, ret; - time_t g_alm_secs, g_rtc_secs, s_rb_secs; - - rtc_fd = alarm_open_rtc_dev(); - if (rtc_fd < 0) - goto rtc_err; - - ret = alarm_get_alm_time(rtc_fd, &g_alm_secs); - if (ret < 0 || !g_alm_secs) - goto rtc_err; - - ret = alarm_get_rtc_time(rtc_fd, &g_rtc_secs); - if (ret < 0) - goto rtc_err; - - s_rb_secs = g_alm_secs - g_rtc_secs; - if (s_rb_secs <= 0) - goto rtc_err; - - alm_fd = alarm_open_alm_dev(); - if (alm_fd < 0) - goto rtc_err; - - ret = alarm_set_reboot_time(alm_fd, - ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP, - s_rb_secs); - if (ret < 0) - goto alm_err; - - ret = alarm_wait(alm_fd); - if (ret) { - LOGI("Exit from power off charging, reboot the phone!\n"); - alarm_reboot(); - } - -alm_err: - alarm_close_alm_dev(alm_fd); - -rtc_err: - alarm_close_rtc_dev(rtc_fd); - - LOGE("Exit from alarm thread\n"); - return NULL; -} - -void alarm_thread_create() -{ - pthread_t tid; - int ret; - - ret = pthread_create(&tid, NULL, alarm_thread, NULL); - if (ret < 0) - LOGE("Create alarm thread failed\n"); -} - -int main(int argc, char **argv) -{ - int ret; - struct charger *charger = &charger_state; - int64_t now = curr_time_ms() - 1; - int fd; - int i; - - list_init(&charger->supplies); - - klog_init(); - klog_set_level(CHARGER_KLOG_LEVEL); - - dump_last_kmsg(); - - int arg; - while ((arg=getopt_long(argc, argv,"m:" , OPTIONS, NULL))!=-1) { - switch (arg) { - case 'm': - mode = atoi(optarg); - break; - case '?': - LOGI("invalid argument\n"); - continue; - default: - LOGI("nothing to do\n"); - continue; - } - } - - if (mode != QUICKBOOT) - alarm_thread_create(); - - LOGI("--------------- STARTING CHARGER MODE ---------------\n"); - - gr_init(); - gr_font_size(&char_width, &char_height); - - ev_init(input_callback, charger); - - fd = uevent_open_socket(64*1024, true); - if (fd >= 0) { - fcntl(fd, F_SETFL, O_NONBLOCK); - ev_add_fd(fd, uevent_callback, charger); - } - charger->uevent_fd = fd; - coldboot(charger, "/sys/class/power_supply", "add"); - - ret = res_create_display_surface("charger/battery_fail", &charger->surf_unknown); - if (ret < 0) { - LOGE("Cannot load image\n"); - charger->surf_unknown = NULL; - } - - for (i = 0; i < charger->batt_anim->num_frames; i++) { - struct frame *frame = &charger->batt_anim->frames[i]; - - ret = res_create_display_surface(frame->name, &frame->surface); - if (ret < 0) { - LOGE("Cannot load image %s\n", frame->name); - /* TODO: free the already allocated surfaces... */ - charger->batt_anim->num_frames = 0; - charger->batt_anim->num_cycles = 1; - break; - } - } - - ev_sync_key_state(set_key_callback, charger); - -#ifndef CHARGER_DISABLE_INIT_BLANK - set_backlight(false); - gr_fb_blank(true); -#endif - - charger->next_screen_transition = now - 1; - charger->next_key_check = -1; - charger->next_pwr_check = -1; - reset_animation(charger->batt_anim); - kick_animation(charger->batt_anim); - - event_loop(charger); - - return 0; -} diff --git a/charger/images/battery_0.png b/charger/images/battery_0.png deleted file mode 100644 index 2347074..0000000 Binary files a/charger/images/battery_0.png and /dev/null differ diff --git a/charger/images/battery_1.png b/charger/images/battery_1.png deleted file mode 100644 index cd34620..0000000 Binary files a/charger/images/battery_1.png and /dev/null differ diff --git a/charger/images/battery_2.png b/charger/images/battery_2.png deleted file mode 100644 index 3e4095e..0000000 Binary files a/charger/images/battery_2.png and /dev/null differ diff --git a/charger/images/battery_3.png b/charger/images/battery_3.png deleted file mode 100644 index 08c1551..0000000 Binary files a/charger/images/battery_3.png and /dev/null differ diff --git a/charger/images/battery_4.png b/charger/images/battery_4.png deleted file mode 100644 index 3a678da..0000000 Binary files a/charger/images/battery_4.png and /dev/null differ diff --git a/charger/images/battery_5.png b/charger/images/battery_5.png deleted file mode 100644 index d8dc40e..0000000 Binary files a/charger/images/battery_5.png and /dev/null differ diff --git a/charger/images/battery_charge.png b/charger/images/battery_charge.png deleted file mode 100644 index b501933..0000000 Binary files a/charger/images/battery_charge.png and /dev/null differ diff --git a/charger/images/battery_fail.png b/charger/images/battery_fail.png deleted file mode 100644 index 36fc254..0000000 Binary files a/charger/images/battery_fail.png and /dev/null differ -- cgit v1.2.3 From 1deec63cbe4b8d8c499a2233ec1370bad9f97de9 Mon Sep 17 00:00:00 2001 From: Michael Scott Date: Wed, 26 Nov 2014 15:58:03 -0800 Subject: otterx: build: remove custom charger and re-add stock charger graphics Signed-off-by: Michael Scott --- device.mk | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/device.mk b/device.mk index 5f114dd..ae06b7b 100644 --- a/device.mk +++ b/device.mk @@ -49,9 +49,8 @@ PRODUCT_COPY_FILES += \ # Misc PRODUCT_PACKAGES += \ sdcard \ - setup_fs \ - charger_otterx \ - charger_res_images_otterx + charger_res_images \ + setup_fs # F2FS PRODUCT_PACKAGES += \ -- cgit v1.2.3 From b5b6c8d2f57b5e5d8c0216c57d9c5b7759746cd0 Mon Sep 17 00:00:00 2001 From: Michael Scott Date: Wed, 26 Nov 2014 15:58:43 -0800 Subject: otterx: use static bbx (busybox) for mac script Signed-off-by: Michael Scott --- prebuilt/bin/fix-mac.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/prebuilt/bin/fix-mac.sh b/prebuilt/bin/fix-mac.sh index fdc5ade..b02c544 100644 --- a/prebuilt/bin/fix-mac.sh +++ b/prebuilt/bin/fix-mac.sh @@ -7,7 +7,8 @@ NVS_BIN=/system/etc/firmware/ti-connectivity/wl1271-nvs.bin if [ ! -f "$NVS_BIN" ]; then mount -o remount,rw /system cp ${ORIG_NVS_BIN} ${NVS_BIN} - calibrator set nvs_mac $NVS_BIN $(getprop ro.boot.wifimac | sed 's/../&:/g;s/:$//') + calibrator set nvs_mac $NVS_BIN $(getprop ro.boot.wifimac | bbx sed 's/../&:/g;s/:$//') + chmod 644 ${NVS_BIN} mount -o remount,ro /system fi -- cgit v1.2.3 From 4e42a4345c9e111f527c6f1365039202d93c60bc Mon Sep 17 00:00:00 2001 From: Michael Scott Date: Wed, 26 Nov 2014 15:59:14 -0800 Subject: otterx: init.otterx.rc changes for Android L Signed-off-by: Michael Scott --- init.otterx.rc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/init.otterx.rc b/init.otterx.rc index 028305d..6b6032c 100644 --- a/init.otterx.rc +++ b/init.otterx.rc @@ -1,7 +1,11 @@ import init.otterx.usb.rc +on early-init + mount debugfs debugfs /sys/kernel/debug + symlink /data/tombstones /tombstones + on init - loglevel 8 + loglevel 7 # See storage config details at http://source.android.com/tech/storage/ mkdir /mnt/shell/emulated 0700 shell shell @@ -98,6 +102,8 @@ on fs chown system system /sys/class/power_supply/usb/device/float_voltage chown system system /sys/class/power_supply/usb/device/bad_battery + chown root system /proc/net/ip_conntrack + on post-fs # wi-fi setprop wifi.interface "wlan0" @@ -175,7 +181,7 @@ service hwprops /sbin/hwprops oneshot # initialize the SGX driver -service pvrsrvinit /system/vendor/bin/pvrsrvinit +service pvrsrvinit /system/bin/pvrsrvinit class core user root group root @@ -209,6 +215,8 @@ service smc_pa /system/bin/smc_pa_ctrl \ service p2p_supplicant /system/bin/wpa_supplicant -e/data/misc/wifi/entropy.bin \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -N \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ + -I/system/etc/wifi/p2p_supplicant_overlay.conf \ + -O/data/misc/wifi/sockets -puse_p2p_group_interface=1 \ -g@android:wpa_wlan0 class main socket wpa_wlan0 dgram 660 wifi wifi @@ -217,7 +225,7 @@ service p2p_supplicant /system/bin/wpa_supplicant -e/data/misc/wifi/entropy.bin service wpa_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -e/data/misc/wifi/entropy.bin \ - -g@android:wpa_wlan0 + -O/data/misc/wifi/sockets -g@android:wpa_wlan0 class main socket wpa_wlan0 dgram 660 wifi wifi disabled @@ -267,8 +275,10 @@ service hostapd_bin /system/bin/hostapd -d -e/data/misc/wifi/entropy.bin /data/m service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated class late_start -service charger /charger_otterx +service charger /sbin/healthd -c class charger + critical + seclabel u:r:healthd:s0 #on property:init.svc.smc_pa=stopped # start tf_daemon -- cgit v1.2.3 From 4059b5e29abebf0129953340a6d3915cb619d4f6 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 9 Dec 2014 15:15:07 -0800 Subject: recovery: remove hard-coded init.rc for recovery Replace with flexible device-based init.recovery.*.rc file Change-Id: I606ba84d2e1b17a008f67c6dcc8fbd708b8201d4 --- device.mk | 1 + init.recovery.otterx.rc | 11 +++++ init.recovery.rc | 114 ------------------------------------------------ 3 files changed, 12 insertions(+), 114 deletions(-) create mode 100644 init.recovery.otterx.rc delete mode 100644 init.recovery.rc diff --git a/device.mk b/device.mk index ae06b7b..d41bfff 100644 --- a/device.mk +++ b/device.mk @@ -32,6 +32,7 @@ PRODUCT_COPY_FILES += \ $(DEVICE_FOLDER)/fstab.otterx:/root/fstab.otterx \ $(DEVICE_FOLDER)/init.otterx.rc:/root/init.otterx.rc \ $(DEVICE_FOLDER)/init.otterx.usb.rc:/root/init.otterx.usb.rc \ + $(DEVICE_FOLDER)/init.recovery.otterx.rc:/root/init.recovery.otterx.rc \ $(DEVICE_FOLDER)/ueventd.otterx.rc:/root/ueventd.otterx.rc # Prebuilt system/bin diff --git a/init.recovery.otterx.rc b/init.recovery.otterx.rc new file mode 100644 index 0000000..66351be --- /dev/null +++ b/init.recovery.otterx.rc @@ -0,0 +1,11 @@ +on early-init + setenforce permissive + loglevel 7 + +on fs +# compatibility w/ 2.6 kernels + symlink /dev/block/platform/omap/omap_hsmmc.1 /dev/block/platform/mmci-omap-hs.1 + +on boot + write /sys/class/android_usb/android0/idVendor 1949 + write /sys/class/android_usb/android0/idProduct 0006 diff --git a/init.recovery.rc b/init.recovery.rc deleted file mode 100644 index f76c253..0000000 --- a/init.recovery.rc +++ /dev/null @@ -1,114 +0,0 @@ -import /init.recovery.${ro.hardware}.rc - -on early-init - start ueventd - start healthd - -on init - export PATH /sbin:/system/bin - export LD_LIBRARY_PATH .:/sbin - export ANDROID_ROOT /system - export ANDROID_DATA /data - export EXTERNAL_STORAGE /sdcard - - symlink /system/etc /etc - - mkdir /boot - mkdir /recovery - mkdir /sdcard - mkdir /internal_sd - mkdir /external_sd - mkdir /sd-ext - mkdir /datadata - mkdir /emmc - mkdir /system - mkdir /data - mkdir /cache - mount tmpfs tmpfs /tmp - - chown root shell /tmp - chmod 0775 /tmp - - mkdir /mnt 0775 root system - mkdir /storage 0050 root sdcard_r - mount tmpfs tmpfs /storage mode=0050,uid=0,gid=1028 - - # See storage config details at http://source.android.com/tech/storage/ - mkdir /mnt/shell 0700 shell shell - - # Directory for putting things only root should see. - mkdir /mnt/secure 0700 root root - - # Create private mountpoint so we can MS_MOVE from staging - mount tmpfs tmpfs /mnt/secure mode=0700,uid=0,gid=0 - - # Directory for staging bindmounts - mkdir /mnt/secure/staging 0700 root root - - # Fuse public mount points. - mkdir /mnt/fuse 0700 root system - mount tmpfs tmpfs /mnt/fuse mode=0775,gid=1000 - - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 1949 - write /sys/class/android_usb/android0/idProduct 0004 - write /sys/class/android_usb/android0/functions adb - write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer} - write /sys/class/android_usb/android0/iProduct ${ro.product.model} - write /sys/class/android_usb/android0/iSerial ${ro.serialno} - - -# compatibility w/ 2.6 kernels - symlink /dev/block/platform/omap/omap_hsmmc.1 /dev/block/platform/mmci-omap-hs.1 - -on boot - - ifup lo - hostname localhost - domainname localdomain - - class_start default - -on property:sys.powerctl=* - powerctl ${sys.powerctl} - -on property:sys.storage.ums_enabled=1 - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/functions adb,mass_storage - write /sys/class/android_usb/android0/enable 1 - -on property:sys.storage.ums_enabled=0 - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/functions adb - write /sys/class/android_usb/android0/enable ${service.adb.root} - -service ueventd /sbin/ueventd - critical - -service healthd /sbin/healthd -n - critical - -service recovery /sbin/recovery - -service setup_adbd /sbin/setup_adbd - oneshot - -service adbd /sbin/adbd recovery - disabled - socket adbd stream 660 system system - -service vold /sbin/minivold - socket vold stream 0660 root mount - ioprio be 2 - -# Always start adbd on userdebug and eng builds -on property:ro.debuggable=1 - #write /sys/class/android_usb/android0/enable 1 - #start adbd - setprop service.adb.root 1 - -# Restart adbd so it can run as root -on property:service.adb.root=1 - write /sys/class/android_usb/android0/enable 0 - restart adbd - write /sys/class/android_usb/android0/enable 1 -- cgit v1.2.3 From 21f75fda3e11c73791afb4b2729b81330fb0a813 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 9 Dec 2014 15:15:48 -0800 Subject: BoardConfig: recovery settings cleanup Change-Id: I4758bc5d4548f3c32636eefe361dd302693ed8d7 --- BoardConfig.mk | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index d1e65ec..3067924 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -31,7 +31,11 @@ TARGET_KERNEL_SOURCE := kernel/amazon/otter-common TARGET_KERNEL_CONFIG := otterx_android_defconfig # Filesystem +ifeq ($(RECOVERY_VARIANT),twrp) +TARGET_RECOVERY_FSTAB = $(DEVICE_FOLDER)/twrp.fstab +else TARGET_RECOVERY_FSTAB = $(DEVICE_FOLDER)/fstab.otterx +endif RECOVERY_FSTAB_VERSION = 2 BOARD_BOOTIMAGE_PARTITION_SIZE := 10485760 BOARD_RECOVERYIMAGE_PARTITION_SIZE := 16777216 @@ -40,9 +44,7 @@ BOARD_SYSTEMIMAGE_PARTITION_SIZE := 801112064 BOARD_USERDATAIMAGE_PARTITION_SIZE := 6083313664 # Recovery -TARGET_RECOVERY_INITRC := $(DEVICE_FOLDER)/init.recovery.rc -BOARD_ALWAYS_INSECURE := true -TW_INTERNAL_STORAGE_PATH := "/data/media" +TW_INTERNAL_STORAGE_PATH := "/data/media/0" TW_INTERNAL_STORAGE_MOUNT_POINT := "data" BOARD_HAS_NO_REAL_SDCARD := true RECOVERY_SDCARD_ON_DATA := true -- cgit v1.2.3 From 12c1af46283b075b39da832f9422b617a80123e1 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 9 Dec 2014 15:16:59 -0800 Subject: init.*.rc: insmod wl12xx_sdio module In previous commit in otter-common we removed framework insertion settings. Let's manually insert the wl12xx_sdio module during boot up. Change-Id: If71771c3884d3617b77f5fae99b5af6c2a368710 --- init.otterx.rc | 1 + 1 file changed, 1 insertion(+) diff --git a/init.otterx.rc b/init.otterx.rc index 6b6032c..15637a6 100644 --- a/init.otterx.rc +++ b/init.otterx.rc @@ -113,6 +113,7 @@ on post-fs insmod /system/lib/modules/cfg80211.ko insmod /system/lib/modules/mac80211.ko insmod /system/lib/modules/wl12xx.ko + insmod /system/lib/modules/wl12xx_sdio.ko # symlink egl.cfg symlink /sys/egl/egl.cfg /system/lib/egl/egl.cfg -- cgit v1.2.3 From 10ce283a1e5aef784f385a8a62c9343d2a1ec6e4 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 9 Dec 2014 15:18:26 -0800 Subject: init.*.rc: remove CPU downclock setting Especially since there aren't any overclock settings in AOSP/CM atm. Change-Id: Icc802068f5b3960453a8784244e508d8508bd092 --- init.otterx.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.otterx.rc b/init.otterx.rc index 15637a6..03c60da 100644 --- a/init.otterx.rc +++ b/init.otterx.rc @@ -89,7 +89,7 @@ on fs chown system system /sys/class/leds/led-orange/brightness # Set default maximum of 1008 on cpu0 (peformance settings will change this if set by user) - write /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 1008000 +# write /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 1008000 #Give system ownership and permission to boost clock for specified timeout #Note boost_timeout cannot be changed from application because of dynamic sysfs creation. It will have default value of 3 sec. -- cgit v1.2.3 From b17c6a248b7c8072323416d1ef2f8cb8d808c5db Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 23 Dec 2014 12:08:23 -0800 Subject: otterx: update TWRP setup Change-Id: I0810204afdb4e6517525c953164cfa8597c7269e --- BoardConfig.mk | 4 ---- device.mk | 10 ++++++---- recovery/root/etc/twrp.fstab | 8 ++++++++ twrp.fstab | 9 --------- 4 files changed, 14 insertions(+), 17 deletions(-) create mode 100644 recovery/root/etc/twrp.fstab delete mode 100644 twrp.fstab diff --git a/BoardConfig.mk b/BoardConfig.mk index 3067924..8d35107 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -31,11 +31,7 @@ TARGET_KERNEL_SOURCE := kernel/amazon/otter-common TARGET_KERNEL_CONFIG := otterx_android_defconfig # Filesystem -ifeq ($(RECOVERY_VARIANT),twrp) -TARGET_RECOVERY_FSTAB = $(DEVICE_FOLDER)/twrp.fstab -else TARGET_RECOVERY_FSTAB = $(DEVICE_FOLDER)/fstab.otterx -endif RECOVERY_FSTAB_VERSION = 2 BOARD_BOOTIMAGE_PARTITION_SIZE := 10485760 BOARD_RECOVERYIMAGE_PARTITION_SIZE := 16777216 diff --git a/device.mk b/device.mk index d41bfff..01b1a5d 100644 --- a/device.mk +++ b/device.mk @@ -43,16 +43,18 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ $(DEVICE_FOLDER)/prebuilt/etc/firmware/ducati-m3.512MB.bin:/system/etc/firmware/ducati-m3.512MB.bin -# Recovery -PRODUCT_COPY_FILES += \ - $(DEVICE_FOLDER)/twrp.fstab:recovery/root/etc/twrp.fstab - # Misc PRODUCT_PACKAGES += \ sdcard \ charger_res_images \ setup_fs +# Recovery USB +PRODUCT_PROPERTY_OVERRIDES += \ + usb.vendor=1949 \ + usb.product.adb=0006 \ + usb.product.mtpadb=0006 + # F2FS PRODUCT_PACKAGES += \ mkfs.f2fs \ diff --git a/recovery/root/etc/twrp.fstab b/recovery/root/etc/twrp.fstab new file mode 100644 index 0000000..424f91f --- /dev/null +++ b/recovery/root/etc/twrp.fstab @@ -0,0 +1,8 @@ +# mount point fstype device flags +/data f2fs /dev/block/mmcblk0p12 flags=length=-16384;fsflags="inline_xattr" +/cache ext4 /dev/block/mmcblk0p11 +/system ext4 /dev/block/mmcblk0p9 +/boot emmc /dev/block/mmcblk0p7 +/recovery emmc /dev/block/mmcblk0p5 +/bootloader emmc /dev/block/mmcblk0p2 + diff --git a/twrp.fstab b/twrp.fstab deleted file mode 100644 index a8272cb..0000000 --- a/twrp.fstab +++ /dev/null @@ -1,9 +0,0 @@ -# mount point fstype device flags - -/data f2fs /dev/block/mmcblk0p12 flags=fsflags="inline_xattr" -/cache ext4 /dev/block/mmcblk0p11 -/system ext4 /dev/block/mmcblk0p9 -/boot emmc /dev/block/mmcblk0p7 -/recovery emmc /dev/block/mmcblk0p5 -/bootloader emmc /dev/block/mmcblk0p2 - -- cgit v1.2.3 From 0a5ae9fc9e528f6e4f30b46cee5e595492e137f8 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 23 Dec 2014 12:10:33 -0800 Subject: otterx: clean out properties, packages and settings which are now moved to common Change-Id: I4cd3d34f2eb2c2aed9380dbd1c5c70b96bc82d60 --- BoardConfig.mk | 2 -- device.mk | 14 +------------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index 8d35107..257c8e8 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -44,8 +44,6 @@ TW_INTERNAL_STORAGE_PATH := "/data/media/0" TW_INTERNAL_STORAGE_MOUNT_POINT := "data" BOARD_HAS_NO_REAL_SDCARD := true RECOVERY_SDCARD_ON_DATA := true -TARGET_USERIMAGES_USE_EXT4 := true -TARGET_USERIMAGES_USE_F2FS := true # Enable dalvik startup with a low memory footprint TARGET_ARCH_LOWMEM := true diff --git a/device.mk b/device.mk index 01b1a5d..0e272c3 100644 --- a/device.mk +++ b/device.mk @@ -45,9 +45,7 @@ PRODUCT_COPY_FILES += \ # Misc PRODUCT_PACKAGES += \ - sdcard \ - charger_res_images \ - setup_fs + charger_res_images # Recovery USB PRODUCT_PROPERTY_OVERRIDES += \ @@ -55,16 +53,6 @@ PRODUCT_PROPERTY_OVERRIDES += \ usb.product.adb=0006 \ usb.product.mtpadb=0006 -# F2FS -PRODUCT_PACKAGES += \ - mkfs.f2fs \ - fsck.f2fs \ - fibmap.f2fs - # Mark as low ram device PRODUCT_PROPERTY_OVERRIDES += \ ro.config.low_ram=true - -# Enable KSM by default -PRODUCT_PROPERTY_OVERRIDES += \ - ro.ksm.default=1 -- cgit v1.2.3 From 91f8957ad00b6b6f2ea4af837ef346e62be15abc Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 23 Dec 2014 12:12:00 -0800 Subject: otterx: adjust userdata size for encryption footer on EXT4 Change-Id: Ibb94b532ef7622ebb125a7ad53fef87b01ff12d4 --- BoardConfig.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index 257c8e8..509e22e 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -37,7 +37,7 @@ BOARD_BOOTIMAGE_PARTITION_SIZE := 10485760 BOARD_RECOVERYIMAGE_PARTITION_SIZE := 16777216 BOARD_CACHEIMAGE_PARTITION_SIZE := 536870912 BOARD_SYSTEMIMAGE_PARTITION_SIZE := 801112064 -BOARD_USERDATAIMAGE_PARTITION_SIZE := 6083313664 +BOARD_USERDATAIMAGE_PARTITION_SIZE := 6083296830 # Recovery TW_INTERNAL_STORAGE_PATH := "/data/media/0" -- cgit v1.2.3 From 2282b6b745faa2bac4ac0253f664b5934c90e718 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 23 Dec 2014 12:12:30 -0800 Subject: otterx: use new kernel defconfig settings Change-Id: I96b604ce9beac8e5bceb73b873acd33f8826595e --- BoardConfig.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index 509e22e..b44eaab 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -28,7 +28,8 @@ TARGET_OTA_ASSERT_DEVICE := otterx # Kernel Build TARGET_KERNEL_SOURCE := kernel/amazon/otter-common -TARGET_KERNEL_CONFIG := otterx_android_defconfig +TARGET_KERNEL_CONFIG := android_omap4_defconfig +TARGET_KERNEL_VARIANT_CONFIG := android_otterx_defconfig # Filesystem TARGET_RECOVERY_FSTAB = $(DEVICE_FOLDER)/fstab.otterx -- cgit v1.2.3 From 5a32223423a56a19d646a8af4b11b2ae09345e3c Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 23 Dec 2014 12:13:10 -0800 Subject: otterx: add dalvik settings back under devices This allows otter2 to use a larger dalvik pool (1GB Mem) Change-Id: If171a9bf02e543fbf073363e358191a0eaf14552 --- device.mk | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/device.mk b/device.mk index 0e272c3..5aed797 100644 --- a/device.mk +++ b/device.mk @@ -56,3 +56,12 @@ PRODUCT_PROPERTY_OVERRIDES += \ # Mark as low ram device PRODUCT_PROPERTY_OVERRIDES += \ ro.config.low_ram=true + +# Dalvik settings +PRODUCT_PROPERTY_OVERRIDES += \ + dalvik.vm.heapstartsize=5m \ + dalvik.vm.heapgrowthlimit=48m \ + dalvik.vm.heapsize=256m \ + dalvik.vm.heaptargetutilization=0.75 \ + dalvik.vm.heapminfree=512k \ + dalvik.vm.heapmaxfree=2m \ No newline at end of file -- cgit v1.2.3 From 22881c746d5d8e4a41253f3a9bbeb0eed46036c7 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 23 Dec 2014 12:14:19 -0800 Subject: otterx: remove old resampler setting Change-Id: Ib279182ac6b54cc0cd10c8745fc83ff89b8ba365 --- system.prop | 1 - 1 file changed, 1 deletion(-) diff --git a/system.prop b/system.prop index ab8c1e6..0b9498e 100644 --- a/system.prop +++ b/system.prop @@ -4,6 +4,5 @@ ro.cwm.forbid_format = /bootloader,/dfs,/backup,/splash omap.audio.mic.main=AMic0 omap.audio.mic.sub=AMic1 omap.audio.power=PingPong -af.resampler.quality=3 sys.mem.max_hidden_apps=10 -- cgit v1.2.3 From b14597a3df189139d62dde237d3d078e0acd909d Mon Sep 17 00:00:00 2001 From: Hashcode Date: Tue, 23 Dec 2014 12:15:33 -0800 Subject: otterx: ramdisk changes - fstab cleanup - use common omap4 and otter-common init.*.rc files - cleanup usb settings Change-Id: Iae7c81dfb1d7684bcd309d21ac71084636df07f2 --- fstab.otterx | 18 ++-- init.otterx.rc | 260 ++--------------------------------------------------- init.otterx.usb.rc | 18 ++-- 3 files changed, 19 insertions(+), 277 deletions(-) diff --git a/fstab.otterx b/fstab.otterx index 029a4bd..04481ea 100644 --- a/fstab.otterx +++ b/fstab.otterx @@ -1,12 +1,12 @@ # Android fstab file. -# +# # The filesystem that contains the filesystem checker binary (typically /system) cannot # specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK -/dev/block/platform/omap/omap_hsmmc.1/by-name/system /system ext4 rw,nodev,noatime,errors=continue wait -/dev/block/platform/omap/omap_hsmmc.1/by-name/userdata /data f2fs rw,discard,nosuid,nodev,noatime,nodiratime,inline_xattr wait,nonremovable,check,encryptable=footer,length=-16384 -/dev/block/platform/omap/omap_hsmmc.1/by-name/cache /cache ext4 rw,nosuid,nodev,noatime,errors=continue wait,check -/dev/block/platform/omap/omap_hsmmc.1/by-name/boot /boot emmc defaults defaults -/dev/block/platform/omap/omap_hsmmc.1/by-name/recovery /recovery emmc defaults defaults -/dev/block/platform/omap/omap_hsmmc.1/by-name/bootloader /bootloader emmc defaults defaults - -/dev/block/zram0 none swap defaults zramsize=134217728 +/dev/block/platform/omap/omap_hsmmc.1/by-name/system /system ext4 rw,nodev,noatime,errors=continue wait +/dev/block/platform/omap/omap_hsmmc.1/by-name/userdata /data f2fs rw,discard,nosuid,nodev,noatime,nodiratime,inline_xattr wait,nonremovable,check,encryptable=footer,length=-16384 +/dev/block/platform/omap/omap_hsmmc.1/by-name/userdata /data ext4 rw,discard,nosuid,nodev,noatime wait,check,encryptable=footer,length=-16384 +/dev/block/platform/omap/omap_hsmmc.1/by-name/cache /cache ext4 rw,discard,nosuid,nodev,noatime wait,check +/dev/block/platform/omap/omap_hsmmc.1/by-name/boot /boot emmc defaults defaults +/dev/block/platform/omap/omap_hsmmc.1/by-name/recovery /recovery emmc defaults defaults +/dev/block/platform/omap/omap_hsmmc.1/by-name/bootloader /bootloader emmc defaults defaults +/dev/block/zram0 none swap defaults zramsize=67108864 diff --git a/init.otterx.rc b/init.otterx.rc index 03c60da..2b0c3e2 100644 --- a/init.otterx.rc +++ b/init.otterx.rc @@ -1,16 +1,8 @@ +import init.otter-common.rc +import init.omap4.rc import init.otterx.usb.rc -on early-init - mount debugfs debugfs /sys/kernel/debug - symlink /data/tombstones /tombstones - on init - loglevel 7 - - # See storage config details at http://source.android.com/tech/storage/ - mkdir /mnt/shell/emulated 0700 shell shell - mkdir /storage/emulated 0555 root root - export EXTERNAL_STORAGE /storage/emulated/legacy export EMULATED_STORAGE_SOURCE /mnt/shell/emulated export EMULATED_STORAGE_TARGET /storage/emulated @@ -21,258 +13,26 @@ on init symlink /storage/emulated/legacy /storage/sdcard0 symlink /mnt/shell/emulated/0 /storage/emulated/legacy - # create removable USB Mass Storage mountpoints - mkdir /storage/usb0 0555 root root - mkdir /storage/usb1 0555 root root - on fs + # zRAM read only 1 page at a time + write /proc/sys/vm/page-cluster 0 + mkdir /factory 0775 radio radio mount_all /fstab.otterx swapon_all /fstab.otterx setprop ro.crypto.fuse_sdcard true - # zRAM read only 1 page at a time - write /proc/sys/vm/page-cluster 0 - - # pvr module - insmod /system/lib/modules/pvrsrvkm_sgx540_120.ko - insmod /system/lib/modules/omaplfb_sgx540_120.ko - start pvrsrvinit - - # change permissions for mtd device - chmod 0660 /dev/mtd/mtd0 - chown media media /dev/mtd/mtd0 - - # change permissions for i2c-2 device - chmod 0660 /dev/i2c-2 - chown media media /dev/i2c-2 - - # change permissions for Tiler driver - chmod 0777 /dev/tiler - chmod 0777 /dev/dmm - - # change permissions for ION driver - chmod 0777 /dev/ion - - # change permissions for rfkill - chmod 0777 /dev/rfkill - # We chown/chmod /factory because mount is run as root + defaults chown radio radio /factory chmod 0775 /factory - # change permissions for Sensors - # bma250 - chown system system /sys/bus/i2c/devices/4-0018/delay - chmod 0771 /sys/bus/i2c/devices/4-0018/delay - chown system system /sys/bus/i2c/devices/4-0018/enable - chmod 0771 /sys/bus/i2c/devices/4-0018/enable - # stk-als22x7 - chown system system /sys/bus/i2c/devices/4-0010/enable - chmod 0771 /sys/bus/i2c/devices/4-0010/enable - - # change permissions for Thermal sensor TMP105 - chmod 0777 /sys/class/hwmon/hwmon0/device/temp1_max - chmod 0777 /sys/class/hwmon/hwmon0/device/temp1_max_hyst - - # change permissions for Tiler driver - chown media media /dev/tiler - chmod 0666 /dev/tiler - - # LEDs - chmod 0777 /dev/ilitek_ctrl - chmod 0777 /sys/class/leds/lcd-backlight/brightness - chmod 0666 /sys/class/leds/led-green/brightness - chmod 0666 /sys/class/leds/led-orange/brightness - chown system system /sys/class/leds/lcd-backlight/brightness - chown system system /sys/class/leds/led-green/brightness - chown system system /sys/class/leds/led-orange/brightness - - # Set default maximum of 1008 on cpu0 (peformance settings will change this if set by user) -# write /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 1008000 - - #Give system ownership and permission to boost clock for specified timeout - #Note boost_timeout cannot be changed from application because of dynamic sysfs creation. It will have default value of 3 sec. - chown system system /sys/devices/system/cpu/cpu0/cpufreq/boost_cpufreq - chmod 0664 /sys/devices/system/cpu/cpu0/cpufreq/boost_cpufreq - - # Set current permissions for charge protection - chown system system /sys/class/power_supply/usb/device/charge_command - chown system system /sys/class/power_supply/usb/device/charge_current - chown system system /sys/class/power_supply/usb/device/float_voltage - chown system system /sys/class/power_supply/usb/device/bad_battery - - chown root system /proc/net/ip_conntrack - -on post-fs - # wi-fi - setprop wifi.interface "wlan0" - setprop softap.interface "wlan0" - - insmod /system/lib/modules/compat.ko - insmod /system/lib/modules/cfg80211.ko - insmod /system/lib/modules/mac80211.ko - insmod /system/lib/modules/wl12xx.ko - insmod /system/lib/modules/wl12xx_sdio.ko - - # symlink egl.cfg - symlink /sys/egl/egl.cfg /system/lib/egl/egl.cfg - on post-fs-data mkdir /data/media 0770 media_rw media_rw - mkdir /data/tmp 0777 system system - symlink /data/tmp /tmp - - # make dir for trace - mkdir /cache/trace 0777 system system - chmod 0777 /cache/trace - - # wifi - mkdir /data/misc/wifi 0770 wifi wifi - mkdir /data/misc/wifi/sockets 0770 wifi wifi - mkdir /data/misc/dhcp 0770 dhcp dhcp - chown dhcp dhcp /data/misc/dhcp - mkdir /data/smc 0770 drmrpc drmrpc - chown drmrpc drmrpc /data/smc/counter.bin - chown drmrpc drmrpc /data/smc/storage.bin - chown drmrpc drmrpc /data/smc/system.bin - - # run mac script - start fixmac - - # mount system ro - mount ext4 /dev/block/platform/omap/omap_hsmmc.1/by-name/system /system ro remount - - setprop vold.post_fs_data_done 1 on charger wait /dev/block/platform/omap/omap_hsmmc.1/by-name/system mount ext4 /dev/block/platform/omap/omap_hsmmc.1/by-name/system /system ro barrier=1 -on boot - mount debugfs /sys/kernel/debug /sys/kernel/debug - chmod 0666 /dev/pvrsrvkm - setprop ro.radio.noril yes - -# fake some battery state - setprop status.battery.state Slow - setprop status.battery.level 5 - setprop status.battery.level_raw 50 - setprop status.battery.level_scale 9 - -# create filesystems if necessary -#service setup_fs /system/bin/setup_fs \ -# /dev/block/platform/omap/omap_hsmmc.1/by-name/cache \ -# /dev/block/platform/omap/omap_hsmmc.1/by-name/userdata -# class core -# user root -# group root -# oneshot - -service fixmac /system/bin/fix-mac.sh - class core - user root - group root - oneshot - disabled - -service hwprops /sbin/hwprops - critical - disabled - oneshot - -# initialize the SGX driver -service pvrsrvinit /system/bin/pvrsrvinit - class core - user root - group root - oneshot - disabled - -################################################### -# MSHIELD SMC Daemon - component required to store persistent data coming -# from the SMC PA to the device persistent storage -################################################### -service tf_daemon /system/bin/tf_daemon \ - -d -c /vendor/etc/smc_normal_world_android_cfg.ini - class main - user root - group root - oneshot - disabled - -################################################### -# MSHIELD SMC PA Control - installs the SMC PA into the Secure Environment -################################################### -service smc_pa /system/bin/smc_pa_ctrl \ - -c /vendor/etc/smc_normal_world_android_cfg.ini \ - start /vendor/firmware/smc_pa.ift - class core - user root - group root - oneshot - -# wifi services -service p2p_supplicant /system/bin/wpa_supplicant -e/data/misc/wifi/entropy.bin \ - -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -N \ - -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ - -I/system/etc/wifi/p2p_supplicant_overlay.conf \ - -O/data/misc/wifi/sockets -puse_p2p_group_interface=1 \ - -g@android:wpa_wlan0 - class main - socket wpa_wlan0 dgram 660 wifi wifi - disabled - oneshot - -service wpa_supplicant /system/bin/wpa_supplicant \ - -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -e/data/misc/wifi/entropy.bin \ - -O/data/misc/wifi/sockets -g@android:wpa_wlan0 - class main - socket wpa_wlan0 dgram 660 wifi wifi - disabled - oneshot - -service dhcpcd_wlan0 /system/bin/dhcpcd -ABKL - class main - disabled - oneshot - -service iprenew_wlan0 /system/bin/dhcpcd -n - class main - disabled - oneshot - -service dhcpcd_p2p /system/bin/dhcpcd -aABKL - class main - disabled - oneshot - -service iprenew_p2p /system/bin/dhcpcd -n - class main - disabled - oneshot - -service dhcpcd_eth0 /system/bin/dhcpcd -ABKL - class main - disabled - oneshot - -service dhcpcd_bnep0 /system/bin/dhcpcd -ABKL - class main - disabled - oneshot - -service iprenew_bnep0 /system/bin/dhcpcd -n - class main - disabled - oneshot - -service hostapd_bin /system/bin/hostapd -d -e/data/misc/wifi/entropy.bin /data/misc/wifi/hostapd.conf - socket wpa_wlan0 dgram 660 wifi wifi - class main - disabled - oneshot - service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated class late_start @@ -280,13 +40,3 @@ service charger /sbin/healthd -c class charger critical seclabel u:r:healthd:s0 - -#on property:init.svc.smc_pa=stopped -# start tf_daemon - -#service watchdog /sbin/watchdog -# user root -# oneshot - -on property:sys.boot_completed=1 - diff --git a/init.otterx.usb.rc b/init.otterx.usb.rc index d1626f7..4f85cef 100644 --- a/init.otterx.usb.rc +++ b/init.otterx.usb.rc @@ -1,17 +1,14 @@ -on boot +on init write /sys/class/android_usb/android0/iManufacturer Amazon write /sys/class/android_usb/android0/iProduct "Kindle" write /sys/class/android_usb/android0/iSerial ${ro.serialno} write /sys/class/android_usb/android0/idVendor 1949 write /sys/class/android_usb/android0/idProduct 0006 + write /sys/class/android_usb/android0/f_rndis/manufacturer Amazon + write /sys/class/android_usb/android0/f_rndis/vendorID 1949 + write /sys/class/android_usb/android0/f_rndis/wceis 1 write /sys/class/android_usb/f_mass_storage/inquiry_string "Amazon Kindle 0100" -on property:sys.usb.config=none - stop adbd - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/bDeviceClass 0 - setprop sys.usb.state ${sys.usb.config} - on property:sys.usb.config=adb write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 1949 @@ -89,9 +86,4 @@ on property:sys.usb.config=mass_storage,adb write /sys/class/android_usb/android0/functions ${sys.usb.config} write /sys/class/android_usb/android0/enable 1 start adbd - setprop sys.usb.state $sys.usb.config - -on property:service.adb.root=1 - write /sys/class/android_usb/android0/enable 0 - restart adbd - write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} -- cgit v1.2.3 From d9088e9d7a1c3b2400b15a92fee3a1e9b84e4b1b Mon Sep 17 00:00:00 2001 From: Hashcode Date: Mon, 16 Feb 2015 21:47:41 -0800 Subject: swap from PROP_OVERRIDE to ADDITIONAL_BUILD_PROPERTIES No need to use custom build flags here. Standard append of properties works. Change-Id: I92944e2443f45286886c64b290d560392d08d40c --- device.mk | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/device.mk b/device.mk index 5aed797..1279bcf 100644 --- a/device.mk +++ b/device.mk @@ -48,20 +48,20 @@ PRODUCT_PACKAGES += \ charger_res_images # Recovery USB -PRODUCT_PROPERTY_OVERRIDES += \ +ADDITIONAL_BUILD_PROPERTIES += \ usb.vendor=1949 \ usb.product.adb=0006 \ usb.product.mtpadb=0006 # Mark as low ram device -PRODUCT_PROPERTY_OVERRIDES += \ +ADDITIONAL_BUILD_PROPERTIES += \ ro.config.low_ram=true # Dalvik settings -PRODUCT_PROPERTY_OVERRIDES += \ +ADDITIONAL_BUILD_PROPERTIES += \ dalvik.vm.heapstartsize=5m \ dalvik.vm.heapgrowthlimit=48m \ dalvik.vm.heapsize=256m \ dalvik.vm.heaptargetutilization=0.75 \ dalvik.vm.heapminfree=512k \ - dalvik.vm.heapmaxfree=2m \ No newline at end of file + dalvik.vm.heapmaxfree=2m -- cgit v1.2.3 From 7c5bf58309f99dc3311f0d8ed34805e7af380d5c Mon Sep 17 00:00:00 2001 From: Hashcode Date: Mon, 16 Feb 2015 21:48:33 -0800 Subject: remove device specific HAL Now that hardware/ti/omap4 is in place, let's use common omap4 HALs Change-Id: I00e3a086977684654a6b73fcb543ad9ae352061b --- device.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/device.mk b/device.mk index 1279bcf..9c2a6c7 100644 --- a/device.mk +++ b/device.mk @@ -21,7 +21,6 @@ DEVICE_PACKAGE_OVERLAYS += $(DEVICE_FOLDER)/overlay # Hardware HALs PRODUCT_PACKAGES += \ - hwcomposer.otterx \ lights.otterx \ power.otterx \ audio.primary.otterx \ -- cgit v1.2.3 From 4947236d4afaa8f6e287d77cf56b0d7c4b42de98 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Mon, 16 Feb 2015 21:49:42 -0800 Subject: move VM setting to omap4-common init.rc Change-Id: I5238718314d00e575fda4893bb14a72ec4d39cef --- init.otterx.rc | 3 --- 1 file changed, 3 deletions(-) diff --git a/init.otterx.rc b/init.otterx.rc index 2b0c3e2..1d209b3 100644 --- a/init.otterx.rc +++ b/init.otterx.rc @@ -14,9 +14,6 @@ on init symlink /mnt/shell/emulated/0 /storage/emulated/legacy on fs - # zRAM read only 1 page at a time - write /proc/sys/vm/page-cluster 0 - mkdir /factory 0775 radio radio mount_all /fstab.otterx swapon_all /fstab.otterx -- cgit v1.2.3 From 0ad358d462681c45eb1be41938ba4d09de6ba60f Mon Sep 17 00:00:00 2001 From: Hashcode Date: Mon, 16 Feb 2015 21:50:13 -0800 Subject: fix-mac: insmod sdio module after MAC setup Change-Id: I547e08d6ecc936149d4122d8f7c90e2dda5db085 --- prebuilt/bin/fix-mac.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/prebuilt/bin/fix-mac.sh b/prebuilt/bin/fix-mac.sh index b02c544..cb9831e 100644 --- a/prebuilt/bin/fix-mac.sh +++ b/prebuilt/bin/fix-mac.sh @@ -12,3 +12,4 @@ if [ ! -f "$NVS_BIN" ]; then mount -o remount,ro /system fi +insmod /system/lib/modules/wl12xx_sdio.ko -- cgit v1.2.3 From 389f900d7c626ebd155fe882c1ab414759570f13 Mon Sep 17 00:00:00 2001 From: HashBang Date: Mon, 26 Jan 2015 15:23:00 -0500 Subject: otterx: Add more low-RAM optimizations Allows transparency Seems to speed up overall performance Based on: http://review.pac-rom.com/#/c/5137/ Change-Id: Ie3812a8cd93079ec8caf0eea32999b96b6f03fe4 --- device.mk | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/device.mk b/device.mk index 9c2a6c7..223ef72 100644 --- a/device.mk +++ b/device.mk @@ -52,9 +52,14 @@ ADDITIONAL_BUILD_PROPERTIES += \ usb.product.adb=0006 \ usb.product.mtpadb=0006 -# Mark as low ram device +# Low-RAM optimizations ADDITIONAL_BUILD_PROPERTIES += \ - ro.config.low_ram=true + ro.config.low_ram=true \ + persist.sys.force_highendgfx=true \ + dalvik.vm.jit.codecachesize=0 \ + config.disable_atlas=true \ + ro.config.max_starting_bg=8 \ + ro.sys.fw.bg_apps_limit=16 # Dalvik settings ADDITIONAL_BUILD_PROPERTIES += \ -- cgit v1.2.3 From fe7615b305e59175d5d2124964eadac7ccc36e8b Mon Sep 17 00:00:00 2001 From: Hashcode Date: Thu, 7 May 2015 16:15:50 -0700 Subject: fstab: mount system read-only - minor cleanup This was causing an selinux denial Change-Id: Ic5a5ea38b6a74f6f5e5d5d9b03995179c091959e --- fstab.otterx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fstab.otterx b/fstab.otterx index 04481ea..492029d 100644 --- a/fstab.otterx +++ b/fstab.otterx @@ -2,10 +2,10 @@ # # The filesystem that contains the filesystem checker binary (typically /system) cannot # specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK -/dev/block/platform/omap/omap_hsmmc.1/by-name/system /system ext4 rw,nodev,noatime,errors=continue wait -/dev/block/platform/omap/omap_hsmmc.1/by-name/userdata /data f2fs rw,discard,nosuid,nodev,noatime,nodiratime,inline_xattr wait,nonremovable,check,encryptable=footer,length=-16384 -/dev/block/platform/omap/omap_hsmmc.1/by-name/userdata /data ext4 rw,discard,nosuid,nodev,noatime wait,check,encryptable=footer,length=-16384 -/dev/block/platform/omap/omap_hsmmc.1/by-name/cache /cache ext4 rw,discard,nosuid,nodev,noatime wait,check +/dev/block/platform/omap/omap_hsmmc.1/by-name/system /system ext4 ro,nodev,noatime,errors=continue wait +/dev/block/platform/omap/omap_hsmmc.1/by-name/userdata /data f2fs discard,nosuid,nodev,noatime,nodiratime,inline_xattr wait,nonremovable,check,encryptable=footer,length=-16384 +/dev/block/platform/omap/omap_hsmmc.1/by-name/userdata /data ext4 discard,nosuid,nodev,noatime wait,check,encryptable=footer,length=-16384 +/dev/block/platform/omap/omap_hsmmc.1/by-name/cache /cache ext4 discard,nosuid,nodev,noatime wait,check /dev/block/platform/omap/omap_hsmmc.1/by-name/boot /boot emmc defaults defaults /dev/block/platform/omap/omap_hsmmc.1/by-name/recovery /recovery emmc defaults defaults /dev/block/platform/omap/omap_hsmmc.1/by-name/bootloader /bootloader emmc defaults defaults -- cgit v1.2.3 From c3f020a157ae91e01010102dd41ef9d0fc23fd69 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Wed, 27 May 2015 21:08:22 -0700 Subject: otterx: add storage settings from common Change-Id: I89e9d9662fdaf148767a355d724e1cf03d075968 --- init.otterx.rc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/init.otterx.rc b/init.otterx.rc index 1d209b3..1141e9d 100644 --- a/init.otterx.rc +++ b/init.otterx.rc @@ -3,6 +3,10 @@ import init.omap4.rc import init.otterx.usb.rc on init + # See storage config details at http://source.android.com/tech/storage/ + mkdir /mnt/shell/emulated 0700 shell shell + mkdir /storage/emulated 0555 root root + export EXTERNAL_STORAGE /storage/emulated/legacy export EMULATED_STORAGE_SOURCE /mnt/shell/emulated export EMULATED_STORAGE_TARGET /storage/emulated -- cgit v1.2.3 From 639d896d9f11c140a6ff3abb0ad36f254f55d163 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Mon, 1 Jun 2015 09:47:28 -0700 Subject: otterx: move low ram settings to omap4-common Change-Id: I4ce4d5017f24b0057a926724ee2fea1bc46b958f --- device.mk | 9 --------- 1 file changed, 9 deletions(-) diff --git a/device.mk b/device.mk index 223ef72..c7fcb97 100644 --- a/device.mk +++ b/device.mk @@ -52,15 +52,6 @@ ADDITIONAL_BUILD_PROPERTIES += \ usb.product.adb=0006 \ usb.product.mtpadb=0006 -# Low-RAM optimizations -ADDITIONAL_BUILD_PROPERTIES += \ - ro.config.low_ram=true \ - persist.sys.force_highendgfx=true \ - dalvik.vm.jit.codecachesize=0 \ - config.disable_atlas=true \ - ro.config.max_starting_bg=8 \ - ro.sys.fw.bg_apps_limit=16 - # Dalvik settings ADDITIONAL_BUILD_PROPERTIES += \ dalvik.vm.heapstartsize=5m \ -- cgit v1.2.3 From 559ab9323fdecaf89b5a686758dcd7c8b284f9e6 Mon Sep 17 00:00:00 2001 From: Hashcode Date: Mon, 1 Jun 2015 16:10:30 -0700 Subject: otterx: default back to selinux enforcing Change-Id: If8341f572d4dd7ee264b7cc1ac333b7b7a70a387 --- BoardConfig.mk | 2 +- init.recovery.otterx.rc | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index b44eaab..5be93e6 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -22,7 +22,7 @@ DEVICE_FOLDER := device/amazon/otterx # Kernel BOARD_KERNEL_PAGESIZE := 4096 -BOARD_KERNEL_CMDLINE := mem=512M androidboot.selinux=permissive newbootargs +BOARD_KERNEL_CMDLINE := mem=512M newbootargs TARGET_BOOTLOADER_BOARD_NAME := otterx TARGET_OTA_ASSERT_DEVICE := otterx diff --git a/init.recovery.otterx.rc b/init.recovery.otterx.rc index 66351be..686e2f3 100644 --- a/init.recovery.otterx.rc +++ b/init.recovery.otterx.rc @@ -1,5 +1,4 @@ on early-init - setenforce permissive loglevel 7 on fs -- cgit v1.2.3