On Sun, 2018-12-16 at 13:43 -0800, Amir Mahdi Ghorbanian wrote:
> Replaced udelay() by the preferred usleep_range() function.
[]
> diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
[]
> @@ -626,7 +626,7 @@ static irqreturn_t nvec_interrupt(int irq, void *dev)
>               break;
>       case 2:         /* first byte after command */
>               if (status == (I2C_SL_IRQ | RNW | RCVD)) {
> -                     udelay(33);
> +                     usleep_range(0, 33);

Umm, this is not the same outcome.

udelay delays a minimum of 33 usecs.
usleep_range delays from min to max usecs.


kernel/time/timer.c: * usleep_range - Sleep for an approximate time
kernel/time/timer.c- * @min: Minimum time in usecs to sleep
kernel/time/timer.c- * @max: Maximum time in usecs to sleep
kernel/time/timer.c- *
kernel/time/timer.c- * In non-atomic context where the exact wakeup time is 
flexible, use
kernel/time/timer.c: * usleep_range() instead of udelay().  The sleep improves 
responsiveness
kernel/time/timer.c- * by avoiding the CPU-hogging busy-wait of udelay(), and 
the range reduces
kernel/time/timer.c- * power usage by allowing hrtimers to take advantage of an 
already-
kernel/time/timer.c- * scheduled interrupt instead of scheduling a new one just 
for this sleep.
kernel/time/timer.c- */

>                       if (nvec->rx->data[0] != 0x01) {
>                               dev_err(nvec->dev,
>                                       "Read without prior read command\n");
> @@ -713,7 +713,7 @@ static irqreturn_t nvec_interrupt(int irq, void *dev)
>        * We experience less incomplete messages with this delay than without
>        * it, but we don't know why. Help is appreciated.
>        */
> -     udelay(100);
> +     usleep_range(0, 100);

here too.


_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to