1. 15 4月, 2013 1 次提交
    • H
      [media] tuner-core/simple: get_rf_strength can be tuner mode specific · dfc2e12d
      Hans Verkuil 提交于
      The get_rf_strength op in tuner-simple is valid only for the radio mode.
      But due to the way get_signal in analog_demod_ops was designed it would
      overwrite the signal value with a bogus value when in TV mode.
      Pass a pointer to the signal value instead, and when not in radio mode
      leave it alone in the tuner-simple.
      This broke in commit 030755bd
      (tuner-core: call has_signal for both TV and radio) in kernel 3.6. Before
      that this was working correctly. That commit did the right thing, but what
      wasn't realized at the time was that tuner-simple should have been updated
      as well to restrict setting the signal strength to the radio mode only.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      dfc2e12d
  2. 14 8月, 2012 1 次提交
  3. 31 12月, 2011 4 次提交
  4. 07 11月, 2011 1 次提交
  5. 03 8月, 2010 1 次提交
  6. 09 7月, 2010 1 次提交
  7. 12 9月, 2009 1 次提交
  8. 17 6月, 2009 2 次提交
  9. 17 2月, 2009 1 次提交
    • M
      V4L/DVB (10527): tuner: fix TUV1236D analog/digital setup · ef88f2b5
      Mauro Carvalho Chehab 提交于
      As reported by David Engel <david@istwok.net>, ATSC115 doesn't work
      fine with mythtv. This software opens both analog and dvb interfaces of
      saa7134.
      
      What happens is that some tuner commands are going to the wrong place,
      as shown at the logs:
      
      Feb 12 20:37:48 opus kernel: tuner-simple 1-0061: using tuner params #0 (ntsc)
      Feb 12 20:37:48 opus kernel: tuner-simple 1-0061: freq = 67.25 (1076), range = 0, config = 0xce, cb = 0x01
      Feb 12 20:37:48 opus kernel: tuner-simple 1-0061: Freq= 67.25 MHz, V_IF=45.75 MHz, Offset=0.00 MHz, div=1808
      Feb 12 20:37:48 opus kernel: tuner 1-0061: tv freq set to 67.25
      Feb 12 20:37:48 opus kernel: tuner-simple 1-000a: using tuner params #0 (ntsc)
      Feb 12 20:37:48 opus kernel: tuner-simple 1-000a: freq = 67.25 (1076), range = 0, config = 0xce, cb = 0x01
      Feb 12 20:37:48 opus kernel: tuner-simple 1-000a: Freq= 67.25 MHz, V_IF=45.75 MHz, Offset=0.00 MHz, div=1808
      Feb 12 20:37:48 opus kernel: tuner-simple 1-000a: tv 0x07 0x10 0xce 0x01
      Feb 12 20:37:48 opus kernel: tuner-simple 1-0061: tv 0x07 0x10 0xce 0x01
      
      This happens due to a hack at TUV1236D analog setup, where it replaces
      tuner address, at 0x61 for 0x0a, in order to save a few memory bytes.
      
      The code assumes that nobody else would try to access the tuner during
      that setup, but the point is that there's no lock to protect such
      access. So, this opens the possibility of race conditions to happen.
      
      Instead of hacking tuner address, this patch uses a temporary var with
      the proper tuner value to be used during the setup. This should save
      the issue, although we should consider to write some analog/digital
      lock at saa7134 driver.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      ef88f2b5
  10. 03 1月, 2009 2 次提交
    • M
      V4L/DVB (10170): tuner-simple: prevent possible OOPS caused by divide by zero error · 6b55009e
      Michael Krufky 提交于
      A user reported the following OOPS with his pcHDTV HD5500 card, which
      uses a cx88 PCI bridge with a LG-TDVS-H06xF frontend module, made up
      of a TUA6034 tuner, TDA988x IF demod, and LG DT3303 ATSC/QAM demod.
      
      Somehow, tuner-core gets loaded before the digital driver configures
      the tuner, and tuner-core somehow incorrectly sets the tuner type to
      LG NTSC (TAPE series) instead of LG TDVS-H06xF.  This tuner type does
      not have the tuning stepsize defined, so an OOPS occurs during the
      digital tune function.
      
      We still dont know how the type gets set incorrectly in the first place.
      The user has a tainted kernel with a binary nividia module, which COULD
      have something to do with this, but it's hard to say for sure.
      
      Nevertheless, to avoid this division by zero, we should check that
      stepsize is defined.  If stepsize is not defined, print an error and
      bail out on the tune request.
      
      cx8800 0000:05:01.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
      cx88[0]: subsystem: 7063:5500, board: pcHDTV HD5500 HDTV [card=47,autodetected], frontend(s): 1
      cx88[0]: TV tuner type 47, Radio tuner type -1
      tuner' 2-0043: chip found @ 0x86 (cx88[0])
      tda9887 2-0043: creating new instance
      tda9887 2-0043: tda988[5/6/7] found
      tuner' 2-0061: chip found @ 0xc2 (cx88[0])
      tuner-simple 2-0061: creating new instance
      tuner-simple 2-0061: type set to 47 (LG NTSC (TAPE series))
      cx88[0]/0: found at 0000:05:01.0, rev: 5, irq: 19, latency: 32, mmio: 0xea000000
      cx88[0]/0: registered device video1 [v4l2]
      cx88[0]/0: registered device vbi1
      cx88_audio 0000:05:01.1: PCI INT A -> GSI 19 (level, low) -> IRQ 19
      cx88[0]/1: CX88x/0: ALSA support for cx2388x boards
      cx88[0]/2: cx2388x 8802 Driver Manager
      cx88-mpeg driver manager 0000:05:01.2: PCI INT A -> GSI 19 (level, low) -> IRQ 19
      cx88[0]/2: found at 0000:05:01.2, rev: 5, irq: 19, latency: 32, mmio: 0xec000000
      cx8802_probe() allocating 1 frontend(s)
      cx88/2: cx2388x dvb driver version 0.0.6 loaded
      cx88/2: registering cx8802 driver, type: dvb access: shared
      cx88[0]/2: subsystem: 7063:5500, board: pcHDTV HD5500 HDTV [card=47]
      cx88[0]/2: cx2388x based DVB/ATSC card
      tuner-simple 2-0061: attaching existing instance
      tuner-simple 2-0061: type set to 64 (LG NTSC (TAPE series))
      tda9887 2-0043: attaching existing instance
      DVB: registering new adapter (cx88[0])
      DVB: registering adapter 0 frontend 0 (LG Electronics LGDT3303 VSB/QAM Frontend)...
      [snip]
      stepsize=0
      divide error: 0000 [1] SMP
      CPU 1
      Modules linked in: nls_utf8 fuse sco bridge stp bnep l2cap bluetooth sunrpc nf_conntrack_netbios_ns nf_conntrack_ftp ip6t_REJECT nf_conntrack_ipv6 ip6table_filter ip6_tables ipv6 cpufreq_ondemand acpi_cpufreq freq_table xfs lgdt330x dm_multipath cx88_dvb cx88_vp3054_i2c uinput tda9887 tda8290 snd_emu10k1_synth snd_emux_synth snd_seq_virmidi snd_seq_midi_emul tuner_simple tuner_types tuner msp3400 cx8800 cx88_alsa cx8802 snd_emu10k1 cx88xx snd_rawmidi snd_ac97_codec ir_common ac97_bus saa7115 snd_seq_dummy snd_seq_oss snd_seq_midi_event videobuf_dvb snd_seq dvb_core snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_device videobuf_dma_sg ppdev parport_pc snd_timer videobuf_core snd_page_alloc btcx_risc emu10k1_gp ivtv i2c_algo_bit cx2341x snd_util_mem snd_hwdep nvidia(P) gameport v4l2_common i2c_i801 snd soundcore parport videodev v4l1_compat v4l2_compat_ioctl32 tveeprom i2c_core pcspkr iTCO_wdt iTCO_vendor_support sky2 joydev floppy shpchp ata_generic pata_acpi pata_jmicron [last unloaded: microcode]
      Pid: 3553, comm: kdvb-ad-0-fe-0 Tainted: P          2.6.27.9-159.fc10.x86_64 #1
      RIP: 0010:[<ffffffffa09bc37a>]  [<ffffffffa09bc37a>] simple_dvb_calc_regs+0xab/0x281 [tuner_simple]
      RSP: 0018:ffff8800605dfd30  EFLAGS: 00010246
      RAX: 000000000365c040 RBX: ffff8800605dfdb0 RCX: ffff88007acb8c10
      RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000246
      RBP: ffff8800605dfda0 R08: ffff8800605dfba0 R09: 0000000000000082
      R10: 00000010e73c9df1 R11: 0000000100000000 R12: ffff88007ac29c00
      R13: ffff88007ac29c00 R14: ffff88007acbb408 R15: ffffffffa09b6fb0
      FS:  0000000000000000(0000) GS:ffff88007f804880(0000) knlGS:0000000000000000
      CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
      CR2: 00000000004e8f40 CR3: 000000007114e000 CR4: 00000000000006e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process kdvb-ad-0-fe-0 (pid: 3553, threadinfo ffff8800605de000, task ffff88006fca0000)
      Stack:  ffff8800605dfd40 00000000ffffffa1 ffff88007c055860 0000000000000001
       ffff8800605dfda0 ffff8800605dfda0 ffff88007acb8c10 ffffffffa004e48c
       8e01880000000390 ffff88007acb8c10 ffff88007ac29c00 0000000000000000
      Call Trace:
       [<ffffffffa004e48c>] ? i2c_transfer+0x80/0x8b [i2c_core]
       [<ffffffffa09bc768>] simple_dvb_set_params+0x3e/0x9b [tuner_simple]
       [<ffffffffa0a0335a>] lgdt330x_set_parameters+0x188/0x1b9 [lgdt330x]
       [<ffffffffa08c9116>] dvb_frontend_swzigzag_autotune+0x18e/0x1b5 [dvb_core]
       [<ffffffffa08c9f6a>] dvb_frontend_swzigzag+0x1bc/0x21e [dvb_core]
       [<ffffffffa08ca4f4>] dvb_frontend_thread+0x528/0x62b [dvb_core]
       [<ffffffff810551e1>] ? autoremove_wake_function+0x0/0x38
       [<ffffffffa08c9fcc>] ? dvb_frontend_thread+0x0/0x62b [dvb_core]
       [<ffffffff81054e9b>] kthread+0x49/0x76
       [<ffffffff810116e9>] child_rip+0xa/0x11
       [<ffffffff81010a07>] ? restore_args+0x0/0x30
       [<ffffffff81054e52>] ? kthread+0x0/0x76
       [<ffffffff810116df>] ? child_rip+0x0/0x11
      
      Code: 48 8b 05 2a 4e 00 00 41 8b 77 1c 31 d2 0f b7 40 0a 89 f1 03 45 d0 d1 e9 03 0d 23 4e 00 00 69 c0 24 f4 00 00 8d 04 01 48 8b 4d c0 <f7> f6 8a 55 d6 88 53 04 41 89 c4 c1 e8 08 88 43 01 8a 45 d7 44
      RIP  [<ffffffffa09bc37a>] simple_dvb_calc_regs+0xab/0x281 [tuner_simple]
       RSP <ffff8800605dfd30>
      Signed-off-by: NMichael Krufky <mkrufky@linuxtv.org>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      6b55009e
    • M
  11. 18 10月, 2008 1 次提交
  12. 12 10月, 2008 2 次提交
  13. 04 9月, 2008 1 次提交
  14. 27 7月, 2008 1 次提交
  15. 05 6月, 2008 1 次提交
  16. 30 4月, 2008 1 次提交
  17. 25 4月, 2008 18 次提交