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

Commit 5682ed33 authored by Tejun Heo's avatar Tejun Heo Committed by Jeff Garzik
Browse files

libata: rename SFF port ops



Add sff_ prefix to SFF specific port ops.

This rename is in preparation of separating SFF support out of libata
core layer.  This patch strictly renames ops and doesn't introduce any
behavior difference.

Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
parent 9363c382
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -292,10 +292,10 @@ static struct scsi_host_template ahci_sht = {
static struct ata_port_operations ahci_ops = {
static struct ata_port_operations ahci_ops = {
	.inherits		= &sata_pmp_port_ops,
	.inherits		= &sata_pmp_port_ops,


	.check_status		= ahci_check_status,
	.sff_check_status	= ahci_check_status,
	.check_altstatus	= ahci_check_status,
	.sff_check_altstatus	= ahci_check_status,


	.tf_read		= ahci_tf_read,
	.sff_tf_read		= ahci_tf_read,
	.qc_defer		= sata_pmp_qc_defer_cmd_switch,
	.qc_defer		= sata_pmp_qc_defer_cmd_switch,
	.qc_prep		= ahci_qc_prep,
	.qc_prep		= ahci_qc_prep,
	.qc_issue		= ahci_qc_issue,
	.qc_issue		= ahci_qc_issue,
+9 −9
Original line number Original line Diff line number Diff line
@@ -74,7 +74,7 @@ const unsigned long sata_deb_timing_hotplug[] = { 25, 500, 2000 };
const unsigned long sata_deb_timing_long[]		= { 100, 2000, 5000 };
const unsigned long sata_deb_timing_long[]		= { 100, 2000, 5000 };


const struct ata_port_operations ata_base_port_ops = {
const struct ata_port_operations ata_base_port_ops = {
	.irq_clear		= ata_noop_irq_clear,
	.sff_irq_clear		= ata_noop_irq_clear,
	.prereset		= ata_sff_prereset,
	.prereset		= ata_sff_prereset,
	.hardreset		= sata_sff_hardreset,
	.hardreset		= sata_sff_hardreset,
	.postreset		= ata_sff_postreset,
	.postreset		= ata_sff_postreset,
@@ -85,7 +85,7 @@ const struct ata_port_operations sata_port_ops = {
	.inherits		= &ata_base_port_ops,
	.inherits		= &ata_base_port_ops,


	.qc_defer		= ata_std_qc_defer,
	.qc_defer		= ata_std_qc_defer,
	.dev_select		= ata_noop_dev_select,
	.sff_dev_select		= ata_noop_dev_select,
};
};


const struct ata_port_operations sata_pmp_port_ops = {
const struct ata_port_operations sata_pmp_port_ops = {
@@ -3563,9 +3563,9 @@ void ata_sff_postreset(struct ata_link *link, unsigned int *classes)


	/* is double-select really necessary? */
	/* is double-select really necessary? */
	if (classes[0] != ATA_DEV_NONE)
	if (classes[0] != ATA_DEV_NONE)
		ap->ops->dev_select(ap, 1);
		ap->ops->sff_dev_select(ap, 1);
	if (classes[1] != ATA_DEV_NONE)
	if (classes[1] != ATA_DEV_NONE)
		ap->ops->dev_select(ap, 0);
		ap->ops->sff_dev_select(ap, 0);


	/* bail out if no device is present */
	/* bail out if no device is present */
	if (classes[0] == ATA_DEV_NONE && classes[1] == ATA_DEV_NONE) {
	if (classes[0] == ATA_DEV_NONE && classes[1] == ATA_DEV_NONE) {
@@ -4416,7 +4416,7 @@ static void fill_result_tf(struct ata_queued_cmd *qc)
	struct ata_port *ap = qc->ap;
	struct ata_port *ap = qc->ap;


	qc->result_tf.flags = qc->tf.flags;
	qc->result_tf.flags = qc->tf.flags;
	ap->ops->tf_read(ap, &qc->result_tf);
	ap->ops->sff_tf_read(ap, &qc->result_tf);
}
}


static void ata_verify_xfer(struct ata_queued_cmd *qc)
static void ata_verify_xfer(struct ata_queued_cmd *qc)
@@ -6049,16 +6049,16 @@ static unsigned int ata_dummy_qc_issue(struct ata_queued_cmd *qc)
}
}


struct ata_port_operations ata_dummy_port_ops = {
struct ata_port_operations ata_dummy_port_ops = {
	.check_status		= ata_dummy_check_status,
	.sff_check_status	= ata_dummy_check_status,
	.check_altstatus	= ata_dummy_check_status,
	.sff_check_altstatus	= ata_dummy_check_status,
	.dev_select		= ata_noop_dev_select,
	.sff_dev_select		= ata_noop_dev_select,
	.qc_prep		= ata_noop_qc_prep,
	.qc_prep		= ata_noop_qc_prep,
	.qc_issue		= ata_dummy_qc_issue,
	.qc_issue		= ata_dummy_qc_issue,
	.freeze			= ata_dummy_noret,
	.freeze			= ata_dummy_noret,
	.thaw			= ata_dummy_noret,
	.thaw			= ata_dummy_noret,
	.error_handler		= ata_dummy_noret,
	.error_handler		= ata_dummy_noret,
	.post_internal_cmd	= ata_dummy_qc_noret,
	.post_internal_cmd	= ata_dummy_qc_noret,
	.irq_clear		= ata_dummy_noret,
	.sff_irq_clear		= ata_dummy_noret,
	.port_start		= ata_dummy_ret0,
	.port_start		= ata_dummy_ret0,
	.port_stop		= ata_dummy_noret,
	.port_stop		= ata_dummy_noret,
};
};
+1 −1
Original line number Original line Diff line number Diff line
@@ -2393,7 +2393,7 @@ static void atapi_request_sense(struct ata_queued_cmd *qc)
	/* FIXME: is this needed? */
	/* FIXME: is this needed? */
	memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
	memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);


	ap->ops->tf_read(ap, &qc->tf);
	ap->ops->sff_tf_read(ap, &qc->tf);


	/* fill these in, for the case where they are -not- overwritten */
	/* fill these in, for the case where they are -not- overwritten */
	cmd->sense_buffer[0] = 0x70;
	cmd->sense_buffer[0] = 0x70;
+56 −53
Original line number Original line Diff line number Diff line
@@ -51,13 +51,13 @@ const struct ata_port_operations ata_sff_port_ops = {
	.error_handler		= ata_sff_error_handler,
	.error_handler		= ata_sff_error_handler,
	.post_internal_cmd	= ata_sff_post_internal_cmd,
	.post_internal_cmd	= ata_sff_post_internal_cmd,


	.dev_select		= ata_sff_dev_select,
	.sff_dev_select		= ata_sff_dev_select,
	.check_status		= ata_sff_check_status,
	.sff_check_status	= ata_sff_check_status,
	.tf_load		= ata_sff_tf_load,
	.sff_tf_load		= ata_sff_tf_load,
	.tf_read		= ata_sff_tf_read,
	.sff_tf_read		= ata_sff_tf_read,
	.exec_command		= ata_sff_exec_command,
	.sff_exec_command	= ata_sff_exec_command,
	.data_xfer		= ata_sff_data_xfer,
	.sff_data_xfer		= ata_sff_data_xfer,
	.irq_on			= ata_sff_irq_on,
	.sff_irq_on		= ata_sff_irq_on,


	.port_start		= ata_sff_port_start,
	.port_start		= ata_sff_port_start,
};
};
@@ -71,7 +71,7 @@ const struct ata_port_operations ata_bmdma_port_ops = {
	.bmdma_start		= ata_bmdma_start,
	.bmdma_start		= ata_bmdma_start,
	.bmdma_stop		= ata_bmdma_stop,
	.bmdma_stop		= ata_bmdma_stop,
	.bmdma_status		= ata_bmdma_status,
	.bmdma_status		= ata_bmdma_status,
	.irq_clear		= ata_sff_irq_clear,
	.sff_irq_clear		= ata_sff_irq_clear,
};
};


/**
/**
@@ -245,8 +245,8 @@ u8 ata_sff_check_status(struct ata_port *ap)
 */
 */
u8 ata_sff_altstatus(struct ata_port *ap)
u8 ata_sff_altstatus(struct ata_port *ap)
{
{
	if (ap->ops->check_altstatus)
	if (ap->ops->sff_check_altstatus)
		return ap->ops->check_altstatus(ap);
		return ap->ops->sff_check_altstatus(ap);


	return ioread8(ap->ioaddr.altstatus_addr);
	return ioread8(ap->ioaddr.altstatus_addr);
}
}
@@ -290,7 +290,7 @@ int ata_sff_busy_sleep(struct ata_port *ap,
	while (status != 0xff && (status & ATA_BUSY) &&
	while (status != 0xff && (status & ATA_BUSY) &&
	       time_before(jiffies, timeout)) {
	       time_before(jiffies, timeout)) {
		msleep(50);
		msleep(50);
		status = ap->ops->check_status(ap);
		status = ap->ops->sff_check_status(ap);
	}
	}


	if (status == 0xff)
	if (status == 0xff)
@@ -326,7 +326,7 @@ int ata_sff_wait_ready(struct ata_port *ap, unsigned long deadline)
	int warned = 0;
	int warned = 0;


	while (1) {
	while (1) {
		u8 status = ap->ops->check_status(ap);
		u8 status = ap->ops->sff_check_status(ap);
		unsigned long now = jiffies;
		unsigned long now = jiffies;


		if (!(status & ATA_BUSY))
		if (!(status & ATA_BUSY))
@@ -403,7 +403,7 @@ void ata_dev_select(struct ata_port *ap, unsigned int device,
	if (wait)
	if (wait)
		ata_wait_idle(ap);
		ata_wait_idle(ap);


	ap->ops->dev_select(ap, device);
	ap->ops->sff_dev_select(ap, device);


	if (wait) {
	if (wait) {
		if (can_sleep && ap->link.device[device].class == ATA_DEV_ATAPI)
		if (can_sleep && ap->link.device[device].class == ATA_DEV_ATAPI)
@@ -434,7 +434,7 @@ u8 ata_sff_irq_on(struct ata_port *ap)
		iowrite8(ap->ctl, ioaddr->ctl_addr);
		iowrite8(ap->ctl, ioaddr->ctl_addr);
	tmp = ata_wait_idle(ap);
	tmp = ata_wait_idle(ap);


	ap->ops->irq_clear(ap);
	ap->ops->sff_irq_clear(ap);


	return tmp;
	return tmp;
}
}
@@ -593,8 +593,8 @@ void ata_sff_exec_command(struct ata_port *ap, const struct ata_taskfile *tf)
static inline void ata_tf_to_host(struct ata_port *ap,
static inline void ata_tf_to_host(struct ata_port *ap,
				  const struct ata_taskfile *tf)
				  const struct ata_taskfile *tf)
{
{
	ap->ops->tf_load(ap, tf);
	ap->ops->sff_tf_load(ap, tf);
	ap->ops->exec_command(ap, tf);
	ap->ops->sff_exec_command(ap, tf);
}
}


/**
/**
@@ -709,13 +709,15 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
		buf = kmap_atomic(page, KM_IRQ0);
		buf = kmap_atomic(page, KM_IRQ0);


		/* do the actual data transfer */
		/* do the actual data transfer */
		ap->ops->data_xfer(qc->dev, buf + offset, qc->sect_size, do_write);
		ap->ops->sff_data_xfer(qc->dev, buf + offset, qc->sect_size,
				       do_write);


		kunmap_atomic(buf, KM_IRQ0);
		kunmap_atomic(buf, KM_IRQ0);
		local_irq_restore(flags);
		local_irq_restore(flags);
	} else {
	} else {
		buf = page_address(page);
		buf = page_address(page);
		ap->ops->data_xfer(qc->dev, buf + offset, qc->sect_size, do_write);
		ap->ops->sff_data_xfer(qc->dev, buf + offset, qc->sect_size,
				       do_write);
	}
	}


	qc->curbytes += qc->sect_size;
	qc->curbytes += qc->sect_size;
@@ -772,7 +774,7 @@ static void atapi_send_cdb(struct ata_port *ap, struct ata_queued_cmd *qc)
	DPRINTK("send cdb\n");
	DPRINTK("send cdb\n");
	WARN_ON(qc->dev->cdb_len < 12);
	WARN_ON(qc->dev->cdb_len < 12);


	ap->ops->data_xfer(qc->dev, qc->cdb, qc->dev->cdb_len, 1);
	ap->ops->sff_data_xfer(qc->dev, qc->cdb, qc->dev->cdb_len, 1);
	ata_sff_altstatus(ap); /* flush */
	ata_sff_altstatus(ap); /* flush */


	switch (qc->tf.protocol) {
	switch (qc->tf.protocol) {
@@ -844,13 +846,13 @@ static int __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes)
		buf = kmap_atomic(page, KM_IRQ0);
		buf = kmap_atomic(page, KM_IRQ0);


		/* do the actual data transfer */
		/* do the actual data transfer */
		consumed = ap->ops->data_xfer(dev,  buf + offset, count, rw);
		consumed = ap->ops->sff_data_xfer(dev,  buf + offset, count, rw);


		kunmap_atomic(buf, KM_IRQ0);
		kunmap_atomic(buf, KM_IRQ0);
		local_irq_restore(flags);
		local_irq_restore(flags);
	} else {
	} else {
		buf = page_address(page);
		buf = page_address(page);
		consumed = ap->ops->data_xfer(dev,  buf + offset, count, rw);
		consumed = ap->ops->sff_data_xfer(dev,  buf + offset, count, rw);
	}
	}


	bytes -= min(bytes, consumed);
	bytes -= min(bytes, consumed);
@@ -893,7 +895,7 @@ static void atapi_pio_bytes(struct ata_queued_cmd *qc)
	 * error, qc->result_tf is later overwritten by ata_qc_complete().
	 * error, qc->result_tf is later overwritten by ata_qc_complete().
	 * So, the correctness of qc->result_tf is not affected.
	 * So, the correctness of qc->result_tf is not affected.
	 */
	 */
	ap->ops->tf_read(ap, &qc->result_tf);
	ap->ops->sff_tf_read(ap, &qc->result_tf);
	ireason = qc->result_tf.nsect;
	ireason = qc->result_tf.nsect;
	bc_lo = qc->result_tf.lbam;
	bc_lo = qc->result_tf.lbam;
	bc_hi = qc->result_tf.lbah;
	bc_hi = qc->result_tf.lbah;
@@ -979,7 +981,7 @@ static void ata_hsm_qc_complete(struct ata_queued_cmd *qc, int in_wq)
			qc = ata_qc_from_tag(ap, qc->tag);
			qc = ata_qc_from_tag(ap, qc->tag);
			if (qc) {
			if (qc) {
				if (likely(!(qc->err_mask & AC_ERR_HSM))) {
				if (likely(!(qc->err_mask & AC_ERR_HSM))) {
					ap->ops->irq_on(ap);
					ap->ops->sff_irq_on(ap);
					ata_qc_complete(qc);
					ata_qc_complete(qc);
				} else
				} else
					ata_port_freeze(ap);
					ata_port_freeze(ap);
@@ -995,7 +997,7 @@ static void ata_hsm_qc_complete(struct ata_queued_cmd *qc, int in_wq)
	} else {
	} else {
		if (in_wq) {
		if (in_wq) {
			spin_lock_irqsave(ap->lock, flags);
			spin_lock_irqsave(ap->lock, flags);
			ap->ops->irq_on(ap);
			ap->ops->sff_irq_on(ap);
			ata_qc_complete(qc);
			ata_qc_complete(qc);
			spin_unlock_irqrestore(ap->lock, flags);
			spin_unlock_irqrestore(ap->lock, flags);
		} else
		} else
@@ -1345,7 +1347,7 @@ unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc)
	case ATA_PROT_DMA:
	case ATA_PROT_DMA:
		WARN_ON(qc->tf.flags & ATA_TFLAG_POLLING);
		WARN_ON(qc->tf.flags & ATA_TFLAG_POLLING);


		ap->ops->tf_load(ap, &qc->tf);	 /* load tf registers */
		ap->ops->sff_tf_load(ap, &qc->tf);  /* load tf registers */
		ap->ops->bmdma_setup(qc);	    /* set up bmdma */
		ap->ops->bmdma_setup(qc);	    /* set up bmdma */
		ap->ops->bmdma_start(qc);	    /* initiate bmdma */
		ap->ops->bmdma_start(qc);	    /* initiate bmdma */
		ap->hsm_task_state = HSM_ST_LAST;
		ap->hsm_task_state = HSM_ST_LAST;
@@ -1397,7 +1399,7 @@ unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc)
	case ATAPI_PROT_DMA:
	case ATAPI_PROT_DMA:
		WARN_ON(qc->tf.flags & ATA_TFLAG_POLLING);
		WARN_ON(qc->tf.flags & ATA_TFLAG_POLLING);


		ap->ops->tf_load(ap, &qc->tf);	 /* load tf registers */
		ap->ops->sff_tf_load(ap, &qc->tf);  /* load tf registers */
		ap->ops->bmdma_setup(qc);	    /* set up bmdma */
		ap->ops->bmdma_setup(qc);	    /* set up bmdma */
		ap->hsm_task_state = HSM_ST_FIRST;
		ap->hsm_task_state = HSM_ST_FIRST;


@@ -1486,12 +1488,12 @@ inline unsigned int ata_sff_host_intr(struct ata_port *ap,
		goto idle_irq;
		goto idle_irq;


	/* check main status, clearing INTRQ */
	/* check main status, clearing INTRQ */
	status = ap->ops->check_status(ap);
	status = ap->ops->sff_check_status(ap);
	if (unlikely(status & ATA_BUSY))
	if (unlikely(status & ATA_BUSY))
		goto idle_irq;
		goto idle_irq;


	/* ack bmdma irq events */
	/* ack bmdma irq events */
	ap->ops->irq_clear(ap);
	ap->ops->sff_irq_clear(ap);


	ata_sff_hsm_move(ap, qc, status, 0);
	ata_sff_hsm_move(ap, qc, status, 0);


@@ -1506,8 +1508,8 @@ inline unsigned int ata_sff_host_intr(struct ata_port *ap,


#ifdef ATA_IRQ_TRAP
#ifdef ATA_IRQ_TRAP
	if ((ap->stats.idle_irq % 1000) == 0) {
	if ((ap->stats.idle_irq % 1000) == 0) {
		ap->ops->check_status(ap);
		ap->ops->sff_check_status(ap);
		ap->ops->irq_clear(ap);
		ap->ops->sff_irq_clear(ap);
		ata_port_printk(ap, KERN_WARNING, "irq trap\n");
		ata_port_printk(ap, KERN_WARNING, "irq trap\n");
		return 1;
		return 1;
	}
	}
@@ -1582,9 +1584,9 @@ void ata_sff_freeze(struct ata_port *ap)
	 * ATA_NIEN manipulation.  Also, many controllers fail to mask
	 * ATA_NIEN manipulation.  Also, many controllers fail to mask
	 * previously pending IRQ on ATA_NIEN assertion.  Clear it.
	 * previously pending IRQ on ATA_NIEN assertion.  Clear it.
	 */
	 */
	ap->ops->check_status(ap);
	ap->ops->sff_check_status(ap);


	ap->ops->irq_clear(ap);
	ap->ops->sff_irq_clear(ap);
}
}


/**
/**
@@ -1599,9 +1601,9 @@ void ata_sff_freeze(struct ata_port *ap)
void ata_sff_thaw(struct ata_port *ap)
void ata_sff_thaw(struct ata_port *ap)
{
{
	/* clear & re-enable interrupts */
	/* clear & re-enable interrupts */
	ap->ops->check_status(ap);
	ap->ops->sff_check_status(ap);
	ap->ops->irq_clear(ap);
	ap->ops->sff_irq_clear(ap);
	ap->ops->irq_on(ap);
	ap->ops->sff_irq_on(ap);
}
}


