Author: ganbold (doc committer)
Date: Wed Aug  7 11:07:56 2013
New Revision: 254056
URL: http://svnweb.freebsd.org/changeset/base/254056

Log:
  Bring initial support for Allwinner A20 SoC (Cubieboard2).
        Add support for A20 timer.
        Correct interrupt offset depending from chip.
        Add basic code for CPU configuration module.
        For now, add kernel config and dts file
        (only FDT blob related problem needs to be solved later in
        order to have one kernel for both cubieboard1 and 2).
  
  Approved by: ray@

Added:
  head/sys/arm/allwinner/a20/
  head/sys/arm/allwinner/a20/a20_cpu_cfg.c   (contents, props changed)
  head/sys/arm/allwinner/a20/a20_cpu_cfg.h   (contents, props changed)
  head/sys/arm/allwinner/a20/files.a20   (contents, props changed)
  head/sys/arm/allwinner/a20/std.a20   (contents, props changed)
  head/sys/arm/conf/CUBIEBOARD2   (contents, props changed)
  head/sys/boot/fdt/dts/cubieboard2.dts   (contents, props changed)
Modified:
  head/sys/arm/allwinner/common.c
  head/sys/arm/allwinner/files.a10
  head/sys/arm/allwinner/timer.c

Added: head/sys/arm/allwinner/a20/a20_cpu_cfg.c
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sys/arm/allwinner/a20/a20_cpu_cfg.c    Wed Aug  7 11:07:56 2013        
(r254056)
@@ -0,0 +1,136 @@
+/*-
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganb...@gmail.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.
+ */
+
+/* CPU configuration module for Allwinner A20 */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/malloc.h>
+#include <sys/rman.h>
+#include <sys/timeet.h>
+#include <sys/timetc.h>
+#include <sys/watchdog.h>
+#include <machine/bus.h>
+#include <machine/cpu.h>
+#include <machine/frame.h>
+#include <machine/intr.h>
+
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#include <machine/bus.h>
+#include <machine/fdt.h>
+
+#include "a20_cpu_cfg.h"
+
+struct a20_cpu_cfg_softc {
+       struct resource         *res;
+       bus_space_tag_t         bst;
+       bus_space_handle_t      bsh;
+};
+
+static struct a20_cpu_cfg_softc *a20_cpu_cfg_sc = NULL;
+
+#define cpu_cfg_read_4(sc, reg)        \
+       bus_space_read_4((sc)->bst, (sc)->bsh, (reg))
+#define cpu_cfg_write_4(sc, reg, val)  \
+       bus_space_write_4((sc)->bst, (sc)->bsh, (reg), (val))
+
+static int
+a20_cpu_cfg_probe(device_t dev)
+{
+
+       if (ofw_bus_is_compatible(dev, "allwinner,sun7i-cpu-cfg")) {
+               device_set_desc(dev, "A20 CPU Configuration Module");
+               return(BUS_PROBE_DEFAULT);
+       }
+
+       return (ENXIO);
+}
+
+static int
+a20_cpu_cfg_attach(device_t dev)
+{
+       struct a20_cpu_cfg_softc *sc = device_get_softc(dev);
+       int rid = 0;
+
+       if (a20_cpu_cfg_sc)
+               return (ENXIO);
+
+       sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
+       if (!sc->res) {
+               device_printf(dev, "could not allocate resource\n");
+               return (ENXIO);
+       }
+
+       sc->bst = rman_get_bustag(sc->res);
+       sc->bsh = rman_get_bushandle(sc->res);
+
+       a20_cpu_cfg_sc = sc;
+
+       return (0);
+}
+
+static device_method_t a20_cpu_cfg_methods[] = {
+       DEVMETHOD(device_probe,         a20_cpu_cfg_probe),
+       DEVMETHOD(device_attach,        a20_cpu_cfg_attach),
+       { 0, 0 }
+};
+
+static driver_t a20_cpu_cfg_driver = {
+       "a20_cpu_cfg",
+       a20_cpu_cfg_methods,
+       sizeof(struct a20_cpu_cfg_softc),
+};
+
+static devclass_t a20_cpu_cfg_devclass;
+
+DRIVER_MODULE(a20_cpu_cfg, simplebus, a20_cpu_cfg_driver, 
a20_cpu_cfg_devclass, 0, 0);
+
+uint64_t
+a20_read_counter64(void)
+{
+       uint32_t lo, hi;
+
+       /* Latch counter, wait for it to be ready to read. */
+       cpu_cfg_write_4(a20_cpu_cfg_sc, OSC24M_CNT64_CTRL_REG, CNT64_RL_EN);
+       while (cpu_cfg_read_4(a20_cpu_cfg_sc, OSC24M_CNT64_CTRL_REG) & 
CNT64_RL_EN)
+               continue;
+
+       hi = cpu_cfg_read_4(a20_cpu_cfg_sc, OSC24M_CNT64_HIGH_REG);
+       lo = cpu_cfg_read_4(a20_cpu_cfg_sc, OSC24M_CNT64_LOW_REG);
+
+       return (((uint64_t)hi << 32) | lo);
+}
+

