Index: uspace/lib/usbdev/src/altiface.c
===================================================================
--- uspace/lib/usbdev/src/altiface.c	(revision 1526c1743202f3b139a8896b78d1c919cbe2a1cd)
+++ uspace/lib/usbdev/src/altiface.c	(revision 8a121b1fdd1be03445fd6d5c9d9a38c69090c325)
@@ -54,8 +54,8 @@
 	assert(config_descr_size > 0);
 
-	usb_dp_parser_t dp_parser = {
+	const usb_dp_parser_t dp_parser = {
 		.nesting = usb_dp_standard_descriptor_nesting
 	};
-	usb_dp_parser_data_t dp_data = {
+	const usb_dp_parser_data_t dp_data = {
 		.data = config_descr,
 		.size = config_descr_size,
@@ -65,5 +65,5 @@
 	size_t alternate_count = 0;
 
-	uint8_t *iface_ptr = usb_dp_get_nested_descriptor(&dp_parser,
+	const uint8_t *iface_ptr = usb_dp_get_nested_descriptor(&dp_parser,
 	    &dp_data, config_descr);
 	while (iface_ptr != NULL) {
@@ -140,5 +140,5 @@
 	    = &alternates->alternatives[0];
 
-	uint8_t *iface_ptr = usb_dp_get_nested_descriptor(&dp_parser,
+	const uint8_t *iface_ptr = usb_dp_get_nested_descriptor(&dp_parser,
 	    &dp_data, dp_data.data);
 	while (iface_ptr != NULL) {
Index: uspace/lib/usbdev/src/dp.c
===================================================================
--- uspace/lib/usbdev/src/dp.c	(revision 1526c1743202f3b139a8896b78d1c919cbe2a1cd)
+++ uspace/lib/usbdev/src/dp.c	(revision 8a121b1fdd1be03445fd6d5c9d9a38c69090c325)
@@ -75,6 +75,6 @@
  * @return Whether @p ptr points inside <code>data->data</code> field.
  */
-static bool is_valid_descriptor_pointer(usb_dp_parser_data_t *data,
-    uint8_t *ptr)
+static bool is_valid_descriptor_pointer(const usb_dp_parser_data_t *data,
+    const uint8_t *ptr)
 {
 	if (ptr == NULL) {
@@ -100,11 +100,11 @@
  * @retval NULL Invalid input or no next descriptor.
  */
-static uint8_t *get_next_descriptor(usb_dp_parser_data_t *data,
-    uint8_t *current)
+static const uint8_t *get_next_descriptor(const usb_dp_parser_data_t *data,
+    const uint8_t *current)
 {
 	assert(is_valid_descriptor_pointer(data, current));
 
-	uint8_t current_length = *current;
-	uint8_t *next = current + current_length;
+	const uint8_t current_length = *current;
+	const uint8_t *next = current + current_length;
 
 	if (!is_valid_descriptor_pointer(data, next)) {
@@ -124,5 +124,5 @@
  * @retval -1 Invalid input.
  */
-static int get_descriptor_type(usb_dp_parser_data_t *data, uint8_t *start)
+static int get_descriptor_type(const usb_dp_parser_data_t *data, const uint8_t *start)
 {
 	if (start == NULL) {
@@ -145,8 +145,8 @@
  * @return Whether @p child could be child of @p parent.
  */
-static bool is_nested_descriptor_type(usb_dp_parser_t *parser,
+static bool is_nested_descriptor_type(const usb_dp_parser_t *parser,
     int child, int parent)
 {
-	usb_dp_descriptor_nesting_t *nesting = parser->nesting;
+	const usb_dp_descriptor_nesting_t *nesting = parser->nesting;
 	while ((nesting->child > 0) && (nesting->parent > 0)) {
 		if ((nesting->child == child) && (nesting->parent == parent)) {
@@ -166,6 +166,6 @@
  * @return Whether @p child could be child of @p parent.
  */
-static bool is_nested_descriptor(usb_dp_parser_t *parser,
-    usb_dp_parser_data_t *data, uint8_t *child, uint8_t *parent)
+static bool is_nested_descriptor(const usb_dp_parser_t *parser,
+    const usb_dp_parser_data_t *data, const uint8_t *child, const uint8_t *parent)
 {
 	return is_nested_descriptor_type(parser,
@@ -183,6 +183,6 @@
  * @retval NULL Invalid input.
  */
-uint8_t *usb_dp_get_nested_descriptor(usb_dp_parser_t *parser,
-    usb_dp_parser_data_t *data, uint8_t *parent)
+const uint8_t *usb_dp_get_nested_descriptor(const usb_dp_parser_t *parser,
+    const usb_dp_parser_data_t *data, const uint8_t *parent)
 {
 	if (!is_valid_descriptor_pointer(data, parent)) {
@@ -190,5 +190,5 @@
 	}
 
-	uint8_t *next = get_next_descriptor(data, parent);
+	const uint8_t *next = get_next_descriptor(data, parent);
 	if (next == NULL) {
 		return NULL;
@@ -211,12 +211,14 @@
  * @retval NULL Invalid input.
  */
-static uint8_t *skip_nested_descriptors(usb_dp_parser_t *parser,
-    usb_dp_parser_data_t *data, uint8_t *parent)
-{
-	uint8_t *child = usb_dp_get_nested_descriptor(parser, data, parent);
+static const uint8_t *skip_nested_descriptors(const usb_dp_parser_t *parser,
+    const usb_dp_parser_data_t *data, const uint8_t *parent)
+{
+	const uint8_t *child =
+	    usb_dp_get_nested_descriptor(parser, data, parent);
 	if (child == NULL) {
 		return get_next_descriptor(data, parent);
 	}
-	uint8_t *next_child = skip_nested_descriptors(parser, data, child);
+	const uint8_t *next_child =
+	    skip_nested_descriptors(parser, data, child);
 	while (is_nested_descriptor(parser, data, next_child, parent)) {
 		next_child = skip_nested_descriptors(parser, data, next_child);
@@ -236,6 +238,7 @@
  * @retval NULL Invalid input.
  */
-uint8_t *usb_dp_get_sibling_descriptor(usb_dp_parser_t *parser,
-    usb_dp_parser_data_t *data, uint8_t *parent, uint8_t *sibling)
+const uint8_t *usb_dp_get_sibling_descriptor(
+    const usb_dp_parser_t *parser, const usb_dp_parser_data_t *data,
+    const uint8_t *parent, const uint8_t *sibling)
 {
 	if (!is_valid_descriptor_pointer(data, parent)
@@ -244,5 +247,6 @@
 	}
 
-	uint8_t *possible_sibling = skip_nested_descriptors(parser, data, sibling);
+	const uint8_t *possible_sibling =
+	    skip_nested_descriptors(parser, data, sibling);
 	if (possible_sibling == NULL) {
 		return NULL;
@@ -269,7 +273,7 @@
  * @param arg Custom (user) argument.
  */
-static void usb_dp_browse_simple_internal(usb_dp_parser_t *parser,
-    usb_dp_parser_data_t *data, uint8_t *root, size_t depth,
-    void (*callback)(uint8_t *, size_t, void *), void *arg)
+static void usb_dp_browse_simple_internal(const usb_dp_parser_t *parser,
+    const usb_dp_parser_data_t *data, const uint8_t *root, size_t depth,
+    void (*callback)(const uint8_t *, size_t, void *), void *arg)
 {
 	if (root == NULL) {
@@ -277,5 +281,5 @@
 	}
 	callback(root, depth, arg);
-	uint8_t *child = usb_dp_get_nested_descriptor(parser, data, root);
+	const uint8_t *child = usb_dp_get_nested_descriptor(parser, data, root);
 	do {
 		usb_dp_browse_simple_internal(parser, data, child, depth + 1,
@@ -301,6 +305,6 @@
  */
 void usb_dp_walk_simple(uint8_t *descriptors, size_t descriptors_size,
-    usb_dp_descriptor_nesting_t *descriptor_nesting,
-    void (*callback)(uint8_t *, size_t, void *), void *arg)
+    const usb_dp_descriptor_nesting_t *descriptor_nesting,
+    walk_callback_t callback, void *arg)
 {
 	if ((descriptors == NULL) || (descriptors_size == 0)
@@ -309,5 +313,5 @@
 	}
 
-	usb_dp_parser_data_t data = {
+	const usb_dp_parser_data_t data = {
 		.data = descriptors,
 		.size = descriptors_size,
@@ -315,5 +319,5 @@
 	};
 
-	usb_dp_parser_t parser = {
+	const usb_dp_parser_t parser = {
 		.nesting = descriptor_nesting
 	};
Index: uspace/lib/usbdev/src/pipesinit.c
===================================================================
--- uspace/lib/usbdev/src/pipesinit.c	(revision 1526c1743202f3b139a8896b78d1c919cbe2a1cd)
+++ uspace/lib/usbdev/src/pipesinit.c	(revision 8a121b1fdd1be03445fd6d5c9d9a38c69090c325)
@@ -68,5 +68,5 @@
  * @return Whether the given descriptor is endpoint descriptor.
  */
-static inline bool is_endpoint_descriptor(uint8_t *descriptor)
+static inline bool is_endpoint_descriptor(const uint8_t *descriptor)
 {
 	return descriptor[1] == USB_DESCTYPE_ENDPOINT;
@@ -80,5 +80,5 @@
  */
 static bool endpoint_fits_description(const usb_endpoint_description_t *wanted,
-    usb_endpoint_description_t *found)
+    const usb_endpoint_description_t *found)
 {
 #define _SAME(fieldname) ((wanted->fieldname) == (found->fieldname))
@@ -120,5 +120,5 @@
 static usb_endpoint_mapping_t *find_endpoint_mapping(
     usb_endpoint_mapping_t *mapping, size_t mapping_count,
-    usb_endpoint_description_t *found_endpoint,
+    const usb_endpoint_description_t *found_endpoint,
     int interface_number, int interface_setting)
 {
@@ -160,5 +160,4 @@
     usb_device_connection_t *wire)
 {
-	usb_endpoint_description_t description;
 
 	/*
@@ -167,18 +166,19 @@
 
 	/* Actual endpoint number is in bits 0..3 */
-	usb_endpoint_t ep_no = endpoint->endpoint_address & 0x0F;
-
-	/* Endpoint direction is set by bit 7 */
-	description.direction = (endpoint->endpoint_address & 128)
-	    ? USB_DIRECTION_IN : USB_DIRECTION_OUT;
-	/* Transfer type is in bits 0..2 and the enum values corresponds 1:1 */
-	description.transfer_type = endpoint->attributes & 3;
-
-	/*
-	 * Get interface characteristics.
-	 */
-	description.interface_class = interface->interface_class;
-	description.interface_subclass = interface->interface_subclass;
-	description.interface_protocol = interface->interface_protocol;
+	const usb_endpoint_t ep_no = endpoint->endpoint_address & 0x0F;
+
+	const usb_endpoint_description_t description = {
+		/* Endpoint direction is set by bit 7 */
+		.direction = (endpoint->endpoint_address & 128)
+		    ? USB_DIRECTION_IN : USB_DIRECTION_OUT,
+		/* Transfer type is in bits 0..2 and
+		 * the enum values corresponds 1:1 */
+		.transfer_type = endpoint->attributes & 3,
+
+		/* Get interface characteristics. */
+		.interface_class = interface->interface_class,
+		.interface_subclass = interface->interface_subclass,
+		.interface_protocol = interface->interface_protocol,
+	};
 
 	/*
@@ -225,7 +225,7 @@
     usb_endpoint_mapping_t *mapping, size_t mapping_count,
     usb_dp_parser_t *parser, usb_dp_parser_data_t *parser_data,
-    uint8_t *interface_descriptor)
-{
-	uint8_t *descriptor = usb_dp_get_nested_descriptor(parser,
+    const uint8_t *interface_descriptor)
+{
+	const uint8_t *descriptor = usb_dp_get_nested_descriptor(parser,
 	    parser_data, interface_descriptor);
 
@@ -322,5 +322,5 @@
 	 * Iterate through all interfaces.
 	 */
-	uint8_t *interface = usb_dp_get_nested_descriptor(&dp_parser,
+	const uint8_t *interface = usb_dp_get_nested_descriptor(&dp_parser,
 	    &dp_data, configuration_descriptor);
 	if (interface == NULL) {
@@ -329,6 +329,5 @@
 	do {
 		(void) process_interface(mapping, mapping_count,
-		    &dp_parser, &dp_data,
-		    interface);
+		    &dp_parser, &dp_data, interface);
 		interface = usb_dp_get_sibling_descriptor(&dp_parser, &dp_data,
 		    configuration_descriptor, interface);
