drm/amd/display: DML21 Reintegration
Update logging macros for detailed debugging Update structs to contain more detailed information Add HDMI 16 and 20 Gbps rates Reviewed-by: Alvin Lee <alvin.lee2@amd.com> Signed-off-by: Austin Zheng <Austin.Zheng@amd.com> Signed-off-by: Fangzhi Zuo <jerry.zuo@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
f8fa4dfbd7
commit
def3f83e51
@@ -46,6 +46,7 @@ struct dml2_display_dlg_regs {
|
||||
uint32_t dst_y_delta_drq_limit;
|
||||
uint32_t refcyc_per_vm_dmdata;
|
||||
uint32_t dmdata_dl_delta;
|
||||
uint32_t dst_y_svp_drq_limit;
|
||||
|
||||
// MRQ
|
||||
uint32_t refcyc_per_meta_chunk_vblank_l;
|
||||
|
||||
@@ -222,6 +222,7 @@ struct dml2_composition_cfg {
|
||||
|
||||
struct {
|
||||
bool enabled;
|
||||
bool upsp_enabled;
|
||||
struct {
|
||||
double h_ratio;
|
||||
double v_ratio;
|
||||
@@ -426,6 +427,7 @@ struct dml2_stream_parameters {
|
||||
|
||||
struct dml2_display_cfg {
|
||||
bool gpuvm_enable;
|
||||
bool ffbm_enable;
|
||||
bool hostvm_enable;
|
||||
|
||||
// Allocate DET proportionally between streams based on pixel rate
|
||||
|
||||
@@ -93,6 +93,7 @@ struct dml2_soc_power_management_parameters {
|
||||
double dram_clk_change_write_only_us;
|
||||
double fclk_change_blackout_us;
|
||||
double g7_ppt_blackout_us;
|
||||
double g7_temperature_read_blackout_us;
|
||||
double stutter_enter_plus_exit_latency_us;
|
||||
double stutter_exit_latency_us;
|
||||
double z8_stutter_enter_plus_exit_latency_us;
|
||||
|
||||
@@ -53,7 +53,9 @@ enum dml2_output_type_and_rate__rate {
|
||||
dml2_output_rate_hdmi_rate_6x4 = 9,
|
||||
dml2_output_rate_hdmi_rate_8x4 = 10,
|
||||
dml2_output_rate_hdmi_rate_10x4 = 11,
|
||||
dml2_output_rate_hdmi_rate_12x4 = 12
|
||||
dml2_output_rate_hdmi_rate_12x4 = 12,
|
||||
dml2_output_rate_hdmi_rate_16x4 = 13,
|
||||
dml2_output_rate_hdmi_rate_20x4 = 14
|
||||
};
|
||||
|
||||
struct dml2_pmo_options {
|
||||
|
||||
@@ -13069,6 +13069,10 @@ void dml2_core_calcs_get_informative(const struct dml2_core_internal_display_mod
|
||||
out->informative.mode_support_info.OutputRate[k] = dml2_output_rate_hdmi_rate_10x4;
|
||||
else if (mode_lib->ms.support.OutputRate[k] == dml2_core_internal_output_rate_hdmi_rate_12x4)
|
||||
out->informative.mode_support_info.OutputRate[k] = dml2_output_rate_hdmi_rate_12x4;
|
||||
else if (mode_lib->ms.support.OutputRate[k] == dml2_core_internal_output_rate_hdmi_rate_16x4)
|
||||
out->informative.mode_support_info.OutputRate[k] = dml2_output_rate_hdmi_rate_16x4;
|
||||
else if (mode_lib->ms.support.OutputRate[k] == dml2_core_internal_output_rate_hdmi_rate_20x4)
|
||||
out->informative.mode_support_info.OutputRate[k] = dml2_output_rate_hdmi_rate_20x4;
|
||||
|
||||
out->informative.mode_support_info.AlignedYPitch[k] = mode_lib->ms.support.AlignedYPitch[k];
|
||||
out->informative.mode_support_info.AlignedCPitch[k] = mode_lib->ms.support.AlignedCPitch[k];
|
||||
|
||||
@@ -102,6 +102,7 @@ struct dml2_core_internal_DmlPipe {
|
||||
double DCFClkDeepSleep;
|
||||
unsigned int DPPPerSurface;
|
||||
bool ScalerEnabled;
|
||||
bool UPSPEnabled;
|
||||
enum dml2_rotation_angle RotationAngle;
|
||||
bool mirrored;
|
||||
unsigned int ViewportHeight;
|
||||
@@ -186,7 +187,9 @@ enum dml2_core_internal_output_type_rate {
|
||||
dml2_core_internal_output_rate_hdmi_rate_6x4 = 9,
|
||||
dml2_core_internal_output_rate_hdmi_rate_8x4 = 10,
|
||||
dml2_core_internal_output_rate_hdmi_rate_10x4 = 11,
|
||||
dml2_core_internal_output_rate_hdmi_rate_12x4 = 12
|
||||
dml2_core_internal_output_rate_hdmi_rate_12x4 = 12,
|
||||
dml2_core_internal_output_rate_hdmi_rate_16x4 = 13,
|
||||
dml2_core_internal_output_rate_hdmi_rate_20x4 = 14
|
||||
};
|
||||
|
||||
struct dml2_core_internal_watermarks {
|
||||
@@ -260,12 +263,14 @@ struct dml2_core_internal_mode_support_info {
|
||||
bool AvgBandwidthSupport;
|
||||
bool UrgVactiveBandwidthSupport;
|
||||
bool EnoughUrgentLatencyHidingSupport;
|
||||
bool PrefetchScheduleSupported;
|
||||
bool PrefetchSupported;
|
||||
bool PrefetchBandwidthSupported;
|
||||
bool DynamicMetadataSupported;
|
||||
bool VRatioInPrefetchSupported;
|
||||
bool DISPCLK_DPPCLK_Support;
|
||||
bool TotalAvailablePipesSupport;
|
||||
bool ODMSupport;
|
||||
bool ModeSupport;
|
||||
bool ViewportSizeSupport;
|
||||
|
||||
@@ -314,9 +319,7 @@ struct dml2_core_internal_mode_support_info {
|
||||
|
||||
double non_urg_bandwidth_required[dml2_core_internal_soc_state_max][dml2_core_internal_bw_max]; // same as urg_bandwidth, except not scaled by urg burst factor
|
||||
double non_urg_bandwidth_required_flip[dml2_core_internal_soc_state_max][dml2_core_internal_bw_max];
|
||||
|
||||
bool avg_bandwidth_support_ok[dml2_core_internal_soc_state_max][dml2_core_internal_bw_max];
|
||||
|
||||
double max_urgent_latency_us;
|
||||
double max_non_urgent_latency_us;
|
||||
double avg_non_urgent_latency_us;
|
||||
@@ -330,6 +333,7 @@ struct dml2_core_internal_mode_support_info {
|
||||
|
||||
struct dml2_core_internal_watermarks watermarks;
|
||||
bool dcfclk_support;
|
||||
bool qos_bandwidth_support;
|
||||
};
|
||||
|
||||
struct dml2_core_internal_mode_support {
|
||||
@@ -397,9 +401,13 @@ struct dml2_core_internal_mode_support {
|
||||
double TWait[DML2_MAX_PLANES];
|
||||
|
||||
bool UnboundedRequestEnabled;
|
||||
unsigned int compbuf_reserved_space_64b;
|
||||
bool hw_debug5;
|
||||
unsigned int CompressedBufferSizeInkByte;
|
||||
double VRatioPreY[DML2_MAX_PLANES];
|
||||
double VRatioPreC[DML2_MAX_PLANES];
|
||||
unsigned int req_per_swath_ub_l[DML2_MAX_PLANES];
|
||||
unsigned int req_per_swath_ub_c[DML2_MAX_PLANES];
|
||||
unsigned int swath_width_luma_ub[DML2_MAX_PLANES];
|
||||
unsigned int swath_width_chroma_ub[DML2_MAX_PLANES];
|
||||
unsigned int RequiredSlots[DML2_MAX_PLANES];
|
||||
@@ -420,8 +428,8 @@ struct dml2_core_internal_mode_support {
|
||||
double dst_y_prefetch[DML2_MAX_PLANES];
|
||||
double LinesForVM[DML2_MAX_PLANES];
|
||||
double LinesForDPTERow[DML2_MAX_PLANES];
|
||||
double SwathWidthYSingleDPP[DML2_MAX_PLANES];
|
||||
double SwathWidthCSingleDPP[DML2_MAX_PLANES];
|
||||
unsigned int SwathWidthYSingleDPP[DML2_MAX_PLANES];
|
||||
unsigned int SwathWidthCSingleDPP[DML2_MAX_PLANES];
|
||||
unsigned int BytePerPixelY[DML2_MAX_PLANES];
|
||||
unsigned int BytePerPixelC[DML2_MAX_PLANES];
|
||||
double BytePerPixelInDETY[DML2_MAX_PLANES];
|
||||
@@ -472,6 +480,40 @@ struct dml2_core_internal_mode_support {
|
||||
double mall_prefetch_sdp_overhead_factor[DML2_MAX_PLANES]; // overhead to the imall or phantom pipe
|
||||
double mall_prefetch_dram_overhead_factor[DML2_MAX_PLANES];
|
||||
|
||||
bool is_using_mall_for_ss[DML2_MAX_PLANES];
|
||||
unsigned int meta_row_width_chroma[DML2_MAX_PLANES];
|
||||
unsigned int PixelPTEReqHeightC[DML2_MAX_PLANES];
|
||||
bool PTE_BUFFER_MODE[DML2_MAX_PLANES];
|
||||
unsigned int meta_req_height_chroma[DML2_MAX_PLANES];
|
||||
unsigned int meta_pte_bytes_per_frame_ub_c[DML2_MAX_PLANES];
|
||||
unsigned int dpde0_bytes_per_frame_ub_c[DML2_MAX_PLANES];
|
||||
unsigned int dpte_row_width_luma_ub[DML2_MAX_PLANES];
|
||||
unsigned int meta_req_width[DML2_MAX_PLANES];
|
||||
unsigned int meta_row_width[DML2_MAX_PLANES];
|
||||
unsigned int PixelPTEReqWidthY[DML2_MAX_PLANES];
|
||||
unsigned int dpte_row_height_linear[DML2_MAX_PLANES];
|
||||
unsigned int PTERequestSizeY[DML2_MAX_PLANES];
|
||||
unsigned int dpte_row_width_chroma_ub[DML2_MAX_PLANES];
|
||||
unsigned int PixelPTEReqWidthC[DML2_MAX_PLANES];
|
||||
unsigned int meta_pte_bytes_per_frame_ub_l[DML2_MAX_PLANES];
|
||||
unsigned int dpte_row_height_linear_chroma[DML2_MAX_PLANES];
|
||||
unsigned int PTERequestSizeC[DML2_MAX_PLANES];
|
||||
unsigned int meta_req_height[DML2_MAX_PLANES];
|
||||
unsigned int dpde0_bytes_per_frame_ub_l[DML2_MAX_PLANES];
|
||||
unsigned int meta_req_width_chroma[DML2_MAX_PLANES];
|
||||
unsigned int PixelPTEReqHeightY[DML2_MAX_PLANES];
|
||||
unsigned int BIGK_FRAGMENT_SIZE[DML2_MAX_PLANES];
|
||||
unsigned int vm_group_bytes[DML2_MAX_PLANES];
|
||||
unsigned int VReadyOffsetPix[DML2_MAX_PLANES];
|
||||
unsigned int VUpdateOffsetPix[DML2_MAX_PLANES];
|
||||
unsigned int VUpdateWidthPix[DML2_MAX_PLANES];
|
||||
double TSetup[DML2_MAX_PLANES];
|
||||
double Tdmdl_vm_raw[DML2_MAX_PLANES];
|
||||
double Tdmdl_raw[DML2_MAX_PLANES];
|
||||
unsigned int VStartupMin[DML2_MAX_PLANES]; /// <brief Minimum vstartup to meet the prefetch schedule (i.e. the prefetch solution can be found at this vstartup time); not the actual global sync vstartup pos.
|
||||
double MaxActiveDRAMClockChangeLatencySupported[DML2_MAX_PLANES];
|
||||
double MaxActiveFCLKChangeLatencySupported;
|
||||
|
||||
// Backend
|
||||
bool RequiresDSC[DML2_MAX_PLANES];
|
||||
bool RequiresFEC[DML2_MAX_PLANES];
|
||||
@@ -489,6 +531,7 @@ struct dml2_core_internal_mode_support {
|
||||
enum dml2_odm_mode ODMModeDSC;
|
||||
double RequiredDISPCLKPerSurfaceNoDSC;
|
||||
double RequiredDISPCLKPerSurfaceDSC;
|
||||
unsigned int EstimatedNumberOfDSCSlices[DML2_MAX_PLANES];
|
||||
|
||||
// Bandwidth Related Info
|
||||
double BandwidthAvailableForImmediateFlip;
|
||||
@@ -581,6 +624,7 @@ struct dml2_core_internal_mode_support {
|
||||
|
||||
unsigned int tdlut_pte_bytes_per_frame[DML2_MAX_PLANES];
|
||||
unsigned int tdlut_bytes_per_frame[DML2_MAX_PLANES];
|
||||
unsigned int tdlut_groups_per_2row_ub[DML2_MAX_PLANES];
|
||||
double tdlut_opt_time[DML2_MAX_PLANES];
|
||||
double tdlut_drain_time[DML2_MAX_PLANES];
|
||||
unsigned int tdlut_bytes_per_group[DML2_MAX_PLANES];
|
||||
@@ -592,6 +636,8 @@ struct dml2_core_internal_mode_support {
|
||||
|
||||
unsigned int DSTYAfterScaler[DML2_MAX_PLANES];
|
||||
unsigned int DSTXAfterScaler[DML2_MAX_PLANES];
|
||||
|
||||
enum dml2_pstate_method pstate_switch_modes[DML2_MAX_PLANES];
|
||||
};
|
||||
|
||||
/// @brief A mega structure that houses various info for model programming step.
|
||||
@@ -653,6 +699,8 @@ struct dml2_core_internal_mode_program {
|
||||
unsigned int MacroTileHeightC[DML2_MAX_PLANES];
|
||||
unsigned int MacroTileWidthY[DML2_MAX_PLANES];
|
||||
unsigned int MacroTileWidthC[DML2_MAX_PLANES];
|
||||
double MaximumSwathWidthLuma[DML2_MAX_PLANES];
|
||||
double MaximumSwathWidthChroma[DML2_MAX_PLANES];
|
||||
|
||||
bool surf_linear128_l[DML2_MAX_PLANES];
|
||||
bool surf_linear128_c[DML2_MAX_PLANES];
|
||||
@@ -685,6 +733,14 @@ struct dml2_core_internal_mode_program {
|
||||
double UrgentBurstFactorChroma[DML2_MAX_PLANES];
|
||||
double UrgentBurstFactorChromaPre[DML2_MAX_PLANES];
|
||||
|
||||
double MaximumSwathWidthInLineBufferLuma;
|
||||
double MaximumSwathWidthInLineBufferChroma;
|
||||
|
||||
unsigned int vmpg_width_y[DML2_MAX_PLANES];
|
||||
unsigned int vmpg_height_y[DML2_MAX_PLANES];
|
||||
unsigned int vmpg_width_c[DML2_MAX_PLANES];
|
||||
unsigned int vmpg_height_c[DML2_MAX_PLANES];
|
||||
|
||||
double meta_row_bw[DML2_MAX_PLANES];
|
||||
unsigned int meta_row_bytes[DML2_MAX_PLANES];
|
||||
unsigned int meta_req_width[DML2_MAX_PLANES];
|
||||
@@ -706,7 +762,9 @@ struct dml2_core_internal_mode_program {
|
||||
unsigned int PTERequestSizeC[DML2_MAX_PLANES];
|
||||
|
||||
double TWait[DML2_MAX_PLANES];
|
||||
double Tdmdl_vm_raw[DML2_MAX_PLANES];
|
||||
double Tdmdl_vm[DML2_MAX_PLANES];
|
||||
double Tdmdl_raw[DML2_MAX_PLANES];
|
||||
double Tdmdl[DML2_MAX_PLANES];
|
||||
double TSetup[DML2_MAX_PLANES];
|
||||
unsigned int dpde0_bytes_per_frame_ub_l[DML2_MAX_PLANES];
|
||||
@@ -780,6 +838,8 @@ struct dml2_core_internal_mode_program {
|
||||
|
||||
// Support
|
||||
bool UrgVactiveBandwidthSupport;
|
||||
bool PrefetchScheduleSupported;
|
||||
bool UrgentBandwidthSupport;
|
||||
bool PrefetchModeSupported; // <brief Is the prefetch mode (bandwidth and latency) supported
|
||||
bool ImmediateFlipSupported;
|
||||
bool ImmediateFlipSupportedForPipe[DML2_MAX_PLANES];
|
||||
@@ -875,7 +935,7 @@ struct dml2_core_internal_mode_program {
|
||||
// RQ registers
|
||||
bool PTE_BUFFER_MODE[DML2_MAX_PLANES];
|
||||
unsigned int BIGK_FRAGMENT_SIZE[DML2_MAX_PLANES];
|
||||
|
||||
double VActiveLatencyHidingUs[DML2_MAX_PLANES];
|
||||
unsigned int SubViewportLinesNeededInMALL[DML2_MAX_PLANES];
|
||||
bool is_using_mall_for_ss[DML2_MAX_PLANES];
|
||||
|
||||
@@ -1088,10 +1148,10 @@ struct dml2_core_calcs_mode_programming_locals {
|
||||
double dummy_bw[dml2_core_internal_soc_state_max][dml2_core_internal_bw_max];
|
||||
double surface_dummy_bw[dml2_core_internal_soc_state_max][dml2_core_internal_bw_max][DML2_MAX_PLANES];
|
||||
double surface_dummy_bw0[dml2_core_internal_soc_state_max][dml2_core_internal_bw_max][DML2_MAX_PLANES];
|
||||
unsigned int dummy_integer_array[2][DML2_MAX_PLANES];
|
||||
unsigned int dummy_integer_array[4][DML2_MAX_PLANES];
|
||||
enum dml2_output_encoder_class dummy_output_encoder_array[DML2_MAX_PLANES];
|
||||
double dummy_single_array[2][DML2_MAX_PLANES];
|
||||
unsigned int dummy_long_array[4][DML2_MAX_PLANES];
|
||||
unsigned int dummy_long_array[8][DML2_MAX_PLANES];
|
||||
bool dummy_boolean_array[2][DML2_MAX_PLANES];
|
||||
bool dummy_boolean[2];
|
||||
double dummy_single[2];
|
||||
@@ -1239,6 +1299,7 @@ struct dml2_core_calcs_CalculateVMRowAndSwath_params {
|
||||
unsigned int HostVMMinPageSize;
|
||||
unsigned int DCCMetaBufferSizeBytes;
|
||||
bool mrq_present;
|
||||
enum dml2_pstate_method pstate_switch_modes[DML2_MAX_PLANES];
|
||||
|
||||
// Output
|
||||
bool *PTEBufferSizeNotExceeded;
|
||||
@@ -1504,6 +1565,7 @@ struct dml2_core_shared_CalculateFlipSchedule_locals {
|
||||
|
||||
struct dml2_core_shared_rq_dlg_get_dlg_reg_locals {
|
||||
unsigned int plane_idx;
|
||||
unsigned int stream_idx;
|
||||
enum dml2_source_format_class source_format;
|
||||
const struct dml2_timing_cfg *timing;
|
||||
bool dual_plane;
|
||||
@@ -1711,6 +1773,9 @@ struct dml2_core_calcs_CalculateSwathAndDETConfiguration_params {
|
||||
double *BytePerPixDETC;
|
||||
unsigned int *DPPPerSurface;
|
||||
bool mrq_present;
|
||||
unsigned int dummy[2][DML2_MAX_PLANES];
|
||||
unsigned int swath_width_luma_ub_single_dpp[DML2_MAX_PLANES];
|
||||
unsigned int swath_width_chroma_ub_single_dpp[DML2_MAX_PLANES];
|
||||
|
||||
// output
|
||||
unsigned int *req_per_swath_ub_l;
|
||||
@@ -1728,6 +1793,8 @@ struct dml2_core_calcs_CalculateSwathAndDETConfiguration_params {
|
||||
unsigned int *DETBufferSizeC;
|
||||
unsigned int *full_swath_bytes_l;
|
||||
unsigned int *full_swath_bytes_c;
|
||||
unsigned int *full_swath_bytes_single_dpp_l;
|
||||
unsigned int *full_swath_bytes_single_dpp_c;
|
||||
bool *UnboundedRequestEnabled;
|
||||
unsigned int *compbuf_reserved_space_64b;
|
||||
unsigned int *CompressedBufferSizeInkByte;
|
||||
|
||||
@@ -10,15 +10,74 @@
|
||||
#define DML_LOG_LEVEL_DEFAULT DML_LOG_LEVEL_WARN
|
||||
#define DML_LOG_INTERNAL(fmt, ...) dm_output_to_console(fmt, ## __VA_ARGS__)
|
||||
|
||||
/* ASSERT with message output */
|
||||
#define DML_ASSERT_MSG(condition, fmt, ...) \
|
||||
do { \
|
||||
if (!(condition)) { \
|
||||
DML_LOG_ERROR("DML ASSERT hit in %s line %d\n", __func__, __LINE__); \
|
||||
DML_LOG_ERROR(fmt, ## __VA_ARGS__); \
|
||||
DML_ASSERT(condition); \
|
||||
} \
|
||||
} while (0)
|
||||
/* private helper macros */
|
||||
#define _BOOL_FORMAT(field) "%s", field ? "true" : "false"
|
||||
#define _UINT_FORMAT(field) "%u", field
|
||||
#define _INT_FORMAT(field) "%d", field
|
||||
#define _DOUBLE_FORMAT(field) "%lf", field
|
||||
#define _ELEMENT_FUNC "function"
|
||||
#define _ELEMENT_COMP_IF "component_interface"
|
||||
#define _ELEMENT_TOP_IF "top_interface"
|
||||
#define _LOG_ENTRY(element) do { \
|
||||
DML_LOG_INTERNAL("<"element" name=\""); \
|
||||
DML_LOG_INTERNAL(__func__); \
|
||||
DML_LOG_INTERNAL("\">\n"); \
|
||||
} while (0)
|
||||
#define _LOG_EXIT(element) DML_LOG_INTERNAL("</"element">\n")
|
||||
#define _LOG_SCALAR(field, format) do { \
|
||||
DML_LOG_INTERNAL(#field" = "format(field)); \
|
||||
DML_LOG_INTERNAL("\n"); \
|
||||
} while (0)
|
||||
#define _LOG_ARRAY(field, size, format) do { \
|
||||
DML_LOG_INTERNAL(#field " = ["); \
|
||||
for (int _i = 0; _i < (int) size; _i++) { \
|
||||
DML_LOG_INTERNAL(format(field[_i])); \
|
||||
if (_i + 1 == (int) size) \
|
||||
DML_LOG_INTERNAL("]\n"); \
|
||||
else \
|
||||
DML_LOG_INTERNAL(", "); \
|
||||
}} while (0)
|
||||
#define _LOG_2D_ARRAY(field, size0, size1, format) do { \
|
||||
DML_LOG_INTERNAL(#field" = ["); \
|
||||
for (int _i = 0; _i < (int) size0; _i++) { \
|
||||
DML_LOG_INTERNAL("\n\t["); \
|
||||
for (int _j = 0; _j < (int) size1; _j++) { \
|
||||
DML_LOG_INTERNAL(format(field[_i][_j])); \
|
||||
if (_j + 1 == (int) size1) \
|
||||
DML_LOG_INTERNAL("]"); \
|
||||
else \
|
||||
DML_LOG_INTERNAL(", "); \
|
||||
} \
|
||||
if (_i + 1 == (int) size0) \
|
||||
DML_LOG_INTERNAL("]\n"); \
|
||||
else \
|
||||
DML_LOG_INTERNAL(", "); \
|
||||
} \
|
||||
} while (0)
|
||||
#define _LOG_3D_ARRAY(field, size0, size1, size2, format) do { \
|
||||
DML_LOG_INTERNAL(#field" = ["); \
|
||||
for (int _i = 0; _i < (int) size0; _i++) { \
|
||||
DML_LOG_INTERNAL("\n\t["); \
|
||||
for (int _j = 0; _j < (int) size1; _j++) { \
|
||||
DML_LOG_INTERNAL("["); \
|
||||
for (int _k = 0; _k < (int) size2; _k++) { \
|
||||
DML_LOG_INTERNAL(format(field[_i][_j][_k])); \
|
||||
if (_k + 1 == (int) size2) \
|
||||
DML_LOG_INTERNAL("]"); \
|
||||
else \
|
||||
DML_LOG_INTERNAL(", "); \
|
||||
} \
|
||||
if (_j + 1 == (int) size1) \
|
||||
DML_LOG_INTERNAL("]"); \
|
||||
else \
|
||||
DML_LOG_INTERNAL(", "); \
|
||||
} \
|
||||
if (_i + 1 == (int) size0) \
|
||||
DML_LOG_INTERNAL("]\n"); \
|
||||
else \
|
||||
DML_LOG_INTERNAL(", "); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* fatal errors for unrecoverable DML states until a full reset */
|
||||
#define DML_LOG_LEVEL_FATAL 0
|
||||
@@ -28,7 +87,7 @@
|
||||
#define DML_LOG_LEVEL_WARN 2
|
||||
/* high level tracing of DML interfaces */
|
||||
#define DML_LOG_LEVEL_INFO 3
|
||||
/* detailed tracing of DML internal components */
|
||||
/* tracing of DML internal executions */
|
||||
#define DML_LOG_LEVEL_DEBUG 4
|
||||
/* detailed tracing of DML calculation procedure */
|
||||
#define DML_LOG_LEVEL_VERBOSE 5
|
||||
@@ -37,30 +96,94 @@
|
||||
#define DML_LOG_LEVEL DML_LOG_LEVEL_DEFAULT
|
||||
#endif /* #ifndef DML_LOG_LEVEL */
|
||||
|
||||
/* public macros for DML_LOG_LEVEL_FATAL and up */
|
||||
#define DML_LOG_FATAL(fmt, ...) DML_LOG_INTERNAL("[DML FATAL] " fmt, ## __VA_ARGS__)
|
||||
|
||||
/* public macros for DML_LOG_LEVEL_ERROR and up */
|
||||
#if DML_LOG_LEVEL >= DML_LOG_LEVEL_ERROR
|
||||
#define DML_LOG_ERROR(fmt, ...) DML_LOG_INTERNAL("[DML ERROR] "fmt, ## __VA_ARGS__)
|
||||
#define DML_ASSERT_MSG(condition, fmt, ...) \
|
||||
do { \
|
||||
if (!(condition)) { \
|
||||
DML_LOG_ERROR("ASSERT hit in %s line %d\n", __func__, __LINE__); \
|
||||
DML_LOG_ERROR(fmt, ## __VA_ARGS__); \
|
||||
DML_ASSERT(condition); \
|
||||
} \
|
||||
} while (0)
|
||||
#else
|
||||
#define DML_LOG_ERROR(fmt, ...) ((void)0)
|
||||
#define DML_ASSERT_MSG(condition, fmt, ...) ((void)0)
|
||||
#endif
|
||||
|
||||
/* public macros for DML_LOG_LEVEL_WARN and up */
|
||||
#if DML_LOG_LEVEL >= DML_LOG_LEVEL_WARN
|
||||
#define DML_LOG_WARN(fmt, ...) DML_LOG_INTERNAL("[DML WARN] "fmt, ## __VA_ARGS__)
|
||||
#else
|
||||
#define DML_LOG_WARN(fmt, ...) ((void)0)
|
||||
#endif
|
||||
|
||||
/* public macros for DML_LOG_LEVEL_INFO and up */
|
||||
#if DML_LOG_LEVEL >= DML_LOG_LEVEL_INFO
|
||||
#define DML_LOG_INFO(fmt, ...) DML_LOG_INTERNAL("[DML INFO] "fmt, ## __VA_ARGS__)
|
||||
#define DML_LOG_TOP_IF_ENTER() _LOG_ENTRY(_ELEMENT_TOP_IF)
|
||||
#define DML_LOG_TOP_IF_EXIT() _LOG_EXIT(_ELEMENT_TOP_IF)
|
||||
#else
|
||||
#define DML_LOG_INFO(fmt, ...) ((void)0)
|
||||
#define DML_LOG_TOP_IF_ENTER() ((void)0)
|
||||
#define DML_LOG_TOP_IF_EXIT() ((void)0)
|
||||
#endif
|
||||
|
||||
/* public macros for DML_LOG_LEVEL_DEBUG and up */
|
||||
#if DML_LOG_LEVEL >= DML_LOG_LEVEL_DEBUG
|
||||
#define DML_LOG_DEBUG(fmt, ...) DML_LOG_INTERNAL("[DML DEBUG] "fmt, ## __VA_ARGS__)
|
||||
#define DML_LOG_DEBUG(fmt, ...) DML_LOG_INTERNAL(fmt, ## __VA_ARGS__)
|
||||
#define DML_LOG_COMP_IF_ENTER() _LOG_ENTRY(_ELEMENT_COMP_IF)
|
||||
#define DML_LOG_COMP_IF_EXIT() _LOG_EXIT(_ELEMENT_COMP_IF)
|
||||
#define DML_LOG_FUNC_ENTER() _LOG_ENTRY(_ELEMENT_FUNC)
|
||||
#define DML_LOG_FUNC_EXIT() _LOG_EXIT(_ELEMENT_FUNC)
|
||||
#define DML_LOG_DEBUG_BOOL(field) _LOG_SCALAR(field, _BOOL_FORMAT)
|
||||
#define DML_LOG_DEBUG_UINT(field) _LOG_SCALAR(field, _UINT_FORMAT)
|
||||
#define DML_LOG_DEBUG_INT(field) _LOG_SCALAR(field, _INT_FORMAT)
|
||||
#define DML_LOG_DEBUG_DOUBLE(field) _LOG_SCALAR(field, _DOUBLE_FORMAT)
|
||||
#define DML_LOG_DEBUG_ARRAY_BOOL(field, size) _LOG_ARRAY(field, size, _BOOL_FORMAT)
|
||||
#define DML_LOG_DEBUG_ARRAY_UINT(field, size) _LOG_ARRAY(field, size, _UINT_FORMAT)
|
||||
#define DML_LOG_DEBUG_ARRAY_INT(field, size) _LOG_ARRAY(field, size, _INT_FORMAT)
|
||||
#define DML_LOG_DEBUG_ARRAY_DOUBLE(field, size) _LOG_ARRAY(field, size, _DOUBLE_FORMAT)
|
||||
#define DML_LOG_DEBUG_2D_ARRAY_BOOL(field, size0, size1) _LOG_2D_ARRAY(field, size0, size1, _BOOL_FORMAT)
|
||||
#define DML_LOG_DEBUG_2D_ARRAY_UINT(field, size0, size1) _LOG_2D_ARRAY(field, size0, size1, _UINT_FORMAT)
|
||||
#define DML_LOG_DEBUG_2D_ARRAY_INT(field, size0, size1) _LOG_2D_ARRAY(field, size0, size1, _INT_FORMAT)
|
||||
#define DML_LOG_DEBUG_2D_ARRAY_DOUBLE(field, size0, size1) _LOG_2D_ARRAY(field, size0, size1, _DOUBLE_FORMAT)
|
||||
#define DML_LOG_DEBUG_3D_ARRAY_BOOL(field, size0, size1, size2) _LOG_3D_ARRAY(field, size0, size1, size2, _BOOL_FORMAT)
|
||||
#define DML_LOG_DEBUG_3D_ARRAY_UINT(field, size0, size1, size2) _LOG_3D_ARRAY(field, size0, size1, size2, _UINT_FORMAT)
|
||||
#define DML_LOG_DEBUG_3D_ARRAY_INT(field, size0, size1, size2) _LOG_3D_ARRAY(field, size0, size1, size2, _INT_FORMAT)
|
||||
#define DML_LOG_DEBUG_3D_ARRAY_DOUBLE(field, size0, size1, size2) _LOG_3D_ARRAY(field, size0, size1, size2, _DOUBLE_FORMAT)
|
||||
#else
|
||||
#define DML_LOG_DEBUG(fmt, ...) ((void)0)
|
||||
#define DML_LOG_COMP_IF_ENTER() ((void)0)
|
||||
#define DML_LOG_COMP_IF_EXIT() ((void)0)
|
||||
#define DML_LOG_FUNC_ENTER() ((void)0)
|
||||
#define DML_LOG_FUNC_EXIT() ((void)0)
|
||||
#define DML_LOG_DEBUG_BOOL(field) ((void)0)
|
||||
#define DML_LOG_DEBUG_UINT(field) ((void)0)
|
||||
#define DML_LOG_DEBUG_INT(field) ((void)0)
|
||||
#define DML_LOG_DEBUG_DOUBLE(field) ((void)0)
|
||||
#define DML_LOG_DEBUG_ARRAY_BOOL(field, size) ((void)0)
|
||||
#define DML_LOG_DEBUG_ARRAY_UINT(field, size) ((void)0)
|
||||
#define DML_LOG_DEBUG_ARRAY_INT(field, size) ((void)0)
|
||||
#define DML_LOG_DEBUG_ARRAY_DOUBLE(field, size) ((void)0)
|
||||
#define DML_LOG_DEBUG_2D_ARRAY_BOOL(field, size0, size1) ((void)0)
|
||||
#define DML_LOG_DEBUG_2D_ARRAY_UINT(field, size0, size1) ((void)0)
|
||||
#define DML_LOG_DEBUG_2D_ARRAY_INT(field, size0, size1) ((void)0)
|
||||
#define DML_LOG_DEBUG_2D_ARRAY_DOUBLE(field, size0, size1) ((void)0)
|
||||
#define DML_LOG_DEBUG_3D_ARRAY_BOOL(field, size0, size1, size2) ((void)0)
|
||||
#define DML_LOG_DEBUG_3D_ARRAY_UINT(field, size0, size1, size2) ((void)0)
|
||||
#define DML_LOG_DEBUG_3D_ARRAY_INT(field, size0, size1, size2) ((void)0)
|
||||
#define DML_LOG_DEBUG_3D_ARRAY_DOUBLE(field, size0, size1, size2) ((void)0)
|
||||
#endif
|
||||
|
||||
/* public macros for DML_LOG_LEVEL_VERBOSE */
|
||||
#if DML_LOG_LEVEL >= DML_LOG_LEVEL_VERBOSE
|
||||
#define DML_LOG_VERBOSE(fmt, ...) DML_LOG_INTERNAL("[DML VERBOSE] "fmt, ## __VA_ARGS__)
|
||||
#define DML_LOG_VERBOSE(fmt, ...) DML_LOG_INTERNAL(fmt, ## __VA_ARGS__)
|
||||
#else
|
||||
#define DML_LOG_VERBOSE(fmt, ...) ((void)0)
|
||||
#endif
|
||||
#endif /* #if DML_LOG_LEVEL >= DML_LOG_LEVEL_VERBOSE */
|
||||
#endif /* __DML2_DEBUG_H__ */
|
||||
|
||||
@@ -303,9 +303,11 @@ union dmub_addr {
|
||||
/* Flattened structure containing SOC BB parameters stored in the VBIOS
|
||||
* It is not practical to store the entire bounding box in VBIOS since the bounding box struct can gain new parameters.
|
||||
* This also prevents alighment issues when new parameters are added to the SoC BB.
|
||||
* The following parameters should be added since these values can't be obtained elsewhere:
|
||||
* -dml2_soc_power_management_parameters
|
||||
* -dml2_soc_vmin_clock_limits
|
||||
*/
|
||||
struct dmub_soc_bb_params {
|
||||
/* dml2_soc_power_management_parameters */
|
||||
uint32_t dram_clk_change_blackout_ns;
|
||||
uint32_t dram_clk_change_read_only_ns;
|
||||
uint32_t dram_clk_change_write_only_ns;
|
||||
@@ -318,9 +320,9 @@ struct dmub_soc_bb_params {
|
||||
uint32_t z8_min_idle_time_ns;
|
||||
uint32_t type_b_dram_clk_change_blackout_ns;
|
||||
uint32_t type_b_ppt_blackout_ns;
|
||||
/* dml2_soc_vmin_clock_limits */
|
||||
uint32_t vmin_limit_dispclk_khz;
|
||||
uint32_t vmin_limit_dcfclk_khz;
|
||||
uint32_t g7_temperature_read_blackout_ns;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
@@ -2100,6 +2102,28 @@ enum fams2_stream_type {
|
||||
FAMS2_STREAM_TYPE_SUBVP = 4,
|
||||
};
|
||||
|
||||
struct dmub_rect16 {
|
||||
/**
|
||||
* Dirty rect x offset.
|
||||
*/
|
||||
uint16_t x;
|
||||
|
||||
/**
|
||||
* Dirty rect y offset.
|
||||
*/
|
||||
uint16_t y;
|
||||
|
||||
/**
|
||||
* Dirty rect width.
|
||||
*/
|
||||
uint16_t width;
|
||||
|
||||
/**
|
||||
* Dirty rect height.
|
||||
*/
|
||||
uint16_t height;
|
||||
};
|
||||
|
||||
/* static stream state */
|
||||
struct dmub_fams2_legacy_stream_static_state {
|
||||
uint8_t vactive_det_fill_delay_otg_vlines;
|
||||
|
||||
Reference in New Issue
Block a user