Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 138981
b: refs/heads/master
c: 6546bf6
h: refs/heads/master
i:
  138979: b425179
v: v3
  • Loading branch information
Dave Airlie committed Mar 13, 2009
1 parent 42b6ab5 commit 80ca9ea
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1847a549ac4db1272dea13d86331c492a2640b3b
refs/heads/master: 6546bf6d6cbf1f9ac350fd278a1d937d4bb9ad06
35 changes: 22 additions & 13 deletions trunk/drivers/gpu/drm/radeon/r600_cp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1630,6 +1630,7 @@ static void r600_cp_init_ring_buffer(struct drm_device *dev,
{
struct drm_radeon_master_private *master_priv;
u32 ring_start;
u64 rptr_addr;

if (((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV770))
r700_gfx_init(dev, dev_priv);
Expand Down Expand Up @@ -1684,21 +1685,20 @@ static void r600_cp_init_ring_buffer(struct drm_device *dev,

#if __OS_HAS_AGP
if (dev_priv->flags & RADEON_IS_AGP) {
/* XXX */
RADEON_WRITE(R600_CP_RB_RPTR_ADDR,
(dev_priv->ring_rptr->offset
- dev->agp->base + dev_priv->gart_vm_start) >> 8);
RADEON_WRITE(R600_CP_RB_RPTR_ADDR_HI, 0);
rptr_addr = dev_priv->ring_rptr->offset
- dev->agp->base +
dev_priv->gart_vm_start;
} else
#endif
{
RADEON_WRITE(R600_CP_RB_RPTR_ADDR,
dev_priv->ring_rptr->offset
- ((unsigned long) dev->sg->virtual)
+ dev_priv->gart_vm_start);

RADEON_WRITE(R600_CP_RB_RPTR_ADDR_HI, 0);
rptr_addr = dev_priv->ring_rptr->offset
- ((unsigned long) dev->sg->virtual)
+ dev_priv->gart_vm_start;
}
RADEON_WRITE(R600_CP_RB_RPTR_ADDR,
rptr_addr & 0xffffffff);
RADEON_WRITE(R600_CP_RB_RPTR_ADDR_HI,
upper_32_bits(rptr_addr));

#ifdef __BIG_ENDIAN
RADEON_WRITE(R600_CP_RB_CNTL,
Expand Down Expand Up @@ -1747,8 +1747,17 @@ static void r600_cp_init_ring_buffer(struct drm_device *dev,
* We simply put this behind the ring read pointer, this works
* with PCI GART as well as (whatever kind of) AGP GART
*/
RADEON_WRITE(R600_SCRATCH_ADDR, ((RADEON_READ(R600_CP_RB_RPTR_ADDR) << 8)
+ R600_SCRATCH_REG_OFFSET) >> 8);
{
u64 scratch_addr;

scratch_addr = RADEON_READ(R600_CP_RB_RPTR_ADDR);
scratch_addr |= ((u64)RADEON_READ(R600_CP_RB_RPTR_ADDR_HI)) << 32;
scratch_addr += R600_SCRATCH_REG_OFFSET;
scratch_addr >>= 8;
scratch_addr &= 0xffffffff;

RADEON_WRITE(R600_SCRATCH_ADDR, (uint32_t)scratch_addr);
}

RADEON_WRITE(R600_SCRATCH_UMSK, 0x7);

Expand Down

0 comments on commit 80ca9ea

Please sign in to comment.