Эх сурвалжийг харах

drm/amdgpu: add a ring func for vcn start command

Needed for the proper command sequence for VCN.

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Leo Liu 8 жил өмнө
parent
commit
ef44f8541e

+ 3 - 0
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c

@@ -169,6 +169,9 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
 		dma_fence_put(tmp);
 		dma_fence_put(tmp);
 	}
 	}
 
 
+	if (ring->funcs->insert_start)
+		ring->funcs->insert_start(ring);
+
 	if (vm) {
 	if (vm) {
 		r = amdgpu_vm_flush(ring, job);
 		r = amdgpu_vm_flush(ring, job);
 		if (r) {
 		if (r) {

+ 1 - 0
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h

@@ -132,6 +132,7 @@ struct amdgpu_ring_funcs {
 	int (*test_ib)(struct amdgpu_ring *ring, long timeout);
 	int (*test_ib)(struct amdgpu_ring *ring, long timeout);
 	/* insert NOP packets */
 	/* insert NOP packets */
 	void (*insert_nop)(struct amdgpu_ring *ring, uint32_t count);
 	void (*insert_nop)(struct amdgpu_ring *ring, uint32_t count);
+	void (*insert_start)(struct amdgpu_ring *ring);
 	void (*insert_end)(struct amdgpu_ring *ring);
 	void (*insert_end)(struct amdgpu_ring *ring);
 	/* pad the indirect buffer to the necessary number of dw */
 	/* pad the indirect buffer to the necessary number of dw */
 	void (*pad_ib)(struct amdgpu_ring *ring, struct amdgpu_ib *ib);
 	void (*pad_ib)(struct amdgpu_ring *ring, struct amdgpu_ib *ib);