Commit 7b4dcb88 authored by Diogo Ivo's avatar Diogo Ivo Committed by Krzysztof Kozlowski

memory: tegra: Move DQSOSC measurement to common place

Move the calls that instruct the RAM to capture its clock tree delays
to update_clock_tree_delay() in order to avoid code duplication.
Signed-off-by: default avatarDiogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
Link: https://lore.kernel.org/r/20240704-tegra210_emcfreq-v4-2-3e450503c555@tecnico.ulisboa.ptSigned-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
parent 649f4783
...@@ -123,10 +123,19 @@ static u32 update_clock_tree_delay(struct tegra210_emc *emc, int type) ...@@ -123,10 +123,19 @@ static u32 update_clock_tree_delay(struct tegra210_emc *emc, int type)
bool dvfs_update = type == DVFS_UPDATE; bool dvfs_update = type == DVFS_UPDATE;
s32 tdel = 0, tmdel = 0, adel = 0; s32 tdel = 0, tmdel = 0, adel = 0;
bool dvfs_pt1 = type == DVFS_PT1; bool dvfs_pt1 = type == DVFS_PT1;
u32 temp[2][2], value, delay_us;
unsigned long cval = 0; unsigned long cval = 0;
u32 temp[2][2], value;
unsigned int i; unsigned int i;
if (dvfs_pt1 || periodic_training_update) {
delay_us = tegra210_emc_actual_osc_clocks(last->run_clocks);
delay_us *= 1000;
delay_us = 2 + (delay_us / last->rate);
tegra210_emc_start_periodic_compensation(emc);
udelay(delay_us);
}
/* /*
* Dev0 MSB. * Dev0 MSB.
*/ */
...@@ -409,11 +418,6 @@ static u32 periodic_compensation_handler(struct tegra210_emc *emc, u32 type, ...@@ -409,11 +418,6 @@ static u32 periodic_compensation_handler(struct tegra210_emc *emc, u32 type,
(nt)->ptfv_list[PTFV_DVFS_SAMPLES_INDEX]; }) (nt)->ptfv_list[PTFV_DVFS_SAMPLES_INDEX]; })
u32 i, adel = 0, samples = next->ptfv_list[PTFV_DVFS_SAMPLES_INDEX]; u32 i, adel = 0, samples = next->ptfv_list[PTFV_DVFS_SAMPLES_INDEX];
u32 delay;
delay = tegra210_emc_actual_osc_clocks(last->run_clocks);
delay *= 1000;
delay = 2 + (delay / last->rate);
if (!next->periodic_training) if (!next->periodic_training)
return 0; return 0;
...@@ -447,9 +451,6 @@ static u32 periodic_compensation_handler(struct tegra210_emc *emc, u32 type, ...@@ -447,9 +451,6 @@ static u32 periodic_compensation_handler(struct tegra210_emc *emc, u32 type,
__MOVAVG(next, C1D1U1) = 0; __MOVAVG(next, C1D1U1) = 0;
for (i = 0; i < samples; i++) { for (i = 0; i < samples; i++) {
tegra210_emc_start_periodic_compensation(emc);
udelay(delay);
/* /*
* Generate next sample of data. * Generate next sample of data.
*/ */
...@@ -465,12 +466,8 @@ static u32 periodic_compensation_handler(struct tegra210_emc *emc, u32 type, ...@@ -465,12 +466,8 @@ static u32 periodic_compensation_handler(struct tegra210_emc *emc, u32 type,
adel = update_clock_tree_delay(emc, DVFS_UPDATE); adel = update_clock_tree_delay(emc, DVFS_UPDATE);
} }
if (type == PERIODIC_TRAINING_SEQUENCE) { if (type == PERIODIC_TRAINING_SEQUENCE)
tegra210_emc_start_periodic_compensation(emc);
udelay(delay);
adel = update_clock_tree_delay(emc, PERIODIC_TRAINING_UPDATE); adel = update_clock_tree_delay(emc, PERIODIC_TRAINING_UPDATE);
}
return adel; return adel;
} }
......
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