aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/libata-core.c25
-rw-r--r--include/linux/libata.h2
2 files changed, 27 insertions, 0 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index 074a46e5bbdd..f19fe662f0ca 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -3612,6 +3612,30 @@ void ata_pio_data_xfer(struct ata_device *adev, unsigned char *buf,
3612} 3612}
3613 3613
3614/** 3614/**
3615 * ata_pio_data_xfer_noirq - Transfer data by PIO
3616 * @adev: device to target
3617 * @buf: data buffer
3618 * @buflen: buffer length
3619 * @write_data: read/write
3620 *
3621 * Transfer data from/to the device data register by PIO. Do the
3622 * transfer with interrupts disabled.
3623 *
3624 * LOCKING:
3625 * Inherited from caller.
3626 */
3627
3628void ata_pio_data_xfer_noirq(struct ata_device *adev, unsigned char *buf,
3629 unsigned int buflen, int write_data)
3630{
3631 unsigned long flags;
3632 local_irq_save(flags);
3633 ata_pio_data_xfer(adev, buf, buflen, write_data);
3634 local_irq_restore(flags);
3635}
3636
3637
3638/**
3615 * ata_pio_sector - Transfer ATA_SECT_SIZE (512 bytes) of data. 3639 * ata_pio_sector - Transfer ATA_SECT_SIZE (512 bytes) of data.
3616 * @qc: Command on going 3640 * @qc: Command on going
3617 * 3641 *
@@ -5675,6 +5699,7 @@ EXPORT_SYMBOL_GPL(ata_host_stop);
5675EXPORT_SYMBOL_GPL(ata_interrupt); 5699EXPORT_SYMBOL_GPL(ata_interrupt);
5676EXPORT_SYMBOL_GPL(ata_mmio_data_xfer); 5700EXPORT_SYMBOL_GPL(ata_mmio_data_xfer);
5677EXPORT_SYMBOL_GPL(ata_pio_data_xfer); 5701EXPORT_SYMBOL_GPL(ata_pio_data_xfer);
5702EXPORT_SYMBOL_GPL(ata_pio_data_xfer_noirq);
5678EXPORT_SYMBOL_GPL(ata_qc_prep); 5703EXPORT_SYMBOL_GPL(ata_qc_prep);
5679EXPORT_SYMBOL_GPL(ata_noop_qc_prep); 5704EXPORT_SYMBOL_GPL(ata_noop_qc_prep);
5680EXPORT_SYMBOL_GPL(ata_bmdma_setup); 5705EXPORT_SYMBOL_GPL(ata_bmdma_setup);
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 9c60b4a4e2fd..b0ee1c1437d6 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -651,6 +651,8 @@ extern void ata_mmio_data_xfer(struct ata_device *adev, unsigned char *buf,
651 unsigned int buflen, int write_data); 651 unsigned int buflen, int write_data);
652extern void ata_pio_data_xfer(struct ata_device *adev, unsigned char *buf, 652extern void ata_pio_data_xfer(struct ata_device *adev, unsigned char *buf,
653 unsigned int buflen, int write_data); 653 unsigned int buflen, int write_data);
654extern void ata_pio_data_xfer_noirq(struct ata_device *adev, unsigned char *buf,
655 unsigned int buflen, int write_data);
654extern void ata_qc_prep(struct ata_queued_cmd *qc); 656extern void ata_qc_prep(struct ata_queued_cmd *qc);
655extern void ata_noop_qc_prep(struct ata_queued_cmd *qc); 657extern void ata_noop_qc_prep(struct ata_queued_cmd *qc);
656extern unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc); 658extern unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc);