mpm: Improve fall-back behavior for dual-rate

This fixes the behavior that a non-valid dual-rate config could fall
back to a single-rate configuration with two different converter rates.
With this it also fixes the behavior that with those same master clock
rates we wouldn't run mult-tile sync (as this depends on the converter
rate).
This commit is contained in:
Martin Anderseck 2023-11-03 16:00:58 +01:00 committed by Aki Tomita
parent cee5825ba4
commit c64b9e36cd

View file

@ -680,6 +680,8 @@ class X440ClockPolicy(X4xxClockPolicy):
# Use the first MCR for both if we cannot combine them.
if len(common_out) == 0:
mcrs[1] = mcrs[0]
# Ensure we're falling back to converter rate 0, too
conv_rates[1] = conv_rates[0]
# With these values check if we can do this in MMCM
rfdc_rate = list(map(lambda x: int(x / (self._spc * self._extra_resampling)), mcrs))
@ -687,6 +689,9 @@ class X440ClockPolicy(X4xxClockPolicy):
# Inform user if we don't have an exact match
if min_mmcm_vco_rate > X4xxRfdcCtrl.MMCM_VCO_MAX:
mcrs[1] = mcrs[0]
# Ensure we're falling back to converter rate 0, too
conv_rates[1] = conv_rates[0]
if mcrs != master_clock_rates:
self.log.warning(f"Unable to use desired master clock rate(s), using "
f"{mcrs[0]/1e6} MHz for DB0 and {mcrs[1]/1e6} MHz for DB1.")