ide: use ->data_phase to set ->handler in do_rw_taskfile()
PATCH 5/9 ide: use ->data_phase to set ->handler in do_rw_taskfile()
* Use ->data_phase to set ->handler in do_rw_taskfile() instead of setting ->handler in callers of ide_raw_taskfile()/do_rw_taskfile().
* Unexport task_no_data_intr() and make it static.
There should be no functionality changes caused by this patch.
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
--- drivers/ide/ide-disk.c | 2 -- drivers/ide/ide-io.c | 1 - drivers/ide/ide-taskfile.c | 16 ++++++++++------ include/linux/ide.h | 1 - 4 files changed, 10 insertions(+), 10 deletions(-)
drivers/ide/ide-disk.c +0 -2
@@ -544,7 +544,6 @@ static int get_smart_data(ide_drive_t *d tf->command =WIN_SMART ; args.tf_flags =IDE_TFLAG_OUT_TF |IDE_TFLAG_OUT_DEVICE ; args.data_phase =TASKFILE_IN ; - args.handler = task_in_intr; (void )smart_enable (drive);return ide_raw_taskfile (drive, &args, buf,1 ); }
@@ -634,7 +633,6 @@ static void idedisk_prepare_flush(struct task.tf.command =WIN_FLUSH_CACHE ; task.tf_flags =IDE_TFLAG_OUT_TF |IDE_TFLAG_OUT_DEVICE ; task.data_phase =TASKFILE_NO_DATA ; - task.handler = task_no_data_intr; rq->cmd_type =REQ_TYPE_ATA_TASKFILE ; rq->cmd_flags |=REQ_SOFTBARRIER ;
drivers/ide/ide-io.c +0 -1
@@ -234,7 +234,6 @@ static ide_startstop_t ide_start_power_s out_do_tf: args->tf_flags =IDE_TFLAG_OUT_TF |IDE_TFLAG_OUT_DEVICE ; args->data_phase =TASKFILE_NO_DATA ; - args->handler = task_no_data_intr;return do_rw_taskfile (drive, args); }
drivers/ide/ide-taskfile.c +10 -6
@@ -128,7 +128,6 @@ int taskfile_lib_get_identify (ide_drive args.tf.command =WIN_PIDENTIFY ; args.tf_flags =IDE_TFLAG_OUT_TF |IDE_TFLAG_OUT_DEVICE ; args.data_phase =TASKFILE_IN ; - args.handler = task_in_intr;return ide_raw_taskfile (drive, &args, buf,1 ); }
@@ -151,6 +150,9 @@ static int inline task_dma_ok(ide_task_treturn 0 ; } +static ide_startstop_t task_no_data_intr (ide_drive_t *); +static ide_startstop_t task_out_intr (ide_drive_t *); +ide_startstop_t do_rw_taskfile (ide_drive_t *drive,ide_task_t *task) {ide_hwif_t *hwif =HWIF (drive);
@@ -173,12 +175,18 @@ ide_startstop_t do_rw_taskfile (ide_drivswitch (task->data_phase) {case TASKFILE_MULTI_OUT :case TASKFILE_OUT : + task->handler = task_out_intr; hwif->OUTBSYNC (drive, tf->command,IDE_COMMAND_REG );ndelay (400 );/* FIXME */ return pre_task_out_intr (drive, task->rq);case TASKFILE_MULTI_IN :case TASKFILE_IN : + task->handler = task_in_intr; +/* fall-through */ case TASKFILE_NO_DATA : +/* WIN_{SPECIFY,RESTORE,SETMULT} use custom handlers */ +if (task->handler ==NULL ) + task->handler = task_no_data_intr;ide_execute_command (drive, tf->command, task->handler,WAIT_WORSTCASE ,NULL );return ide_started;default :
@@ -248,7 +256,7 @@ ide_startstop_t recal_intr (ide_drive_t/* * Handler for commands without a data phase */ -ide_startstop_t task_no_data_intr (ide_drive_t *drive) +static ide_startstop_t task_no_data_intr (ide_drive_t *drive) {ide_task_t *args =HWGROUP (drive)->rq->special;ide_hwif_t *hwif =HWIF (drive);
@@ -544,7 +552,6 @@ EXPORT_SYMBOL(ide_raw_taskfile);int ide_no_data_taskfile (ide_drive_t *drive,ide_task_t *task) { task->data_phase =TASKFILE_NO_DATA ; - task->handler = task_no_data_intr;return ide_raw_taskfile (drive, task,NULL ,0 ); }
@@ -667,7 +674,6 @@ int ide_taskfile_ioctl (ide_drive_t *dri }/* fall through */ case TASKFILE_OUT : - args.handler = &task_out_intr;/* fall through */ case TASKFILE_OUT_DMAQ :case TASKFILE_OUT_DMA :
@@ -685,7 +691,6 @@ int ide_taskfile_ioctl (ide_drive_t *dri }/* fall through */ case TASKFILE_IN : - args.handler = &task_in_intr;/* fall through */ case TASKFILE_IN_DMAQ :case TASKFILE_IN_DMA :
@@ -693,7 +698,6 @@ int ide_taskfile_ioctl (ide_drive_t *dri data_buf = inbuf;break ;case TASKFILE_NO_DATA : - args.handler = &task_no_data_intr;break ;default : err = -EFAULT ;
include/linux/ide.h +0 -1
@@ -980,7 +980,6 @@ extern ide_startstop_t do_rw_taskfile(idextern ide_startstop_t set_multmode_intr (ide_drive_t *);extern ide_startstop_t set_geometry_intr (ide_drive_t *);extern ide_startstop_t recal_intr (ide_drive_t *); -extern ide_startstop_t task_no_data_intr (ide_drive_t *);extern ide_startstop_t task_in_intr (ide_drive_t *);extern ide_startstop_t pre_task_out_intr (ide_drive_t *,struct request *);
Quoted 8 lines · Bartlomiej Zolnierkiewicz
* Use ->data_phase to set ->handler in
do_rw_taskfile()instead of setting ->handler in callers of ide_raw_taskfile()/do_rw_taskfile().* Unexport
task_no_data_intr()and make it static.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