diff options
author | Martin Wilck <martin.wilck@fujitsu-siemens.com> | 2005-08-04 03:04:56 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-08-23 01:03:39 -0400 |
commit | c0b34ad2956036cdba87792d6c46d8f491539df1 (patch) | |
tree | aff0dd3b2db8856aba533c7421acb78847f072e3 /drivers/scsi | |
parent | 9309049544935f804b745aa4dea043fb39b2bf2a (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')
-rw-r--r-- | drivers/scsi/ahci.c | 3 |
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 | ||