Date: Sat, 14 Dec 2013 14:49:09 +0000 (UTC) From: Andrew Turner <andrew@FreeBSD.org> 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 Message-ID: <201312141449.rBEEn9Zv017099@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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 <machine/bus.h> #include <machine/cpu.h> #include <machine/intr.h> +#include <machine/intr.h> +#include <machine/platformvar.h> #include <dev/fdt/fdt_common.h> #include <dev/ofw/openfirm.h> @@ -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 <machine/bus.h> #include <machine/cpu.h> #include <machine/intr.h> +#include <machine/platformvar.h> #include <dev/fdt/fdt_common.h> #include <dev/ofw/openfirm.h> @@ -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 <machine/cpufunc.h> #include <machine/resource.h> #include <machine/intr.h> +#include <machine/platformvar.h> #include <arm/ti/tivar.h> #include <arm/ti/ti_prcm.h> @@ -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, };
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312141449.rBEEn9Zv017099>