aboutsummaryrefslogtreecommitdiff
path: root/sys/powerpc
diff options
context:
space:
mode:
authorJustin Hibbits <jhibbits@FreeBSD.org>2017-06-14 04:26:37 +0000
committerJustin Hibbits <jhibbits@FreeBSD.org>2017-06-14 04:26:37 +0000
commit37ea599bf71311e32702b82c172b1c3f7e10af35 (patch)
tree904a4a0b1dc4ca19eebace283cf5a3ed45abd0d8 /sys/powerpc
parent3c804fef82a53c7acc9a54d78fe362b6bb8fde81 (diff)
Notes
Diffstat (limited to 'sys/powerpc')
-rw-r--r--sys/powerpc/mpc85xx/mpc85xx.c18
-rw-r--r--sys/powerpc/mpc85xx/mpc85xx.h1
2 files changed, 16 insertions, 3 deletions
diff --git a/sys/powerpc/mpc85xx/mpc85xx.c b/sys/powerpc/mpc85xx/mpc85xx.c
index 1ab14e61af28..bb422c026a82 100644
--- a/sys/powerpc/mpc85xx/mpc85xx.c
+++ b/sys/powerpc/mpc85xx/mpc85xx.c
@@ -438,16 +438,28 @@ err:
}
uint32_t
-mpc85xx_get_system_clock(void)
+mpc85xx_get_platform_clock(void)
{
phandle_t soc;
- uint32_t freq;
+ static uint32_t freq;
+
+ if (freq != 0)
+ return (freq);
soc = OF_finddevice("/soc");
- freq = 0;
/* freq isn't modified on error. */
OF_getencprop(soc, "bus-frequency", (void *)&freq, sizeof(freq));
+ return (freq);
+}
+
+uint32_t
+mpc85xx_get_system_clock(void)
+{
+ uint32_t freq;
+
+ freq = mpc85xx_get_platform_clock();
+
return (freq / 2);
}
diff --git a/sys/powerpc/mpc85xx/mpc85xx.h b/sys/powerpc/mpc85xx/mpc85xx.h
index 692f70ca7018..20fff6496bc1 100644
--- a/sys/powerpc/mpc85xx/mpc85xx.h
+++ b/sys/powerpc/mpc85xx/mpc85xx.h
@@ -171,6 +171,7 @@ void mpc85xx_enable_l3_cache(void);
void mpc85xx_fix_errata(vm_offset_t);
void dataloss_erratum_access(vm_offset_t, uint32_t);
int mpc85xx_is_qoriq(void);
+uint32_t mpc85xx_get_platform_clock(void);
uint32_t mpc85xx_get_system_clock(void);
#endif /* _MPC85XX_H_ */