1. 13 10月, 2007 4 次提交
    • T
      libata-pmp: extend ACPI support to cover PMP · d0df8b5d
      Tejun Heo 提交于
      Extend ata_acpi_associate_sata_port() such that it can handle PMP and
      call it when PMP is attached and detached.
      
      Build breakage when !CONFIG_ATA_ACPI was spotted and fixed by Petr
      Vandrovec.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Petr Vandrovec <petr@vandrovec.name>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      d0df8b5d
    • A
      [libata] add ACPI cable detect API · e1ddb4b6
      Alan Cox 提交于
      Combined from two Alan Cox patches:
      
      1) libata: ACPI checks for 80wire cable
      
      We can use the ACPI mode information with several drivers as a hint to
      cable type. If the ACPI mode set by the BIOS is faster than UDMA33 then
      we know the BIOS thinks there are 80wire cables. If it doesn't set such a
      mode or it has no ACPI method then we get no further information and can
      rely on existing approaches
      
      Introduce the function headers needed. Null it out for non ACPI boxes
      Signed-off-by: NAlan Cox <alan@redhat.com>
      
      2) libata: ACPI checks for 80wire cable
      
      Provide actual methods for checking if the ACPI support thinks the cable
      is 80wire, or doesn't know
      Signed-off-by: NAlan Cox <alan@redhat.com>
      
      Combined into a single changeset and
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      e1ddb4b6
    • T
      libata-link: implement and use link/device iterators · f58229f8
      Tejun Heo 提交于
      Multiple links and different number of devices per link should be
      considered to iterate over links and devices.  This patch implements
      and uses link and device iterators - ata_port_for_each_link() and
      ata_link_for_each_dev() - and ata_link_max_devices().
      
      This change makes a lot of functions iterate over only possible
      devices instead of from dev 0 to dev ATA_MAX_DEVICES.  All such
      changes have been examined and nothing should be broken.
      
      While at it, add a separating comment before device helpers to
      distinguish them better from link helpers and others.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      f58229f8
    • T
      libata-link: introduce ata_link · 9af5c9c9
      Tejun Heo 提交于
      Introduce ata_link.  It abstracts PHY and sits between ata_port and
      ata_device.  This new level of abstraction is necessary to support
      SATA Port Multiplier, which basically adds a bunch of links (PHYs) to
      a ATA host port.  Fields related to command execution, spd_limit and
      EH are per-link and thus moved to ata_link.
      
      This patch only defines the host link.  Multiple link handling will be
      added later.  Also, a lot of ap->link derefences are added but many of
      them will be removed as each part is converted to deal directly with
      ata_link instead of ata_port.
      
      This patch introduces no behavior change.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: James Bottomley <James.Bottomley@SteelEye.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      9af5c9c9
  2. 10 7月, 2007 6 次提交
    • T
      libata-acpi: implement _GTM/_STM support · 64578a3d
      Tejun Heo 提交于
      Implement _GTM/_STM support.  acpi_gtm is added to ata_port which
      stores _GTM parameters over suspend/resume cycle.  A new hook
      ata_acpi_on_suspend() is responsible for storing _GTM parameters
      during suspend.  _STM is executed in ata_acpi_on_resume().  With this
      change, invoking _GTF is safe on IDE hierarchy and acpi_sata check
      before _GTF is removed.
      
      ata_acpi_gtm() and ata_acpi_stm() implementation is taken from Alan
      Cox's pata_acpi implementation.  ata_acpi_gtm() is fixed such that the
      result parameter is not shifted by sizeof(union acpi_object).
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      64578a3d
    • T
      libata-acpi: remove redundant checks · e5fa24df
      Tejun Heo 提交于
      Remove remaining unnecessary feature and status checks.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      e5fa24df
    • 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: miscellaneous cleanups · 69b16a5f
      Tejun Heo 提交于
      * Add missing LOCKING: and RETURNS: to function comment.
      
      * Don't conditionalize warning messages with ata_msg_probe().  Print
        directly with KERN_WARNING.
      
      * Drop duplicate debug messages.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      69b16a5f
    • T
      libata-acpi: clean up ata_acpi_exec_tfs() · 4700c4bc
      Tejun Heo 提交于
      This patch cleans up ata_acpi_exec_tfs() and its friends.
      
      * Rename taskfile_array to ata_acpi_gtf and make it __packed as it's
        used as argument to ACPI method, and use pointer to ata_acpi_gtf and
        number of taskfiles to represent _GTF taskfiles instead of a pointer
        casted into unsigned long and byte count.  This makes argument
        re-checking in do_drive_set_taskfiles() unnecessary.
      
      * Pointer in void * not in unsigned long.
      
      * Clean up do_drive_get_GTF() error handling and make
        do_drive_get_GTF() return number of taskfiles on success, 0 if _GTF
        doesn't exist or doesn't contain valid ata.  -errno on other errors.
      
      * Remove superflous check for acpi->buffer.pointer.
      
      * Update taskfile_load_raw() such that printed messages look similar
        to the messages printed by ata_eh_report().
      
      * s/do_drive_get_GTF/ata_dev_get_GTF/
        s/do_drive_set_taskfiles/ata_dev_set_taskfiles/
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      4700c4bc
    • 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
  3. 16 5月, 2007 1 次提交
    • T
      libata-acpi: add ATA_FLAG_ACPI_SATA port flag · 3cadbcc0
      Tejun Heo 提交于
      Whether a controller needs IDE or SATA ACPI hierarchy is determined by
      the programming interface of the controller not by whether the
      controller is SATA or PATA, or it supports slave device or not.  This
      patch adds ATA_FLAG_ACPI_SATA port flags which tells libata-acpi that
      the port needs SATA ACPI nodes, and sets the flag for ahci and
      sata_sil24.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      3cadbcc0
  4. 12 5月, 2007 1 次提交
  5. 10 5月, 2007 1 次提交
  6. 28 3月, 2007 1 次提交
  7. 10 3月, 2007 1 次提交
  8. 09 3月, 2007 1 次提交
  9. 25 2月, 2007 1 次提交
  10. 23 2月, 2007 1 次提交
  11. 17 2月, 2007 3 次提交