staging: dgap: use schedule_timeout_interruptible() instead of dgap_ms_sleep()
authorDaeseok Youn <daeseok.youn@gmail.com>
Tue, 16 Sep 2014 07:19:06 +0000 (16:19 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Sep 2014 23:53:57 +0000 (16:53 -0700)
Using schedule_timeout_interruptible() is exactly same as
setting a status of current process and calling  schedule_timeout().

Removes dgap_ms_sleep(), because this function is used
only when closing tty channel on dgap_tty_close().
And also removes ch_close_delay that is always set to 250
on dgap_tty_init().

Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dgap/dgap.c
drivers/staging/dgap/dgap.h

index 67da1d59dbff95a791a9937adedbf6156e1a6ad4..db8ccd12b70d4237806398aa3f6c4a3b3f518000 100644 (file)
@@ -180,7 +180,6 @@ static char *dgap_create_config_string(struct board_t *bd, char *string);
 static uint dgap_config_get_useintr(struct board_t *bd);
 static uint dgap_config_get_altpin(struct board_t *bd);
 
-static int dgap_ms_sleep(ulong ms);
 static void dgap_do_bios_load(struct board_t *brd, const u8 *ubios, int len);
 static void dgap_do_fep_load(struct board_t *brd, const u8 *ufep, int len);
 #ifdef DIGI_CONCENTRATORS_SUPPORTED
@@ -1198,26 +1197,6 @@ static void dgap_init_globals(void)
        init_timer(&dgap_poll_timer);
 }
 
-/************************************************************************
- *
- * Utility functions
- *
- ************************************************************************/
-
-/*
- * dgap_ms_sleep()
- *
- * Put the driver to sleep for x ms's
- *
- * Returns 0 if timed out, !0 (showing signal) if interrupted by a signal.
- */
-static int dgap_ms_sleep(ulong ms)
-{
-       current->state = TASK_INTERRUPTIBLE;
-       schedule_timeout((ms * HZ) / 1000);
-       return signal_pending(current);
-}
-
 /************************************************************************
  *
  * TTY Initialization/Cleanup Functions
@@ -1462,9 +1441,6 @@ static int dgap_tty_init(struct board_t *brd)
                ch->ch_tstart = 0;
                ch->ch_rstart = 0;
 
-               /* .25 second delay */
-               ch->ch_close_delay = 250;
-
                /*
                 * Set queue water marks, interrupt mask,
                 * and general tty parameters.
@@ -2297,12 +2273,13 @@ static void dgap_tty_close(struct tty_struct *tty, struct file *file)
                         * Go to sleep to ensure RTS/DTR
                         * have been dropped for modems to see it.
                         */
-                       if (ch->ch_close_delay) {
-                               spin_unlock_irqrestore(&ch->ch_lock,
-                                                      lock_flags);
-                               dgap_ms_sleep(ch->ch_close_delay);
-                               spin_lock_irqsave(&ch->ch_lock, lock_flags);
-                       }
+                       spin_unlock_irqrestore(&ch->ch_lock,
+                                       lock_flags);
+
+                       /* .25 second delay for dropping RTS/DTR */
+                       schedule_timeout_interruptible(msecs_to_jiffies(250));
+
+                       spin_lock_irqsave(&ch->ch_lock, lock_flags);
                }
 
                ch->pscan_state = 0;
index a0307b9992daf8e726e7f0bcf326fa705dafaa36..ba05c654fa6195fbf0a529864a9b589ff86af1c9 100644 (file)
@@ -982,9 +982,6 @@ struct channel_t {
        u32 ch_open_count;              /* open count                   */
        u32     ch_flags;               /* Channel flags                */
 
-       u32     ch_close_delay;         /* How long we should drop      */
-                                       /* RTS/DTR for                  */
-
        u32     ch_cpstime;             /* Time for CPS calculations    */
 
        tcflag_t ch_c_iflag;            /* channel iflags               */