linux/drivers
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
..
accessibility
acpi Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-06-22 11:59:51 -07:00
amba
ata powerpc/5xxx: Add common mpc5xxx_get_bus_frequency() function 2009-06-17 00:30:22 -06:00
atm
auxdisplay
base Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
block hd: stop defining MAJOR_NR 2009-06-18 09:56:20 +02:00
bluetooth
cdrom
char tty: n_hdlc add buffer flushing 2009-06-22 11:32:24 -07:00
clocksource Merge branches 'sh/pci-express-integration', 'sh/rsk-updates', 'sh/platform-updates' and 'sh/perf_counter' 2009-06-17 16:37:26 +09:00
connector
cpufreq
cpuidle
crypto crypto: padlock-aes - work around Nano CPU errata in CBC mode 2009-06-18 19:31:09 +08:00
dca
dio
dma DMA: TXx9 Soc DMA Controller driver 2009-06-17 11:06:25 +01:00
edac edac: Kconfig: fix the meaning of EDAC abbreviation 2009-06-18 13:03:57 -07:00
eisa Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-06-22 21:29:52 -07:00
firmware Pull for-2.6.31 into release 2009-06-17 09:35:24 -07:00
gpio gpio: driver for PrimeCell PL061 GPIO controller 2009-06-19 16:46:03 -07:00
gpu drm/i915: enable GEM on PAE. 2009-06-19 10:29:20 +10:00
hid
hwmon Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
i2c i2c: Fix stuck transaction on cpm-i2c driver 2009-06-22 01:43:32 +01:00
ide Merge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 2009-06-20 10:11:11 -07:00
idle
ieee1394 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-06-22 21:29:52 -07:00
ieee802154
infiniband
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2009-06-20 10:17:02 -07:00
isdn net: fix network drivers ndo_start_xmit() return values 2009-06-17 04:31:16 -07:00
leds
lguest
macintosh
mca
md Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block 2009-06-19 17:43:04 -07:00
media V4L/DVB (12118): pvrusb2: Fix hardware scaling when used with cx25840 2009-06-23 03:15:01 -03:00
memstick
message convert some DMA_nnBIT_MASK() callers 2009-06-19 16:46:06 -07:00
mfd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2009-06-20 10:17:02 -07:00
misc gru: copyright fixes 2009-06-18 13:04:04 -07:00
mmc sdhci: remove needless double parenthesis 2009-06-21 21:01:00 +02:00
mtd Merge git://git.infradead.org/mtd-2.6 2009-06-22 16:56:22 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/czankel/xtensa-2.6 2009-06-22 12:38:31 -07:00
nubus
of
oprofile
parisc
parport parport_pc: set properly the dma_mask for parport_pc device 2009-06-22 11:29:00 -07:00
pci Merge git://git.infradead.org/~dwmw2/iommu-2.6.31 2009-06-22 21:38:22 -07:00
pcmcia Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
platform acer-wmi: fix rfkill conversion 2009-06-19 11:50:18 -04:00
pnp
power
pps LinuxPPS: core support 2009-06-18 13:04:04 -07:00
ps3
rapidio
regulator
rtc rtc: make rtc_update_irq callable with irqs enabled 2009-06-19 16:46:05 -07:00
s390 [S390] dasd: fix refcounting in dasd_change_state 2009-06-22 12:08:23 +02:00
sbus
scsi Merge commit 'origin/master' into next 2009-06-18 11:16:55 +10:00
serial msm: fixups to match current code 2009-06-22 11:32:25 -07:00
sh
sn
spi spi_mpc8xxx: s/83xx/8xxx/g 2009-06-19 16:46:05 -07:00
ssb
staging tty: fix some bogns in the serqt_usb2 driver 2009-06-22 11:32:24 -07:00
tc
telephony
thermal
uio
usb Merge commit 'origin/master' into next 2009-06-18 11:16:55 +10:00
uwb
video Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2009-06-19 17:40:40 -07:00
virtio
vlynq drivers: add support for the TI VLYNQ bus 2009-06-16 19:47:52 -07:00
w1 w1-gpio: add external pull-up enable callback 2009-06-18 13:03:58 -07:00
watchdog Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2009-06-19 17:40:40 -07:00
xen
zorro
Kconfig LinuxPPS: core support 2009-06-18 13:04:04 -07:00
Makefile LinuxPPS: core support 2009-06-18 13:04:04 -07:00