tree 1679862bdfa0e129f4d0feb18b02e7692db3afa3
parent 5a2cec83a9bb1b4295aa8ab728fcb8ca1811a33c
author Hannes Reinecke <[EMAIL PROTECTED]> Wed, 29 Jun 2005 07:30:38 -0700
committer Jeff Garzik <[EMAIL PROTECTED]> Thu, 08 Sep 2005 13:57:23 -0400

[PATCH] scan all enabled ports on ata_piix

ICH6 spec defines the PORT_ bits as:

PORT_ENABLED (R/W):

  0 = Disabled.  The port is in the off state and cannot detect any
  devices.

  1 = Enabled.  The port can transition between the on, partial, and
  slumber states and can detect devices.

PORT_PRESENT  (R/O)

  The status of this bit may change at any time.  This bit is cleared
  when the port is disabled via PORT_ENABLED.  This bit is not cleared upon
  surprise removal of a device.

So from a textual view it is not necessary that PORT_PRESENT _must_ be set,
especially if a device detection has to be done anyway.  And, in fact, this
is the view that ACER has been taken with its new Laptops (e.g.  Travelmate
4150).

And the definition of PORT_ENABLED / PORT_PRESENT is mixed up, btw.

Signed-off-by: Hannes Reinecke <[EMAIL PROTECTED]>
Signed-off-by: Jens Axboe <[EMAIL PROTECTED]>
Cc: Jeff Garzik <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>

 drivers/scsi/ata_piix.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/ata_piix.c b/drivers/scsi/ata_piix.c
--- a/drivers/scsi/ata_piix.c
+++ b/drivers/scsi/ata_piix.c
@@ -68,8 +68,8 @@ enum {
        PIIX_COMB_PATA_P0       = (1 << 1),
        PIIX_COMB               = (1 << 2), /* combined mode enabled? */
 
-       PIIX_PORT_PRESENT       = (1 << 0),
-       PIIX_PORT_ENABLED       = (1 << 4),
+       PIIX_PORT_ENABLED       = (1 << 0),
+       PIIX_PORT_PRESENT       = (1 << 4),
 
        PIIX_80C_PRI            = (1 << 5) | (1 << 4),
        PIIX_80C_SEC            = (1 << 7) | (1 << 6),
@@ -377,7 +377,9 @@ static void piix_pata_phy_reset(struct a
  *     None (inherited from caller).
  *
  *     RETURNS:
- *     Non-zero if device detected, zero otherwise.
+ *     Non-zero if port is enabled, it may or may not have a device
+ *     attached in that case (PRESENT bit would only be set if BIOS probe
+ *     was done). Zero is returned if port is disabled.
  */
 static int piix_sata_probe (struct ata_port *ap)
 {
@@ -401,7 +403,7 @@ static int piix_sata_probe (struct ata_p
         */
 
        for (i = 0; i < 4; i++) {
-               mask = (PIIX_PORT_PRESENT << i) | (PIIX_PORT_ENABLED << i);
+               mask = (PIIX_PORT_ENABLED << i);
 
                if ((orig_mask & mask) == mask)
                        if (combined || (i == ap->hard_port_no))
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to