upstream: [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)
committerChanho Park <chanho61.park@samsung.com>
Tue, 18 Nov 2014 02:59:40 +0000 (11:59 +0900)
commit208ec657a5f72f6c3b81313a297bbee5d51ec94c
tree2ae73c9e8ae5c7ed50129f9bb92c1d9aeb9185b4
parentae5ebfdf6454d0a3860ac38be40cc1f2b00004d0
upstream: [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