drm/amd/display: Fix DMUB debugging print issue

[Why]
The DMUB diagnostic data was not printed out correctly.

[How]
Print the DMUB diagnostic data line by line.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Acked-by: Tom Chung <chiahsuan.chung@amd.com>
Signed-off-by: Cruise Hung <cruise.hung@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Cruise Hung 2023-05-09 21:36:35 +08:00 committed by Alex Deucher
parent 73ade646c5
commit f36f2648f3
3 changed files with 49 additions and 68 deletions

View File

@ -4832,6 +4832,18 @@ void dc_process_dmub_dpia_hpd_int_enable(const struct dc *dc,
DC_LOG_DEBUG("%s: hpd_int_enable(%d)\n", __func__, hpd_int_enable);
}
/**
* dc_print_dmub_diagnostic_data - Print DMUB diagnostic data for debugging
*
* @dc: [in] dc structure
*
*
*/
void dc_print_dmub_diagnostic_data(const struct dc *dc)
{
dc_dmub_srv_log_diagnostic_data(dc->ctx->dmub_srv);
}
/**
* dc_disable_accelerated_mode - disable accelerated mode
* @dc: dc structure

View File

@ -2236,6 +2236,8 @@ enum dc_status dc_process_dmub_set_mst_slots(const struct dc *dc,
void dc_process_dmub_dpia_hpd_int_enable(const struct dc *dc,
uint32_t hpd_int_enable);
void dc_print_dmub_diagnostic_data(const struct dc *dc);
/* DSC Interfaces */
#include "dc_dsc.h"

View File

