Index: uspace/lib/usb/include/usb/hc.h
===================================================================
--- uspace/lib/usb/include/usb/hc.h	(revision 563d9d0a197dec694a11d47249e9f8d5420c1aee)
+++ uspace/lib/usb/include/usb/hc.h	(revision bdd8ad2f03530c2b59a0b35c7fdd0147223e5682)
@@ -62,5 +62,5 @@
     devman_handle_t *);
 
-int usb_hc_get_address_by_handle(devman_handle_t);
+usb_address_t usb_hc_get_address_by_handle(devman_handle_t);
 
 int usb_hc_find(devman_handle_t, devman_handle_t *);
Index: uspace/lib/usb/include/usb/usb.h
===================================================================
--- uspace/lib/usb/include/usb/usb.h	(revision 563d9d0a197dec694a11d47249e9f8d5420c1aee)
+++ uspace/lib/usb/include/usb/usb.h	(revision bdd8ad2f03530c2b59a0b35c7fdd0147223e5682)
@@ -106,5 +106,5 @@
  * Negative values could be used to indicate error.
  */
-typedef int usb_address_t;
+typedef int16_t usb_address_t;
 
 /** Default USB address. */
@@ -116,5 +116,5 @@
  * Negative values could be used to indicate error.
  */
-typedef int usb_endpoint_t;
+typedef int16_t usb_endpoint_t;
 
 /** Maximum endpoint number in USB 1.1.
@@ -126,7 +126,10 @@
  * Pair address + endpoint is identification of transaction recipient.
  */
-typedef struct {
-	usb_address_t address;
-	usb_endpoint_t endpoint;
+typedef union {
+	struct {
+		usb_address_t address;
+		usb_endpoint_t endpoint;
+	} __attribute__((packed));
+	uint32_t packed;
 } usb_target_t;
 
