summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/booke
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2014-05-13 18:00:41 +0000
committerian <ian@FreeBSD.org>2014-05-13 18:00:41 +0000
commit41e4178a5bf9750ed65445b40e81c0b5f56d0c4e (patch)
tree4450f371deee11af25be77df421d4c3e3432899d /sys/powerpc/booke
parent4c1631c2b15b10939521fa505c7995af4409aefb (diff)
downloadFreeBSD-src-41e4178a5bf9750ed65445b40e81c0b5f56d0c4e.zip
FreeBSD-src-41e4178a5bf9750ed65445b40e81c0b5f56d0c4e.tar.gz
MFC r256973, r256974
If the device tree directly contains the timebase frequency, use it. This property is required by ePAPR, but maintain the fallback to bus-frequency for compatibility. Allow 32 or 64 bits.
Diffstat (limited to 'sys/powerpc/booke')
-rw-r--r--sys/powerpc/booke/platform_bare.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/powerpc/booke/platform_bare.c b/sys/powerpc/booke/platform_bare.c
index 65fb554..743a157 100644
--- a/sys/powerpc/booke/platform_bare.c
+++ b/sys/powerpc/booke/platform_bare.c
@@ -188,6 +188,25 @@ bare_timebase_freq(platform_t plat, struct cpuref *cpuref)
if ((child = OF_child(cpus)) == 0)
goto out;
+ switch (OF_getproplen(child, "timebase-frequency")) {
+ case 4:
+ {
+ uint32_t tbase;
+ OF_getprop(child, "timebase-frequency", &tbase, sizeof(tbase));
+ ticks = tbase;
+ return (ticks);
+ }
+ case 8:
+ {
+ uint64_t tbase;
+ OF_getprop(child, "timebase-frequency", &tbase, sizeof(tbase));
+ ticks = tbase;
+ return (ticks);
+ }
+ default:
+ break;
+ }
+
freq = 0;
if (OF_getprop(child, "bus-frequency", (void *)&freq,
sizeof(freq)) <= 0)
OpenPOWER on IntegriCloud