diff options
author | Thong Thai <thong.thai@amd.com> | 2019-07-25 11:21:58 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2019-07-31 00:48:32 -0400 |
commit | 333fe325febabe3df2bc3019d4b97f879d8cef73 (patch) | |
tree | 14a264bc5d988d8e65b1dc46aad9fcfdc2680f3c | |
parent | d3b9f39d8417ee2f2cd87b5e5410015ce6f78491 (diff) |
drm/amd/amdgpu/vcn_v2_0: Mark RB commands as KMD commands
Sets the CMD_SOURCE bit for VCN 2.0 Decoder Ring Buffer commands. This
bit was previously set by the RBC HW on older firmware. Newer firmware
uses a SW RBC and this bit has to be set by the driver.
Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c | 12 |
2 files changed, 7 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h index 38f0d53a6381..dface275c81a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #define AMDGPU_VCN_HARVEST_VCN0 (1 << 0) | 35 | #define AMDGPU_VCN_HARVEST_VCN0 (1 << 0) |
36 | #define AMDGPU_VCN_HARVEST_VCN1 (1 << 1) | 36 | #define AMDGPU_VCN_HARVEST_VCN1 (1 << 1) |
37 | 37 | ||
38 | #define VCN_DEC_KMD_CMD 0x80000000 | ||
38 | #define VCN_DEC_CMD_FENCE 0x00000000 | 39 | #define VCN_DEC_CMD_FENCE 0x00000000 |
39 | #define VCN_DEC_CMD_TRAP 0x00000001 | 40 | #define VCN_DEC_CMD_TRAP 0x00000001 |
40 | #define VCN_DEC_CMD_WRITE_REG 0x00000004 | 41 | #define VCN_DEC_CMD_WRITE_REG 0x00000004 |
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c index a022e47f2a1d..80bb49736ee4 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c | |||
@@ -1494,7 +1494,7 @@ void vcn_v2_0_dec_ring_insert_start(struct amdgpu_ring *ring) | |||
1494 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.data0, 0)); | 1494 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.data0, 0)); |
1495 | amdgpu_ring_write(ring, 0); | 1495 | amdgpu_ring_write(ring, 0); |
1496 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); | 1496 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); |
1497 | amdgpu_ring_write(ring, VCN_DEC_CMD_PACKET_START << 1); | 1497 | amdgpu_ring_write(ring, VCN_DEC_KMD_CMD | (VCN_DEC_CMD_PACKET_START << 1)); |
1498 | } | 1498 | } |
1499 | 1499 | ||
1500 | /** | 1500 | /** |
@@ -1509,7 +1509,7 @@ void vcn_v2_0_dec_ring_insert_end(struct amdgpu_ring *ring) | |||
1509 | struct amdgpu_device *adev = ring->adev; | 1509 | struct amdgpu_device *adev = ring->adev; |
1510 | 1510 | ||
1511 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); | 1511 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); |
1512 | amdgpu_ring_write(ring, VCN_DEC_CMD_PACKET_END << 1); | 1512 | amdgpu_ring_write(ring, VCN_DEC_KMD_CMD | (VCN_DEC_CMD_PACKET_END << 1)); |
1513 | } | 1513 | } |
1514 | 1514 | ||
1515 | /** | 1515 | /** |
@@ -1556,7 +1556,7 @@ void vcn_v2_0_dec_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, | |||
1556 | amdgpu_ring_write(ring, upper_32_bits(addr) & 0xff); | 1556 | amdgpu_ring_write(ring, upper_32_bits(addr) & 0xff); |
1557 | 1557 | ||
1558 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); | 1558 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); |
1559 | amdgpu_ring_write(ring, VCN_DEC_CMD_FENCE << 1); | 1559 | amdgpu_ring_write(ring, VCN_DEC_KMD_CMD | (VCN_DEC_CMD_FENCE << 1)); |
1560 | 1560 | ||
1561 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.data0, 0)); | 1561 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.data0, 0)); |
1562 | amdgpu_ring_write(ring, 0); | 1562 | amdgpu_ring_write(ring, 0); |
@@ -1566,7 +1566,7 @@ void vcn_v2_0_dec_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, | |||
1566 | 1566 | ||
1567 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); | 1567 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); |
1568 | 1568 | ||
1569 | amdgpu_ring_write(ring, VCN_DEC_CMD_TRAP << 1); | 1569 | amdgpu_ring_write(ring, VCN_DEC_KMD_CMD | (VCN_DEC_CMD_TRAP << 1)); |
1570 | } | 1570 | } |
1571 | 1571 | ||
1572 | /** | 1572 | /** |
@@ -1612,7 +1612,7 @@ void vcn_v2_0_dec_ring_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg, | |||
1612 | 1612 | ||
1613 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); | 1613 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); |
1614 | 1614 | ||
1615 | amdgpu_ring_write(ring, VCN_DEC_CMD_REG_READ_COND_WAIT << 1); | 1615 | amdgpu_ring_write(ring, VCN_DEC_KMD_CMD | (VCN_DEC_CMD_REG_READ_COND_WAIT << 1)); |
1616 | } | 1616 | } |
1617 | 1617 | ||
1618 | void vcn_v2_0_dec_ring_emit_vm_flush(struct amdgpu_ring *ring, | 1618 | void vcn_v2_0_dec_ring_emit_vm_flush(struct amdgpu_ring *ring, |
@@ -1643,7 +1643,7 @@ void vcn_v2_0_dec_ring_emit_wreg(struct amdgpu_ring *ring, | |||
1643 | 1643 | ||
1644 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); | 1644 | amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0)); |
1645 | 1645 | ||
1646 | amdgpu_ring_write(ring, VCN_DEC_CMD_WRITE_REG << 1); | 1646 | amdgpu_ring_write(ring, VCN_DEC_KMD_CMD | (VCN_DEC_CMD_WRITE_REG << 1)); |
1647 | } | 1647 | } |
1648 | 1648 | ||
1649 | /** | 1649 | /** |