diff options
author | Thierry MERLE <thierry.merle@free.fr> | 2006-12-15 14:46:53 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-12-27 11:19:04 -0500 |
commit | 38284ba361d69eca34a3bfc553ebfac81fea2698 (patch) | |
tree | ab923c9b82ac8f3be51006ccbd425182f3c07f42 /drivers/media/video/usbvision/usbvision-video.c | |
parent | 3a4456a073150c8b0d790daa007d2aab9ebdecb5 (diff) |
V4L/DVB (4970): Usbvision memory fixes
- fix decompression buffer allocation not done at first driver open
- simplification of USB sbuf allocation (use of usb_buffer_alloc)
- replaced vmalloc by vmalloc_32 (for homogeneity)
- add of saa7111 (i2cAddr=0x48) detection printout in attach_inform
Signed-off-by: Thierry MERLE <thierry.merle@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/usbvision/usbvision-video.c')
-rw-r--r-- | drivers/media/video/usbvision/usbvision-video.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/drivers/media/video/usbvision/usbvision-video.c b/drivers/media/video/usbvision/usbvision-video.c index b77e25ea8838..31b133ef0698 100644 --- a/drivers/media/video/usbvision/usbvision-video.c +++ b/drivers/media/video/usbvision/usbvision-video.c | |||
@@ -353,20 +353,15 @@ static int usbvision_v4l2_open(struct inode *inode, struct file *file) | |||
353 | if(!errCode) { | 353 | if(!errCode) { |
354 | /* Allocate memory for the scratch ring buffer */ | 354 | /* Allocate memory for the scratch ring buffer */ |
355 | errCode = usbvision_scratch_alloc(usbvision); | 355 | errCode = usbvision_scratch_alloc(usbvision); |
356 | if(!errCode) { | 356 | if ((!errCode) && (isocMode==ISOC_MODE_COMPRESS)) { |
357 | /* Allocate memory for the USB S buffers */ | 357 | /* Allocate intermediate decompression buffers only if needed */ |
358 | errCode = usbvision_sbuf_alloc(usbvision); | 358 | errCode = usbvision_decompress_alloc(usbvision); |
359 | if ((!errCode) && (usbvision->isocMode==ISOC_MODE_COMPRESS)) { | ||
360 | /* Allocate intermediate decompression buffers only if needed */ | ||
361 | errCode = usbvision_decompress_alloc(usbvision); | ||
362 | } | ||
363 | } | 359 | } |
364 | } | 360 | } |
365 | if (errCode) { | 361 | if (errCode) { |
366 | /* Deallocate all buffers if trouble */ | 362 | /* Deallocate all buffers if trouble */ |
367 | usbvision_frames_free(usbvision); | 363 | usbvision_frames_free(usbvision); |
368 | usbvision_scratch_free(usbvision); | 364 | usbvision_scratch_free(usbvision); |
369 | usbvision_sbuf_free(usbvision); | ||
370 | usbvision_decompress_free(usbvision); | 365 | usbvision_decompress_free(usbvision); |
371 | } | 366 | } |
372 | } | 367 | } |
@@ -437,9 +432,8 @@ static int usbvision_v4l2_close(struct inode *inode, struct file *file) | |||
437 | usbvision_stop_isoc(usbvision); | 432 | usbvision_stop_isoc(usbvision); |
438 | 433 | ||
439 | usbvision_decompress_free(usbvision); | 434 | usbvision_decompress_free(usbvision); |
440 | usbvision_rvfree(usbvision->fbuf, usbvision->fbuf_size); | 435 | usbvision_frames_free(usbvision); |
441 | usbvision_scratch_free(usbvision); | 436 | usbvision_scratch_free(usbvision); |
442 | usbvision_sbuf_free(usbvision); | ||
443 | 437 | ||
444 | usbvision->user--; | 438 | usbvision->user--; |
445 | 439 | ||