drivers/staging/fbtft/fb_ra8875.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
The write_reg8_bus8 function uses udelay(100) twice to wait for the
display controller. In non-atomic contexts, fsleep() is the preferred
API as it automatically selects the most efficient sleeping mechanism
and avoids busy-waiting.
Update both instances to use fsleep(100).
Signed-off-by: Jose A. Perez de Azpillaga <azpijr@gmail.com>
---
v2: Switch from usleep_range() to fsleep() for modernizing delay calls.
---
drivers/staging/fbtft/fb_ra8875.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/fbtft/fb_ra8875.c b/drivers/staging/fbtft/fb_ra8875.c
index 0ab1de6647d0..fe95ec6da064 100644
--- a/drivers/staging/fbtft/fb_ra8875.c
+++ b/drivers/staging/fbtft/fb_ra8875.c
@@ -210,7 +210,7 @@ static void write_reg8_bus8(struct fbtft_par *par, int len, ...)
}
len--;
- udelay(100);
+ fsleep(100);
if (len) {
buf = (u8 *)par->buf;
@@ -231,7 +231,7 @@ static void write_reg8_bus8(struct fbtft_par *par, int len, ...)
/* restore user spi-speed */
par->fbtftops.write = fbtft_write_spi;
- udelay(100);
+ fsleep(100);
}
static int write_vmem16_bus8(struct fbtft_par *par, size_t offset, size_t len)
--
2.53.0
On Thu, Feb 26, 2026 at 12:40:36AM +0100, Jose A. Perez de Azpillaga wrote: > The write_reg8_bus8 function uses udelay(100) twice to wait for the write_reg8_bus8() > display controller. In non-atomic contexts, fsleep() is the preferred > API as it automatically selects the most efficient sleeping mechanism > and avoids busy-waiting. But how do you know this is the non-atomic context? > Update both instances to use fsleep(100). -- With Best Regards, Andy Shevchenko
Hi Andy, write_reg8_bus8() calls par->fbtftops.write(), which in this driver resolves to write_spi(), which calls spi_sync(). Since spi_sync() requires sleepable context, write_reg8_bus8() is transitively guaranteed to run in non-atomic context, making fsleep() safe to use. Best regards, Jose
© 2016 - 2026 Red Hat, Inc.