|
@@ -55,6 +55,10 @@ static void radeonfb_prim_fillrect(struct radeonfb_info *rinfo,
|
|
|
OUTREG(DP_WRITE_MSK, 0xffffffff);
|
|
|
OUTREG(DP_CNTL, (DST_X_LEFT_TO_RIGHT | DST_Y_TOP_TO_BOTTOM));
|
|
|
|
|
|
+ radeon_fifo_wait(2);
|
|
|
+ OUTREG(DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL);
|
|
|
+ OUTREG(WAIT_UNTIL, (WAIT_2D_IDLECLEAN | WAIT_DMA_GUI_IDLE));
|
|
|
+
|
|
|
radeon_fifo_wait(2);
|
|
|
OUTREG(DST_Y_X, (region->dy << 16) | region->dx);
|
|
|
OUTREG(DST_WIDTH_HEIGHT, (region->width << 16) | region->height);
|
|
@@ -116,6 +120,10 @@ static void radeonfb_prim_copyarea(struct radeonfb_info *rinfo,
|
|
|
OUTREG(DP_CNTL, (xdir>=0 ? DST_X_LEFT_TO_RIGHT : 0)
|
|
|
| (ydir>=0 ? DST_Y_TOP_TO_BOTTOM : 0));
|
|
|
|
|
|
+ radeon_fifo_wait(2);
|
|
|
+ OUTREG(DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL);
|
|
|
+ OUTREG(WAIT_UNTIL, (WAIT_2D_IDLECLEAN | WAIT_DMA_GUI_IDLE));
|
|
|
+
|
|
|
radeon_fifo_wait(3);
|
|
|
OUTREG(SRC_Y_X, (sy << 16) | sx);
|
|
|
OUTREG(DST_Y_X, (dy << 16) | dx);
|