// SPDX-License-Identifier: GPL-2.0-or-later /* * Shared helper functions for devices from the ADAU family * * Copyright 2011-2016 Analog Devices Inc. * Author: Lars-Peter Clausen <lars@metafoo.de>
*/
int adau_calc_pll_cfg(unsignedint freq_in, unsignedint freq_out,
uint8_t regs[5])
{ unsignedint r, n, m, i, j; unsignedint div;
if (!freq_out) {
r = 0;
n = 0;
m = 0;
div = 0;
} else { if (freq_out % freq_in != 0) {
div = DIV_ROUND_UP(freq_in, 13500000);
freq_in /= div;
r = freq_out / freq_in;
i = freq_out % freq_in;
j = gcd(i, freq_in);
n = i / j;
m = freq_in / j;
div--;
} else {
r = freq_out / freq_in;
n = 0;
m = 0;
div = 0;
} if (n > 0xffff || m > 0xffff || div > 3 || r > 8 || r < 2) return -EINVAL;
}
regs[0] = m >> 8;
regs[1] = m & 0xff;
regs[2] = n >> 8;
regs[3] = n & 0xff;
regs[4] = (r << 3) | (div << 1); if (m != 0)
regs[4] |= 1; /* Fractional mode */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.