Index: uspace/drv/bus/usb/uhci/uhci_batch.c
===================================================================
--- uspace/drv/bus/usb/uhci/uhci_batch.c	(revision 8e3d17fdbdbefb176d1318cc8a3b73d89545961d)
+++ uspace/drv/bus/usb/uhci/uhci_batch.c	(revision 56e9fb08d7114e89f0168c642fc39ee8b60016af)
@@ -229,7 +229,7 @@
 	    uhci_batch->usb_batch->ep->speed == USB_SPEED_LOW;
 	const size_t mps = uhci_batch->usb_batch->ep->max_packet_size;
-	const usb_target_t target = {
+	const usb_target_t target = {{
 	    uhci_batch->usb_batch->ep->address,
-	    uhci_batch->usb_batch->ep->endpoint };
+	    uhci_batch->usb_batch->ep->endpoint }};
 
 	int toggle = endpoint_toggle_get(uhci_batch->usb_batch->ep);
@@ -289,7 +289,7 @@
 	    uhci_batch->usb_batch->ep->speed == USB_SPEED_LOW;
 	const size_t mps = uhci_batch->usb_batch->ep->max_packet_size;
-	const usb_target_t target = {
+	const usb_target_t target = {{
 	    uhci_batch->usb_batch->ep->address,
-	    uhci_batch->usb_batch->ep->endpoint };
+	    uhci_batch->usb_batch->ep->endpoint }};
 
 	/* setup stage */
Index: uspace/lib/drv/generic/remote_usbhc.c
===================================================================
--- uspace/lib/drv/generic/remote_usbhc.c	(revision 8e3d17fdbdbefb176d1318cc8a3b73d89545961d)
+++ uspace/lib/drv/generic/remote_usbhc.c	(revision 56e9fb08d7114e89f0168c642fc39ee8b60016af)
@@ -239,6 +239,6 @@
 
 	usb_target_t target = {
-		.address = DEV_IPC_GET_ARG1(*call),
-		.endpoint = DEV_IPC_GET_ARG2(*call)
+		{.address = DEV_IPC_GET_ARG1(*call),
+		.endpoint = DEV_IPC_GET_ARG2(*call) }
 	};
 	size_t data_buffer_len = DEV_IPC_GET_ARG3(*call);
@@ -302,8 +302,8 @@
 	}
 
-	usb_target_t target = {
+	usb_target_t target = {{
 		.address = DEV_IPC_GET_ARG1(*call),
 		.endpoint = DEV_IPC_GET_ARG2(*call)
-	};
+	}};
 
 	int rc;
@@ -436,8 +436,8 @@
 	}
 
-	const usb_target_t target = {
+	const usb_target_t target = {{
 		.address = DEV_IPC_GET_ARG1(*call),
 		.endpoint = DEV_IPC_GET_ARG2(*call)
-	};
+	}};
 
 
@@ -484,8 +484,8 @@
 	}
 
-	const usb_target_t target = {
+	const usb_target_t target = {{
 		.address = DEV_IPC_GET_ARG1(*call),
 		.endpoint = DEV_IPC_GET_ARG2(*call)
-	};
+	}};
 
 
Index: uspace/lib/usb/include/usb/hc.h
===================================================================
--- uspace/lib/usb/include/usb/hc.h	(revision 8e3d17fdbdbefb176d1318cc8a3b73d89545961d)
+++ uspace/lib/usb/include/usb/hc.h	(revision 56e9fb08d7114e89f0168c642fc39ee8b60016af)
@@ -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 8e3d17fdbdbefb176d1318cc8a3b73d89545961d)
+++ uspace/lib/usb/include/usb/usb.h	(revision 56e9fb08d7114e89f0168c642fc39ee8b60016af)
@@ -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;
 
Index: uspace/lib/usbhost/src/batch.c
===================================================================
--- uspace/lib/usbhost/src/batch.c	(revision 8e3d17fdbdbefb176d1318cc8a3b73d89545961d)
+++ uspace/lib/usbhost/src/batch.c	(revision 56e9fb08d7114e89f0168c642fc39ee8b60016af)
@@ -136,6 +136,6 @@
 	if (instance->ep->transfer_type == USB_TRANSFER_CONTROL
 	    && instance->error == EOK) {
-		usb_target_t target =
-		    {instance->ep->address, instance->ep->endpoint};
+		const usb_target_t target =
+		    {{ instance->ep->address, instance->ep->endpoint }};
 		reset_ep_if_need(
 		    fun_to_hcd(instance->fun), target, instance->setup_buffer);
