Index: head/sys/arm/conf/EXYNOS5.common
===================================================================
--- head/sys/arm/conf/EXYNOS5.common (revision 319552)
+++ head/sys/arm/conf/EXYNOS5.common (revision 319553)
@@ -1,126 +1,128 @@
#
# Kernel configuration for Samsung Exynos 5 SoC.
#
# For more information on this file, please read the config(5) manual page,
# and/or the handbook section on Kernel Configuration Files:
#
# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ../../conf/NOTES and NOTES files.
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
# $FreeBSD$
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
options TCP_HHOOK # hhook(9) framework for TCP
options SCTP # Stream Control Transmission Protocol
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options UFS_GJOURNAL # Enable gjournal-based UFS journaling
options QUOTA # Enable disk quotas for UFS
options NFSCL # Network Filesystem Client
options NFSLOCKD # Network Lock Manager
options NFS_ROOT # NFS usable as /, requires NFSCL
options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options TMPFS # Efficient memory filesystem
options GEOM_PART_GPT # GUID Partition Tables
options GEOM_PART_BSD # BSD partition scheme
options GEOM_PART_MBR # MBR partition scheme
options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options FREEBSD_BOOT_LOADER # Process metadata passed from loader(8)
options VFP # Enable floating point hardware support
options SMP # Enable multiple cores
# NFS root from boopt/dhcp
#options BOOTP
#options BOOTP_NFSROOT
#options BOOTP_COMPAT
#options BOOTP_NFSV3
#options BOOTP_WIRED_TO=ue0
options ROOTDEVNAME=\"ufs:/dev/da0\"
# MMC/SD/SDIO Card slot support
device mmc # mmc/sd bus
device mmcsd # mmc/sd flash cards
device dwmmc
# Interrupt controller
device gic
options INTRNG
# ARM Generic Timer
device generic_timer
# Pseudo devices
device loop
device random
device pty
device md
device gpio
# USB support
options USB_HOST_ALIGN=64 # Align usb buffers to cache line size.
device usb
#device musb
device ehci
#device ohci
device xhci
device umass
device scbus # SCSI bus (required for ATA/SCSI)
device da # Direct Access (disks)
device pass
# SATA
#device ata
#device atadisk
#device mvs
# Serial ports
device uart
# I2C (TWSI)
device iic
device iicbus
# SPI
device spibus
device exynos_spi
# Ethernet
device ether
device mii
device smsc
device smscphy
# USB ethernet support, requires miibus
device miibus
device axe # ASIX Electronics USB Ethernet
device bpf # Berkeley packet filter
Index: head/sys/arm/samsung/exynos/exynos5_common.c
===================================================================
--- head/sys/arm/samsung/exynos/exynos5_common.c (revision 319552)
+++ head/sys/arm/samsung/exynos/exynos5_common.c (nonexistent)
@@ -1,49 +0,0 @@
-/*-
- * Copyright (c) 2013 Ruslan Bukin
- * 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
-__FBSDID("$FreeBSD$");
-
-#include
-#include
-#include
-#include
-
-#include
-
-#include
-#include
-
-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);
-}
Property changes on: head/sys/arm/samsung/exynos/exynos5_common.c
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/plain
\ No newline at end of property
Index: head/sys/arm/samsung/exynos/exynos5_machdep.c
===================================================================
--- head/sys/arm/samsung/exynos/exynos5_machdep.c (revision 319552)
+++ head/sys/arm/samsung/exynos/exynos5_machdep.c (revision 319553)
@@ -1,84 +1,94 @@
/*-
* Copyright (c) 2013 Ruslan Bukin
* 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 "opt_ddb.h"
#include "opt_platform.h"
#include
__FBSDID("$FreeBSD$");
#include
#include
#include
#include
#include
+#include
+
#include
#include
+#include
#include
#include
+#include
-vm_offset_t
-platform_lastaddr(void)
-{
+#include
- 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);
/* UART */
devmap_add_entry(0x12C00000, 0x100000);
/* DWMMC */
devmap_add_entry(0x12200000, 0x100000);
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);
Index: head/sys/arm/samsung/exynos/exynos5_mp.c
===================================================================
--- head/sys/arm/samsung/exynos/exynos5_mp.c (revision 319552)
+++ head/sys/arm/samsung/exynos/exynos5_mp.c (revision 319553)
@@ -1,131 +1,134 @@
/*-
* Copyright (c) 2013-2014 Ruslan Bukin
* 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
__FBSDID("$FreeBSD$");
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
+#include
+#include
+
#define EXYNOS_CHIPID 0x10000000
#define EXYNOS5250_SOC_ID 0x43520000
#define EXYNOS5420_SOC_ID 0xE5420000
#define EXYNOS5_SOC_ID_MASK 0xFFFFF000
#define EXYNOS_SYSRAM 0x02020000
#define EXYNOS5420_SYSRAM_NS (EXYNOS_SYSRAM + 0x53000 + 0x1c)
#define EXYNOS_PMU_BASE 0x10040000
#define CORE_CONFIG(n) (0x2000 + (0x80 * (n)))
#define CORE_STATUS(n) (CORE_CONFIG(n) + 0x4)
#define CORE_PWR_EN 0x3
static int
exynos_get_soc_id(void)
{
bus_addr_t chipid;
int reg;
if (bus_space_map(fdtbus_bs_tag, EXYNOS_CHIPID,
0x1000, 0, &chipid) != 0)
panic("Couldn't map chipid\n");
reg = bus_space_read_4(fdtbus_bs_tag, chipid, 0x0);
bus_space_unmap(fdtbus_bs_tag, chipid, 0x1000);
return (reg & EXYNOS5_SOC_ID_MASK);
}
void
-platform_mp_setmaxid(void)
+exynos5_mp_setmaxid(platform_t plat)
{
if (exynos_get_soc_id() == EXYNOS5420_SOC_ID)
mp_ncpus = 4;
else
mp_ncpus = 2;
mp_maxid = mp_ncpus - 1;
}
void
-platform_mp_start_ap(void)
+exynos5_mp_start_ap(platform_t plat)
{
bus_addr_t sysram, pmu;
int err, i, j;
int status;
int reg;
err = bus_space_map(fdtbus_bs_tag, EXYNOS_PMU_BASE, 0x20000, 0, &pmu);
if (err != 0)
panic("Couldn't map pmu\n");
if (exynos_get_soc_id() == EXYNOS5420_SOC_ID)
reg = EXYNOS5420_SYSRAM_NS;
else
reg = EXYNOS_SYSRAM;
err = bus_space_map(fdtbus_bs_tag, reg, 0x100, 0, &sysram);
if (err != 0)
panic("Couldn't map sysram\n");
/* Give power to CPUs */
for (i = 1; i < mp_ncpus; i++) {
bus_space_write_4(fdtbus_bs_tag, pmu, CORE_CONFIG(i),
CORE_PWR_EN);
for (j = 10; j >= 0; j--) {
status = bus_space_read_4(fdtbus_bs_tag, pmu,
CORE_STATUS(i));
if ((status & CORE_PWR_EN) == CORE_PWR_EN)
break;
DELAY(10);
if (j == 0)
printf("Can't power on CPU%d\n", i);
}
}
bus_space_write_4(fdtbus_bs_tag, sysram, 0x0,
pmap_kextract((vm_offset_t)mpentry));
dcache_wbinv_poc_all();
dsb();
sev();
bus_space_unmap(fdtbus_bs_tag, sysram, 0x100);
bus_space_unmap(fdtbus_bs_tag, pmu, 0x20000);
}
Index: head/sys/arm/samsung/exynos/exynos5_mp.h
===================================================================
--- head/sys/arm/samsung/exynos/exynos5_mp.h (nonexistent)
+++ head/sys/arm/samsung/exynos/exynos5_mp.h (revision 319553)
@@ -0,0 +1,34 @@
+/*-
+ * Copyright (c) 2017 Andrew Turner
+ * 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_ */
Property changes on: head/sys/arm/samsung/exynos/exynos5_mp.h
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Index: head/sys/arm/samsung/exynos/files.exynos5
===================================================================
--- head/sys/arm/samsung/exynos/files.exynos5 (revision 319552)
+++ head/sys/arm/samsung/exynos/files.exynos5 (revision 319553)
@@ -1,25 +1,24 @@
# $FreeBSD$
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
arm/samsung/exynos/exynos_uart.c optional uart
arm/samsung/exynos/exynos5_ehci.c optional ehci
arm/samsung/exynos/exynos5_xhci.c optional xhci
arm/samsung/exynos/exynos5_fimd.c optional vt
arm/samsung/exynos/exynos5_i2c.c optional iicbus
arm/samsung/exynos/exynos5_usb_phy.c standard
arm/samsung/exynos/exynos5_pmu.c standard
arm/samsung/exynos/exynos5_spi.c optional exynos_spi
# chromebook drivers
arm/samsung/exynos/chrome_ec.c optional chrome_ec_i2c
arm/samsung/exynos/chrome_ec_spi.c optional chrome_ec_spi
arm/samsung/exynos/chrome_kb.c optional chrome_kb
dev/mmc/host/dwmmc.c optional dwmmc