Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -2856,7 +2856,7 @@ static void ata_sg_clean(struct ata_queued_cmd *qc)

	if (qc->flags & ATA_QCFLAG_SG) {
		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 */
		sg[qc->orig_n_elem - 1].length += qc->pad_len;
		if (pad_buf) {
@@ -2867,7 +2867,7 @@ static void ata_sg_clean(struct ata_queued_cmd *qc)
		}
	} else {
		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]),
				dir);
		/* restore sg */
@@ -3078,7 +3078,7 @@ static int ata_sg_setup_one(struct ata_queued_cmd *qc)
		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);
	if (dma_mapping_error(dma_address)) {
		/* restore sg */
@@ -3166,7 +3166,7 @@ static int ata_sg_setup(struct ata_queued_cmd *qc)
	}

	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) {
		/* restore last sg */
		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)
{
	struct device *dev = ap->host_set->dev;
	struct device *dev = ap->dev;
	int rc;

	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)
{
	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);
	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->ctl = ATA_DEVCTL_OBS;
	ap->host_set = host_set;
	ap->dev = ent->dev;
	ap->port_no = port_no;
	ap->hard_port_no =
		ent->legacy_mode ? ent->hard_port_no : port_no;
+1 −0
Original line number Diff line number Diff line
@@ -400,6 +400,7 @@ struct ata_port {

	struct ata_host_stats	stats;
	struct ata_host_set	*host_set;
	struct device 		*dev;

	struct work_struct	port_task;