delay: Fix ndelay() spuriously treated as udelay()

A recent rework on delay functions wrongly ended up calling __udelay()
instead of __ndelay() for nanosecond delays, increasing those by 1000.

As a result hangs have been observed on boot

Restore the right function calls.

Fixes: 19e2d91d8c ("delay: Rework udelay and ndelay")
Reported-by: Chen-Yu Tsai <wenst@chromium.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
Link: https://lore.kernel.org/all/20241121152931.51884-1-frederic@kernel.org
This commit is contained in:
Frederic Weisbecker 2024-11-21 16:29:31 +01:00 committed by Thomas Gleixner
parent f5807b0606
commit 4d17c25eaf

View File

@ -75,11 +75,11 @@ static __always_inline void ndelay(unsigned long nsec)
{ {
if (__builtin_constant_p(nsec)) { if (__builtin_constant_p(nsec)) {
if (nsec >= DELAY_CONST_MAX) if (nsec >= DELAY_CONST_MAX)
__bad_udelay(); __bad_ndelay();
else else
__const_udelay(nsec * NDELAY_CONST_MULT); __const_udelay(nsec * NDELAY_CONST_MULT);
} else { } else {
__udelay(nsec); __ndelay(nsec);
} }
} }
#define ndelay(x) ndelay(x) #define ndelay(x) ndelay(x)