Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F145896695
D9461.id24803.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D9461.id24803.diff
View Options
Index: sys/arm/altera/socfpga/socfpga_common.c
===================================================================
--- sys/arm/altera/socfpga/socfpga_common.c
+++ sys/arm/altera/socfpga/socfpga_common.c
@@ -43,27 +43,3 @@
#include <arm/altera/socfpga/socfpga_rstmgr.h>
-void
-cpu_reset(void)
-{
- uint32_t paddr;
- bus_addr_t vaddr;
- phandle_t node;
-
- if (rstmgr_warmreset() == 0)
- goto end;
-
- node = OF_finddevice("rstmgr");
- if (node == -1)
- goto end;
-
- if ((OF_getencprop(node, "reg", &paddr, sizeof(paddr))) > 0) {
- if (bus_space_map(fdtbus_bs_tag, paddr, 0x8, 0, &vaddr) == 0) {
- bus_space_write_4(fdtbus_bs_tag, vaddr,
- RSTMGR_CTRL, CTRL_SWWARMRSTREQ);
- }
- }
-
-end:
- while (1);
-}
Index: sys/arm/altera/socfpga/socfpga_machdep.c
===================================================================
--- sys/arm/altera/socfpga/socfpga_machdep.c
+++ sys/arm/altera/socfpga/socfpga_machdep.c
@@ -28,7 +28,6 @@
* SUCH DAMAGE.
*/
-#include "opt_ddb.h"
#include "opt_platform.h"
#include <sys/cdefs.h>
@@ -41,38 +40,22 @@
#include <vm/vm.h>
+#include <dev/ofw/openfirm.h>
+
#include <machine/armreg.h>
#include <machine/bus.h>
+#include <machine/fdt.h>
#include <machine/machdep.h>
#include <machine/platform.h>
+#include <machine/platformvar.h>
-vm_offset_t
-platform_lastaddr(void)
-{
-
- return (devmap_lastaddr());
-}
-
-void
-platform_probe_and_attach(void)
-{
-
-}
-
-void
-platform_gpio_init(void)
-{
-
-}
-
-void
-platform_late_init(void)
-{
+#include <arm/altera/socfpga/socfpga_mp.h>
+#include <arm/altera/socfpga/socfpga_rstmgr.h>
-}
+#include "platform_if.h"
-int
-platform_devmap_init(void)
+static int
+socfpga_devmap_init(platform_t plat)
{
/* UART */
@@ -99,3 +82,42 @@
return (0);
}
+
+static void
+socfpga_cpu_reset(platform_t plat)
+{
+ uint32_t paddr;
+ bus_addr_t vaddr;
+ phandle_t node;
+
+ if (rstmgr_warmreset() == 0)
+ goto end;
+
+ node = OF_finddevice("rstmgr");
+ if (node == -1)
+ goto end;
+
+ if ((OF_getencprop(node, "reg", &paddr, sizeof(paddr))) > 0) {
+ if (bus_space_map(fdtbus_bs_tag, paddr, 0x8, 0, &vaddr) == 0) {
+ bus_space_write_4(fdtbus_bs_tag, vaddr,
+ RSTMGR_CTRL, CTRL_SWWARMRSTREQ);
+ }
+ }
+
+end:
+ while (1);
+}
+
+static platform_method_t socfpga_methods[] = {
+ PLATFORMMETHOD(platform_devmap_init, socfpga_devmap_init),
+ PLATFORMMETHOD(platform_cpu_reset, socfpga_cpu_reset),
+
+#ifdef SMP
+ PLATFORMMETHOD(platform_mp_setmaxid, socfpga_mp_setmaxid),
+ PLATFORMMETHOD(platform_mp_start_ap, socfpga_mp_start_ap),
+#endif
+
+ PLATFORMMETHOD_END,
+};
+
+FDT_PLATFORM_DEF(socfpga, "socfpga", 0, "altr,socfpga", 0);
Index: sys/arm/altera/socfpga/socfpga_mp.h
===================================================================
--- /dev/null
+++ sys/arm/altera/socfpga/socfpga_mp.h
@@ -0,0 +1,34 @@
+/*-
+ * Copyright (c) 2017 Andrew Turner <andrew@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _SOCFPGA_MP_H_
+#define _SOCFPGA_MP_H_
+
+void socfpga_mp_setmaxid(platform_t);
+void socfpga_mp_start_ap(platform_t);
+
+#endif /* _SOCFPGA_MP_H_ */
Index: sys/arm/altera/socfpga/socfpga_mp.c
===================================================================
--- sys/arm/altera/socfpga/socfpga_mp.c
+++ sys/arm/altera/socfpga/socfpga_mp.c
@@ -28,6 +28,8 @@
* SUCH DAMAGE.
*/
+#include "opt_platform.h"
+
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
@@ -45,6 +47,9 @@
#include <machine/smp.h>
#include <machine/fdt.h>
#include <machine/intr.h>
+#include <machine/platformvar.h>
+
+#include <arm/altera/socfpga/socfpga_mp.h>
#define SCU_PHYSBASE 0xFFFEC000
#define SCU_SIZE 0x100
@@ -85,7 +90,7 @@
}
void
-platform_mp_setmaxid(void)
+socfpga_mp_setmaxid(platform_t plat)
{
int hwcpu, ncpu;
@@ -105,7 +110,7 @@
}
void
-platform_mp_start_ap(void)
+socfpga_mp_start_ap(platform_t plat)
{
bus_space_handle_t scu, rst, ram;
int reg;
Index: sys/arm/conf/SOCKIT.common
===================================================================
--- sys/arm/conf/SOCKIT.common
+++ sys/arm/conf/SOCKIT.common
@@ -26,6 +26,8 @@
makeoptions WERROR="-Werror"
options SCHED_ULE # ULE scheduler
+options PLATFORM # Platform based SoC
+options PLATFORM_SMP
options SMP # Enable multiple cores
# NFS root from boopt/dhcp
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Feb 26, 9:13 PM (20 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29007503
Default Alt Text
D9461.id24803.diff (5 KB)
Attached To
Mode
D9461: Add SOCFPGA PLATFORM support
Attached
Detach File
Event Timeline
Log In to Comment