Index: uspace/lib/usb/src/usbdrvreq.c
===================================================================
--- uspace/lib/usb/src/usbdrvreq.c	(revision 276aeda35af0585ba0754d0e4169265979bd205f)
+++ uspace/lib/usb/src/usbdrvreq.c	(revision 263a9f191eecf58921b8294a227f0e3baadc1120)
@@ -164,18 +164,9 @@
     usb_address_t new_address)
 {
-	/* Prepare the target. */
-	usb_target_t target = {
-		.address = old_address,
-		.endpoint = 0
-	};
-
-	/* Prepare the setup packet. */
-	usb_device_request_setup_packet_t setup_packet = {
-		.request_type = 0,
-		.request = USB_DEVREQ_SET_ADDRESS,
-		.index = 0,
-		.length = 0,
-	};
-	setup_packet.value = new_address;
+	PREPARE_TARGET(target, old_address);
+
+	PREPARE_SETUP_PACKET(setup_packet, USB_DIRECTION_OUT,
+	    USB_REQUEST_TYPE_STANDARD, USB_REQUEST_RECIPIENT_DEVICE,
+	    USB_DEVREQ_SET_ADDRESS, new_address, 0, 0);
 
 	int rc = usb_drv_psync_control_write(phone, target,
@@ -211,21 +202,13 @@
 	}
 
-	/* Prepare the target. */
-	usb_target_t target = {
-		.address = address,
-		.endpoint = 0
-	};
-
-	/* Prepare the setup packet. */
-	usb_device_request_setup_packet_t setup_packet = {
-		.request_type = 128 | (request_type << 5),
-		.request = USB_DEVREQ_GET_DESCRIPTOR,
-		.index = language,
-		.length = (uint16_t) size,
-	};
-	setup_packet.value_high = descriptor_type;
-	setup_packet.value_low = descriptor_index;
-	
-	/* Perform CONTROL READ */
+	// FIXME: check that size is not too big
+
+	PREPARE_TARGET(target, address);
+
+	PREPARE_SETUP_PACKET_LOHI(setup_packet, USB_DIRECTION_IN,
+	    request_type, USB_REQUEST_RECIPIENT_DEVICE,
+	    USB_DEVREQ_GET_DESCRIPTOR, descriptor_index, descriptor_type,
+	    language, size);
+
 	int rc = usb_drv_psync_control_read(hc_phone, target,
 	    &setup_packet, sizeof(setup_packet),
