aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2006-05-15 08:03:53 -0400
committerTejun Heo <htejun@gmail.com>2006-05-15 08:03:53 -0400
commita9764c2bb5b6d3c9df91f2977a2a640f55de0dc2 (patch)
treeaafd47e6257d9d5e22f69c5639612e6b540093e5 /drivers
parent979db803b8fd120d4ed5216520e9d1815e18bc38 (diff)
[PATCH] ahci: kill pp->cmd_tbl_sg
With NCQ, there are multiple sg tables, so pp->cmd_tbl_sg doesn't cut it. Directly calculate sg table address from pp->cmd_tbl. Signed-off-by: Tejun Heo <htejun@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/ahci.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c
index 740e7d86d5f8..9f974dbcd7ed 100644
--- a/drivers/scsi/ahci.c
+++ b/drivers/scsi/ahci.c
@@ -191,7 +191,6 @@ struct ahci_port_priv {
191 dma_addr_t cmd_slot_dma; 191 dma_addr_t cmd_slot_dma;
192 void *cmd_tbl; 192 void *cmd_tbl;
193 dma_addr_t cmd_tbl_dma; 193 dma_addr_t cmd_tbl_dma;
194 struct ahci_sg *cmd_tbl_sg;
195 void *rx_fis; 194 void *rx_fis;
196 dma_addr_t rx_fis_dma; 195 dma_addr_t rx_fis_dma;
197}; 196};
@@ -402,8 +401,6 @@ static int ahci_port_start(struct ata_port *ap)
402 pp->cmd_tbl = mem; 401 pp->cmd_tbl = mem;
403 pp->cmd_tbl_dma = mem_dma; 402 pp->cmd_tbl_dma = mem_dma;
404 403
405 pp->cmd_tbl_sg = mem + AHCI_CMD_TBL_HDR_SZ;
406
407 ap->private_data = pp; 404 ap->private_data = pp;
408 405
409 if (hpriv->cap & HOST_CAP_64) 406 if (hpriv->cap & HOST_CAP_64)
@@ -749,7 +746,7 @@ static unsigned int ahci_fill_sg(struct ata_queued_cmd *qc)
749 /* 746 /*
750 * Next, the S/G list. 747 * Next, the S/G list.
751 */ 748 */
752 ahci_sg = pp->cmd_tbl_sg; 749 ahci_sg = pp->cmd_tbl + AHCI_CMD_TBL_HDR_SZ;
753 ata_for_each_sg(sg, qc) { 750 ata_for_each_sg(sg, qc) {
754 dma_addr_t addr = sg_dma_address(sg); 751 dma_addr_t addr = sg_dma_address(sg);
755 u32 sg_len = sg_dma_len(sg); 752 u32 sg_len = sg_dma_len(sg);