Commit 2f1f610b authored by Brian King's avatar Brian King Committed by Jeff Garzik

[PATCH] libata: Remove dependence on host_set->dev for SAS

Remove some of the dependence on the host_set struct
in preparation for supporting SAS HBAs. Adds a struct device
pointer to the ata_port struct.
Signed-off-by: default avatarBrian King <brking@us.ibm.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 2af10a81
...@@ -2856,7 +2856,7 @@ static void ata_sg_clean(struct ata_queued_cmd *qc) ...@@ -2856,7 +2856,7 @@ static void ata_sg_clean(struct ata_queued_cmd *qc)
if (qc->flags & ATA_QCFLAG_SG) { if (qc->flags & ATA_QCFLAG_SG) {
if (qc->n_elem) if (qc->n_elem)
dma_unmap_sg(ap->host_set->dev, sg, qc->n_elem, dir); dma_unmap_sg(ap->dev, sg, qc->n_elem, dir);
/* restore last sg */ /* restore last sg */
sg[qc->orig_n_elem - 1].length += qc->pad_len; sg[qc->orig_n_elem - 1].length += qc->pad_len;
if (pad_buf) { if (pad_buf) {
...@@ -2867,7 +2867,7 @@ static void ata_sg_clean(struct ata_queued_cmd *qc) ...@@ -2867,7 +2867,7 @@ static void ata_sg_clean(struct ata_queued_cmd *qc)
} }
} else { } else {
if (qc->n_elem) if (qc->n_elem)
dma_unmap_single(ap->host_set->dev, dma_unmap_single(ap->dev,
sg_dma_address(&sg[0]), sg_dma_len(&sg[0]), sg_dma_address(&sg[0]), sg_dma_len(&sg[0]),
dir); dir);
/* restore sg */ /* restore sg */
...@@ -3078,7 +3078,7 @@ static int ata_sg_setup_one(struct ata_queued_cmd *qc) ...@@ -3078,7 +3078,7 @@ static int ata_sg_setup_one(struct ata_queued_cmd *qc)
goto skip_map; goto skip_map;
} }
dma_address = dma_map_single(ap->host_set->dev, qc->buf_virt, dma_address = dma_map_single(ap->dev, qc->buf_virt,
sg->length, dir); sg->length, dir);
if (dma_mapping_error(dma_address)) { if (dma_mapping_error(dma_address)) {
/* restore sg */ /* restore sg */
...@@ -3166,7 +3166,7 @@ static int ata_sg_setup(struct ata_queued_cmd *qc) ...@@ -3166,7 +3166,7 @@ static int ata_sg_setup(struct ata_queued_cmd *qc)
} }
dir = qc->dma_dir; dir = qc->dma_dir;
n_elem = dma_map_sg(ap->host_set->dev, sg, pre_n_elem, dir); n_elem = dma_map_sg(ap->dev, sg, pre_n_elem, dir);
if (n_elem < 1) { if (n_elem < 1) {
/* restore last sg */ /* restore last sg */
lsg->length += qc->pad_len; lsg->length += qc->pad_len;
...@@ -4381,7 +4381,7 @@ int ata_device_suspend(struct ata_port *ap, struct ata_device *dev, pm_message_t ...@@ -4381,7 +4381,7 @@ int ata_device_suspend(struct ata_port *ap, struct ata_device *dev, pm_message_t
int ata_port_start (struct ata_port *ap) int ata_port_start (struct ata_port *ap)
{ {
struct device *dev = ap->host_set->dev; struct device *dev = ap->dev;
int rc; int rc;
ap->prd = dma_alloc_coherent(dev, ATA_PRD_TBL_SZ, &ap->prd_dma, GFP_KERNEL); ap->prd = dma_alloc_coherent(dev, ATA_PRD_TBL_SZ, &ap->prd_dma, GFP_KERNEL);
...@@ -4414,7 +4414,7 @@ int ata_port_start (struct ata_port *ap) ...@@ -4414,7 +4414,7 @@ int ata_port_start (struct ata_port *ap)
void ata_port_stop (struct ata_port *ap) void ata_port_stop (struct ata_port *ap)
{ {
struct device *dev = ap->host_set->dev; struct device *dev = ap->dev;
dma_free_coherent(dev, ATA_PRD_TBL_SZ, ap->prd, ap->prd_dma); dma_free_coherent(dev, ATA_PRD_TBL_SZ, ap->prd, ap->prd_dma);
ata_pad_free(ap, dev); ata_pad_free(ap, dev);
...@@ -4480,6 +4480,7 @@ static void ata_host_init(struct ata_port *ap, struct Scsi_Host *host, ...@@ -4480,6 +4480,7 @@ static void ata_host_init(struct ata_port *ap, struct Scsi_Host *host,
ap->host = host; ap->host = host;
ap->ctl = ATA_DEVCTL_OBS; ap->ctl = ATA_DEVCTL_OBS;
ap->host_set = host_set; ap->host_set = host_set;
ap->dev = ent->dev;
ap->port_no = port_no; ap->port_no = port_no;
ap->hard_port_no = ap->hard_port_no =
ent->legacy_mode ? ent->hard_port_no : port_no; ent->legacy_mode ? ent->hard_port_no : port_no;
......
...@@ -400,6 +400,7 @@ struct ata_port { ...@@ -400,6 +400,7 @@ struct ata_port {
struct ata_host_stats stats; struct ata_host_stats stats;
struct ata_host_set *host_set; struct ata_host_set *host_set;
struct device *dev;
struct work_struct port_task; struct work_struct port_task;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment