Index: uspace/drv/bus/usb/usbdiag/device.c
===================================================================
--- uspace/drv/bus/usb/usbdiag/device.c	(revision 9fd8f142e28fc6d173d7bd22fc8c24c7a8748a61)
+++ uspace/drv/bus/usb/usbdiag/device.c	(revision 47a9633d4ac833a08e5980c940e9930c94d89d13)
@@ -43,13 +43,4 @@
 
 #define NAME "usbdiag"
-
-#define EP_DIR_OUT    0
-#define EP_DIR_IN     0x80
-#define EP_INT_IN     (EP_DIR_IN | 0x01)
-#define EP_INT_OUT    (EP_DIR_OUT | 0x02)
-#define EP_BULK_IN    (EP_DIR_IN | 0x03)
-#define EP_BULK_OUT   (EP_DIR_OUT | 0x04)
-#define EP_ISOC_IN    (EP_DIR_IN | 0x05)
-#define EP_ISOC_OUT   (EP_DIR_OUT | 0x06)
 
 
@@ -114,6 +105,6 @@
 	dev->fun = fun;
 
-	usb_endpoint_mapping_t *epm_out = usb_device_get_mapped_ep(dev->usb_dev, EP_BULK_OUT);
-	usb_endpoint_mapping_t *epm_in = usb_device_get_mapped_ep(dev->usb_dev, EP_BULK_IN);
+	usb_endpoint_mapping_t *epm_out = usb_device_get_mapped_ep(dev->usb_dev, USB_DIAG_EP_BULK_OUT);
+	usb_endpoint_mapping_t *epm_in = usb_device_get_mapped_ep(dev->usb_dev, USB_DIAG_EP_BULK_IN);
 
 	if (!epm_in || !epm_out || !epm_in->present || !epm_out->present) {
Index: uspace/drv/bus/usb/usbdiag/device.h
===================================================================
--- uspace/drv/bus/usb/usbdiag/device.h	(revision 9fd8f142e28fc6d173d7bd22fc8c24c7a8748a61)
+++ uspace/drv/bus/usb/usbdiag/device.h	(revision 47a9633d4ac833a08e5980c940e9930c94d89d13)
@@ -39,4 +39,11 @@
 #include <usb/dev/device.h>
 
+#define USB_DIAG_EP_INTR_IN    1
+#define USB_DIAG_EP_INTR_OUT   2
+#define USB_DIAG_EP_BULK_IN    3
+#define USB_DIAG_EP_BULK_OUT   4
+#define USB_DIAG_EP_ISOCH_IN   5
+#define USB_DIAG_EP_ISOCH_OUT  6
+
 /**
  * USB diagnostic device.
Index: uspace/drv/bus/usb/usbdiag/main.c
===================================================================
--- uspace/drv/bus/usb/usbdiag/main.c	(revision 9fd8f142e28fc6d173d7bd22fc8c24c7a8748a61)
+++ uspace/drv/bus/usb/usbdiag/main.c	(revision 47a9633d4ac833a08e5980c940e9930c94d89d13)
@@ -36,4 +36,5 @@
 #include <errno.h>
 #include <usb/debug.h>
+#include <usb/classes/classes.h>
 #include <usb/dev/driver.h>
 #include <usbdiag_iface.h>
@@ -123,4 +124,51 @@
 	return ddf_fun_offline(fun);
 }
+
+static const usb_endpoint_description_t intr_in_ep = {
+	.transfer_type = USB_TRANSFER_INTERRUPT,
+	.direction = USB_DIRECTION_IN,
+	.interface_class = USB_CLASS_DIAGNOSTIC,
+	.flags = 0
+};
+static const usb_endpoint_description_t intr_out_ep = {
+	.transfer_type = USB_TRANSFER_INTERRUPT,
+	.direction = USB_DIRECTION_OUT,
+	.interface_class = USB_CLASS_DIAGNOSTIC,
+	.flags = 0
+};
+static const usb_endpoint_description_t bulk_in_ep = {
+	.transfer_type = USB_TRANSFER_BULK,
+	.direction = USB_DIRECTION_IN,
+	.interface_class = USB_CLASS_DIAGNOSTIC,
+	.flags = 0
+};
+static const usb_endpoint_description_t bulk_out_ep = {
+	.transfer_type = USB_TRANSFER_BULK,
+	.direction = USB_DIRECTION_OUT,
+	.interface_class = USB_CLASS_DIAGNOSTIC,
+	.flags = 0
+};
+static const usb_endpoint_description_t isoch_in_ep = {
+	.transfer_type = USB_TRANSFER_ISOCHRONOUS,
+	.direction = USB_DIRECTION_IN,
+	.interface_class = USB_CLASS_DIAGNOSTIC,
+	.flags = 0
+};
+static const usb_endpoint_description_t isoch_out_ep = {
+	.transfer_type = USB_TRANSFER_ISOCHRONOUS,
+	.direction = USB_DIRECTION_OUT,
+	.interface_class = USB_CLASS_DIAGNOSTIC,
+	.flags = 0
+};
+
+static const usb_endpoint_description_t *diag_endpoints[] = {
+	&intr_in_ep,
+	&intr_out_ep,
+	&bulk_in_ep,
+	&bulk_out_ep,
+	&isoch_in_ep,
+	&isoch_out_ep,
+	NULL
+};
 
 /** USB diagnostic driver ops. */
@@ -137,5 +185,5 @@
 	.name = NAME,
 	.ops = &diag_driver_ops,
-	.endpoints = NULL
+	.endpoints = diag_endpoints
 };
 
