int mmc_get_next_devnum(void) { int ret; ret = blk_find_max_devnum(IF_TYPE_MMC); if (ret < 0) return ret; return ret; }
/* * Create a block device for a handle * * @handle handle * @interface block io protocol * @return 0 = success */ static int efi_bl_bind(efi_handle_t handle, void *interface) { struct udevice *bdev, *parent = dm_root(); int ret, devnum; char *name; struct efi_object *obj = efi_search_obj(handle); struct efi_block_io *io = interface; int disks; struct efi_blk_priv *priv; EFI_PRINT("%s: handle %p, interface %p\n", __func__, handle, io); if (!obj) return -ENOENT; devnum = blk_find_max_devnum(IF_TYPE_EFI); if (devnum == -ENODEV) devnum = 0; else if (devnum < 0) return devnum; name = calloc(1, 18); /* strlen("efiblk#2147483648") + 1 */ if (!name) return -ENOMEM; sprintf(name, "efiblk#%d", devnum); /* Create driver model udevice for the EFI block io device */ ret = blk_create_device(parent, "efi_blk", name, IF_TYPE_EFI, devnum, io->media->block_size, (lbaint_t)io->media->last_block, &bdev); if (ret) return ret; if (!bdev) return -ENOENT; /* Allocate priv */ ret = device_probe(bdev); if (ret) return ret; EFI_PRINT("%s: block device '%s' created\n", __func__, bdev->name); priv = bdev->priv; priv->handle = handle; priv->io = interface; ret = blk_prepare_device(bdev); /* Create handles for the partions of the block device */ disks = efi_bl_bind_partitions(handle, bdev); EFI_PRINT("Found %d partitions\n", disks); return 0; }
int mmc_get_next_devnum(void) { return blk_find_max_devnum(IF_TYPE_MMC); }
int get_mmc_num(void) { return max((blk_find_max_devnum(IF_TYPE_MMC) + 1), 0); }