Author: mmel
Date: Sun Dec  4 16:02:59 2016
New Revision: 309537
URL: https://svnweb.freebsd.org/changeset/base/309537

Log:
  Clock framework fixes:
   - The clk_test_freq() (aka CLK_SET_DRYRUN) doesn't change frequency,
     don't cache it result.
   - Fix busy condition for clk_set_freq().
  
  MFC after: 3 weeks

Modified:
  head/sys/dev/extres/clk/clk.c

Modified: head/sys/dev/extres/clk/clk.c
==============================================================================
--- head/sys/dev/extres/clk/clk.c       Sun Dec  4 16:00:25 2016        
(r309536)
+++ head/sys/dev/extres/clk/clk.c       Sun Dec  4 16:02:59 2016        
(r309537)
@@ -830,9 +830,10 @@ clknode_set_freq(struct clknode *clknode
         * OR
         *   clock is glitch free and is enabled by calling consumer only
         */
-       if ((clknode->enable_cnt > 1) &&
-           ((clknode->enable_cnt > enablecnt) ||
-           !(clknode->flags & CLK_NODE_GLITCH_FREE))) {
+       if ((flags & CLK_SET_DRYRUN) == 0 &&
+           clknode->enable_cnt > 1 &&
+           clknode->enable_cnt > enablecnt &&
+           (clknode->flags & CLK_NODE_GLITCH_FREE) == 0) {
                return (EBUSY);
        }
 
@@ -856,9 +857,10 @@ clknode_set_freq(struct clknode *clknode
 
        if (done) {
                /* Success - invalidate frequency cache for all children. */
-               clknode->freq = freq;
-               if ((flags & CLK_SET_DRYRUN) == 0)
+               if ((flags & CLK_SET_DRYRUN) == 0) {
+                       clknode->freq = freq;
                        clknode_refresh_cache(clknode, parent_freq);
+               }
        } else if (clknode->parent != NULL) {
                /* Nothing changed, pass request to parent. */
                rv = clknode_set_freq(clknode->parent, freq, flags, enablecnt);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to