summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/chromeos/load_kernel_helper.c12
-rw-r--r--lib/chromeos/os_storage.c20
2 files changed, 32 insertions, 0 deletions
diff --git a/lib/chromeos/load_kernel_helper.c b/lib/chromeos/load_kernel_helper.c
index 125cd298bdc..4701625addc 100644
--- a/lib/chromeos/load_kernel_helper.c
+++ b/lib/chromeos/load_kernel_helper.c
@@ -113,6 +113,18 @@ EXIT:
(int) params->bootloader_address);
debug(PREFIX "bootloader_size: 0x%08x\n",
(int) params->bootloader_size);
+
+ if (params->partition_number == 2) {
+ setenv("kernelpart", "2");
+ setenv("rootpart", "3");
+ } else if (params->partition_number == 4) {
+ setenv("kernelpart", "4");
+ setenv("rootpart", "5");
+ } else {
+ debug(PREFIX "unknown kernel partition: %d\n",
+ (int) params->partition_number);
+ status = LOAD_KERNEL_NOT_FOUND;
+ }
}
/*
diff --git a/lib/chromeos/os_storage.c b/lib/chromeos/os_storage.c
index bfe71212158..64ee57ab4f4 100644
--- a/lib/chromeos/os_storage.c
+++ b/lib/chromeos/os_storage.c
@@ -102,6 +102,24 @@ EXIT:
return ret;
}
+/* TODO(clchiou): This will be deprecated when we fix crosbug:14022 */
+static void setup_envvar(char *ifname, int dev)
+{
+ char buf[32];
+
+ setenv("devtype", ifname);
+
+ if (!strcmp(ifname, "usb")) {
+ setenv("devname", "sda");
+ } else { /* assert ifname == "mmc" */
+ sprintf(buf, "mmcblk%dp", dev);
+ setenv("devname", buf);
+ }
+
+ sprintf(buf, "%d", dev);
+ setenv("devnum", buf);
+}
+
int set_bootdev(char *ifname, int dev, int part)
{
disk_partition_t part_info;
@@ -114,6 +132,7 @@ int set_bootdev(char *ifname, int dev, int part)
if (part == 0) {
bootdev_config.offset = 0;
bootdev_config.limit = bootdev_config.dev_desc->lba;
+ setup_envvar(ifname, dev);
return 0;
}
@@ -124,6 +143,7 @@ int set_bootdev(char *ifname, int dev, int part)
bootdev_config.offset = part_info.start;
bootdev_config.limit = part_info.size;
+ setup_envvar(ifname, dev);
return 0;
cleanup: