|
@@ -19,6 +19,121 @@ static void do_cancel_out(u32 *num, u32 *den, u32 factor)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_FASTBOOT_FLASH
|
|
|
+static void omap_set_fastboot_cpu(void)
|
|
|
+{
|
|
|
+ char *cpu;
|
|
|
+ u32 cpu_rev = omap_revision();
|
|
|
+
|
|
|
+ switch (cpu_rev) {
|
|
|
+ case DRA752_ES1_0:
|
|
|
+ case DRA752_ES1_1:
|
|
|
+ case DRA752_ES2_0:
|
|
|
+ cpu = "DRA752";
|
|
|
+ break;
|
|
|
+ case DRA722_ES1_0:
|
|
|
+ case DRA722_ES2_0:
|
|
|
+ cpu = "DRA722";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ cpu = NULL;
|
|
|
+ printf("Warning: fastboot.cpu: unknown CPU rev: %u\n", cpu_rev);
|
|
|
+ }
|
|
|
+
|
|
|
+ setenv("fastboot.cpu", cpu);
|
|
|
+}
|
|
|
+
|
|
|
+static void omap_set_fastboot_secure(void)
|
|
|
+{
|
|
|
+ const char *secure;
|
|
|
+ u32 dev = get_device_type();
|
|
|
+
|
|
|
+ switch (dev) {
|
|
|
+ case EMU_DEVICE:
|
|
|
+ secure = "EMU";
|
|
|
+ break;
|
|
|
+ case HS_DEVICE:
|
|
|
+ secure = "HS";
|
|
|
+ break;
|
|
|
+ case GP_DEVICE:
|
|
|
+ secure = "GP";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ secure = NULL;
|
|
|
+ printf("Warning: fastboot.secure: unknown CPU sec: %u\n", dev);
|
|
|
+ }
|
|
|
+
|
|
|
+ setenv("fastboot.secure", secure);
|
|
|
+}
|
|
|
+
|
|
|
+static void omap_set_fastboot_board_rev(void)
|
|
|
+{
|
|
|
+ const char *board_rev;
|
|
|
+
|
|
|
+ board_rev = getenv("board_rev");
|
|
|
+ if (board_rev == NULL)
|
|
|
+ printf("Warning: fastboot.board_rev: unknown board revision\n");
|
|
|
+
|
|
|
+ setenv("fastboot.board_rev", board_rev);
|
|
|
+}
|
|
|
+
|
|
|
+#ifdef CONFIG_FASTBOOT_FLASH_MMC_DEV
|
|
|
+static u32 omap_mmc_get_part_size(const char *part)
|
|
|
+{
|
|
|
+ int res;
|
|
|
+ struct blk_desc *dev_desc;
|
|
|
+ disk_partition_t info;
|
|
|
+ u64 sz = 0;
|
|
|
+
|
|
|
+ dev_desc = blk_get_dev("mmc", CONFIG_FASTBOOT_FLASH_MMC_DEV);
|
|
|
+ if (!dev_desc || dev_desc->type == DEV_TYPE_UNKNOWN) {
|
|
|
+ error("invalid mmc device\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ res = part_get_info_by_name(dev_desc, part, &info);
|
|
|
+ if (res < 0) {
|
|
|
+ error("cannot find partition: '%s'\n", part);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Calculate size in bytes */
|
|
|
+ sz = (info.size * (u64)info.blksz);
|
|
|
+ /* to KiB */
|
|
|
+ sz >>= 10;
|
|
|
+
|
|
|
+ return (u32)sz;
|
|
|
+}
|
|
|
+
|
|
|
+static void omap_set_fastboot_userdata_size(void)
|
|
|
+{
|
|
|
+ char buf[16];
|
|
|
+ u32 sz_kb;
|
|
|
+
|
|
|
+ sz_kb = omap_mmc_get_part_size("userdata");
|
|
|
+ if (sz_kb == 0) {
|
|
|
+ buf[0] = '\0';
|
|
|
+ printf("Warning: fastboot.userdata_size: unable to calc\n");
|
|
|
+ } else {
|
|
|
+ sprintf(buf, "%u", sz_kb);
|
|
|
+ }
|
|
|
+
|
|
|
+ setenv("fastboot.userdata_size", buf);
|
|
|
+}
|
|
|
+#else
|
|
|
+static inline void omap_set_fastboot_userdata_size(void)
|
|
|
+{
|
|
|
+}
|
|
|
+#endif /* CONFIG_FASTBOOT_FLASH_MMC_DEV */
|
|
|
+void omap_set_fastboot_vars(void)
|
|
|
+{
|
|
|
+ omap_set_fastboot_cpu();
|
|
|
+ omap_set_fastboot_secure();
|
|
|
+ omap_set_fastboot_board_rev();
|
|
|
+ omap_set_fastboot_userdata_size();
|
|
|
+}
|
|
|
+#endif /* CONFIG_FASTBOOT_FLASH */
|
|
|
+
|
|
|
/*
|
|
|
* Cancel out the denominator and numerator of a fraction
|
|
|
* to get smaller numerator and denominator.
|