ide: add ide_pktcmd_tf_load() helper
PATCH 10/15 ide: add ide_pktcmd_tf_load() helper
Add ide_pktcmd_tf_load() helper and convert ATAPI device drivers to use it.
There should be no functionality changes caused by this patch.
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
--- drivers/ide/ide-cd.c | 10 ++-------- drivers/ide/ide-floppy.c | 9 ++------- drivers/ide/ide-io.c | 16 ++++++++++++++++ drivers/ide/ide-tape.c | 9 +++------ drivers/scsi/ide-scsi.c | 6 +----- include/linux/ide.h | 2 ++ 6 files changed, 26 insertions(+), 26 deletions(-)
drivers/ide/ide-cd.c +2 -8
@@ -922,14 +922,8 @@ static ide_startstop_t cdrom_start_packe info->dma = !hwif->dma_setup (drive);/* Set up the controller registers. */ -if (IDE_CONTROL_REG ) -HWIF (drive)->OUTB (drive->ctl,IDE_CONTROL_REG ); -HWIF (drive)->OUTB (info->dma,IDE_FEATURE_REG ); -HWIF (drive)->OUTB (0 ,IDE_IREASON_REG ); -HWIF (drive)->OUTB (0 ,IDE_SECTOR_REG ); - -HWIF (drive)->OUTB (xferlen &0xff ,IDE_BCOUNTL_REG ); -HWIF (drive)->OUTB (xferlen >>8 ,IDE_BCOUNTH_REG ); +ide_pktcmd_tf_load (drive,IDE_TFLAG_OUT_NSECT |IDE_TFLAG_OUT_LBAL | +IDE_TFLAG_NO_SELECT_MASK , xferlen, info->dma);if (CDROM_CONFIG_FLAGS (drive)->drq_interrupt) {/* waiting for CDB interrupt, not DMA yet. */
drivers/ide/ide-floppy.c +2 -7
@@ -1067,13 +1067,8 @@ static ide_startstop_t idefloppy_issue_pif (test_bit (PC_DMA_RECOMMENDED , &pc->flags) && drive->using_dma) dma = !hwif->dma_setup (drive); -if (IDE_CONTROL_REG ) -HWIF (drive)->OUTB (drive->ctl,IDE_CONTROL_REG ); -/* Use PIO/DMA */ - hwif->OUTB (dma,IDE_FEATURE_REG ); - hwif->OUTB (bcount &0xff ,IDE_BCOUNTL_REG ); - hwif->OUTB ((bcount >>8 ) &0xff ,IDE_BCOUNTH_REG ); -HWIF (drive)->OUTB (drive->select.all,IDE_SELECT_REG ); +ide_pktcmd_tf_load (drive,IDE_TFLAG_NO_SELECT_MASK | +IDE_TFLAG_OUT_DEVICE , bcount, dma);if (dma) {/* Begin DMA, if necessary */ set_bit (PC_DMA_IN_PROGRESS , &pc->flags);
drivers/ide/ide-io.c +16 -0
@@ -1732,3 +1732,19 @@ int ide_do_drive_cmd (ide_drive_t *drive }EXPORT_SYMBOL (ide_do_drive_cmd); + +void ide_pktcmd_tf_load (ide_drive_t *drive,u32 tf_flags,u16 bcount,u8 dma) +{ +ide_task_t task; + +memset (&task,0 ,sizeof (task)); + task.tf_flags =IDE_TFLAG_OUT_LBAH |IDE_TFLAG_OUT_LBAM | +IDE_TFLAG_OUT_FEATURE | tf_flags; + task.tf.feature = dma;/* Use PIO/DMA */ + task.tf.lbam = bcount &0xff ; + task.tf.lbah = (bcount >>8 ) &0xff ; + +ide_tf_load (drive, &task); +} + +EXPORT_SYMBOL_GPL (ide_pktcmd_tf_load);
drivers/ide/ide-tape.c +3 -6
@@ -2171,12 +2171,9 @@ static ide_startstop_t idetape_issue_pacif (test_bit (PC_DMA_RECOMMENDED , &pc->flags) && drive->using_dma) dma_ok = !hwif->dma_setup (drive); -if (IDE_CONTROL_REG ) - hwif->OUTB (drive->ctl,IDE_CONTROL_REG ); - hwif->OUTB (dma_ok ?1 :0 ,IDE_FEATURE_REG );/* Use PIO/DMA */ - hwif->OUTB (bcount &0xff ,IDE_BCOUNTL_REG ); - hwif->OUTB ((bcount >>8 ) &0xff ,IDE_BCOUNTH_REG ); - hwif->OUTB (drive->select.all,IDE_SELECT_REG ); +ide_pktcmd_tf_load (drive,IDE_TFLAG_NO_SELECT_MASK | +IDE_TFLAG_OUT_DEVICE , bcount, dma_ok); +if (dma_ok)/* Will begin DMA later */ set_bit (PC_DMA_IN_PROGRESS , &pc->flags);if (test_bit (IDETAPE_DRQ_INTERRUPT , &tape->flags)) {
drivers/scsi/ide-scsi.c +1 -5
@@ -595,12 +595,8 @@ static ide_startstop_t idescsi_issue_pc }SELECT_DRIVE (drive); -if (IDE_CONTROL_REG ) -HWIF (drive)->OUTB (drive->ctl,IDE_CONTROL_REG ); - hwif->OUTB (dma,IDE_FEATURE_REG ); - hwif->OUTB (bcount &0xff ,IDE_BCOUNTL_REG ); - hwif->OUTB ((bcount >>8 ) &0xff ,IDE_BCOUNTH_REG ); +ide_pktcmd_tf_load (drive,IDE_TFLAG_NO_SELECT_MASK , bcount, dma);if (dma)set_bit (PC_DMA_OK , &pc->flags);
include/linux/ide.h +2 -0
@@ -975,6 +975,8 @@ extern void QUIRK_LIST(ide_drive_t *);extern int drive_is_ready (ide_drive_t *); +void ide_pktcmd_tf_load (ide_drive_t *,u32 ,u16 ,u8 ); +/* * taskfile io for disks for now...and builds request from ide_ioctl */
Quoted 5 lines · Bartlomiej Zolnierkiewicz
Add
ide_pktcmd_tf_load()helper and convert ATAPI device drivers to use it.There should be no functionality changes caused by this patch.
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
Acked-by Sergei Shtylyov <[email protected]>
MBR, Sergei