Skip site navigation (1)Skip section navigation (2)
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>