[PATCH 2.6.10-rc1] ahci: Intel ICH6R (925X) corrections
From: Matthijs Melchior (mmelchior_at_xs4all.nl)
Date: 10/31/04
- Previous message: Lee Revell: "[OT] Re: code bloat [was Re: Semaphore assembly-code bug]"
- In reply to: Matthijs Melchior: "2.6.10-rc1 & ahci & IHC6R & 925X & raid1"
- Next in thread: Jeff Garzik: "Re: [PATCH 2.6.10-rc1] ahci: Intel ICH6R (925X) corrections"
- Reply: Jeff Garzik: "Re: [PATCH 2.6.10-rc1] ahci: Intel ICH6R (925X) corrections"
- Reply: Jeff Garzik: "Re: [PATCH 2.6.10-rc1] ahci: Intel ICH6R (925X) corrections"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sun, 31 Oct 2004 01:29:12 +0200 To: linux-kernel@vger.kernel.org
This patch makes the following changes to drivers/scsi/ahci.c
- Add definition for SActive register
- Add most interrupt sources to default interrupt mask
- Write low 32 bits of FIS address to PxFB, where they belong
- Set command active bit in PxSACT before setting command issue bit in PxCI
- Announce Sub Class Code in driver info message [IDE, SATA or RAID]
-- Signed-off-by: Matthijs Melchior <mmelchior@xs4all.nl>
--- a/drivers/scsi/ahci.c 2004-10-23 01:37:22.000000000 +0200
+++ b/drivers/scsi/ahci.c 2004-10-31 00:20:13.000000000 +0200
@@ -90,6 +90,7 @@
PORT_SCR_STAT = 0x28, /* SATA phy register: SStatus */
PORT_SCR_CTL = 0x2c, /* SATA phy register: SControl */
PORT_SCR_ERR = 0x30, /* SATA phy register: SError */
+ PORT_SCR_ACT = 0x34, /* SATA phy register: SActive */
/* PORT_IRQ_{STAT,MASK} bits */
PORT_IRQ_COLD_PRES = (1 << 31), /* cold presence detect */
@@ -116,6 +117,9 @@
PORT_IRQ_HBUS_DATA_ERR |
PORT_IRQ_IF_ERR,
DEF_PORT_IRQ = PORT_IRQ_FATAL | PORT_IRQ_PHYRDY |
+ PORT_IRQ_CONNECT | PORT_IRQ_SG_DONE |
+ PORT_IRQ_UNK_FIS | PORT_IRQ_SDB_FIS |
+ PORT_IRQ_DMAS_FIS | PORT_IRQ_PIOS_FIS |
PORT_IRQ_D2H_REG_FIS,
/* PORT_CMD bits */
@@ -329,8 +333,8 @@
if (hpriv->cap & HOST_CAP_64)
writel((pp->rx_fis_dma >> 16) >> 16, port_mmio + PORT_FIS_ADDR_HI);
- writel(pp->rx_fis_dma & 0xffffffff, port_mmio + PORT_LST_ADDR);
- readl(port_mmio + PORT_LST_ADDR); /* flush */
+ writel(pp->rx_fis_dma & 0xffffffff, port_mmio + PORT_FIS_ADDR);
+ readl(port_mmio + PORT_FIS_ADDR); /* flush */
writel(PORT_CMD_ICC_ACTIVE | PORT_CMD_FIS_RX |
PORT_CMD_POWER_ON | PORT_CMD_SPIN_UP |
@@ -673,10 +677,13 @@
static int ahci_qc_issue(struct ata_queued_cmd *qc)
{
struct ata_port *ap = qc->ap;
- void *mmio = (void *) ap->ioaddr.cmd_addr;
+ void *port_mmio = (void *) ap->ioaddr.cmd_addr;
- writel(1, mmio + PORT_CMD_ISSUE);
- readl(mmio + PORT_CMD_ISSUE); /* flush */
+ writel(1, port_mmio + PORT_SCR_ACT);
+ readl(port_mmio + PORT_SCR_ACT); /* flush */
+
+ writel(1, port_mmio + PORT_CMD_ISSUE);
+ readl(port_mmio + PORT_CMD_ISSUE); /* flush */
return 0;
}
@@ -859,6 +866,8 @@
void *mmio = probe_ent->mmio_base;
u32 vers, cap, impl, speed;
const char *speed_s;
+ u16 cc;
+ const char *scc_s;
vers = readl(mmio + HOST_VERSION);
cap = hpriv->cap;
@@ -872,8 +881,18 @@
else
speed_s = "?";
+ pci_read_config_word(pdev, 0x0a, &cc);
+ if (cc == 0x0101)
+ scc_s = "IDE";
+ else if (cc == 0x0106)
+ scc_s = "SATA";
+ else if (cc == 0x0104)
+ scc_s = "RAID";
+ else
+ scc_s = "unknown";
+
printk(KERN_INFO DRV_NAME "(%s) AHCI %02x%02x.%02x%02x "
- "%u slots %u ports %s Gbps 0x%x impl\n"
+ "%u slots %u ports %s Gbps 0x%x impl %s mode\n"
,
pci_name(pdev),
@@ -885,7 +904,8 @@
((cap >> 8) & 0x1f) + 1,
(cap & 0x1f) + 1,
speed_s,
- impl);
+ impl,
+ scc_s);
printk(KERN_INFO DRV_NAME "(%s) flags: "
"%s%s%s%s%s%s"
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Previous message: Lee Revell: "[OT] Re: code bloat [was Re: Semaphore assembly-code bug]"
- In reply to: Matthijs Melchior: "2.6.10-rc1 & ahci & IHC6R & 925X & raid1"
- Next in thread: Jeff Garzik: "Re: [PATCH 2.6.10-rc1] ahci: Intel ICH6R (925X) corrections"
- Reply: Jeff Garzik: "Re: [PATCH 2.6.10-rc1] ahci: Intel ICH6R (925X) corrections"
- Reply: Jeff Garzik: "Re: [PATCH 2.6.10-rc1] ahci: Intel ICH6R (925X) corrections"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|