X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fblock%2Fblk-uclass.c;h=9e0c8239690d295406872a695629a248f33952f3;hb=937ddf2cdc6e9fdb65f2fe12e93d37fc8ae66bb1;hp=a3737badec6df61ca318cfee975f6f95a6535191;hpb=ffab6945eca97c23612d8434833dcdaa4a8556dd;p=u-boot diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c index a3737badec..9e0c823969 100644 --- a/drivers/block/blk-uclass.c +++ b/drivers/block/blk-uclass.c @@ -1,8 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2016 Google, Inc * Written by Simon Glass - * - * SPDX-License-Identifier: GPL-2.0+ */ #include @@ -10,6 +9,7 @@ #include #include #include +#include static const char *if_typename_str[IF_TYPE_COUNT] = { [IF_TYPE_IDE] = "ide", @@ -21,12 +21,12 @@ static const char *if_typename_str[IF_TYPE_COUNT] = { [IF_TYPE_SD] = "sd", [IF_TYPE_SATA] = "sata", [IF_TYPE_HOST] = "host", - [IF_TYPE_SYSTEMACE] = "ace", [IF_TYPE_NVME] = "nvme", + [IF_TYPE_EFI] = "efi", }; static enum uclass_id if_type_uclass_id[IF_TYPE_COUNT] = { - [IF_TYPE_IDE] = UCLASS_INVALID, + [IF_TYPE_IDE] = UCLASS_IDE, [IF_TYPE_SCSI] = UCLASS_SCSI, [IF_TYPE_ATAPI] = UCLASS_INVALID, [IF_TYPE_USB] = UCLASS_MASS_STORAGE, @@ -36,7 +36,7 @@ static enum uclass_id if_type_uclass_id[IF_TYPE_COUNT] = { [IF_TYPE_SATA] = UCLASS_AHCI, [IF_TYPE_HOST] = UCLASS_ROOT, [IF_TYPE_NVME] = UCLASS_NVME, - [IF_TYPE_SYSTEMACE] = UCLASS_INVALID, + [IF_TYPE_EFI] = UCLASS_EFI, }; static enum if_type if_typename_to_iftype(const char *if_typename) @@ -57,6 +57,11 @@ static enum uclass_id if_type_to_uclass_id(enum if_type if_type) return if_type_uclass_id[if_type]; } +const char *blk_get_if_type_name(enum if_type if_type) +{ + return if_typename_str[if_type]; +} + struct blk_desc *blk_get_devnum_by_type(enum if_type if_type, int devnum) { struct blk_desc *desc; @@ -289,9 +294,6 @@ ulong blk_read_devnum(enum if_type if_type, int devnum, lbaint_t start, if (IS_ERR_VALUE(n)) return n; - /* flush cache after read */ - flush_cache((ulong)buffer, blkcnt * desc->blksz); - return n; } @@ -329,7 +331,7 @@ int blk_first_device(int if_type, struct udevice **devp) struct blk_desc *desc; int ret; - ret = uclass_first_device(UCLASS_BLK, devp); + ret = uclass_find_first_device(UCLASS_BLK, devp); if (ret) return ret; if (!*devp) @@ -338,7 +340,7 @@ int blk_first_device(int if_type, struct udevice **devp) desc = dev_get_uclass_platdata(*devp); if (desc->if_type == if_type) return 0; - ret = uclass_next_device(devp); + ret = uclass_find_next_device(devp); if (ret) return ret; } while (*devp); @@ -354,7 +356,7 @@ int blk_next_device(struct udevice **devp) desc = dev_get_uclass_platdata(*devp); if_type = desc->if_type; do { - ret = uclass_next_device(devp); + ret = uclass_find_next_device(devp); if (ret) return ret; if (!*devp) @@ -541,7 +543,7 @@ static int blk_claim_devnum(enum if_type if_type, int devnum) int blk_create_device(struct udevice *parent, const char *drv_name, const char *name, int if_type, int devnum, int blksz, - lbaint_t size, struct udevice **devp) + lbaint_t lba, struct udevice **devp) { struct blk_desc *desc; struct udevice *dev; @@ -562,7 +564,7 @@ int blk_create_device(struct udevice *parent, const char *drv_name, desc = dev_get_uclass_platdata(dev); desc->if_type = if_type; desc->blksz = blksz; - desc->lba = size / blksz; + desc->lba = lba; desc->part_type = PART_TYPE_UNKNOWN; desc->bdev = dev; desc->devnum = devnum; @@ -573,7 +575,7 @@ int blk_create_device(struct udevice *parent, const char *drv_name, int blk_create_devicef(struct udevice *parent, const char *drv_name, const char *name, int if_type, int devnum, int blksz, - lbaint_t size, struct udevice **devp) + lbaint_t lba, struct udevice **devp) { char dev_name[30], *str; int ret; @@ -584,14 +586,14 @@ int blk_create_devicef(struct udevice *parent, const char *drv_name, return -ENOMEM; ret = blk_create_device(parent, drv_name, str, if_type, devnum, - blksz, size, devp); + blksz, lba, devp); if (ret) { free(str); return ret; } device_set_name_alloced(*devp); - return ret; + return 0; } int blk_unbind_all(int if_type)