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 <and...@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
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to