Index: uspace/drv/usbhid/usbhid.c
===================================================================
--- uspace/drv/usbhid/usbhid.c	(revision c0940a853d999ed954a678746dc7a1272eac4bda)
+++ uspace/drv/usbhid/usbhid.c	(revision a9cdca001904b2b7ac02564a296a1f38e7f62d7c)
@@ -361,15 +361,16 @@
 	
 	uint8_t report_id = 0;
-	size_t size = usb_hid_report_size(hid_dev->report, report_id, 
+	size_t size = usb_hid_report_byte_size(hid_dev->report, report_id, 
 	    USB_HID_REPORT_TYPE_INPUT);
 	
 	size_t max_size = 0;
 	
-	while (size > 0) {
+	do {
 		max_size = (size > max_size) ? size : max_size;
-		size = usb_hid_report_size(hid_dev->report, report_id, 
+		size = usb_hid_report_byte_size(hid_dev->report, report_id, 
 		    USB_HID_REPORT_TYPE_INPUT);
-		++report_id;
-	}
+		report_id = usb_hid_get_next_report_id(hid_dev->report, 
+		    report_id, USB_HID_REPORT_TYPE_INPUT);
+	} while (report_id != 0);
 	
 	usb_log_debug("Max size of input report: %zu\n", max_size);
@@ -549,4 +550,6 @@
 //	int allocated = (hid_dev->input_report != NULL);
 	assert(hid_dev->input_report != NULL);
+	usb_log_debug("Max input report size: %zu, buffer size: %zu\n",
+	    hid_dev->max_input_report_size, buffer_size);
 	assert(hid_dev->max_input_report_size >= buffer_size);
 	
