drm/amdgpu: add psp ras callback func and macro
[linux-2.6-microblaze.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_psp.h
index 2ef98cc..3e6fcc9 100644 (file)
@@ -28,6 +28,7 @@
 #include "amdgpu.h"
 #include "psp_gfx_if.h"
 #include "ta_xgmi_if.h"
+#include "ta_ras_if.h"
 
 #define PSP_FENCE_BUFFER_SIZE  0x1000
 #define PSP_CMD_BUFFER_SIZE    0x1000
@@ -88,6 +89,9 @@ struct psp_funcs
        int (*xgmi_set_topology_info)(struct psp_context *psp, int number_devices,
                                      struct psp_xgmi_topology_info *topology);
        bool (*support_vmr_ring)(struct psp_context *psp);
+       int (*ras_trigger_error)(struct psp_context *psp,
+                       struct ta_ras_trigger_error_input *info);
+       int (*ras_cure_posion)(struct psp_context *psp, uint64_t *mode_ptr);
 };
 
 struct psp_xgmi_context {
@@ -150,9 +154,13 @@ struct psp_context
 
        /* xgmi ta firmware and buffer */
        const struct firmware           *ta_fw;
+       uint32_t                        ta_fw_version;
        uint32_t                        ta_xgmi_ucode_version;
        uint32_t                        ta_xgmi_ucode_size;
        uint8_t                         *ta_xgmi_start_addr;
+       uint32_t                        ta_ras_ucode_version;
+       uint32_t                        ta_ras_ucode_size;
+       uint8_t                         *ta_ras_start_addr;
        struct psp_xgmi_context         xgmi_context;
 };
 
@@ -207,6 +215,13 @@ struct psp_xgmi_topology_info {
 
 #define amdgpu_psp_check_fw_loading_status(adev, i) (adev)->firmware.funcs->check_fw_loading_status((adev), (i))
 
+#define psp_ras_trigger_error(psp, info) \
+       ((psp)->funcs->ras_trigger_error ? \
+       (psp)->funcs->ras_trigger_error((psp), (info)) : -EINVAL)
+#define psp_ras_cure_posion(psp, addr) \
+       ((psp)->funcs->ras_cure_posion ? \
+       (psp)->funcs->ras_cure_posion(psp, (addr)) : -EINVAL)
+
 extern const struct amd_ip_funcs psp_ip_funcs;
 
 extern const struct amdgpu_ip_block_version psp_v3_1_ip_block;