Added: head/sys/arm/allwinner/a20/a20_cpu_cfg.h
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sys/arm/allwinner/a20/a20_cpu_cfg.h    Wed Aug  7 11:07:56 2013        
(r254056)
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganb...@gmail.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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _A20_CPU_CFG_H_
+#define _A20_CPU_CFG_H_
+
+#define CPU_CFG_BASE           0xe1c25c00
+
+#define CPU0_RST_CTRL          0x0040
+#define CPU0_CTRL_REG          0x0044
+#define CPU0_STATUS_REG        0x0048
+
+#define CPU1_RST_CTRL          0x0080
+#define CPU1_CTRL_REG          0x0084
+#define CPU1_STATUS_REG        0x0088
+
+#define GENER_CTRL_REG         0x0184
+
+#define EVENT_IN_REG           0x0190
+#define PRIVATE_REG            0x01a4
+
+#define IDLE_CNT0_LOW_REG      0x0200
+#define IDLE_CNT0_HIGH_REG     0x0204
+#define IDLE_CNT0_CTRL_REG     0x0208
+
+#define IDLE_CNT1_LOW_REG      0x0210
+#define IDLE_CNT1_HIGH_REG     0x0214
+#define IDLE_CNT1_CTRL_REG     0x0218
+
+#define OSC24M_CNT64_CTRL_REG  0x0280
+#define OSC24M_CNT64_LOW_REG   0x0284
+#define OSC24M_CNT64_HIGH_REG  0x0288
+
+#define LOSC_CNT64_CTRL_REG    0x0290
+#define LOSC_CNT64_LOW_REG     0x0294
+#define LOSC_CNT64_HIGH_REG    0x0298
+
+#define CNT64_RL_EN            0x02 /* read latch enable */
+
+uint64_t a20_read_counter64(void);
+
+#endif /* _A20_CPU_CFG_H_ */

Added: head/sys/arm/allwinner/a20/files.a20
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sys/arm/allwinner/a20/files.a20        Wed Aug  7 11:07:56 2013        
(r254056)
@@ -0,0 +1,21 @@
+# $FreeBSD$
+kern/kern_clocksource.c                standard
+
+arm/arm/bus_space_asm_generic.S        standard
+arm/arm/bus_space_generic.c            standard
+arm/arm/cpufunc_asm_armv5.S            standard
+arm/arm/cpufunc_asm_arm10.S            standard
+arm/arm/cpufunc_asm_arm11.S            standard
+arm/arm/cpufunc_asm_armv7.S            standard
+arm/arm/irq_dispatch.S                 standard
+arm/arm/gic.c                          standard
+
+arm/allwinner/a20/a20_cpu_cfg.c        standard
+arm/allwinner/a10_clk.c                standard
+arm/allwinner/a10_gpio.c               optional        gpio
+arm/allwinner/a10_ehci.c               optional        ehci
+arm/allwinner/a10_wdog.c               standard
+arm/allwinner/timer.c                  standard
+arm/allwinner/bus_space.c              standard
+arm/allwinner/common.c                 standard
+arm/allwinner/a10_machdep.c            standard

