Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/powerpc/oea add quick path for timebase-frequency d...



details:   https://anonhg.NetBSD.org/src/rev/f7deebb72d09
branches:  trunk
changeset: 826690:f7deebb72d09
user:      macallan <macallan%NetBSD.org@localhost>
date:      Fri Sep 22 04:45:56 2017 +0000

description:
add quick path for timebase-frequency detection
deal with differences in /u4 reg property encoding vs. /uni-n, so this works
on my G5 now

diffstat:

 sys/arch/powerpc/oea/ofwoea_machdep.c |  24 ++++++++++++++++++------
 1 files changed, 18 insertions(+), 6 deletions(-)

diffs (59 lines):

diff -r a75236861702 -r f7deebb72d09 sys/arch/powerpc/oea/ofwoea_machdep.c
--- a/sys/arch/powerpc/oea/ofwoea_machdep.c     Fri Sep 22 04:11:24 2017 +0000
+++ b/sys/arch/powerpc/oea/ofwoea_machdep.c     Fri Sep 22 04:45:56 2017 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ofwoea_machdep.c,v 1.40 2017/09/15 21:27:46 macallan Exp $ */
+/* $NetBSD: ofwoea_machdep.c,v 1.41 2017/09/22 04:45:56 macallan Exp $ */
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ofwoea_machdep.c,v 1.40 2017/09/15 21:27:46 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ofwoea_machdep.c,v 1.41 2017/09/22 04:45:56 macallan Exp $");
 
 #include "opt_ppcarch.h"
 #include "opt_compat_netbsd.h"
@@ -309,7 +309,7 @@
 void
 set_timebase(void)
 {
-       int qhandle, phandle, msr, scratch;
+       int qhandle, phandle, msr, scratch, node;
        char type[32];
 
        if (timebase_freq != 0) {
@@ -317,7 +317,14 @@
                goto found;
        }
 
-       for (qhandle = OF_peer(0); qhandle; qhandle = phandle) {
+       node = OF_finddevice("/cpus/@0");
+       if (OF_getprop(node, "timebase-frequency",
+                       &ticks_per_sec, sizeof ticks_per_sec) > 0) {
+               goto found;
+       }
+
+       node = OF_finddevice("/");
+       for (qhandle = node; qhandle; qhandle = phandle) {
                if (OF_getprop(qhandle, "device_type", type, sizeof type) > 0
                    && strcmp(type, "cpu") == 0
                    && OF_getprop(qhandle, "timebase-frequency",
@@ -621,8 +628,13 @@
                        break;
                case RANGE_TYPE_MACIO:
                        regions[*cur].type = RANGE_MEM;
-                       regions[*cur].size = map[1];
-                       regions[*cur].addr = map[0];
+                       if (len == 8) {
+                               regions[*cur].size = map[1];
+                               regions[*cur].addr = map[0];
+                       } else {
+                               regions[*cur].size = map[2];
+                               regions[*cur].addr = map[1];
+                       }                               
                        (*cur)++;               
                        break;
        }



Home | Main Index | Thread Index | Old Index