drm/amdgpu: mode1 reset needs to recover mp1 for mp0 v13_0_10
[platform/kernel/linux-rpi.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_psp.h
index c3203de..3384eb9 100644 (file)
@@ -39,6 +39,8 @@
 #define PSP_TMR_ALIGNMENT      0x100000
 #define PSP_FW_NAME_LEN                0x24
 
+extern const struct attribute_group amdgpu_flash_attr_group;
+
 enum psp_shared_mem_size {
        PSP_ASD_SHARED_MEM_SIZE                         = 0x0,
        PSP_XGMI_SHARED_MEM_SIZE                        = 0x4000,
@@ -78,8 +80,7 @@ enum psp_bootloader_cmd {
        PSP_BL__LOAD_TOS_SPL_TABLE      = 0x10000000,
 };
 
-enum psp_ring_type
-{
+enum psp_ring_type {
        PSP_RING_TYPE__INVALID = 0,
        /*
         * These values map to the way the PSP kernel identifies the
@@ -89,8 +90,7 @@ enum psp_ring_type
        PSP_RING_TYPE__KM = 2  /* Kernel mode ring (formerly called GPCOM) */
 };
 
-struct psp_ring
-{
+struct psp_ring {
        enum psp_ring_type              ring_type;
        struct psp_gfx_rb_frame         *ring_mem;
        uint64_t                        ring_mem_mc_addr;
@@ -107,8 +107,7 @@ enum psp_reg_prog_id {
        PSP_REG_LAST
 };
 
-struct psp_funcs
-{
+struct psp_funcs {
        int (*init_microcode)(struct psp_context *psp);
        int (*bootloader_load_kdb)(struct psp_context *psp);
        int (*bootloader_load_spl)(struct psp_context *psp);
@@ -133,6 +132,7 @@ struct psp_funcs
        int (*read_usbc_pd_fw)(struct psp_context *psp, uint32_t *fw_ver);
        int (*update_spirom)(struct psp_context *psp, uint64_t fw_pri_mc_addr);
        int (*vbflash_stat)(struct psp_context *psp);
+       int (*fatal_error_recovery_quirk)(struct psp_context *psp);
 };
 
 struct ta_funcs {
@@ -307,8 +307,7 @@ struct psp_runtime_scpm_entry {
        enum psp_runtime_scpm_authentication scpm_status;
 };
 
-struct psp_context
-{
+struct psp_context {
        struct amdgpu_device            *adev;
        struct psp_ring                 km_ring;
        struct psp_gfx_cmd_resp         *cmd;
@@ -447,6 +446,10 @@ struct amdgpu_psp_funcs {
        ((psp)->funcs->vbflash_stat ? \
        (psp)->funcs->vbflash_stat((psp)) : -EINVAL)
 
+#define psp_fatal_error_recovery_quirk(psp) \
+       ((psp)->funcs->fatal_error_recovery_quirk ? \
+       (psp)->funcs->fatal_error_recovery_quirk((psp)) : 0)
+
 extern const struct amd_ip_funcs psp_ip_funcs;
 
 extern const struct amdgpu_ip_block_version psp_v3_1_ip_block;