Skip to contentSkip to conversation

staging: dgnc: replace usleep_range with udelay

PATCH New Aishwarya Pant 1 participant 1 message Mar 1, 2017 Staging

lore
Share & tools
lore
#0 lore raw

PATCH v4 1/1 staging: dgnc: replace usleep_range with udelay

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.

---
Changes in v4:
- Fix comment format
- Edit line comment in code
Changes in v3:
- Add a comment in code udelay to ignore checkpatch warning
Changes in v2:
- Edit commit message to explain why udelay should be used

 drivers/staging/dgnc/dgnc_cls.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/staging/dgnc/dgnc_cls.c +3 -1
index 28a3e16..3112c25 100644
@@ -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);
 }
Signature · 1 line
2.7.4