diff options
Diffstat (limited to 'drivers/block/blk-uclass.c')
-rw-r--r-- | drivers/block/blk-uclass.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c index facf52711c..65a766e586 100644 --- a/drivers/block/blk-uclass.c +++ b/drivers/block/blk-uclass.c | |||
@@ -23,6 +23,7 @@ static const char *if_typename_str[IF_TYPE_COUNT] = { | |||
23 | [IF_TYPE_HOST] = "host", | 23 | [IF_TYPE_HOST] = "host", |
24 | [IF_TYPE_NVME] = "nvme", | 24 | [IF_TYPE_NVME] = "nvme", |
25 | [IF_TYPE_EFI] = "efi", | 25 | [IF_TYPE_EFI] = "efi", |
26 | [IF_TYPE_VIRTIO] = "virtio", | ||
26 | }; | 27 | }; |
27 | 28 | ||
28 | static enum uclass_id if_type_uclass_id[IF_TYPE_COUNT] = { | 29 | static enum uclass_id if_type_uclass_id[IF_TYPE_COUNT] = { |
@@ -37,6 +38,7 @@ static enum uclass_id if_type_uclass_id[IF_TYPE_COUNT] = { | |||
37 | [IF_TYPE_HOST] = UCLASS_ROOT, | 38 | [IF_TYPE_HOST] = UCLASS_ROOT, |
38 | [IF_TYPE_NVME] = UCLASS_NVME, | 39 | [IF_TYPE_NVME] = UCLASS_NVME, |
39 | [IF_TYPE_EFI] = UCLASS_EFI, | 40 | [IF_TYPE_EFI] = UCLASS_EFI, |
41 | [IF_TYPE_VIRTIO] = UCLASS_VIRTIO, | ||
40 | }; | 42 | }; |
41 | 43 | ||
42 | static enum if_type if_typename_to_iftype(const char *if_typename) | 44 | static enum if_type if_typename_to_iftype(const char *if_typename) |
@@ -471,15 +473,6 @@ unsigned long blk_derase(struct blk_desc *block_dev, lbaint_t start, | |||
471 | return ops->erase(dev, start, blkcnt); | 473 | return ops->erase(dev, start, blkcnt); |
472 | } | 474 | } |
473 | 475 | ||
474 | int blk_prepare_device(struct udevice *dev) | ||
475 | { | ||
476 | struct blk_desc *desc = dev_get_uclass_platdata(dev); | ||
477 | |||
478 | part_init(desc); | ||
479 | |||
480 | return 0; | ||
481 | } | ||
482 | |||
483 | int blk_get_from_parent(struct udevice *parent, struct udevice **devp) | 476 | int blk_get_from_parent(struct udevice *parent, struct udevice **devp) |
484 | { | 477 | { |
485 | struct udevice *dev; | 478 | struct udevice *dev; |
@@ -526,7 +519,7 @@ int blk_find_max_devnum(enum if_type if_type) | |||
526 | return max_devnum; | 519 | return max_devnum; |
527 | } | 520 | } |
528 | 521 | ||
529 | static int blk_next_free_devnum(enum if_type if_type) | 522 | int blk_next_free_devnum(enum if_type if_type) |
530 | { | 523 | { |
531 | int ret; | 524 | int ret; |
532 | 525 | ||
@@ -644,8 +637,20 @@ int blk_unbind_all(int if_type) | |||
644 | return 0; | 637 | return 0; |
645 | } | 638 | } |
646 | 639 | ||
640 | static int blk_post_probe(struct udevice *dev) | ||
641 | { | ||
642 | #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBDISK_SUPPORT) | ||
643 | struct blk_desc *desc = dev_get_uclass_platdata(dev); | ||
644 | |||
645 | part_init(desc); | ||
646 | #endif | ||
647 | |||
648 | return 0; | ||
649 | } | ||
650 | |||
647 | UCLASS_DRIVER(blk) = { | 651 | UCLASS_DRIVER(blk) = { |
648 | .id = UCLASS_BLK, | 652 | .id = UCLASS_BLK, |
649 | .name = "blk", | 653 | .name = "blk", |
654 | .post_probe = blk_post_probe, | ||
650 | .per_device_platdata_auto_alloc_size = sizeof(struct blk_desc), | 655 | .per_device_platdata_auto_alloc_size = sizeof(struct blk_desc), |
651 | }; | 656 | }; |