]> git.sur5r.net Git - u-boot/blobdiff - cmd/usb.c
Merge branch 'master' of git://www.denx.de/git/u-boot-imx
[u-boot] / cmd / usb.c
index 97dd6f0099dc24b24d66f8cd9dd348d7a79b65d3..b83d3233b789fffb49599ce2c9cf63abcc21112e 100644 (file)
--- a/cmd/usb.c
+++ b/cmd/usb.c
@@ -15,6 +15,7 @@
 #include <command.h>
 #include <console.h>
 #include <dm.h>
+#include <dm/uclass-internal.h>
 #include <memalign.h>
 #include <asm/byteorder.h>
 #include <asm/unaligned.h>
@@ -442,12 +443,15 @@ void usb_show_tree(void)
 #ifdef CONFIG_DM_USB
        struct udevice *bus;
 
-       for (uclass_first_device(UCLASS_USB, &bus);
+       for (uclass_find_first_device(UCLASS_USB, &bus);
                bus;
-               uclass_next_device(&bus)) {
+               uclass_find_next_device(&bus)) {
                struct usb_device *udev;
                struct udevice *dev;
 
+               if (!device_active(bus))
+                       continue;
+
                device_find_first_child(bus, &dev);
                if (dev && device_active(dev)) {
                        udev = dev_get_parent_priv(dev);
@@ -719,7 +723,8 @@ static int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                int devno, ok = 0;
                if (argc == 2) {
                        for (devno = 0; ; ++devno) {
-                               stor_dev = usb_stor_get_dev(devno);
+                               stor_dev = blk_get_devnum_by_type(IF_TYPE_USB,
+                                                                 devno);
                                if (stor_dev == NULL)
                                        break;
                                if (stor_dev->type != DEV_TYPE_UNKNOWN) {
@@ -732,7 +737,7 @@ static int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        }
                } else {
                        devno = simple_strtoul(argv[2], NULL, 16);
-                       stor_dev = usb_stor_get_dev(devno);
+                       stor_dev = blk_get_devnum_by_type(IF_TYPE_USB, devno);
                        if (stor_dev != NULL &&
                            stor_dev->type != DEV_TYPE_UNKNOWN) {
                                ok++;
@@ -758,7 +763,8 @@ static int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        unsigned long n;
                        printf("\nUSB read: device %d block # %ld, count %ld"
                                " ... ", usb_stor_curr_dev, blk, cnt);
-                       stor_dev = usb_stor_get_dev(usb_stor_curr_dev);
+                       stor_dev = blk_get_devnum_by_type(IF_TYPE_USB,
+                                                         usb_stor_curr_dev);
                        n = blk_dread(stor_dev, blk, cnt, (ulong *)addr);
                        printf("%ld blocks read: %s\n", n,
                                (n == cnt) ? "OK" : "ERROR");
@@ -779,7 +785,8 @@ static int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        unsigned long n;
                        printf("\nUSB write: device %d block # %ld, count %ld"
                                " ... ", usb_stor_curr_dev, blk, cnt);
-                       stor_dev = usb_stor_get_dev(usb_stor_curr_dev);
+                       stor_dev = blk_get_devnum_by_type(IF_TYPE_USB,
+                                                         usb_stor_curr_dev);
                        n = blk_dwrite(stor_dev, blk, cnt, (ulong *)addr);
                        printf("%ld blocks write: %s\n", n,
                                (n == cnt) ? "OK" : "ERROR");
@@ -792,7 +799,7 @@ static int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                if (argc == 3) {
                        int dev = (int)simple_strtoul(argv[2], NULL, 10);
                        printf("\nUSB device %d: ", dev);
-                       stor_dev = usb_stor_get_dev(dev);
+                       stor_dev = blk_get_devnum_by_type(IF_TYPE_USB, dev);
                        if (stor_dev == NULL) {
                                printf("unknown device\n");
                                return 1;
@@ -806,7 +813,8 @@ static int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        return 0;
                } else {
                        printf("\nUSB device %d: ", usb_stor_curr_dev);
-                       stor_dev = usb_stor_get_dev(usb_stor_curr_dev);
+                       stor_dev = blk_get_devnum_by_type(IF_TYPE_USB,
+                                                         usb_stor_curr_dev);
                        dev_print(stor_dev);
                        if (stor_dev->type == DEV_TYPE_UNKNOWN)
                                return 1;