diff options
34 files changed, 791 insertions, 437 deletions
@@ -1,4 +1,4 @@ -# Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr> +# Copyright (C) 2012-2014 Paul Kocialkowski <contact@paulk.fr> # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ LOCAL_PATH := $(call my-dir) ifeq ($(TARGET_DEVICE),gta04) -ifneq ($(TARGET_SIMULATOR),true) include $(call all-makefiles-under,$(LOCAL_PATH)) -endif endif diff --git a/AndroidProducts.mk b/AndroidProducts.mk index 621c59c..5987620 100644 --- a/AndroidProducts.mk +++ b/AndroidProducts.mk @@ -11,7 +11,6 @@ # 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. -# PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/full_gta04.mk diff --git a/BoardConfig.mk b/BoardConfig.mk index 3daf6c9..e3a564a 100755 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Paul Kocialkowski <contact@paulk.fr> +# Copyright (C) 2012-2014 Paul Kocialkowski <contact@paulk.fr> # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ # CPU TARGET_CPU_ABI := armeabi-v7a TARGET_CPU_ABI2 := armeabi +TARGET_ARCH := arm TARGET_ARCH_VARIANT := armv7-a-neon TARGET_GLOBAL_CFLAGS += -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp TARGET_GLOBAL_CPPFLAGS += -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp @@ -26,22 +27,36 @@ TARGET_BOOTLOADER_BOARD_NAME := gta04 # Images TARGET_NO_RADIOIMAGE := true -TARGET_NO_BOOTLOADER := false +TARGET_NO_BOOTLOADER := true TARGET_NO_KERNEL := false BOARD_USES_UBOOT := true BOARD_CUSTOM_BOOTIMG_MK := device/goldelico/gta04/bootimg.mk +# Partitions +TARGET_USERIMAGES_USE_EXT4 := true +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 314572800 +BOARD_USERDATAIMAGE_PARTITION_SIZE := 209715200 +BOARD_FLASH_BLOCK_SIZE := 4096 + # Bootloaders -TARGET_BOOTLOADER_SOURCE := bootable/bootloader/goldelico/gta04/u-boot/ -TARGET_BOOTLOADER_CONFIG := omap3_gta04_config +TARGET_UBOOT_SOURCE := bootable/bootloader/goldelico/gta04/u-boot/ +TARGET_UBOOT_CONFIG := omap3_gta04_config TARGET_XLOADER_SOURCE := bootable/bootloader/goldelico/gta04/x-loader/ TARGET_XLOADER_CONFIG := omap3530gta04_config +TARGET_XLOADER_MLO := true # Kernel -TARGET_KERNEL_CONFIG := gta04_defconfig TARGET_KERNEL_SOURCE := kernel/goldelico/gta04 +TARGET_KERNEL_CONFIG := gta04_defconfig +TARGET_KERNEL_RECOVERY_CONFIG := gta04_recovery_defconfig TARGET_KERNEL_LOADADDR := 0x80008000 +# Recovery +TARGET_RECOVERY_FSTAB := device/goldelico/gta04/recovery/recovery.fstab +BOARD_CUSTOM_RECOVERY_KEYMAPPING := ../../device/goldelico/gta04/recovery/recovery_keys.c +TARGET_RECOVERY_PRE_COMMAND := "echo 1 > /cache/.startrecovery" +TARGET_RELEASETOOLS_EXTENSIONS := device/goldelico/gta04 + # Hardware BOARD_HAVE_FM_RADIO := false BOARD_HAVE_BLUETOOTH := false @@ -50,5 +65,14 @@ USE_CAMERA_STUB := true BOARD_HAS_NO_SELECT_BUTTON := true +# Boot animation +TARGET_BOOTANIMATION_PRELOAD := true +TARGET_BOOTANIMATION_TEXTURE_CACHE := true +TARGET_BOOTANIMATION_USE_RGB565 := true + +# Graphics +USE_OPENGL_RENDERER := false +TARGET_DISABLE_TRIPLE_BUFFERING := true + # Audio BOARD_USE_TINYALSA_AUDIO := true diff --git a/CleanSpec.mk b/CleanSpec.mk index c72d2ef..fd8beb0 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -1,4 +1,4 @@ -# Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr> +# Copyright (C) 2012-2014 Paul Kocialkowski <contact@paulk.fr> # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -11,10 +11,5 @@ # 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. -# -$(call add-clean-step, find $(PRODUCT_OUT) -name "*.apk" | xargs rm) $(call add-clean-step, rm -rf $(TARGET_OUT)/build.prop) -$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/PACKAGING/systemimage_intermediates) -# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libaudio_intermediates) -# add newer instructions according to what we'll have in this directory @@ -1,27 +1,45 @@ +# Copyright (C) 2012-2014 Paul Kocialkowski <contact@paulk.fr> +# +# 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) -INSTALLED_XLOADER_MODULE := $(PRODUCT_OUT)/xloader +INSTALLED_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.cpio +INSTALLED_XLOADER_TARGET := $(PRODUCT_OUT)/MLO +INSTALLED_UBOOT_TARGET := $(PRODUCT_OUT)/u-boot.bin +INSTALLED_UBOOT_SCRIPT_TARGET := $(PRODUCT_OUT)/boot.scr +INSTALLED_UBOOT_SPLASH_TARGET := $(PRODUCT_OUT)/splash.rgb16z + +BUILT_RAMDISK_TARGET := $(INSTALLED_RAMDISK_TARGET) -INSTALLED_BOOTLOADERIMAGE_TARGET := $(PRODUCT_OUT)/u-boot.bin -INSTALLED_XLOADERIMAGE_TARGET := $(PRODUCT_OUT)/MLO -INSTALLED_BOOTLOADER_SCRIPT_TARGET := $(PRODUCT_OUT)/boot.scr -INSTALLED_BOOTLOADER_SPLASH_TARGET := $(PRODUCT_OUT)/splash.rgb16z +$(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) + $(call pretty,"Target ram disk: $@") + $(hide) $(MKBOOTFS) $(TARGET_ROOT_OUT) > $@ -$(INSTALLED_BOOTIMAGE_TARGET): $(MKIMAGE) $(INSTALLED_RAMDISK_TARGET) $(INSTALLED_KERNEL_TARGET) - $(call pretty,"Boot image: $@") +$(INSTALLED_BOOTIMAGE_TARGET): $(INSTALLED_KERNEL_TARGET) $(ACP) $(INSTALLED_KERNEL_TARGET) $@ - @echo -e ${CL_INS}"Made boot image: $@"${CL_RST} + @echo -e ${CL_CYN}"Made boot image: $@"${CL_RST} + +$(INSTALLED_RECOVERYIMAGE_TARGET): $(INSTALLED_RECOVERY_KERNEL_TARGET) + $(ACP) $(INSTALLED_RECOVERY_KERNEL_TARGET) $@ + @echo -e ${CL_CYN}"Made recovery image: $@"${CL_RST} -$(INSTALLED_BOOTLOADERIMAGE_TARGET): $(INSTALLED_XLOADER_MODULE) $(INSTALLED_BOOTLOADER_MODULE) $(MKIMAGE) - $(call pretty,"X-Loader image: $(INSTALLED_XLOADER_MODULE)") - $(ACP) $(INSTALLED_XLOADER_MODULE) $(INSTALLED_XLOADERIMAGE_TARGET) - @echo -e ${CL_INS}"Made X-Loader image: $(INSTALLED_XLOADERIMAGE_TARGET)"${CL_RST} - $(call pretty,"Bootloader splash: $(INSTALLED_BOOTLOADER_SPLASH_TARGET)") - $(ACP) $(BOOTLOADER_SRC)/../boot-scr/splash.rgb16z $(INSTALLED_BOOTLOADER_SPLASH_TARGET) - @echo -e ${CL_INS}"Made bootloader splash: $(INSTALLED_BOOTLOADER_SPLASH_TARGET)"${CL_RST} - $(call pretty,"Bootloader script: $(INSTALLED_BOOTLOADER_SCRIPT_TARGET)") - $(MKIMAGE) -A arm -T script -C none -n "boot.scr" -d $(BOOTLOADER_SRC)/../boot-scr/boot.txt $(INSTALLED_BOOTLOADER_SCRIPT_TARGET) - @echo -e ${CL_INS}"Made bootloader script: $(INSTALLED_BOOTLOADER_SCRIPT_TARGET)"${CL_RST} - $(call pretty,"Bootloader image: $@") - $(ACP) $(INSTALLED_BOOTLOADER_MODULE) $@ - @echo -e ${CL_INS}"Made bootloader image: $@"${CL_RST} +$(INSTALLED_BOOTLOADERIMAGE_TARGET): $(INSTALLED_XLOADER_MODULE) $(INSTALLED_UBOOT_MODULE) $(MKIMAGE) + $(ACP) $(INSTALLED_XLOADER_MODULE) $(INSTALLED_XLOADER_TARGET) + @echo -e ${CL_CYN}"Made X-Loader: $(INSTALLED_XLOADER_TARGET)"${CL_RST} + $(ACP) $(UBOOT_SRC)/../boot-scr/splash.rgb16z $(INSTALLED_UBOOT_SPLASH_TARGET) + @echo -e ${CL_CYN}"Made U-Boot splash: $(INSTALLED_UBOOT_SPLASH_TARGET)"${CL_RST} + $(MKIMAGE) -A arm -T script -C none -n "boot.scr" -d $(UBOOT_SRC)/../boot-scr/boot.txt $(INSTALLED_UBOOT_SCRIPT_TARGET) + @echo -e ${CL_CYN}"Made U-Boot script: $(INSTALLED_UBOOT_SCRIPT_TARGET)"${CL_RST} + $(ACP) $(INSTALLED_UBOOT_MODULE) $(INSTALLED_UBOOT_TARGET) + @echo -e ${CL_CYN}"Made U-Boot: $(INSTALLED_UBOOT_TARGET)"${CL_RST} @@ -1,16 +1,30 @@ -# Inherit some common CM stuff. +# Copyright (C) 2012-2014 Paul Kocialkowski <contact@paulk.fr> +# +# 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. + +# Inherit GSM config $(call inherit-product, vendor/replicant/config/gsm.mk) -PRODUCT_RELEASE_NAME := GTA04 -# Inherit some common CM stuff. +PRODUCT_RELEASE_NAME := gta04 + +TARGET_BOOTANIMATION_NAME := vertical-480x640 + +# Inherit common phone config $(call inherit-product, vendor/replicant/config/common_full_phone.mk) -# Inherit device configuration +# Inherit device config $(call inherit-product, device/goldelico/gta04/full_gta04.mk) -# Inherit Software GL configuration. -$(call inherit-product, vendor/replicant/config/software_gl.mk) - PRODUCT_NAME := replicant_gta04 PRODUCT_DEVICE := gta04 PRODUCT_BRAND := Goldelico diff --git a/configs/vold.fstab b/configs/vold.fstab new file mode 100644 index 0000000..0615764 --- /dev/null +++ b/configs/vold.fstab @@ -0,0 +1,2 @@ +# USB disk +dev_mount usbdisk /storage/usbdisk auto /devices/platform/musb-omap2430/musb-hdrc.1.auto diff --git a/full_gta04.mk b/full_gta04.mk index 7ae3a5a..ae740ce 100644 --- a/full_gta04.mk +++ b/full_gta04.mk @@ -16,8 +16,6 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk) $(call inherit-product, $(SRC_TARGET_DIR)/product/full.mk) $(call inherit-product, device/goldelico/gta04/gta04.mk) -PRODUCT_LOCALES += hdpi - PRODUCT_NAME := full_gta04 PRODUCT_DEVICE := gta04 PRODUCT_BRAND := goldelico diff --git a/gpio-keys.kl b/gpio-keys.kl deleted file mode 100644 index 3d30e23..0000000 --- a/gpio-keys.kl +++ /dev/null @@ -1 +0,0 @@ -key 169 BACK WAKE_DROPPED @@ -1,4 +1,4 @@ -# Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr> +# Copyright (C) 2012-2014 Paul Kocialkowski <contact@paulk.fr> # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,25 +21,37 @@ PRODUCT_COPY_FILES += \ # Ramdisk PRODUCT_COPY_FILES += \ - device/goldelico/gta04/init.gta04.rc:root/init.gta04.rc \ - device/goldelico/gta04/init.gta04.usb.rc:root/init.gta04.usb.rc \ - device/goldelico/gta04/ueventd.gta04.rc:root/ueventd.gta04.rc + device/goldelico/gta04/rootdir/init.gta04.rc:root/init.gta04.rc \ + device/goldelico/gta04/rootdir/init.gta04.usb.rc:root/init.gta04.usb.rc \ + device/goldelico/gta04/rootdir/ueventd.gta04.rc:root/ueventd.gta04.rc \ + device/goldelico/gta04/rootdir/fstab.gta04:root/fstab.gta04 + +# Recovery +PRODUCT_COPY_FILES += \ + device/goldelico/gta04/recovery/init.recovery.gta04.rc:root/init.recovery.gta04.rc + +PRODUCT_PROPERTY_OVERRIDES += \ + ro.cwm.forbid_format=/boot # USB PRODUCT_PROPERTY_OVERRIDES += \ - persist.sys.usb.config=mass_storage,adb + persist.sys.usb.config=mtp + +# Storage +PRODUCT_COPY_FILES += \ + device/goldelico/gta04/configs/vold.fstab:system/etc/vold.fstab # Input PRODUCT_COPY_FILES += \ - device/goldelico/gta04/tsc2007.idc:system/usr/idc/tsc2007.idc \ - device/goldelico/gta04/twl4030_pwrbutton.kl:system/usr/keylayout/twl4030_pwrbutton.kl \ - device/goldelico/gta04/gpio-keys.kl:system/usr/keylayout/gpio-keys.kl + device/goldelico/gta04/usr/idc/TSC2007_Touchscreen.idc:system/usr/idc/TSC2007_Touchscreen.idc \ + device/goldelico/gta04/usr/keylayout/twl4030_pwrbutton.kl:system/usr/keylayout/twl4030_pwrbutton.kl \ + device/goldelico/gta04/usr/keylayout/Phone_button.kl:system/usr/keylayout/Phone_button.kl # Graphics PRODUCT_LOCALES := hdpi PRODUCT_COPY_FILES += \ - device/goldelico/gta04/initlogo.rle:root/initlogo.rle + device/goldelico/gta04/rootdir/initlogo.rle:root/initlogo.rle # Audio PRODUCT_PACKAGES += \ @@ -58,11 +70,10 @@ PRODUCT_COPY_FILES += \ # Dalvik PRODUCT_PROPERTY_OVERRIDES += \ - dalvik.vm.lockprof.threshold=500 \ dalvik.vm.dexopt-data-only=1 \ dalvik.vm.checkjni=false \ ro.kernel.android.checkjni=0 PRODUCT_TAGS += dalvik.gc.type-precise -include frameworks/base/build/phone-hdpi-512-dalvik-heap.mk +include frameworks/native/build/phone-hdpi-512-dalvik-heap.mk diff --git a/init.gta04.usb.rc b/init.gta04.usb.rc deleted file mode 100755 index f417a6c..0000000 --- a/init.gta04.usb.rc +++ /dev/null @@ -1,77 +0,0 @@ -on property:sys.usb.config=mass_storage - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 18d1 - write /sys/class/android_usb/android0/idProduct 0001 - write /sys/class/android_usb/android0/functions $sys.usb.config - write /sys/class/android_usb/android0/enable 1 - setprop sys.usb.state $sys.usb.config - -on property:sys.usb.config=mass_storage,adb - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 18d1 - write /sys/class/android_usb/android0/idProduct 0003 - 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:sys.usb.config=mtp - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 18d1 - write /sys/class/android_usb/android0/idProduct 0006 - write /sys/class/android_usb/android0/functions $sys.usb.config - write /sys/class/android_usb/android0/enable 1 - setprop sys.usb.state $sys.usb.config - -on property:sys.usb.config=mtp,adb - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 18d1 - write /sys/class/android_usb/android0/idProduct 0007 - 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:sys.usb.config=ptp - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 18d1 - write /sys/class/android_usb/android0/idProduct 0008 - write /sys/class/android_usb/android0/functions $sys.usb.config - write /sys/class/android_usb/android0/enable 1 - setprop sys.usb.state $sys.usb.config - -on property:sys.usb.config=ptp,adb - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 18d1 - write /sys/class/android_usb/android0/idProduct 0009 - 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:sys.usb.config=rndis - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 18d1 - write /sys/class/android_usb/android0/idProduct 000a - write /sys/class/android_usb/android0/functions $sys.usb.config - write /sys/class/android_usb/android0/bDeviceClass 224 - write /sys/class/android_usb/android0/enable 1 - setprop sys.usb.state $sys.usb.config - -on property:sys.usb.config=rndis,adb - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 18d1 - write /sys/class/android_usb/android0/idProduct 000b - write /sys/class/android_usb/android0/functions $sys.usb.config - write /sys/class/android_usb/android0/bDeviceClass 224 - write /sys/class/android_usb/android0/enable 1 - start adbd - setprop sys.usb.state $sys.usb.config - -on property:sys.usb.config=rndis,dm - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 18d1 - write /sys/class/android_usb/android0/idProduct 000c - write /sys/class/android_usb/android0/functions $sys.usb.config - write /sys/class/android_usb/android0/enable 1 - setprop sys.usb.state $sys.usb.config diff --git a/liblights/Android.mk b/lights/Android.mk index 49f1d1b..9dc66f6 100644 --- a/liblights/Android.mk +++ b/lights/Android.mk @@ -1,4 +1,4 @@ -# Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr> +# Copyright (C) 2012-2014 Paul Kocialkowski <contact@paulk.fr> # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -ifeq ($(TARGET_DEVICE),gta04) - LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) @@ -27,5 +25,3 @@ LOCAL_MODULE_TAGS := optional LOCAL_MODULE := lights.gta04 include $(BUILD_SHARED_LIBRARY) - -endif diff --git a/liblights/lights.c b/lights/lights.c index 2eeb171..418c5ef 100644 --- a/liblights/lights.c +++ b/lights/lights.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr> + * Copyright (C) 2012-2014 Paul Kocialkowski <contact@paulk.fr> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,8 +14,7 @@ * limitations under the License. */ -#define LOG_TAG "lights" -#include <cutils/log.h> +#include <stdlib.h> #include <stdint.h> #include <string.h> #include <errno.h> @@ -23,14 +22,15 @@ #include <pthread.h> #include <sys/ioctl.h> #include <sys/types.h> + +#define LOG_TAG "lights" +#include <cutils/log.h> #include <hardware/lights.h> /* * Globals */ -pthread_mutex_t lights_mutex = PTHREAD_MUTEX_INITIALIZER; - const char backlight_brightness[] = "/sys/class/backlight/pwm-backlight/brightness"; const char backlight_max_brightness[] = @@ -54,161 +54,161 @@ const char notifications_green_brightness[] = const char notifications_green_max_brightness[] = "/sys/class/leds/gta04:green:aux/max_brightness"; +pthread_mutex_t lights_mutex = PTHREAD_MUTEX_INITIALIZER; + /* - * Lights utils + * Sysfs */ -int sysfs_write_int(char *path, int value) +int sysfs_value_read(const char *path) { - char buf[10]; - int length = 0; - int fd = -1; - int rc; + char buffer[100]; + int value; + int fd = -1; + int rc; - if(path == NULL) - return -1; + if (path == NULL) + return -1; - length = snprintf(buf, 10, "%d\n", value); + fd = open(path, O_RDONLY); + if (fd < 0) + goto error; - fd = open(path, O_WRONLY); - if(fd < 0) - return -1; + rc = read(fd, &buffer, sizeof(buffer)); + if (rc <= 0) + goto error; - rc = write(fd, buf, length); + value = atoi(buffer); + goto complete; - close(fd); +error: + value = -1; - if(rc < length) - return -1; +complete: + if (fd >= 0) + close(fd); - return 0; + return value; } -int sysfs_read_int(char *path) +int sysfs_value_write(const char *path, int value) { - char buf[10]; - int val = 0; - int fd = -1; - int rc; + char buffer[100]; + int fd = -1; + int rc; - if(path == NULL) - return -1; + if (path == NULL) + return -1; - fd = open(path, O_RDONLY); - if(fd < 0) - return -1; + fd = open(path, O_WRONLY); + if (fd < 0) + goto error; - rc = read(fd, buf, 10); - if(rc <= 0) { - close(fd); - return -1; - } + snprintf((char *) &buffer, sizeof(buffer), "%d\n", value); + + rc = write(fd, buffer, strlen(buffer)); + if (rc < (int) strlen(buffer)) + goto error; + + rc = 0; + goto complete; + +error: + rc = -1; - val = atoi(buf); +complete: + if (fd >= 0) + close(fd); - return val; + return rc; } /* - * Lights functions + * Lights */ -static int set_light_notifications(struct light_device_t *dev, +int set_light_notifications(struct light_device_t *dev, const struct light_state_t *state) { int red, green; int max; - int rc; + int rc = 0; // GTA04 only has red and green red = state->color & 0x00ff0000; green = state->color & 0x0000ff00; - // Red max pthread_mutex_lock(&lights_mutex); - max = sysfs_read_int(notifications_red_max_brightness); - pthread_mutex_unlock(&lights_mutex); + // Red max + max = sysfs_value_read(notifications_red_max_brightness); if(max > 0) red = (red * max) / 0xff; // Green max - pthread_mutex_lock(&lights_mutex); - max = sysfs_read_int(notifications_green_max_brightness); - pthread_mutex_unlock(&lights_mutex); - + max = sysfs_value_read(notifications_green_max_brightness); if(max > 0) green = (green * max) / 0xff; - pthread_mutex_lock(&lights_mutex); - rc = sysfs_write_int(notifications_red_brightness, red); - if(rc >= 0) - rc = sysfs_write_int(notifications_green_brightness, green); + rc |= sysfs_value_write(notifications_red_brightness, red); + rc |= sysfs_value_write(notifications_green_brightness, green); + pthread_mutex_unlock(&lights_mutex); return rc; } -static int set_light_battery(struct light_device_t *dev, +int set_light_battery(struct light_device_t *dev, const struct light_state_t *state) { int red, green; int max; - int rc; + int rc = 0; // GTA04 only has red and green red = state->color & 0x00ff0000; green = state->color & 0x0000ff00; - // Red max pthread_mutex_lock(&lights_mutex); - max = sysfs_read_int(battery_red_max_brightness); - pthread_mutex_unlock(&lights_mutex); + // Red max + max = sysfs_value_read(battery_red_max_brightness); if(max > 0) red = (red * max) / 0xff; // Green max - pthread_mutex_lock(&lights_mutex); - max = sysfs_read_int(battery_green_max_brightness); - pthread_mutex_unlock(&lights_mutex); - + max = sysfs_value_read(battery_green_max_brightness); if(max > 0) green = (green * max) / 0xff; - pthread_mutex_lock(&lights_mutex); - rc = sysfs_write_int(battery_red_brightness, red); - if(rc >= 0) - rc = sysfs_write_int(battery_green_brightness, green); + rc |= sysfs_value_write(battery_red_brightness, red); + rc |= sysfs_value_write(battery_green_brightness, green); + pthread_mutex_unlock(&lights_mutex); return rc; } -static int set_light_backlight(struct light_device_t *dev, +int set_light_backlight(struct light_device_t *dev, const struct light_state_t *state) { + int brightness; int color; - unsigned char brightness; - int brightness_max; + int max; int rc; pthread_mutex_lock(&lights_mutex); - brightness_max = - sysfs_read_int(backlight_max_brightness); - pthread_mutex_unlock(&lights_mutex); color = state->color & 0x00ffffff; - brightness = ((77*((color>>16) & 0x00ff)) + (150*((color>>8) & 0x00ff)) - + (29*(color & 0x00ff))) >> 8; + brightness = ((77 * ((color >> 16) & 0xff)) + (150 * ((color >> 8) & 0xff)) + (29 * (color & 0xff))) >> 8; - if(brightness_max > 0) - brightness = (brightness * brightness_max) / 0xff; + // Brightness max + max = sysfs_value_read(backlight_max_brightness); + if(max > 0) + brightness = (brightness * max) / 0xff; - LOGD("Setting brightness to: %d", brightness); + rc = sysfs_value_write(backlight_brightness, brightness); - pthread_mutex_lock(&lights_mutex); - rc = sysfs_write_int(backlight_brightness, brightness); pthread_mutex_unlock(&lights_mutex); return rc; @@ -218,9 +218,9 @@ static int set_light_backlight(struct light_device_t *dev, * Interface */ -static int close_lights(struct light_device_t *dev) +int close_lights(struct light_device_t *dev) { - LOGD("close_lights()"); + ALOGD("%s()", __func__); if(dev != NULL) free(dev); @@ -228,14 +228,14 @@ static int close_lights(struct light_device_t *dev) return 0; } -static int open_lights(const struct hw_module_t *module, char const *name, +int open_lights(const struct hw_module_t *module, char const *name, struct hw_device_t **device) { struct light_device_t *dev = NULL; int (*set_light)(struct light_device_t *dev, const struct light_state_t *state); - LOGD("open_lights(): %s", name); + ALOGD("%s(%s)", __func__, name); if(strcmp(LIGHT_ID_BACKLIGHT, name) == 0) { set_light = set_light_backlight; @@ -249,7 +249,7 @@ static int open_lights(const struct hw_module_t *module, char const *name, pthread_mutex_init(&lights_mutex, NULL); - dev = calloc(1, sizeof(struct light_device_t)); + dev = (struct light_device_t *) calloc(1, sizeof(struct light_device_t)); dev->common.tag = HARDWARE_DEVICE_TAG; dev->common.version = 0; dev->common.module = (struct hw_module_t *) module; @@ -261,11 +261,11 @@ static int open_lights(const struct hw_module_t *module, char const *name, return 0; } -static struct hw_module_methods_t lights_module_methods = { +struct hw_module_methods_t lights_module_methods = { .open = open_lights, }; -const struct hw_module_t HAL_MODULE_INFO_SYM = { +struct hw_module_t HAL_MODULE_INFO_SYM = { .tag = HARDWARE_MODULE_TAG, .version_major = 1, .version_minor = 0, diff --git a/overlay/frameworks/base/core/res/res/values/arrays.xml b/overlay/frameworks/base/core/res/res/values/arrays.xml index fd660ad..fb4bbb1 100644 --- a/overlay/frameworks/base/core/res/res/values/arrays.xml +++ b/overlay/frameworks/base/core/res/res/values/arrays.xml @@ -1,32 +1,28 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -/* //device/apps/common/assets/res/any/colors.xml -** -** Copyright 2006, 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. -*/ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- Defines the shutdown options shown in the reboot dialog. --> - <array name="shutdown_reboot_options" translatable="false"> - <item>@string/reboot_reboot</item> - </array> + Copyright (C) 2014 Paul Kocialkowski <contact@paulk.fr> + + 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 - <!-- Do not translate. Defines the shutdown actions passed to the kernel. - The first item should be empty for regular reboot. --> - <string-array name="shutdown_reboot_actions" translatable="false"> - <item></item> - </string-array> + 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. + --> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <array name="shutdown_reboot_options" translatable="false"> + <item>@string/reboot_reboot</item> + <item>@string/reboot_recovery</item> + </array> + <string-array name="shutdown_reboot_actions" translatable="false"> + <item></item> + <item>recovery</item> + </string-array> </resources> diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index b42bacf..8635e41 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -1,27 +1,22 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -/* -** Copyright 2012, Paul Kocialkowski <contact@paulk.fr> -** -** 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. -*/ ---> + Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr> + + 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. + --> <resources> - <!-- If this is true, the screen will come on when you unplug usb/power/whatever. --> <bool name="config_unplugTurnsOnScreen">true</bool> - <!-- Whether a software navigation bar should be shown. NOTE: in the future this may be - autodetected from the Configuration. --> <bool name="config_showNavigationBar">true</bool> </resources> diff --git a/overlay/frameworks/base/core/res/res/xml/storage_list.xml b/overlay/frameworks/base/core/res/res/xml/storage_list.xml index ba086a1..c4213c2 100644 --- a/overlay/frameworks/base/core/res/res/xml/storage_list.xml +++ b/overlay/frameworks/base/core/res/res/xml/storage_list.xml @@ -1,41 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -** -** Copyright 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. -*/ ---> + Copyright (C) 2014 Paul Kocialkowski <contact@paulk.fr> + + 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 -<!-- The <device> element should contain one or more <storage> elements. - Exactly one of these should have the attribute primary="true". - This storage will be the primary external storage and should have mountPoint="/mnt/sdcard". - Each storage should have both a mountPoint and storageDescription attribute. - The following attributes are optional: + http://www.apache.org/licenses/LICENSE-2.0 - primary: (boolean) this storage is the primary external storage - removable: (boolean) this is removable storage (for example, a real SD card) - emulated: (boolean) the storage is emulated via the FUSE sdcard daemon - mtpReserve: (integer) number of megabytes of storage MTP should reserve for free storage - (used for emulated storage that is shared with system's data partition) - - A storage should not have both emulated and removable set to true ---> + 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. + --> <StorageList xmlns:android="http://schemas.android.com/apk/res/android"> - <storage android:mountPoint="/mnt/sdcard" - android:storageDescription="@string/storage_internal" - android:primary="true" - android:removable="false" - android:allowMassStorage="true" /> + <storage android:mountPoint="/storage/sdcard" + android:storageDescription="@string/storage_internal" + android:primary="true" + android:emulated="true" + android:mtpReserve="100" /> + + <storage android:mountPoint="/storage/usbdisk" + android:storageDescription="@string/storage_usb" + android:primary="false" + android:removable="true" /> </StorageList> diff --git a/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml new file mode 100644 index 0000000..d78d55e --- /dev/null +++ b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 Paul Kocialkowski <contact@paulk.fr> + + 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. + --> + +<resources> + <string name="def_quick_settings_tiles">toggleUser|toggleBrightness|toggleVolume|toggleSettings|toggleWifi|toggleMobileData|toggleBattery|toggleAirplane|toggleBluetooth</string> +</resources> diff --git a/overlay/packages/inputmethods/LatinIME/java/res/values/dimens.xml b/overlay/packages/inputmethods/LatinIME/java/res/values/dimens.xml deleted file mode 100644 index 83d2898..0000000 --- a/overlay/packages/inputmethods/LatinIME/java/res/values/dimens.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2008, 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. -*/ ---> - -<resources> - <integer name="max_more_suggestions_row">4</integer> - <!-- key_preview_backing_height = more_suggestions_row_height * max_more_suggestions_row --> - <dimen name="key_preview_backing_height">160dip</dimen> -</resources> diff --git a/overlay/packages/inputmethods/LatinIME/java/res/values/donottranslate.xml b/overlay/packages/inputmethods/LatinIME/java/res/values/donottranslate.xml new file mode 100644 index 0000000..a0849a9 --- /dev/null +++ b/overlay/packages/inputmethods/LatinIME/java/res/values/donottranslate.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 Paul Kocialkowski <contact@paulk.fr> + + 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. + --> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="prefs_suggestion_visibility_default_value">2</string> +</resources> diff --git a/recovery/init.recovery.gta04.rc b/recovery/init.recovery.gta04.rc new file mode 100644 index 0000000..9ba71e5 --- /dev/null +++ b/recovery/init.recovery.gta04.rc @@ -0,0 +1,15 @@ +on fs + mount ext4 /dev/block/mmcblk0p3 /cache wait + +on post-fs + rm /cache/.startrecovery + +service console /sbin/sh + class core + console + disabled + user root + group root + +on property:ro.debuggable=1 + start console diff --git a/recovery/recovery.fstab b/recovery/recovery.fstab new file mode 100644 index 0000000..625dcdf --- /dev/null +++ b/recovery/recovery.fstab @@ -0,0 +1,6 @@ +/boot vfat /dev/block/mmcblk0p1 +/system ext4 /dev/block/mmcblk0p2 +/cache ext4 /dev/block/mmcblk0p3 +/data ext4 /dev/block/mmcblk0p4 + +/sdcard datamedia /dev/null diff --git a/recovery/recovery_keys.c b/recovery/recovery_keys.c new file mode 100644 index 0000000..1016aea --- /dev/null +++ b/recovery/recovery_keys.c @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2014 Paul Kocialkowski <contact@paulk.fr> + * + * 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 <linux/input.h> + +#include "recovery_ui.h" +#include "common.h" +#include "extendedcommands.h" + +int get_allow_toggle_display(); + +int device_toggle_display(volatile char* key_pressed, int key_code) { + int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT]; + if (alt && key_code == KEY_L) + return 1; + // allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off + if (ui_get_showing_back_button()) { + return 0; + //return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END); + } + return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END); +} + +int device_handle_key(int key_code, int visible) { + if (visible) { + switch (key_code) { + case KEY_PHONE: + return HIGHLIGHT_DOWN; + case KEY_POWER: + if (ui_get_showing_back_button()) { + return SELECT_ITEM; + } + if (!get_allow_toggle_display()) + return GO_BACK; + } + } + + return NO_ACTION; +} diff --git a/releasetools.py b/releasetools.py new file mode 100644 index 0000000..d339555 --- /dev/null +++ b/releasetools.py @@ -0,0 +1,23 @@ +# Copyright (C) 2014 Paul Kocialkowski <contact@paulk.fr> +# +# 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. + +import common +import os + +def FullOTA_InstallEnd(info): + info.script.script = [ cmd for cmd in info.script.script if not "boot.img" in cmd ] + + info.script.Mount("/boot"); + info.script.script.append('package_extract_file("boot.img", "/boot/boot.img");') + info.script.Unmount("/boot"); diff --git a/replicant_gta04_install.sh b/replicant_gta04_install.sh index dcca69c..9d1f41d 100755 --- a/replicant_gta04_install.sh +++ b/replicant_gta04_install.sh @@ -2,7 +2,7 @@ # Replicant GTA04 installer # -# Copyright (C) 2012-2013 Paul Kocialkowski, GPLv2 +# Copyright (C) 2012-2014 Paul Kocialkowski, GPLv2 # # Based on mkcard.sh v0.5 # Copyright (C) 2009 Graeme Gregory <dp@xora.org.uk>, GPLv2 @@ -18,13 +18,13 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # -# Env vars +# Environment # export LC_ALL=C # -# Global vars +# Globals # DRIVE="" @@ -33,7 +33,10 @@ DRIVE_SIZE="" DRIVE_CYLINDERS="" DRIVE_PART="" -FILES_BASE="./" +SYSTEM_ZIP="replicant-4.2-gta04.zip" +BOOT_FILES="MLO u-boot.bin boot.scr splash.rgb16z recovery.img" + +FILES_BASE="." MOUNT_BASE="/media" # @@ -42,25 +45,34 @@ MOUNT_BASE="/media" # Display +display_help() { + echo "Usage: $0 [COMMAND] [DRIVE]" + echo "" + echo "It is expected that the following files are located in $FILES_BASE:" + echo " $BOOT_FILES for setup" + echo " $SYSTEM_ZIP for install" + echo "" + echo "Commands:" + echo " setup - setup the drive and copy the base files" + echo " install - install the system on the drive" + echo "" + echo "Optional arguments:" + echo " [DRIVE] - drive node to use" +} + display_banner() { echo "Replicant GTA04 installer" echo "" } -display_help() { - echo "Usage: $0 [FILES_BASE] [DRIVE]" +display_complete() { echo "" - echo "Arguments:" - echo "- The [FILES_BASE] argument is the path to the files" - echo " The following files must be in that directory:" - echo " MLO, u-boot.bin, splash.rgb16z, boot.scr, boot.img, system.tar.bz2" - echo "- The [DRIVE] argument is the sdcard drive node and can be omitted" + echo "Process completed!" } # Drive -drive_select_list() -{ +drive_select_list() { drives_dir="/dev/disk/by-id/" count=0 @@ -95,8 +107,7 @@ drive_select_list() done } -drive_select() -{ +drive_select() { echo "Available devices:" drive_select_list "show" @@ -107,10 +118,37 @@ drive_select() echo "" } -drive_select_confirm() { +drive_umount() { + list=$( mount | grep $DRIVE | sed "s|$DRIVE[0-9]* on \([^ ]*\) .*|\1|g" ) + + for mount_point in $list + do + echo "Unmounting $mount_point" + + umount "$mount_point" + if [ $? != 0 ] + then + echo "Unmounting $mount_point failed, arborting!" + exit 1 + fi + done +} + +drive_part() { + if [ -e "${DRIVE}p1" ] + then + DRIVE_PART="${DRIVE}p" + else + DRIVE_PART="${DRIVE}" + fi +} + +# Setup + +setup_drive_confirm() { if [ "$DRIVE" = "" ] then - echo "Wrong drive block" + echo "Invalid drive block" exit 1 fi @@ -127,8 +165,8 @@ drive_select_confirm() { for mount_point in $list do - mount_point_dir=$( dirname $mount_point ) - if [ "$mount_point_dir" != "/media" ] && [ "$mount_point_dir" != "/mnt" ] && [ "$mount_point" != "/media" ] && [ "$mount_point" != "/mnt" ] + mount_point_check=$( dirname $mount_point | grep -P "^/mnt|mount" ) + if [ "$mount_point_check" != "" ] then echo "" echo "Warning: the drive is mounted as $mount_point!" @@ -149,23 +187,9 @@ drive_select_confirm() { fi } -drive_umount() { - list=$( mount | grep $DRIVE | sed "s|$DRIVE[0-9]* on \([^ ]*\) .*|\1|g" ) - - for mount_point in $list - do - echo "Unmounting $mount_point" +setup_drive_empty() { + drive_umount - umount "$mount_point" - if [ $? != 0 ] - then - echo "Unmounting $mount_point failed, arborting!" - exit 1 - fi - done -} - -drive_empty() { # Backup dd if="$DRIVE" of=".drive_start_backup" bs=1024 count=1024 @@ -177,7 +201,7 @@ drive_empty() { fi } -drive_rescue() { +setup_drive_rescue() { if [ -f ".drive_start_backup" ] then echo -n "Something went wrong, do you want to restore drive start backup? [Y/N] " @@ -188,19 +212,14 @@ drive_rescue() { fi } -drive_infos_get() { +setup_drive_infos() { DRIVE_SIZE=$( fdisk -l "$DRIVE" | grep Disk | grep bytes | awk '{print $5}' ) DRIVE_CYLINDERS=$( echo "$DRIVE_SIZE/255/63/512" | bc ) } -drive_eject() { - rm -rf ".drive_start_backup" - eject "$DRIVE" -} - -drive_partitions_set() { +setup_drive_partition() { boot_size=$( echo "(50 * 1024 * 1024) / ($DRIVE_SIZE/$DRIVE_CYLINDERS)" | bc ) - system_size=$( echo "(250 * 1024 * 1024) / ($DRIVE_SIZE/$DRIVE_CYLINDERS)" | bc ) + system_size=$( echo "(350 * 1024 * 1024) / ($DRIVE_SIZE/$DRIVE_CYLINDERS)" | bc ) cache_size=$( echo "(100 * 1024 * 1024) / ($DRIVE_SIZE/$DRIVE_CYLINDERS)" | bc ) { @@ -217,32 +236,28 @@ drive_partitions_set() { sleep 1 - if [ -e "${DRIVE}p1" ] - then - DRIVE_PART="${DRIVE}p" - else - DRIVE_PART="${DRIVE}" - fi + drive_part mkfs.vfat -F 32 -n "boot" "${DRIVE_PART}1" - mkfs.ext2 -L "system" "${DRIVE_PART}2" - mkfs.ext2 -L "cache" "${DRIVE_PART}3" - mkfs.ext2 -L "data" "${DRIVE_PART}4" + mkfs.ext4 -L "system" "${DRIVE_PART}2" + mkfs.ext4 -L "cache" "${DRIVE_PART}3" + mkfs.ext4 -L "data" "${DRIVE_PART}4" sleep 1 } -drive_write() { - echo "Writing boot files" +setup_boot_install() { + echo "Installing boot files" + + drive_part mkdir -p "$MOUNT_BASE/boot" mount "${DRIVE_PART}1" "$MOUNT_BASE/boot" - cp $FILES_BASE/MLO "$MOUNT_BASE/boot/" - cp $FILES_BASE/u-boot.bin "$MOUNT_BASE/boot/" - cp $FILES_BASE/splash.rgb16z "$MOUNT_BASE/boot" - cp $FILES_BASE/boot.scr "$MOUNT_BASE/boot" - cp $FILES_BASE/boot.img "$MOUNT_BASE/boot" + for file in $BOOT_FILES + do + cp "$FILES_BASE/$file" "$MOUNT_BASE/boot/" + done dir=$( pwd ) echo "Syncing boot files" @@ -252,52 +267,223 @@ drive_write() { umount "$MOUNT_BASE/boot" rmdir "$MOUNT_BASE/boot" +} + +setup_drive_eject() { + rm -rf ".drive_start_backup" + eject "$DRIVE" +} - echo "Writing system files" +# Install - mkdir -p "$MOUNT_BASE/system" - mount "${DRIVE_PART}2" "$MOUNT_BASE/system" +install_package_extract_dir() { + destination="$MOUNT_BASE"$( dirname "$2") - tar -p -xf "system.tar.bz2" -C "$MOUNT_BASE/system/" --strip-components=1 "system/" - if [ $? != 0 ] + if [ $# -lt 2 ] then - umount "$MOUNT_BASE/system" - rmdir "$MOUNT_BASE/system" + return + fi - exit 1 + unzip -o "$FILES_BASE/$SYSTEM_ZIP" "$1/**" -d "$destination" +} + +install_package_extract_file() { + destination="$MOUNT_BASE"$( dirname "$2") + + if [ $# -lt 2 ] + then + return + fi + + unzip -o "$FILES_BASE/$SYSTEM_ZIP" "$1" -d "$destination" +} + +install_symlink() { + source="" + + if [ $# -lt 2 ] + then + return + fi + + for path in $@ + do + if [ "$source" = "" ] + then + source="$path" + continue + fi + + unlink "$MOUNT_BASE$path" + ln -s "$source" "$MOUNT_BASE$path" + done +} + +install_set_perm() { + uid="" + gid="" + mode="" + + if [ $# -lt 4 ] + then + return fi + for value in $@ + do + if [ "$uid" = "" ] + then + uid="$value" + continue + fi + + if [ "$gid" = "" ] + then + gid="$value" + continue + fi + + if [ "$mode" = "" ] + then + mode="$value" + continue + fi + + chown "$uid:$gid" "$MOUNT_BASE$value" + chmod "$mode" "$MOUNT_BASE$value" + done +} + +install_set_perm_recursive() { + uid="" + gid="" + dir_mode="" + file_mode="" + + if [ $# -lt 4 ] + then + return + fi + + for value in $@ + do + if [ "$uid" = "" ] + then + uid="$value" + continue + fi + + if [ "$gid" = "" ] + then + gid="$value" + continue + fi + + if [ "$dir_mode" = "" ] + then + dir_mode="$value" + continue + fi + + if [ "$file_mode" = "" ] + then + file_mode="$value" + continue + fi + + find "$MOUNT_BASE$value" -type d -exec chown "$uid:$gid" {} \; -exec chmod "$dir_mode" {} \; + find "$MOUNT_BASE$value" -type f -exec chown "$uid:$gid" {} \; -exec chmod "$file_mode" {} \; + done +} + +install_command() { + command=$( echo "$1" | sed "s/[ \t]*\([^(]*\)(.*/\1/g" ) + arguments=$( echo "$1" | sed -e "s/[^(]*(\([^)]*\));.*/\1/g" -e "s/[ \t]*,[ \t]*/ /g" | tr -d '"') + + case "$command" in + "package_extract_dir") + install_package_extract_dir $arguments + ;; + "package_extract_file") + install_package_extract_file $arguments + ;; + "symlink") + install_symlink $arguments + ;; + "set_perm") + install_set_perm $arguments + ;; + "set_perm_recursive") + install_set_perm_recursive $arguments + ;; + esac +} + +install_script() { + unzip -p "$FILES_BASE/$SYSTEM_ZIP" "META-INF/com/google/android/updater-script" | while read line + do + end_test=$( echo "$line" | grep -P "\);$" ) + + COMMAND="$COMMAND$line" + + if [ "$end_test" != "" ] + then + install_command "$COMMAND" + + COMMAND="" + fi + done +} + +install_mount() { + drive_part + + drive_umount + + mkdir -p "$MOUNT_BASE/boot" + mount "${DRIVE_PART}1" "$MOUNT_BASE/boot" + + mkdir -p "$MOUNT_BASE/system" + mount "${DRIVE_PART}2" "$MOUNT_BASE/system" +} + +install_umount() { + drive_part + dir=$( pwd ) - echo "Syncing system files" + echo "Syncing files" + + cd "$MOUNT_BASE/boot" + sync + cd "$dir" + cd "$MOUNT_BASE/system" sync cd "$dir" + umount "$MOUNT_BASE/boot" + rmdir "$MOUNT_BASE/boot" + umount "$MOUNT_BASE/system" rmdir "$MOUNT_BASE/system" } -display_end() { - echo "" - echo "Your drive is now ready to be used!" +install_eject() { + eject "$DRIVE" } -# Script start +# +# Main +# -if [ $# -eq 0 ] || [ $# -gt 2 ] || [ "$1" = "--help" ] || [ "$1" = "help" ] +if [ $# -lt 1 ] || [ $# -gt 2 ] then display_help exit 1 fi -if [ $# -eq 1 ] -then - FILES_BASE=$1 -fi - -if [ $# -eq 2 ] +if [ $# -gt 1 ] then - FILES_BASE=$1 DRIVE=$2 fi @@ -308,15 +494,26 @@ then drive_select fi -# Drive -drive_select_confirm -drive_umount -drive_empty -drive_infos_get - -drive_partitions_set -drive_write - -# Finishing -display_end -drive_eject +case $1 in + "setup") + setup_drive_confirm + drive_umount + setup_drive_empty + setup_drive_infos + setup_drive_partition + setup_boot_install + setup_drive_eject + + display_complete + ;; + "install") + install_mount + install_script + install_umount + install_eject + ;; + *) + display_help + exit 1 + ;; +esac diff --git a/rootdir/fstab.gta04 b/rootdir/fstab.gta04 new file mode 100644 index 0000000..4aaa1cb --- /dev/null +++ b/rootdir/fstab.gta04 @@ -0,0 +1,4 @@ +/dev/block/mmcblk0p1 /mnt/boot vfat ro wait +/dev/block/mmcblk0p2 /system ext4 ro wait +/dev/block/mmcblk0p3 /cache ext4 nosuid wait +/dev/block/mmcblk0p4 /data ext4 nosuid wait diff --git a/init.gta04.rc b/rootdir/init.gta04.rc index 3245366..57f81f1 100644 --- a/init.gta04.rc +++ b/rootdir/init.gta04.rc @@ -1,11 +1,29 @@ import init.gta04.usb.rc -on early-init - export EXTERNAL_STORAGE /mnt/sdcard - mkdir /mnt/sdcard 0000 system system - symlink /mnt/sdcard /sdcard +on init + mkdir /mnt/boot 0700 system system - mkdir /mnt/boot 0000 system system + 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 + + # Legacy + symlink /storage/emulated/legacy /sdcard + symlink /storage/emulated/legacy /mnt/sdcard + symlink /storage/emulated/legacy /storage/sdcard + symlink /mnt/shell/emulated/0 /storage/emulated/legacy + + # USB disk + mkdir /storage/usbdisk 0666 system system + symlink /storage/usbdisk /mnt/usbdisk + symlink /mnt/usbdisk /usbdisk + + symlink /mnt/boot /boot + + chmod 0660 /dev/cpuctl on boot # Modem GPIO @@ -29,15 +47,12 @@ on boot chmod 0660 /sys/class/gpio/gpio55/value on fs - mount ext4 /dev/block/mmcblk0p2 /system wait - mount ext4 /dev/block/mmcblk0p2 /system ro wait remount - mount ext4 /dev/block/mmcblk0p3 /cache nosuid wait - mount ext4 /dev/block/mmcblk0p4 /data nosuid wait - mount vfat /dev/block/mmcblk0p1 /mnt/boot/ ro wait + mount_all /fstab.gta04 + + setprop ro.crypto.fuse_sdcard true on post-fs-data - mkdir /data/media 0775 media_rw media_rw - chown media_rw media_rw /data/media + mkdir /data/media 0770 media_rw media_rw -service sdcard /system/bin/sdcard /data/media 1023 1023 +service sdcard /system/bin/sdcard /data/media /mnt/shell/emulated 1023 1023 class late_start diff --git a/rootdir/init.gta04.usb.rc b/rootdir/init.gta04.usb.rc new file mode 100755 index 0000000..b6bd413 --- /dev/null +++ b/rootdir/init.gta04.usb.rc @@ -0,0 +1,70 @@ +on boot + 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} + + write /sys/class/android_usb/android0/f_rndis/manufacturer Goldelico + write /sys/class/android_usb/android0/f_rndis/vendorID 18d1 + write /sys/class/android_usb/android0/f_rndis/wceis 1 + +on property:sys.usb.config=adb + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 18d1 + write /sys/class/android_usb/android0/idProduct 0001 + 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:sys.usb.config=mtp + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 18d1 + write /sys/class/android_usb/android0/idProduct 0002 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=mtp,adb + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 18d1 + write /sys/class/android_usb/android0/idProduct 0003 + 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:sys.usb.config=ptp + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 18d1 + write /sys/class/android_usb/android0/idProduct 0004 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=ptp,adb + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 18d1 + write /sys/class/android_usb/android0/idProduct 0005 + 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:sys.usb.config=rndis + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 18d1 + write /sys/class/android_usb/android0/idProduct 0008 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/bDeviceClass 224 + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=rndis,adb + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 18d1 + write /sys/class/android_usb/android0/idProduct 0009 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/bDeviceClass 224 + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} diff --git a/initlogo.rle b/rootdir/initlogo.rle Binary files differindex 740cc91..740cc91 100644 --- a/initlogo.rle +++ b/rootdir/initlogo.rle diff --git a/initlogo.svg b/rootdir/initlogo.svg index d8dab57..d8dab57 100644 --- a/initlogo.svg +++ b/rootdir/initlogo.svg diff --git a/ueventd.gta04.rc b/rootdir/ueventd.gta04.rc index 7be3ef3..7be3ef3 100644 --- a/ueventd.gta04.rc +++ b/rootdir/ueventd.gta04.rc diff --git a/twl4030_pwrbutton.kl b/twl4030_pwrbutton.kl deleted file mode 100644 index ef2c8f6..0000000 --- a/twl4030_pwrbutton.kl +++ /dev/null @@ -1 +0,0 @@ -key 116 POWER WAKE diff --git a/tsc2007.idc b/usr/idc/TSC2007_Touchscreen.idc index 6c1df26..6c1df26 100644 --- a/tsc2007.idc +++ b/usr/idc/TSC2007_Touchscreen.idc diff --git a/usr/keylayout/Phone_button.kl b/usr/keylayout/Phone_button.kl new file mode 100644 index 0000000..1232ea5 --- /dev/null +++ b/usr/keylayout/Phone_button.kl @@ -0,0 +1 @@ +key 169 BACK WAKE_DROPPED diff --git a/usr/keylayout/twl4030_pwrbutton.kl b/usr/keylayout/twl4030_pwrbutton.kl new file mode 100644 index 0000000..129f9ba --- /dev/null +++ b/usr/keylayout/twl4030_pwrbutton.kl @@ -0,0 +1 @@ +key 116 POWER WAKE_DROPPED |