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