Commit 0c8a6c7aead1d3be85ce53e3aaacd52e38ede03e
1 parent
0578042db3
Exists in
master
and in
4 other branches
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); |
include/linux/ide.h
... | ... | @@ -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, |