Fix incorrect bandwidth on some Chicony webcams
- Fix DVB oops (rhbz 1220118)
This commit is contained in:
		
							parent
							
								
									f67345e16f
								
							
						
					
					
						commit
						65af516314
					
				| @ -619,6 +619,8 @@ Patch26201: ovl-don-t-remove-non-empty-opaque-directory.patch | |||||||
| #rhbz 1220118 | #rhbz 1220118 | ||||||
| Patch26202: media-Fix-regression-in-some-more-dib0700-based-devi.patch | Patch26202: media-Fix-regression-in-some-more-dib0700-based-devi.patch | ||||||
| 
 | 
 | ||||||
|  | Patch26203: v4l-uvcvideo-Fix-incorrect-bandwidth-with-Chicony-de.patch | ||||||
|  | 
 | ||||||
| # END OF PATCH DEFINITIONS | # END OF PATCH DEFINITIONS | ||||||
| 
 | 
 | ||||||
| %endif | %endif | ||||||
| @ -1359,6 +1361,8 @@ ApplyPatch ovl-don-t-remove-non-empty-opaque-directory.patch | |||||||
| #rhbz 1220118 | #rhbz 1220118 | ||||||
| ApplyPatch media-Fix-regression-in-some-more-dib0700-based-devi.patch | ApplyPatch media-Fix-regression-in-some-more-dib0700-based-devi.patch | ||||||
| 
 | 
 | ||||||
|  | ApplyPatch v4l-uvcvideo-Fix-incorrect-bandwidth-with-Chicony-de.patch | ||||||
|  | 
 | ||||||
| # END OF PATCH APPLICATIONS | # END OF PATCH APPLICATIONS | ||||||
| 
 | 
 | ||||||
| %endif | %endif | ||||||
| @ -2220,6 +2224,7 @@ fi | |||||||
| #  | #  | ||||||
| %changelog | %changelog | ||||||
| * Mon May 18 2015 Josh Boyer <jwboyer@fedoraproject.org> | * Mon May 18 2015 Josh Boyer <jwboyer@fedoraproject.org> | ||||||
|  | - Fix incorrect bandwidth on some Chicony webcams | ||||||
| - Fix DVB oops (rhbz 1220118) | - Fix DVB oops (rhbz 1220118) | ||||||
| 
 | 
 | ||||||
| * Mon May 18 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.1.0-0.rc3.git4.1 | * Mon May 18 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.1.0-0.rc3.git4.1 | ||||||
|  | |||||||
							
								
								
									
										35
									
								
								v4l-uvcvideo-Fix-incorrect-bandwidth-with-Chicony-de.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								v4l-uvcvideo-Fix-incorrect-bandwidth-with-Chicony-de.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | |||||||
|  | From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||||||
|  | Date: Mon, 18 May 2015 10:53:48 +0300 | ||||||
|  | Subject: [PATCH] v4l: uvcvideo: Fix incorrect bandwidth with Chicony device | ||||||
|  |  04f2:b50b | ||||||
|  | 
 | ||||||
|  | The "TOSHIBA Web Camera - 5M" Chicony device (04f2:b50b) seems to | ||||||
|  | compute the bandwidth on 16 bits and erroneously sign-extend it to | ||||||
|  | 32 bits, resulting in a huge bandwidth value. Detect and fix that | ||||||
|  | condition by setting the 16 MSBs to 0 when they're all equal to 1. | ||||||
|  | 
 | ||||||
|  | Reported-by: Hans de Goede <hdegoede@redhat.com> | ||||||
|  | Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||||||
|  | ---
 | ||||||
|  |  drivers/media/usb/uvc/uvc_video.c | 8 ++++++++ | ||||||
|  |  1 file changed, 8 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c
 | ||||||
|  | index 20ccc9d315dc..f839654ea436 100644
 | ||||||
|  | --- a/drivers/media/usb/uvc/uvc_video.c
 | ||||||
|  | +++ b/drivers/media/usb/uvc/uvc_video.c
 | ||||||
|  | @@ -119,6 +119,14 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
 | ||||||
|  |  		ctrl->dwMaxVideoFrameSize = | ||||||
|  |  			frame->dwMaxVideoFrameBufferSize; | ||||||
|  |   | ||||||
|  | +	/* The "TOSHIBA Web Camera - 5M" Chicony device (04f2:b50b) seems to
 | ||||||
|  | +	 * compute the bandwidth on 16 bits and erroneously sign-extend it to
 | ||||||
|  | +	 * 32 bits, resulting in a huge bandwidth value. Detect and fix that
 | ||||||
|  | +	 * condition by setting the 16 MSBs to 0 when they're all equal to 1.
 | ||||||
|  | +	 */
 | ||||||
|  | +	if ((ctrl->dwMaxPayloadTransferSize & 0xffff0000) == 0xffff0000)
 | ||||||
|  | +		ctrl->dwMaxPayloadTransferSize &= ~0xffff0000;
 | ||||||
|  | +
 | ||||||
|  |  	if (!(format->flags & UVC_FMT_FLAG_COMPRESSED) && | ||||||
|  |  	    stream->dev->quirks & UVC_QUIRK_FIX_BANDWIDTH && | ||||||
|  |  	    stream->intf->num_altsetting > 1) { | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user