linux/drivers/media/video/pvrusb2
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
..
Kconfig V4L/DVB (11127): Kconfig: replace all occurrences of CUSTOMIZE to CUSTOMISE 2009-03-30 12:43:31 -03:00
Makefile V4L/DVB (11207): pvrusb2: Add composite and s-video input support for OnAir devices 2009-03-30 12:43:40 -03:00
pvrusb2-audio.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
pvrusb2-audio.h V4L/DVB (11204): pvrusb2: Remove old i2c layer; we use v4l2-subdev now 2009-03-30 12:43:39 -03:00
pvrusb2-context.c V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-context.h V4L/DVB (8475): pvrusb2: Cosmetic macro fix (benign) 2008-07-26 12:54:37 -03:00
pvrusb2-cs53l32a.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
pvrusb2-cs53l32a.h V4L/DVB (11207): pvrusb2: Add composite and s-video input support for OnAir devices 2009-03-30 12:43:40 -03:00
pvrusb2-ctrl.c V4L/DVB (11332): pvrusb2: Fix incorrect reporting of default value for non-integer controls 2009-04-06 21:43:51 -03:00
pvrusb2-ctrl.h V4L/DVB (8898): pvrusb2: Be able to programmatically retrieve a control's default value 2008-10-12 09:36:57 -02:00
pvrusb2-cx2584x-v4l.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
pvrusb2-cx2584x-v4l.h V4L/DVB (11204): pvrusb2: Remove old i2c layer; we use v4l2-subdev now 2009-03-30 12:43:39 -03:00
pvrusb2-debug.h V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-debugifc.c V4L/DVB (11204): pvrusb2: Remove old i2c layer; we use v4l2-subdev now 2009-03-30 12:43:39 -03:00
pvrusb2-debugifc.h V4L/DVB (11173): pvrusb2: Fix backwards function header comments 2009-03-30 12:43:35 -03:00
pvrusb2-devattr.c V4L/DVB (11856): pvrusb2: Ensure we specify I/F's for all bandwidths 2009-06-16 18:21:13 -03:00
pvrusb2-devattr.h V4L/DVB (11750): pvrusb2: Allocate a routing ID for future support of Terratec Grabster AV400 2009-06-16 18:21:00 -03:00
pvrusb2-dvb.c V4L/DVB (11200): pvrusb2: Make a bunch of dvb config structures const (trivial) 2009-03-30 12:43:39 -03:00
pvrusb2-dvb.h V4L/DVB (7713): pvrusb2: Implement cleaner DVB kernel thread shutdown 2008-04-24 14:09:49 -03:00
pvrusb2-eeprom.c V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-eeprom.h V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-encoder.c V4L/DVB (11125): fix mispelled Hauppauge in HD PVR and PVR USB2 driver comments 2009-03-30 12:43:31 -03:00
pvrusb2-encoder.h V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-fx2-cmd.h V4L/DVB (8474): pvrusb2: Enable IR chip on HVR-1900 class devices 2008-07-26 12:54:35 -03:00
pvrusb2-hdw-internal.h V4L/DVB (11744): pvrusb2: Select, track, and report IR scheme in use with the device 2009-06-16 18:20:59 -03:00
pvrusb2-hdw.c V4L/DVB (12118): pvrusb2: Fix hardware scaling when used with cx25840 2009-06-23 03:15:01 -03:00
pvrusb2-hdw.h V4L/DVB (10239): pvrusb2: Fix misleading comment caused by earlier commit 2009-03-30 12:42:22 -03:00
pvrusb2-i2c-core.c V4L/DVB (11850): pvrusb2: Instantiate ir_video I2C device by default 2009-06-16 18:21:12 -03:00
pvrusb2-i2c-core.h V4L/DVB (11154): pvrusb2: Split i2c module handling from i2c adapter 2009-03-30 12:43:32 -03:00
pvrusb2-io.c V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-io.h V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-ioread.c PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
pvrusb2-ioread.h V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-main.c V4L/DVB (10259): pvrusb2: Code module name directly in printk 2009-03-30 12:42:23 -03:00
pvrusb2-std.c V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-std.h V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-sysfs.c V4L/DVB (11739): remove driver_data direct access of struct device 2009-06-16 18:20:58 -03:00
pvrusb2-sysfs.h V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-util.h V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-v4l2.c V4L/DVB (11747): pvrusb2: Bump up version advertised through v4l interface 2009-06-16 18:21:00 -03:00
pvrusb2-v4l2.h V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00
pvrusb2-video-v4l.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
pvrusb2-video-v4l.h V4L/DVB (11204): pvrusb2: Remove old i2c layer; we use v4l2-subdev now 2009-03-30 12:43:39 -03:00
pvrusb2-wm8775.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
pvrusb2-wm8775.h V4L/DVB (11204): pvrusb2: Remove old i2c layer; we use v4l2-subdev now 2009-03-30 12:43:39 -03:00
pvrusb2.h V4L/DVB (7936): pvrusb2: Remove svn Id keyword from all sources 2008-07-20 07:06:52 -03:00