aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuslan Bukin <br@FreeBSD.org>2017-02-28 16:20:33 +0000
committerRuslan Bukin <br@FreeBSD.org>2017-02-28 16:20:33 +0000
commit6414b02d0c8de09a757d0fb44cb4ab8c7c32c468 (patch)
tree58df74e23b308b78be3d8b045b7336568fa1b38c
parentfd8516cc05e6e6ff295c6370fab4b2654d643c5c (diff)
downloadsrc-6414b02d0c8de09a757d0fb44cb4ab8c7c32c468.tar.gz
src-6414b02d0c8de09a757d0fb44cb4ab8c7c32c468.zip
Add SOC_ALTERA_* kernel options per each SoC and use it to
conditionally compile the code. Reviewed by: andrew Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D9836
Notes
Notes: svn path=/head/; revision=314395
-rw-r--r--sys/arm/altera/socfpga/socfpga_machdep.c18
-rw-r--r--sys/arm/altera/socfpga/socfpga_mp.c60
-rw-r--r--sys/arm/conf/SOCFPGA3
-rw-r--r--sys/conf/options.arm2
4 files changed, 65 insertions, 18 deletions
diff --git a/sys/arm/altera/socfpga/socfpga_machdep.c b/sys/arm/altera/socfpga/socfpga_machdep.c
index b74c49745331..4a0d9ecca294 100644
--- a/sys/arm/altera/socfpga/socfpga_machdep.c
+++ b/sys/arm/altera/socfpga/socfpga_machdep.c
@@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$");
#include "platform_if.h"
+#if defined(SOC_ALTERA_CYCLONE5)
static int
socfpga_devmap_init(platform_t plat)
{
@@ -82,7 +83,9 @@ socfpga_devmap_init(platform_t plat)
return (0);
}
+#endif
+#if defined(SOC_ALTERA_ARRIA10)
static int
socfpga_a10_devmap_init(platform_t plat)
{
@@ -101,9 +104,10 @@ socfpga_a10_devmap_init(platform_t plat)
return (0);
}
+#endif
static void
-_socfpga_cpu_reset(platform_t plat, uint32_t reg)
+_socfpga_cpu_reset(bus_size_t reg)
{
uint32_t paddr;
bus_addr_t vaddr;
@@ -127,20 +131,25 @@ end:
while (1);
}
+#if defined(SOC_ALTERA_CYCLONE5)
static void
socfpga_cpu_reset(platform_t plat)
{
- _socfpga_cpu_reset(plat, RSTMGR_CTRL);
+ _socfpga_cpu_reset(RSTMGR_CTRL);
}
+#endif
+#if defined(SOC_ALTERA_ARRIA10)
static void
socfpga_a10_cpu_reset(platform_t plat)
{
- _socfpga_cpu_reset(plat, RSTMGR_A10_CTRL);
+ _socfpga_cpu_reset(RSTMGR_A10_CTRL);
}
+#endif
+#if defined(SOC_ALTERA_CYCLONE5)
static platform_method_t socfpga_methods[] = {
PLATFORMMETHOD(platform_devmap_init, socfpga_devmap_init),
PLATFORMMETHOD(platform_cpu_reset, socfpga_cpu_reset),
@@ -151,7 +160,9 @@ static platform_method_t socfpga_methods[] = {
PLATFORMMETHOD_END,
};
FDT_PLATFORM_DEF(socfpga, "socfpga", 0, "altr,socfpga-cyclone5", 200);
+#endif
+#if defined(SOC_ALTERA_ARRIA10)
static platform_method_t socfpga_a10_methods[] = {
PLATFORMMETHOD(platform_devmap_init, socfpga_a10_devmap_init),
PLATFORMMETHOD(platform_cpu_reset, socfpga_a10_cpu_reset),
@@ -162,3 +173,4 @@ static platform_method_t socfpga_a10_methods[] = {
PLATFORMMETHOD_END,
};
FDT_PLATFORM_DEF(socfpga_a10, "socfpga", 0, "altr,socfpga-arria10", 200);
+#endif
diff --git a/sys/arm/altera/socfpga/socfpga_mp.c b/sys/arm/altera/socfpga/socfpga_mp.c
index 2494a75d96f0..2b3a6dfe61c7 100644
--- a/sys/arm/altera/socfpga/socfpga_mp.c
+++ b/sys/arm/altera/socfpga/socfpga_mp.c
@@ -75,8 +75,8 @@ __FBSDID("$FreeBSD$");
#define RAM_PHYSBASE 0x0
#define RAM_SIZE 0x1000
-#define SOCFPGA_SOCKIT 1
-#define SOCFPGA_SOCDK 2
+#define SOCFPGA_ARRIA10 1
+#define SOCFPGA_CYCLONE5 2
extern char *mpentry_addr;
static void socfpga_trampoline(void);
@@ -112,22 +112,31 @@ socfpga_mp_setmaxid(platform_t plat)
mp_maxid = ncpu - 1;
}
-
static void
-_socfpga_mp_start_ap(platform_t plat, uint32_t platid)
+_socfpga_mp_start_ap(uint32_t platid)
{
bus_space_handle_t scu, rst, ram;
int reg;
- if (platid == SOCFPGA_SOCDK) {
+ switch (platid) {
+#if defined(SOC_ALTERA_ARRIA10)
+ case SOCFPGA_ARRIA10:
if (bus_space_map(fdtbus_bs_tag, SCU_PHYSBASE_A10,
SCU_SIZE, 0, &scu) != 0)
- panic("Couldn't map the SCU\n");
- } else {
+ panic("Couldn't map the SCU\n");
+ break;
+#endif
+#if defined(SOC_ALTERA_CYCLONE5)
+ case SOCFPGA_CYCLONE5:
if (bus_space_map(fdtbus_bs_tag, SCU_PHYSBASE,
SCU_SIZE, 0, &scu) != 0)
- panic("Couldn't map the SCU\n");
+ panic("Couldn't map the SCU\n");
+ break;
+#endif
+ default:
+ panic("Unknown platform id %d\n", platid);
}
+
if (bus_space_map(fdtbus_bs_tag, RSTMGR_PHYSBASE,
RSTMGR_SIZE, 0, &rst) != 0)
panic("Couldn't map the reset manager (RSTMGR)\n");
@@ -149,12 +158,21 @@ _socfpga_mp_start_ap(platform_t plat, uint32_t platid)
bus_space_write_4(fdtbus_bs_tag, scu, SCU_DIAG_CONTROL, reg);
/* Put CPU1 to reset state */
- if (platid == SOCFPGA_SOCDK) {
+ switch (platid) {
+#if defined(SOC_ALTERA_ARRIA10)
+ case SOCFPGA_ARRIA10:
bus_space_write_4(fdtbus_bs_tag, rst,
RSTMGR_A10_MPUMODRST, MPUMODRST_CPU1);
- } else {
+ break;
+#endif
+#if defined(SOC_ALTERA_CYCLONE5)
+ case SOCFPGA_CYCLONE5:
bus_space_write_4(fdtbus_bs_tag, rst,
RSTMGR_MPUMODRST, MPUMODRST_CPU1);
+ break;
+#endif
+ default:
+ panic("Unknown platform id %d\n", platid);
}
/* Enable the SCU, then clean the cache on this core */
@@ -170,12 +188,21 @@ _socfpga_mp_start_ap(platform_t plat, uint32_t platid)
dcache_wbinv_poc_all();
/* Put CPU1 out from reset */
- if (platid == SOCFPGA_SOCDK) {
+ switch (platid) {
+#if defined(SOC_ALTERA_ARRIA10)
+ case SOCFPGA_ARRIA10:
bus_space_write_4(fdtbus_bs_tag, rst,
RSTMGR_A10_MPUMODRST, 0);
- } else {
+ break;
+#endif
+#if defined(SOC_ALTERA_CYCLONE5)
+ case SOCFPGA_CYCLONE5:
bus_space_write_4(fdtbus_bs_tag, rst,
RSTMGR_MPUMODRST, 0);
+ break;
+#endif
+ default:
+ panic("Unknown platform id %d\n", platid);
}
dsb();
@@ -186,17 +213,20 @@ _socfpga_mp_start_ap(platform_t plat, uint32_t platid)
bus_space_unmap(fdtbus_bs_tag, ram, RAM_SIZE);
}
+#if defined(SOC_ALTERA_ARRIA10)
void
socfpga_a10_mp_start_ap(platform_t plat)
{
- _socfpga_mp_start_ap(plat, SOCFPGA_SOCDK);
+ _socfpga_mp_start_ap(SOCFPGA_ARRIA10);
}
+#endif
+#if defined(SOC_ALTERA_CYCLONE5)
void
socfpga_mp_start_ap(platform_t plat)
{
- _socfpga_mp_start_ap(plat, SOCFPGA_SOCKIT);
+ _socfpga_mp_start_ap(SOCFPGA_CYCLONE5);
}
-
+#endif
diff --git a/sys/arm/conf/SOCFPGA b/sys/arm/conf/SOCFPGA
index 812e1cf28e8b..a4c8654b1386 100644
--- a/sys/arm/conf/SOCFPGA
+++ b/sys/arm/conf/SOCFPGA
@@ -32,6 +32,9 @@ options PLATFORM_SMP
options SMP # Enable multiple cores
options MULTIDELAY
+options SOC_ALTERA_ARRIA10
+options SOC_ALTERA_CYCLONE5
+
# NFS root from boopt/dhcp
#options BOOTP
#options BOOTP_NFSROOT
diff --git a/sys/conf/options.arm b/sys/conf/options.arm
index 452c9351593a..c9c915f6ae1f 100644
--- a/sys/conf/options.arm
+++ b/sys/conf/options.arm
@@ -50,6 +50,8 @@ SOC_ALLWINNER_A31S opt_global.h
SOC_ALLWINNER_A33 opt_global.h
SOC_ALLWINNER_A83T opt_global.h
SOC_ALLWINNER_H3 opt_global.h
+SOC_ALTERA_ARRIA10 opt_global.h
+SOC_ALTERA_CYCLONE5 opt_global.h
SOC_BCM2835 opt_global.h
SOC_BCM2836 opt_global.h
SOC_IMX51 opt_global.h