1. 09 4月, 2012 2 次提交
    • H
      [media] dvb_frontend: fix compiler warning · c065f5b4
      Hans Petter Selasky 提交于
      has_get_frontend() should return a boolean, not a pointer.
      Signed-off-by: NHans Petter Selasky <hselasky@c2i.net>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      c065f5b4
    • C
      [media] dvb_frontend: regression fix: userspace ABI broken for xine · 556a0442
      Chris Rankin 提交于
      The commit e399ce77 has broken the DVB ABI for xine:
      
      The problem is that xine is expecting every event after a successful
      FE_SET_FRONTEND ioctl to have a non-zero frequency parameter, regardless
      of whether the tuning process has LOCKed yet. What used to happen is
      that the events inherited the initial tuning parameters from the
      FE_SET_FRONTEND call. However, the fepriv->parameters_out struct is now
      not initialised until the status contains the FE_HAS_LOCK bit.
      
      You might argue that this behaviour is intentional, except that if an
      application other than xine uses the DVB adapter and manages to set the
      parameters_out.frequency field to something other than zero, then xine
      no longer has any problems until either the adapter is replugged or the
      kernel modules reloaded. This can only mean that the
      fepriv->parameters_out struct still contains the (stale) tuning
      information from the previous application.
      Signed-off-by: NChris Rankin <rankincj@yahoo.com>
      Cc: stable@kernel.org # for kernel version 3.3
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      556a0442
  2. 15 2月, 2012 1 次提交
    • S
      [media] dvb-core: fix DVBFE_ALGO_HW retune bug · 45145b67
      Simon Arlott 提交于
      Commit 7e072221 breaks DVBFE_ALGO_HW tuning after a retune is requested,
      which causes bad tuning on my TBS 6920.
      
      [    0.769091] pci 0000:06:00.0: [14f1:8852] type 0 class 0x000400
      [   19.733530] CORE cx23885[0]: subsystem: 6920:8888, board: TurboSight TBS 6920 [card=14,autodetected]
      [  762.824912] cx24116_load_firmware: FW version 1.23.86.1
      
      7e072221 [media] dvb-core: Don't pass DVBv3 parameters on tune() fops
      
      Although re_tune is set to true when FESTATE_RETUNE occurs, it is never
      set back to false which the old code used to do when !FESTATE_RETUNE.
      
      This patch sets re_tune to false if !(state & FESTATE_RETUNE).
      
      $ szap-s2 -a 2 "Channel 5"
      reading channels from file '/home/simon/.szap/channels.conf'
      zapping to 247 'Channel 5':
      delivery DVB-S, modulation QPSK
      sat 0, frequency 10964 MHz H, symbolrate 22000000, coderate 5/6, rolloff 0.35
      vpid 0x092a, apid 0x092b, sid 0x092d
      using '/dev/dvb/adapter2/frontend0' and '/dev/dvb/adapter2/demux0'
      status 1f | signal cf40 | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr eccd | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr eccd | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr eb33 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr eccd | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr eccd | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr eccd | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr eccd | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cf40 | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cec0 | snr eccd | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      status 1f | signal cec0 | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
      Signed-off-by: NSimon Arlott <simon@fire.lp0.eu>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      45145b67
  3. 18 1月, 2012 2 次提交
    • P
      [media] DVB-CORE: remove superfluous DTV_CMDs · bad321f1
      Patrick Boettcher 提交于
      This small patch removes superfluous DTV_CMDs from dvb_frontend.c which were added in the initially when ISBD-T support was added.
      They were there unnoticed even though compilers should have warning about those duplicates. Finally they did and now we can remove them.
      
      Thanks to Dan Carpenter <dan.carpenter@oracle.com> for pointing that out.
      Signed-off-by: NPatrick Boettcher <pboettcher@kernellabs.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      bad321f1
    • M
      [media] dvb_frontend: Don't call get_frontend() if idle · 51dcb19a
      Mauro Carvalho Chehab 提交于
      If the frontend is in idle state, don't call get_frontend.
      
      Calling get_frontend() when the device is not tuned may
      result in wrong parameters to be returned to the
      userspace.
      
      I was tempted to not call get_frontend() at all, except
      inside the dvb frontend thread, but this won't work for
      all cases. The ISDB-T specs (ABNT NBR 15601 and ARIB
      STD-B31) allow the broadcaster to dynamically change the
      channel specs at runtime. That means that an ISDB-T optimized
      application may want/need to monitor the TMCC tables, decoded
      at the frontends via get_frontend call.
      
      So, let's do the simpler change here.
      
      Eventually, the logic could be changed to work only if
      the device is tuned and has lock, but, even so, the
      lock is also standard-dependent. For ISDB-T, the right
      lock to wait is that the demod has TMCC lock. So, drivers
      may need to implement some logic to detect if the get_frontend
      info was retrieved or not.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      51dcb19a
  4. 15 1月, 2012 2 次提交
  5. 11 1月, 2012 1 次提交
  6. 07 1月, 2012 1 次提交
    • M
      [media] dvb: remove bogus modulation check · b247377a
      Mauro Carvalho Chehab 提交于
      This code is wrong as I should have coded it as SYS_DVBC, instead of
      SYS_DVBS & friends. Anyway, this check has other problems
      
      1) it does some "magic" by assuming that all QAM modulations are below
        QAM_AUTO;
      
      2) it checks modulation parameters only for one delivery system.
         Or the core should check invalid parameters for all delivery
         systems, or it should let the frontend drivers do it;
      
      3) frontend drivers should already be checking for invalid parameters
         (most of them do it, anyway);
      
      4) not all modulations are mapped at fe->ops.info.caps, so it is not
         even possible to check for the valid modulations inside the core
         for some delivery systems;
      
      5) The core check is incomplete anyway: it only checks for a few
         parameters. If moved into the core other parameters like bandwidth
         and fec should also be checked;
      
      6) 2nd gen DVB-C uses OFDM. So, that test would fail for it.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      b247377a
  7. 06 1月, 2012 3 次提交
  8. 05 1月, 2012 7 次提交
    • M
      [media] dvb: get rid of fepriv->parameters_in · e399ce77
      Mauro Carvalho Chehab 提交于
      This var were used during DVBv3 times, in order to keep a copy
      of the parameters used by the events. This is not needed anymore,
      as the parameters are now dynamically generated from the DVBv5
      structure.
      
      So, just get rid of it. That means that a DVBv5 pure call won't
      use anymore any DVBv3 parameters.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      e399ce77
    • M
      [media] dvb-core: Fix ISDB-T defaults · a520ca97
      Mauro Carvalho Chehab 提交于
      using -1 for ISDB-T parameters do the wrong thing. Fix it.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      a520ca97
    • M
      [media] dvb_frontend: Fix DVBv3 emulation · 04be0f76
      Mauro Carvalho Chehab 提交于
      For frontends with ISDB-T, DVB-T2, CMDBTH, etc, some code is
      needed, in order to provide emulation. Add such code, and check
      if the desired delivery system is supported by the frontend.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      04be0f76
    • M
      [media] dvb_frontend: Don't use ops->info.type anymore · 5bfaadde
      Mauro Carvalho Chehab 提交于
      Get rid of using ops->info.type defined on DVB drivers,
      as it doesn't apply anymore.
      
      Currently, one driver (cxd2820) supports more than one different
      info.type, as it can be used for DVB-T/T2 and DVB-C. There are more
      drivers like that to come. So, the same frontend will have
      
      different DVBv3 types, depending on the current delivery system.
      
      This breaks the existing logic at dvb_frontend, that assumes that
      just one delivery system DVBv3 type is supported by all delsys.
      
      In order to easy the DVBv3->DVBv5 conversion, an ancillary function
      that maps DVBv3 delivery systems into DVBv5 were added.
      
      Also, on all places, except for the event logic, the DVBv5 cache
      will be used to check parameters, instead of the DVBv5 copy.
      
      This patch simplifies the cache sync logic, and warrants that the
      cache will be in a clear state at DVB frontend register. This way,
      ops->info.type will be filled to reflect the first delivery system,
      providing backward compatibility support for it.
      
      For example, in the cases like cxd2820, where the delivery systems
      are defined as:
              .delsys = { SYS_DVBT, SYS_DVBT2, SYS_DVBC_ANNEX_A },
      
      A pure DVBv3 will be able to use both DVB-T and DVB-T2, as, at
      DVB cache clear, the ops->info.type will be equal to FE_OFDM.
      
      However, DVB-C won't be visible. A quick workaround would be to
      do a DVBv5 call to set the delivery system to SYS_DVBC_ANNEX_A.
      
      After such call, ops->info.type will be equal to FE_QAM, and a
      DVBv3 application will see the frontend as a DVB-C one.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      5bfaadde
    • M
      [media] dvb: move dvb_set_frontend logic into a separate routine · 9682cea2
      Mauro Carvalho Chehab 提交于
      This change is there in order to prepare the code to avoid calling
       dvb_frontend_ioctl_legacy() from FE_SET_PROPERTY.
      
      A call to dvb_frontend_ioctl_legacy() would require to update the
      DVBv3 cache without need, mangling calls for newer delivery system
      without any reason.
      
      No functional changes here.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      9682cea2
    • M
      [media] dvb_frontend: Handle all possible DVBv3 values for bandwidth · 9a27e6a0
      Mauro Carvalho Chehab 提交于
      Due to DVB-T2, several new possible values for bandwidth were added.
      As the DVBv3 struct were updated to handle them, the core needs to
      handle all of them, as a DVBv3 application might try to use it.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      9a27e6a0
    • M
      [media] dvb: Initialize all cache values · 26c924fe
      Mauro Carvalho Chehab 提交于
      By default, initialize the frontend current delivery system with
      the first one. This warrants that a DVBv3 application will be able
      to tune to it, after the removal of ops->init.type filling at
      the drivers.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      26c924fe
  9. 31 12月, 2011 15 次提交
  10. 20 12月, 2011 1 次提交
  11. 13 12月, 2011 1 次提交
  12. 11 11月, 2011 1 次提交
    • M
      [media] dvb: Allow select between DVB-C Annex A and Annex C · 39ce61a8
      Mauro Carvalho Chehab 提交于
      DVB-C, as defined by ITU-T J.83 has 3 annexes. The differences between
      Annex A and Annex C is that Annex C uses a subset of the modulation
      types, and uses a different rolloff factor. A different rolloff means
      that the bandwidth required is slicely different, and may affect the
      saw filter configuration at the tuners. Also, some demods have different
      configurations, depending on using Annex A or Annex C.
      
      So, allow userspace to specify it, by changing the rolloff factor.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      39ce61a8
  13. 07 9月, 2011 1 次提交
  14. 04 9月, 2011 2 次提交