aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2007-05-08 01:48:39 -0400
committerDave Airlie <airlied@linux.ie>2007-05-08 01:48:39 -0400
commitef68d295508d52e792abf70d4f84461104d33b9d (patch)
treeaf18b6431392e34af5e6ab8b0bbf054ddbfc2801 /drivers/char
parenta0a6dd0b221260be1e3da725e6b49797e5fa7429 (diff)
via: Make sure we flush write-combining using a follow-up read.
Signed-off-by: Dave Airlie <airlied@linux.ie>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/drm/via_dma.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/char/drm/via_dma.c b/drivers/char/drm/via_dma.c
index 7635e859b879..13a9c5ca4593 100644
--- a/drivers/char/drm/via_dma.c
+++ b/drivers/char/drm/via_dma.c
@@ -436,8 +436,10 @@ static int via_hook_segment(drm_via_private_t * dev_priv,
436 436
437 paused = 0; 437 paused = 0;
438 via_flush_write_combine(); 438 via_flush_write_combine();
439 *dev_priv->last_pause_ptr = pause_addr_lo; 439 (void) *(volatile uint32_t *)(via_get_dma(dev_priv) -1);
440 *paused_at = pause_addr_lo;
440 via_flush_write_combine(); 441 via_flush_write_combine();
442 (void) *paused_at;
441 reader = *(dev_priv->hw_addr_ptr); 443 reader = *(dev_priv->hw_addr_ptr);
442 ptr = ((volatile char *)paused_at - dev_priv->dma_ptr) + 444 ptr = ((volatile char *)paused_at - dev_priv->dma_ptr) +
443 dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr + 4; 445 dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr + 4;
@@ -536,7 +538,7 @@ static void via_cmdbuf_start(drm_via_private_t * dev_priv)
536 &pause_addr_hi, &pause_addr_lo, 1) - 1; 538 &pause_addr_hi, &pause_addr_lo, 1) - 1;
537 539
538 via_flush_write_combine(); 540 via_flush_write_combine();
539 while(! *dev_priv->last_pause_ptr); 541 (void) *(volatile uint32_t *)dev_priv->last_pause_ptr;
540 542
541 VIA_WRITE(VIA_REG_TRANSET, (HC_ParaType_PreCR << 16)); 543 VIA_WRITE(VIA_REG_TRANSET, (HC_ParaType_PreCR << 16));
542 VIA_WRITE(VIA_REG_TRANSPACE, command); 544 VIA_WRITE(VIA_REG_TRANSPACE, command);