Commit 2eee829e authored by Alvin Lee's avatar Alvin Lee Committed by Alex Deucher

drm/amd/display: Driver support for MCLK query tool

Implement handling for escape call to query the MCLK switch support for
the current display config.
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Reviewed-by: default avatarJun Lei <Jun.Lei@amd.com>
Acked-by: default avatarRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: default avatarAlvin Lee <Alvin.Lee2@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 9506b8d9
...@@ -47,6 +47,7 @@ static void recalculate_params( ...@@ -47,6 +47,7 @@ static void recalculate_params(
unsigned int num_pipes); unsigned int num_pipes);
static unsigned int CursorBppEnumToBits(enum cursor_bpp ebpp); static unsigned int CursorBppEnumToBits(enum cursor_bpp ebpp);
static void cache_debug_params(struct display_mode_lib *mode_lib);
unsigned int dml_get_voltage_level( unsigned int dml_get_voltage_level(
struct display_mode_lib *mode_lib, struct display_mode_lib *mode_lib,
...@@ -73,6 +74,7 @@ unsigned int dml_get_voltage_level( ...@@ -73,6 +74,7 @@ unsigned int dml_get_voltage_level(
PixelClockAdjustmentForProgressiveToInterlaceUnit(mode_lib); PixelClockAdjustmentForProgressiveToInterlaceUnit(mode_lib);
} }
mode_lib->funcs.validate(mode_lib); mode_lib->funcs.validate(mode_lib);
cache_debug_params(mode_lib);
return mode_lib->vba.VoltageLevel; return mode_lib->vba.VoltageLevel;
} }
...@@ -745,6 +747,28 @@ static void fetch_pipe_params(struct display_mode_lib *mode_lib) ...@@ -745,6 +747,28 @@ static void fetch_pipe_params(struct display_mode_lib *mode_lib)
mode_lib->vba.HostVMEnable = mode_lib->vba.HostVMEnable && !!ip->hostvm_enable; mode_lib->vba.HostVMEnable = mode_lib->vba.HostVMEnable && !!ip->hostvm_enable;
} }
/**
* ********************************************************************************************
* cache_debug_params: Cache any params that needed to be maintained from the initial validation
* for debug purposes.
*
* The DML getters can modify some of the VBA params that we are interested in (for example when
* calculating with dummy p-state latency), so cache any params here that we want for debugging
*
* @param [in] mode_lib: mode_lib input/output of validate call
*
* @return: void
*
* ********************************************************************************************
*/
static void cache_debug_params(struct display_mode_lib *mode_lib)
{
int k = 0;
for (k = 0; k < mode_lib->vba.NumberOfActivePlanes; k++)
mode_lib->vba.CachedActiveDRAMClockChangeLatencyMargin[k] = mode_lib->vba.ActiveDRAMClockChangeLatencyMargin[k];
}
// in wm mode we pull the parameters needed from the display_e2e_pipe_params_st structs // in wm mode we pull the parameters needed from the display_e2e_pipe_params_st structs
// rather than working them out as in recalculate_ms // rather than working them out as in recalculate_ms
static void recalculate_params( static void recalculate_params(
......
...@@ -195,6 +195,7 @@ struct vba_vars_st { ...@@ -195,6 +195,7 @@ struct vba_vars_st {
unsigned int LBLatencyHidingSourceLinesY; unsigned int LBLatencyHidingSourceLinesY;
unsigned int LBLatencyHidingSourceLinesC; unsigned int LBLatencyHidingSourceLinesC;
double ActiveDRAMClockChangeLatencyMargin[DC__NUM_DPP__MAX]; double ActiveDRAMClockChangeLatencyMargin[DC__NUM_DPP__MAX];
double CachedActiveDRAMClockChangeLatencyMargin[DC__NUM_DPP__MAX]; // Cache in dml_get_voltage_level for debug purposes only
double MinActiveDRAMClockChangeMargin; double MinActiveDRAMClockChangeMargin;
double InitFillLevel; double InitFillLevel;
double FinalFillMargin; double FinalFillMargin;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment