X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=common%2Fcmd_usb.c;h=a8e3ae5b67f8b00e6a2a83fd40c65fdc28fcd9b7;hb=436da3cd233e7166b5ce9293dbd28092cf37bcc9;hp=3ba6fff4fd325f7e83605a4d0313fa803ad27133;hpb=909e9bf3ae6195ac6d52f9e453fba2be8e7e947f;p=u-boot diff --git a/common/cmd_usb.c b/common/cmd_usb.c index 3ba6fff4fd..a8e3ae5b67 100644 --- a/common/cmd_usb.c +++ b/common/cmd_usb.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -149,7 +150,8 @@ void usb_display_class_sub(unsigned char dclass, unsigned char subclass, void usb_display_string(struct usb_device *dev, int index) { - char buffer[256]; + ALLOC_CACHE_ALIGN_BUFFER(char, buffer, 256); + if (index != 0) { if (usb_string(dev, index, &buffer[0], 256) > 0) printf("String: \"%s\"", buffer); @@ -240,7 +242,7 @@ void usb_display_ep_desc(struct usb_endpoint_descriptor *epdesc) printf("Interrupt"); break; } - printf(" MaxPacket %d", epdesc->wMaxPacketSize); + printf(" MaxPacket %d", get_unaligned(&epdesc->wMaxPacketSize)); if ((epdesc->bmAttributes & 0x03) == 0x3) printf(" Interval %dms", epdesc->bInterval); printf("\n"); @@ -281,7 +283,7 @@ static inline char *portspeed(int speed) void usb_show_tree_graph(struct usb_device *dev, char *pre) { int i, index; - int has_child, last_child, port; + int has_child, last_child; index = strlen(pre); printf(" %s", pre); @@ -300,7 +302,6 @@ void usb_show_tree_graph(struct usb_device *dev, char *pre) /* found our pointer, see if we have a * little sister */ - port = i; while (i++ < dev->parent->maxchild) { if (dev->parent->children[i] != NULL) { /* found a sister */ @@ -356,7 +357,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *boot_device = NULL; char *ep; - int dev, part = 1, rcode; + int dev, part = 1; ulong addr, cnt; disk_partition_t info; image_header_t *hdr; @@ -379,7 +380,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) boot_device = argv[2]; break; default: - return cmd_usage(cmdtp); + return CMD_RET_USAGE; } if (!boot_device) { @@ -490,16 +491,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) flush_cache(addr, (cnt+1)*info.blksz); - /* Check if we should attempt an auto-start */ - if (((ep = getenv("autostart")) != NULL) && (strcmp(ep, "yes") == 0)) { - char *local_args[2]; - local_args[0] = argv[0]; - local_args[1] = NULL; - printf("Automatic boot of image at addr 0x%08lX ...\n", addr); - rcode = do_bootm(cmdtp, 0, 1, local_args); - return rcode; - } - return 0; + return bootm_maybe_autostart(cmdtp, argv[0]); } #endif /* CONFIG_USB_STORAGE */ @@ -518,10 +510,11 @@ int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) #endif if (argc < 2) - return cmd_usage(cmdtp); + return CMD_RET_USAGE; if ((strncmp(argv[1], "reset", 5) == 0) || (strncmp(argv[1], "start", 5) == 0)) { + bootstage_mark_name(BOOTSTAGE_ID_USB_START, "usb_start"); usb_stop(); printf("(Re)start USB...\n"); i = usb_init(); @@ -703,18 +696,19 @@ int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return 0; } #endif /* CONFIG_USB_STORAGE */ - return cmd_usage(cmdtp); + return CMD_RET_USAGE; } #ifdef CONFIG_USB_STORAGE U_BOOT_CMD( usb, 5, 1, do_usb, "USB sub-system", - "reset - reset (rescan) USB controller\n" - "usb stop [f] - stop USB [f]=force stop\n" - "usb tree - show USB device tree\n" + "start - start (scan) USB controller\n" + "usb reset - reset (rescan) USB controller\n" + "usb stop [f] - stop USB [f]=force stop\n" + "usb tree - show USB device tree\n" "usb info [dev] - show available USB devices\n" - "usb storage - show details of USB storage devices\n" + "usb storage - show details of USB storage devices\n" "usb dev [dev] - show or set current USB storage device\n" "usb part [dev] - print partition table of one or all USB storage" " devices\n" @@ -735,8 +729,9 @@ U_BOOT_CMD( U_BOOT_CMD( usb, 5, 1, do_usb, "USB sub-system", - "reset - reset (rescan) USB controller\n" - "usb tree - show USB device tree\n" - "usb info [dev] - show available USB devices" + "start - start (scan) USB controller\n" + "usb reset - reset (rescan) USB controller\n" + "usb tree - show USB device tree\n" + "usb info [dev] - show available USB devices" ); #endif