1. 22 Dec, 2014 1 commit
  2. 14 Apr, 2013 1 commit
    • Hans Verkuil's avatar
      [media] tuner-core/simple: get_rf_strength can be tuner mode specific · dfc2e12d
      Hans Verkuil authored
      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: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      dfc2e12d
  3. 08 Apr, 2013 3 commits
  4. 13 Aug, 2012 1 commit
  5. 02 Mar, 2011 1 commit
    • Jarod Wilson's avatar
      [media] tda829x: fix regression in probe functions · 89a8969a
      Jarod Wilson authored
      In commit 567aba0b, the probe address
      for tda8290_probe and tda8295_probe was hard-coded to 0x4b, which is the
      default i2c address for those devices, but its possible for the device
      to be at an alternate address, 0x42, which is the case for the HVR-1950.
      If we probe the wrong address, probe fails and we have a non-working
      device. We have the actual address passed into the function by way of
      i2c_props, we just need to use it. Also fix up some copy/paste comment
      issues and streamline debug spew a touch. Verified to restore my
      HVR-1950 to full working order.
      
      Special thanks to Ken Bass for reporting the issue in the first place,
      and to both he and Gary Buhrmaster for aiding in debugging and analysis
      of the problem.
      Reported-by: default avatarKen Bass <kbass@kenbass.com>
      Tested-by: default avatarJarod Wilson <jarod@redhat.com>
      Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      89a8969a
  6. 19 Jan, 2011 4 commits
    • Mauro Carvalho Chehab's avatar
      [media] saa7134: Kworld SBTVD: make both analog and digital to work · ecb71d26
      Mauro Carvalho Chehab authored
      There are some weird bugs at tda8290/tda18271 initialization, as it
      insits do do analog initialization during DVB frontend attach:
      
      DVB: registering new adapter (saa7133[0])
      DVB: registering adapter 0 frontend 0 (Fujitsu mb86A20s)...
      mb86a20s: mb86a20s_initfe
      tda18271_write_regs: [2-0060|M] ERROR: idx = 0x5, len = 1, i2c_transfer returned: -5
      tda18271_init: [2-0060|M] error -5 on line 830
      tda18271_tune: [2-0060|M] error -5 on line 908
      tda18271_write_regs
      tda18271_write_regs: [2-0060|M] ERROR: idx = 0x5, len = 1, i2c_transfer returned: -5
      tda18271c2_rf_tracking_filters_correction: [2-0060|M] error -5 on line 265
      tda18271_write_regs
      tda18271_write_regs: [2-0060|M] ERROR: idx = 0x25, len = 1, i2c_transfer returned: -5
      tda18271_channel_configuration: [2-0060|M] error -5 on line 119
      tda18271_set_analog_params: [2-0060|M] error -5 on line 1045
      tda18271_set_analog_params: [2-0060|M] error -5 on line 1045
      tda829x 2-004b: tda8295 not locked, no signal?
      tda829x 2-004b: tda8295_i2c_bridge: disable i2c gate
      tda829x 2-004b: tda8295 not locked, no signal?
      tda829x 2-004b: tda8295_i2c_bridge: disable i2c gate
      mb86a20s_i2c_writereg: writereg error (rc == -5, reg == 0x29, data == 0x33)
      mb86a20s: Init failed. Will try again later
      
      The problem is that mb86a20s is only visible if the analog part is disabled.
      
      However, due to a trick at mb86a20s, it will later initialize properly:
      
      mb86a20s: mb86a20s_initfe: Initialization succeded.
      
      This is hacky and ugly. However, I coldn't find any easy way to fix it.
      A proper fix would be to have a resource locking schema, used by both
      V4L and DVB parts that would block access to analog registers while
      digital registers are in use, but this will probably put tda829x into
      a dead lock.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      ecb71d26
    • Mauro Carvalho Chehab's avatar
      [media] tda8290: Turn tda829x on before touching at the I2C gate · 9d700a06
      Mauro Carvalho Chehab authored
      On Kworld SBTVD, tda8295-c1 starts in power off mode. It needs
      to be powered, otherwise, the I2C gate control command won't work.
      
      Cc: Michael Krufky <mkrufky@kernellabs.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      9d700a06
    • Mauro Carvalho Chehab's avatar
      [media] tda8290: Fix a bug if no tuner is detected · 47ab285a
      Mauro Carvalho Chehab authored
      If tda8290 is detected, but no tuner is found, the driver will do bad
      things:
      
      tuner 2-0060: chip found @ 0xc0 (saa7133[0])
      tda829x 2-0060: could not clearly identify tuner address, defaulting to 60
      tda829x 2-0060: tuner access failed!
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
      IP: [<ffffffffa048c267>] set_audio+0x47/0x170 [tda8290]
      PGD 1187b0067 PUD 11771e067 PMD 0
      Oops: 0002 [#1] SMP
      last sysfs file: /sys/module/i2c_core/initstate
      CPU 0
      Modules linked in: tda8290(U) tea5767(U) tuner(U) ir_lirc_codec(U) lirc_dev(U) ir_sony_decoder(U) ir_jvc_decoder(U) ir_rc6_decoder(U) ir_rc5_decoder(U) saa7134(+)(U) v4l2_common(U) ir_nec_decoder(U) videodev(U) v4l2_compat_ioctl32(U) rc_core(U) videobuf_dma_sg(U) videobuf_core(U) tveeprom(U) ebtable_nat ebtables xt_CHECKSUM iptable_mangle ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack ipt_REJECT bridge stp llc autofs4 sunrpc cpufreq_ondemand acpi_cpufreq freq_table xt_physdev iptable_filter ip_tables ip6t_REJECT ip6table_filter ip6_tables ipv6 dm_mirror dm_region_hash dm_log parport kvm_intel kvm uinput floppy tpm_infineon wmi sg serio_raw iTCO_wdt iTCO_vendor_support tg3 snd_hda_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer snd soundcore snd_page_alloc i7core_edac edac_core nouveau
      Modules linked in: tda8290(U) tea5767(U) tuner(U) ir_lirc_codec(U) lirc_dev(U) ir_sony_decoder(U) ir_jvc_decoder(U) ir_rc6_decoder(U) ir_rc5_decoder(U) saa7134(+)(U) v4l2_common(U) ir_nec_decoder(U) videodev(U) v4l2_compat_ioctl32(U) rc_core(U) videobuf_dma_sg(U) videobuf_core(U) tveeprom(U) ebtable_nat ebtables xt_CHECKSUM iptable_mangle ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack ipt_REJECT bridge stp llc autofs4 sunrpc cpufreq_ondemand acpi_cpufreq freq_table xt_physdev iptable_filter ip_tables ip6t_REJECT ip6table_filter ip6_tables ipv6 dm_mirror dm_region_hash dm_log parport kvm_intel kvm uinput floppy tpm_infineon wmi sg serio_raw iTCO_wdt iTCO_vendor_support tg3 snd_hda_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer snd soundcore snd_page_alloc i7core_edac edac_core nouveau ttm drm_kms_helper drm i2c_algo_bit video output i2c_core ext3 jbd mbcache firewire_ohci firewire_core crc_itu_t sr_mod cdrom sd_mod crc_t10dif ahci dm_mod [last unloaded: microcode]
      Pid: 9497, comm: modprobe Not tainted 2.6.32-72.el6.x86_64 #1 HP Z400 Workstation
      RIP: 0010:[<ffffffffa048c267>]  [<ffffffffa048c267>] set_audio+0x47/0x170 [tda8290]
      RSP: 0018:ffff88010ba01b28  EFLAGS: 00010206
      RAX: 00000000000000ff RBX: ffff880119522800 RCX: 0000000000000002
      RDX: 0000000000003be0 RSI: ffff88010ba01bb8 RDI: 0000000000000000
      RBP: ffff88010ba01b28 R08: 0000000000000002 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
      R13: ffff88010ba01bb8 R14: 0000000000001900 R15: 0000000000001900
      FS:  00007f4b96b3d700(0000) GS:ffff880028200000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 0000000000000020 CR3: 000000011866c000 CR4: 00000000000026f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process modprobe (pid: 9497, threadinfo ffff88010ba00000, task ffff880100708a70)
      Stack:
       ffff88010ba01b98 ffffffffa048c95b ffff88010ba01b78 0000000000000060
      <0> 0000000000000000 0000000e00000000 000000000000001d ffffffffa03ec838
      <0> ffff88010abac240 ffff880119522800 ffff880119522800 ffff880119522bc0
      Call Trace:
       [<ffffffffa048c95b>] tda8295_set_params+0x3b/0x210 [tda8290]
       [<ffffffffa03ec838>] ? v4l2_i2c_new_subdev_cfg+0x88/0xc0 [v4l2_common]
       [<ffffffffa0484418>] set_freq+0x128/0x2f0 [tuner]
       [<ffffffffa0486464>] tuner_s_std+0xc4/0x740 [tuner]
       [<ffffffffa04b9ae6>] saa7134_set_tvnorm_hw+0x2d6/0x3d0 [saa7134]
       [<ffffffffa04ba455>] set_tvnorm+0xd5/0x100 [saa7134]
       [<ffffffffa04bc9fd>] saa7134_video_init2+0x1d/0x50 [saa7134]
       [<ffffffffa04bf57e>] saa7134_initdev+0x6e1/0xb1d [saa7134]
       [<ffffffff8125afea>] ? kobject_get+0x1a/0x30
       [<ffffffff812765f7>] local_pci_probe+0x17/0x20
       [<ffffffff812777e1>] pci_device_probe+0x101/0x120
       [<ffffffff8132ec72>] ? driver_sysfs_add+0x62/0x90
       [<ffffffff8132ee10>] driver_probe_device+0xa0/0x2a0
       [<ffffffff8132f0bb>] __driver_attach+0xab/0xb0
       [<ffffffff8132f010>] ? __driver_attach+0x0/0xb0
       [<ffffffff8132e074>] bus_for_each_dev+0x64/0x90
       [<ffffffff8132ebae>] driver_attach+0x1e/0x20
       [<ffffffff8132e4b0>] bus_add_driver+0x200/0x300
       [<ffffffff8132f3e6>] driver_register+0x76/0x140
       [<ffffffff814c7c43>] ? printk+0x41/0x46
       [<ffffffff81277a46>] __pci_register_driver+0x56/0xd0
       [<ffffffffa04de000>] ? saa7134_init+0x0/0x4f [saa7134]
       [<ffffffffa04de04d>] saa7134_init+0x4d/0x4f [saa7134]
       [<ffffffff8100a04c>] do_one_initcall+0x3c/0x1d0
       [<ffffffff810af5ef>] sys_init_module+0xdf/0x250
       [<ffffffff81013172>] system_call_fastpath+0x16/0x1b
      Code: 20 01 49 c7 c0 c9 ec 48 a0 83 7e 04 01 74 2d 8b 0d 3f 2f 00 00 85 c9 0f 85 d7 00 00 00 c9 c3 0f 1f 44 00 00 a9 03 00 01 00 74 61 <c6> 47 20 02 83 7e 04 01 49 c7 c0 cc ec 48 a0 75 d3 0f b6 47 22
      RIP  [<ffffffffa048c267>] set_audio+0x47/0x170 [tda8290]
       RSP <ffff88010ba01b28>
      CR2: 0000000000000020
      
      This happens because some I2C callbacks actually depend on having the
      driver entirely initialized. To avoid this OOPS, just clean the I2C
      callbacks, as if no device were detected.
      
      Cc: Michael Krufky <mkrufky@kernellabs.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      47ab285a
    • Mauro Carvalho Chehab's avatar
      [media] tda8290: Make all read operations atomic · 567aba0b
      Mauro Carvalho Chehab authored
      Read operations should be preceeded by a write operation. However,
      nothing prevents that an I2C operation could happen between the two
      transactions.
      
      To avoid that problem, use an unique I2C transfer for both parts of
      the I2C transaction.
      
      Cc: Michael Krufky <mkrufky@kernellabs.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      567aba0b
  7. 30 Mar, 2010 1 commit
    • Tejun Heo's avatar
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking... · 5a0e3ad6
      Tejun Heo authored
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking 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: default avatarTejun Heo <tj@kernel.org>
      Guess-its-ok-by: default avatarChristoph Lameter <cl@linux-foundation.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
      5a0e3ad6
  8. 17 Jan, 2010 2 commits
  9. 05 Dec, 2009 1 commit
  10. 30 Mar, 2009 3 commits
  11. 07 Jan, 2009 2 commits
  12. 30 Dec, 2008 1 commit
  13. 12 Oct, 2008 1 commit
  14. 29 Apr, 2008 2 commits
  15. 24 Apr, 2008 3 commits
  16. 25 Jan, 2008 13 commits