ide: remove IDE_TFLAG_NO_SELECT_MASK taskfile flag
PATCH 4/6 ide: remove IDE_TFLAG_NO_SELECT_MASK taskfile flag
Always call SELECT_MASK(..., 0) in ide_tf_load() (needs to be done to match ide_set_irq(..., 1)) and then remove IDE_TFLAG_NO_SELECT_MASK taskfile flag.
This change should only affect hpt366 and icside host drivers since ->maskproc(..., 0) for sgiioc4 is equivalent to ide_set_irq(..., 1).
--- drivers/ide/ide-cd.c | 4 ++-- drivers/ide/ide-disk.c | 3 +-- drivers/ide/ide-floppy.c | 3 +-- drivers/ide/ide-iops.c | 4 +--- drivers/ide/ide-tape.c | 3 +-- drivers/scsi/ide-scsi.c | 2 +- include/linux/ide.h | 1 - 7 files changed, 7 insertions(+), 13 deletions(-)
drivers/ide/ide-cd.c +2 -2
@@ -530,8 +530,8 @@ static ide_startstop_t cdrom_start_packe info->dma = !hwif->dma_ops->dma_setup (drive);/* set up the controller registers */ -ide_pktcmd_tf_load (drive,IDE_TFLAG_OUT_NSECT |IDE_TFLAG_OUT_LBAL | -IDE_TFLAG_NO_SELECT_MASK , xferlen, info->dma); +ide_pktcmd_tf_load (drive,IDE_TFLAG_OUT_NSECT |IDE_TFLAG_OUT_LBAL , + xferlen, info->dma);if (info->cd_flags &IDE_CD_FLAG_DRQ_INTERRUPT ) {/* waiting for CDB interrupt, not DMA yet. */
drivers/ide/ide-disk.c +1 -2
@@ -198,8 +198,7 @@ static ide_startstop_t __ide_do_rw_disk( }memset (&task,0 ,sizeof (task)); - task.tf_flags =IDE_TFLAG_NO_SELECT_MASK ;/* FIXME? */ - task.tf_flags |= (IDE_TFLAG_TF |IDE_TFLAG_DEVICE ); + task.tf_flags =IDE_TFLAG_TF |IDE_TFLAG_DEVICE ;if (drive->select.b.lba) {if (lba48) {
drivers/ide/ide-floppy.c +1 -2
@@ -667,8 +667,7 @@ static ide_startstop_t idefloppy_issue_pif ((pc->flags &PC_FLAG_DMA_RECOMMENDED ) && drive->using_dma) dma = !hwif->dma_ops->dma_setup (drive); -ide_pktcmd_tf_load (drive,IDE_TFLAG_NO_SELECT_MASK | -IDE_TFLAG_OUT_DEVICE , bcount, dma); +ide_pktcmd_tf_load (drive,IDE_TFLAG_OUT_DEVICE , bcount, dma);if (dma) {/* Begin DMA, if necessary */
drivers/ide/ide-iops.c +1 -3
@@ -121,9 +121,7 @@ static void ide_tf_load(ide_drive_t *driHIHI =0xFF ;ide_set_irq (drive,1 ); - -if ((task->tf_flags &IDE_TFLAG_NO_SELECT_MASK ) ==0 ) -SELECT_MASK (drive,0 ); +SELECT_MASK (drive,0 );if (task->tf_flags &IDE_TFLAG_OUT_DATA ) {u16 data = (tf->hob_data <<8 ) | tf->data;
drivers/ide/ide-tape.c +1 -2
@@ -1046,8 +1046,7 @@ static ide_startstop_t idetape_issue_pc(if ((pc->flags &PC_FLAG_DMA_RECOMMENDED ) && drive->using_dma) dma_ok = !hwif->dma_ops->dma_setup (drive); -ide_pktcmd_tf_load (drive,IDE_TFLAG_NO_SELECT_MASK | -IDE_TFLAG_OUT_DEVICE , bcount, dma_ok); +ide_pktcmd_tf_load (drive,IDE_TFLAG_OUT_DEVICE , bcount, dma_ok);if (dma_ok)/* Will begin DMA later */
drivers/scsi/ide-scsi.c +1 -1
@@ -564,7 +564,7 @@ static ide_startstop_t idescsi_issue_pc( hwif->sg_mapped =0 ; } -ide_pktcmd_tf_load (drive,IDE_TFLAG_NO_SELECT_MASK , bcount, dma); +ide_pktcmd_tf_load (drive,0 , bcount, dma);if (dma) pc->flags |=PC_FLAG_DMA_OK ;
include/linux/ide.h +0 -1
@@ -854,7 +854,6 @@ extern void ide_end_drive_cmd(ide_drive_enum {IDE_TFLAG_LBA48 = (1 <<0 ), -IDE_TFLAG_NO_SELECT_MASK = (1 <<1 ),IDE_TFLAG_FLAGGED = (1 <<2 ),IDE_TFLAG_OUT_DATA = (1 <<3 ),IDE_TFLAG_OUT_HOB_FEATURE = (1 <<4 ),
Quoted 6 lines · Bartlomiej Zolnierkiewicz
Always call
SELECT_MASK(..., 0)inide_tf_load()(needs to be done to matchide_set_irq(..., 1)) and then removeIDE_TFLAG_NO_SELECT_MASKtaskfile flag.This change should only affect hpt366 and icside host drivers since ->maskproc(..., 0) for sgiioc4 is equivalent to
ide_set_irq(..., 1).
Provided the two channels on icside are serialised (so IDE doesn't try to enable IRQs on both channels at the same time) it shouldn't be a problem.
However, since I don't use this driver anymore (using the PATA version instead) I don't feel it's right for me to ack this change.
Signature · 3 lines
Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of:
Quoted 11 lines · Russell King
Quoted 6 lines · Bartlomiej Zolnierkiewicz
Always call
SELECT_MASK(..., 0)inide_tf_load()(needs to be done to matchide_set_irq(..., 1)) and then removeIDE_TFLAG_NO_SELECT_MASKtaskfile flag.This change should only affect hpt366 and icside host drivers since ->maskproc(..., 0) for sgiioc4 is equivalent to
ide_set_irq(..., 1).Provided the two channels on icside are serialised (so IDE doesn't try to enable IRQs on both channels at the same time) it shouldn't be a problem.
Yep, they are serialized.
Quoted 2 lines
However, since I don't use this driver anymore (using the PATA version instead) I don't feel it's right for me to ack this change.
Thanks for taking a look anyway.
Bart