[U-Boot] [PATCH 05/16] usb: hub: Add a new API to test if a hub device is root hub

Bin Meng bmeng.cn at gmail.com
Fri Jun 23 09:54:21 UTC 2017


Sometimes we need know if a given hub device is root hub or not.
Add a new API to test this.

Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
---

 common/usb_hub.c | 10 ++++++++++
 include/usb.h    |  8 ++++++++
 2 files changed, 18 insertions(+)

diff --git a/common/usb_hub.c b/common/usb_hub.c
index 18bd827..d780251 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -74,6 +74,16 @@ static inline bool usb_hub_is_superspeed(struct usb_device *hdev)
 	return hdev->descriptor.bDeviceProtocol == 3;
 }
 
+#ifdef CONFIG_DM_USB
+bool usb_hub_is_root_hub(struct udevice *hub)
+{
+	if (device_get_uclass_id(hub->parent) != UCLASS_USB_HUB)
+		return true;
+
+	return false;
+}
+#endif
+
 static int usb_get_hub_descriptor(struct usb_device *dev, void *data, int size)
 {
 	unsigned short dtype = USB_DT_HUB;
diff --git a/include/usb.h b/include/usb.h
index eb82cc2..c504d71 100644
--- a/include/usb.h
+++ b/include/usb.h
@@ -776,6 +776,14 @@ int usb_setup_device(struct usb_device *dev, bool do_read,
 		     struct usb_device *parent);
 
 /**
+ * usb_hub_is_root_hub() - Test whether a hub device is root hub or not
+ *
+ * @hub:	USB hub device to test
+ * @return:	true if the hub device is root hub, false otherwise.
+ */
+bool usb_hub_is_root_hub(struct udevice *hub);
+
+/**
  * usb_hub_scan() - Scan a hub and find its devices
  *
  * @hub:	Hub device to scan
-- 
2.9.2



More information about the U-Boot mailing list