1. 10 Jun, 2010 2 commits
    • Clemens Ladisch's avatar
      firewire: core: retry on local errors in bus manager election · bda3b8a1
      Clemens Ladisch authored
      When the candidate bus manager fails to do the lock request with which
      it tries to become bus manager, it assumes that the current IRM is not
      actually IRM capable and forces itself to become root.  However, if that
      lock request failed because the local node itself was not able to send
      it, then we cannot blame the current IRM and should not steal its
      rootness.
      
      In this case, RCODE_SEND_ERROR is likely to indicate a temporary error
      condition such as exhausted tlabels or low memory, so we better try
      again later.
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      bda3b8a1
    • Clemens Ladisch's avatar
      firewire: ohci: speed up PHY register accesses · 153e3979
      Clemens Ladisch authored
      Most PHY chips, when idle, can complete a register access in the time
      needed for two or three PCI read transactions; bigger delays occur only
      when data is currently being moved over the link/PHY interface.  So if
      we busy-wait a few times when waiting for the register access to finish,
      it is likely that we can finish without having to sleep.
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      153e3979
  2. 09 Jun, 2010 4 commits
  3. 31 May, 2010 1 commit
  4. 25 May, 2010 1 commit
    • Stefan Richter's avatar
      ieee1394: schedule for removal · 3014420b
      Stefan Richter authored
      All application domains that are supported by the old ieee1394 driver
      stack are supported by the newer firewire driver stack too.  There is
      now good and extensive experience with the newer stack from deployment
      in Fedora since F7 as well as by enthusiast users of other
      distributions.
      
      The new drivers have consequently been recommended as the default ones
      since 2.6.33, in order to fix some severe usability problems of FireWire
      on Linux due to limitations of the old stack.  It is now high time to
      announce when the obsolete drivers will be removed.
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      Acked-by: default avatarJarod Wilson <jarod@redhat.com>
      3014420b
  5. 18 May, 2010 2 commits
  6. 19 Apr, 2010 2 commits
    • Clemens Ladisch's avatar
      firewire: core: make transaction label allocation more robust · 7906054f
      Clemens Ladisch authored
      If one request is so long-lived that it does not get a response before
      the following 63 requests, its bit in tlabel_mask is still set when the
      next request tries to allocate a transaction label for that number.  In
      this state, while the first request is not completed or timed out, no
      new requests can be submitted.
      
      To fix this, skip over any label still in use, and do not error out
      unless we have entirely run out of labels.
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      7906054f
    • Stefan Richter's avatar
      firewire: core: clean up config ROM related defined constants · edd5bdaf
      Stefan Richter authored
      Clemens Ladisch pointed out that
        - BIB_IMC is not named like the field is called in the standard,
        - readers of the code may get worried about the magic 0x0c0083c0,
        - a CSR_NODE_CAPABILITIES key is there in the header but not put to
          good use.
      
      So let's rename BIB_IMC, add a defined constant for Node_Capabilities
      and a comment which reassures people that somebody thought about it and
      they don't have to (or if they still do, tell them where they have to
      look for confirmation), and prune our incomplete and arbitrary set of
      defined constants of CSR key IDs.  And there is a nother magic number,
      that of Bus_Information_Block.Bus_Name, to be defined and commented.
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      edd5bdaf
  7. 10 Apr, 2010 13 commits
  8. 24 Mar, 2010 2 commits
    • Stefan Richter's avatar
      firewire: core: align driver match with modalias · fe43d6d9
      Stefan Richter authored
      The driver match strategy was:
        - Match vendor/model/specifier/version of the unit directory.
        - If that was a miss, match vendor from the root directory and
          model/specifier/version of the unit directory.
      
      This was inconsistent with how the modalias string was constructed
      until recently (take vendor/model from root directory and specifier/
      version from unit directory).  It was also inconsistent with how it is
      done since the parent commit:
        - Use vendor/model/specifier/version of the unit directory if possible,
        - fall back to one or more of vendor/model/specifier/version from the
          root directory depending on which ones are not present at the unit
          directory.
      
      Fix this inconsistency by sharing the ROM scanner function between
      modalias printer function and driver match function.
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      fe43d6d9
    • Stefan Richter's avatar
      firewire: core: fix Model_ID in modalias · 5ae73518
      Stefan Richter authored
      The modalias string of devices that represent units on a FireWire node
      did not show Module_ID entries within unit directories.  This was
      because firewire-core searched only the root directory of the
      configuration ROM for a Model_ID entry.
      
      We now search first the root directory, then the unit directory.  IOW
      honor a unit directory's Model_ID if present, otherwise fall back to the
      root directory's model ID (if present).
      
      Furthermore, apply the same change to Vendor_ID.  This had the same
      issue but it was less apparent because most devices provide Vendor_ID
      only in the root directory.
      
      And finally, also use this strategy for the remaining two IDs in the
      modalias, Specifier_ID and Version.  It does not actually make sense to
      look for them elsewhere than in the unit directory because they are
      mandatory there.  However, a uniform search order simplifies the
      implementation and has no adverse affect in practice.
      
      Side notes:
        - The older counterpart of this, nodemgr.c of ieee1394, looked for
          Vendor_ID first in the root directory, then in the unit directory,
          and for Model_ID only in the unit directory.
        - There is a single mainline driver which requires Vendor_ID and
          Model_ID --- the firedtv driver.  This one worked because FireDTVs
          provide Vendor_ID in the root directory and Model_ID identically in
          root directory and unit directory.
        - Apart from firedtv, there are currently no drivers known to me
          (including userspace drivers) that look at the Vendor_ID or Model_ID
          of the modalias.
      Reported-by: default avatarMaciej Żenczykowski <zenczykowski@gmail.com>
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      5ae73518
  9. 17 Mar, 2010 1 commit
    • Clemens Ladisch's avatar
      firewire: ohci: add cycle timer quirk for the TI TSB12LV22 · 8301b91b
      Clemens Ladisch authored
      Among the many entries in the TSB12LV22 errata list (TI literature
      number SLLS312) is the following:
      
        PCI Slave reads of the Cycle Timer register may occasionally get an
        incorrect value.
        Software may be able to validate value by reading the register
        multiple times rapidly and evaluating for a reasonable difference.
      
      Signed-off-by: Clemens Ladisch <clemens@ladisch.de> (untested)
      Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (added #define)
      8301b91b
  10. 15 Mar, 2010 1 commit
  11. 24 Feb, 2010 11 commits