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