svn commit: r319553 - in head/sys/arm: conf samsung/exynos

Andrew Turner andrew at FreeBSD.org
Sat Jun 3 20:02:14 UTC 2017


Author: andrew
Date: Sat Jun  3 20:02:12 2017
New Revision: 319553
URL: https://svnweb.freebsd.org/changeset/base/319553

Log:
  Port the Samsung ARM code to use PLATFORM and PLATFORM_SMP. This will help
  move it into the GENERIC kernel config.

Added:
  head/sys/arm/samsung/exynos/exynos5_mp.h   (contents, props changed)
Deleted:
  head/sys/arm/samsung/exynos/exynos5_common.c
Modified:
  head/sys/arm/conf/EXYNOS5.common
  head/sys/arm/samsung/exynos/exynos5_machdep.c
  head/sys/arm/samsung/exynos/exynos5_mp.c
  head/sys/arm/samsung/exynos/files.exynos5

Modified: head/sys/arm/conf/EXYNOS5.common
==============================================================================
--- head/sys/arm/conf/EXYNOS5.common	Sat Jun  3 19:11:32 2017	(r319552)
+++ head/sys/arm/conf/EXYNOS5.common	Sat Jun  3 20:02:12 2017	(r319553)
@@ -22,6 +22,8 @@ makeoptions	WERROR="-Werror"
 
 include 	"std.armv6"
 options 	SCHED_ULE		# ULE scheduler
+options 	PLATFORM		# Platform based SoC
+options 	PLATFORM_SMP
 options 	PREEMPTION		# Enable kernel thread preemption
 options 	INET			# InterNETworking
 options 	INET6			# IPv6 communications protocols

Modified: head/sys/arm/samsung/exynos/exynos5_machdep.c
==============================================================================
--- head/sys/arm/samsung/exynos/exynos5_machdep.c	Sat Jun  3 19:11:32 2017	(r319552)
+++ head/sys/arm/samsung/exynos/exynos5_machdep.c	Sat Jun  3 20:02:12 2017	(r319553)
@@ -24,7 +24,6 @@
  * SUCH DAMAGE.
  */
 
-#include "opt_ddb.h"
 #include "opt_platform.h"
 
 #include <sys/cdefs.h>
@@ -37,40 +36,26 @@ __FBSDID("$FreeBSD$");
 
 #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)
-{
+#include <arm/samsung/exynos/exynos5_mp.h>
 
-	return (devmap_lastaddr());
-}
+#include "platform_if.h"
 
-void
-platform_probe_and_attach(void)
-{
+static platform_devmap_init_t exynos5_devmap_init;
+static platform_cpu_reset_t exynos5_cpu_reset;
 
-}
-
-void
-platform_gpio_init(void)
+static int
+exynos5_devmap_init(platform_t plat)
 {
 
-}
-
-void
-platform_late_init(void)
-{
-
-}
-
-int
-platform_devmap_init(void)
-{
-
 	/* CHIP ID */
 	devmap_add_entry(0x10000000, 0x100000);
 
@@ -82,3 +67,28 @@ platform_devmap_init(void)
 
 	return (0);
 }
+
+static void
+exynos5_cpu_reset(platform_t plat)
+{
+	bus_space_handle_t bsh;
+
+	bus_space_map(fdtbus_bs_tag, 0x10040400, 0x1000, 0, &bsh);
+	bus_space_write_4(fdtbus_bs_tag, bsh, 0, 1);
+
+	while (1);
+}
+
+static platform_method_t exynos5_methods[] = {
+	PLATFORMMETHOD(platform_devmap_init,	exynos5_devmap_init),
+	PLATFORMMETHOD(platform_cpu_reset,	exynos5_cpu_reset),
+
+#ifdef SMP
+	PLATFORMMETHOD(platform_mp_start_ap,	exynos5_mp_start_ap),
+	PLATFORMMETHOD(platform_mp_setmaxid,	exynos5_mp_setmaxid),
+#endif
+
+	PLATFORMMETHOD_END,
+};
+
+FDT_PLATFORM_DEF(exynos5, "exynos5", 0, "samsung,exynos5", 0);

Modified: head/sys/arm/samsung/exynos/exynos5_mp.c
==============================================================================
--- head/sys/arm/samsung/exynos/exynos5_mp.c	Sat Jun  3 19:11:32 2017	(r319552)
+++ head/sys/arm/samsung/exynos/exynos5_mp.c	Sat Jun  3 20:02:12 2017	(r319553)
@@ -40,7 +40,10 @@ __FBSDID("$FreeBSD$");
 #include <machine/smp.h>
 #include <machine/fdt.h>
 #include <machine/intr.h>
+#include <machine/platformvar.h>
 
+#include <arm/samsung/exynos/exynos5_mp.h>
+
 #define	EXYNOS_CHIPID		0x10000000
 
 #define	EXYNOS5250_SOC_ID	0x43520000
@@ -71,7 +74,7 @@ exynos_get_soc_id(void)
 }
 
 void
-platform_mp_setmaxid(void)
+exynos5_mp_setmaxid(platform_t plat)
 {
 
 	if (exynos_get_soc_id() == EXYNOS5420_SOC_ID)
@@ -83,7 +86,7 @@ platform_mp_setmaxid(void)
 }
 
 void
-platform_mp_start_ap(void)
+exynos5_mp_start_ap(platform_t plat)
 {
 	bus_addr_t sysram, pmu;
 	int err, i, j;

Added: head/sys/arm/samsung/exynos/exynos5_mp.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/arm/samsung/exynos/exynos5_mp.h	Sat Jun  3 20:02:12 2017	(r319553)
@@ -0,0 +1,34 @@
+/*-
+ * Copyright (c) 2017 Andrew Turner <andrew at 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 _EXYNOS5_MP_H_
+#define	_EXYNOS5_MP_H_
+
+void exynos5_mp_setmaxid(platform_t);
+void exynos5_mp_start_ap(platform_t);
+
+#endif /* _EXYNOS5_MP_H_ */

Modified: head/sys/arm/samsung/exynos/files.exynos5
==============================================================================
--- head/sys/arm/samsung/exynos/files.exynos5	Sat Jun  3 19:11:32 2017	(r319552)
+++ head/sys/arm/samsung/exynos/files.exynos5	Sat Jun  3 20:02:12 2017	(r319553)
@@ -4,7 +4,6 @@ kern/kern_clocksource.c				standard
 
 arm/samsung/exynos/exynos5_mct.c		standard
 arm/samsung/exynos/exynos5_mp.c			optional	smp
-arm/samsung/exynos/exynos5_common.c		standard
 arm/samsung/exynos/exynos5_machdep.c		standard
 arm/samsung/exynos/exynos5_combiner.c		standard
 arm/samsung/exynos/exynos5_pad.c		optional	gpio


More information about the svn-src-head mailing list