atyfb: speed up Mach64 cursor
Save one fifo entry on cursor enabling and disabling. Save another fifo entry for FB_CUR_SETPOS operation by removing redundant one. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
84d9077b33
Коммит
2f682fae61
|
@ -77,9 +77,13 @@ static int atyfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
|
|||
if (par->asleep)
|
||||
return -EPERM;
|
||||
|
||||
/* Hide cursor */
|
||||
wait_for_fifo(1, par);
|
||||
aty_st_le32(GEN_TEST_CNTL, aty_ld_le32(GEN_TEST_CNTL, par) & ~HWCURSOR_ENABLE, par);
|
||||
if (cursor->enable)
|
||||
aty_st_le32(GEN_TEST_CNTL, aty_ld_le32(GEN_TEST_CNTL, par)
|
||||
| HWCURSOR_ENABLE, par);
|
||||
else
|
||||
aty_st_le32(GEN_TEST_CNTL, aty_ld_le32(GEN_TEST_CNTL, par)
|
||||
& ~HWCURSOR_ENABLE, par);
|
||||
|
||||
/* set position */
|
||||
if (cursor->set & FB_CUR_SETPOS) {
|
||||
|
@ -109,7 +113,7 @@ static int atyfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
|
|||
y<<=1;
|
||||
h<<=1;
|
||||
}
|
||||
wait_for_fifo(4, par);
|
||||
wait_for_fifo(3, par);
|
||||
aty_st_le32(CUR_OFFSET, (info->fix.smem_len >> 3) + (yoff << 1), par);
|
||||
aty_st_le32(CUR_HORZ_VERT_OFF,
|
||||
((u32) (64 - h + yoff) << 16) | xoff, par);
|
||||
|
@ -177,11 +181,6 @@ static int atyfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
|
|||
}
|
||||
}
|
||||
|
||||
if (cursor->enable) {
|
||||
wait_for_fifo(1, par);
|
||||
aty_st_le32(GEN_TEST_CNTL, aty_ld_le32(GEN_TEST_CNTL, par)
|
||||
| HWCURSOR_ENABLE, par);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче