[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: Brian King <brking@us.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
@ -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)
|
|||||||
}
|
}
|
||||||
} 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)
|
|||||||
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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
|||||||
|
|
||||||
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)
|
|||||||
|
|
||||||
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,
|
|||||||
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 {
|
|||||||
|
|
||||||
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;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user