aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/usb/au0828/au0828.h
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <m.chehab@samsung.com>2014-05-09 06:17:55 -0300
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-05-25 17:50:02 -0300
commitf6fef8634163cc86f9aa193db360ffce26821bf3 (patch)
tree4eadc8479fc0bba8813b6ad9a504dc2bc3fe0c18 /drivers/media/usb/au0828/au0828.h
parent[media] au0828: Improve debug messages for urb_completion (diff)
downloadlinux-dev-f6fef8634163cc86f9aa193db360ffce26821bf3.tar.xz
linux-dev-f6fef8634163cc86f9aa193db360ffce26821bf3.zip
[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>
Diffstat (limited to 'drivers/media/usb/au0828/au0828.h')
-rw-r--r--drivers/media/usb/au0828/au0828.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/media/usb/au0828/au0828.h b/drivers/media/usb/au0828/au0828.h
index 5439772c1551..7112b9d956fa 100644
--- a/drivers/media/usb/au0828/au0828.h
+++ b/drivers/media/usb/au0828/au0828.h
@@ -104,6 +104,8 @@ struct au0828_dvb {
int feeding;
int start_count;
int stop_count;
+
+ int (*set_frontend)(struct dvb_frontend *fe);
};
enum au0828_stream_state {