Added: head/sys/arm/allwinner/a20/std.a20
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sys/arm/allwinner/a20/std.a20  Wed Aug  7 11:07:56 2013        
(r254056)
@@ -0,0 +1,26 @@
+# Allwinner A20 common options
+#$FreeBSD$
+
+cpu            CPU_CORTEXA
+machine        arm armv6
+makeoption     ARM_LITTLE_ENDIAN
+
+# Physical memory starts at 0x40200000.  We assume images are loaded at
+# 0x40200000, e.g. from u-boot with 'fatload mmc 0 0x40200000 kernel'
+#
+#
+options        PHYSADDR=0x40000000
+
+makeoptions    KERNPHYSADDR=0x40200000
+options        KERNPHYSADDR=0x40200000
+makeoptions    KERNVIRTADDR=0xc0200000
+options        KERNVIRTADDR=0xc0200000
+
+options        STARTUP_PAGETABLE_ADDR=0x48000000
+
+options        ARM_L2_PIPT
+
+options        IPI_IRQ_START=0
+options        IPI_IRQ_END=15
+
+files          "../allwinner/a20/files.a20"

Modified: head/sys/arm/allwinner/common.c
==============================================================================
--- head/sys/arm/allwinner/common.c     Wed Aug  7 10:15:54 2013        
(r254055)
+++ head/sys/arm/allwinner/common.c     Wed Aug  7 11:07:56 2013        
(r254056)
@@ -47,10 +47,16 @@ static int
 fdt_aintc_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
     int *pol)
 {
-       if (!fdt_is_compatible(node, "allwinner,sun4i-ic"))
+       int offset;
+
+       if (fdt_is_compatible(node, "allwinner,sun4i-ic"))
+               offset = 0;
+       else if (fdt_is_compatible(node, "arm,gic"))
+               offset = 32;
+       else
                return (ENXIO);
 
-       *interrupt = fdt32_to_cpu(intr[0]);
+       *interrupt = fdt32_to_cpu(intr[0]) + offset;
        *trig = INTR_TRIGGER_CONFORM;
        *pol = INTR_POLARITY_CONFORM;
 

Modified: head/sys/arm/allwinner/files.a10
==============================================================================
--- head/sys/arm/allwinner/files.a10    Wed Aug  7 10:15:54 2013        
(r254055)
+++ head/sys/arm/allwinner/files.a10    Wed Aug  7 11:07:56 2013        
(r254056)
@@ -9,6 +9,7 @@ arm/arm/cpufunc_asm_arm11.S             standard
 arm/arm/cpufunc_asm_armv7.S            standard
 arm/arm/irq_dispatch.S                 standard
 
+arm/allwinner/a20/a20_cpu_cfg.c        standard
 arm/allwinner/a10_clk.c                        standard
 arm/allwinner/a10_gpio.c               optional        gpio
 arm/allwinner/a10_ehci.c               optional        ehci

Modified: head/sys/arm/allwinner/timer.c
==============================================================================
--- head/sys/arm/allwinner/timer.c      Wed Aug  7 10:15:54 2013        
(r254055)
+++ head/sys/arm/allwinner/timer.c      Wed Aug  7 11:07:56 2013        
(r254056)
@@ -52,6 +52,8 @@ __FBSDID("$FreeBSD$");
 
 #include <sys/kdb.h>
 
+#include "a20/a20_cpu_cfg.h"
+
 /**
  * Timer registers addr
  *
@@ -84,6 +86,7 @@ struct a10_timer_softc {
        uint32_t        sc_period;
        uint32_t        timer0_freq;
        struct eventtimer et;
+       uint8_t         sc_timer_type;  /* 0 for A10, 1 for A20 */
 };
 
 int a10_timer_get_timerfreq(struct a10_timer_softc *);
