Hi Philip,

i probably will not solve your problem but i wont to take a look on it.
Can you please apply attached debug patch and send me the log.
this patch was made on top of fd2b6dd22743f7c96f7c6e97d49ff5f4b422e741

Make sure you have CONFIG_DYNAMIC_DEBUG=y enabled. To start dynamic
debug you need do as root:

echo "module uvcvideo +p" > /sys/kernel/debug/dynamic_debug/control
echo "func uvc_video_decode_end -p"
> /sys/kernel/debug/dynamic_debug/control
echo "func uvc_video_decode_start -p"
> /sys/kernel/debug/dynamic_debug/control
echo "func uvc_video_decode_data -p"
> /sys/kernel/debug/dynamic_debug/control
echo "func uvc_video_decode_isoc -p"
> /sys/kernel/debug/dynamic_debug/control
echo "func uvc_video_complete -p"
> /sys/kernel/debug/dynamic_debug/control
echo "func uvc_v4l2_do_ioctl -p"
> /sys/kernel/debug/dynamic_debug/control

and start video with this, it will make onlöy one shot:
gst-launch-0.10 -v v4l2src num-buffers=1 ! jpegdec ! ffmpegcolorspace !
autovideosink

Am Sonntag, den 06.03.2011, 17:30 -0500 schrieb Philip Gladstone:
> It turned out that my kernel had an old uvcvideo module which didn't 
> have the right debug log messages, and so I'm in the process of 
> upgrading to a current kernel version. So far, I've managed to render my 
> machine unbootable [it is a little embedded linux box].
> 
> Philip
> 
> On 3/6/2011 6:14 AM, Laurent Pinchart wrote:
> > Hi Philip,
> >
> > On Sunday 20 February 2011 21:57:24 Philip Gladstone wrote:
> >> I attached two C910s to a small linux box, and ran into the 'Failed to
> >> submit URB' problem.
> >>
> >> When I look at the descriptors for this camera, I think I understand the
> >> problem. I'm capturing at 5 Mpixels and I'm trying two cameras.
> >>
> >>         VideoStreaming Interface Descriptor:
> >>           bLength                            38
> >>           bDescriptorType                    36
> >>           bDescriptorSubtype                  7 (FRAME_MJPEG)
> >>           bFrameIndex                        28
> >>           bmCapabilities                   0x01
> >>             Still image supported
> >>           wWidth                           2592
> >>           wHeight                          1944
> >>           dwMinBitRate                403107840
> >>           dwMaxBitRate                806215680
> >>           dwMaxVideoFrameBufferSize    10077696
> >>           dwDefaultFrameInterval        1000000
> >>           bFrameIntervalType                  3
> >>           dwFrameInterval( 0)           1000000
> >>           dwFrameInterval( 1)           1333333
> >>           dwFrameInterval( 2)           2000000
> >>
> >> The video frame size is set to 10Mb. This is surprisingly large as
> >> actual frames captured with MJPEG on this camera are typically 500kb or
> >> less. When I checked the descriptor for the uncompressed version of the
> >> same frame, it came back with the same value of dwMaxVideoFrameBufferSize
> >> (effectively 16 bits per pixel). The values for min/max bit rate are
> >> (correctly) calculated from the frame intervals and the buffer size.
> >
> > The uvcvideo driver doesn't use the dwMaxVideoFrameBufferSize field to 
> > compute
> > the required bandwidth but queries the device at runtime instead.
> >
> > You can enable the UVC_TRACE_VIDEO trace flag to get the driver to print the
> > bandwidth requested by the device to the kernel log.
> >
> >> Typical JPEG compression gets down to 1 bit per pixel, and 2 bits is
> >> very unusual.
> >>
> >> What I want to know is what the impact would be of defining a new QUIRK
> >> that overrode the frame buffer size for compressed frames and calculated
> >> them at (say) 2 bits per pixel?
> >>
> >> Do other webcams get this right?
> >
> > You would be surprised by how many webcams get things wrong.
> >
> 

-- 
Regards,
        Alexey
