diff options
author | ian <ian@FreeBSD.org> | 2014-05-13 18:00:41 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2014-05-13 18:00:41 +0000 |
commit | 41e4178a5bf9750ed65445b40e81c0b5f56d0c4e (patch) | |
tree | 4450f371deee11af25be77df421d4c3e3432899d /sys/powerpc/booke | |
parent | 4c1631c2b15b10939521fa505c7995af4409aefb (diff) | |
download | FreeBSD-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.c | 19 |
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) |