drm/amdgpu/mes: add definitions of ip callback function
authorJack Xiao <Jack.Xiao@amd.com>
Fri, 25 Jan 2019 09:54:58 +0000 (17:54 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 21 Jun 2019 23:58:22 +0000 (18:58 -0500)
Abstract mes ip independent function layer.

Acked-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Jack Xiao <Jack.Xiao@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h

index 621ef8a7f074cd0d4adf3104a0e9c4bb85fb6508..788084310dd591aa945364aa4b1d47dace5f8145 100644 (file)
 #ifndef __AMDGPU_MES_H__
 #define __AMDGPU_MES_H__
 
+struct amdgpu_mes_funcs;
+
 struct amdgpu_mes {
+       struct amdgpu_adev *adev;
+
+       /* ip specific functions */
+       struct amdgpu_mes_funcs *funcs;
+};
+
+struct mes_add_queue_input {
+       uint32_t        process_id;
+       uint64_t        page_table_base_addr;
+       uint64_t        process_va_start;
+       uint64_t        process_va_end;
+       uint64_t        process_quantum;
+       uint64_t        process_context_addr;
+       uint64_t        gang_quantum;
+       uint64_t        gang_context_addr;
+       uint32_t        inprocess_gang_priority;
+       uint32_t        gang_global_priority_level;
+       uint32_t        doorbell_offset;
+       uint64_t        mqd_addr;
+       uint64_t        wptr_addr;
+       uint32_t        queue_type;
+       uint32_t        paging;
+};
+
+struct mes_remove_queue_input {
+       uint32_t        doorbell_offset;
+       uint64_t        gang_context_addr;
+};
+
+struct mes_suspend_gang_input {
+       bool            suspend_all_gangs;
+       uint64_t        gang_context_addr;
+       uint64_t        suspend_fence_addr;
+       uint32_t        suspend_fence_value;
+};
+
+struct mes_resume_gang_input {
+       bool            resume_all_gangs;
+       uint64_t        gang_context_addr;
+};
+
+struct amdgpu_mes_funcs {
+       int (*add_hw_queue)(struct amdgpu_mes *mes,
+                           struct mes_add_queue_input *input);
+
+       int (*remove_hw_queue)(struct amdgpu_mes *mes,
+                              struct mes_remove_queue_input *input);
+
+       int (*suspend_gang)(struct amdgpu_mes *mes,
+                           struct mes_suspend_gang_input *input);
 
+       int (*resume_gang)(struct amdgpu_mes *mes,
+                          struct mes_resume_gang_input *input);
 };
 
 #endif /* __AMDGPU_MES_H__ */