dev->dvb is always not null, as it is an area at the dev
memory. So, checking if (dev->dvb) is always true.
Instead of this stupid check, what the code wants to do is
to know if the DVB was successully registered.
Fix it by checking, instead, for dvb->frontend. It should
also be sure that this var will be NULL if the device was
not properly initialized.
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Suspend/resume conditions can be very tricky. Add some info
printk's to help tracking what's happening there.
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Instead of using printk(KERN_foo, use pr_foo() macros.
No functional changes.
Note: we should do the same for dprintk(), but that would
require to remove the dprintk levels. So, for now, let's
not touch on it.
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
The scheduled work should be cancelled during suspend.
At resume time, we need to set the frontend again. So,
add such logic to the driver.
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
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>
Sometimes, it helps to know how much data was received by
urb_completion. Add that information to the optional debug
log.
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
If the tuner is already disconnected, It is meaningless to go on doing the
stream-restart operation, It is better to cancel this operation.
Signed-off-by: Changbing Xiong <cb.xiong@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Fixes the following sparse warning:
drivers/media/usb/au0828/au0828-dvb.c:36:5: warning:
symbol 'preallocate_big_buffers' was not declared. Should it be static?
Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Added command line parameter preallocate_big_buffers so that the digital
transfer buffers can be allocated when the driver is registered. They
do not have to be allocated every time a feed is started.
Signed-off-by: Tim Mester <tmester@ieee.org>
Acked-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Free what was allocated if there is a failure allocating
transfer buffers.
Stop the feed on a start feed error. The stop feed is not always called
if start feed fails. If the feed is not stopped on error, then the driver
will be stuck so that it can never start feeding again.
[m.chehab@samsung.com: CodingStyle cleanup]
Signed-off-by: Tim Mester <tmester@ieee.org>
Acked-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/usb/au0828/au0828-dvb.c:275:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Rename all USB drivers with their own directory under
drivers/media/video into drivers/media/usb and update the
building system.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>