aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3420-drm-amd-display-Update-DML-parameters.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3420-drm-amd-display-Update-DML-parameters.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3420-drm-amd-display-Update-DML-parameters.patch222
1 files changed, 222 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3420-drm-amd-display-Update-DML-parameters.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3420-drm-amd-display-Update-DML-parameters.patch
new file mode 100644
index 00000000..0f49d17f
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3420-drm-amd-display-Update-DML-parameters.patch
@@ -0,0 +1,222 @@
+From 583c9f7ae716367cb1e623dfa492146a8ccf7bc2 Mon Sep 17 00:00:00 2001
+From: Ilya Bakoulin <Ilya.Bakoulin@amd.com>
+Date: Wed, 17 Jul 2019 18:33:48 -0400
+Subject: [PATCH 3420/4256] drm/amd/display: Update DML parameters
+
+[Why]
+Need to add DML struct members that were omitted in previous
+DML implemenations.
+
+[How]
+- Add missing enum values
+- Add missing struct members
+- Set new input values in the fetch functions
+
+Signed-off-by: Ilya Bakoulin <Ilya.Bakoulin@amd.com>
+Reviewed-by: Charlene Liu <Charlene.Liu@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+---
+ .../amd/display/dc/dml/display_mode_enums.h | 22 ++++++++++++++-----
+ .../amd/display/dc/dml/display_mode_structs.h | 3 +++
+ .../drm/amd/display/dc/dml/display_mode_vba.c | 9 ++++++++
+ .../drm/amd/display/dc/dml/display_mode_vba.h | 18 +++++++++++++++
+ 4 files changed, 46 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_enums.h b/drivers/gpu/drm/amd/display/dc/dml/display_mode_enums.h
+index 0c2fab1e93b6..1c97083b8d0b 100644
+--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_enums.h
++++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_enums.h
+@@ -37,11 +37,14 @@ enum source_format_class {
+ dm_444_64 = 2,
+ dm_420_8 = 3,
+ dm_420_10 = 4,
+- dm_422_8 = 5,
+- dm_422_10 = 6,
+- dm_444_8 = 7,
++ dm_420_12 = 5,
++ dm_422_8 = 6,
++ dm_422_10 = 7,
++ dm_444_8 = 8,
+ dm_mono_8 = dm_444_8,
+- dm_mono_16 = dm_444_16
++ dm_mono_16 = dm_444_16,
++ dm_rgbe = 9,
++ dm_rgbe_alpha = 10,
+ };
+ enum output_bpc_class {
+ dm_out_6 = 0, dm_out_8 = 1, dm_out_10 = 2, dm_out_12 = 3, dm_out_16 = 4
+@@ -83,7 +86,7 @@ enum dm_swizzle_mode {
+ dm_sw_var_d_x = 30,
+ dm_sw_64kb_r_x,
+ dm_sw_gfx7_2d_thin_lvp,
+- dm_sw_gfx7_2d_thin_gl
++ dm_sw_gfx7_2d_thin_gl,
+ };
+ enum lb_depth {
+ dm_lb_10 = 0, dm_lb_8 = 1, dm_lb_6 = 2, dm_lb_12 = 3, dm_lb_16 = 4,
+@@ -112,7 +115,8 @@ enum output_standard {
+ enum mpc_combine_affinity {
+ dm_mpc_always_when_possible,
+ dm_mpc_reduce_voltage,
+- dm_mpc_reduce_voltage_and_clocks
++ dm_mpc_reduce_voltage_and_clocks,
++ dm_mpc_never
+ };
+
+ enum self_refresh_affinity {
+@@ -157,4 +161,10 @@ enum writeback_config {
+ dm_whole_buffer_for_single_stream_interleave,
+ };
+
++enum odm_combine_mode {
++ dm_odm_combine_mode_disabled,
++ dm_odm_combine_mode_2to1,
++ dm_odm_combine_mode_4to1,
++};
++
+ #endif
+diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h b/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
+index ab34fd26702f..f4c1ef9046bf 100644
+--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
++++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
+@@ -109,6 +109,9 @@ struct _vcs_dpi_soc_bounding_box_st {
+ int use_urgent_burst_bw;
+ unsigned int num_states;
+ struct _vcs_dpi_voltage_scaling_st clock_limits[MAX_CLOCK_LIMIT_STATES];
++ bool do_urgent_latency_adjustment;
++ double urgent_latency_adjustment_fabric_clock_component_us;
++ double urgent_latency_adjustment_fabric_clock_reference_mhz;
+ };
+
+ struct _vcs_dpi_ip_params_st {
+diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
+index 88e63f16f7fc..bd634dce6f3a 100644
+--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
++++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
+@@ -262,6 +262,13 @@ static void fetch_socbb_params(struct display_mode_lib *mode_lib)
+ //mode_lib->vba.DRAMSpeedPerState[i] = soc->clock_limits[i].dram_speed_mhz;
+ mode_lib->vba.MaxDispclk[i] = soc->clock_limits[i].dispclk_mhz;
+ }
++
++ mode_lib->vba.DoUrgentLatencyAdjustment =
++ soc->do_urgent_latency_adjustment;
++ mode_lib->vba.UrgentLatencyAdjustmentFabricClockComponent =
++ soc->urgent_latency_adjustment_fabric_clock_component_us;
++ mode_lib->vba.UrgentLatencyAdjustmentFabricClockReference =
++ soc->urgent_latency_adjustment_fabric_clock_reference_mhz;
+ }
+
+ static void fetch_ip_params(struct display_mode_lib *mode_lib)
+@@ -385,8 +392,10 @@ static void fetch_pipe_params(struct display_mode_lib *mode_lib)
+ src->viewport_y_c;
+ mode_lib->vba.PitchY[mode_lib->vba.NumberOfActivePlanes] = src->data_pitch;
+ mode_lib->vba.SurfaceHeightY[mode_lib->vba.NumberOfActivePlanes] = src->viewport_height;
++ mode_lib->vba.SurfaceWidthY[mode_lib->vba.NumberOfActivePlanes] = src->viewport_width;
+ mode_lib->vba.PitchC[mode_lib->vba.NumberOfActivePlanes] = src->data_pitch_c;
+ mode_lib->vba.SurfaceHeightC[mode_lib->vba.NumberOfActivePlanes] = src->viewport_height_c;
++ mode_lib->vba.SurfaceWidthC[mode_lib->vba.NumberOfActivePlanes] = src->viewport_width_c;
+ mode_lib->vba.DCCMetaPitchY[mode_lib->vba.NumberOfActivePlanes] = src->meta_pitch;
+ mode_lib->vba.DCCMetaPitchC[mode_lib->vba.NumberOfActivePlanes] = src->meta_pitch_c;
+ mode_lib->vba.HRatio[mode_lib->vba.NumberOfActivePlanes] = scl->hscl_ratio;
+diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h
+index 0347f74cda3a..52d2583b2f74 100644
+--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h
++++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h
+@@ -290,6 +290,7 @@ struct vba_vars_st {
+ double PixelClock[DC__NUM_DPP__MAX];
+ double PixelClockBackEnd[DC__NUM_DPP__MAX];
+ bool DCCEnable[DC__NUM_DPP__MAX];
++ bool FECEnable[DC__NUM_DPP__MAX];
+ unsigned int DCCMetaPitchY[DC__NUM_DPP__MAX];
+ unsigned int DCCMetaPitchC[DC__NUM_DPP__MAX];
+ enum scan_direction_class SourceScan[DC__NUM_DPP__MAX];
+@@ -317,6 +318,7 @@ struct vba_vars_st {
+ double DCCRate[DC__NUM_DPP__MAX];
+ double AverageDCCCompressionRate;
+ bool ODMCombineEnabled[DC__NUM_DPP__MAX];
++ enum odm_combine_mode ODMCombineTypeEnabled[DC__NUM_DPP__MAX];
+ double OutputBpp[DC__NUM_DPP__MAX];
+ bool DSCEnabled[DC__NUM_DPP__MAX];
+ unsigned int DSCInputBitPerComponent[DC__NUM_DPP__MAX];
+@@ -395,6 +397,7 @@ struct vba_vars_st {
+ double FabricClockPerState[DC__VOLTAGE_STATES + 1];
+ double SOCCLKPerState[DC__VOLTAGE_STATES + 1];
+ double PHYCLKPerState[DC__VOLTAGE_STATES + 1];
++ double DTBCLKPerState[DC__VOLTAGE_STATES + 1];
+ double MaxDppclk[DC__VOLTAGE_STATES + 1];
+ double MaxDSCCLK[DC__VOLTAGE_STATES + 1];
+ double DRAMSpeedPerState[DC__VOLTAGE_STATES + 1];
+@@ -488,6 +491,7 @@ struct vba_vars_st {
+ unsigned int NoOfDPP[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX];
+ int NoOfDPPThisState[DC__NUM_DPP__MAX];
+ bool ODMCombineEnablePerState[DC__VOLTAGE_STATES + 1][DC__NUM_DPP__MAX];
++ bool ODMCombineTypeEnablePerState[DC__VOLTAGE_STATES + 1][DC__NUM_DPP__MAX];
+ unsigned int SwathWidthYThisState[DC__NUM_DPP__MAX];
+ unsigned int SwathHeightCPerState[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX];
+ unsigned int SwathHeightYThisState[DC__NUM_DPP__MAX];
+@@ -513,6 +517,7 @@ struct vba_vars_st {
+ bool DIOSupport[DC__VOLTAGE_STATES + 1];
+ bool NotEnoughDSCUnits[DC__VOLTAGE_STATES + 1];
+ bool DSCCLKRequiredMoreThanSupported[DC__VOLTAGE_STATES + 1];
++ bool DTBCLKRequiredMoreThanSupported[DC__VOLTAGE_STATES + 1];
+ double UrgentRoundTripAndOutOfOrderLatencyPerState[DC__VOLTAGE_STATES + 1];
+ bool ROBSupport[DC__VOLTAGE_STATES + 1];
+ bool PTEBufferSizeNotExceeded[DC__VOLTAGE_STATES + 1][2];
+@@ -605,6 +610,7 @@ struct vba_vars_st {
+ double MaximumSwathWidthLuma[DC__NUM_DPP__MAX];
+ double MaximumSwathWidthChroma[DC__NUM_DPP__MAX];
+ bool odm_combine_dummy[DC__NUM_DPP__MAX];
++ enum odm_combine_mode odm_combine_mode_dummy[DC__NUM_DPP__MAX];
+ double dummy1[DC__NUM_DPP__MAX];
+ double dummy2[DC__NUM_DPP__MAX];
+ double dummy3[DC__NUM_DPP__MAX];
+@@ -625,6 +631,11 @@ struct vba_vars_st {
+ unsigned int dummyinteger10;
+ unsigned int dummyinteger11;
+ unsigned int dummyinteger12;
++ unsigned int dummyintegerarr1[DC__NUM_DPP__MAX];
++ unsigned int dummyintegerarr2[DC__NUM_DPP__MAX];
++ unsigned int dummyintegerarr3[DC__NUM_DPP__MAX];
++ unsigned int dummyintegerarr4[DC__NUM_DPP__MAX];
++ long dummylongarr1[DC__NUM_DPP__MAX];
+ bool dummysinglestring;
+ bool SingleDPPViewportSizeSupportPerPlane[DC__NUM_DPP__MAX];
+ double PlaneRequiredDISPCLKWithODMCombine2To1;
+@@ -633,6 +644,7 @@ struct vba_vars_st {
+ bool LinkDSCEnable;
+ bool ODMCombine4To1SupportCheckOK[DC__VOLTAGE_STATES + 1];
+ bool ODMCombineEnableThisState[DC__NUM_DPP__MAX];
++ enum odm_combine_mode ODMCombineEnableTypeThisState[DC__NUM_DPP__MAX];
+ unsigned int SwathWidthCThisState[DC__NUM_DPP__MAX];
+ bool ViewportSizeSupportPerPlane[DC__NUM_DPP__MAX];
+ double AlignedDCCMetaPitchY[DC__NUM_DPP__MAX];
+@@ -641,6 +653,7 @@ struct vba_vars_st {
+ unsigned int NotEnoughUrgentLatencyHiding;
+ unsigned int NotEnoughUrgentLatencyHidingPre;
+ long PTEBufferSizeInRequestsForLuma;
++ long PTEBufferSizeInRequestsForChroma;
+
+ // Missing from VBA
+ long dpte_group_bytes_chroma;
+@@ -787,6 +800,9 @@ struct vba_vars_st {
+ unsigned int PDEProcessingBufIn64KBReqs;
+
+ double MaxTotalVActiveRDBandwidth;
++ bool DoUrgentLatencyAdjustment;
++ double UrgentLatencyAdjustmentFabricClockComponent;
++ double UrgentLatencyAdjustmentFabricClockReference;
+ double MinUrgentLatencySupportUs;
+ double MinFullDETBufferingTime;
+ double AverageReadBandwidthGBytePerSecond;
+@@ -801,6 +817,8 @@ struct vba_vars_st {
+ bool ModeIsSupported;
+ bool ODMCombine4To1Supported;
+
++ unsigned int SurfaceWidthY[DC__NUM_DPP__MAX];
++ unsigned int SurfaceWidthC[DC__NUM_DPP__MAX];
+ unsigned int SurfaceHeightY[DC__NUM_DPP__MAX];
+ unsigned int SurfaceHeightC[DC__NUM_DPP__MAX];
+ unsigned int WritebackHTaps[DC__NUM_DPP__MAX];
+--
+2.17.1
+