#include <asm/io.h>
#include <errno.h>
#include <i2c.h>
+#include <part.h>
#include <mmc.h>
#include <netdev.h>
#include <samsung-usb-phy-uboot.h>
char *get_dfu_alt_system(char *interface, char *devstr)
{
char *info = "Not supported!";
+ struct mmc *mmc;
+ char *alt_system;
+ int dev_num;
+ int ret;
+ disk_partition_t partinfo;
if (board_is_odroidxu4() || board_is_odroidhc1())
return info;
- return getenv("dfu_alt_system");
+ dev_num = simple_strtoul(devstr, NULL, 10);
+
+ mmc = find_mmc_device(dev_num);
+ if (!mmc)
+ return NULL;
+
+ if (mmc_init(mmc))
+ return NULL;
+
+ ret = blk_select_hwpart_devnum(IF_TYPE_MMC, 0, 0);
+ if (ret)
+ return NULL;
+
+ if (getenv("ramdiskpart")) {
+ int part_num = (int)simple_strtoul(getenv("ramdiskpart"), NULL, 10);
+ ret = part_get_info(&mmc->block_dev, part_num, &partinfo);
+ if (ret)
+ alt_system = CONFIG_DFU_ALT_SYSTEM;
+ else
+ alt_system = CONFIG_DFU_ALT_SYSTEM_2;
+ } else {
+ alt_system = CONFIG_DFU_ALT_SYSTEM;
+ }
+
+ return alt_system;
}
char *get_dfu_alt_boot(char *interface, char *devstr)