diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | 7 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 8 |
2 files changed, 11 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h index 937c6d93089f..5dbc6aa33917 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | |||
| @@ -30,6 +30,13 @@ | |||
| 30 | #define AMDGPU_VCN_FIRMWARE_OFFSET 256 | 30 | #define AMDGPU_VCN_FIRMWARE_OFFSET 256 |
| 31 | #define AMDGPU_VCN_MAX_ENC_RINGS 3 | 31 | #define AMDGPU_VCN_MAX_ENC_RINGS 3 |
| 32 | 32 | ||
| 33 | #define VCN_CMD_FENCE 0x00000000 | ||
| 34 | #define VCN_CMD_TRAP 0x00000001 | ||
| 35 | #define VCN_CMD_WRITE_REG 0x00000004 | ||
| 36 | #define VCN_CMD_REG_READ_COND_WAIT 0x00000006 | ||
| 37 | #define VCN_CMD_PACKET_START 0x0000000a | ||
| 38 | #define VCN_CMD_PACKET_END 0x0000000b | ||
| 39 | |||
| 33 | struct amdgpu_vcn { | 40 | struct amdgpu_vcn { |
| 34 | struct amdgpu_bo *vcpu_bo; | 41 | struct amdgpu_bo *vcpu_bo; |
| 35 | void *cpu_addr; | 42 | void *cpu_addr; |
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c index 9cd6690c6a3f..643e4cecc3f6 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | |||
| @@ -512,7 +512,7 @@ static void vcn_v1_0_dec_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 | |||
| 512 | amdgpu_ring_write(ring, upper_32_bits(addr) & 0xff); | 512 | amdgpu_ring_write(ring, upper_32_bits(addr) & 0xff); |
| 513 | amdgpu_ring_write(ring, | 513 | amdgpu_ring_write(ring, |
| 514 | PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_CMD), 0)); | 514 | PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_CMD), 0)); |
| 515 | amdgpu_ring_write(ring, 0); | 515 | amdgpu_ring_write(ring, VCN_CMD_FENCE << 1); |
| 516 | 516 | ||
| 517 | amdgpu_ring_write(ring, | 517 | amdgpu_ring_write(ring, |
| 518 | PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_DATA0), 0)); | 518 | PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_DATA0), 0)); |
| @@ -522,7 +522,7 @@ static void vcn_v1_0_dec_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 | |||
| 522 | amdgpu_ring_write(ring, 0); | 522 | amdgpu_ring_write(ring, 0); |
| 523 | amdgpu_ring_write(ring, | 523 | amdgpu_ring_write(ring, |
| 524 | PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_CMD), 0)); | 524 | PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_CMD), 0)); |
| 525 | amdgpu_ring_write(ring, 2); | 525 | amdgpu_ring_write(ring, VCN_CMD_TRAP << 1); |
| 526 | } | 526 | } |
| 527 | 527 | ||
| 528 | /** | 528 | /** |
| @@ -576,7 +576,7 @@ static void vcn_v1_0_dec_vm_reg_write(struct amdgpu_ring *ring, | |||
| 576 | amdgpu_ring_write(ring, data1); | 576 | amdgpu_ring_write(ring, data1); |
| 577 | amdgpu_ring_write(ring, | 577 | amdgpu_ring_write(ring, |
| 578 | PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_CMD), 0)); | 578 | PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_CMD), 0)); |
| 579 | amdgpu_ring_write(ring, 8); | 579 | amdgpu_ring_write(ring, VCN_CMD_WRITE_REG << 1); |
| 580 | } | 580 | } |
| 581 | 581 | ||
| 582 | static void vcn_v1_0_dec_vm_reg_wait(struct amdgpu_ring *ring, | 582 | static void vcn_v1_0_dec_vm_reg_wait(struct amdgpu_ring *ring, |
| @@ -593,7 +593,7 @@ static void vcn_v1_0_dec_vm_reg_wait(struct amdgpu_ring *ring, | |||
| 593 | amdgpu_ring_write(ring, mask); | 593 | amdgpu_ring_write(ring, mask); |
| 594 | amdgpu_ring_write(ring, | 594 | amdgpu_ring_write(ring, |
| 595 | PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_CMD), 0)); | 595 | PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_CMD), 0)); |
| 596 | amdgpu_ring_write(ring, 12); | 596 | amdgpu_ring_write(ring, VCN_CMD_REG_READ_COND_WAIT << 1); |
| 597 | } | 597 | } |
| 598 | 598 | ||
| 599 | static void vcn_v1_0_dec_ring_emit_vm_flush(struct amdgpu_ring *ring, | 599 | static void vcn_v1_0_dec_ring_emit_vm_flush(struct amdgpu_ring *ring, |
