X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=cmd%2Fusb.c;h=dd9ac0bc9761d1fbb593256f042b2a2d7b20ba64;hb=5a760f61c5345295d499ec9590b3b1c2f6a46b9d;hp=d95bcf5c8eec43ed6997d9fe6b2042328eab434a;hpb=1fdafb2e3dfecdc4129a8062ad25b1adb32b0efb;p=oweals%2Fu-boot.git diff --git a/cmd/usb.c b/cmd/usb.c index d95bcf5c8e..dd9ac0bc97 100644 --- a/cmd/usb.c +++ b/cmd/usb.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland @@ -7,8 +8,6 @@ * * Most of this source has been derived from the Linux USB * project. - * - * SPDX-License-Identifier: GPL-2.0+ */ #include @@ -317,26 +316,18 @@ static struct usb_device *usb_find_device(int devnum) return NULL; } -static inline char *portspeed(int speed) +static inline const char *portspeed(int speed) { - char *speed_str; - switch (speed) { case USB_SPEED_SUPER: - speed_str = "5 Gb/s"; - break; + return "5 Gb/s"; case USB_SPEED_HIGH: - speed_str = "480 Mb/s"; - break; + return "480 Mb/s"; case USB_SPEED_LOW: - speed_str = "1.5 Mb/s"; - break; + return "1.5 Mb/s"; default: - speed_str = "12 Mb/s"; - break; + return "12 Mb/s"; } - - return speed_str; } /* shows the device tree recursively */ @@ -349,6 +340,16 @@ static void usb_show_tree_graph(struct usb_device *dev, char *pre) printf(" %s", pre); #ifdef CONFIG_DM_USB has_child = device_has_active_children(dev->dev); + if (device_get_uclass_id(dev->dev) == UCLASS_MASS_STORAGE) { + struct udevice *child; + + for (device_find_first_child(dev->dev, &child); + child; + device_find_next_child(&child)) { + if (device_get_uclass_id(child) == UCLASS_BLK) + has_child = 0; + } + } #else /* check if the device has connected children */ int i; @@ -414,8 +415,12 @@ static void usb_show_tree_graph(struct usb_device *dev, char *pre) udev = dev_get_parent_priv(child); - /* Ignore emulators, we only want real devices */ - if (device_get_uclass_id(child) != UCLASS_USB_EMUL) { + /* + * Ignore emulators and block child devices, we only want + * real devices + */ + if ((device_get_uclass_id(child) != UCLASS_USB_EMUL) && + (device_get_uclass_id(child) != UCLASS_BLK)) { usb_show_tree_graph(udev, pre); pre[index] = 0; } @@ -605,7 +610,9 @@ static void usb_show_info(struct usb_device *udev) for (device_find_first_child(udev->dev, &child); child; device_find_next_child(&child)) { - if (device_active(child)) { + if (device_active(child) && + (device_get_uclass_id(child) != UCLASS_USB_EMUL) && + (device_get_uclass_id(child) != UCLASS_BLK)) { udev = dev_get_parent_priv(child); usb_show_info(udev); }