aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChandan Uddaraju <chandanu@quicinc.com>2010-01-15 15:13:59 -0800
committerChandan Uddaraju <chandanu@quicinc.com>2010-01-15 15:13:59 -0800
commit94183c01c202cf545c79c3a0295689269f757883 (patch)
tree01548549ed86038bbb4c3d90e6b5e65ff2eaf0fb
parent99b7003e09d09a367a54bafd3af5e731711984c8 (diff)
downloadlk-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-xapp/aboot/aboot.c17
-rw-r--r--platform/msm_shared/proc_comm.c6
-rw-r--r--target/init.c4
-rw-r--r--target/msm7625_ffa/init.c5
-rw-r--r--target/msm7625_surf/init.c5
-rw-r--r--target/msm7627_ffa/init.c5
-rw-r--r--target/msm7627_surf/init.c5
-rw-r--r--target/msm7630_surf/init.c23
-rw-r--r--target/qsd8250_ffa/init.c5
-rw-r--r--target/qsd8250_surf/init.c5
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};