Author: andrew
Date: Mon Jan 25 00:24:57 2016
New Revision: 294698
URL: https://svnweb.freebsd.org/changeset/base/294698

Log:
  Update the Allwinner kernels:
   * Use the ARM PLATFORM framework
   * Use ARM_INTRNG on teh A20 as it has a GICv2
   * Add a method to find which Allwinner SoC we are running on
  
  Differential Revision:        https://reviews.freebsd.org/D5059

Added:
  head/sys/arm/allwinner/allwinner_machdep.c
     - copied, changed from r294697, head/sys/arm/allwinner/a10_machdep.c
Deleted:
  head/sys/arm/allwinner/a10_machdep.c
Modified:
  head/sys/arm/allwinner/a10_common.c
  head/sys/arm/allwinner/files.allwinner
  head/sys/arm/conf/A20
  head/sys/arm/conf/CUBIEBOARD

Modified: head/sys/arm/allwinner/a10_common.c
==============================================================================
--- head/sys/arm/allwinner/a10_common.c Sun Jan 24 23:35:20 2016        
(r294697)
+++ head/sys/arm/allwinner/a10_common.c Mon Jan 25 00:24:57 2016        
(r294698)
@@ -42,6 +42,8 @@ struct fdt_fixup_entry fdt_fixup_table[]
        { 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_pic_decode_t fdt_pic_table[] = {
        &fdt_aintc_decode_ic,
        NULL
 };
+
+#endif /* ARM_INTRNG */

Copied and modified: head/sys/arm/allwinner/allwinner_machdep.c (from r294697, 
head/sys/arm/allwinner/a10_machdep.c)
==============================================================================
--- head/sys/arm/allwinner/a10_machdep.c        Sun Jan 24 23:35:20 2016        
(r294697, copy source)
+++ head/sys/arm/allwinner/allwinner_machdep.c  Mon Jan 25 00:24:57 2016        
(r294698)
@@ -1,5 +1,6 @@
 /*-
  * Copyright (c) 2012 Ganbold Tsagaankhuu <ganb...@freebsd.org>
+ * Copyright (c) 2015-2016 Emmanuel Vadot <m...@bidouilliste.com>
  * All rights reserved.
  *
  * This code is derived from software written for Brini by Mark Brinicombe
@@ -45,32 +46,41 @@ __FBSDID("$FreeBSD$");
 #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 @@ platform_late_init(void)
  * 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 @@ cpu_reset()
        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");

Modified: head/sys/arm/allwinner/files.allwinner
==============================================================================
--- head/sys/arm/allwinner/files.allwinner      Sun Jan 24 23:35:20 2016        
(r294697)
+++ head/sys/arm/allwinner/files.allwinner      Mon Jan 25 00:24:57 2016        
(r294698)
@@ -6,11 +6,11 @@ arm/allwinner/a10_clk.c                       standard
 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

Modified: head/sys/arm/conf/A20
==============================================================================
--- head/sys/arm/conf/A20       Sun Jan 24 23:35:20 2016        (r294697)
+++ head/sys/arm/conf/A20       Mon Jan 25 00:24:57 2016        (r294698)
@@ -23,9 +23,12 @@ ident                A20
 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

Modified: head/sys/arm/conf/CUBIEBOARD
==============================================================================
--- head/sys/arm/conf/CUBIEBOARD        Sun Jan 24 23:35:20 2016        
(r294697)
+++ head/sys/arm/conf/CUBIEBOARD        Mon Jan 25 00:24:57 2016        
(r294698)
@@ -26,6 +26,7 @@ include       "../allwinner/std.a10"
 
 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
_______________________________________________
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