@@ -126,6 +129,10 @@ timer_read_counter64(void)
 {
        uint32_t lo, hi;
 
+       /* In case of A20 get appropriate counter info */
+       if (a10_timer_sc->sc_timer_type)
+               return (a20_read_counter64());
+
        /* Latch counter, wait for it to be ready to read. */
        timer_write_4(a10_timer_sc, CNT64_CTRL_REG, CNT64_RL_EN);
        while (timer_read_4(a10_timer_sc, CNT64_CTRL_REG) & CNT64_RL_EN)
@@ -140,11 +147,18 @@ timer_read_counter64(void)
 static int
 a10_timer_probe(device_t dev)
 {
+       struct a10_timer_softc *sc;
 
-       if (!ofw_bus_is_compatible(dev, "allwinner,sun4i-timer"))
+       sc = device_get_softc(dev);
+
+       if (ofw_bus_is_compatible(dev, "allwinner,sun4i-timer"))
+               sc->sc_timer_type = 0;
+       else if (ofw_bus_is_compatible(dev, "allwinner,sun7i-timer"))
+               sc->sc_timer_type = 1;
+       else
                return (ENXIO);
 
-       device_set_desc(dev, "Allwinner A10 timer");
+       device_set_desc(dev, "Allwinner A10/A20 timer");
        return (BUS_PROBE_DEFAULT);
 }
 

Added: head/sys/arm/conf/CUBIEBOARD2
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sys/arm/conf/CUBIEBOARD2       Wed Aug  7 11:07:56 2013        
(r254056)
@@ -0,0 +1,133 @@
+# CUBIEBOARD2 -- Custom configuration for the CUBIEBOARD2 ARM development
+# platform, check out http://www.cubieboard.org
+#
+# For more information on this file, please read 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$
+
+ident          CUBIEBOARD2
+
+include        "../allwinner/a20/std.a20"
+
+makeoptions    MODULES_OVERRIDE=""
+makeoptions    WITHOUT_MODULES="ahc"
+
+options        HZ=100
+options        SCHED_4BSD              #4BSD scheduler
+options        INET                    #InterNETworking
+options        INET6                   #IPv6 communications protocols
+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        MSDOSFS                 #MSDOS Filesystem
+options        CD9660                  #ISO 9660 Filesystem
+options        PROCFS                  #Process filesystem (requires PSEUDOFS)
+options        PSEUDOFS                #Pseudo-filesystem framework
+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        PREEMPTION
+options        FREEBSD_BOOT_LOADER
+
+# Debugging
+makeoptions    DEBUG=-g                #Build kernel with gdb(1) debug symbols
+options        BREAK_TO_DEBUGGER
+#options       VERBOSE_SYSINIT         #Enable verbose sysinit messages
+options        KDB
+options        DDB                     #Enable the kernel debugger
+options        INVARIANTS              #Enable calls of extra sanity checking
+options        INVARIANT_SUPPORT       #Extra sanity checks of internal 
structures, required by INVARIANTS
+options        WITNESS                 #Enable checks to detect deadlocks and 
cycles
+options        WITNESS_SKIPSPIN        #Don't run witness on spinlocks for 
speed
+#options       DIAGNOSTIC
+
+# NFS support
+#options       NFSCL
+#options       NFSSERVER               #Network Filesystem Server
+#options       NFSCLIENT               #Network Filesystem Client
+
+# Uncomment this for NFS root
+#options       NFS_ROOT                #NFS usable as /, requires NFSCLIENT
+#options       BOOTP_NFSROOT
+#options       BOOTP_COMPAT
+#options       BOOTP
+#options       BOOTP_NFSV3
+#options       BOOTP_WIRED_TO=cpsw0
+
+# MMC/SD/SDIO card slot support
+#device        mmc                     # mmc/sd bus
+#device        mmcsd                   # mmc/sd flash cards
+
+# Boot device is 2nd slice on MMC/SD card
+options        ROOTDEVNAME=\"ufs:/dev/da0s2\"
+
+# ATA controllers
+#device        ahci            # AHCI-compatible SATA controllers
+#device        ata             # Legacy ATA/SATA controllers
+#options       ATA_STATIC_ID   # Static device numbering
+
+# Console and misc
+device         uart
+device         uart_ns8250
+device         pty
+device         snp
+device         md
+device         random                  # Entropy device
+
+# I2C support
+#device        iicbus
+#device        iic
+
+# GPIO
+device         gpio
+
+device         scbus                   # SCSI bus (required for SCSI)
+device         da                      # Direct Access (disks)
+device         pass
+
+# USB support
+device         usb
+options        USB_DEBUG
+#options       USB_REQ_DEBUG
+#options       USB_VERBOSE
+#device        uhci
+#device        ohci
+device         ehci
+
+device         umass
+
+# Ethernet
+device         loop
+device         ether
+device         mii
+device         smscphy
+#device        cpsw
+device         bpf
+
+# USB ethernet support, requires miibus
+device         miibus
+
+# Flattened Device Tree
+options        FDT
+options        FDT_DTB_STATIC
+makeoptions    FDT_DTS_FILE=cubieboard2.dts
+

Added: head/sys/boot/fdt/dts/cubieboard2.dts
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sys/boot/fdt/dts/cubieboard2.dts       Wed Aug  7 11:07:56 2013        
(r254056)
@@ -0,0 +1,141 @@
+/*-
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganb...@gmail.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.
+ * 
+ * $FreeBSD$
+ */
+
+/dts-v1/;
+
+/ {
+       model = "Cubietech Cubieboard2";
+       compatible = "cubietech,a20-cubieboard", "allwinner,sun7i-a20";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       interrupt-parent = <&GIC>;
+
+       memory {
+               device_type = "memory";
+               reg = < 0x40000000 0x20000000 >;        /* 512MB RAM */
+       };
+
+       aliases {
+               soc = &SOC;
+               UART0 = &UART0;
+       };
+
+       SOC: a20 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "simple-bus";
+               ranges;
+               bus-frequency = <0>;
+
+               GIC: interrupt-controller@01c81000 {
+                       compatible = "arm,gic";
+                       reg =   <0x01c81000 0x1000>,    /* Distributor 
Registers */
+                               <0x01c82000 0x0100>;    /* CPU Interface 
Registers */
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               cpu-cfg@01c20000 {
+                       compatible = "allwinner,sun7i-cpu-cfg";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = < 0x01c25c00 0x400 >;
+               };
+
+               ccm@01c20000 {
+                       compatible = "allwinner,sun4i-ccm";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = < 0x01c20000 0x400 >;
+               };
+
+               timer@01c20c00 {
+                       compatible = "allwinner,sun7i-timer";
+                       reg = <0x01c20c00 0x90>;
+                       interrupts = < 22 >;
+                       interrupt-parent = <&GIC>;
+                       clock-frequency = < 24000000 >;
+               };
+
+               watchdog@01c20c90 {
+                       compatible = "allwinner,sun4i-wdt";
+                       reg = <0x01c20c90 0x10>;
+               };
+
+               GPIO: gpio@01c20800 {
+                       #gpio-cells = <3>;
+                       compatible = "allwinner,sun4i-gpio";
+                       gpio-controller;
+                       reg =<  0x01c20800 0x400 >;
+                       interrupts = < 28 >;
+                       interrupt-parent = <&GIC>;
+               };
+
+               usb1: usb@01c14000 {
+                       compatible = "allwinner,usb-ehci", "usb-ehci";
+                       reg = <0x01c14000 0x1000>;
+                       interrupts = < 39 >;
+                       interrupt-parent = <&GIC>;
+               };
+
+               usb2: usb@01c1c000 {
+                       compatible = "allwinner,usb-ehci", "usb-ehci";
+                       reg = <0x01c1c000 0x1000>;
+                       interrupts = < 40 >;
+                       interrupt-parent = <&GIC>;
+               };
+
+               sata@01c18000 {
+                       compatible = "allwinner,ahci";
+                       reg = <0x01c18000 0x1000>;
+                       interrupts = <56>;
+                       interrupt-parent = <&GIC>;
+               };
+
+               UART0: serial@01c28000 {
+                       status = "okay";
+                       compatible = "ns16550";
+                       reg = <0x01c28000 0x400>;
+                       reg-shift = <2>;
+                       interrupts = <1>;
+                       interrupt-parent = <&GIC>;
+                       current-speed = <115200>;
+                       clock-frequency = < 24000000 >;
+                       busy-detect = <1>;
+                       broken-txfifo = <1>;
+               };
+       };
+
+       chosen {
+               bootargs = "-v";
+               stdin = "UART0";
+               stdout = "UART0";
+       };
+};
+
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to