- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
static void jz_update_dram_prev(unsigned int cur_mclk, unsigned int new_mclk)
{
/* No risk, no fun: run with interrupts on! */
if (new_mclk > cur_mclk) {
/* We're going FASTER, so first update TRAS, RCD, TPC, TRWL
* and TRC of DMCR before changing the frequency.
*/
jz_update_dram_dmcr(new_mclk);
} else {
/* We're going SLOWER: first update RTCOR value
* before changing the frequency.
*/
jz_update_dram_rtcor(new_mclk);
}
}
Кусок кода из официального™ китайского дерева исходников Линукса для одного System-on-Chip.
Реализует поддержку динамического изменения частоты процессора, а приведенная функция меняет тайминги для памяти (как обычно, весьма альтернативным способом). Что характерно, это вполне себе работает на реальном железе, и вроде бы оно у меня в этом куске ни разу не падало.