blob: fac47ee511eaa6ea68d58ad0b7c00383c8399598 [file] [log] [blame]
#include "board_util.h"
void find_best_divisor(uint32_t desired_freq, const uint32_t base_frequencies[],
size_t num_base_frequencies, uint8_t *best_divisor,
size_t *best_base_frequency_index)
{
*best_divisor = 255;
*best_base_frequency_index = 0;
uint32_t best_freq = base_frequencies[0] / 256;
for (size_t i = 0; i < num_base_frequencies; i++) {
uint32_t divisor = base_frequencies[i] / (desired_freq + 1);
if (divisor >= 256)
continue;
uint32_t freq = base_frequencies[i] / (divisor + 1);
if (freq > best_freq) {
*best_divisor = divisor;
*best_base_frequency_index = i;
best_freq = freq;
}
}
}