aboutsummaryrefslogtreecommitdiff
path: root/sys/arm
diff options
context:
space:
mode:
authorEmmanuel Vadot <manu@FreeBSD.org>2020-08-05 08:31:26 +0000
committerEmmanuel Vadot <manu@FreeBSD.org>2020-08-05 08:31:26 +0000
commit738fc84a7a946937fd3579fb94264973459cda52 (patch)
tree60f8d9f871d875048345eb48e142e03801b3d5f9 /sys/arm
parent18f67bc413e8a4e6b313c023e8612603f1ea17c0 (diff)
downloadsrc-738fc84a7a946937fd3579fb94264973459cda52.tar.gz
src-738fc84a7a946937fd3579fb94264973459cda52.zip
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
Notes
Notes: svn path=/head/; revision=363887
Diffstat (limited to 'sys/arm')
-rw-r--r--sys/arm/allwinner/clkng/aw_clk_nm.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/arm/allwinner/clkng/aw_clk_nm.c b/sys/arm/allwinner/clkng/aw_clk_nm.c
index dc560cca5622..27caf3374266 100644
--- a/sys/arm/allwinner/clkng/aw_clk_nm.c
+++ b/sys/arm/allwinner/clkng/aw_clk_nm.c
@@ -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;