summaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends
AgeCommit message (Collapse)Author
2010-06-01V4L/DVB: drivers/media: Use kzallocJulia Lawall
Use kzalloc rather than the combination of kmalloc and memset. The semantic patch that makes this change is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression x,size,flags; statement S; @@ -x = kmalloc(size,flags); +x = kzalloc(size,flags); if (x == NULL) S -memset(x, 0, size); // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-06-01V4L/DVB: stv6110x: Fix kernel null pointer derefGuy Martin
The following OOPS happened when plugging two TT s2-1600: [ 96.521023] saa7146: register extension 'budget dvb'. [ 96.521052] budget dvb 0000:05:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 96.521070] IRQ 16/: IRQF_DISABLED is not guaranteed on shared IRQs [ 96.521076] saa7146: found saa7146 @ mem ffffc90011182c00 (revision 1, irq 16) (0x13c2,0x101c). [ 96.521080] saa7146 (0): dma buffer size 192512 [ 96.521081] DVB: registering new adapter (TT-Budget S2-1600 PCI) [ 96.539929] adapter has MAC addr = 00:d0:5c:cc:b0:a2 [ 96.890149] stv6110x_attach: Attaching STV6110x [ 96.912516] DVB: registering adapter 0 frontend 0 (STV090x Multistandard)... [ 96.912600] budget dvb 0000:05:01.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 96.912639] IRQ 17/: IRQF_DISABLED is not guaranteed on shared IRQs [ 96.912667] saa7146: found saa7146 @ mem ffffc90011314800 (revision 1, irq 17) (0x13c2,0x101c). [ 96.912673] saa7146 (1): dma buffer size 192512 [ 96.912676] DVB: registering new adapter (TT-Budget S2-1600 PCI) [ 96.930893] adapter has MAC addr = 00:d0:5c:cc:b0:a3 [ 97.233478] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010 [ 97.233647] IP: [<ffffffffa029c450>] stv6110x_set_mode+0x70/0x80 [stv6110x] [ 97.233753] PGD 3c16f067 PUD 3c383067 PMD 0 [ 97.234147] CPU 0 [ 97.234246] Pid: 5200, comm: modprobe Not tainted 2.6.33.2 #1 P5QSE/P5Q SE [ 97.234317] RIP: 0010:[<ffffffffa029c450>] [<ffffffffa029c450>] stv6110x_set_mode+0x70/0x80 [stv6110x] [ 97.234456] RSP: 0018:ffff88003c125c98 EFLAGS: 00010246 [ 97.234461] RAX: ffffffffa029c460 RBX: ffff88003f84d800 RCX: ffff88003a19e140 [ 97.234461] RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000000 [ 97.234461] RBP: ffff88003f84d828 R08: 0000000000000002 R09: 0000000000000004 [ 97.234461] R10: 0000000000000003 R11: 0000000000000010 R12: ffff88003f84d800 [ 97.234461] R13: ffff88003f84d828 R14: ffff88003f84d828 R15: 0000000000000001 [ 97.234461] FS: 00007f9f7253e6f0(0000) GS:ffff880001800000(0000) knlGS:0000000000000000 [ 97.234461] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 97.234461] CR2: 0000000000000010 CR3: 000000003c382000 CR4: 00000000000006b0 [ 97.234461] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 97.234461] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 97.234461] Process modprobe (pid: 5200, threadinfo ffff88003c124000, task ffff88003e893ac0) [ 97.234461] ffff88003f84d800 ffff88003f84d828 ffff88003f84d800 ffffffffa0292343 [ 97.234461] <0> ffff88003f84d828 ffff88003ef70ae0 ffffffffa0280800 ffffffffa02934d2 [ 97.234461] <0> ffffffffa0295260 0000000000000000 ffffffffa02948b0 ffff88003df79800 [ 97.234461] [<ffffffffa0292343>] ? stv090x_sleep+0x33/0x120 [stv090x] [ 97.234461] [<ffffffffa02934d2>] ? stv090x_attach+0x1e2/0x73c [stv090x] [ 97.234461] [<ffffffff81007cc5>] ? dma_generic_alloc_coherent+0xa5/0x160 [ 97.234461] [<ffffffffa026e1f5>] ? saa7146_init_one+0x7d5/0x910 [saa7146] [ 97.234461] [<ffffffff811b84b2>] ? local_pci_probe+0x12/0x20 [ 97.234461] [<ffffffff811b87d0>] ? pci_device_probe+0x110/0x120 [ 97.234461] [<ffffffff81221788>] ? driver_probe_device+0x98/0x1b0 [ 97.234461] [<ffffffff81221933>] ? __driver_attach+0x93/0xa0 [ 97.234461] [<ffffffff812218a0>] ? __driver_attach+0x0/0xa0 [ 97.234461] [<ffffffff81220f18>] ? bus_for_each_dev+0x58/0x80 [ 97.234461] [<ffffffff8122079d>] ? bus_add_driver+0x14d/0x280 [ 97.234461] [<ffffffffa0284000>] ? budget_init+0x0/0xc [budget] [ 97.234461] [<ffffffff81221c29>] ? driver_register+0x79/0x170 [ 97.234461] [<ffffffffa0284000>] ? budget_init+0x0/0xc [budget] [ 97.234461] [<ffffffff811b8a48>] ? __pci_register_driver+0x58/0xe0 [ 97.234461] [<ffffffffa0284000>] ? budget_init+0x0/0xc [budget] [ 97.234461] [<ffffffff810001d5>] ? do_one_initcall+0x35/0x190 [ 97.234461] [<ffffffff81063d37>] ? sys_init_module+0xe7/0x260 [ 97.234461] [<ffffffff8100256b>] ? system_call_fastpath+0x16/0x1b [ 97.234461] RIP [<ffffffffa029c450>] stv6110x_set_mode+0x70/0x80 [stv6110x] [ 97.234461] RSP <ffff88003c125c98> [ 97.240074] ---[ end trace b53ecbbbbef15e99 ]--- Prevents calling stv6110x_set_mode() if fe->tuner_priv is not defined, in order to avoid the above bug. Signed-off-by: Guy Martin <gmsoft@tuxicoman.be> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-06-01V4L/DVB: au8522_decoder: g/s_fmt doesn't do anything: removeHans Verkuil
g/s_fmt is going to disappear, so if it is not doing anything, then just remove it. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-19V4L/DVB: dvb/stv6110x: cleanup error handlingDan Carpenter
The "stv6110x" is NULL so we can just return directly without calling kfree(). Also I changed the printk() to make checkpatch.pl happy. Signed-off-by: Dan Carpenter <error27@gmail.com> Reviewed-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-19V4L/DVB: dib3000mc: reduce large stack usageRandy Dunlap
This patch reduces static stack usage of one of the 2 top offenders as listed by 'make checkstack': Building with CONFIG_FRAME_WARN=2048 produces: drivers/media/dvb/frontends/dib3000mc.c:853: warning: the frame size of 2224 bytes is larger than 2048 bytes and in 'make checkstack', the stack usage goes from: 0x00000bbd dib3000mc_i2c_enumeration [dib3000mc]: 2232 to unlisted with this patch. I don't have the hardware that is needed to test this patch. Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Patrick Boettcher <pboettcher@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-19V4L/DVB: dib7000p: reduce large stack usage fixAndrew Morton
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-19V4L/DVB: dib7000p: reduce large stack usageRandy Dunlap
This patch reduces static stack usage of one of the 2 top offenders as listed by 'make checkstack': Building with CONFIG_FRAME_WARN=2048 produces: drivers/media/dvb/frontends/dib7000p.c:1367: warning: the frame size of 2320 bytes is larger than 2048 bytes and in 'make checkstack', the stack usage goes from: 0x00002409 dib7000p_i2c_enumeration [dib7000p]: 2328 to unlisted with this patch. Also change one caller of dib7000p_i2c_enumeration() to check its return value. I don't have the hardware that is needed to test this patch. Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-19Revert "V4L/DVB: Add FE_CAN_PSK_8 to allow apps to identify PSK_8 capable ↵Mauro Carvalho Chehab
DVB devices" Patch reverted per Andreas Oberritter <obi@linuxtv.org> request. It is basically not ready yet for upstream merge. This reverts commit 77b2ad374a82e3d740cb1780ff4caedc3e051b37. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-19V4L/DVB: Add FE_CAN_PSK_8 to allow apps to identify PSK_8 capable DVB devicesKlaus Schmidinger
The enum fe_caps provides flags that allow an application to detect whether a device is capable of handling various modulation types etc. A flag for detecting PSK_8, however, is missing. This patch adds the flag FE_CAN_PSK_8 to frontend.h and implements it for the gp8psk-fe.c and cx24116.c driver (apparently the only ones with PSK_8). Only the gp8psk-fe.c has been explicitly tested, though. Signed-off-by: Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> Tested-by: Derek Kelly <user.vdr@gmail.com> Acked-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-19V4L/DVB: ds3000: fix divide-by-zero error in ds3000_read_snr()Nicolas Noirbent
Fix a divide-by-zero error in ds3000's ds3000_read_snr(), when getting a very low signal reading (dvbs2_signal_reading >= 1). This prevents some nasty EIPs when running szap-s2 with a very low signal strength. Signed-off-by: Nicolas Noirbent <nicolas.noirbent@smartjog.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-19V4L/DVB: dvb/dib8000: fix build warningWolfram Sang
In file included from drivers/media/dvb/dvb-usb/dib0700_devices.c:14: drivers/media/dvb/frontends/dib8000.h: In function 'dib8000_get_adc_power': drivers/media/dvb/frontends/dib8000.h:112: warning: no return statement in function returning non-void Fixed by adding a return to the dummy function. Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-18V4L/DVB: stv0900: Whitespace cleanupMauro Carvalho Chehab
Fixes sync with -hg tree Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-18V4L/DVB: Fix bad whitespacingMauro Carvalho Chehab
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-18V4L/DVB: stv090x: Add some notes about the internal tuner I/O controlManu Abraham
Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-18V4L/DVB: Budget/STV090x/STV6110x: Initialize the demodulator immediately ↵Andreas Regel
after the tuner is attached Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-18V4L/DVB: [STV090x] Use gate control, while tuner is being accessedManu Abraham
Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-18V4L/DVB: [STV090x, STV6110x] Use tuner sleep within the demodulator controlManu Abraham
Oliver Endriss <o.endriss@gmx.de> pointed out: Imho not a good idea, as the frontend thread calls - fe->ops.tuner_ops.init - fe->ops.tuner_ops.sleep If you remove fe->ops.i2c_gate_ctrl, init and sleep will fail, because gate_ctrl was never called... -- Signed-off-by: Manu Abraham <manu@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-18V4L/DVB: [STV090x] Code simplificationManu Abraham
- Remove a redundant exported gate control function Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-18V4L/DVB: get_frontend for STV0900Abylay Ospan
Signed-off-by: Abylay Ospan <aospan@netup.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-18V4L/DVB: au8522: fix case where we don't perform the first tune after going ↵Devin Heitmueller
digital Address a problem found in MythTV where if we are in digital mode, switch to analog mode, and the switch back to digital mode, the first tuning request after switching back to digital mode gets dropped. This is because the au8522 maintains internal state, and would think the demod was already tuned to the target frequency. Thanks to Zaphod Beeblebrox for reporting this issue. Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-18V4L/DVB: au8522: fix race condition in switching from digital to analog modeDevin Heitmueller
With applications like MythTV, switching inputs results in closing the digital side and then immediately opening the analog side. This exposes a race condition where the dvb_frontend kernel thread powers down the chip and closes the i2c gate even though we're in the middle of bringing up the analog part of the chip (since the shutdown of the dvb_frontend kernel thread occurs asychronously). Introduce a construct to keep track of what mode we're in, and drop requests to power down or management the gate if we've already switched to analog mode. Thanks to Zaphod Beeblebrox for reporting this issue. Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-05-06V4L/DVB: ngene: Workaround for stuck DiSEqC pinOliver Endriss
Send one DiSEqC byte to make sure that the pin is set to low level. Signed-off-by: Oliver Endriss <o.endriss@gmx.de> Reviewed-by: Manu Abraham <abraham.manu@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-03-30include cleanup: Update gfp.h and slab.h includes to prepare for breaking ↵Tejun Heo
implicit slab.h inclusion from percpu.h percpu.h is included by sched.h and module.h and thus ends up being included when building most .c files. percpu.h includes slab.h which in turn includes gfp.h making everything defined by the two files universally available and complicating inclusion dependencies. percpu.h -> slab.h dependency is about to be removed. Prepare for this change by updating users of gfp and slab facilities include those headers directly instead of assuming availability. As this conversion needs to touch large number of source files, the following script is used as the basis of conversion. http://userweb.kernel.org/~tj/misc/slabh-sweep.py The script does the followings. * Scan files for gfp and slab usages and update includes such that only the necessary includes are there. ie. if only gfp is used, gfp.h, if slab is used, slab.h. * When the script inserts a new include, it looks at the include blocks and try to put the new include such that its order conforms to its surrounding. It's put in the include block which contains core kernel includes, in the same order that the rest are ordered - alphabetical, Christmas tree, rev-Xmas-tree or at the end if there doesn't seem to be any matching order. * If the script can't find a place to put a new include (mostly because the file doesn't have fitting include block), it prints out an error message indicating which .h file needs to be added to the file. The conversion was done in the following steps. 1. The initial automatic conversion of all .c files updated slightly over 4000 files, deleting around 700 includes and adding ~480 gfp.h and ~3000 slab.h inclusions. The script emitted errors for ~400 files. 2. Each error was manually checked. Some didn't need the inclusion, some needed manual addition while adding it to implementation .h or embedding .c file was more appropriate for others. This step added inclusions to around 150 files. 3. The script was run again and the output was compared to the edits from #2 to make sure no file was left behind. 4. Several build tests were done and a couple of problems were fixed. e.g. lib/decompress_*.c used malloc/free() wrappers around slab APIs requiring slab.h to be added manually. 5. The script was run on all .h files but without automatically editing them as sprinkling gfp.h and slab.h inclusions around .h files could easily lead to inclusion dependency hell. Most gfp.h inclusion directives were ignored as stuff from gfp.h was usually wildly available and often used in preprocessor macros. Each slab.h inclusion directive was examined and added manually as necessary. 6. percpu.h was updated not to include slab.h. 7. Build test were done on the following configurations and failures were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my distributed build env didn't work with gcov compiles) and a few more options had to be turned off depending on archs to make things build (like ipr on powerpc/64 which failed due to missing writeq). * x86 and x86_64 UP and SMP allmodconfig and a custom test config. * powerpc and powerpc64 SMP allmodconfig * sparc and sparc64 SMP allmodconfig * ia64 SMP allmodconfig * s390 SMP allmodconfig * alpha SMP allmodconfig * um on x86_64 SMP allmodconfig 8. percpu.h modifications were reverted so that it could be applied as a separate patch and serve as bisection point. Given the fact that I had only a couple of failures from tests on step 6, I'm fairly confident about the coverage of this conversion patch. If there is a breakage, it's likely to be something in one of the arch headers which should be easily discoverable easily on most builds of the specific arch. Signed-off-by: Tejun Heo <tj@kernel.org> Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
2010-02-26V4L/DVB: dvb: fix sparse warningsRandy Dunlap
Fix sparse warnings in media/dvb/frontends: drivers/media/dvb/frontends/dibx000_common.c:177:13: warning: non-ANSI function declaration of function 'systime' drivers/media/dvb/frontends/tda665x.c:136:55: warning: right shift by bigger than source value [mchehab@redhat.com: removed the change at dib0090 since it got fixed by a previous patch] Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB: af901x: inform NXP TDA18218 tuner as know but not supportedAntti Palosaari
There is no driver for new NXP TDA18218 tuner which is used by few recent af9015 designs. af9015 uses number 179 as ID for that tuner. Inform this tuner is not supported when device using that tuner is meet. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB: drivers/media: Correct NULL testJulia Lawall
In each case, the NULL test has been performed already. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r@ expression *x; expression e; identifier l; @@ if (x == NULL || ...) { ... when forall return ...; } ... when != goto l; when != x = e when != &x *x == NULL // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB: STV0900 Cut 3.0 AGC2 fix for NetUP Dual DVB-S2-CI cardAbylay Ospan
if the AGC2 > 1400 then no signal on this frequency for STV0900 Cut 3.0. For Cut 2.0 this value is 700. Signed-off-by: Abylay Ospan <aospan@netup.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB: drivers/media/dvb/frontends/stv090x.c: fix use-uninitlalisedAndrew Morton
Mad guess. Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Reviewed-by: Manu Abraham <manu@linuxtv.org> Acked-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB: drivers/media/dvb/frontends/stv090x.c: fix use-uninitialisedAndrew Morton
drivers/media/dvb/frontends/stv090x.c: In function 'stv090x_blind_search': drivers/media/dvb/frontends/stv090x.c:1967: warning: 'coarse_fail' may be used uninitialized in this function Cc: Manu Abraham <manu@linuxtv.org> Cc: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Reviewed-by: Manu Abraham <manu@linuxtv.org> Acked-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB: stv0900: dereference of state->internal in fe_stv0900_error ↵Roel Kluin
stv0900_init_internal() state->internal allocation may fail as well as the allocation of stv0900_first_inode or new_node->next_inode in append_internal(). Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB: dib0090: cleanup dib0090_dcc_freq()Márton Németh
'extern' is not needed at function definition. This will remove the following sparse warning (see "make C=1"): * function 'dib0090_dcc_freq' with external linkage has definition Signed-off-by: Márton Németh <nm127@freemail.hu> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB: stv0900: make more local functions staticMárton Németh
Some functions are only used locally so mark them static. This will remove the following sparse warnings (see "make C=1"): * symbol 'extract_mask_pos' was not declared. Should it be static? * symbol 'stv0900_initialize' was not declared. Should it be static? * symbol 'stv0900_get_mclk_freq' was not declared. Should it be static? * symbol 'stv0900_set_mclk' was not declared. Should it be static? * symbol 'stv0900_get_err_count' was not declared. Should it be static? Signed-off-by: Márton Németh <nm127@freemail.hu> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB: stv0900: make local functions staticMárton Németh
The functions stv0900_sw_algo() and stv0900_set_dvbs1_track_car_loop() are only used locally so mark them static. This will remove the following sparse warnings (see "make C=1"): * symbol 'stv0900_sw_algo' was not declared. Should it be static? * symbol 'stv0900_set_dvbs1_track_car_loop' was not declared. Should it be static? Signed-off-by: Márton Németh <nm127@freemail.hu> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB: 22-kHz set_tone fix for NetUP Dual DVB-S2-CI card. 22kHz logic ↵Abylay Ospan
controlled by demod 22-kHz tone can be driven in two ways: 1. LNBH24 can produce 22kHz continuous tone when TEN=1 ( 22 KHz tone output is always activated ). 2. LNBH24 can reproduce 22kHz tone timings from DSQIN or EXTM pin's when TEN=0. From LNBH24 datasheet: "In order to improve design flexibility an external tone input pin is available (EXTM). The EXTM is a Logic input pin which activates the 22 kHz tone output, on the VoTX pin, by using the LNBH24 integrated tone generator (similar to the DSQIN pin function). In fact, the output tone waveform characteristics will always be internally controlled by the LNBH24 tone generator and the EXTM signal will be used as a timing control for DiSEqC tone data encoding on the VoTX output." In NetUP Dual DVB-S2-CI card 22kHz tone timings on EXTM pin produced by STV0900 demod: .set_tone = stv0900_set_tone redefine to "set_tone = lnbp21_set_tone" is not correct for "NetUP Dual DVB-S2-CI card". Signed-off-by: Abylay Ospan <aospan@netup.ru> Signed-off-by: Oliver Endriss <o.endriss@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13989): [TDA8261] Fix TDA8261 I2C read bugArvo Järve
The TDA8261 driver would crash when reading more than a byte as described. ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff [ 8.430350] KNC1-2: MAC addr = 00:09:d6:65:2d:91 [ 8.610008] saa7146 (1) saa7146_i2c_writeout [irq]: timed out waiting for end of xfer [ 8.734457] stb0899_attach: Attaching STB0899 [ 8.768481] tda8261_attach: Attaching TDA8261 8PSK/QPSK tuner [ 8.768485] DVB: registering adapter 2 frontend 0 (STB0899 Multistandard)... Once I launch scan-s2: scan-s2 -vvvv -a 2 -s 1 -l UNIVERSAL /usr/share/dvb/dvb-s/Hotbird-13.0E I see the following via dmesg: [ 435.040017] saa7146 (1) saa7146_i2c_writeout [irq]: timed out waiting for end of xfer [ 435.778648] tda8261_get_bandwidth: Bandwidth=40000000 [ 435.781781] tda8261_get_bandwidth: Bandwidth=40000000 [ 435.783311] tda8261_set_state: Step size=1, Divider=1000, PG=0x793 (1939) [ 435.783512] tda8261_set_state: Waiting to Phase LOCK [ 435.810134] tda8261_get_status: Tuner Phase Locked [ 435.810137] tda8261_set_state: Tuner Phase locked: status=1 [ 435.810139] tda8261_set_frequency: Frequency=1939000 [ 435.810141] tda8261_get_frequency: Frequency=7574 [ 435.830008] tda8261_get_bandwidth: Bandwidth=40000000 [ 436.402814] tda8261_get_bandwidth: Bandwidth=40000000 [ 436.405946] tda8261_get_bandwidth: Bandwidth=40000000 [ 436.407458] general protection fault: 0000 [#1] SMP [ 436.407527] last sysfs file: /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor [ 436.407560] CPU 0 [ 436.407601] Modules linked in: tda8261 stb0899 dvb_pll mt352 lnbp21 budget_av saa7146_vv snd_hda_codec_realtek videodev stv0299 v4l1_compat coretemp snd_hda_intel v4l2_compat_ioctl32 i915 videobuf_dma_sg b2c2_flexcop_pci snd_hda_codec budget_ci videobuf_core b2c2_flexcop ir_common w83627ehf drm snd_hwdep cx24123 budget_core hwmon_vid snd_pcm cx24113 dvb_core iptable_filter snd_timer i2c_algo_bit ip_tables saa7146 s5h1420 snd ttpci_eeprom soundcore intel_agp video serio_raw pcspkr lp snd_page_alloc x_tables output parport pata_it8213 e1000e [ 436.408757] Pid: 1410, comm: kdvb-ad-2-fe-0 Not tainted 2.6.31-14-server #48-Ubuntu C2SBC-Q [ 436.408818] RIP: 0010:[<ffffffffa00241a1>] [<ffffffffa00241a1>] tda8261_set_state+0x51/0x250 [tda8261] [ 436.408903] RSP: 0018:ffff88013649bc70 EFLAGS: 00010283 [ 436.408945] RAX: 00000000000f1748 RBX: ffff880138870680 RCX: 0000000000000018 [ 436.408990] RDX: ffff88013649bcd0 RSI: 0000000000000001 RDI: ffff880135273010 [ 436.409035] RBP: ffff88013649bcc0 R08: 0000000000000001 R09: 0000000000000002 [ 436.409081] R10: ffff88013649bc40 R11: 0000000055555556 R12: 00000000001d9638 [ 436.409126] R13: 38ffffffa0261568 R14: 0000000000000000 R15: ffff880135273010 [ 436.409172] FS: 0000000000000000(0000) GS:ffff880028022000(0000) knlGS:0000000000000000 [ 436.409232] CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b [ 436.409274] CR2: 00007fff925e4cd8 CR3: 000000013642a000 CR4: 00000000000406f0 [ 436.409320] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 436.409365] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 436.409411] Process kdvb-ad-2-fe-0 (pid: 1410, threadinfo ffff88013649a000, task ffff88013658ad60) [ 436.409473] Stack: [ 436.409508] ffff880136ee2af1 00000000bcd5d166 ffff000200000068 0000000035273000 [ 436.409608] <0> 0000000000000001 ffff880135273000 ffffffffa0265260 00003473bc000000 [ 436.409758] <0> 0000000000000000 ffff88013a4e05e0 ffff88013649bd00 ffffffffa025f133 [ 436.409938] Call Trace: [ 436.409978] [<ffffffffa025f133>] tda8261_set_frequency+0x23/0x70 [budget_av] [ 436.410027] [<ffffffffa026ed09>] ? stb0899_i2c_gate_ctrl+0x49/0xf0 [stb0899] [ 436.410074] [<ffffffffa026e259>] ? stb0899_write_reg+0x19/0x20 [stb0899] [ 436.410121] [<ffffffffa02716e2>] stb0899_dvbs_algo+0x3a2/0x13c8 [stb0899] [ 436.410170] [<ffffffff813cdd0d>] ? i2c_transfer+0xbd/0x100 [ 436.410215] [<ffffffffa026e13c>] ? stb0899_write_regs+0xac/0x1b0 [stb0899] [ 436.410262] [<ffffffffa026f239>] stb0899_search+0x489/0x750 [stb0899] [ 436.410308] [<ffffffff8107d153>] ? down_interruptible+0x33/0x60 [ 436.410360] [<ffffffffa00c34ec>] dvb_frontend_thread+0x57c/0x720 [dvb_core] [ 436.410407] [<ffffffff81078620>] ? autoremove_wake_function+0x0/0x40 [ 436.410457] [<ffffffffa00c2f70>] ? dvb_frontend_thread+0x0/0x720 [dvb_core] [ 436.410504] [<ffffffff81078236>] kthread+0xa6/0xb0 [ 436.410547] [<ffffffff810130aa>] child_rip+0xa/0x20 [ 436.410589] [<ffffffff81078190>] ? kthread+0x0/0xb0 [ 436.410631] [<ffffffff810130a0>] ? child_rip+0x0/0x20 [ 436.410672] Code: 00 03 00 00 4c 8b 6b 10 c7 45 cc 00 00 00 00 0f 84 e8 01 00 00 44 8b 22 41 8d 84 24 10 81 f1 ff 3d 80 4f 12 00 0f 87 af 01 00 00 <41> 8b 75 04 31 d2 48 c7 c7 d8 46 02 a0 89 f0 8b 0c 85 f0 45 02 [ 436.411950] RIP [<ffffffffa00241a1>] tda8261_set_state+0x51/0x250 [tda8261] [ 436.412015] RSP <ffff88013649bc70> [ 436.412064] ---[ end trace c1d7ae4d9e05c51b ]--- Signed-off-by: Arvo Järve <arvo@softshark.ee> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13988): [STV090x] Configuration parameters adc1_range, adc2_range, ↵Oliver Endriss
tuner_bbgain Add parameters adc1_range, adc2_range and tuner_bbgain to the config struct. Defaults: adc1_range = adc2_range = 2Vpp, tuner_bbgain = 10db Signed-off-by: Oliver Endriss <o.endriss@gmx.de> Signed-off-by: Manu Abraham <abraham.manu@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13987): [STV090x] Quit processing if the tuner did not lockOliver Endriss
Exit stv090x_algo() if the tuner did not lock. This might happen due to missing signal or invalid/incomplete tuning parameters. Signed-off-by: Oliver Endriss <o.endriss@gmx.de> Signed-off-by: Manu Abraham <abraham.manu@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13986): [STV090x] Disable I2C gate on errorOliver Endriss
The I2C gate must also be disabled, if a tuner command failed. Otherwise the tuner mutex would be locked forever. Signed-off-by: Oliver Endriss <o.endriss@gmx.de> Signed-off-by: Manu Abraham <abraham.manu@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13985): [STV090x] reset mclk and dev_ver of internal structure ↵Andreas Regel
after allocating When mclk is not 0 then it will never be set to the correct value and the Demodulator will not work. Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13983): [STV6110x] add clk_div member to stv6110x_config structureAndreas Regel
Using clk_div member of stv6110x_config structure the tuner's clock output divider can be configured. It is set in stv6110x_attach. Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13982): [STV090x] setup master clock in stv090x_init instead of ↵Andreas Regel
stv090x_setup. This is needed when clock input is driven from tuner and an output divider different from 1 is used. Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13981): [STV6110x] Add a local register map for each instance of ↵Andreas Regel
the driver. Before there was used a static register map that could lead to issues when there are are multiple adapters with the STV6110(A). Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13980): [STV6110x] Added function stv6110x_write_regsAndreas Regel
The function stv6110x_write_regs is used to write several registers at once. Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13979): [STV090x] Added possibility to set a fixed TS output clock.Andreas Regel
This could be useful for p.e. Common Interface applications where data rate is limited. Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13978): [STV090x] set FE_HAS_SIGNAL flag in stv090x_read_status ↵Andreas Regel
when locked. Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13977): [STV090x] Test for valid frequency before starting to tuneAndreas Regel
Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13976): [STV090x] Added mutex protection around tuner I2C access.Andreas Regel
With this change it is possible to have the same I2C address for both tuners. Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13975): [STV090x] Added internal structure with shared settings and ↵Andreas Regel
data. As the STV0900 features two demodulation paths in one chip there is some information used by both instances of the driver when used in dual mode. This information is now shared in an internal structure referenced by I2C adapter and address. Do initialisation of the demodulator only once when used in dual mode. Moved global mutex demod_lock to internal structure. Moved dev_ver and mclk to internal structure. Removed unused tuner_refclk from stv090x_state. Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13974): [STV090x] Fix locking reliabilty issues in automatic mode.Andreas Regel
In automatic S/S2 detection mode, locking of a DVB-S transponder could fail when coming from a DVB-S2 transponder. This change fixes the issue by first disabling DVB-S and DVB-S2 mode before enabling it again. Signed-off-by: Andreas Regel <andreas.regel@gmx.de> Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26V4L/DVB (13936): 22-kHz set_tone fix for NetUP Dual DVB-S2-CI cardAbylay Ospan
22-kHz tone can be driven in two ways: 1. LNBH24 can produce 22kHz continuous tone when TEN=1 ( 22 KHz tone output is always activated ). 2. LNBH24 can reproduce 22kHz tone timings from DSQIN or EXTM pin's when TEN=0. From LNBH24 datasheet: "In order to improve design flexibility an external tone input pin is available (EXTM). The EXTM is a Logic input pin which activates the 22 kHz tone output, on the VoTX pin, by using the LNBH24 integrated tone generator (similar to the DSQIN pin function). In fact, the output tone waveform characteristics will always be internally controlled by the LNBH24 tone generator and the EXTM signal will be used as a timing control for DiSEqC tone data encoding on the VoTX output." In NetUP Dual DVB-S2-CI card 22kHz tone timings on EXTM pin produced by STV0900 demod: .set_tone = stv0900_set_tone redefine to "set_tone = lnbp21_set_tone" is not correct for "NetUP Dual DVB-S2-CI card". Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>