]> git.baikalelectronics.ru Git - kernel.git/commit
[media] au8522: properly recover from the au8522 delivering misaligned TS streams
authorDevin Heitmueller <dheitmueller@kernellabs.com>
Tue, 7 Aug 2012 01:46:53 +0000 (22:46 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 9 Aug 2012 23:31:30 +0000 (20:31 -0300)
commit3e3c91f8d0ad7a51bb819742c2dca2ee0873aafc
tree6d86a5eb76e6117ae98da89f1de9f8a773906e30
parentaede14a18b736e4ac799e9789d89d6ca0e6c8afe
[media] au8522: properly recover from the au8522 delivering misaligned TS streams

There is an apparent bug in the au8522 TS clocking which can result in
it delivering a TS payload to the au0828 that is shifted by some number
of bits. For example, the device will announce a packet containing "FA
38 FF F8" which if you shift left one bit is "1F 47 1F FF F0..."

This presents itself as no TS stream being delivered from the kernel to
userland, since the kernel demux will drop every packet.

In the event that this condition occurs, restart the DVB stream.

Also, this patch includes a couple of lines of cleanup to not change the
FIFO configuration while the FIFO is running (which can screw up the
state machine), and dequeue the buffers before turning off the FIFO.
This puts the logic in sync with the Windows driver.

Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/au0828/au0828-dvb.c
drivers/media/video/au0828/au0828.h