Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Apr 2018 09:23:07 +0000 (UTC)
From:      Emmanuel Vadot <manu@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r333054 - head/sys/arm/allwinner/clkng
Message-ID:  <201804270923.w3R9N7Jn079778@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201804270923.w3R9N7Jn079778>