diff options
-rw-r--r-- | drivers/scsi/libata-core.c | 25 | ||||
-rw-r--r-- | include/linux/libata.h | 2 |
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 | |||
3628 | void 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); | |||
5675 | EXPORT_SYMBOL_GPL(ata_interrupt); | 5699 | EXPORT_SYMBOL_GPL(ata_interrupt); |
5676 | EXPORT_SYMBOL_GPL(ata_mmio_data_xfer); | 5700 | EXPORT_SYMBOL_GPL(ata_mmio_data_xfer); |
5677 | EXPORT_SYMBOL_GPL(ata_pio_data_xfer); | 5701 | EXPORT_SYMBOL_GPL(ata_pio_data_xfer); |
5702 | EXPORT_SYMBOL_GPL(ata_pio_data_xfer_noirq); | ||
5678 | EXPORT_SYMBOL_GPL(ata_qc_prep); | 5703 | EXPORT_SYMBOL_GPL(ata_qc_prep); |
5679 | EXPORT_SYMBOL_GPL(ata_noop_qc_prep); | 5704 | EXPORT_SYMBOL_GPL(ata_noop_qc_prep); |
5680 | EXPORT_SYMBOL_GPL(ata_bmdma_setup); | 5705 | EXPORT_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); |
652 | extern void ata_pio_data_xfer(struct ata_device *adev, unsigned char *buf, | 652 | extern 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); |
654 | extern void ata_pio_data_xfer_noirq(struct ata_device *adev, unsigned char *buf, | ||
655 | unsigned int buflen, int write_data); | ||
654 | extern void ata_qc_prep(struct ata_queued_cmd *qc); | 656 | extern void ata_qc_prep(struct ata_queued_cmd *qc); |
655 | extern void ata_noop_qc_prep(struct ata_queued_cmd *qc); | 657 | extern void ata_noop_qc_prep(struct ata_queued_cmd *qc); |
656 | extern unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc); | 658 | extern unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc); |