allwinner: clk: Fix nm clock calculation

Use the right factor when finding the best frequency and compare the
absolute value of the result.

Submitted by:	kibab
MFC after:	3 days
This commit is contained in:
Emmanuel Vadot 2020-08-05 08:31:26 +00:00
parent 18f67bc413
commit 738fc84a7a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=363887

View File

@ -151,7 +151,7 @@ aw_clk_nm_find_best(struct aw_clk_nm_sc *sc, uint64_t fparent, uint64_t *fout,
min_n = aw_clk_factor_get_min(&sc->n);
for (m = min_m; m <= max_m; ) {
for (n = min_m; n <= max_n; ) {
for (n = min_n; n <= max_n; ) {
cur = fparent / n / m;
if (abs(*fout - cur) < abs(*fout - best)) {
best = cur;
@ -196,7 +196,7 @@ aw_clk_nm_set_freq(struct clknode *clk, uint64_t fparent, uint64_t *fout,
clknode_get_freq(p_clk, &fparent);
cur = aw_clk_nm_find_best(sc, fparent, fout, &n, &m);
if ((*fout - cur) < (*fout - best)) {
if (abs((*fout - cur)) < abs((*fout - best))) {
best = cur;
best_parent = p_idx;
best_n = n;