linux/drivers/media/video
Mike Isely e17d787c51 V4L/DVB (12118): pvrusb2: Fix hardware scaling when used with cx25840
The cx25840 module requires that its VBI initialization entry point be
called in order for hardware-scaled video capture to work properly -
even if we don't care about VBI.  Making this behavior even more
subtle is that if the capture resolution is set to 720x480 - which is
the default that the pvrusb2 driver sets up - then the cx25840
bypasses the hardware scaler.  Therefore this problem does not
manifest itself until some other resolution, e.g. 640x480, is tried.
MythTV typically defaults to 640x480 or 480x480, which means that
things break whenever the driver is used with MythTV.

This all has been known for a while (since at least Nov 2006), but
recent changes in the pvrusb2 driver (specifically in regards to
sub-device support) caused this to break again.  VBI initialization
must happen *after* the chip's firmware is loaded, not before.  With
this fix, 24xxx devices work correctly again.

A related fix that is part of this changeset is that now we
re-initialize VBI any time after we issue a reset to the cx25840
driver.  Issuing a chip reset erases the state that the VBI setup
previously did.  Until the HVR-1950 came along this subtlety went
unnoticed, because the pvrusb2 driver previously never issued such a
reset.  But with the HVR-1950 we have to do that reset in order to
correctly transition from digital back to analog mode - and since the
HVR-1950 always starts in digital mode (required for the DVB side to
initialize correctly) then this device has never had a chance to work
correctly in analog mode!  Analog capture on the HVR-1950 has been
broken this *ENTIRE* time.  I had missed it until now because I've
usually been testing at the default 720x480 resolution which does not
require scaling...  What fun.  By re-initializing VBI after a cx25840
chip reset, correct behavior is restored.

Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-06-23 03:15:01 -03:00
..
au0828 V4L/DVB (11928): au0828: provide module option to disable USB speed check 2009-06-16 19:07:22 -03:00
bt8xx V4L/DVB (12004): poll method lose race condition 2009-06-16 19:14:44 -03:00
cpia2 V4L/DVB: cleanup redundant tests on unsigned 2009-06-16 18:20:58 -03:00
cx18 V4L/DVB (12104): ivtv/cx18: fix regression: class controls are no longer seen 2009-06-23 03:14:31 -03:00
cx88 V4L/DVB (12010): cx88: Properly support Leadtek TV2000 XP Global 2009-06-23 03:10:05 -03:00
cx231xx V4L/DVB (12112): cx231xx: fix uninitialized variable. 2009-06-23 03:14:52 -03:00
cx23885 V4L/DVB (12116): cx23885: ensure correct IF freq is used on HVR1200 & HVR1700 2009-06-23 03:14:58 -03:00
cx25840 V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
em28xx V4L/DVB (12102): em28xx: add Remote control support for EVGA inDtube 2009-06-23 03:14:25 -03:00
et61x251 V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
gspca V4L/DVB (12093): gspca_sonixj: Name saturation control saturation, not color 2009-06-23 03:13:57 -03:00
hdpvr trivial: typo (en|dis|avail|remove)bale -> (en|dis|avail|remove)able 2009-06-12 18:01:45 +02:00
ivtv V4L/DVB (12104): ivtv/cx18: fix regression: class controls are no longer seen 2009-06-23 03:14:31 -03:00
ovcamchip V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed. 2009-03-30 12:43:49 -03:00
pvrusb2 V4L/DVB (12118): pvrusb2: Fix hardware scaling when used with cx25840 2009-06-23 03:15:01 -03:00
pwc V4L/DVB (11993): V4L/pwc - use usb_interface as parent, not usb_device 2009-06-16 19:07:52 -03:00
saa7134 V4L/DVB (11996): saa7134: add support for AVerMedia M103 (f736) 2009-06-16 19:07:53 -03:00
sn9c102 V4L/DVB (11221): gspca - sonixj: Prefer sonixj instead of sn9c102 for 0471:0327. 2009-03-30 12:43:41 -03:00
usbvideo V4L/DVB (12088): Mark the v4l1 uvcvideo quickcam messenger driver as deprecated 2009-06-23 03:13:33 -03:00
usbvision V4L/DVB (11992): Add missing __devexit_p() 2009-06-16 19:07:51 -03:00
uvc V4L/DVB (12002): uvc: Fix for no return value check of uvc_ctrl_set() which calls mutex_lock_interruptible() 2009-06-16 19:07:57 -03:00
zc0301 V4L/DVB (10343): gspca - zc3xx / zc0301: Handle the 0ac8:303b instead of zc0301. 2009-03-30 12:42:30 -03:00
zoran V4L/DVB (11992): Add missing __devexit_p() 2009-06-16 19:07:51 -03:00
adv7170.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
adv7175.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
adv7343_regs.h V4L/DVB (11743): Analog Devices ADV7343 video encoder driver 2009-06-16 18:20:59 -03:00
adv7343.c V4L/DVB (11743): Analog Devices ADV7343 video encoder driver 2009-06-16 18:20:59 -03:00
arv.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
bt819.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
bt856.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
bt866.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
btcx-risc.c
btcx-risc.h
bw-qcam.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
bw-qcam.h
c-qcam.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
cafe_ccic-regs.h
cafe_ccic.c V4L/DVB (11680): cafe_ccic: use = instead of == for setting a value at a var 2009-05-09 18:54:32 -03:00
cpia_pp.c
cpia_usb.c
cpia.c proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
cpia.h
cs53l32a.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
cs5345.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
cs8420.h
cx2341x.c V4L/DVB (12104): ivtv/cx18: fix regression: class controls are no longer seen 2009-06-23 03:14:31 -03:00
dabusb.c Driver Core: usb: add nodename support for usb drivers. 2009-06-15 21:30:25 -07:00
dabusb.h
font.h
hexium_gemini.c V4L/DVB: cleanup redundant tests on unsigned 2009-06-16 18:20:58 -03:00
hexium_orion.c V4L/DVB: cleanup redundant tests on unsigned 2009-06-16 18:20:58 -03:00
ibmmpeg2.h
indycam.c V4L/DVB (10866): saa7191, indycam: remove compat code. 2009-03-30 12:43:11 -03:00
indycam.h V4L/DVB (10861): vino/indycam/saa7191: convert to i2c modules to V4L2. 2009-03-30 12:43:10 -03:00
ir-kbd-i2c.c V4L/DVB (11846): ir-kbd-i2c: Don't assume all IR receivers are supported 2009-06-16 18:21:11 -03:00
Kconfig V4L/DVB (12084): ov511: mark as deprecated 2009-06-23 03:13:18 -03:00
ks0127.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
ks0127.h V4L/DVB (10730): v4l-dvb: cleanup obsolete references to v4l1 headers. 2009-03-30 12:42:59 -03:00
m52790.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
Makefile V4L/DVB (11967): v4l: i2c modules must be linked before the v4l2 drivers 2009-06-16 19:07:41 -03:00
meye.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
meye.h
msp3400-driver.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
msp3400-driver.h V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
msp3400-kthreads.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
mt9m001.c V4L/DVB (11610): soc-camera: simplify register access routines in multiple sensor drivers 2009-06-16 18:20:43 -03:00
mt9m111.c V4L/DVB (11610): soc-camera: simplify register access routines in multiple sensor drivers 2009-06-16 18:20:43 -03:00
mt9t031.c V4L/DVB (11610): soc-camera: simplify register access routines in multiple sensor drivers 2009-06-16 18:20:43 -03:00
mt9v022.c V4L/DVB (11610): soc-camera: simplify register access routines in multiple sensor drivers 2009-06-16 18:20:43 -03:00
mx1_camera.c V4L/DVB (11609): soc-camera: remove an extra device generation from struct soc_camera_host 2009-06-16 18:20:43 -03:00
mx3_camera.c V4L/DVB (11992): Add missing __devexit_p() 2009-06-16 19:07:51 -03:00
mxb.c V4L/DVB: cleanup redundant tests on unsigned 2009-06-16 18:20:58 -03:00
mxb.h
omap24xxcam-dma.c
omap24xxcam.c V4L/DVB (11264): omap24xxcam: Remove buffer type check from vidioc_s/g_parm 2009-03-30 12:43:45 -03:00
omap24xxcam.h
ov511.c V4L/DVB (12083): ov511: remove ov518 usb id's from the driver 2009-06-23 03:13:16 -03:00
ov511.h V4L/DVB (11966): ov511: Fix unit_video parameter behavior 2009-06-16 19:07:40 -03:00
ov772x.c soc-camera: unify i2c camera device platform data 2009-06-17 16:22:34 +09:00
ov7670.c V4L/DVB (11117): ov7670: add support to get/set registers 2009-03-30 12:43:30 -03:00
pms.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
pxa_camera.c V4L/DVB (11992): Add missing __devexit_p() 2009-06-16 19:07:51 -03:00
s2255drv.c V4L/DVB (11738): patch: s2255drv: urb completion routine fixes 2009-06-16 19:14:12 -03:00
saa711x_regs.h
saa717x.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa5246a.c V4L/DVB (11516): drivers/media/video/saa5246a.c: fix use-after-free 2009-04-29 15:41:12 -03:00
saa5249.c V4L/DVB (11515): drivers/media/video/saa5249.c: fix use-after-free and leak 2009-04-29 15:41:11 -03:00
saa6588.c V4L/DVB (11283): saa6588: remove legacy code. 2009-03-30 12:43:47 -03:00
saa7110.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7115.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7121.h
saa7127.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7146.h V4L/DVB (10907): avoid loading the entire videodev.h header on V4L2 drivers 2009-03-30 12:43:15 -03:00
saa7146reg.h
saa7185.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7191.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7191.h V4L/DVB (10861): vino/indycam/saa7191: convert to i2c modules to V4L2. 2009-03-30 12:43:10 -03:00
se401.c V4L/DVB (11998): se401: Fix coding style 2009-06-16 19:07:54 -03:00
se401.h V4L/DVB (11998): se401: Fix coding style 2009-06-16 19:07:54 -03:00
sh_mobile_ceu_camera.c V4L/DVB (11609): soc-camera: remove an extra device generation from struct soc_camera_host 2009-06-16 18:20:43 -03:00
soc_camera_platform.c V4L/DVB (11024): soc-camera: separate S_FMT and S_CROP operations 2009-03-30 12:43:21 -03:00
soc_camera.c V4L/DVB (11992): Add missing __devexit_p() 2009-06-16 19:07:51 -03:00
stk-sensor.c
stk-webcam.c V4L/DVB: cleanup redundant tests on unsigned 2009-06-16 18:20:58 -03:00
stk-webcam.h
stradis.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
stv680.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
stv680.h
tcm825x.c V4L/DVB (12111): tcm825x: remove incorrect __exit_p wrapper 2009-06-23 03:14:48 -03:00
tcm825x.h V4L/DVB (10628): V4L: Storage class should be before const qualifier 2009-03-30 12:42:48 -03:00
tda7432.c V4L/DVB (11564): tda7432: Delete old driver history 2009-06-16 18:20:36 -03:00
tda9840.c V4L/DVB (11372): v4l2: use old-style i2c API for kernels < 2.6.26 instead of < 2.6.22 2009-04-06 21:44:23 -03:00
tda9875.c V4L/DVB (11302): tda9875: remove legacy code for old-style i2c API 2009-03-30 12:43:48 -03:00
tea6415c.c V4L/DVB (11737): Drop stray references to i2c_probe 2009-06-16 18:20:58 -03:00
tea6415c.h V4L/DVB (10499): saa7146: convert saa7146 and mxb in particular to v4l2_subdev. 2009-03-30 12:42:42 -03:00
tea6420.c V4L/DVB (11737): Drop stray references to i2c_probe 2009-06-16 18:20:58 -03:00
tea6420.h V4L/DVB (10499): saa7146: convert saa7146 and mxb in particular to v4l2_subdev. 2009-03-30 12:42:42 -03:00
ths7303.c V4L/DVB (11742): TI THS7303 video amplifier driver code 2009-06-16 18:20:59 -03:00
tlv320aic23b.c V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed. 2009-03-30 12:43:49 -03:00
tuner-core.c V4L/DVB (11926): tuner-core: fix warning introduced when cleaning up xc5000 init routine 2009-06-16 19:07:21 -03:00
tvaudio.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
tveeprom.c V4L/DVB (11933): tuner-simple, tveeprom: Add Philips FQ1216LME MK3 analog tuner 2009-06-16 19:07:25 -03:00
tvp514x_regs.h
tvp514x.c V4L/DVB (11961): tvp514x: try_count off by one 2009-06-16 19:07:39 -03:00
tvp5150_reg.h
tvp5150.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
tw9910.c soc-camera: unify i2c camera device platform data 2009-06-17 16:22:34 +09:00
upd64031a.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
upd64083.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
v4l1-compat.c V4L/DVB (11329): Fix buglets in v4l1 compatibility layer 2009-04-06 21:43:50 -03:00
v4l2-common.c V4L/DVB (11673): v4l2-device: unregister i2c_clients when unregistering the v4l2_device. 2009-06-16 18:20:51 -03:00
v4l2-compat-ioctl32.c V4L/DVB (10910): videodev2.h: remove deprecated VIDIOC_G_CHIP_IDENT_OLD 2009-03-30 12:43:15 -03:00
v4l2-dev.c V4L/DVB (11390): 2-dev.c: return 0 for NULL open and release callbacks 2009-04-06 21:44:30 -03:00
v4l2-device.c V4L/DVB (11936): Fix v4l2-device usage of i2c_unregister_device() 2009-06-16 19:07:26 -03:00
v4l2-int-device.c
v4l2-ioctl.c V4L/DVB (11662): v4l2-ioctl: Clear buffer type specific trailing fields/padding 2009-05-09 18:51:48 -03:00
videobuf-core.c V4L/DVB (11991): buf-core.c: add pointer check 2009-06-16 19:07:51 -03:00
videobuf-dma-contig.c Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 2009-06-16 21:15:42 -07:00
videobuf-dma-sg.c V4L/DVB (11953): videobuf-dma-sg: return -ENOMEM if vmalloc fails 2009-06-16 19:07:34 -03:00
videobuf-dvb.c
videobuf-vmalloc.c V4L/DVB (10305): videobuf-vmalloc: Fix: videobuf memory were never freed 2009-03-30 12:42:27 -03:00
vino.c V4L/DVB (11937): vino: replace dma_sync_single with dma_sync_single_for_cpu 2009-06-16 19:07:26 -03:00
vino.h
vivi.c V4L/DVB (10912): vivi: fix compile warning. 2009-03-30 12:43:15 -03:00
vp27smpx.c V4L/DVB (11370): v4l2-subdev: move s_std from tuner to core. 2009-04-06 21:44:22 -03:00
vpx3220.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
w9966.c V4L/DVB (10907): avoid loading the entire videodev.h header on V4L2 drivers 2009-03-30 12:43:15 -03:00
w9968cf_decoder.h
w9968cf_vpp.h
w9968cf.c V4L/DVB (11373): v4l2-common: add explicit v4l2_device pointer as first arg to new_(probed)_subdev 2009-04-06 21:44:24 -03:00
w9968cf.h V4L/DVB (11377): v4l: increase version numbers of drivers converted to v4l2_subdev. 2009-04-06 21:44:26 -03:00
wm8739.c V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed. 2009-03-30 12:43:49 -03:00
wm8775.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
zr364xx.c V4L/DVB (11995): zr364xx.c: vfree does its own NULL check 2009-06-16 19:07:53 -03:00