diff options
| author | Lang Yu <[email protected]> | 2024-03-07 13:57:06 +0800 | 
|---|---|---|
| committer | Alex Deucher <[email protected]> | 2024-03-27 09:30:05 -0400 | 
| commit | 68a2afbccaba588403f18197cdbfc43e5f98c336 (patch) | |
| tree | 86fe50c225b6834dce0270970cbdef9d56bd0a21 /drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c | |
| parent | 6b154c00cd5378abfd8930a823a7c23bf0750206 (diff) | |
drm/amdgpu: enable UMSCH 4.0.6
Share same codes with 4.0.5 and enable collaborate mode for VPE.
Signed-off-by: Lang Yu <[email protected]>
Reviewed-by: Veerabadhran Gopalakrishnan <[email protected]>
Acked-by: Alex Deucher <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c index ab820cf52668..0df97c3e3a70 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c @@ -189,10 +189,13 @@ static void setup_vpe_queue(struct amdgpu_device *adev,  	mqd->rptr_val = 0;  	mqd->unmapped = 1; +	if (adev->vpe.collaborate_mode) +		memcpy(++mqd, test->mqd_data_cpu_addr, sizeof(struct MQD_INFO)); +  	qinfo->mqd_addr = test->mqd_data_gpu_addr;  	qinfo->csa_addr = test->ctx_data_gpu_addr +  		offsetof(struct umsch_mm_test_ctx_data, vpe_ctx_csa); -	qinfo->doorbell_offset_0 = (adev->doorbell_index.vpe_ring + 1) << 1; +	qinfo->doorbell_offset_0 = 0;  	qinfo->doorbell_offset_1 = 0;  } @@ -287,7 +290,10 @@ static int submit_vpe_queue(struct amdgpu_device *adev, struct umsch_mm_test *te  	ring[5] = 0;  	mqd->wptr_val = (6 << 2); -	// WDOORBELL32(adev->umsch_mm.agdb_index[CONTEXT_PRIORITY_LEVEL_NORMAL], mqd->wptr_val); +	if (adev->vpe.collaborate_mode) +		(++mqd)->wptr_val = (6 << 2); + +	WDOORBELL32(adev->umsch_mm.agdb_index[CONTEXT_PRIORITY_LEVEL_NORMAL], mqd->wptr_val);  	for (i = 0; i < adev->usec_timeout; i++) {  		if (*fence == test_pattern) @@ -571,6 +577,7 @@ int amdgpu_umsch_mm_init_microcode(struct amdgpu_umsch_mm *umsch)  	switch (amdgpu_ip_version(adev, VCN_HWIP, 0)) {  	case IP_VERSION(4, 0, 5): +	case IP_VERSION(4, 0, 6):  		fw_name = "amdgpu/umsch_mm_4_0_0.bin";  		break;  	default: @@ -750,6 +757,7 @@ static int umsch_mm_early_init(void *handle)  	switch (amdgpu_ip_version(adev, VCN_HWIP, 0)) {  	case IP_VERSION(4, 0, 5): +	case IP_VERSION(4, 0, 6):  		umsch_mm_v4_0_set_funcs(&adev->umsch_mm);  		break;  	default:  |