Module Name: src
Committed By: matt
Date: Sat Jun 29 20:44:52 UTC 2013
Modified Files:
src/sys/arch/evbarm/beagle: beagle_machdep.c
Log Message:
am335x_cpu_clk is now am335x_sys_clk and am335x_cpu_clk and they are now
in <arm/omap>.
To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/evbarm/beagle/beagle_machdep.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/evbarm/beagle/beagle_machdep.c
diff -u src/sys/arch/evbarm/beagle/beagle_machdep.c:1.51 src/sys/arch/evbarm/beagle/beagle_machdep.c:1.52
--- src/sys/arch/evbarm/beagle/beagle_machdep.c:1.51 Fri Jun 28 00:53:04 2013
+++ src/sys/arch/evbarm/beagle/beagle_machdep.c Sat Jun 29 20:44:52 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: beagle_machdep.c,v 1.51 2013/06/28 00:53:04 matt Exp $ */
+/* $NetBSD: beagle_machdep.c,v 1.52 2013/06/29 20:44:52 matt Exp $ */
/*
* Machine dependent functions for kernel setup for TI OSK5912 board.
@@ -125,7 +125,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: beagle_machdep.c,v 1.51 2013/06/28 00:53:04 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: beagle_machdep.c,v 1.52 2013/06/29 20:44:52 matt Exp $");
#include "opt_machdep.h"
#include "opt_ddb.h"
@@ -134,9 +134,12 @@ __KERNEL_RCSID(0, "$NetBSD: beagle_machd
#include "opt_md.h"
#include "opt_com.h"
#include "opt_omap.h"
-#include "prcm.h"
+
#include "com.h"
+#include "omapwdt32k.h"
+#include "prcm.h"
#include "sdhc.h"
+#include "ukbd.h"
#include <sys/param.h>
#include <sys/systm.h>
@@ -181,6 +184,9 @@ __KERNEL_RCSID(0, "$NetBSD: beagle_machd
#include <arm/omap/omap2_prcm.h>
#include <arm/omap/omap2_gpio.h>
#ifdef TI_AM335X
+# if NPRCM == 0
+# error no prcm device configured.
+# endif
# include <arm/omap/am335x_prcm.h>
# if NSDHC > 0
# include <arm/omap/omap2_obiovar.h>
@@ -199,9 +205,6 @@ __KERNEL_RCSID(0, "$NetBSD: beagle_machd
#include <dev/i2c/i2cvar.h>
#include <dev/i2c/ddcreg.h>
-#include "prcm.h"
-#include "omapwdt32k.h"
-#include "ukbd.h"
#include <dev/usb/ukbdvar.h>
BootConfig bootconfig; /* Boot config storage */
@@ -233,6 +236,7 @@ uint32_t omap5_cnt_frq;
* kernel address space. *Not* for general use.
*/
#define KERNEL_BASE_PHYS ((paddr_t)KERNEL_BASE_phys)
+#define OMAP_L4_CORE_VOFFSET (OMAP_L4_CORE_VBASE - OMAP_L4_CORE_BASE)
/* Prototypes */
@@ -250,9 +254,6 @@ static void omap3_cpu_clk(void);
#if defined(OMAP_4XXX) || defined(OMAP_5XXX)
static void omap4_cpu_clk(void);
#endif
-#if defined(TI_AM335X)
-static void am335x_cpu_clk(void);
-#endif
#if defined(OMAP_4XXX) || defined(OMAP_5XXX) || defined(TI_AM335X)
static psize_t emif_memprobe(void);
#endif
@@ -466,6 +467,9 @@ initarm(void *arg)
omap4_cpu_clk(); // find our CPU speed.
#endif
#if defined(TI_AM335X)
+ prcm_bootstrap(OMAP2_CM_BASE + OMAP_L4_CORE_VOFFSET);
+ // find our reference clock.
+ am335x_sys_clk(TI_AM335X_CTLMOD_BASE + OMAP_L4_CORE_VOFFSET);
am335x_cpu_clk(); // find our CPU speed.
#endif
/* Heads up ... Setup the CPU / MMU / TLB functions. */
@@ -485,7 +489,7 @@ initarm(void *arg)
OMAP_L4_PERIPHERAL_VBASE - OMAP_L4_PERIPHERAL_BASE;
arml2cc_init(&omap_bs_tag, pl310_bh, 0);
#endif
-#if defined(TI_AM335X)
+#if defined(TI_AM335X) && defined(VERBOSE_ARM_INIT)
am335x_cpu_clk(); // find our CPU speed.
#endif
#if 1
@@ -708,7 +712,7 @@ static kgdb_port_init(void)
void
omap3_cpu_clk(void)
{
- const vaddr_t prm_base = OMAP2_PRM_BASE - OMAP_L4_CORE_BASE + OMAP_L4_CORE_VBASE;
+ const vaddr_t prm_base = OMAP2_PRM_BASE + OMAP_L4_CORE_VOFFSET;
const uint32_t prm_clksel = *(volatile uint32_t *)(prm_base + PLL_MOD + OMAP3_PRM_CLKSEL);
static const uint32_t prm_clksel_freqs[] = OMAP3_PRM_CLKSEL_FREQS;
const uint32_t sys_clk = prm_clksel_freqs[__SHIFTOUT(prm_clksel, OMAP3_PRM_CLKSEL_CLKIN)];
@@ -731,8 +735,8 @@ omap3_cpu_clk(void)
void
omap4_cpu_clk(void)
{
- const vaddr_t prm_base = OMAP2_PRM_BASE - OMAP_L4_CORE_BASE + OMAP_L4_CORE_VBASE;
- const vaddr_t cm_base = OMAP2_CM_BASE - OMAP_L4_CORE_BASE + OMAP_L4_CORE_VBASE;
+ const vaddr_t prm_base = OMAP2_PRM_BASE + OMAP_L4_CORE_VOFFSET;
+ const vaddr_t cm_base = OMAP2_CM_BASE + OMAP_L4_CORE_VOFFSET;
static const uint32_t cm_clksel_freqs[] = OMAP4_CM_CLKSEL_FREQS;
const uint32_t prm_clksel = *(volatile uint32_t *)(prm_base + OMAP4_CM_SYS_CLKSEL);
const u_int clksel = __SHIFTOUT(prm_clksel, OMAP4_CM_SYS_CLKSEL_CLKIN);
@@ -804,31 +808,6 @@ omap4_cpu_clk(void)
}
#endif /* OMAP_4XXX || OMAP_5XXX */
-#if defined(TI_AM335X)
-void
-am335x_cpu_clk(void)
-{
- static const uint32_t sys_clks[4] = {
- [0] = 19200000, [1] = 24000000, [2] = 25000000, [3] = 26000000
- };
- const vaddr_t cm_base = OMAP2_CM_BASE - OMAP_L4_CORE_BASE + OMAP_L4_CORE_VBASE;
- const vaddr_t cm_wkup_base = cm_base + AM335X_PRCM_CM_WKUP;
- const vaddr_t ctlmod_base = TI_AM335X_CTLMOD_BASE - OMAP_L4_CORE_BASE + OMAP_L4_CORE_VBASE;
- const uint32_t control_status = *(const volatile uint32_t *)(ctlmod_base + CTLMOD_CONTROL_STATUS);
- const uint32_t sys_clk = sys_clks[__SHIFTOUT(control_status, CTLMOD_CONTROL_STATUS_SYSBOOT1)];
- const uint32_t clksel_dpll_mpu = *(volatile uint32_t *)(cm_wkup_base + TI_AM335X_CM_CLKSEL_DPLL_MPU);
- const uint32_t div_m2_dpll_mpu = *(volatile uint32_t *)(cm_wkup_base + TI_AM335X_CM_DIV_M2_DPLL_MPU);
- const uint32_t m = __SHIFTOUT(clksel_dpll_mpu, TI_AM335X_CM_CLKSEL_DPLL_MPU_DPLL_MULT);
- const uint32_t n = __SHIFTOUT(clksel_dpll_mpu, TI_AM335X_CM_CLKSEL_DPLL_MPU_DPLL_DIV);
- const uint32_t m2 = __SHIFTOUT(div_m2_dpll_mpu, TI_AM335X_CM_DIV_M2_DPLL_MPU_DPLL_CLKOUT_DIV);
- /* XXX This ignores CM_CLKSEL_DPLL_MPU[DPLL_REGM4XEN]. */
- curcpu()->ci_data.cpu_cc_freq = ((m * (sys_clk / (n + 1))) / m2);
- printf("%s: %"PRIu64": sys_clk=%u m=%u n=%u (%u) m2=%u\n",
- __func__, curcpu()->ci_data.cpu_cc_freq,
- sys_clk, m, n, n+1, m2);
- omap_sys_clk = sys_clk;
-}
-#endif /* TI_AM335X */
#if defined(OMAP_4XXX) || defined(OMAP_5XXX) || defined(TI_AM335X)
static inline uint32_t