Index: uspace/app/usbinfo/dump.c
===================================================================
--- uspace/app/usbinfo/dump.c	(revision 32fb6bcec95f3a7fbb1b2fdb6528f0e04726a6b6)
+++ uspace/app/usbinfo/dump.c	(revision 7f70d1c93f7231d3c5d9a97f24f6558552056488)
@@ -61,5 +61,6 @@
 		INDENT INDENT INDENT,
 		INDENT INDENT INDENT INDENT,
-		INDENT INDENT INDENT INDENT INDENT
+		INDENT INDENT INDENT INDENT INDENT,
+		INDENT INDENT INDENT INDENT INDENT INDENT,
 	};
 	static size_t indents_count = sizeof(indents)/sizeof(indents[0]);
Index: uspace/app/usbinfo/info.c
===================================================================
--- uspace/app/usbinfo/info.c	(revision 32fb6bcec95f3a7fbb1b2fdb6528f0e04726a6b6)
+++ uspace/app/usbinfo/info.c	(revision 7f70d1c93f7231d3c5d9a97f24f6558552056488)
@@ -151,4 +151,10 @@
 }
 
+static void dump_descriptor_tree_brief_superspeed_endpoint_companion(const char *prefix,
+    usb_superspeed_endpoint_companion_descriptor_t *descriptor)
+{
+	printf("%sSuperspeed endpoint companion\n", prefix);
+}
+
 static void dump_descriptor_tree_brief_hid(const char *prefix,
     usb_standard_hid_descriptor_t *descriptor)
@@ -206,4 +212,7 @@
 		    usb_standard_endpoint_descriptor_t,
 		    dump_descriptor_tree_brief_endpoint);
+		_BRANCH(USB_DESCTYPE_SSPEED_EP_COMPANION,
+		    usb_superspeed_endpoint_companion_descriptor_t,
+		    dump_descriptor_tree_brief_superspeed_endpoint_companion);
 		_BRANCH(USB_DESCTYPE_HID,
 		    usb_standard_hid_descriptor_t,
Index: uspace/lib/usb/src/dump.c
===================================================================
--- uspace/lib/usb/src/dump.c	(revision 32fb6bcec95f3a7fbb1b2fdb6528f0e04726a6b6)
+++ uspace/lib/usb/src/dump.c	(revision 7f70d1c93f7231d3c5d9a97f24f6558552056488)
@@ -61,4 +61,6 @@
 static void usb_dump_descriptor_endpoint(FILE *, const char *, const char *,
     const uint8_t *, size_t);
+static void usb_dump_descriptor_superspeed_endpoint_companion(FILE *, const char *, const char *,
+    const uint8_t *, size_t);
 static void usb_dump_descriptor_hid(FILE *, const char *, const char *,
     const uint8_t *, size_t);
@@ -75,4 +77,5 @@
 	{ USB_DESCTYPE_INTERFACE, usb_dump_descriptor_interface },
 	{ USB_DESCTYPE_ENDPOINT, usb_dump_descriptor_endpoint },
+	{ USB_DESCTYPE_SSPEED_EP_COMPANION, usb_dump_descriptor_superspeed_endpoint_companion },
 	{ USB_DESCTYPE_HID, usb_dump_descriptor_hid },
 	{ USB_DESCTYPE_HUB, usb_dump_descriptor_hub },
@@ -238,4 +241,21 @@
 	PRINTLINE("wMaxPacketSize = %d", d->max_packet_size);
 	PRINTLINE("bInterval = %dms", d->poll_interval);
+}
+
+static void usb_dump_descriptor_superspeed_endpoint_companion(FILE *output,
+    const char *line_prefix, const char *line_suffix,
+    const uint8_t *descriptor, size_t descriptor_length)
+{
+	usb_superspeed_endpoint_companion_descriptor_t *d
+	   = (usb_superspeed_endpoint_companion_descriptor_t *) descriptor;
+	if (descriptor_length < sizeof(*d)) {
+		return;
+	}
+
+	PRINTLINE("bLength = %u", d->length);
+	PRINTLINE("bDescriptorType = 0x%02X", d->descriptor_type);
+	PRINTLINE("bMaxBurst = %u", d->max_burst);
+	PRINTLINE("bmAttributes = %d", d->attributes);
+	PRINTLINE("wBytesPerInterval = %u", d->bytes_per_interval);
 }
 
Index: uspace/lib/usbdev/src/dp.c
===================================================================
--- uspace/lib/usbdev/src/dp.c	(revision 32fb6bcec95f3a7fbb1b2fdb6528f0e04726a6b6)
+++ uspace/lib/usbdev/src/dp.c	(revision 7f70d1c93f7231d3c5d9a97f24f6558552056488)
@@ -62,4 +62,5 @@
 	NESTING(CONFIGURATION, INTERFACE),
 	NESTING(INTERFACE, ENDPOINT),
+	NESTING(ENDPOINT, SSPEED_EP_COMPANION),
 	NESTING(INTERFACE, HUB),
 	NESTING(INTERFACE, HID),
