On Don, 2013-12-05 at 12:39 +1100, Benjamin Herrenschmidt wrote:
On Wed, 2013-12-04 at 19:05 -0500, Alex Deucher wrote:
Setting CP_RB_CNTL.BUF_SWAP causes the CP to use the selected byte swapping for just about everything accessed by the CP (rptr writeback, indirect buffers, etc.). Looks like the DMA ring supports and enables rptr writeback as well (DMA_RB_CNTL.DMA_RPTR_WRITEBACK_SWAP_ENABLE) so I think we can drop the swapping of the rptr writeback.
Obvious patch attached.
This works all the way back to r300 ?
I don't think so, as I have writeback working without this patch on the RV350 in this PowerBook. So I think this function needs to be split, probably between R600 and older.
Also, there's more code at least potentially affected by this, e.g. in:
* cik_compute_ring_get_rptr(), cik_compute_ring_get_wptr(), cik_compute_ring_set_wptr(), cik_get_ih_wptr() * si_get_ih_wptr() * evergreen_get_ih_wptr() * r600_get_ih_wptr() * radeon_fence_write(), radeon_fence_read() * radeon_ring_backup()