@ -169,6 +169,7 @@ bool dc_dmub_srv_cmd_run_list(struct dc_dmub_srv *dc_dmub_srv, unsigned int coun
if (status != DMUB_STATUS_OK) {
DC_LOG_DEBUG("No reply for DMUB command: status=%d\n", status);
dc_dmub_srv_log_diagnostic_data(dc_dmub_srv);
return false;
}
@ -797,74 +798,40 @@ void dc_dmub_srv_log_diagnostic_data(struct dc_dmub_srv *dc_dmub_srv)
return;
}
DC_LOG_DEBUG(
"DMCUB STATE\n"
" dmcub_version : %08x\n"
" scratch [0] : %08x\n"
" scratch [1] : %08x\n"
" scratch [2] : %08x\n"
" scratch [3] : %08x\n"
" scratch [4] : %08x\n"
" scratch [5] : %08x\n"
" scratch [6] : %08x\n"
" scratch [7] : %08x\n"
" scratch [8] : %08x\n"
" scratch [9] : %08x\n"
" scratch [10] : %08x\n"
" scratch [11] : %08x\n"
" scratch [12] : %08x\n"
" scratch [13] : %08x\n"
" scratch [14] : %08x\n"
" scratch [15] : %08x\n"
" pc : %08x\n"
" unk_fault_addr : %08x\n"
" inst_fault_addr : %08x\n"
" data_fault_addr : %08x\n"
" inbox1_rptr : %08x\n"
" inbox1_wptr : %08x\n"
" inbox1_size : %08x\n"
" inbox0_rptr : %08x\n"
" inbox0_wptr : %08x\n"
" inbox0_size : %08x\n"
" is_enabled : %d\n"
" is_soft_reset : %d\n"
" is_secure_reset : %d\n"
" is_traceport_en : %d\n"
" is_cw0_en : %d\n"
" is_cw6_en : %d\n",
diag_data.dmcub_version,
diag_data.scratch[0],
diag_data.scratch[1],
diag_data.scratch[2],
diag_data.scratch[3],
diag_data.scratch[4],
diag_data.scratch[5],
diag_data.scratch[6],
diag_data.scratch[7],
diag_data.scratch[8],
diag_data.scratch[9],
diag_data.scratch[10],
diag_data.scratch[11],
diag_data.scratch[12],
diag_data.scratch[13],
diag_data.scratch[14],
diag_data.scratch[15],
diag_data.pc,
diag_data.undefined_address_fault_addr,
diag_data.inst_fetch_fault_addr,
diag_data.data_write_fault_addr,
diag_data.inbox1_rptr,
diag_data.inbox1_wptr,
diag_data.inbox1_size,
diag_data.inbox0_rptr,
diag_data.inbox0_wptr,
diag_data.inbox0_size,
diag_data.is_dmcub_enabled,
diag_data.is_dmcub_soft_reset,
diag_data.is_dmcub_secure_reset,
diag_data.is_traceport_en,
diag_data.is_cw0_enabled,
diag_data.is_cw6_enabled);
DC_LOG_DEBUG("DMCUB STATE:");
DC_LOG_DEBUG(" dmcub_version : %08x", diag_data.dmcub_version);
DC_LOG_DEBUG(" scratch [0] : %08x", diag_data.scratch[0]);
DC_LOG_DEBUG(" scratch [1] : %08x", diag_data.scratch[1]);
DC_LOG_DEBUG(" scratch [2] : %08x", diag_data.scratch[2]);
DC_LOG_DEBUG(" scratch [3] : %08x", diag_data.scratch[3]);
DC_LOG_DEBUG(" scratch [4] : %08x", diag_data.scratch[4]);
DC_LOG_DEBUG(" scratch [5] : %08x", diag_data.scratch[5]);
DC_LOG_DEBUG(" scratch [6] : %08x", diag_data.scratch[6]);
DC_LOG_DEBUG(" scratch [7] : %08x", diag_data.scratch[7]);
DC_LOG_DEBUG(" scratch [8] : %08x", diag_data.scratch[8]);
DC_LOG_DEBUG(" scratch [9] : %08x", diag_data.scratch[9]);
DC_LOG_DEBUG(" scratch [10] : %08x", diag_data.scratch[10]);
DC_LOG_DEBUG(" scratch [11] : %08x", diag_data.scratch[11]);
DC_LOG_DEBUG(" scratch [12] : %08x", diag_data.scratch[12]);
DC_LOG_DEBUG(" scratch [13] : %08x", diag_data.scratch[13]);
DC_LOG_DEBUG(" scratch [14] : %08x", diag_data.scratch[14]);
DC_LOG_DEBUG(" scratch [15] : %08x", diag_data.scratch[15]);
DC_LOG_DEBUG(" pc : %08x", diag_data.pc);
DC_LOG_DEBUG(" unk_fault_addr : %08x", diag_data.undefined_address_fault_addr);
DC_LOG_DEBUG(" inst_fault_addr : %08x", diag_data.inst_fetch_fault_addr);
DC_LOG_DEBUG(" data_fault_addr : %08x", diag_data.data_write_fault_addr);
DC_LOG_DEBUG(" inbox1_rptr : %08x", diag_data.inbox1_rptr);
DC_LOG_DEBUG(" inbox1_wptr : %08x", diag_data.inbox1_wptr);
DC_LOG_DEBUG(" inbox1_size : %08x", diag_data.inbox1_size);
DC_LOG_DEBUG(" inbox0_rptr : %08x", diag_data.inbox0_rptr);
DC_LOG_DEBUG(" inbox0_wptr : %08x", diag_data.inbox0_wptr);
DC_LOG_DEBUG(" inbox0_size : %08x", diag_data.inbox0_size);
DC_LOG_DEBUG(" is_enabled : %d", diag_data.is_dmcub_enabled);
DC_LOG_DEBUG(" is_soft_reset : %d", diag_data.is_dmcub_soft_reset);
DC_LOG_DEBUG(" is_secure_reset : %d", diag_data.is_dmcub_secure_reset);
DC_LOG_DEBUG(" is_traceport_en : %d", diag_data.is_traceport_en);
DC_LOG_DEBUG(" is_cw0_en : %d", diag_data.is_cw0_enabled);
DC_LOG_DEBUG(" is_cw6_en : %d", diag_data.is_cw6_enabled);
}
static bool dc_can_pipe_disable_cursor(struct pipe_ctx *pipe_ctx)