cdrom/sonycd535: replace schedule_timeout() with msleep()
PATCH 1/4 cdrom/sonycd535: replace schedule_timeout() with msleep()
From: Nishanth Aravamudan <[email protected]>
Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. Although TASK_INTERRUPTIBLE is used in the original code, the schedule_timeout() return conditions for such a state are not checked appropriately; therefore, TASK_UNINTERRUPTIBLE should be ok (and, hence, msleep()).
Signed-off-by Nishanth Aravamudan <[email protected]>
Signed-off-by Domen Puncer <[email protected]>
--- sonycd535.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-)
drivers/cdrom/sonycd535.c +3 -4
@@ -129,6 +129,7 @@#include <linux/mm.h> #include <linux/slab.h> #include <linux/init.h> +#include <linux/delay.h> #define REALLY_SLOW_IO #include <asm/system.h>
@@ -896,9 +897,8 @@ do_cdu535_request(request_queue_t * q) }if (readStatus ==BAD_STATUS ) {/* Sleep for a while, then retry */ -set_current_state (TASK_INTERRUPTIBLE );spin_unlock_irq (&sonycd535_lock); -schedule_timeout (RETRY_FOR_BAD_STATUS *HZ /10 ); +msleep (RETRY_FOR_BAD_STATUS *100 );spin_lock_irq (&sonycd535_lock); }#if DEBUG >0
@@ -1478,8 +1478,7 @@ static int __init sony535_init(void)/* look for the CD-ROM, follows the procedure in the DOS driver */ inb (select_unit_reg);/* wait for 40 18 Hz ticks (reverse-engineered from DOS driver) */ -set_current_state (TASK_INTERRUPTIBLE ); -schedule_timeout ((HZ +17 )*40 /18 ); +msleep (2222 );inb (result_reg);outb (0 , read_status_reg);/* does a reset? */
--