[media] au0828: reset streaming when a new frequency is set
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Fri, 9 May 2014 09:17:55 +0000 (06:17 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Sun, 25 May 2014 20:50:02 +0000 (17:50 -0300)
commitf6fef8634163cc86f9aa193db360ffce26821bf3
tree4eadc8479fc0bba8813b6ad9a504dc2bc3fe0c18
parentc35fbd03ae22ca7d36622f63d0e58dadc77dfc44
[media] au0828: reset streaming when a new frequency is set

As reported by Trevor, doing several opening/streaming/closing
operations to the demux causes it to fail.

I was able to simulate this bug too. I also noticed that,
sometimes, changing channels with au0828, the same thing
happens.

Most of the issues seem to be due to some hardware bug, that
causes the device to not fill all the URBs allocated. When
the bug happens, the only known fix is to either replug the
device, or to send an USB reset to it.

There's also a hack a the au0828 driver that starts a thread
that tries to reset the device when a package doesn't start
with a sync.

One of the culpits for this bad hardware behavior seem to be
caused by the lack of stopping and restarting the stream every
time a new channel is set.

This patch warrants that the stream will be properly reset
every time the set_frontend callback is called, partially
solving the problem.

A complete fix, however, would also need to check the PM
conditions for the tuner and demux.

Reported-by: Trevor Graffa <tlgraffa@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/usb/au0828/au0828-dvb.c
drivers/media/usb/au0828/au0828.h