From 6a2ff3f44f263669ae5558d943402efa1714639a Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Wed, 29 Nov 2017 16:46:42 +0100 Subject: [PATCH] UPSTREAM: dm: blk: Use uclass_find_first/next_device() in blk_first/next_device() This patch changes the calls to uclass_first/next_device() in blk_first/ next_device() to use uclass_find_first/next_device() instead. These functions don't prepare the devices, which is correct in this case. With this patch applied, the "usb storage" command now works again as expected: => usb storage Device 0: Vendor: SanDisk Rev: 1.00 Prod: Ultra Type: Removable Hard Disk Capacity: 58656.0 MB = 57.2 GB (120127488 x 512) Without this patch, it used to generate this buggy output: => usb storage Card did not respond to voltage select! mmc_init: -95, time 26 No storage devices, perhaps not 'usb start'ed..? Change-Id: I5a037217a568d9e4eedb089bce5a283eadff1310 Signed-off-by: Stefan Roese Suggested-by: Simon Glass Cc: Simon Glass Cc: Bin Meng Reviewed-by: Bin Meng Reviewed-by: Simon Glass Signed-off-by: Kever Yang (cherry picked from commit 8a5cbc065dfe1f258e3a7be823ea128184b90b5b) --- drivers/block/blk-uclass.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c index f8c650357a..58cf81703e 100644 --- a/drivers/block/blk-uclass.c +++ b/drivers/block/blk-uclass.c @@ -10,6 +10,7 @@ #include #include #include +#include static const char *if_typename_str[IF_TYPE_COUNT] = { [IF_TYPE_IDE] = "ide", @@ -333,7 +334,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) @@ -342,7 +343,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); @@ -358,7 +359,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)