diff options
author | Andrew Turner <andrew@FreeBSD.org> | 2017-06-03 20:02:12 +0000 |
---|---|---|
committer | Andrew Turner <andrew@FreeBSD.org> | 2017-06-03 20:02:12 +0000 |
commit | 6f5db7909ad9e16055f1c94cb15546ae841c73ab (patch) | |
tree | cfe63bafafff7b51c9738896f5ef31e5d701e8bd | |
parent | dc59c854ca65bf7ca265239eccc440c199cb8d2b (diff) | |
download | src-6f5db7909ad9e16055f1c94cb15546ae841c73ab.tar.gz src-6f5db7909ad9e16055f1c94cb15546ae841c73ab.zip |
Port the Samsung ARM code to use PLATFORM and PLATFORM_SMP. This will help
move it into the GENERIC kernel config.
Notes
Notes:
svn path=/head/; revision=319553
-rw-r--r-- | sys/arm/conf/EXYNOS5.common | 2 | ||||
-rw-r--r-- | sys/arm/samsung/exynos/exynos5_common.c | 49 | ||||
-rw-r--r-- | sys/arm/samsung/exynos/exynos5_machdep.c | 60 | ||||
-rw-r--r-- | sys/arm/samsung/exynos/exynos5_mp.c | 7 | ||||
-rw-r--r-- | sys/arm/samsung/exynos/exynos5_mp.h | 34 | ||||
-rw-r--r-- | sys/arm/samsung/exynos/files.exynos5 | 1 |
6 files changed, 76 insertions, 77 deletions
diff --git a/sys/arm/conf/EXYNOS5.common b/sys/arm/conf/EXYNOS5.common index 412b4d11d563..2f176afcdb8e 100644 --- a/sys/arm/conf/EXYNOS5.common +++ b/sys/arm/conf/EXYNOS5.common @@ -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 diff --git a/sys/arm/samsung/exynos/exynos5_common.c b/sys/arm/samsung/exynos/exynos5_common.c deleted file mode 100644 index c5174d48b26f..000000000000 --- a/sys/arm/samsung/exynos/exynos5_common.c +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * Copyright (c) 2013 Ruslan Bukin <br@bsdpad.com> - * 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/bus.h> -#include <sys/kernel.h> - -#include <dev/ofw/openfirm.h> - -#include <machine/bus.h> -#include <machine/fdt.h> - -void -cpu_reset(void) -{ - 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); -} diff --git a/sys/arm/samsung/exynos/exynos5_machdep.c b/sys/arm/samsung/exynos/exynos5_machdep.c index 76a5af13bb19..ebcd486d2136 100644 --- a/sys/arm/samsung/exynos/exynos5_machdep.c +++ b/sys/arm/samsung/exynos/exynos5_machdep.c @@ -24,7 +24,6 @@ * SUCH DAMAGE. */ -#include "opt_ddb.h" #include "opt_platform.h" #include <sys/cdefs.h> @@ -37,38 +36,24 @@ __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) -{ - - return (devmap_lastaddr()); -} - -void -platform_probe_and_attach(void) -{ - -} +#include <arm/samsung/exynos/exynos5_mp.h> -void -platform_gpio_init(void) -{ +#include "platform_if.h" -} +static platform_devmap_init_t exynos5_devmap_init; +static platform_cpu_reset_t exynos5_cpu_reset; -void -platform_late_init(void) -{ - -} - -int -platform_devmap_init(void) +static int +exynos5_devmap_init(platform_t plat) { /* CHIP ID */ @@ -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); diff --git a/sys/arm/samsung/exynos/exynos5_mp.c b/sys/arm/samsung/exynos/exynos5_mp.c index 2fabf136925c..4eb879147e61 100644 --- a/sys/arm/samsung/exynos/exynos5_mp.c +++ b/sys/arm/samsung/exynos/exynos5_mp.c @@ -40,6 +40,9 @@ __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 @@ -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; diff --git a/sys/arm/samsung/exynos/exynos5_mp.h b/sys/arm/samsung/exynos/exynos5_mp.h new file mode 100644 index 000000000000..d3fc5a327c2f --- /dev/null +++ b/sys/arm/samsung/exynos/exynos5_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 _EXYNOS5_MP_H_ +#define _EXYNOS5_MP_H_ + +void exynos5_mp_setmaxid(platform_t); +void exynos5_mp_start_ap(platform_t); + +#endif /* _EXYNOS5_MP_H_ */ diff --git a/sys/arm/samsung/exynos/files.exynos5 b/sys/arm/samsung/exynos/files.exynos5 index 6791d5cfb85f..84c92c49c83a 100644 --- a/sys/arm/samsung/exynos/files.exynos5 +++ b/sys/arm/samsung/exynos/files.exynos5 @@ -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 |