Merge tag 'drm-misc-next-fixes-2021-09-09' of git://anongit.freedesktop.org/drm/drm...
[linux-2.6-microblaze.git] / drivers / gpu / drm / amd / display / dc / dce / dmub_psr.c
index 10d42ae..aa8403b 100644 (file)
@@ -29,6 +29,8 @@
 #include "dmub/dmub_srv.h"
 #include "core_types.h"
 
+#define DC_TRACE_LEVEL_MESSAGE(...)    do {} while (0) /* do nothing */
+
 #define MAX_PIPES 6
 
 /*
@@ -96,10 +98,19 @@ static void dmub_psr_get_state(struct dmub_psr *dmub, enum dc_psr_state *state,
                        // Return invalid state when GPINT times out
                        *state = PSR_STATE_INVALID;
 
-               // Assert if max retry hit
-               if (retry_count >= 1000)
-                       ASSERT(0);
        } while (++retry_count <= 1000 && *state == PSR_STATE_INVALID);
+
+       // Assert if max retry hit
+       if (retry_count >= 1000 && *state == PSR_STATE_INVALID) {
+               ASSERT(0);
+               DC_TRACE_LEVEL_MESSAGE(DAL_TRACE_LEVEL_ERROR,
+                               WPP_BIT_FLAG_Firmware_PsrState,
+                               "Unable to get PSR state from FW.");
+       } else
+               DC_TRACE_LEVEL_MESSAGE(DAL_TRACE_LEVEL_VERBOSE,
+                               WPP_BIT_FLAG_Firmware_PsrState,
+                               "Got PSR state from FW. PSR state: %d, Retry count: %d",
+                               *state, retry_count);
 }
 
 /*
@@ -207,7 +218,7 @@ static void dmub_psr_set_level(struct dmub_psr *dmub, uint16_t psr_level, uint8_
        cmd.psr_set_level.header.sub_type = DMUB_CMD__PSR_SET_LEVEL;
        cmd.psr_set_level.header.payload_bytes = sizeof(struct dmub_cmd_psr_set_level_data);
        cmd.psr_set_level.psr_set_level_data.psr_level = psr_level;
-       cmd.psr_set_level.psr_set_level_data.cmd_version = PSR_VERSION_1;
+       cmd.psr_set_level.psr_set_level_data.cmd_version = DMUB_CMD_PSR_CONTROL_VERSION_1;
        cmd.psr_set_level.psr_set_level_data.panel_inst = panel_inst;
        dc_dmub_srv_cmd_queue(dc->dmub_srv, &cmd);
        dc_dmub_srv_cmd_execute(dc->dmub_srv);
@@ -293,7 +304,7 @@ static bool dmub_psr_copy_settings(struct dmub_psr *dmub,
        copy_settings_data->debug.bitfields.use_hw_lock_mgr             = 1;
        copy_settings_data->fec_enable_status = (link->fec_state == dc_link_fec_enabled);
        copy_settings_data->fec_enable_delay_in100us = link->dc->debug.fec_enable_delay_in100us;
-       copy_settings_data->cmd_version =  PSR_VERSION_1;
+       copy_settings_data->cmd_version =  DMUB_CMD_PSR_CONTROL_VERSION_1;
        copy_settings_data->panel_inst = panel_inst;
 
        dc_dmub_srv_cmd_queue(dc->dmub_srv, &cmd);