static int exynos_dwmmc_bind(struct udevice *dev)
{
struct exynos_mmc_plat *plat = dev_get_platdata(dev);
+#ifdef CONFIG_TIZEN_XU3
+ struct blk_desc *bdesc;
+ struct udevice *bdev;
+ int ret, devnum = -1;
+
+ ret = dev_read_alias_seq(dev, &devnum);
+ if (get_boot_mode() == BOOT_MODE_SD) {
+ if (devnum == 0)
+ devnum = 1;
+ else if (devnum == 2)
+ devnum = 0;
+ }
+
+ ret = blk_create_devicef(dev, "mmc_blk", "blk", IF_TYPE_MMC,
+ devnum, 512, 0, &bdev);
+ if (ret) {
+ printf("Cannot create block device\n");
+ return ret;
+ }
+ bdesc = dev_get_uclass_platdata(bdev);
+ plat->mmc.cfg = &plat->cfg;
+ plat->mmc.priv = dev;
+
+ /* the following chunk was from mmc_register() */
+ /* Setup dsr related values */
+ plat->mmc.dsr_imp = 0;
+ plat->mmc.dsr = 0xffffffff;
+ /* Setup the universal parts of the block interface just once */
+ bdesc->removable = 1;
+
+ /* setup initial part type */
+ bdesc->part_type = plat->cfg.part_type;
+ plat->mmc.dev = dev;
+ return 0;
+#else
return dwmci_bind(dev, &plat->mmc, &plat->cfg);
+#endif
}
static const struct udevice_id exynos_dwmmc_ids[] = {