drm/amd/display: Fix MST PBN/X.Y value calculations
Changing PBN calculation to be more in line with spec. We don't need to inflate PBN_NATIVE value by the 1.006 margin, since that is already taken care of in the get_pbn_per_slot function. Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Reviewed-by: Wenjing Liu <wenjing.liu@amd.com> Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com> Signed-off-by: Ilya Bakoulin <ilya.bakoulin@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
23cf5a5cd3
commit
94bbf802ef
@@ -1057,18 +1057,21 @@ static struct fixed31_32 get_pbn_from_bw_in_kbps(uint64_t kbps)
|
||||
uint32_t denominator = 1;
|
||||
|
||||
/*
|
||||
* margin 5300ppm + 300ppm ~ 0.6% as per spec, factor is 1.006
|
||||
* The 1.006 factor (margin 5300ppm + 300ppm ~ 0.6% as per spec) is not
|
||||
* required when determining PBN/time slot utilization on the link between
|
||||
* us and the branch, since that overhead is already accounted for in
|
||||
* the get_pbn_per_slot function.
|
||||
*
|
||||
* The unit of 54/64Mbytes/sec is an arbitrary unit chosen based on
|
||||
* common multiplier to render an integer PBN for all link rate/lane
|
||||
* counts combinations
|
||||
* calculate
|
||||
* peak_kbps *= (1006/1000)
|
||||
* peak_kbps *= (64/54)
|
||||
* peak_kbps *= 8 convert to bytes
|
||||
* peak_kbps /= (8 * 1000) convert to bytes
|
||||
*/
|
||||
|
||||
numerator = 64 * PEAK_FACTOR_X1000;
|
||||
denominator = 54 * 8 * 1000 * 1000;
|
||||
numerator = 64;
|
||||
denominator = 54 * 8 * 1000;
|
||||
kbps *= numerator;
|
||||
peak_kbps = dc_fixpt_from_fraction(kbps, denominator);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user