After registering the cdev, it would be possible do have an open on it.
In a matter of fact, some versions of udev do this. So, move registration
to the end and protect it with a mutex.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Adds support for Pixelviex Xcapture USB grabber device.
This device has one composite and one s-video entry
only, plus a button.
For now, the button is not supported.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Some devices don't need to use it. So allow to just disable this logic.
Having it enabled on some devices cause power management to complain,
generating error -71.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Instead of per-model tests all over the code, use some parameters
at the board entries to describe the model variants for:
- devices with 417 MPEG encoder;
- devices that use external AV;
- devices where vbi VANC endpoint doesn't work;
- devices with xc5000 that require different IF
initialization (and probably will cover also
xc3028).
- devices with xceive tuner that require a reset
during init.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The check for xc5000 assumes that the tuner will always
be using the same bus and will have the same address.
As those are configurable via dev->board, it should use,
instead, the values defined there.
Also, a similar type of test will be needed by other
tuners (for example, for TUNER_XC2028)
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Just a cleanup patch. Removes one indent level by moving
the return -ENODEV to happen before the device register
logic, if the interface is not the audio/video (int 1).
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
My Hauppauge WinTV HVR-1400 needs sometimes more then only one retry to load the firmware successfully.
Signed-off-by: Alina Friedrichsen <x-alina@gmx.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
KERNEL_VERSION: 2.6.37
common.c in function ssize_t si470x_fops_read.
1. First mutex_lock on &radio->lock in line 441
2. Second in line 462
I think that mutex in line 462 is not needed.
433static ssize_t si470x_fops_read(struct file *file, char __user *buf,
434 size_t count, loff_t *ppos)
435{
....
441 mutex_lock(&radio->lock);
442 if ((radio->registers[SYSCONFIG1] & SYSCONFIG1_RDS) == 0)
443 si470x_rds_on(radio);
444
445 /* block if no new data available */
446 while (radio->wr_index == radio->rd_index) {
447 if (file->f_flags & O_NONBLOCK) {
448 retval = -EWOULDBLOCK;
449 goto done;
450 }
451 if (wait_event_interruptible(radio->read_queue,
452 radio->wr_index != radio->rd_index) < 0) {
453 retval = -EINTR;
454 goto done;
455 }
456 }
457
458 /* calculate block count from byte count */
459 count /= 3;
460
461 /* copy RDS block out of internal buffer and to user buffer */
462 mutex_lock(&radio->lock);
Found by Linux Device Drivers Verification Project
Remove second mutex.
Signed-off-by: Alexander Strakh <strakh@ispras.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Unable to test this due to lack of hardware.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/vivi.c:1059: warning: this decimal constant is unsigned only in ISO C90
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Also fixed a memory leak in the probe function if an error occurred.
The gain control range was also fixed (a proper range from -64 to 64).
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
When a device is not detected, the driver prints a warning message.
That's ok, except for the fact that, even on newer devices that have
eeprom but aren't yet supported, it prints a message saying that the
device doesn't have eeprom.
Fix it by having a separate message for devices with eeprom, but not
yet known by the driver.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Make vivi use videobuf2 in place of videobuf.
Signed-off-by: Pawel Osciak <p.osciak@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Pawel Osciak <pawel@osciak.com>
Reviewed-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/ngene/ngene-i2c.o: In function `cxd2099_attach':
ngene-i2c.c:(.text+0x195): multiple definition of `cxd2099_attach'
drivers/media/dvb/ngene/ngene-core.o:ngene-core.c:(.text+0x100): first defined here
drivers/media/dvb/ngene/ngene-cards.o: In function `cxd2099_attach':
ngene-cards.c:(.text+0x116): multiple definition of `cxd2099_attach'
drivers/media/dvb/ngene/ngene-core.o:ngene-core.c:(.text+0x100): first defined here
drivers/media/dvb/ngene/ngene-dvb.o: In function `cxd2099_attach':
ngene-dvb.c:(.text+0x7ad): multiple definition of `cxd2099_attach'
drivers/media/dvb/ngene/ngene-core.o:ngene-core.c:(.text+0x100): first defined here
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This driver is abusing the kernel<=>userspace API, due to the lack of a
proper solution for it. A discussion were done at:
http://www.mail-archive.com/linux-media@vger.kernel.org/msg22196.html
But there's not a solution for it yet. So, move the driver to staging, while
we don't have a final solution.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
22kHz workaround must also be performed for the 2nd frontend.
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Refactored code for channel initialisation and release:
- Do not create device nodes which are not required.
- Better error handling.
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Do not clear registers ACLC/BCLC in DVB-S2 mode for Cut <= 20.
Otherwise, the demod could lose the lock periodically.
Verified with cineS2 and Duoflex.
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Fixed typos in register macros.
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Add dvb net device.
Note that the physical address must be setup manually.
Signed-off-by: Ralph Metzler <rjkm@metzlerbros.de>
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Implement shutdown workaround for some chipsets.
Signed-off-by: Ralph Metzler <rjkm@metzlerbros.de>
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Driver for the Common Interface Controller CXD2099AR.
Supports the CI of the cineS2 DVB-S2.
For now, data is passed through '/dev/dvb/adapterX/sec0':
- Encrypted data must be written to 'sec0'.
- Decrypted data can be read from 'sec0'.
- Setup the CAM using device 'ca0'.
Signed-off-by: Ralph Metzler <rjkm@metzlerbros.de>
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
If tuner initialisation failed, the frontend node was not removed.
When the frontend was opened, a kernel oops occurred...
This is the first step to improve error handling during initialisation.
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Support up to 4 tuners for cineS2 v5, duoflex & mystique v2.
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Card driver may supply its own lock routine now.
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>