diff --git a/shared-core/radeon_cp.c b/shared-core/radeon_cp.c index 89d2a24..43ba689 100644 --- a/shared-core/radeon_cp.c +++ b/shared-core/radeon_cp.c @@ -16573,14 +16573,14 @@ static void radeon_cp_init_ring_buffer(struct drm_device * dev, #ifdef __BIG_ENDIAN RADEON_WRITE(RADEON_CP_RB_CNTL, RADEON_BUF_SWAP_32BIT | - (dev_priv->ring.fetch_size_l2ow << 18) | - (dev_priv->ring.rptr_update_l2qw << 8) | - dev_priv->ring.size_l2qw); + ((dev_priv->ring.fetch_size_l2ow & 0x3) << 18) | + ((dev_priv->ring.rptr_update_l2qw & 0x3f) << 8) | + ((dev_priv->ring.size_l2qw & 0x3f) << 0)); #else RADEON_WRITE(RADEON_CP_RB_CNTL, - (dev_priv->ring.fetch_size_l2ow << 18) | - (dev_priv->ring.rptr_update_l2qw << 8) | - dev_priv->ring.size_l2qw); + ((dev_priv->ring.fetch_size_l2ow & 0x3) << 18) | + ((dev_priv->ring.rptr_update_l2qw & 0x3f) << 8) | + ((dev_priv->ring.size_l2qw & 0x3f) << 0)); #endif /* Start with assuming that writeback doesn't work */