Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu/umsch: update UMSCH 4.0 FW interface

Align with FW changes.

Signed-off-by: Lang Yu <Lang.Yu@amd.com>
Reviewed-by: Veerabadhran Gopalakrishnan <Veerabadhran.Gopalakrishnan@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Lang Yu and committed by
Alex Deucher
f3e69897 1c5c3653

+21 -12
+10 -10
drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.h
··· 33 33 UMSCH_SWIP_ENGINE_TYPE_MAX 34 34 }; 35 35 36 - enum UMSCH_SWIP_AFFINITY_TYPE { 37 - UMSCH_SWIP_AFFINITY_TYPE_ANY = 0, 38 - UMSCH_SWIP_AFFINITY_TYPE_VCN0 = 1, 39 - UMSCH_SWIP_AFFINITY_TYPE_VCN1 = 2, 40 - UMSCH_SWIP_AFFINITY_TYPE_MAX 41 - }; 42 - 43 36 enum UMSCH_CONTEXT_PRIORITY_LEVEL { 44 37 CONTEXT_PRIORITY_LEVEL_IDLE = 0, 45 38 CONTEXT_PRIORITY_LEVEL_NORMAL = 1, ··· 44 51 struct umsch_mm_set_resource_input { 45 52 uint32_t vmid_mask_mm_vcn; 46 53 uint32_t vmid_mask_mm_vpe; 54 + uint32_t collaboration_mask_vpe; 47 55 uint32_t logging_vmid; 48 56 uint32_t engine_mask; 49 57 union { 50 58 struct { 51 59 uint32_t disable_reset : 1; 52 60 uint32_t disable_umsch_mm_log : 1; 53 - uint32_t reserved : 30; 61 + uint32_t use_rs64mem_for_proc_ctx_csa : 1; 62 + uint32_t reserved : 29; 54 63 }; 55 64 uint32_t uint32_all; 56 65 }; ··· 73 78 uint32_t doorbell_offset_1; 74 79 enum UMSCH_SWIP_ENGINE_TYPE engine_type; 75 80 uint32_t affinity; 76 - enum UMSCH_SWIP_AFFINITY_TYPE affinity_type; 77 81 uint64_t mqd_addr; 78 82 uint64_t h_context; 79 83 uint64_t h_queue; 80 84 uint32_t vm_context_cntl; 81 85 86 + uint32_t process_csa_array_index; 87 + uint32_t context_csa_array_index; 88 + 82 89 struct { 83 90 uint32_t is_context_suspended : 1; 84 - uint32_t reserved : 31; 91 + uint32_t collaboration_mode : 1; 92 + uint32_t reserved : 30; 85 93 }; 86 94 }; 87 95 ··· 92 94 uint32_t doorbell_offset_0; 93 95 uint32_t doorbell_offset_1; 94 96 uint64_t context_csa_addr; 97 + uint32_t context_csa_array_index; 95 98 }; 96 99 97 100 struct MQD_INFO { ··· 102 103 uint32_t wptr_val; 103 104 uint32_t rptr_val; 104 105 uint32_t unmapped; 106 + uint32_t vmid; 105 107 }; 106 108 107 109 struct amdgpu_umsch_mm;
+11 -2
drivers/gpu/drm/amd/include/umsch_mm_4_0_api_def.h
··· 234 234 uint32_t enable_level_process_quantum_check : 1; 235 235 uint32_t is_vcn0_enabled : 1; 236 236 uint32_t is_vcn1_enabled : 1; 237 - uint32_t reserved : 27; 237 + uint32_t use_rs64mem_for_proc_ctx_csa : 1; 238 + uint32_t reserved : 26; 238 239 }; 239 240 uint32_t uint32_all; 240 241 }; ··· 298 297 299 298 struct { 300 299 uint32_t is_context_suspended : 1; 301 - uint32_t reserved : 31; 300 + uint32_t collaboration_mode : 1; 301 + uint32_t reserved : 30; 302 302 }; 303 303 struct UMSCH_API_STATUS api_status; 304 + uint32_t process_csa_array_index; 305 + uint32_t context_csa_array_index; 304 306 }; 305 307 306 308 uint32_t max_dwords_in_api[API_FRAME_SIZE_IN_DWORDS]; ··· 318 314 uint64_t context_csa_addr; 319 315 320 316 struct UMSCH_API_STATUS api_status; 317 + uint32_t context_csa_array_index; 321 318 }; 322 319 323 320 uint32_t max_dwords_in_api[API_FRAME_SIZE_IN_DWORDS]; ··· 342 337 uint32_t suspend_fence_value; 343 338 344 339 struct UMSCH_API_STATUS api_status; 340 + uint32_t context_csa_array_index; 345 341 }; 346 342 347 343 uint32_t max_dwords_in_api[API_FRAME_SIZE_IN_DWORDS]; ··· 362 356 enum UMSCH_ENGINE_TYPE engine_type; 363 357 364 358 struct UMSCH_API_STATUS api_status; 359 + uint32_t context_csa_array_index; 365 360 }; 366 361 367 362 uint32_t max_dwords_in_api[API_FRAME_SIZE_IN_DWORDS]; ··· 411 404 union UMSCH_AFFINITY affinity; 412 405 uint64_t context_csa_addr; 413 406 struct UMSCH_API_STATUS api_status; 407 + uint32_t context_csa_array_index; 414 408 }; 415 409 416 410 uint32_t max_dwords_in_api[API_FRAME_SIZE_IN_DWORDS]; ··· 425 417 uint64_t context_quantum; 426 418 uint64_t context_csa_addr; 427 419 struct UMSCH_API_STATUS api_status; 420 + uint32_t context_csa_array_index; 428 421 }; 429 422 430 423 uint32_t max_dwords_in_api[API_FRAME_SIZE_IN_DWORDS];