disk/part.c: Expose list of available block drivers
authorAlexander Graf <agraf@suse.de>
Fri, 4 Mar 2016 00:09:56 +0000 (01:09 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 15 Mar 2016 19:19:22 +0000 (15:19 -0400)
We have a pretty nice and generic interface to ask for a specific block
device. However, that one is still based around the magic notion that
we know the driver name.

In order to be able to write fully generic disk access code, expose the
currently internal list to other source files so that they can scan through
all available block drivers.

Signed-off-by: Alexander Graf <agraf@suse.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
disk/part.c
include/part.h

index 2a460503922cda45f8c9546178375d945c59c956..67d98fe8443464800bf3cc8d5ceb4639983c6925 100644 (file)
 #define PRINTF(fmt,args...)
 #endif
 
-struct block_drvr {
-       char *name;
-       struct blk_desc* (*get_dev)(int dev);
-       int (*select_hwpart)(int dev_num, int hwpart);
-};
-
-static const struct block_drvr block_drvr[] = {
+const struct block_drvr block_drvr[] = {
 #if defined(CONFIG_CMD_IDE)
        { .name = "ide", .get_dev = ide_get_dev, },
 #endif
index 6d8f52049db556b240ae0a9a14011df73f582182..dc8e72e08f6da82be14305f3e32cdce83ea280e0 100644 (file)
 #include <blk.h>
 #include <ide.h>
 
+struct block_drvr {
+       char *name;
+       struct blk_desc* (*get_dev)(int dev);
+       int (*select_hwpart)(int dev_num, int hwpart);
+};
+
 #define LOG2(x) (((x & 0xaaaaaaaa) ? 1 : 0) + ((x & 0xcccccccc) ? 2 : 0) + \
                 ((x & 0xf0f0f0f0) ? 4 : 0) + ((x & 0xff00ff00) ? 8 : 0) + \
                 ((x & 0xffff0000) ? 16 : 0))
@@ -165,6 +171,7 @@ int blk_get_device_by_str(const char *ifname, const char *dev_str,
 int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
                            struct blk_desc **dev_desc,
                            disk_partition_t *info, int allow_whole_dev);
+extern const struct block_drvr block_drvr[];
 #else
 static inline struct blk_desc *blk_get_dev(const char *ifname, int dev)
 { return NULL; }