svn commit: r333054 - head/sys/arm/allwinner/clkng
Emmanuel Vadot
manu at FreeBSD.org
Fri Apr 27 09:23:08 UTC 2018
Author: manu
Date: Fri Apr 27 09:23:07 2018
New Revision: 333054
URL: https://svnweb.freebsd.org/changeset/base/333054
Log:
allwinner: clk: Correct aw_clk_get_factor
Switch test between zero based factor and power of two one.
This resulted in a miscalculation of the factor if it was a power
of two one.
Some clocks frequencies were not calculated correctly because of that.
Modified:
head/sys/arm/allwinner/clkng/aw_clk.h
Modified: head/sys/arm/allwinner/clkng/aw_clk.h
==============================================================================
--- head/sys/arm/allwinner/clkng/aw_clk.h Fri Apr 27 08:56:17 2018 (r333053)
+++ head/sys/arm/allwinner/clkng/aw_clk.h Fri Apr 27 09:23:07 2018 (r333054)
@@ -110,10 +110,11 @@ aw_clk_get_factor(uint32_t val, struct aw_clk_factor *
return (factor->value);
factor_val = (val & factor->mask) >> factor->shift;
- if (!(factor->flags & AW_CLK_FACTOR_ZERO_BASED))
- factor_val += 1;
- else if (factor->flags & AW_CLK_FACTOR_POWER_OF_TWO)
+
+ if (factor->flags & AW_CLK_FACTOR_POWER_OF_TWO)
factor_val = 1 << factor_val;
+ else if (!(factor->flags & AW_CLK_FACTOR_ZERO_BASED))
+ factor_val += 1;
return (factor_val);
}
More information about the svn-src-all
mailing list