tridentfb: fix hang on Blade3D with CONFIG_CC_OPTIMIZE_FOR_SIZE
PATCH 1/1 tridentfb: fix hang on Blade3D with CONFIG_CC_OPTIMIZE_FOR_SIZE
When the kernel is compiled with -Os (CONFIG_CC_OPTIMIZE_FOR_SIZE), tridentfb hangs the machine upon load with Blade3D cards unless acceleration is disabled.
This is caused by memcpy() which copies data byte-by-byte (rep movsb) when compiled with -Os. The card does not like that - it requires 32-bit access.
Use iowrite_32() instead.
Signed-off-by Ondrej Zary <[email protected]>
--- drivers/video/fbdev/tridentfb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/video/fbdev/tridentfb.c +1 -1
@@ -226,7 +226,7 @@ static void blade_image_blit(struct tridentfb_par *par, const char *data,writemmr (par,DST1 ,point (x, y));writemmr (par,DST2 ,point (x + w -1 , y + h -1 )); -memcpy (par->io_virt +0x10000 , data,4 * size); +iowrite32_rep (par->io_virt +0x10000 , data, size); } static void blade_copy_rect(struct tridentfb_par *par,
Signature · 1 line
Ondrej Zary