Index: uspace/lib/usb/include/usb/request.h
===================================================================
--- uspace/lib/usb/include/usb/request.h	(revision 17873ac7d4019500d5125f0b78948a7b91d478ec)
+++ uspace/lib/usb/include/usb/request.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
@@ -37,4 +37,5 @@
 
 #include <stdint.h>
+#include <assert.h>
 
 /** Standard device request. */
@@ -107,5 +108,5 @@
 } __attribute__ ((packed)) usb_device_request_setup_packet_t;
 
-int assert[(sizeof(usb_device_request_setup_packet_t) == 8) ? 1: -1];
+static_assert(sizeof(usb_device_request_setup_packet_t) == 8);
 
 /** How many toggles need to be reset */
Index: uspace/lib/usb/include/usb/usb.h
===================================================================
--- uspace/lib/usb/include/usb/usb.h	(revision 17873ac7d4019500d5125f0b78948a7b91d478ec)
+++ uspace/lib/usb/include/usb/usb.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
@@ -39,4 +39,5 @@
 #include <stdint.h>
 #include <types/common.h>
+#include <usb_iface.h>
 
 /** Convert 16bit value from native (host) endianness to USB endianness. */
@@ -52,38 +53,8 @@
 #define uint32_usb2host(n) uint32_t_le2host((n))
 
-
-/** USB transfer type. */
-typedef enum {
-	USB_TRANSFER_CONTROL = 0,
-	USB_TRANSFER_ISOCHRONOUS = 1,
-	USB_TRANSFER_BULK = 2,
-	USB_TRANSFER_INTERRUPT = 3
-} usb_transfer_type_t;
-
 const char * usb_str_transfer_type(usb_transfer_type_t t);
 const char * usb_str_transfer_type_short(usb_transfer_type_t t);
 
-/** USB data transfer direction. */
-typedef enum {
-	USB_DIRECTION_IN,
-	USB_DIRECTION_OUT,
-	USB_DIRECTION_BOTH
-} usb_direction_t;
-
 const char *usb_str_direction(usb_direction_t);
-
-/** USB speeds. */
-typedef enum {
-	/** USB 1.1 low speed (1.5Mbits/s). */
-	USB_SPEED_LOW,
-	/** USB 1.1 full speed (12Mbits/s). */
-	USB_SPEED_FULL,
-	/** USB 2.0 high speed (480Mbits/s). */
-	USB_SPEED_HIGH,
-	/** USB 3.0 super speed (5Gbits/s). */
-	USB_SPEED_SUPER,
-	/** Psuedo-speed serving as a boundary. */
-	USB_SPEED_MAX
-} usb_speed_t;
 
 static inline bool usb_speed_is_11(const usb_speed_t s)
@@ -110,14 +81,4 @@
 } usb_request_recipient_t;
 
-/** USB address type.
- * Negative values could be used to indicate error.
- */
-typedef int16_t usb_address_t;
-
-typedef struct {
-	usb_address_t address;
-	unsigned port;
-} usb_tt_address_t;
-
 /** Default USB address. */
 #define USB_ADDRESS_DEFAULT 0
@@ -139,9 +100,4 @@
 }
 
-/** USB endpoint number type.
- * Negative values could be used to indicate error.
- */
-typedef int16_t usb_endpoint_t;
-
 /** Default control endpoint */
 #define USB_ENDPOINT_DEFAULT_CONTROL 0
@@ -162,45 +118,4 @@
 	    (ep < USB11_ENDPOINT_MAX);
 }
-
-
-/** USB complete address type.
- * Pair address + endpoint is identification of transaction recipient.
- */
-typedef union {
-	struct {
-		usb_address_t address;
-		usb_endpoint_t endpoint;
-	} __attribute__((packed));
-	uint32_t packed;
-} usb_target_t;
-
-/** Description of usb endpoint.
- */
-typedef struct {
-	/** Endpoint number. */
-	usb_endpoint_t endpoint_no;
-
-	/** Endpoint transfer type. */
-	usb_transfer_type_t transfer_type;
-
-	/** Endpoint direction. */
-	usb_direction_t direction;
-
-	/** Maximum packet size for the endpoint. */
-	size_t max_packet_size;
-
-	/** Number of packets per frame/uframe.
-	 * Only valid for HS INT and ISO transfers. All others should set to 1*/
-	unsigned packets;
-
-	struct {
-		unsigned polling_interval;
-	} usb2;
-
-	struct {
-		unsigned max_burst;
-		unsigned max_streams;
-	} usb3;
-} usb_endpoint_desc_t;
 
 /** Check USB target for allowed values (address and endpoint).
