Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Dec 2016 16:03:00 +0000 (UTC)
From:      Michal Meloun <mmel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r309537 - head/sys/dev/extres/clk
Message-ID:  <201612041603.uB4G30GZ080091@repo.freebsd.org>

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



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