diff options
-rw-r--r-- | lib/chromeos/load_kernel_helper.c | 12 | ||||
-rw-r--r-- | lib/chromeos/os_storage.c | 20 |
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: |