Commit 0c8a6c7aead1d3be85ce53e3aaacd52e38ede03e

Authored by Bartlomiej Zolnierkiewicz
1 parent 0578042db3

ide: add ide_do_start_stop() helper

* Add ide_do_start_stop() helper and convert ide-{floppy,tape}.c
  to use it.

* Remove no longer used idefloppy_create_start_stop_cmd()
  and idetape_create_load_unload_cmd().

There should be no functional changes caused by this patch.

Acked-by: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

Showing 4 changed files with 24 additions and 35 deletions Side-by-side Diff

drivers/ide/ide-atapi.c
... ... @@ -162,6 +162,21 @@
162 162 }
163 163 EXPORT_SYMBOL_GPL(ide_queue_pc_tail);
164 164  
  165 +int ide_do_start_stop(ide_drive_t *drive, struct gendisk *disk, int start)
  166 +{
  167 + struct ide_atapi_pc pc;
  168 +
  169 + ide_init_pc(&pc);
  170 + pc.c[0] = START_STOP;
  171 + pc.c[4] = start;
  172 +
  173 + if (drive->media == ide_tape)
  174 + pc.flags |= PC_FLAG_WAIT_FOR_DSC;
  175 +
  176 + return ide_queue_pc_tail(drive, disk, &pc);
  177 +}
  178 +EXPORT_SYMBOL_GPL(ide_do_start_stop);
  179 +
165 180 int ide_set_media_lock(ide_drive_t *drive, struct gendisk *disk, int on)
166 181 {
167 182 struct ide_atapi_pc pc;
drivers/ide/ide-floppy.c
... ... @@ -359,13 +359,6 @@
359 359 pc->req_xfer = length;
360 360 }
361 361  
362   -static void idefloppy_create_start_stop_cmd(struct ide_atapi_pc *pc, int start)
363   -{
364   - ide_init_pc(pc);
365   - pc->c[0] = GPCMD_START_STOP_UNIT;
366   - pc->c[4] = start;
367   -}
368   -
369 362 static void idefloppy_create_rw_cmd(idefloppy_floppy_t *floppy,
370 363 struct ide_atapi_pc *pc, struct request *rq,
371 364 unsigned long sector)
... ... @@ -800,10 +793,8 @@
800 793 ide_init_pc(&pc);
801 794 pc.c[0] = GPCMD_TEST_UNIT_READY;
802 795  
803   - if (ide_queue_pc_tail(drive, disk, &pc)) {
804   - idefloppy_create_start_stop_cmd(&pc, 1);
805   - (void)ide_queue_pc_tail(drive, disk, &pc);
806   - }
  796 + if (ide_queue_pc_tail(drive, disk, &pc))
  797 + ide_do_start_stop(drive, disk, 1);
807 798  
808 799 if (ide_floppy_get_capacity(drive)
809 800 && (filp->f_flags & O_NDELAY) == 0
... ... @@ -880,10 +871,8 @@
880 871  
881 872 ide_set_media_lock(drive, disk, prevent);
882 873  
883   - if (cmd == CDROMEJECT) {
884   - idefloppy_create_start_stop_cmd(pc, 2);
885   - (void)ide_queue_pc_tail(drive, disk, pc);
886   - }
  874 + if (cmd == CDROMEJECT)
  875 + ide_do_start_stop(drive, disk, 2);
887 876  
888 877 return 0;
889 878 }
drivers/ide/ide-tape.c
... ... @@ -1125,15 +1125,6 @@
1125 1125 pc->c[0] = TEST_UNIT_READY;
1126 1126 }
1127 1127  
1128   -static void idetape_create_load_unload_cmd(ide_drive_t *drive,
1129   - struct ide_atapi_pc *pc, int cmd)
1130   -{
1131   - ide_init_pc(pc);
1132   - pc->c[0] = START_STOP;
1133   - pc->c[4] = cmd;
1134   - pc->flags |= PC_FLAG_WAIT_FOR_DSC;
1135   -}
1136   -
1137 1128 static int idetape_wait_ready(ide_drive_t *drive, unsigned long timeout)
1138 1129 {
1139 1130 idetape_tape_t *tape = drive->driver_data;
... ... @@ -1153,9 +1144,7 @@
1153 1144 /* no media */
1154 1145 if (load_attempted)
1155 1146 return -ENOMEDIUM;
1156   - idetape_create_load_unload_cmd(drive, &pc,
1157   - IDETAPE_LU_LOAD_MASK);
1158   - ide_queue_pc_tail(drive, disk, &pc);
  1147 + ide_do_start_stop(drive, disk, IDETAPE_LU_LOAD_MASK);
1159 1148 load_attempted = 1;
1160 1149 /* not about to be ready */
1161 1150 } else if (!(tape->sense_key == 2 && tape->asc == 4 &&
... ... @@ -1836,9 +1825,7 @@
1836 1825 return 0;
1837 1826 case MTLOAD:
1838 1827 ide_tape_discard_merge_buffer(drive, 0);
1839   - idetape_create_load_unload_cmd(drive, &pc,
1840   - IDETAPE_LU_LOAD_MASK);
1841   - return ide_queue_pc_tail(drive, disk, &pc);
  1828 + return ide_do_start_stop(drive, disk, IDETAPE_LU_LOAD_MASK);
1842 1829 case MTUNLOAD:
1843 1830 case MTOFFL:
1844 1831 /*
... ... @@ -1850,9 +1837,7 @@
1850 1837 tape->door_locked = DOOR_UNLOCKED;
1851 1838 }
1852 1839 ide_tape_discard_merge_buffer(drive, 0);
1853   - idetape_create_load_unload_cmd(drive, &pc,
1854   - !IDETAPE_LU_LOAD_MASK);
1855   - retval = ide_queue_pc_tail(drive, disk, &pc);
  1840 + retval = ide_do_start_stop(drive, disk, !IDETAPE_LU_LOAD_MASK);
1856 1841 if (!retval)
1857 1842 clear_bit(IDE_AFLAG_MEDIUM_PRESENT, &drive->atapi_flags);
1858 1843 return retval;
1859 1844  
... ... @@ -1861,9 +1846,8 @@
1861 1846 return idetape_flush_tape_buffers(drive);
1862 1847 case MTRETEN:
1863 1848 ide_tape_discard_merge_buffer(drive, 0);
1864   - idetape_create_load_unload_cmd(drive, &pc,
  1849 + return ide_do_start_stop(drive, disk,
1865 1850 IDETAPE_LU_RETENSION_MASK | IDETAPE_LU_LOAD_MASK);
1866   - return ide_queue_pc_tail(drive, disk, &pc);
1867 1851 case MTEOM:
1868 1852 idetape_create_space_cmd(&pc, 0, IDETAPE_SPACE_TO_EOD);
1869 1853 return ide_queue_pc_tail(drive, disk, &pc);
... ... @@ -1142,6 +1142,7 @@
1142 1142 struct request *);
1143 1143 int ide_queue_pc_tail(ide_drive_t *, struct gendisk *, struct ide_atapi_pc *);
1144 1144  
  1145 +int ide_do_start_stop(ide_drive_t *, struct gendisk *, int);
1145 1146 int ide_set_media_lock(ide_drive_t *, struct gendisk *, int);
1146 1147  
1147 1148 ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc,