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);
 }
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to