+// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2001
* Denis Peter, MPL AG Switzerland
*
* Most of this source has been derived from the Linux USB
* project.
- *
- * SPDX-License-Identifier: GPL-2.0+
*/
#include <common.h>
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 */
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;
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;
}
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);
}