[U-Boot] [PATCH V4 1/6] disk: introduce get_device()

Stephen Warren swarren at wwwdotorg.org
Fri Sep 21 21:50:56 CEST 2012


From: Stephen Warren <swarren at nvidia.com>

This patch introduces function get_device(). This looks up a
block_dev_desc_t from an interface name (e.g. mmc) and device number
(e.g. 0). This function is essentially the non-partition-specific
prefix of get_device_and_partition().

Signed-off-by: Stephen Warren <swarren at nvidia.com>
---
v4: Rebased.
v3: New patch.

The series is based on a merge of (slightly old versions of)
u-boot-tegra/master, u-boot-usb/master, and u-boot/ext4, and (the latest
version of) Rob's load command rework series, although only u-boot/ext4
and Rob's patches are likely to contribute any context to the diffs here;
my usage of the other branches was just a convenience for testing.
---
 disk/part.c    |   22 ++++++++++++++++++++++
 include/part.h |    5 +++++
 2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/disk/part.c b/disk/part.c
index 958656c..0a1b9cb 100644
--- a/disk/part.c
+++ b/disk/part.c
@@ -435,6 +435,28 @@ void print_part (block_dev_desc_t * dev_desc)
 
 #endif
 
+int get_device(const char *ifname, const char *dev_str,
+	       block_dev_desc_t **dev_desc)
+{
+	char *ep;
+	int dev;
+
+	dev = simple_strtoul(dev_str, &ep, 16);
+	if (*ep) {
+		printf("** Bad device specification %s %s **\n",
+		       ifname, dev_str);
+		return -1;
+	}
+
+	*dev_desc = get_dev(ifname, dev);
+	if (!(*dev_desc) || ((*dev_desc)->type == DEV_TYPE_UNKNOWN)) {
+		printf("** Bad device %s %s **\n", ifname, dev_str);
+		return -1;
+	}
+
+	return dev;
+}
+
 int get_device_and_partition(const char *ifname, const char *dev_str,
 			     block_dev_desc_t **dev_desc,
 			     disk_partition_t *info)
diff --git a/include/part.h b/include/part.h
index a6d06f3..144df4e 100644
--- a/include/part.h
+++ b/include/part.h
@@ -112,6 +112,8 @@ int get_partition_info (block_dev_desc_t * dev_desc, int part, disk_partition_t
 void print_part (block_dev_desc_t *dev_desc);
 void  init_part (block_dev_desc_t *dev_desc);
 void dev_print(block_dev_desc_t *dev_desc);
+int get_device(const char *ifname, const char *dev_str,
+	       block_dev_desc_t **dev_desc);
 int get_device_and_partition(const char *ifname, const char *dev_str,
 			     block_dev_desc_t **dev_desc,
 			     disk_partition_t *info);
@@ -131,6 +133,9 @@ static inline int get_partition_info (block_dev_desc_t * dev_desc, int part,
 static inline void print_part (block_dev_desc_t *dev_desc) {}
 static inline void  init_part (block_dev_desc_t *dev_desc) {}
 static inline void dev_print(block_dev_desc_t *dev_desc) {}
+static inline int get_device(const char *ifname, const char *dev_str,
+	       block_dev_desc_t **dev_desc)
+{ return -1; }
 static inline int get_device_and_partition(const char *ifname,
 					   const char *dev_str,
 					   block_dev_desc_t **dev_desc,
-- 
1.7.0.4



More information about the U-Boot mailing list