On Tue, Dec 10, 2013 at 10:04 AM, Alex Deucher alexdeucher@gmail.com wrote:
On Mon, Dec 9, 2013 at 9:20 PM, Michel Dänzer michel@daenzer.net wrote:
On Mon, 2013-12-09 at 19:48 -0500, Alex Deucher wrote:
-u32 cik_compute_ring_get_wptr(struct radeon_device *rdev,
struct radeon_ring *ring)
+u32 cik_compute_get_wptr(struct radeon_device *rdev,
struct radeon_ring *ring)
{ u32 wptr;
if (rdev->wb.enabled) {
wptr = le32_to_cpu(rdev->wb.wb[ring->wptr_offs/4]);
wptr = rdev->wb.wb[ring->wptr_offs/4]; } else { mutex_lock(&rdev->srbm_mutex); cik_srbm_select(rdev, ring->me, ring->pipe,
ring->queue, 0); @@ -4053,8 +4081,8 @@ u32 cik_compute_ring_get_wptr(struct radeon_device *rdev, return wptr; }
-void cik_compute_ring_set_wptr(struct radeon_device *rdev,
struct radeon_ring *ring)
+void cik_compute_set_wptr(struct radeon_device *rdev,
struct radeon_ring *ring)
{ rdev->wb.wb[ring->wptr_offs/4] = cpu_to_le32(ring->wptr);
I think this cpu_to_le32() needs to be dropped as well to match cik_compute_ring_get_wptr().
whoops, yeah, missed that one.
Updated patch attached.
Alex
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index b1f990d..e7c02a7 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -779,13 +779,11 @@ struct radeon_ring { volatile uint32_t *ring; unsigned rptr; unsigned rptr_offs;
unsigned rptr_reg; unsigned rptr_save_reg; u64 next_rptr_gpu_addr; volatile u32 *next_rptr_cpu_addr; unsigned wptr; unsigned wptr_old;
unsigned wptr_reg;
What's the motivation for removing these? Seems like keeping them would allow keeping this patch and the resulting code smaller (fewer function variants) and cleaner (no if/else/... for the register offsets in the variants).
I was trying to remove the asic specific info out of the ring struct and into the asic specific functions.
Alex