From 72a85c0d2dfe965c831670f06d3803aaad7bb5b1 Mon Sep 17 00:00:00 2001
From: Simon Glass <sjg@chromium.org>
Date: Sun, 1 May 2016 13:52:22 -0600
Subject: dm: blk: Fix allocation of block-device numbering

Due to code ordering the block devices are not numbered sequentially. Fix
this.

Signed-off-by: Simon Glass <sjg@chromium.org>
---
 drivers/block/blk-uclass.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

(limited to 'drivers/block/blk-uclass.c')

diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c
index 6ecbff0e93..f67f9b9d55 100644
--- a/drivers/block/blk-uclass.c
+++ b/drivers/block/blk-uclass.c
@@ -439,15 +439,6 @@ int blk_create_device(struct udevice *parent, const char *drv_name,
 	struct udevice *dev;
 	int ret;
 
-	ret = device_bind_driver(parent, drv_name, name, &dev);
-	if (ret)
-		return ret;
-	desc = dev_get_uclass_platdata(dev);
-	desc->if_type = if_type;
-	desc->blksz = blksz;
-	desc->lba = size / blksz;
-	desc->part_type = PART_TYPE_UNKNOWN;
-	desc->bdev = dev;
 	if (devnum == -1) {
 		ret = blk_find_max_devnum(if_type);
 		if (ret == -ENODEV)
@@ -457,6 +448,15 @@ int blk_create_device(struct udevice *parent, const char *drv_name,
 		else
 			devnum = ret + 1;
 	}
+	ret = device_bind_driver(parent, drv_name, name, &dev);
+	if (ret)
+		return ret;
+	desc = dev_get_uclass_platdata(dev);
+	desc->if_type = if_type;
+	desc->blksz = blksz;
+	desc->lba = size / blksz;
+	desc->part_type = PART_TYPE_UNKNOWN;
+	desc->bdev = dev;
 	desc->devnum = devnum;
 	*devp = dev;
 
-- 
cgit v1.2.1