diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2012-05-14 13:47:03 -0700 |
---|---|---|
committer | android code review <noreply-gerritcodereview@google.com> | 2012-05-14 13:47:03 -0700 |
commit | 6eb8ad870d23a8e0c04ec193ba6a35d5f6d4d7f2 (patch) | |
tree | 6ce489b8c37d418497c468f3aa6ceb027e78640c | |
parent | b40a4f0fbca8a80c44f10fe1eeb9aacd6f5863ca (diff) | |
parent | 5b0dfbfd3ee474f6a62b37c743e545556788a1e6 (diff) | |
download | panda-ics-plus-aosp.tar.gz |
Merge "Panda: Add recovery to the Panda board"android-sdk-adt_r20tools_r20ics-plus-aosp
-rw-r--r-- | BoardConfig.mk | 7 | ||||
-rw-r--r-- | board-info.txt | 2 | ||||
-rw-r--r-- | device.mk | 3 | ||||
-rw-r--r-- | init.omap4pandaboard.rc | 9 | ||||
-rw-r--r-- | recovery/Android.mk | 15 | ||||
-rw-r--r-- | recovery/recovery_ui.c | 115 |
6 files changed, 149 insertions, 2 deletions
diff --git a/BoardConfig.mk b/BoardConfig.mk index 9af06b8..32e6fd7 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -30,7 +30,6 @@ ARCH_ARM_HAVE_TLS_REGISTER := true BOARD_HAVE_BLUETOOTH := true TARGET_NO_BOOTLOADER := true -TARGET_NO_RECOVERY := true BOARD_KERNEL_BASE := 0x80000000 #BOARD_KERNEL_CMDLINE := @@ -39,6 +38,12 @@ TARGET_NO_RADIOIMAGE := true TARGET_BOARD_PLATFORM := omap4 TARGET_BOOTLOADER_BOARD_NAME := panda +# Recovery +TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888" +TARGET_RECOVERY_UI_LIB := librecovery_ui_panda +# device-specific extensions to the updater binary +TARGET_RELEASETOOLS_EXTENSIONS := device/ti/panda + BOARD_EGL_CFG := device/ti/panda/egl.cfg #BOARD_USES_HGL := true diff --git a/board-info.txt b/board-info.txt new file mode 100644 index 0000000..3721eb1 --- /dev/null +++ b/board-info.txt @@ -0,0 +1,2 @@ +require board=panda + @@ -68,7 +68,8 @@ PRODUCT_PACKAGES += \ # Filesystem management tools PRODUCT_PACKAGES += \ - make_ext4fs + make_ext4fs \ + setup_fs # BlueZ test tools PRODUCT_PACKAGES += \ diff --git a/init.omap4pandaboard.rc b/init.omap4pandaboard.rc index a11a75b..29ccabb 100644 --- a/init.omap4pandaboard.rc +++ b/init.omap4pandaboard.rc @@ -48,6 +48,15 @@ service pvrsrvinit /vendor/bin/pvrsrvinit group root oneshot +# create filesystems if necessary +service setup_fs /system/bin/setup_fs \ + /dev/block/platform/omap/omap_hsmmc.0/by-name/cache \ + /dev/block/platform/omap/omap_hsmmc.0/by-name/userdata + class core + user root + group root + oneshot + #shared transport user space mgr service for Bluetooth, FM and GPS service uim /system/bin/uim-sysfs class core diff --git a/recovery/Android.mk b/recovery/Android.mk new file mode 100644 index 0000000..5055f6a --- /dev/null +++ b/recovery/Android.mk @@ -0,0 +1,15 @@ +ifeq ($(TARGET_DEVICE),panda) + +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := optional +LOCAL_C_INCLUDES += bootable/recovery +LOCAL_SRC_FILES := recovery_ui.c + +# should match TARGET_RECOVERY_UI_LIB set in BoardConfig.mk +LOCAL_MODULE := librecovery_ui_panda + +include $(BUILD_STATIC_LIBRARY) + +endif diff --git a/recovery/recovery_ui.c b/recovery/recovery_ui.c new file mode 100644 index 0000000..cf8b2fc --- /dev/null +++ b/recovery/recovery_ui.c @@ -0,0 +1,115 @@ +/* + * Copyright (C) 2010 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. + */ + +#include <linux/input.h> +#include <sys/stat.h> +#include <errno.h> +#include <string.h> + +#include "recovery_ui.h" +#include "common.h" + +char* MENU_HEADERS[] = { "Volume up/down to move highlight;", + "power button to select.", + "", + NULL }; + +char* MENU_ITEMS[] = { "reboot system now", + "apply update from /sdcard", + "wipe data/factory reset", + "wipe cache partition", + NULL }; + +void device_ui_init(UIParameters* ui_parameters) { +} + +int device_recovery_start() { + // recovery can get started before the kernel has created the EMMC + // devices, which will make the wipe_data operation fail (trying + // to open a device that doesn't exist). Hold up the start of + // recovery for up to 5 seconds waiting for the userdata partition + // block device to exist. + + const char* fn = "/dev/block/platform/mmci-omap-hs.0/by-name/userdata"; + + int tries = 0; + int ret; + struct stat buf; + do { + ++tries; + ret = stat(fn, &buf); + if (ret) { + printf("try %d: %s\n", tries, strerror(errno)); + sleep(1); + } + } while (ret && tries < 5); + if (!ret) { + printf("stat() of %s succeeded on try %d\n", fn, tries); + } else { + printf("failed to stat %s\n", fn); + } + + // We let recovery attempt to carry on even if the stat never + // succeeded. + + return 0; +} + +int device_toggle_display(volatile char* key_pressed, int key_code) { + // hold power and press volume-up + return key_pressed[KEY_POWER] && key_code == KEY_VOLUMEUP; +} + +int device_reboot_now(volatile char* key_pressed, int key_code) { + // Reboot if the power key is pressed five times in a row, with + // no other keys in between. + static int presses = 0; + if (key_code == KEY_POWER) { // power button + ++presses; + return presses == 5; + } else { + presses = 0; + return 0; + } +} + +int device_handle_key(int key_code, int visible) { + if (visible) { + switch (key_code) { + case KEY_DOWN: + case KEY_VOLUMEDOWN: + return HIGHLIGHT_DOWN; + + case KEY_UP: + case KEY_VOLUMEUP: + return HIGHLIGHT_UP; + + case KEY_ENTER: + case KEY_POWER: // crespo power + return SELECT_ITEM; + } + } + + return NO_ACTION; +} + +int device_perform_action(int which) { + return which; +} + +int device_wipe_data() { + return 0; +} |