From: Matt Atwood <[email protected]> Bandwidth parameters for Xe3p_LPD are basically the same as for Xe3_LPD. However, now Xe3p_LPD has the ecc_impacting_de field, which could impact how the derating is defined.
For the cases where that field is true, we use xe3p_lpd_ecc_sa_info, similarly to what was done for Xe2_HPD. Note, however, that Bspec specifies the ECC derating value only for GDDR memory. For now, we just re-use the value that was defined for Xe2_HPD, namely 45. We need to confirm with the hardware team what would be the correct value(s) to use for the ECC case. Bspec: 68859, 69131 Signed-off-by: Matt Atwood <[email protected]> Signed-off-by: Gustavo Sousa <[email protected]> --- drivers/gpu/drm/i915/display/intel_bw.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c index 8f5b86cd91b6..f0940ff9d19b 100644 --- a/drivers/gpu/drm/i915/display/intel_bw.c +++ b/drivers/gpu/drm/i915/display/intel_bw.c @@ -461,6 +461,20 @@ static const struct intel_sa_info xe3lpd_3002_sa_info = { .derating = 10, }; +static const struct intel_sa_info xe3p_lpd_ecc_sa_info = { + .deburst = 32, + .deprogbwlimit = 65, /* GB/s */ + .displayrtids = 256, + /* + * FIXME: The Bspec only shows that derating for ECC should be 45 for + * GDDR memory and does not mention other types of memory. For now, we + * just re-use that value, but we need to confirm whether that is + * correct or if there are different values depending on the memory + * type. + */ + .derating = 45, +}; + static int icl_get_bw_info(struct intel_display *display, const struct dram_info *dram_info, const struct intel_sa_info *sa) @@ -812,7 +826,12 @@ void intel_bw_init_hw(struct intel_display *display) if (!HAS_DISPLAY(display)) return; - if (DISPLAY_VERx100(display) >= 3002) { + if (DISPLAY_VER(display) >= 35) { + if (dram_info->ecc_impacting_de) + tgl_get_bw_info(display, dram_info, &xe3p_lpd_ecc_sa_info); + else + tgl_get_bw_info(display, dram_info, &xe3lpd_sa_info); + } else if (DISPLAY_VERx100(display) >= 3002) { tgl_get_bw_info(display, dram_info, &xe3lpd_3002_sa_info); } else if (DISPLAY_VER(display) >= 30) { tgl_get_bw_info(display, dram_info, &xe3lpd_sa_info); -- 2.51.0
