mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-04 14:01:54 +00:00
Rename section A to RW, to match other platforms
BUG=chrome-os-partner:11149 TEST=make link, snow, bds; on reboot, sysjump rw sysinfo <- should indicate current image is rw Then on root shell, ectool version <- should indicate rw Change-Id: I833fcb814165379dd044e4cb46ae338e5da81212 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/27660
This commit is contained in:
@@ -75,7 +75,7 @@ static const char * const reset_flag_descs[] = {
|
||||
"hibernate", "rtc-alarm", "wake-pin", "low-battery", "sysjump",
|
||||
"hard"};
|
||||
|
||||
static const char * const image_names[] = {"unknown", "RO", "A", "B"};
|
||||
static const char * const image_names[] = {"unknown", "RO", "RW"};
|
||||
static uint32_t reset_flags;
|
||||
static int jumped_to_image;
|
||||
static int disable_jump; /* Disable ALL jumps if system is locked */
|
||||
@@ -223,7 +223,7 @@ enum system_image_copy_t system_get_image_copy(void)
|
||||
|
||||
if (my_addr >= CONFIG_SECTION_RW_OFF &&
|
||||
my_addr < (CONFIG_SECTION_RW_OFF + CONFIG_SECTION_RW_SIZE))
|
||||
return SYSTEM_IMAGE_RW_A;
|
||||
return SYSTEM_IMAGE_RW;
|
||||
|
||||
return SYSTEM_IMAGE_UNKNOWN;
|
||||
}
|
||||
@@ -242,7 +242,7 @@ int system_unsafe_to_overwrite(uint32_t offset, uint32_t size) {
|
||||
r_offset = CONFIG_FW_RO_OFF;
|
||||
r_size = CONFIG_FW_RO_SIZE;
|
||||
break;
|
||||
case SYSTEM_IMAGE_RW_A:
|
||||
case SYSTEM_IMAGE_RW:
|
||||
r_offset = CONFIG_FW_RW_OFF;
|
||||
r_size = CONFIG_FW_RW_SIZE;
|
||||
break;
|
||||
@@ -309,7 +309,7 @@ static uint32_t get_base(enum system_image_copy_t copy)
|
||||
switch (copy) {
|
||||
case SYSTEM_IMAGE_RO:
|
||||
return CONFIG_FLASH_BASE + CONFIG_FW_RO_OFF;
|
||||
case SYSTEM_IMAGE_RW_A:
|
||||
case SYSTEM_IMAGE_RW:
|
||||
return CONFIG_FLASH_BASE + CONFIG_FW_RW_OFF;
|
||||
default:
|
||||
return 0xffffffff;
|
||||
@@ -322,7 +322,7 @@ static uint32_t get_size(enum system_image_copy_t copy)
|
||||
switch (copy) {
|
||||
case SYSTEM_IMAGE_RO:
|
||||
return CONFIG_FW_RO_SIZE;
|
||||
case SYSTEM_IMAGE_RW_A:
|
||||
case SYSTEM_IMAGE_RW:
|
||||
return CONFIG_FW_RW_SIZE;
|
||||
default:
|
||||
return 0;
|
||||
@@ -348,7 +348,7 @@ int system_run_image_copy(enum system_image_copy_t copy)
|
||||
return EC_ERROR_ACCESS_DENIED;
|
||||
|
||||
/* Target image must be RW image */
|
||||
if (copy != SYSTEM_IMAGE_RW_A)
|
||||
if (copy != SYSTEM_IMAGE_RW)
|
||||
return EC_ERROR_ACCESS_DENIED;
|
||||
|
||||
/* Can't have already jumped between images */
|
||||
@@ -498,8 +498,8 @@ static int handle_pending_reboot(enum ec_reboot_cmd cmd)
|
||||
return EC_SUCCESS;
|
||||
case EC_REBOOT_JUMP_RO:
|
||||
return system_run_image_copy(SYSTEM_IMAGE_RO);
|
||||
case EC_REBOOT_JUMP_RW_A:
|
||||
return system_run_image_copy(SYSTEM_IMAGE_RW_A);
|
||||
case EC_REBOOT_JUMP_RW:
|
||||
return system_run_image_copy(SYSTEM_IMAGE_RW);
|
||||
case EC_REBOOT_COLD:
|
||||
system_reset(SYSTEM_RESET_HARD);
|
||||
/* That shouldn't return... */
|
||||
@@ -605,7 +605,7 @@ static int command_version(int argc, char **argv)
|
||||
system_get_chip_name(), system_get_chip_revision());
|
||||
ccprintf("Board: %d\n", system_get_board_version());
|
||||
ccprintf("RO: %s\n", system_get_version(SYSTEM_IMAGE_RO));
|
||||
ccprintf("RW: %s\n", system_get_version(SYSTEM_IMAGE_RW_A));
|
||||
ccprintf("RW: %s\n", system_get_version(SYSTEM_IMAGE_RW));
|
||||
ccprintf("Build: %s\n", system_get_build_info());
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
@@ -626,9 +626,10 @@ static int command_sysjump(int argc, char **argv)
|
||||
/* Handle named images */
|
||||
if (!strcasecmp(argv[1], "RO"))
|
||||
return system_run_image_copy(SYSTEM_IMAGE_RO);
|
||||
else if (!strcasecmp(argv[1], "A"))
|
||||
return system_run_image_copy(SYSTEM_IMAGE_RW_A);
|
||||
else if (!strcasecmp(argv[1], "disable")) {
|
||||
else if (!strcasecmp(argv[1], "RW") || !strcasecmp(argv[1], "A")) {
|
||||
/* TODO: remove "A" once all scripts are updated to use "RW" */
|
||||
return system_run_image_copy(SYSTEM_IMAGE_RW);
|
||||
} else if (!strcasecmp(argv[1], "disable")) {
|
||||
system_disable_jump();
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
@@ -648,7 +649,7 @@ static int command_sysjump(int argc, char **argv)
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
DECLARE_CONSOLE_COMMAND(sysjump, command_sysjump,
|
||||
"[RO | A | B | addr | disable]",
|
||||
"[RO | RW | addr | disable]",
|
||||
"Jump to a system image or address",
|
||||
NULL);
|
||||
|
||||
@@ -700,15 +701,15 @@ static int host_command_get_version(struct host_cmd_handler_args *args)
|
||||
|
||||
strzcpy(r->version_string_ro, system_get_version(SYSTEM_IMAGE_RO),
|
||||
sizeof(r->version_string_ro));
|
||||
strzcpy(r->version_string_rw_a, system_get_version(SYSTEM_IMAGE_RW_A),
|
||||
sizeof(r->version_string_rw_a));
|
||||
strzcpy(r->version_string_rw, system_get_version(SYSTEM_IMAGE_RW),
|
||||
sizeof(r->version_string_rw));
|
||||
|
||||
switch (system_get_image_copy()) {
|
||||
case SYSTEM_IMAGE_RO:
|
||||
r->current_image = EC_IMAGE_RO;
|
||||
break;
|
||||
case SYSTEM_IMAGE_RW_A:
|
||||
r->current_image = EC_IMAGE_RW_A;
|
||||
case SYSTEM_IMAGE_RW:
|
||||
r->current_image = EC_IMAGE_RW;
|
||||
break;
|
||||
default:
|
||||
r->current_image = EC_IMAGE_UNKNOWN;
|
||||
|
||||
@@ -130,7 +130,7 @@ int vboot_check_signature(void)
|
||||
if (!maybe_jump_to_other_image())
|
||||
return EC_SUCCESS;
|
||||
|
||||
CPRINTF("[%T Vboot check image A...]\n");
|
||||
CPRINTF("[%T Vboot check RW image...]\n");
|
||||
|
||||
ts1 = get_time();
|
||||
r = good_image((uint8_t *)CONFIG_VBOOT_ROOTKEY_OFF,
|
||||
@@ -143,16 +143,16 @@ int vboot_check_signature(void)
|
||||
|
||||
switch (r) {
|
||||
case IMAGE_IS_GOOD:
|
||||
CPRINTF("[Image A verified]\n");
|
||||
system_run_image_copy(SYSTEM_IMAGE_RW_A);
|
||||
CPRINTF("[ERROR: Unable to jump to image A]\n");
|
||||
CPRINTF("[RW image verified]\n");
|
||||
system_run_image_copy(SYSTEM_IMAGE_RW);
|
||||
CPRINTF("[ERROR: Unable to jump to RW image]\n");
|
||||
goto bad;
|
||||
case IMAGE_IS_GOOD_BUT_USE_RO_ANYWAY:
|
||||
CPRINTF("[Image A verified]\n");
|
||||
CPRINTF("[RW image verified]\n");
|
||||
CPRINTF("[Staying in RO mode]\n");
|
||||
return EC_SUCCESS;
|
||||
default:
|
||||
CPRINTF("[Image A is invalid]\n");
|
||||
CPRINTF("[RW image is invalid]\n");
|
||||
}
|
||||
|
||||
bad:
|
||||
|
||||
@@ -290,13 +290,13 @@ struct ec_response_hello {
|
||||
enum ec_current_image {
|
||||
EC_IMAGE_UNKNOWN = 0,
|
||||
EC_IMAGE_RO,
|
||||
EC_IMAGE_RW_A
|
||||
EC_IMAGE_RW
|
||||
};
|
||||
|
||||
struct ec_response_get_version {
|
||||
/* Null-terminated version strings for RO, RW */
|
||||
char version_string_ro[32];
|
||||
char version_string_rw_a[32];
|
||||
char version_string_rw[32];
|
||||
char reserved[32]; /* Was previously RW-B string */
|
||||
uint32_t current_image; /* One of ec_current_image */
|
||||
} __packed;
|
||||
@@ -871,7 +871,7 @@ struct ec_params_i2c_write {
|
||||
enum ec_reboot_cmd {
|
||||
EC_REBOOT_CANCEL = 0, /* Cancel a pending reboot */
|
||||
EC_REBOOT_JUMP_RO, /* Jump to RO without rebooting */
|
||||
EC_REBOOT_JUMP_RW_A, /* Jump to RW-A without rebooting */
|
||||
EC_REBOOT_JUMP_RW, /* Jump to RW without rebooting */
|
||||
/* (command 3 was jump to RW-B) */
|
||||
EC_REBOOT_COLD = 4, /* Cold-reboot */
|
||||
EC_REBOOT_DISABLE_JUMP, /* Disable jump until next reboot */
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
enum system_image_copy_t {
|
||||
SYSTEM_IMAGE_UNKNOWN = 0,
|
||||
SYSTEM_IMAGE_RO,
|
||||
SYSTEM_IMAGE_RW_A
|
||||
SYSTEM_IMAGE_RW
|
||||
};
|
||||
|
||||
/* Pre-initializes the module. This occurs before clocks or tasks are
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#define STR0(name) #name
|
||||
#define STR(name) STR0(name)
|
||||
|
||||
static const char * const part_name[] = {"unknown", "RO", "A", "B"};
|
||||
static const char * const part_name[] = {"unknown", "RO", "RW"};
|
||||
|
||||
enum ec_current_image get_version(enum ec_current_image *version_ptr)
|
||||
{
|
||||
@@ -33,12 +33,12 @@ enum ec_current_image get_version(enum ec_current_image *version_ptr)
|
||||
|
||||
/* Ensure versions are null-terminated before we print them */
|
||||
r.version_string_ro[sizeof(r.version_string_ro) - 1] = '\0';
|
||||
r.version_string_rw_a[sizeof(r.version_string_rw_a) - 1] = '\0';
|
||||
r.version_string_rw[sizeof(r.version_string_rw) - 1] = '\0';
|
||||
build_info[sizeof(build_info) - 1] = '\0';
|
||||
|
||||
/* Print versions */
|
||||
printf("RO version: %s\n", r.version_string_ro);
|
||||
printf("RW version: %s\n", r.version_string_rw_a);
|
||||
printf("RW version: %s\n", r.version_string_rw);
|
||||
printf("Firmware copy: %s\n",
|
||||
(r.current_image < sizeof(part_name)/sizeof(part_name[0]) ?
|
||||
part_name[r.current_image] : "?"));
|
||||
@@ -70,7 +70,7 @@ int flash_partition(enum ec_current_image part, const uint8_t *payload,
|
||||
|
||||
if (current == part) {
|
||||
rst_req.cmd = part == EC_IMAGE_RO ?
|
||||
EC_REBOOT_JUMP_RW_A : EC_REBOOT_JUMP_RO;
|
||||
EC_REBOOT_JUMP_RW : EC_REBOOT_JUMP_RO;
|
||||
ec_command(EC_CMD_REBOOT_EC, 0, &rst_req, sizeof(rst_req),
|
||||
NULL, 0);
|
||||
/* wait EC reboot */
|
||||
@@ -138,7 +138,7 @@ int main(int argc, char *argv[])
|
||||
if (comm_init() < 0)
|
||||
return -3;
|
||||
|
||||
flash_partition(EC_IMAGE_RW_A, data + CONFIG_FW_RW_OFF,
|
||||
flash_partition(EC_IMAGE_RW, data + CONFIG_FW_RW_OFF,
|
||||
CONFIG_FW_RW_OFF, CONFIG_FW_RW_SIZE);
|
||||
flash_partition(EC_IMAGE_RO, data + CONFIG_FW_RO_OFF,
|
||||
CONFIG_FW_RO_OFF, CONFIG_FW_RO_SIZE);
|
||||
|
||||
@@ -129,6 +129,8 @@ const char help_str[] =
|
||||
" pci_write16 0 0x1f 0 0x82 0x3d01\n"
|
||||
"";
|
||||
|
||||
/* Note: depends on enum system_image_copy_t */
|
||||
static const char * const image_names[] = {"unknown", "RO", "RW"};
|
||||
|
||||
/* Write a buffer to the file. Return non-zero if error. */
|
||||
static int write_file(const char *filename, const char *buf, int size)
|
||||
@@ -279,7 +281,6 @@ int cmd_cmdversions(int argc, char *argv[])
|
||||
|
||||
int cmd_version(int argc, char *argv[])
|
||||
{
|
||||
static const char * const fw_copies[] = {"unknown", "RO", "A", "B"};
|
||||
struct ec_response_get_version r;
|
||||
char build_string[EC_HOST_PARAM_SIZE];
|
||||
int rv;
|
||||
@@ -295,15 +296,15 @@ int cmd_version(int argc, char *argv[])
|
||||
|
||||
/* Ensure versions are null-terminated before we print them */
|
||||
r.version_string_ro[sizeof(r.version_string_ro) - 1] = '\0';
|
||||
r.version_string_rw_a[sizeof(r.version_string_rw_a) - 1] = '\0';
|
||||
r.version_string_rw[sizeof(r.version_string_rw) - 1] = '\0';
|
||||
build_string[sizeof(build_string) - 1] = '\0';
|
||||
|
||||
/* Print versions */
|
||||
printf("RO version: %s\n", r.version_string_ro);
|
||||
printf("RW version: %s\n", r.version_string_rw_a);
|
||||
printf("RW version: %s\n", r.version_string_rw);
|
||||
printf("Firmware copy: %s\n",
|
||||
(r.current_image < ARRAY_SIZE(fw_copies) ?
|
||||
fw_copies[r.current_image] : "?"));
|
||||
(r.current_image < ARRAY_SIZE(image_names) ?
|
||||
image_names[r.current_image] : "?"));
|
||||
printf("Build info: %s\n", build_string);
|
||||
|
||||
return 0;
|
||||
@@ -395,9 +396,10 @@ int cmd_reboot_ec(int argc, char *argv[])
|
||||
p.cmd = EC_REBOOT_CANCEL;
|
||||
else if (!strcmp(argv[1], "RO"))
|
||||
p.cmd = EC_REBOOT_JUMP_RO;
|
||||
else if (!strcmp(argv[1], "A"))
|
||||
p.cmd = EC_REBOOT_JUMP_RW_A;
|
||||
else if (!strcmp(argv[1], "cold"))
|
||||
else if (!strcmp(argv[1], "RW") || !strcmp(argv[1], "A")) {
|
||||
/* TODO: remove "A" once all scripts are updated to use "RW" */
|
||||
p.cmd = EC_REBOOT_JUMP_RW;
|
||||
} else if (!strcmp(argv[1], "cold"))
|
||||
p.cmd = EC_REBOOT_COLD;
|
||||
else if (!strcmp(argv[1], "disable-jump"))
|
||||
p.cmd = EC_REBOOT_DISABLE_JUMP;
|
||||
@@ -1045,9 +1047,6 @@ static const struct {
|
||||
sizeof(((struct ec_params_vboot_cmd *)0)->out.set_flags) },
|
||||
};
|
||||
|
||||
/* Note: depends on enum system_image_copy_t */
|
||||
static const char * const image_names[] = {"unknown", "RO", "A", "B"};
|
||||
|
||||
static int cmd_vboot(int argc, char **argv)
|
||||
{
|
||||
int rv;
|
||||
|
||||
Reference in New Issue
Block a user