diff --git a/drivers/media/video/uvc/uvc_driver.c b/drivers/media/video/uvc/uvc_driver.c
index e41285a..f00a317 100644
--- a/drivers/media/video/uvc/uvc_driver.c
+++ b/drivers/media/video/uvc/uvc_driver.c
@@ -303,9 +303,9 @@ static int uvc_parse_format(struct uvc_device *dev,
 	case UVC_VS_FORMAT_FRAME_BASED:
 		n = buffer[2] == UVC_VS_FORMAT_UNCOMPRESSED ? 27 : 28;
 		if (buflen < n) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
-			       "interface %d FORMAT error\n",
-			       dev->udev->devnum,
+			pr_debug("%s: device %d videostreaming "
+			       "interface %d FORMAT error.",
+			       __func__, dev->udev->devnum,
 			       alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
@@ -337,9 +337,9 @@ static int uvc_parse_format(struct uvc_device *dev,
 
 	case UVC_VS_FORMAT_MJPEG:
 		if (buflen < 11) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
-			       "interface %d FORMAT error\n",
-			       dev->udev->devnum,
+			pr_debug("%s: device %d videostreaming "
+			       "interface %d FORMAT error.",
+			       __func__, dev->udev->devnum,
 			       alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
@@ -353,9 +353,9 @@ static int uvc_parse_format(struct uvc_device *dev,
 
 	case UVC_VS_FORMAT_DV:
 		if (buflen < 9) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
-			       "interface %d FORMAT error\n",
-			       dev->udev->devnum,
+			pr_debug("%s: device %d videostreaming "
+			       "interface %d FORMAT error",
+			       __func__, dev->udev->devnum,
 			       alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
@@ -371,9 +371,9 @@ static int uvc_parse_format(struct uvc_device *dev,
 			strlcpy(format->name, "HD-DV", sizeof format->name);
 			break;
 		default:
-			uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
-			       "interface %d: unknown DV format %u\n",
-			       dev->udev->devnum,
+			pr_debug("%s: device %d videostreaming "
+			       "interface %d: unknown DV format %u.",
+			       __func__, dev->udev->devnum,
 			       alts->desc.bInterfaceNumber, buffer[8]);
 			return -EINVAL;
 		}
@@ -400,14 +400,14 @@ static int uvc_parse_format(struct uvc_device *dev,
 	case UVC_VS_FORMAT_STREAM_BASED:
 		/* Not supported yet. */
 	default:
-		uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
-		       "interface %d unsupported format %u\n",
-		       dev->udev->devnum, alts->desc.bInterfaceNumber,
-		       buffer[2]);
+		pr_debug("%s: device %d videostreaming "
+		       "interface %d unsupported format %u.",
+		       __func__, dev->udev->devnum,
+		       alts->desc.bInterfaceNumber, buffer[2]);
 		return -EINVAL;
 	}
 
-	uvc_trace(UVC_TRACE_DESCR, "Found format %s.\n", format->name);
+	pr_debug("%s: Found format %s.", __func__, format->name);
 
 	buflen -= buffer[0];
 	buffer += buffer[0];
@@ -426,8 +426,9 @@ static int uvc_parse_format(struct uvc_device *dev,
 		n = n ? n : 3;
 
 		if (buflen < 26 + 4*n) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
-			       "interface %d FRAME error\n", dev->udev->devnum,
+			pr_debug("%s: device %d videostreaming "
+			       "interface %d FRAME error.",
+			       __func__, dev->udev->devnum,
 			       alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
@@ -489,8 +490,8 @@ static int uvc_parse_format(struct uvc_device *dev,
 				frame->dwDefaultFrameInterval;
 		}
 
-		uvc_trace(UVC_TRACE_DESCR, "- %ux%u (%u.%u fps)\n",
-			frame->wWidth, frame->wHeight,
+		pr_debug("%s: - %ux%u (%u.%u fps)",
+			__func__, frame->wWidth, frame->wHeight,
 			10000000/frame->dwDefaultFrameInterval,
 			(100000000/frame->dwDefaultFrameInterval)%10);
 
@@ -508,9 +509,9 @@ static int uvc_parse_format(struct uvc_device *dev,
 	if (buflen > 2 && buffer[1] == USB_DT_CS_INTERFACE &&
 	    buffer[2] == UVC_VS_COLORFORMAT) {
 		if (buflen < 6) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
-			       "interface %d COLORFORMAT error\n",
-			       dev->udev->devnum,
+			pr_debug("%s: device %d videostreaming "
+			       "interface %d COLORFORMAT error.",
+			       __func__, dev->udev->devnum,
 			       alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
@@ -541,15 +542,16 @@ static int uvc_parse_streaming(struct uvc_device *dev,
 
 	if (intf->cur_altsetting->desc.bInterfaceSubClass
 		!= UVC_SC_VIDEOSTREAMING) {
-		uvc_trace(UVC_TRACE_DESCR, "device %d interface %d isn't a "
-			"video streaming interface\n", dev->udev->devnum,
+		pr_debug("%s: device %d interface %d isn't a "
+			"video streaming interface", __func__,
+			dev->udev->devnum,
 			intf->altsetting[0].desc.bInterfaceNumber);
 		return -EINVAL;
 	}
 
 	if (usb_driver_claim_interface(&uvc_driver.driver, intf, dev)) {
-		uvc_trace(UVC_TRACE_DESCR, "device %d interface %d is already "
-			"claimed\n", dev->udev->devnum,
+		pr_debug("%s: device %d interface %d is already "
+			"claimed.", __func__, dev->udev->devnum,
 			intf->altsetting[0].desc.bInterfaceNumber);
 		return -EINVAL;
 	}
@@ -577,8 +579,9 @@ static int uvc_parse_streaming(struct uvc_device *dev,
 
 			if (ep->extralen > 2 &&
 			    ep->extra[1] == USB_DT_CS_INTERFACE) {
-				uvc_trace(UVC_TRACE_DESCR, "trying extra data "
-					"from endpoint %u.\n", i);
+				pr_debug("%s: trying extra data "
+					 "from endpoint %u.",
+					 __func__, i);
 				buffer = alts->endpoint[i].extra;
 				buflen = alts->endpoint[i].extralen;
 				break;
@@ -593,8 +596,8 @@ static int uvc_parse_streaming(struct uvc_device *dev,
 	}
 
 	if (buflen <= 2) {
-		uvc_trace(UVC_TRACE_DESCR, "no class-specific streaming "
-			"interface descriptors found.\n");
+		pr_debug("%s: no class-specific streaming "
+			 "interface descriptors found.", __func__);
 		goto error;
 	}
 
@@ -611,9 +614,9 @@ static int uvc_parse_streaming(struct uvc_device *dev,
 		break;
 
 	default:
-		uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming interface "
-			"%d HEADER descriptor not found.\n", dev->udev->devnum,
-			alts->desc.bInterfaceNumber);
+		pr_debug("%s: device %d videostreaming interface "
+			 "%d HEADER descriptor not found.", __func__,
+			 dev->udev->devnum, alts->desc.bInterfaceNumber);
 		goto error;
 	}
 
@@ -621,9 +624,10 @@ static int uvc_parse_streaming(struct uvc_device *dev,
 	n = buflen >= size ? buffer[size-1] : 0;
 
 	if (buflen < size + p*n) {
-		uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
-			"interface %d HEADER descriptor is invalid.\n",
-			dev->udev->devnum, alts->desc.bInterfaceNumber);
+		pr_debug("%s: device %d videostreaming "
+			 "interface %d HEADER descriptor is invalid.",
+			 __func__, dev->udev->devnum,
+			 alts->desc.bInterfaceNumber);
 		goto error;
 	}
 
@@ -673,9 +677,9 @@ static int uvc_parse_streaming(struct uvc_device *dev,
 
 		case UVC_VS_FORMAT_MPEG2TS:
 		case UVC_VS_FORMAT_STREAM_BASED:
-			uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
-				"interface %d FORMAT %u is not supported.\n",
-				dev->udev->devnum,
+			pr_debug("%s: device %d videostreaming "
+				"interface %d FORMAT %u is not supported.",
+				__func__, dev->udev->devnum,
 				alts->desc.bInterfaceNumber, _buffer[2]);
 			break;
 
@@ -698,9 +702,10 @@ static int uvc_parse_streaming(struct uvc_device *dev,
 	}
 
 	if (nformats == 0) {
-		uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming interface "
-			"%d has no supported formats defined.\n",
-			dev->udev->devnum, alts->desc.bInterfaceNumber);
+		pr_debug("%s: device %d videostreaming interface "
+			 "%d has no supported formats defined.",
+			 __func__, dev->udev->devnum,
+			 alts->desc.bInterfaceNumber);
 		goto error;
 	}
 
@@ -747,9 +752,10 @@ static int uvc_parse_streaming(struct uvc_device *dev,
 	}
 
 	if (buflen)
-		uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming interface "
-			"%d has %u bytes of trailing descriptor garbage.\n",
-			dev->udev->devnum, alts->desc.bInterfaceNumber, buflen);
+		pr_debug("%s: device %d videostreaming interface "
+			 "%d has %u bytes of trailing descriptor garbage.",
+			 __func__, dev->udev->devnum,
+			 alts->desc.bInterfaceNumber, buflen);
 
 	/* Parse the alternate settings to find the maximum bandwidth. */
 	for (i = 0; i < intf->num_altsetting; ++i) {
@@ -845,9 +851,10 @@ static int uvc_parse_vendor_control(struct uvc_device *dev,
 		n = buflen >= 25 + p ? buffer[22+p] : 0;
 
 		if (buflen < 25 + p + 2*n) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
-				"interface %d EXTENSION_UNIT error\n",
-				udev->devnum, alts->desc.bInterfaceNumber);
+			pr_debug("%s: device %d videocontrol "
+				 "interface %d EXTENSION_UNIT error.",
+				 __func__, udev->devnum,
+				 alts->desc.bInterfaceNumber);
 			break;
 		}
 
@@ -894,9 +901,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 		n = buflen >= 12 ? buffer[11] : 0;
 
 		if (buflen < 12 || buflen < 12 + n) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
-				"interface %d HEADER error\n", udev->devnum,
-				alts->desc.bInterfaceNumber);
+			pr_debug("%s: device %d videocontrol "
+				 "interface %d HEADER error", __func__,
+				 udev->devnum, alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
 
@@ -907,9 +914,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 		for (i = 0; i < n; ++i) {
 			intf = usb_ifnum_to_if(udev, buffer[12+i]);
 			if (intf == NULL) {
-				uvc_trace(UVC_TRACE_DESCR, "device %d "
-					"interface %d doesn't exists\n",
-					udev->devnum, i);
+				pr_debug("%s: device %d "
+					 "interface %d doesn't exists.",
+					 __func__, udev->devnum, i);
 				continue;
 			}
 
@@ -919,9 +926,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 
 	case UVC_VC_INPUT_TERMINAL:
 		if (buflen < 8) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
-				"interface %d INPUT_TERMINAL error\n",
-				udev->devnum, alts->desc.bInterfaceNumber);
+			pr_debug("%s: device %d videocontrol "
+				 "interface %d INPUT_TERMINAL error.",
+				 __func__, udev->devnum,
+				 alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
 
@@ -930,11 +938,11 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 		 */
 		type = get_unaligned_le16(&buffer[4]);
 		if ((type & 0xff00) == 0) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
-				"interface %d INPUT_TERMINAL %d has invalid "
-				"type 0x%04x, skipping\n", udev->devnum,
-				alts->desc.bInterfaceNumber,
-				buffer[3], type);
+			pr_debug("%s: device %d videocontrol "
+				 "interface %d INPUT_TERMINAL %d has invalid "
+				 "type 0x%04x, skipping.", __func__,
+				 udev->devnum, alts->desc.bInterfaceNumber,
+				 buffer[3], type);
 			return 0;
 		}
 
@@ -953,9 +961,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 		}
 
 		if (buflen < len + n + p) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
-				"interface %d INPUT_TERMINAL error\n",
-				udev->devnum, alts->desc.bInterfaceNumber);
+			pr_debug("%s: device %d videocontrol "
+				 "interface %d INPUT_TERMINAL error",
+				 __func__, udev->devnum,
+				 alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
 
@@ -1000,9 +1009,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 
 	case UVC_VC_OUTPUT_TERMINAL:
 		if (buflen < 9) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
-				"interface %d OUTPUT_TERMINAL error\n",
-				udev->devnum, alts->desc.bInterfaceNumber);
+			pr_debug("%s: device %d videocontrol "
+				 "interface %d OUTPUT_TERMINAL error",
+				 __func__, udev->devnum,
+				 alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
 
@@ -1011,10 +1021,11 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 		 */
 		type = get_unaligned_le16(&buffer[4]);
 		if ((type & 0xff00) == 0) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
-				"interface %d OUTPUT_TERMINAL %d has invalid "
-				"type 0x%04x, skipping\n", udev->devnum,
-				alts->desc.bInterfaceNumber, buffer[3], type);
+			pr_debug("%s: device %d videocontrol "
+				 "interface %d OUTPUT_TERMINAL %d has invalid "
+				 "type 0x%04x, skipping.", __func__,
+				 udev->devnum, alts->desc.bInterfaceNumber,
+				 buffer[3], type);
 			return 0;
 		}
 
@@ -1038,9 +1049,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 		p = buflen >= 5 ? buffer[4] : 0;
 
 		if (buflen < 5 || buflen < 6 + p) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
-				"interface %d SELECTOR_UNIT error\n",
-				udev->devnum, alts->desc.bInterfaceNumber);
+			pr_debug("%s: device %d videocontrol "
+				 "interface %d SELECTOR_UNIT error.",
+				 __func__, udev->devnum,
+				 alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
 
@@ -1064,9 +1076,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 		p = dev->uvc_version >= 0x0110 ? 10 : 9;
 
 		if (buflen < p + n) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
-				"interface %d PROCESSING_UNIT error\n",
-				udev->devnum, alts->desc.bInterfaceNumber);
+			pr_debug("%s: device %d videocontrol "
+				 "interface %d PROCESSING_UNIT error.",
+				 __func__, udev->devnum,
+				 alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
 
@@ -1097,9 +1110,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 		n = buflen >= 24 + p ? buffer[22+p] : 0;
 
 		if (buflen < 24 + p + n) {
-			uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
-				"interface %d EXTENSION_UNIT error\n",
-				udev->devnum, alts->desc.bInterfaceNumber);
+			pr_debug("%s: device %d videocontrol "
+				 "interface %d EXTENSION_UNIT error.",
+				 __func__, udev->devnum,
+				 alts->desc.bInterfaceNumber);
 			return -EINVAL;
 		}
 
@@ -1124,8 +1138,8 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 		break;
 
 	default:
-		uvc_trace(UVC_TRACE_DESCR, "Found an unknown CS_INTERFACE "
-			"descriptor (%u)\n", buffer[2]);
+		pr_debug("%s: Found an unknown CS_INTERFACE "
+			"descriptor (%u)", __func__, buffer[2]);
 		break;
 	}
 
@@ -1170,8 +1184,9 @@ next_descriptor:
 		if (usb_endpoint_is_int_in(desc) &&
 		    le16_to_cpu(desc->wMaxPacketSize) >= 8 &&
 		    desc->bInterval != 0) {
-			uvc_trace(UVC_TRACE_DESCR, "Found a Status endpoint "
-				"(addr %02x).\n", desc->bEndpointAddress);
+			pr_debug("%s: Found a Status endpoint "
+				 "(addr %02x).", __func__,
+				 desc->bEndpointAddress);
 			dev->int_ep = ep;
 		}
 	}
@@ -1218,8 +1233,8 @@ static int uvc_scan_chain_entity(struct uvc_video_chain *chain,
 			printk(" <- XU %d", entity->id);
 
 		if (entity->bNrInPins != 1) {
-			uvc_trace(UVC_TRACE_DESCR, "Extension unit %d has more "
-				"than 1 input pin.\n", entity->id);
+			pr_debug("%s: Extension unit %d has more "
+				"than 1 input pin.", __func__, entity->id);
 			return -1;
 		}
 
@@ -1230,8 +1245,8 @@ static int uvc_scan_chain_entity(struct uvc_video_chain *chain,
 			printk(" <- PU %d", entity->id);
 
 		if (chain->processing != NULL) {
-			uvc_trace(UVC_TRACE_DESCR, "Found multiple "
-				"Processing Units in chain.\n");
+			pr_debug("%s: Found multiple "
+				"Processing Units in chain.", __func__);
 			return -1;
 		}
 
@@ -1247,8 +1262,8 @@ static int uvc_scan_chain_entity(struct uvc_video_chain *chain,
 			break;
 
 		if (chain->selector != NULL) {
-			uvc_trace(UVC_TRACE_DESCR, "Found multiple Selector "
-				"Units in chain.\n");
+			pr_debug("%s: Found multiple Selector "
+				"Units in chain.", __func__);
 			return -1;
 		}
 
@@ -1275,8 +1290,9 @@ static int uvc_scan_chain_entity(struct uvc_video_chain *chain,
 		break;
 
 	default:
-		uvc_trace(UVC_TRACE_DESCR, "Unsupported entity type "
-			"0x%04x found in chain.\n", UVC_ENTITY_TYPE(entity));
+		pr_debug("%s: Unsupported entity type "
+			 "0x%04x found in chain.", __func__,
+			 UVC_ENTITY_TYPE(entity));
 		return -1;
 	}
 
@@ -1305,9 +1321,9 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
 		switch (UVC_ENTITY_TYPE(forward)) {
 		case UVC_VC_EXTENSION_UNIT:
 			if (forward->bNrInPins != 1) {
-				uvc_trace(UVC_TRACE_DESCR, "Extension unit %d "
-					  "has more than 1 input pin.\n",
-					  entity->id);
+				pr_debug("%s: Extension unit %d "
+					  "has more than 1 input pin.",
+					  __func__, entity->id);
 				return -EINVAL;
 			}
 
@@ -1326,8 +1342,9 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
 		case UVC_OTT_MEDIA_TRANSPORT_OUTPUT:
 		case UVC_TT_STREAMING:
 			if (UVC_ENTITY_IS_ITERM(forward)) {
-				uvc_trace(UVC_TRACE_DESCR, "Unsupported input "
-					"terminal %u.\n", forward->id);
+				pr_debug("%s: Unsupported input "
+					 "terminal %u.", __func__,
+					 forward->id);
 				return -EINVAL;
 			}
 
@@ -1376,9 +1393,10 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
 			id = entity->baSourceID[i];
 			term = uvc_entity_by_id(chain->dev, id);
 			if (term == NULL || !UVC_ENTITY_IS_ITERM(term)) {
-				uvc_trace(UVC_TRACE_DESCR, "Selector unit %d "
-					"input %d isn't connected to an "
-					"input terminal\n", entity->id, i);
+				pr_debug("%s: Selector unit %d "
+					 "input %d isn't connected to an "
+					 "input terminal.", __func__,
+					 entity->id, i);
 				return -1;
 			}
 
@@ -1413,8 +1431,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
 
 	entity = uvc_entity_by_id(chain->dev, id);
 	if (entity == NULL) {
-		uvc_trace(UVC_TRACE_DESCR, "Found reference to "
-			"unknown entity %d.\n", id);
+		pr_debug("%s: Found reference to "
+			"unknown entity %d.", __func__, id);
 		return -EINVAL;
 	}
 
@@ -1427,7 +1445,7 @@ static int uvc_scan_chain(struct uvc_video_chain *chain,
 {
 	struct uvc_entity *entity, *prev;
 
-	uvc_trace(UVC_TRACE_PROBE, "Scanning UVC chain:");
+	pr_debug("%s: Scanning UVC chain.", __func__);
 
 	entity = term;
 	prev = NULL;
@@ -1435,8 +1453,9 @@ static int uvc_scan_chain(struct uvc_video_chain *chain,
 	while (entity != NULL) {
 		/* Entity must not be part of an existing chain */
 		if (entity->chain.next || entity->chain.prev) {
-			uvc_trace(UVC_TRACE_DESCR, "Found reference to "
-				"entity %d already in chain.\n", entity->id);
+			pr_debug("%s: Found reference to "
+				 "entity %d already in chain.", __func__,
+				 entity->id);
 			return -EINVAL;
 		}
 
@@ -1528,14 +1547,15 @@ static int uvc_scan_device(struct uvc_device *dev)
 			continue;
 		}
 
-		uvc_trace(UVC_TRACE_PROBE, "Found a valid video chain (%s).\n",
-			  uvc_print_chain(chain));
+		pr_debug("%s: Found a valid video chain (%s).",
+			  __func__, uvc_print_chain(chain));
 
 		list_add_tail(&chain->list, &dev->chains);
 	}
 
 	if (list_empty(&dev->chains)) {
-		uvc_printk(KERN_INFO, "No valid video chain found.\n");
+		uvc_printk(KERN_INFO, "%s: No valid video chain found.\n",
+			   __func__);
 		return -1;
 	}
 
@@ -1646,16 +1666,16 @@ static int uvc_register_video(struct uvc_device *dev,
 	 */
 	ret = uvc_video_init(stream);
 	if (ret < 0) {
-		uvc_printk(KERN_ERR, "Failed to initialize the device "
-			"(%d).\n", ret);
+		uvc_printk(KERN_ERR, "%s: Failed to initialize the device "
+			"(%d).\n", __func__, ret);
 		return ret;
 	}
 
 	/* Register the device with V4L. */
 	vdev = video_device_alloc();
 	if (vdev == NULL) {
-		uvc_printk(KERN_ERR, "Failed to allocate video device (%d).\n",
-			   ret);
+		uvc_printk(KERN_ERR, "%s: Failed to allocate "
+			   "video device (%d).\n", __func__, ret);
 		return -ENOMEM;
 	}
 
@@ -1676,8 +1696,8 @@ static int uvc_register_video(struct uvc_device *dev,
 
 	ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
 	if (ret < 0) {
-		uvc_printk(KERN_ERR, "Failed to register video device (%d).\n",
-			   ret);
+		uvc_printk(KERN_ERR, "%s: Failed to register "
+			   "video device (%d).\n", __func__, ret);
 		stream->vdev = NULL;
 		video_device_release(vdev);
 		return ret;
@@ -1703,8 +1723,9 @@ static int uvc_register_terms(struct uvc_device *dev,
 
 		stream = uvc_stream_by_id(dev, term->id);
 		if (stream == NULL) {
-			uvc_printk(KERN_INFO, "No streaming interface found "
-				   "for terminal %u.", term->id);
+			uvc_printk(KERN_INFO, "%s: No streaming interface "
+				   "found for terminal %u.",
+				   __func__, term->id);
 			continue;
 		}
 
@@ -1743,12 +1764,12 @@ static int uvc_probe(struct usb_interface *intf,
 	int ret;
 
 	if (id->idVendor && id->idProduct)
-		uvc_trace(UVC_TRACE_PROBE, "Probing known UVC device %s "
-				"(%04x:%04x)\n", udev->devpath, id->idVendor,
-				id->idProduct);
+		pr_debug("%s: Probing known UVC device %s "
+			 "(%04x:%04x).", __func__, udev->devpath,
+			 id->idVendor, id->idProduct);
 	else
-		uvc_trace(UVC_TRACE_PROBE, "Probing generic UVC device %s\n",
-				udev->devpath);
+		pr_debug("%s: Probing generic UVC device %s.",
+			 __func__, udev->devpath);
 
 	/* Allocate memory for the device and initialize it. */
 	if ((dev = kzalloc(sizeof *dev, GFP_KERNEL)) == NULL)
@@ -1777,12 +1798,13 @@ static int uvc_probe(struct usb_interface *intf,
 
 	/* Parse the Video Class control descriptor. */
 	if (uvc_parse_control(dev) < 0) {
-		uvc_trace(UVC_TRACE_PROBE, "Unable to parse UVC "
-			"descriptors.\n");
+		pr_debug("%s: Unable to parse UVC "
+			"descriptors.", __func__);
 		goto error;
 	}
 
-	uvc_printk(KERN_INFO, "Found UVC %u.%02x device %s (%04x:%04x)\n",
+	pr_info("%s: Found UVC %u.%02x device %s (%04x:%04x)\n",
+		__func__,
 		dev->uvc_version >> 8, dev->uvc_version & 0xff,
 		udev->product ? udev->product : "<unnamed>",
 		le16_to_cpu(udev->descriptor.idVendor),
@@ -1817,7 +1839,7 @@ static int uvc_probe(struct usb_interface *intf,
 			"supported.\n", ret);
 	}
 
-	uvc_trace(UVC_TRACE_PROBE, "UVC device initialized.\n");
+	pr_debug("%s: UVC device initialized.", __func__);
 	usb_enable_autosuspend(udev);
 	return 0;
 
@@ -1849,8 +1871,8 @@ static int uvc_suspend(struct usb_interface *intf, pm_message_t message)
 	struct uvc_device *dev = usb_get_intfdata(intf);
 	struct uvc_streaming *stream;
 
-	uvc_trace(UVC_TRACE_SUSPEND, "Suspending interface %u\n",
-		intf->cur_altsetting->desc.bInterfaceNumber);
+	pr_debug("%s: Suspending interface %u.", __func__,
+		 intf->cur_altsetting->desc.bInterfaceNumber);
 
 	/* Controls are cached on the fly so they don't need to be saved. */
 	if (intf->cur_altsetting->desc.bInterfaceSubClass ==
@@ -1862,8 +1884,8 @@ static int uvc_suspend(struct usb_interface *intf, pm_message_t message)
 			return uvc_video_suspend(stream);
 	}
 
-	uvc_trace(UVC_TRACE_SUSPEND, "Suspend: video streaming USB interface "
-			"mismatch.\n");
+	pr_debug("%s: video streaming USB interface "
+		 "mismatch.", __func__);
 	return -EINVAL;
 }
 
@@ -1872,7 +1894,7 @@ static int __uvc_resume(struct usb_interface *intf, int reset)
 	struct uvc_device *dev = usb_get_intfdata(intf);
 	struct uvc_streaming *stream;
 
-	uvc_trace(UVC_TRACE_SUSPEND, "Resuming interface %u\n",
+	pr_debug("%s: Resuming interface %u.", __func__,
 		intf->cur_altsetting->desc.bInterfaceNumber);
 
 	if (intf->cur_altsetting->desc.bInterfaceSubClass ==
@@ -1892,8 +1914,8 @@ static int __uvc_resume(struct usb_interface *intf, int reset)
 			return uvc_video_resume(stream);
 	}
 
-	uvc_trace(UVC_TRACE_SUSPEND, "Resume: video streaming USB interface "
-			"mismatch.\n");
+	pr_debug("%s: video streaming USB interface "
+		 "mismatch.", __func__);
 	return -EINVAL;
 }
 
diff --git a/drivers/media/video/uvc/uvc_queue.c b/drivers/media/video/uvc/uvc_queue.c
index 36f3c58..19e6cba 100644
--- a/drivers/media/video/uvc/uvc_queue.c
+++ b/drivers/media/video/uvc/uvc_queue.c
@@ -137,6 +137,9 @@ int uvc_alloc_buffers(struct uvc_video_queue *queue, unsigned int nbuffers,
 	void *mem = NULL;
 	int ret;
 
+	pr_debug("%s: nbuffers %u; buflength: %u", __func__,
+		nbuffers, buflength);
+
 	if (nbuffers > UVC_MAX_VIDEO_BUFFERS)
 		nbuffers = UVC_MAX_VIDEO_BUFFERS;
 
@@ -347,8 +350,9 @@ int uvc_dequeue_buffer(struct uvc_video_queue *queue,
 	if ((ret = uvc_queue_waiton(buf, nonblocking)) < 0)
 		goto done;
 
-	uvc_trace(UVC_TRACE_CAPTURE, "Dequeuing buffer %u (%u, %u bytes).\n",
-		buf->buf.index, buf->state, buf->buf.bytesused);
+	pr_debug("%s: Dequeuing buffer %u (%u, %u/%u bytes).", __func__,
+		buf->buf.index, buf->state,
+		buf->buf.length, buf->buf.bytesused);
 
 	switch (buf->state) {
 	case UVC_BUF_STATE_ERROR:
diff --git a/drivers/media/video/uvc/uvc_v4l2.c b/drivers/media/video/uvc/uvc_v4l2.c
index fa89ebf..3ba2563 100644
--- a/drivers/media/video/uvc/uvc_v4l2.c
+++ b/drivers/media/video/uvc/uvc_v4l2.c
@@ -559,6 +559,8 @@ static long uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd, void *arg)
 	struct uvc_streaming *stream = handle->stream;
 	long ret = 0;
 
+	pr_debug("%s: cmd: %u", __func__, cmd);
+
 	switch (cmd) {
 	/* Query capabilities */
 	case VIDIOC_QUERYCAP:
diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c
index 43f955e..99e8648 100644
--- a/drivers/media/video/uvc/uvc_video.c
+++ b/drivers/media/video/uvc/uvc_video.c
@@ -73,6 +73,9 @@ int uvc_query_ctrl(struct uvc_device *dev, __u8 query, __u8 unit,
 {
 	int ret;
 
+	pr_debug("%s: query: %s; UVC control %u; unit %u.", __func__,
+		 uvc_query_name(query), cs, unit);
+
 	ret = __uvc_query_ctrl(dev, query, unit, intfnum, cs, data, size,
 				UVC_CTRL_CONTROL_TIMEOUT);
 	if (ret != size) {
@@ -91,6 +94,7 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
 	struct uvc_format *format;
 	struct uvc_frame *frame = NULL;
 	unsigned int i;
+	u32 interval;
 
 	if (ctrl->bFormatIndex <= 0 ||
 	    ctrl->bFormatIndex > stream->nformats)
@@ -108,21 +112,29 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
 	if (frame == NULL)
 		return;
 
+	interval = (ctrl->dwFrameInterval > 100000)
+		 ? ctrl->dwFrameInterval
+		 : frame->dwFrameInterval[0];
+
+	pr_debug("%s: %s %ux%u@%u(fps)", __func__,
+		 format->name, frame->wWidth,
+		 frame->wHeight, 10000000/interval);
+
 	if (!(format->flags & UVC_FMT_FLAG_COMPRESSED) ||
 	     (ctrl->dwMaxVideoFrameSize == 0 &&
-	      stream->dev->uvc_version < 0x0110))
+	      stream->dev->uvc_version < 0x0110)) {
+		pr_debug("%s: rewrite dwMaxVideoFrameSize=%u to %u.",
+			 __func__, ctrl->dwMaxVideoFrameSize,
+			frame->dwMaxVideoFrameBufferSize);
 		ctrl->dwMaxVideoFrameSize =
 			frame->dwMaxVideoFrameBufferSize;
+	}
 
 	if (!(format->flags & UVC_FMT_FLAG_COMPRESSED) &&
 	    stream->dev->quirks & UVC_QUIRK_FIX_BANDWIDTH &&
 	    stream->intf->num_altsetting > 1) {
-		u32 interval;
 		u32 bandwidth;
 
-		interval = (ctrl->dwFrameInterval > 100000)
-			 ? ctrl->dwFrameInterval
-			 : frame->dwFrameInterval[0];
 
 		/* Compute a bandwidth estimation by multiplying the frame
 		 * size by the number of video frames per second, divide the
@@ -146,6 +158,9 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
 		 */
 		bandwidth = max_t(u32, bandwidth, 1024);
 
+		pr_debug("%s: rewrite dwMaxPayloadTransferSize=%u to %u.",
+			__func__, ctrl->dwMaxPayloadTransferSize, bandwidth);
+
 		ctrl->dwMaxPayloadTransferSize = bandwidth;
 	}
 }
@@ -193,9 +208,10 @@ static int uvc_get_video_ctrl(struct uvc_streaming *stream,
 		ret = -EIO;
 		goto out;
 	} else if (ret != size) {
-		uvc_printk(KERN_ERR, "Failed to query (%u) UVC %s control : "
-			"%d (exp. %u).\n", query, probe ? "probe" : "commit",
-			ret, size);
+		pr_err("%s: Failed to query (%u) UVC %s control : "
+		       "%d (exp. %u).\n", __func__,
+		       query, probe ? "probe" : "commit",
+		       ret, size);
 		ret = -EIO;
 		goto out;
 	}
@@ -233,6 +249,21 @@ static int uvc_get_video_ctrl(struct uvc_streaming *stream,
 	uvc_fixup_video_ctrl(stream, ctrl);
 	ret = 0;
 
+	pr_debug("%s: %s; bmHint: %u; bFormatIndex: %u; bFrameIndex: %u; "
+		 "dwFrameInterval: %u; wKeyFrameRate: %u; "
+		 "wCompQuality: %u; wCompWindowSize: %u; wDelay: %u; "
+		 "dwMaxVideoFrameSize %u; dwMaxPayloadTransferSize: %u",
+		__func__, uvc_query_name(query), ctrl->bmHint,
+		ctrl->bFormatIndex,
+		ctrl->bFrameIndex,
+		ctrl->dwFrameInterval,
+		ctrl->wKeyFrameRate,
+		ctrl->wCompQuality,
+		ctrl->wCompWindowSize,
+		ctrl->wDelay,
+		ctrl->dwMaxVideoFrameSize,
+		ctrl->dwMaxPayloadTransferSize);
+
 out:
 	kfree(data);
 	return ret;
@@ -245,6 +276,21 @@ static int uvc_set_video_ctrl(struct uvc_streaming *stream,
 	__u16 size;
 	int ret;
 
+	pr_debug("%s: bmHint: %u; bFormatIndex: %u; bFrameIndex: %u; "
+		 "dwFrameInterval: %u; wKeyFrameRate: %u; "
+		 "wCompQuality: %u; wCompWindowSize: %u; wDelay: %u; "
+		 "dwMaxVideoFrameSize %u; dwMaxPayloadTransferSize: %u",
+		__func__, ctrl->bmHint,
+		ctrl->bFormatIndex,
+		ctrl->bFrameIndex,
+		ctrl->dwFrameInterval,
+		ctrl->wKeyFrameRate,
+		ctrl->wCompQuality,
+		ctrl->wCompWindowSize,
+		ctrl->wDelay,
+		ctrl->dwMaxVideoFrameSize,
+		ctrl->dwMaxPayloadTransferSize);
+
 	size = stream->dev->uvc_version >= 0x0110 ? 34 : 26;
 	data = kzalloc(size, GFP_KERNEL);
 	if (data == NULL)
@@ -292,6 +338,8 @@ int uvc_probe_video(struct uvc_streaming *stream,
 	unsigned int i;
 	int ret;
 
+	pr_debug("%s", __func__);
+
 	/* Perform probing. The device should adjust the requested values
 	 * according to its capabilities. However, some devices, namely the
 	 * first generation UVC Logitech webcams, don't implement the Video
@@ -311,8 +359,6 @@ int uvc_probe_video(struct uvc_streaming *stream,
 		ret = uvc_get_video_ctrl(stream, &probe_max, 1, UVC_GET_MAX);
 		if (ret < 0)
 			goto done;
-
-		probe->wCompQuality = probe_max.wCompQuality;
 	}
 
 	for (i = 0; i < 2; ++i) {
@@ -340,6 +386,11 @@ int uvc_probe_video(struct uvc_streaming *stream,
 		probe->wPFrameRate = probe_min.wPFrameRate;
 		probe->wCompQuality = probe_max.wCompQuality;
 		probe->wCompWindowSize = probe_min.wCompWindowSize;
+		pr_debug("%s: set copressions parameters. wKeyFrameRate: %u "
+			 "wPFrameRate: %u; wCompQuality: %u; "
+			 "wCompWindowSize: %u.", __func__, probe->wKeyFrameRate,
+			 probe->wPFrameRate, probe->wCompQuality,
+			 probe->wCompWindowSize);
 	}
 
 done:
@@ -349,6 +400,7 @@ done:
 int uvc_commit_video(struct uvc_streaming *stream,
 	struct uvc_streaming_control *probe)
 {
+	pr_debug("%s", __func__);
 	return uvc_set_video_ctrl(stream, probe, 0);
 }
 
@@ -406,6 +458,8 @@ static int uvc_video_decode_start(struct uvc_streaming *stream,
 {
 	__u8 fid;
 
+	pr_debug("%s", __func__);
+
 	/* Sanity checks:
 	 * - packet must be at least 2 bytes long
 	 * - bHeaderLength value must be at least 2 bytes (see above)
@@ -416,8 +470,8 @@ static int uvc_video_decode_start(struct uvc_streaming *stream,
 
 	/* Skip payloads marked with the error bit ("error frames"). */
 	if (data[1] & UVC_STREAM_ERR) {
-		uvc_trace(UVC_TRACE_FRAME, "Dropping payload (error bit "
-			  "set).\n");
+		pr_debug("%s: Dropping payload (error bit "
+			  "set).", __func__);
 		return -ENODATA;
 	}
 
@@ -449,8 +503,8 @@ static int uvc_video_decode_start(struct uvc_streaming *stream,
 		struct timespec ts;
 
 		if (fid == stream->last_fid) {
-			uvc_trace(UVC_TRACE_FRAME, "Dropping payload (out of "
-				"sync).\n");
+			pr_debug("%s: Dropping payload (out of "
+				"sync).", __func__);
 			if ((stream->dev->quirks & UVC_QUIRK_STREAM_NO_FID) &&
 			    (data[1] & UVC_STREAM_EOF))
 				stream->last_fid ^= UVC_STREAM_FID;
@@ -486,8 +540,8 @@ static int uvc_video_decode_start(struct uvc_streaming *stream,
 	 * previous payload had the EOF bit set.
 	 */
 	if (fid != stream->last_fid && buf->buf.bytesused != 0) {
-		uvc_trace(UVC_TRACE_FRAME, "Frame complete (FID bit "
-				"toggled).\n");
+		pr_debug("%s: Frame complete (FID bit "
+				"toggled).", __func__);
 		buf->state = UVC_BUF_STATE_READY;
 		return -EAGAIN;
 	}
@@ -504,6 +558,8 @@ static void uvc_video_decode_data(struct uvc_streaming *stream,
 	unsigned int maxlen, nbytes;
 	void *mem;
 
+	pr_debug("%s", __func__);
+
 	if (len <= 0)
 		return;
 
@@ -516,7 +572,7 @@ static void uvc_video_decode_data(struct uvc_streaming *stream,
 
 	/* Complete the current frame if the buffer size was exceeded. */
 	if (len > maxlen) {
-		uvc_trace(UVC_TRACE_FRAME, "Frame complete (overflow).\n");
+		pr_debug("%s: Frame complete (overflow).", __func__);
 		buf->state = UVC_BUF_STATE_READY;
 	}
 }
@@ -524,11 +580,14 @@ static void uvc_video_decode_data(struct uvc_streaming *stream,
 static void uvc_video_decode_end(struct uvc_streaming *stream,
 		struct uvc_buffer *buf, const __u8 *data, int len)
 {
+
+	pr_debug("%s", __func__);
+
 	/* Mark the buffer as done if the EOF marker is set. */
 	if (data[1] & UVC_STREAM_EOF && buf->buf.bytesused != 0) {
-		uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
+		pr_debug("%s: Frame complete (EOF found).", __func__);
 		if (data[0] == len)
-			uvc_trace(UVC_TRACE_FRAME, "EOF in empty payload.\n");
+			pr_debug("%s: EOF in empty payload.", __func__);
 		buf->state = UVC_BUF_STATE_READY;
 		if (stream->dev->quirks & UVC_QUIRK_STREAM_NO_FID)
 			stream->last_fid ^= UVC_STREAM_FID;
@@ -549,6 +608,8 @@ static void uvc_video_decode_end(struct uvc_streaming *stream,
 static int uvc_video_encode_header(struct uvc_streaming *stream,
 		struct uvc_buffer *buf, __u8 *data, int len)
 {
+	pr_debug("%s", __func__);
+
 	data[0] = 2;	/* Header length */
 	data[1] = UVC_STREAM_EOH | UVC_STREAM_EOF
 		| (stream->last_fid & UVC_STREAM_FID);
@@ -562,6 +623,8 @@ static int uvc_video_encode_data(struct uvc_streaming *stream,
 	unsigned int nbytes;
 	void *mem;
 
+	pr_debug("%s", __func__);
+
 	/* Copy video data to the URB buffer. */
 	mem = queue->mem + buf->buf.m.offset + queue->buf_used;
 	nbytes = min((unsigned int)len, buf->buf.bytesused - queue->buf_used);
@@ -587,10 +650,13 @@ static void uvc_video_decode_isoc(struct urb *urb, struct uvc_streaming *stream,
 	u8 *mem;
 	int ret, i;
 
+	pr_debug("%s", __func__);
+
 	for (i = 0; i < urb->number_of_packets; ++i) {
 		if (urb->iso_frame_desc[i].status < 0) {
-			uvc_trace(UVC_TRACE_FRAME, "USB isochronous frame "
-				"lost (%d).\n", urb->iso_frame_desc[i].status);
+			pr_debug("%s: USB isochronous frame "
+				"lost (%d).", __func__,
+				urb->iso_frame_desc[i].status);
 			/* Mark the buffer as faulty. */
 			if (buf != NULL)
 				buf->error = 1;
@@ -635,6 +701,8 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream,
 	u8 *mem;
 	int len, ret;
 
+	pr_debug("%s", __func__);
+
 	if (urb->actual_length == 0)
 		return;
 
@@ -699,6 +767,8 @@ static void uvc_video_encode_bulk(struct urb *urb, struct uvc_streaming *stream,
 	u8 *mem = urb->transfer_buffer;
 	int len = stream->urb_size, ret;
 
+	pr_debug("%s", __func__);
+
 	if (buf == NULL) {
 		urb->transfer_buffer_length = 0;
 		return;
@@ -744,6 +814,8 @@ static void uvc_video_complete(struct urb *urb)
 	unsigned long flags;
 	int ret;
 
+	pr_debug("%s", __func__);
+
 	switch (urb->status) {
 	case 0:
 		break;
@@ -783,6 +855,8 @@ static void uvc_free_urb_buffers(struct uvc_streaming *stream)
 {
 	unsigned int i;
 
+	pr_debug("%s", __func__);
+
 	for (i = 0; i < UVC_URBS; ++i) {
 		if (stream->urb_buffer[i]) {
 			usb_free_coherent(stream->dev->udev, stream->urb_size,
@@ -811,6 +885,8 @@ static int uvc_alloc_urb_buffers(struct uvc_streaming *stream,
 	unsigned int npackets;
 	unsigned int i;
 
+	pr_debug("%s", __func__);
+
 	/* Buffers are already allocated, bail out. */
 	if (stream->urb_size)
 		return stream->urb_size / psize;
@@ -836,15 +912,15 @@ static int uvc_alloc_urb_buffers(struct uvc_streaming *stream,
 		}
 
 		if (i == UVC_URBS) {
-			uvc_trace(UVC_TRACE_VIDEO, "Allocated %u URB buffers "
-				"of %ux%u bytes each.\n", UVC_URBS, npackets,
-				psize);
+			pr_debug("%s: Allocated %u URB buffers "
+				"of %ux%u bytes each.", __func__,
+				UVC_URBS, npackets, psize);
 			return npackets;
 		}
 	}
 
-	uvc_trace(UVC_TRACE_VIDEO, "Failed to allocate URB buffers (%u bytes "
-		"per packet).\n", psize);
+	pr_debug("%s: Failed to allocate URB buffers (%u bytes "
+		"per packet).", __func__, psize);
 	return 0;
 }
 
@@ -856,6 +932,8 @@ static void uvc_uninit_video(struct uvc_streaming *stream, int free_buffers)
 	struct urb *urb;
 	unsigned int i;
 
+	pr_debug("%s", __func__);
+
 	for (i = 0; i < UVC_URBS; ++i) {
 		urb = stream->urb[i];
 		if (urb == NULL)
@@ -882,6 +960,8 @@ static int uvc_init_video_isoc(struct uvc_streaming *stream,
 	u16 psize;
 	u32 size;
 
+	pr_debug("%s", __func__);
+
 	psize = le16_to_cpu(ep->desc.wMaxPacketSize);
 	psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3));
 	size = stream->ctrl.dwMaxVideoFrameSize;
@@ -934,6 +1014,8 @@ static int uvc_init_video_bulk(struct uvc_streaming *stream,
 	u16 psize;
 	u32 size;
 
+	pr_debug("%s", __func__);
+
 	psize = le16_to_cpu(ep->desc.wMaxPacketSize) & 0x07ff;
 	size = stream->ctrl.dwMaxPayloadTransferSize;
 	stream->bulk.max_payload_size = size;
@@ -983,6 +1065,8 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags)
 	unsigned int i;
 	int ret;
 
+	pr_debug("%s", __func__);
+
 	stream->sequence = -1;
 	stream->last_fid = -1;
 	stream->bulk.header_size = 0;
@@ -1000,12 +1084,12 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags)
 		bandwidth = stream->ctrl.dwMaxPayloadTransferSize;
 
 		if (bandwidth == 0) {
-			uvc_trace(UVC_TRACE_VIDEO, "Device requested null "
-				"bandwidth, defaulting to lowest.\n");
+			pr_debug("%s: Device requested null "
+				"bandwidth, defaulting to lowest.", __func__);
 			bandwidth = 1;
 		} else {
-			uvc_trace(UVC_TRACE_VIDEO, "Device requested %u "
-				"B/frame bandwidth.\n", bandwidth);
+			pr_debug("%s: Device requested %u "
+				"B/frame bandwidth.", __func__, bandwidth);
 		}
 
 		for (i = 0; i < intf->num_altsetting; ++i) {
@@ -1029,13 +1113,14 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags)
 		}
 
 		if (best_ep == NULL) {
-			uvc_trace(UVC_TRACE_VIDEO, "No fast enough alt setting "
-				"for requested bandwidth.\n");
+			pr_debug("%s: No fast enough alt setting "
+				"for requested bandwidth.", __func__);
 			return -EIO;
 		}
 
-		uvc_trace(UVC_TRACE_VIDEO, "Selecting alternate setting %u "
-			"(%u B/frame bandwidth).\n", altsetting, best_psize);
+		pr_debug("%s: Selecting alternate setting %u "
+			"(%u B/frame bandwidth).", __func__,
+			altsetting, best_psize);
 
 		ret = usb_set_interface(stream->dev->udev, intfnum, altsetting);
 		if (ret < 0)
@@ -1082,6 +1167,9 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags)
  */
 int uvc_video_suspend(struct uvc_streaming *stream)
 {
+
+	pr_debug("%s", __func__);
+
 	if (!uvc_queue_streaming(&stream->queue))
 		return 0;
 
@@ -1103,6 +1191,8 @@ int uvc_video_resume(struct uvc_streaming *stream)
 {
 	int ret;
 
+	pr_debug("%s", __func__);
+
 	stream->frozen = 0;
 
 	ret = uvc_commit_video(stream, &stream->ctrl);
@@ -1143,6 +1233,8 @@ int uvc_video_init(struct uvc_streaming *stream)
 	unsigned int i;
 	int ret;
 
+	pr_debug("%s", __func__);
+
 	if (stream->nformats == 0) {
 		uvc_printk(KERN_INFO, "No supported video formats found.\n");
 		return -EINVAL;
@@ -1237,6 +1329,8 @@ int uvc_video_enable(struct uvc_streaming *stream, int enable)
 {
 	int ret;
 
+	pr_debug("%s", __func__);
+
 	if (!enable) {
 		uvc_uninit_video(stream, 1);
 		usb_set_interface(stream->dev->udev, stream->intfnum, 0);
_______________________________________________
Linux-uvc-devel mailing list
Linux-uvc-devel@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel

Reply via email to