diff options
author | Chandan Uddaraju <chandanu@quicinc.com> | 2010-01-15 15:13:59 -0800 |
---|---|---|
committer | Chandan Uddaraju <chandanu@quicinc.com> | 2010-01-15 15:13:59 -0800 |
commit | 94183c01c202cf545c79c3a0295689269f757883 (patch) | |
tree | 01548549ed86038bbb4c3d90e6b5e65ff2eaf0fb | |
parent | 99b7003e09d09a367a54bafd3af5e731711984c8 (diff) | |
download | lk-94183c01c202cf545c79c3a0295689269f757883.tar.gz |
[target]: Add support for "fastboot reboot" and "fastboot reboot-bootloader" for all targets.
Add recovery partition for msm7630_surf target. Add support for
'adb shell reboot recovery' and 'adb shell reboot bootloader' for
msm7630_surf target. Add 'RESET_CHIP' proc_comm support for all targets.
-rwxr-xr-x | app/aboot/aboot.c | 17 | ||||
-rw-r--r-- | platform/msm_shared/proc_comm.c | 6 | ||||
-rw-r--r-- | target/init.c | 4 | ||||
-rw-r--r-- | target/msm7625_ffa/init.c | 5 | ||||
-rw-r--r-- | target/msm7625_surf/init.c | 5 | ||||
-rw-r--r-- | target/msm7627_ffa/init.c | 5 | ||||
-rw-r--r-- | target/msm7627_surf/init.c | 5 | ||||
-rw-r--r-- | target/msm7630_surf/init.c | 23 | ||||
-rw-r--r-- | target/qsd8250_ffa/init.c | 5 | ||||
-rw-r--r-- | target/qsd8250_surf/init.c | 5 |
10 files changed, 79 insertions, 1 deletions
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c index 3c894dcc..6abe3210 100755 --- a/app/aboot/aboot.c +++ b/app/aboot/aboot.c @@ -74,6 +74,7 @@ unsigned* target_atag_mem(unsigned* ptr); unsigned board_machtype(void); unsigned check_reboot_mode(void); int target_is_emmc_boot(void); +void reboot_device(unsigned); static int boot_into_recovery = 0; @@ -380,6 +381,20 @@ void cmd_continue(const char *arg, void *data, unsigned sz) boot_linux_from_flash(); } +void cmd_reboot(const char *arg, void *data, unsigned sz) +{ + dprintf(INFO, "rebooting the device\n"); + fastboot_okay(""); + reboot_device(0); +} + +void cmd_reboot_bootloader(const char *arg, void *data, unsigned sz) +{ + dprintf(INFO, "rebooting the device\n"); + fastboot_okay(""); + reboot_device(FASTBOOT_MODE); +} + void aboot_init(const struct app_descriptor *app) { unsigned reboot_mode = 0; @@ -412,6 +427,8 @@ fastboot: fastboot_register("erase:", cmd_erase); fastboot_register("flash:", cmd_flash); fastboot_register("continue", cmd_continue); + fastboot_register("reboot", cmd_reboot); + fastboot_register("reboot-bootloader", cmd_reboot_bootloader); fastboot_publish("product", "swordfish"); fastboot_publish("kernel", "lk"); diff --git a/platform/msm_shared/proc_comm.c b/platform/msm_shared/proc_comm.c index 9f9bd632..3b32107f 100644 --- a/platform/msm_shared/proc_comm.c +++ b/platform/msm_shared/proc_comm.c @@ -232,3 +232,9 @@ void mddi_clock_init(unsigned num, unsigned rate) clock_enable(clock_id); clock_set_rate(clock_id, rate); } + +void reboot(unsigned reboot_reason) +{ + msm_proc_comm(PCOM_RESET_CHIP, &reboot_reason, 0); + for (;;) ; +} diff --git a/target/init.c b/target/init.c index 67671d49..e6f114cf 100644 --- a/target/init.c +++ b/target/init.c @@ -51,3 +51,7 @@ __WEAK unsigned check_reboot_mode(void) { return 0; } + +__WEAK void reboot_device(unsigned reboot_reason) +{ +} diff --git a/target/msm7625_ffa/init.c b/target/msm7625_ffa/init.c index 8d4f9c00..9130e2fa 100644 --- a/target/msm7625_ffa/init.c +++ b/target/msm7625_ffa/init.c @@ -131,6 +131,11 @@ unsigned board_machtype(void) return LINUX_MACHTYPE; } +void reboot_device(unsigned reboot_reason) +{ + reboot(reboot_reason); +} + unsigned check_reboot_mode(void) { unsigned mode[2] = {0, 0}; diff --git a/target/msm7625_surf/init.c b/target/msm7625_surf/init.c index 7685021e..adb21978 100644 --- a/target/msm7625_surf/init.c +++ b/target/msm7625_surf/init.c @@ -131,6 +131,11 @@ unsigned board_machtype(void) return LINUX_MACHTYPE; } +void reboot_device(unsigned reboot_reason) +{ + reboot(reboot_reason); +} + unsigned check_reboot_mode(void) { unsigned mode[2] = {0, 0}; diff --git a/target/msm7627_ffa/init.c b/target/msm7627_ffa/init.c index 84a83a01..2d8ac252 100644 --- a/target/msm7627_ffa/init.c +++ b/target/msm7627_ffa/init.c @@ -131,6 +131,11 @@ unsigned board_machtype(void) return LINUX_MACHTYPE; } +void reboot_device(unsigned reboot_reason) +{ + reboot(reboot_reason); +} + unsigned check_reboot_mode(void) { unsigned mode[2] = {0, 0}; diff --git a/target/msm7627_surf/init.c b/target/msm7627_surf/init.c index f8c2fb31..d198fe36 100644 --- a/target/msm7627_surf/init.c +++ b/target/msm7627_surf/init.c @@ -131,6 +131,11 @@ unsigned board_machtype(void) return LINUX_MACHTYPE; } +void reboot_device(unsigned reboot_reason) +{ + reboot(reboot_reason); +} + unsigned check_reboot_mode(void) { unsigned mode[2] = {0, 0}; diff --git a/target/msm7630_surf/init.c b/target/msm7630_surf/init.c index 7f82e095..1f1136c8 100644 --- a/target/msm7630_surf/init.c +++ b/target/msm7630_surf/init.c @@ -79,6 +79,11 @@ static struct ptentry board_part_list[] = { }, { .start = 360, + .length = 20 /* 5MB */, + .name = "recovery", + }, + { + .start = 380, .length = 400 /* 100MB */, .name = "userdata", }, @@ -188,7 +193,23 @@ int target_is_emmc_boot(void) return emmc_boot; } +void reboot_device(unsigned reboot_reason) +{ + reboot(reboot_reason); +} + unsigned check_reboot_mode(void) { - return 0; + unsigned mode[2] = {0, 0}; + unsigned int mode_len = sizeof(mode); + unsigned smem_status; + + smem_status = smem_read_alloc_entry(SMEM_APPS_BOOT_MODE, + &mode, mode_len ); + if(smem_status) + { + dprintf(CRITICAL, "ERROR: unable to read shared memory for reboot mode\n"); + return 0; + } + return mode[0]; } diff --git a/target/qsd8250_ffa/init.c b/target/qsd8250_ffa/init.c index c3ec4b6e..ecb5b890 100644 --- a/target/qsd8250_ffa/init.c +++ b/target/qsd8250_ffa/init.c @@ -126,6 +126,11 @@ unsigned board_machtype(void) return LINUX_MACHTYPE; } +void reboot_device(unsigned reboot_reason) +{ + reboot(reboot_reason); +} + unsigned check_reboot_mode(void) { unsigned mode[2] = {0, 0}; diff --git a/target/qsd8250_surf/init.c b/target/qsd8250_surf/init.c index 442854b5..dd937a23 100644 --- a/target/qsd8250_surf/init.c +++ b/target/qsd8250_surf/init.c @@ -125,6 +125,11 @@ unsigned board_machtype(void) return LINUX_MACHTYPE; } +void reboot_device(unsigned reboot_reason) +{ + reboot(reboot_reason); +} + unsigned check_reboot_mode(void) { unsigned mode[2] = {0, 0}; |