aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ahci.c
diff options
context:
space:
mode:
authorMartin Wilck <martin.wilck@fujitsu-siemens.com>2005-08-04 03:04:56 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-08-23 01:03:39 -0400
commitc0b34ad2956036cdba87792d6c46d8f491539df1 (patch)
treeaff0dd3b2db8856aba533c7421acb78847f072e3 /drivers/scsi/ahci.c
parent9309049544935f804b745aa4dea043fb39b2bf2a (diff)
[PATCH] Fix HD activity LED with ahci
Patch: fix wrong HD activity control by ahci driver The ahci driver 1.0 sets the SActive bit on every transaction, causing the LED to light up. The SActive bit is used only for native command queuing (NCQ) which the current driver version doesn't implement. Resetting the SActive bit is the device's responsibility (by sending a "Set Device Bits FIS" to the host adapter) but this is not required in response to non-NCQ commands, and (most) devices don't. Thus the LED stays always on. This patch fixes the LED behavior. Spec references: http://www.intel.com/technology/serialata/pdf/rev1_1.pdf, sec. 3.3.13, 5.5.1 http://www.serialata.org/docs/serialata10a.pdf http://www.intel.com/design/storage/papers/25266401.pdf Signed-off-by: Martin.Wilck@fujitsu-siemens.com Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/scsi/ahci.c')
-rw-r--r--drivers/scsi/ahci.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c
index 0c79cafb1348..0b228ff67143 100644
--- a/drivers/scsi/ahci.c
+++ b/drivers/scsi/ahci.c
@@ -698,9 +698,6 @@ static int ahci_qc_issue(struct ata_queued_cmd *qc)
698 struct ata_port *ap = qc->ap; 698 struct ata_port *ap = qc->ap;
699 void *port_mmio = (void *) ap->ioaddr.cmd_addr; 699 void *port_mmio = (void *) ap->ioaddr.cmd_addr;
700 700
701 writel(1, port_mmio + PORT_SCR_ACT);
702 readl(port_mmio + PORT_SCR_ACT); /* flush */
703
704 writel(1, port_mmio + PORT_CMD_ISSUE); 701 writel(1, port_mmio + PORT_CMD_ISSUE);
705 readl(port_mmio + PORT_CMD_ISSUE); /* flush */ 702 readl(port_mmio + PORT_CMD_ISSUE); /* flush */
706 703