From owner-svn-src-projects@FreeBSD.ORG Sat Dec 14 14:49:11 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6CFC69F2; Sat, 14 Dec 2013 14:49:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4DF22171D; Sat, 14 Dec 2013 14:49:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id rBEEnBTV017108; Sat, 14 Dec 2013 14:49:11 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id rBEEn9Zv017099; Sat, 14 Dec 2013 14:49:09 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201312141449.rBEEn9Zv017099@svn.freebsd.org> From: Andrew Turner Date: Sat, 14 Dec 2013 14:49:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r259391 - in projects/specific_leg/sys/arm: arm broadcom/bcm2835 include ti ti/omap4 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Dec 2013 14:49:11 -0000 Author: andrew Date: Sat Dec 14 14:49:09 2013 New Revision: 259391 URL: http://svnweb.freebsd.org/changeset/base/259391 Log: Add cpu_reset, cpu_initclocks, and DELAY to the platform code Modified: projects/specific_leg/sys/arm/arm/mpcore_timer.c projects/specific_leg/sys/arm/arm/platform.c projects/specific_leg/sys/arm/arm/platform_if.m projects/specific_leg/sys/arm/broadcom/bcm2835/bcm2835_machdep.c projects/specific_leg/sys/arm/broadcom/bcm2835/bcm2835_systimer.c projects/specific_leg/sys/arm/include/platformvar.h projects/specific_leg/sys/arm/ti/omap4/omap4_prcm_clks.c projects/specific_leg/sys/arm/ti/ti_machdep.c Modified: projects/specific_leg/sys/arm/arm/mpcore_timer.c ============================================================================== --- projects/specific_leg/sys/arm/arm/mpcore_timer.c Sat Dec 14 14:47:29 2013 (r259390) +++ projects/specific_leg/sys/arm/arm/mpcore_timer.c Sat Dec 14 14:49:09 2013 (r259391) @@ -58,6 +58,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include #include @@ -365,7 +367,7 @@ DRIVER_MODULE(mp_tmr, simplebus, arm_tmr * nothing */ void -cpu_initclocks(void) +arm_tmr_cpu_initclocks(platform_t plat) { if (PCPU_GET(cpuid) == 0) cpu_initclocks_bsp(); @@ -374,7 +376,7 @@ cpu_initclocks(void) } /** - * DELAY - Delay for at least usec microseconds. + * arm_tmr_delay - Delay for at least usec microseconds. * @usec: number of microseconds to delay by * * This function is called all over the kernel and is suppose to provide a @@ -385,7 +387,7 @@ cpu_initclocks(void) * nothing */ void -DELAY(int usec) +arm_tmr_delay(platform_t plat, int usec) { int32_t counts_per_usec; int32_t counts; Modified: projects/specific_leg/sys/arm/arm/platform.c ============================================================================== --- projects/specific_leg/sys/arm/arm/platform.c Sat Dec 14 14:47:29 2013 (r259390) +++ projects/specific_leg/sys/arm/arm/platform.c Sat Dec 14 14:49:09 2013 (r259391) @@ -170,6 +170,14 @@ platform_late_init(void) PLATFORM_LATE_INIT(plat_obj); } +void +cpu_reset(void) +{ + PLATFORM_CPU_RESET(plat_obj); + + panic("CPU failed to reset"); +} + int arm_get_next_irq(int last) { @@ -199,3 +207,16 @@ bus_dma_get_range_nb(void) { return PLATFORM_BUS_DMA_GET_RANGE_NB(plat_obj); } + +void +cpu_initclocks(void) +{ + PLATFORM_CPU_INITCLOCKS(plat_obj); +} + +void +DELAY(int usec) +{ + PLATFORM_DELAY(plat_obj, usec); +} + Modified: projects/specific_leg/sys/arm/arm/platform_if.m ============================================================================== --- projects/specific_leg/sys/arm/arm/platform_if.m Sat Dec 14 14:47:29 2013 (r259390) +++ projects/specific_leg/sys/arm/arm/platform_if.m Sat Dec 14 14:49:09 2013 (r259391) @@ -149,6 +149,12 @@ METHOD void late_init { /** */ +METHOD void cpu_reset { + platform_t _plat; +}; + +/** + */ METHOD int get_next_irq { platform_t _plat; int last; @@ -180,3 +186,15 @@ METHOD int bus_dma_get_range_nb { platform_t _plat; } DEFAULT platform_null_bus_dma_get_range_nb; +/** + */ +METHOD void cpu_initclocks { + platform_t _plat; +}; + +/** + */ +METHOD void delay { + platform_t _plat; + int usec; +}; Modified: projects/specific_leg/sys/arm/broadcom/bcm2835/bcm2835_machdep.c ============================================================================== --- projects/specific_leg/sys/arm/broadcom/bcm2835/bcm2835_machdep.c Sat Dec 14 14:47:29 2013 (r259390) +++ projects/specific_leg/sys/arm/broadcom/bcm2835/bcm2835_machdep.c Sat Dec 14 14:49:09 2013 (r259391) @@ -116,8 +116,8 @@ bcm2835_devmap_init(platform_t plat) return (0); } -void -cpu_reset() +static void +bcm_2835_cpu_reset(platform_t plat) { bcmwd_watchdog_reset(); while (1); @@ -126,16 +126,23 @@ cpu_reset() int bcm2835_get_next_irq(platform_t, int); void bcm2835_mask_irq(platform_t, uintptr_t); void bcm2835_unmask_irq(platform_t, uintptr_t); +void bcm2835_cpu_initclocks(platform_t); +void bcm2835_delay(platform_t, int); static platform_method_t bcm2835_methods[] = { PLATFORMMETHOD(platform_devmap_init, bcm2835_devmap_init), PLATFORMMETHOD(platform_lastaddr, bcm2835_lastaddr), PLATFORMMETHOD(platform_late_init, bcm2835_late_init), + PLATFORMMETHOD(platform_cpu_reset, bcm_2835_cpu_reset), + PLATFORMMETHOD(platform_get_next_irq, bcm2835_get_next_irq), PLATFORMMETHOD(platform_mask_irq, bcm2835_mask_irq), PLATFORMMETHOD(platform_unmask_irq, bcm2835_unmask_irq), + PLATFORMMETHOD(platform_cpu_initclocks, bcm2835_cpu_initclocks), + PLATFORMMETHOD(platform_delay, bcm2835_delay), + PLATFORMMETHOD_END, }; Modified: projects/specific_leg/sys/arm/broadcom/bcm2835/bcm2835_systimer.c ============================================================================== --- projects/specific_leg/sys/arm/broadcom/bcm2835/bcm2835_systimer.c Sat Dec 14 14:47:29 2013 (r259390) +++ projects/specific_leg/sys/arm/broadcom/bcm2835/bcm2835_systimer.c Sat Dec 14 14:49:09 2013 (r259391) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -274,14 +275,17 @@ static devclass_t bcm_systimer_devclass; DRIVER_MODULE(bcm_systimer, simplebus, bcm_systimer_driver, bcm_systimer_devclass, 0, 0); +void bcm2835_cpu_initclocks(platform_t); +void bcm2835_delay(platform_t, int); + void -cpu_initclocks(void) +bcm2835_cpu_initclocks(platform_t plat) { cpu_initclocks_bsp(); } void -DELAY(int usec) +bcm2835_delay(platform_t plat, int usec) { int32_t counts; uint32_t first, last; Modified: projects/specific_leg/sys/arm/include/platformvar.h ============================================================================== --- projects/specific_leg/sys/arm/include/platformvar.h Sat Dec 14 14:47:29 2013 (r259390) +++ projects/specific_leg/sys/arm/include/platformvar.h Sat Dec 14 14:49:09 2013 (r259391) @@ -121,4 +121,7 @@ DATA_SET(platform_set, NAME ## _platform #endif +void arm_tmr_cpu_initclocks(platform_t); +void arm_tmr_delay(platform_t, int); + #endif /* _MACHINE_PLATFORMVAR_H_ */ Modified: projects/specific_leg/sys/arm/ti/omap4/omap4_prcm_clks.c ============================================================================== --- projects/specific_leg/sys/arm/ti/omap4/omap4_prcm_clks.c Sat Dec 14 14:47:29 2013 (r259390) +++ projects/specific_leg/sys/arm/ti/omap4/omap4_prcm_clks.c Sat Dec 14 14:49:09 2013 (r259391) @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -1339,8 +1340,10 @@ omap4_clk_hsusbhost_set_source(struct ti #define PRM_RSTCTRL 0x1b00 #define PRM_RSTCTRL_RESET 0x2 -static void -omap4_prcm_reset(void) +void omap4_prcm_reset(platform_t); + +void +omap4_prcm_reset(platform_t plat) { struct omap4_prcm_softc *sc = omap4_prcm_sc; bus_write_4(sc->sc_res[0], PRM_RSTCTRL, @@ -1398,7 +1401,6 @@ omap4_prcm_attach(device_t dev) } omap4_prcm_sc = sc; - ti_cpu_reset = omap4_prcm_reset; omap4_clk_get_arm_fclk_freq(NULL, &freq); platform_arm_tmr_freq = freq / 2; Modified: projects/specific_leg/sys/arm/ti/ti_machdep.c ============================================================================== --- projects/specific_leg/sys/arm/ti/ti_machdep.c Sat Dec 14 14:47:29 2013 (r259390) +++ projects/specific_leg/sys/arm/ti/ti_machdep.c Sat Dec 14 14:49:09 2013 (r259391) @@ -69,13 +69,10 @@ __FBSDID("$FreeBSD$"); #error Not yet able to use both OMAP4 and AM335X in the same kernel #endif -void (*ti_cpu_reset)(void); - static int ti_attach(platform_t plat) { - ti_cpu_reset = NULL; return (0); } @@ -127,27 +124,23 @@ ti_am335x_devmap_init(platform_t plat) } #endif -void -cpu_reset() -{ - if (ti_cpu_reset) - (*ti_cpu_reset)(); - else - printf("no cpu_reset implementation\n"); - printf("Reset failed!\n"); - while (1); -} - #if defined(SOC_OMAP4) +void omap4_prcm_reset(platform_t); + static platform_method_t omap4_methods[] = { PLATFORMMETHOD(platform_attach, ti_attach), PLATFORMMETHOD(platform_devmap_init, ti_omap4_devmap_init), PLATFORMMETHOD(platform_lastaddr, ti_lastaddr), + PLATFORMMETHOD(platform_cpu_reset, omap4_prcm_reset), + PLATFORMMETHOD(platform_get_next_irq, gic_get_next_irq), PLATFORMMETHOD(platform_mask_irq, gic_mask_irq), PLATFORMMETHOD(platform_unmask_irq, gic_unmask_irq), + PLATFORMMETHOD(platform_cpu_initclocks, arm_tmr_cpu_initclocks), + PLATFORMMETHOD(platform_delay, arm_tmr_delay), + PLATFORMMETHOD_END, };