staging: dgnc: replace usleep_range with udelay
authorAishwarya Pant <aishpant@gmail.com>
Wed, 1 Mar 2017 12:36:30 +0000 (18:06 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 7 Mar 2017 06:37:01 +0000 (07:37 +0100)
udelay is impelmented using a busy-wait loop and consumes CPU cycles
while usleep_range is implemented using interrupts.cls_flush_uart_write()
is called after a channel lock is acquired i.e. an atomic context.
Hence delay in this method should use udelay instead of usleep_range.

Signed-off-by: Aishwarya Pant <aishpant@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dgnc/dgnc_cls.c

index 28a3e1676f070441624a43006745687bae5644a3..3112c25282a7b88d33a0434e21410ac40be0ba89 100644 (file)
@@ -609,7 +609,9 @@ static void cls_flush_uart_write(struct channel_t *ch)
 
        writeb((UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_XMIT),
               &ch->ch_cls_uart->isr_fcr);
-       usleep_range(10, 20);
+
+       /* Must use *delay family functions in atomic context */
+       udelay(10);
 
        ch->ch_flags |= (CH_TX_FIFO_EMPTY | CH_TX_FIFO_LWM);
 }