Page MenuHomeFreeBSD

D5059.id12665.diff
No OneTemporary

D5059.id12665.diff

Index: sys/arm/allwinner/a10_common.c
===================================================================
--- sys/arm/allwinner/a10_common.c
+++ sys/arm/allwinner/a10_common.c
@@ -42,6 +42,8 @@
{ NULL, NULL }
};
+#ifndef ARM_INTRNG
+
static int
fdt_aintc_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
int *pol)
@@ -66,3 +68,5 @@
&fdt_aintc_decode_ic,
NULL
};
+
+#endif /* ARM_INTRNG */
Index: sys/arm/allwinner/allwinner_machdep.h
===================================================================
--- sys/arm/allwinner/allwinner_machdep.h
+++ sys/arm/allwinner/allwinner_machdep.h
@@ -1,7 +1,9 @@
/*-
- * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
+ * Copyright (c) 2015 Emmanuel Vadot <manu@bidouilliste.com>
* All rights reserved.
*
+ * This code is derived from software written for Brini by Mark Brinicombe
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -22,47 +24,22 @@
* 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/fdt/fdt_common.h>
-#include <dev/ofw/openfirm.h>
-
-#include <machine/bus.h>
-#include <machine/vmparam.h>
-
-struct fdt_fixup_entry fdt_fixup_table[] = {
- { NULL, NULL }
-};
-
-static int
-fdt_aintc_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
- int *pol)
-{
- int offset;
+#ifndef AW_MACHDEP_H
+#define AW_MACHDEP_H
- if (fdt_is_compatible(node, "allwinner,sun4i-ic"))
- offset = 0;
- else if (fdt_is_compatible(node, "arm,gic"))
- offset = 32;
- else
- return (ENXIO);
+#define ALLWINNERSOC_A10 0x10000000
+#define ALLWINNERSOC_A13 0x13000000
+#define ALLWINNERSOC_A10S 0x10000001
+#define ALLWINNERSOC_A20 0x20000000
- *interrupt = fdt32_to_cpu(intr[0]) + offset;
- *trig = INTR_TRIGGER_CONFORM;
- *pol = INTR_POLARITY_CONFORM;
+#define ALLWINNERSOC_SUN4I 0x40000000
+#define ALLWINNERSOC_SUN5I 0x50000000
+#define ALLWINNERSOC_SUN7I 0x70000000
- return (0);
-}
+u_int allwinner_soc_type(void);
+u_int allwinner_soc_family(void);
-fdt_pic_decode_t fdt_pic_table[] = {
- &fdt_aintc_decode_ic,
- NULL
-};
+#endif /* AW_MACHDEP_H */
Index: sys/arm/allwinner/allwinner_machdep.c
===================================================================
--- sys/arm/allwinner/allwinner_machdep.c
+++ sys/arm/allwinner/allwinner_machdep.c
@@ -1,5 +1,6 @@
/*-
* Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
+ * Copyright (c) 2015-2016 Emmanuel Vadot <manu@bidouilliste.com>
* All rights reserved.
*
* This code is derived from software written for Brini by Mark Brinicombe
@@ -45,32 +46,41 @@
#include <machine/bus.h>
#include <machine/devmap.h>
#include <machine/machdep.h>
-#include <machine/platform.h>
+#include <machine/platformvar.h>
#include <dev/fdt/fdt_common.h>
#include <arm/allwinner/a10_wdog.h>
+#include <arm/allwinner/allwinner_machdep.h>
-vm_offset_t
-platform_lastaddr(void)
-{
+#include "platform_if.h"
- return (arm_devmap_lastaddr());
-}
+static u_int soc_type;
+static u_int soc_family;
-void
-platform_probe_and_attach(void)
+static int
+a10_attach(platform_t plat)
{
+ soc_type = ALLWINNERSOC_A10;
+ soc_family = ALLWINNERSOC_SUN4I;
+ return (0);
}
-void
-platform_gpio_init(void)
+static int
+a20_attach(platform_t plat)
{
+ soc_type = ALLWINNERSOC_A20;
+ soc_family = ALLWINNERSOC_SUN7I;
+
+ return (0);
}
-void
-platform_late_init(void)
+
+static vm_offset_t
+allwinner_lastaddr(platform_t plat)
{
+
+ return (arm_devmap_lastaddr());
}
/*
@@ -83,8 +93,8 @@
* shouldn't be device-mapped. The original code mapped a 4MB block, but
* perhaps a 1MB block would be more appropriate.
*/
-int
-platform_devmap_init(void)
+static int
+allwinner_devmap_init(platform_t plat)
{
arm_devmap_add_entry(0x01C00000, 0x00400000); /* 4MB */
@@ -111,3 +121,34 @@
printf("Reset failed!\n");
while (1);
}
+
+static platform_method_t a10_methods[] = {
+ PLATFORMMETHOD(platform_attach, a10_attach),
+ PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
+ PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
+
+ PLATFORMMETHOD_END,
+};
+
+static platform_method_t a20_methods[] = {
+ PLATFORMMETHOD(platform_attach, a20_attach),
+ PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
+ PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
+
+ PLATFORMMETHOD_END,
+};
+
+u_int
+allwinner_soc_type(void)
+{
+ return (soc_type);
+}
+
+u_int
+allwinner_soc_family(void)
+{
+ return (soc_family);
+}
+
+FDT_PLATFORM_DEF(a10, "a10", 0, "allwinner,sun4i-a10");
+FDT_PLATFORM_DEF(a20, "a20", 0, "allwinner,sun7i-a20");
Index: sys/arm/allwinner/files.allwinner
===================================================================
--- sys/arm/allwinner/files.allwinner
+++ sys/arm/allwinner/files.allwinner
@@ -6,11 +6,11 @@
arm/allwinner/a10_common.c standard
arm/allwinner/a10_ehci.c optional ehci
arm/allwinner/a10_gpio.c optional gpio
-arm/allwinner/a10_machdep.c standard
arm/allwinner/a10_mmc.c optional mmc
arm/allwinner/a10_sramc.c standard
arm/allwinner/a10_wdog.c standard
arm/allwinner/a20/a20_cpu_cfg.c standard
+arm/allwinner/allwinner_machdep.c standard
arm/allwinner/if_emac.c optional emac
arm/allwinner/timer.c standard
#arm/allwinner/console.c standard
Index: sys/arm/conf/A20
===================================================================
--- sys/arm/conf/A20
+++ sys/arm/conf/A20
@@ -23,9 +23,12 @@
include "std.armv6"
include "../allwinner/a20/std.a20"
+options ARM_INTRNG
+
options HZ=100
options SCHED_ULE # ULE scheduler
options SMP # Enable multiple cores
+options PLATFORM
# Debugging for use in -current
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
Index: sys/arm/conf/CUBIEBOARD
===================================================================
--- sys/arm/conf/CUBIEBOARD
+++ sys/arm/conf/CUBIEBOARD
@@ -26,6 +26,7 @@
options HZ=100
options SCHED_4BSD # 4BSD scheduler
+options PLATFORM
# Debugging for use in -current
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols

File Metadata

Mime Type
text/plain
Expires
Wed, Oct 9, 9:34 AM (19 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
13859211
Default Alt Text
D5059.id12665.diff (6 KB)

Event Timeline