|
@@ -821,6 +821,20 @@ u32 r100_get_vblank_counter(struct radeon_device *rdev, int crtc)
|
|
|
return RREG32(RADEON_CRTC2_CRNT_FRAME);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * r100_ring_hdp_flush - flush Host Data Path via the ring buffer
|
|
|
+ * rdev: radeon device structure
|
|
|
+ * ring: ring buffer struct for emitting packets
|
|
|
+ */
|
|
|
+static void r100_ring_hdp_flush(struct radeon_device *rdev, struct radeon_ring *ring)
|
|
|
+{
|
|
|
+ radeon_ring_write(ring, PACKET0(RADEON_HOST_PATH_CNTL, 0));
|
|
|
+ radeon_ring_write(ring, rdev->config.r100.hdp_cntl |
|
|
|
+ RADEON_HDP_READ_BUFFER_INVALIDATE);
|
|
|
+ radeon_ring_write(ring, PACKET0(RADEON_HOST_PATH_CNTL, 0));
|
|
|
+ radeon_ring_write(ring, rdev->config.r100.hdp_cntl);
|
|
|
+}
|
|
|
+
|
|
|
/* Who ever call radeon_fence_emit should call ring_lock and ask
|
|
|
* for enough space (today caller are ib schedule and buffer move) */
|
|
|
void r100_fence_ring_emit(struct radeon_device *rdev,
|
|
@@ -1056,20 +1070,6 @@ void r100_gfx_set_wptr(struct radeon_device *rdev,
|
|
|
(void)RREG32(RADEON_CP_RB_WPTR);
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * r100_ring_hdp_flush - flush Host Data Path via the ring buffer
|
|
|
- * rdev: radeon device structure
|
|
|
- * ring: ring buffer struct for emitting packets
|
|
|
- */
|
|
|
-void r100_ring_hdp_flush(struct radeon_device *rdev, struct radeon_ring *ring)
|
|
|
-{
|
|
|
- radeon_ring_write(ring, PACKET0(RADEON_HOST_PATH_CNTL, 0));
|
|
|
- radeon_ring_write(ring, rdev->config.r100.hdp_cntl |
|
|
|
- RADEON_HDP_READ_BUFFER_INVALIDATE);
|
|
|
- radeon_ring_write(ring, PACKET0(RADEON_HOST_PATH_CNTL, 0));
|
|
|
- radeon_ring_write(ring, rdev->config.r100.hdp_cntl);
|
|
|
-}
|
|
|
-
|
|
|
static void r100_cp_load_microcode(struct radeon_device *rdev)
|
|
|
{
|
|
|
const __be32 *fw_data;
|