/**
/**
@@ -1626,7 +1628,7 @@ static unsigned int ata_devchk(struct ata_port *ap, unsigned int device)
	struct ata_ioports *ioaddr = &ap->ioaddr;
	struct ata_ioports *ioaddr = &ap->ioaddr;
	u8 nsect, lbal;
	u8 nsect, lbal;


	ap->ops->dev_select(ap, device);
	ap->ops->sff_dev_select(ap, device);


	iowrite8(0x55, ioaddr->nsect_addr);
	iowrite8(0x55, ioaddr->nsect_addr);
	iowrite8(0xaa, ioaddr->lbal_addr);
	iowrite8(0xaa, ioaddr->lbal_addr);
@@ -1675,11 +1677,11 @@ unsigned int ata_sff_dev_classify(struct ata_device *dev, int present,
	unsigned int class;
	unsigned int class;
	u8 err;
	u8 err;


	ap->ops->dev_select(ap, dev->devno);
	ap->ops->sff_dev_select(ap, dev->devno);


	memset(&tf, 0, sizeof(tf));
	memset(&tf, 0, sizeof(tf));


	ap->ops->tf_read(ap, &tf);
	ap->ops->sff_tf_read(ap, &tf);
	err = tf.feature;
	err = tf.feature;
	if (r_err)
	if (r_err)
		*r_err = err;
		*r_err = err;
@@ -1709,7 +1711,8 @@ unsigned int ata_sff_dev_classify(struct ata_device *dev, int present,
			class = ATA_DEV_ATA;
			class = ATA_DEV_ATA;
		else
		else
			class = ATA_DEV_NONE;
			class = ATA_DEV_NONE;
	} else if ((class == ATA_DEV_ATA) && (ap->ops->check_status(ap) == 0))
	} else if ((class == ATA_DEV_ATA) &&
		   (ap->ops->sff_check_status(ap) == 0))
		class = ATA_DEV_NONE;
		class = ATA_DEV_NONE;


	return class;
	return class;
@@ -1741,7 +1744,7 @@ static int ata_bus_post_reset(struct ata_port *ap, unsigned int devmask,
	if (dev1) {
	if (dev1) {
		int i;
		int i;


		ap->ops->dev_select(ap, 1);
		ap->ops->sff_dev_select(ap, 1);


		/* Wait for register access.  Some ATAPI devices fail
		/* Wait for register access.  Some ATAPI devices fail
		 * to set nsect/lbal after reset, so don't waste too
		 * to set nsect/lbal after reset, so don't waste too
@@ -1766,11 +1769,11 @@ static int ata_bus_post_reset(struct ata_port *ap, unsigned int devmask,
	}
	}


	/* is all this really necessary? */
	/* is all this really necessary? */
	ap->ops->dev_select(ap, 0);
	ap->ops->sff_dev_select(ap, 0);
	if (dev1)
	if (dev1)
		ap->ops->dev_select(ap, 1);
		ap->ops->sff_dev_select(ap, 1);
	if (dev0)
	if (dev0)
		ap->ops->dev_select(ap, 0);
		ap->ops->sff_dev_select(ap, 0);


	return ret;
	return ret;
}
}
@@ -1820,7 +1823,7 @@ void ata_sff_wait_after_reset(struct ata_port *ap, unsigned long deadline)
	 */
	 */
	if (ap->flags & ATA_FLAG_SATA) {
	if (ap->flags & ATA_FLAG_SATA) {
		while (1) {
		while (1) {
			u8 status = ap->ops->check_status(ap);
			u8 status = ap->ops->sff_check_status(ap);


			if (status != 0xff || time_after(jiffies, deadline))
			if (status != 0xff || time_after(jiffies, deadline))
				return;
				return;
@@ -1851,7 +1854,7 @@ static int ata_bus_softreset(struct ata_port *ap, unsigned int devmask,
	 * the bus shows 0xFF because the odd clown forgets the D7
	 * the bus shows 0xFF because the odd clown forgets the D7
	 * pulldown resistor.
	 * pulldown resistor.
	 */
	 */
	if (ap->ops->check_status(ap) == 0xFF)
	if (ap->ops->sff_check_status(ap) == 0xFF)
		return -ENODEV;
		return -ENODEV;


	return ata_bus_post_reset(ap, devmask, deadline);
	return ata_bus_post_reset(ap, devmask, deadline);
@@ -1894,7 +1897,7 @@ int ata_sff_softreset(struct ata_link *link, unsigned int *classes,
		devmask |= (1 << 1);
		devmask |= (1 << 1);


	/* select device 0 again */
	/* select device 0 again */
	ap->ops->dev_select(ap, 0);
	ap->ops->sff_dev_select(ap, 0);


	/* issue bus reset */
	/* issue bus reset */
	DPRINTK("about to softreset, devmask=%x\n", devmask);
	DPRINTK("about to softreset, devmask=%x\n", devmask);
@@ -1977,7 +1980,7 @@ int sata_sff_hardreset(struct ata_link *link, unsigned int *class,
		return rc;
		return rc;
	}
	}


	ap->ops->dev_select(ap, 0);	/* probably unnecessary */
	ap->ops->sff_dev_select(ap, 0);	/* probably unnecessary */


	*class = ata_sff_dev_classify(link->device, 1, NULL);
	*class = ata_sff_dev_classify(link->device, 1, NULL);


@@ -2035,8 +2038,8 @@ void ata_sff_error_handler(struct ata_port *ap)
	}
	}


	ata_sff_altstatus(ap);
	ata_sff_altstatus(ap);
	ap->ops->check_status(ap);
	ap->ops->sff_check_status(ap);
	ap->ops->irq_clear(ap);
	ap->ops->sff_irq_clear(ap);


	spin_unlock_irqrestore(ap->lock, flags);
	spin_unlock_irqrestore(ap->lock, flags);


@@ -2153,7 +2156,7 @@ void ata_bmdma_setup(struct ata_queued_cmd *qc)
	iowrite8(dmactl, ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
	iowrite8(dmactl, ap->ioaddr.bmdma_addr + ATA_DMA_CMD);


	/* issue r/w command */
	/* issue r/w command */
	ap->ops->exec_command(ap, &qc->tf);
	ap->ops->sff_exec_command(ap, &qc->tf);
}
}


/**
/**
@@ -2277,7 +2280,7 @@ void ata_bus_reset(struct ata_port *ap)
		devmask |= (1 << 1);
		devmask |= (1 << 1);


	/* select device 0 again */
	/* select device 0 again */
	ap->ops->dev_select(ap, 0);
	ap->ops->sff_dev_select(ap, 0);


	/* issue bus reset */
	/* issue bus reset */
	if (ap->flags & ATA_FLAG_SRST) {
	if (ap->flags & ATA_FLAG_SRST) {
@@ -2295,9 +2298,9 @@ void ata_bus_reset(struct ata_port *ap)


	/* is double-select really necessary? */
	/* is double-select really necessary? */
	if (device[1].class != ATA_DEV_NONE)
	if (device[1].class != ATA_DEV_NONE)
		ap->ops->dev_select(ap, 1);
		ap->ops->sff_dev_select(ap, 1);
	if (device[0].class != ATA_DEV_NONE)
	if (device[0].class != ATA_DEV_NONE)
		ap->ops->dev_select(ap, 0);
		ap->ops->sff_dev_select(ap, 0);


	/* if no devices were detected, disable this port */
	/* if no devices were detected, disable this port */
	if ((device[0].class == ATA_DEV_NONE) &&
	if ((device[0].class == ATA_DEV_NONE) &&
+10 −10
Original line number Original line Diff line number Diff line
@@ -1264,7 +1264,7 @@ static void bfin_freeze(struct ata_port *ap)
	 * ATA_NIEN manipulation.  Also, many controllers fail to mask
	 * ATA_NIEN manipulation.  Also, many controllers fail to mask
	 * previously pending IRQ on ATA_NIEN assertion.  Clear it.
	 * previously pending IRQ on ATA_NIEN assertion.  Clear it.
	 */
	 */
	ap->ops->check_status(ap);
	ap->ops->sff_check_status(ap);


	bfin_irq_clear(ap);
	bfin_irq_clear(ap);
}
}
@@ -1357,18 +1357,18 @@ static const struct ata_port_operations bfin_pata_ops = {
	.set_piomode		= bfin_set_piomode,
	.set_piomode		= bfin_set_piomode,
	.set_dmamode		= bfin_set_dmamode,
	.set_dmamode		= bfin_set_dmamode,


	.tf_load		= bfin_tf_load,
	.sff_tf_load		= bfin_tf_load,
	.tf_read		= bfin_tf_read,
	.sff_tf_read		= bfin_tf_read,
	.exec_command		= bfin_exec_command,
	.sff_exec_command	= bfin_exec_command,
	.check_status		= bfin_check_status,
	.sff_check_status	= bfin_check_status,
	.check_altstatus	= bfin_check_altstatus,
	.sff_check_altstatus	= bfin_check_altstatus,
	.dev_select		= bfin_dev_select,
	.sff_dev_select		= bfin_dev_select,


	.bmdma_setup		= bfin_bmdma_setup,
	.bmdma_setup		= bfin_bmdma_setup,
	.bmdma_start		= bfin_bmdma_start,
	.bmdma_start		= bfin_bmdma_start,
	.bmdma_stop		= bfin_bmdma_stop,
	.bmdma_stop		= bfin_bmdma_stop,
	.bmdma_status		= bfin_bmdma_status,
	.bmdma_status		= bfin_bmdma_status,
	.data_xfer		= bfin_data_xfer,
	.sff_data_xfer		= bfin_data_xfer,


	.qc_prep		= ata_noop_qc_prep,
	.qc_prep		= ata_noop_qc_prep,


@@ -1378,8 +1378,8 @@ static const struct ata_port_operations bfin_pata_ops = {
	.postreset		= bfin_postreset,
	.postreset		= bfin_postreset,
	.post_internal_cmd	= bfin_bmdma_stop,
	.post_internal_cmd	= bfin_bmdma_stop,


	.irq_clear		= bfin_irq_clear,
	.sff_irq_clear		= bfin_irq_clear,
	.irq_on			= bfin_irq_on,
	.sff_irq_on		= bfin_irq_on,


	.port_start		= bfin_port_start,
	.port_start		= bfin_port_start,
	.port_stop		= bfin_port_stop,
	.port_stop		= bfin_port_stop,
Loading