dm: blk: Add a function to find the next block device number
authorSimon Glass <sjg@chromium.org>
Mon, 24 Apr 2017 02:02:06 +0000 (20:02 -0600)
committerSimon Glass <sjg@chromium.org>
Thu, 1 Jun 2017 13:03:05 +0000 (07:03 -0600)
At present this code is inline. Move it into a function to allow it to
be used elsewhere.

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/block/blk-uclass.c

index 8b6b28d8901eb8554407dc626cb1ca816b514836..881c39f77471d327e08ec06b7e0bad2c24ae4a12 100644 (file)
@@ -473,6 +473,19 @@ int blk_find_max_devnum(enum if_type if_type)
        return max_devnum;
 }
 
+static int blk_next_free_devnum(enum if_type if_type)
+{
+       int ret;
+
+       ret = blk_find_max_devnum(if_type);
+       if (ret == -ENODEV)
+               return 0;
+       if (ret < 0)
+               return ret;
+
+       return ret + 1;
+}
+
 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)
@@ -482,13 +495,10 @@ int blk_create_device(struct udevice *parent, const char *drv_name,
        int ret;
 
        if (devnum == -1) {
-               ret = blk_find_max_devnum(if_type);
-               if (ret == -ENODEV)
-                       devnum = 0;
-               else if (ret < 0)
+               ret = blk_next_free_devnum(if_type);
+               if (ret < 0)
                        return ret;
-               else
-                       devnum = ret + 1;
+               devnum = ret;
        }
        ret = device_bind_driver(parent, drv_name, name, &dev);
        if (ret)