From owner-svn-src-all@FreeBSD.ORG  Fri Nov 29 21:59:04 2013
Return-Path: <owner-svn-src-all@FreeBSD.ORG>
Delivered-To: svn-src-all@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115])
 (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by hub.freebsd.org (Postfix) with ESMTPS id 501BAE74;
 Fri, 29 Nov 2013 21:59:04 +0000 (UTC)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by mx1.freebsd.org (Postfix) with ESMTPS id 3B9D911A3;
 Fri, 29 Nov 2013 21:59:04 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id rATLx4PQ029490;
 Fri, 29 Nov 2013 21:59:04 GMT
 (envelope-from nwhitehorn@svn.freebsd.org)
Received: (from nwhitehorn@localhost)
 by svn.freebsd.org (8.14.7/8.14.5/Submit) id rATLx4Xt029489;
 Fri, 29 Nov 2013 21:59:04 GMT
 (envelope-from nwhitehorn@svn.freebsd.org)
Message-Id: <201311292159.rATLx4Xt029489@svn.freebsd.org>
From: Nathan Whitehorn <nwhitehorn@FreeBSD.org>
Date: Fri, 29 Nov 2013 21:59:04 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-head@freebsd.org
Subject: svn commit: r258757 - head/sys/powerpc/powerpc
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-all@freebsd.org
X-Mailman-Version: 2.1.16
Precedence: list
List-Id: "SVN commit messages for the entire src tree \(except for &quot;
 user&quot; and &quot; projects&quot; \)" <svn-src-all.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-all/>
List-Post: <mailto:svn-src-all@freebsd.org>
List-Help: <mailto:svn-src-all-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 29 Nov 2013 21:59:04 -0000

Author: nwhitehorn
Date: Fri Nov 29 21:59:03 2013
New Revision: 258757
URL: http://svnweb.freebsd.org/changeset/base/258757

Log:
  Use the Open Firmware-based CPU frequency determination as a generic
  fallback if we can't measure CPU frequency. This is also useful on a
  variety of embedded systems using FDT.

Modified:
  head/sys/powerpc/powerpc/cpu.c

Modified: head/sys/powerpc/powerpc/cpu.c
==============================================================================
--- head/sys/powerpc/powerpc/cpu.c	Fri Nov 29 21:13:30 2013	(r258756)
+++ head/sys/powerpc/powerpc/cpu.c	Fri Nov 29 21:59:03 2013	(r258757)
@@ -276,7 +276,6 @@ cpu_est_clockrate(int cpu_id, uint64_t *
 	uint16_t	vers;
 	register_t	msr;
 	phandle_t	cpu, dev, root;
-	uint32_t	freq[2];
 	int		res  = 0;
 	char		buf[8];
 
@@ -323,13 +322,11 @@ cpu_est_clockrate(int cpu_id, uint64_t *
 			mtmsr(msr);
 			return (0);
 
-		case IBMPOWER5:
-		case IBMPOWER5PLUS:
-		case IBMPOWER6:
-		case IBMPOWER7:
-		case IBMPOWER7PLUS:
-		case IBMPOWER8:
+		default:
 			root = OF_peer(0);
+			if (root == 0)
+				return (ENXIO);
+
 			dev = OF_child(root);
 			while (dev != 0) {
 				res = OF_getprop(dev, "name", buf, sizeof(buf));
@@ -347,19 +344,17 @@ cpu_est_clockrate(int cpu_id, uint64_t *
 			}
 			if (cpu == 0)
 				return (ENOENT);
-			if (OF_getprop(cpu, "clock-frequency", &freq[0],
-					sizeof(freq[0])))
-					*cps = freq[0];
-			else if (OF_getprop(cpu, "ibm,extended-clock-frequency",
-					&freq, sizeof(freq)))
-					*cps = freq[1];
-			else
-			    *cps = 0;
-
-			return(0);		
+			if (OF_getprop(cpu, "ibm,extended-clock-frequency",
+			    cps, sizeof(*cps)) >= 0) {
+				return (0);
+			} else if (OF_getprop(cpu, "clock-frequency", cps, 
+			    sizeof(cell_t)) >= 0) {
+				*cps >>= 32;
+				return (0);
+			} else {
+				return (ENOENT);
+			}
 	}
-	
-	return (ENXIO);
 }
 
 void