2.6.x libata fixes
PATCH 1/1 2.6.x libata fixes
Please do a
bk pull bk://gkernel.bkbits.net/libata-2.6
This will update the following files:
drivers/scsi/ahci.c | 15 +++++++++++++-- 1 files changed, 13 insertions(+), 2 deletions(-)
through these ChangeSets:
Brett Russ:
o AHCI: fix fatal error int handling
Jeff Garzik:
o [libata ahci] support ->tf_read hook
drivers/scsi/ahci.c +13 -2
@@ -177,6 +177,7 @@static int ahci_port_start (struct ata_port *ap);static void ahci_port_stop (struct ata_port *ap);static void ahci_host_stop (struct ata_host_set *host_set); +static void ahci_tf_read (struct ata_port *ap,struct ata_taskfile *tf);static void ahci_qc_prep (struct ata_queued_cmd *qc);static u8 ahci_check_status (struct ata_port *ap);static u8 ahci_check_err (struct ata_port *ap);
@@ -210,6 +211,8 @@ .check_err = ahci_check_err, .dev_select = ata_noop_dev_select, + .tf_read = ahci_tf_read, + .phy_reset = ahci_phy_reset, .qc_prep = ahci_qc_prep,
@@ -463,6 +466,14 @@return (readl (mmio +PORT_TFDATA ) >>8 ) &0xFF ; } +static void ahci_tf_read (struct ata_port *ap,struct ata_taskfile *tf) +{ +struct ahci_port_priv *pp = ap->private_data; +u8 *d2h_fis = pp->rx_fis +RX_FIS_D2H_REG ; + +ata_tf_from_fis (d2h_fis, tf); +} +static void ahci_fill_sg (struct ata_queued_cmd *qc) {struct ahci_port_priv *pp = qc->ap->private_data;
@@ -539,7 +550,7 @@/* stop DMA */ tmp =readl (port_mmio +PORT_CMD ); - tmp &=PORT_CMD_START |PORT_CMD_FIS_RX ; + tmp &= ~PORT_CMD_START ;writel (tmp, port_mmio +PORT_CMD );/* wait for engine to stop. TODO: this could be
@@ -571,7 +582,7 @@/* re-start DMA */ tmp =readl (port_mmio +PORT_CMD ); - tmp |=PORT_CMD_START |PORT_CMD_FIS_RX ; + tmp |=PORT_CMD_START ;writel (tmp, port_mmio +PORT_CMD );readl (port_mmio +PORT_CMD );/* flush */