1. 21 5月, 2013 1 次提交
  2. 28 4月, 2013 1 次提交
    • M
      [media] em28xx: fix oops at em28xx_dvb_bus_ctrl() · a3b60209
      Mauro Carvalho Chehab 提交于
      em28xx is oopsing with some DVB devices:
      
      [10856.061884] general protection fault: 0000 [#1] SMP
      [10856.067041] Modules linked in: rc_hauppauge em28xx_rc xc5000 drxk em28xx_dvb dvb_core em28xx videobuf2_vmalloc videobuf2_memops videobuf2_core rc_pixelview_new tuner_xc2028 tuner cx8800 cx88xx tveeprom btcx_risc videobuf_dma_sg videobuf_core rc_core v4l2_common videodev ebtable_nat ebtables nf_conntrack_ipv4 nf_defrag_ipv4 xt_CHECKSUM be2iscsi iscsi_boot_sysfs iptable_mangle bnx2i cnic uio cxgb4i cxgb4 tun bridge cxgb3i cxgb3 stp ip6t_REJECT mdio libcxgbi nf_conntrack_ipv6 llc nf_defrag_ipv6 ib_iser rdma_cm ib_addr xt_conntrack iw_cm ib_cm ib_sa nf_conntrack ib_mad ib_core bnep bluetooth iscsi_tcp libiscsi_tcp ip6table_filter libiscsi ip6_tables scsi_transport_iscsi xfs libcrc32c snd_hda_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep snd_seq snd_seq_device snd_pcm tg3 snd_page_alloc snd_timer
      [10856.139176]  snd ptp iTCO_wdt soundcore pps_core iTCO_vendor_support lpc_ich mfd_core coretemp nfsd hp_wmi crc32c_intel microcode serio_raw rfkill sparse_keymap nfs_acl lockd sunrpc kvm_intel kvm uinput binfmt_misc firewire_ohci nouveau mxm_wmi i2c_algo_bit drm_kms_helper firewire_core crc_itu_t ttm drm i2c_core wmi [last unloaded: dib0070]
      [10856.168969] CPU 1
      [10856.170799] Pid: 13606, comm: dvbv5-zap Not tainted 3.9.0-rc5+ #26 Hewlett-Packard HP Z400 Workstation/0AE4h
      [10856.181187] RIP: 0010:[<ffffffffa0459e47>]  [<ffffffffa0459e47>] em28xx_write_regs_req+0x37/0x1c0 [em28xx]
      [10856.191028] RSP: 0018:ffff880118401a58  EFLAGS: 00010282
      [10856.196533] RAX: 00020000012d0000 RBX: ffff88010804aec8 RCX: ffff880118401b14
      [10856.203852] RDX: 0000000000000048 RSI: 0000000000000000 RDI: ffff88010804aec8
      [10856.211174] RBP: ffff880118401ac8 R08: 0000000000000001 R09: 0000000000000000
      [10856.218496] R10: 0000000000000000 R11: 0000000000000006 R12: 0000000000000048
      [10856.226026] R13: ffff880118401b14 R14: ffff88011752b258 R15: ffff88011752b258
      [10856.233352] FS:  00007f26636d2740(0000) GS:ffff88011fc20000(0000) knlGS:0000000000000000
      [10856.241626] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [10856.247565] CR2: 00007f2663716e20 CR3: 00000000c7eb1000 CR4: 00000000000007e0
      [10856.254889] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [10856.262215] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [10856.269542] Process dvbv5-zap (pid: 13606, threadinfo ffff880118400000, task ffff8800cd625d40)
      [10856.278340] Stack:
      [10856.280564]  ffff88011ffe8de8 0000000000000002 0000000000000000 ffff88011ffe9b00
      [10856.288191]  ffff880118401b14 00ff88011ffe9b08 ffff880100000048 ffffffff8112a52a
      [10856.295893]  0000000000000001 ffff88010804aec8 0000000000000048 ffff880118401b14
      [10856.303521] Call Trace:
      [10856.306182]  [<ffffffff8112a52a>] ? __alloc_pages_nodemask+0x15a/0x960
      [10856.312912]  [<ffffffffa045a002>] em28xx_write_regs+0x32/0xa0 [em28xx]
      [10856.319638]  [<ffffffffa045a221>] em28xx_write_reg+0x21/0x30 [em28xx]
      [10856.326279]  [<ffffffffa045a2cc>] em28xx_gpio_set+0x9c/0x100 [em28xx]
      [10856.332919]  [<ffffffffa045a3ac>] em28xx_set_mode+0x7c/0x80 [em28xx]
      [10856.339472]  [<ffffffffa03ef032>] em28xx_dvb_bus_ctrl+0x32/0x40 [em28xx_dvb]
      
      This is caused by commit c7a45e5b,
      that added support for two I2C buses. A partial fix was applied
      at 3de09fbb, but it doesn't cover
      all cases, as the DVB core fills fe->dvb->priv with adapter->priv.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      a3b60209
  3. 15 4月, 2013 1 次提交
  4. 20 3月, 2013 1 次提交
  5. 19 3月, 2013 1 次提交
  6. 05 3月, 2013 1 次提交
    • M
      [media] em28xx-dvb: Don't put device in suspend mode at feed stop · 385cd33c
      Mauro Carvalho Chehab 提交于
      Putting em28xx in suspend mode when a feed stops is just plain
      wrong. Every time a new PES filter is changed, the DVB demux
      code will stop the current feed, and then start a new one.
      If are there any code that switches off the frontend, via
      some GPIO setting, this would make the DVB fail.
      This condition was actually trigged with one device, during
      DVB scan, as, during scan, it is common that userspace apps
      to change the filter several times, in order to get all
      tables.
      Also, this is not needed at all, since the em28xx code already
      hooks into ops.ts_bus_ctrl(). This warrants that em28xx can
      check there if DVB frontend is in usage or not. The code there
      already puts the device on suspend mode, if the DVB frontend
      is not used (closed).
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      385cd33c
  7. 05 1月, 2013 2 次提交
  8. 23 12月, 2012 6 次提交
  9. 22 12月, 2012 1 次提交
  10. 25 10月, 2012 1 次提交
  11. 07 10月, 2012 1 次提交
  12. 03 10月, 2012 1 次提交
  13. 02 10月, 2012 3 次提交
  14. 28 9月, 2012 1 次提交
  15. 16 8月, 2012 1 次提交
  16. 07 7月, 2012 1 次提交
    • M
      [media] drxk: Make the QAM demodulator command parameters configurable · 9e23f50a
      Martin Blumenstingl 提交于
      Currently there are two different implementations (in the firmware) for
      the QAM demodulator command: one takes 4 and the other takes 2
      parameters. The driver shows an error in dmesg When using the
      4-parameter command with firmware that implements the 2-parameter
      command. Unfortunately this happens every time when chaning the
      frequency (on DVB-C).
      
      This patch simply makes configurable, how many command parameters will
      be used. All existing drxk_config instances using the "drxk_a3.mc" were
      updated because this firmware is the only loadable firmware where the
      QAM demodulator command takes 4 parameters. Some firmwares in the ROM
      might also use it. The drxk instances in the em28xx-dvb driver were also
      updated to silence the warnings.
      
      If no qam_demod_parameter_count is given in the drxk_config struct, then
      the correct number of parameters will be auto-detected.
      
      [mchehab@redhat.com: Fix a small CodingStyle issue at one comment]
      Signed-off-by: NMartin Blumenstingl <martin.blumenstingl@googlemail.com>
      Tested-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      9e23f50a
  17. 22 6月, 2012 1 次提交
  18. 21 6月, 2012 1 次提交
  19. 21 5月, 2012 1 次提交
  20. 20 5月, 2012 1 次提交
  21. 15 5月, 2012 1 次提交
    • G
      [media] em28xx-dvb: enable LNA for cxd2820r in DVB-T mode · 38f0fe23
      Gianluca Gennari 提交于
      Enable the LNA amplifier also for DVB-T (like for DVB-T2 and DVB-C);
      this greatly improves reception of weak signals without affecting the reception
      of the strong ones.
      
      Experimental data (collected with the mipsel STB) on the weakest frequencies
      available in my area:
      
      LNA OFF:
      
      MUX          level   BER     picture
      
      RAI mux 4    72%     32000   corrupted
      TIMB 2       75%     14      OK
      TVA Vicenza  68%     32000   corrupted
      RAI mux 2    78%     14      OK
      
      LNA ON:
      
      MUX          level   BER     picture
      
      RAI mux 4    73%     1500    OK
      TIMB 2       76%     0       OK
      TVA Vicenza  69%     0       OK
      RAI mux 2    79%     0       OK
      
      Moreover, with LNA enabled, the PCTV 290e was able to pick up 2 new frequencies
      matching the integrated tuner of my Panasonic G20 TV, which is really good.
      Signed-off-by: NGianluca Gennari <gennarone@gmail.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      38f0fe23
  22. 11 4月, 2012 1 次提交
  23. 20 3月, 2012 4 次提交
  24. 08 3月, 2012 1 次提交
    • G
      [media] em28xx: pre-allocate DVB isoc transfer buffers · 86d38d1e
      Gianluca Gennari 提交于
      On MIPS/ARM set-top-boxes, as well as old x86 PCs, memory allocation failures
      in the em28xx driver are common, due to memory fragmentation over time, that
      makes impossible to allocate large chunks of coherent memory.
      A typical system with 256/512 MB of RAM fails after just 1 day of uptime (see
      the old thread for detailed reports and crashlogs).
      
      In fact, the em28xx driver allocates memory for USB isoc transfers at runtime,
      as opposite to the dvb-usb drivers that allocates the USB buffers when the
      device is initialized, and frees them when the device is disconnected.
      
      Moreover, in digital mode the USB isoc transfer buffers are freed, allocated
      and cleared every time the user selects a new channel, wasting time and
      resources.
      
      This patch solves both problems by allocating DVB isoc transfer buffers in
      em28xx_usb_probe(), and freeing them in em28xx_usb_disconnect().
      In fact, the buffers size and number depend only on the max USB packet size
      that is parsed from the USB descriptors in em28xx_usb_probe(), so it can
      never change for a given device.
      
      This approach makes no sense in analog mode (as the buffer size depends on
      the alternate mode selected at runtime), the patch creates two separate sets
      of buffers for digital and analog modes.
      
      For digital-only devices, USB buffers are created when the device is probed
      and freed when the device is disconnected.
      For analog-only devices, nothing changes: isoc buffers are created at runtime.
      For hybrid devices, two sets of buffers are maintained: the digital-mode
      buffers are created when the device is probed, and freed when the device is
      disconnected; analog-mode buffers are created/destroyed at runtime as before.
      So, in analog mode, digital and analog buffers coexists at the same time: this
      can be justified by the fact that digital mode is by far more commonly used
      nowadays, so it makes sense to optimize the driver for this use case scenario.
      
      The patch has been tested in the last few days on a x86 PC and a MIPS
      set-top-box, with the PCTV 290e (digital only) and the Terratec Hybrid XS
      (hybrid device). With the latter, I switched several times between analog and
      digital mode (Kaffeine/TvTime) with no issue at all.
      I unplugged/plugged the devices several times with no problem.
      Also, after over 3 days of normal usage in the MPIS set-top-box, the PCTV 290e
      was still up and running.
      Signed-off-by: NGianluca Gennari <gennarone@gmail.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      86d38d1e
  25. 24 1月, 2012 1 次提交
  26. 06 1月, 2012 2 次提交
  27. 31 12月, 2011 2 次提交