1. 20 7月, 2007 2 次提交
  2. 13 7月, 2007 2 次提交
  3. 11 7月, 2007 6 次提交
  4. 10 7月, 2007 4 次提交
    • A
      libata: Support chips with 64K PRD quirk · d26fc955
      Alan Cox 提交于
      Add ata_dumb_qc_prep and supporting logic so that a driver can just
      specify it needs to be helped in this area. 64K entries are split
      as with drivers/ide.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      d26fc955
    • T
      libata: replace ap->cbl tests with ATA_FLAG_SATA tests · a16abc0b
      Tejun Heo 提交于
      ap->cbl == ATA_CBL_SATA indicates SATA cable while ap->flags &
      ATA_FLAG_SATA indicates SATA host port.  Till now they always gave the
      same result but SATA/PATA bridge handling will change that.  Switch to
      ATA_FLAG_SATA test if we're testing for host port type.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      a16abc0b
    • T
      libata: reimplement ACPI invocation · 6746544c
      Tejun Heo 提交于
      This patch reimplements ACPI invocation such that, instead of
      exporting ACPI details to the rest of libata, ACPI event handlers -
      ata_acpi_on_resume() and ata_acpi_on_devcfg() - are used.  These two
      functions are responsible for determining whether specific ACPI method
      is used and when.
      
      On resume, _GTF is scheduled by setting ATA_DFLAG_ACPI_PENDING device
      flag.  This is done this way to avoid performing the action on wrong
      device device (device swapping while suspended).
      
      On every ata_dev_configure(), ata_acpi_on_devcfg() is called, which
      performs _SDD and _GTF.  _GTF is performed only after resuming and, if
      SATA, hardreset as the ACPI spec specifies.  As _GTF may contain
      arbitrary commands, IDENTIFY page is re-read after _GTF taskfiles are
      executed.
      
      If one of ACPI methods fails, ata_acpi_on_devcfg() retries on the
      first failure.  If it fails again on the second try, ACPI is disabled
      on the device.  Note that successful configuration clears ACPI failed
      status.
      
      With all feature checks moved to the above two functions,
      do_drive_set_taskfiles() is trivial and thus collapsed into
      ata_acpi_exec_tfs(), which is now static and converted to return the
      number of executed taskfiles to be used by ata_acpi_on_resume().  As
      failures are handled properly, ata_acpi_push_id() now returns -errno
      on errors instead of unconditional zero.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      6746544c
    • T
      libata-acpi: implement ata_acpi_associate() · fafbae87
      Tejun Heo 提交于
      * Add acpi_handle to ata_host and ata_port.  Rename
        ata_device->obj_handle to ->acpi_handle and move it above such that
        it doesn't get cleared on reconfiguration.
      
      * Replace ACPI node association which ata_acpi_associate() which is
        called once during host initialization.  Unlike the previous
        implementation, ata_acpi_associate() uses ATA_FLAG_ACPI_SATA to
        choose between IDE or SATA ACPI hierarchy and uses simple child look
        up instead of recursive walk to match the nodes.  This is way safer
        and simpler.  Please read the following message for more info.
      
        http://article.gmane.org/gmane.linux.ide/17554Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      fafbae87
  5. 03 7月, 2007 1 次提交
    • T
      libata: fix assigned IRQ reporting · 4031826b
      Tejun Heo 提交于
      host->irq and host->irq2 should be set before ata_host_register() for
      IRQ reporting to work.  Move up host->irq assignment in
      ata_host_activate() and add it to ata_pci_init_one() native path and
      pata_cs5520.
      
      The port info printing in ata_host_register() doesn't fit all the
      different controllers.  It should probably be moved out to LLDs with
      some helpers in the future.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      4031826b
  6. 02 7月, 2007 2 次提交
  7. 27 6月, 2007 4 次提交
  8. 21 6月, 2007 2 次提交
  9. 11 6月, 2007 2 次提交
    • T
      libata: limit post SRST nsect/lbal wait to ~100ms · e141d999
      Tejun Heo 提交于
      After SRST, libata used to wait for nsect/lbal to be set to 1/1 for
      the slave device.  However, some ATAPI devices don't set nsect/lbal
      after SRST and the wait itself isn't too useful as we're gonna wait
      for !BSY right after that anyway.
      
      Before reset-seq update, nsect/lbal wait failure used to be ignored
      and caused 30sec delay during detection.  After reset-seq, all
      timeouts are considered error conditions making libata fail to detect
      such ATAPI devices.
      
      This patch limits nsect/lbal wait to around 100ms.  This should give
      acceptable behavior to such ATAPI devices while not disturbing the
      heavily used code path too much.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      e141d999
    • T
      libata: force PIO on IOMEGA ZIP 250 ATAPI · 5acd50f6
      Tejun Heo 提交于
      IOMEGA ZIP 250 ATAPI claims MWDMA0 support but fails SETXFERMODE if
      asked to configure itself to MWDMA0.  Force PIO.
      
      This fixes bugzilla bug#8497.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Calvin Walton <calvin.walton@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      5acd50f6
  10. 10 6月, 2007 6 次提交
  11. 05 6月, 2007 1 次提交
    • T
      libata: always use polling SETXFER · 464cf177
      Tejun Heo 提交于
      Several people have reported LITE-ON LTR-48246S detection failed
      because SETXFER fails.  It seems the device raises IRQ too early after
      SETXFER.  This is controller independent.  The same problem has been
      reported for different controllers.
      
      So, now we have pata_via where the controller raises IRQ before it's
      ready after SETXFER and a device which does similar thing.  This patch
      makes libata always execute SETXFER via polling.  As this only happens
      during EH, performance impact is nil.  Setting ATA_TFLAG_POLLING is
      also moved from issue hot path to ata_dev_set_xfermode() - the only
      place where SETXFER can be issued.
      
      Note that ATA_TFLAG_POLLING applies only to drivers which implement
      SFF TF interface and use libata HSM.  More advanced controllers ignore
      the flag.  This doesn't matter for this fix as SFF TF controllers are
      the problematic ones.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      464cf177
  12. 28 5月, 2007 1 次提交
  13. 25 5月, 2007 2 次提交
  14. 22 5月, 2007 4 次提交
  15. 18 5月, 2007 1 次提交
    • T
      libata: remove libata.spindown_compat · d9aca22c
      Tejun Heo 提交于
      With STANDBYDOWN tracking added, libata.spindown_compat isn't
      necessary anymore.  If userspace shutdown(8) issues STANDBYNOW, libata
      warns.  If userspace shutdown(8) doesn't issue STANDBYNOW, libata does
      the right thing.  Userspace can tell whether kernel supports spindown
      by testing whether sysfs node manage_start_stop exists as before.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      d9aca22c