Module Name: src
Committed By: matt
Date: Tue Sep 3 18:02:26 UTC 2013
Added Files:
src/sys/arch/arm/allwinner: awin_intr.h awin_reg.h awin_var.h
files.awin
Log Message:
Files for allwinner a20/a10 (need to compile stuff in evbarm/cubie)
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/allwinner/awin_intr.h \
src/sys/arch/arm/allwinner/awin_reg.h \
src/sys/arch/arm/allwinner/awin_var.h \
src/sys/arch/arm/allwinner/files.awin
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Added files:
Index: src/sys/arch/arm/allwinner/awin_intr.h
diff -u /dev/null src/sys/arch/arm/allwinner/awin_intr.h:1.1
--- /dev/null Tue Sep 3 18:02:26 2013
+++ src/sys/arch/arm/allwinner/awin_intr.h Tue Sep 3 18:02:26 2013
@@ -0,0 +1,137 @@
+/* $NetBSD: awin_intr.h,v 1.1 2013/09/03 18:02:26 matt Exp $ */
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+ */
+
+#ifndef _ARM_ALLWINNER_AWIN_INTR_H_
+#define _ARM_ALLWINNER_AWIN_INTR_H_
+
+#define PIC_MAXSOURCES 128
+#define PIC_MAXMAXSOURCES 256
+
+/*
+ * The Allwinner can use a generic interrupt controller so pull in that stuff.
+ */
+#include <arm/cortex/gic_intr.h>
+#include <arm/cortex/a9tmr_intr.h> /* A7/A9/A15 Timer PPIs */
+
+/*
+ * There are for the A20 but the A10 are the same but offset by 32 less.
+ */
+#define AWIN_IRQ_UART0 33
+#define AWIN_IRQ_UART1 34
+#define AWIN_IRQ_UART2 35
+#define AWIN_IRQ_UART3 36
+#define AWIN_IRQ_IR0 37
+#define AWIN_IRQ_IR1 38
+#define AWIN_IRQ_TWI0 39
+#define AWIN_IRQ_TWI1 40
+#define AWIN_IRQ_TWI2 41
+#define AWIN_IRQ_SPI0 42
+#define AWIN_IRQ_SPI1 43
+#define AWIN_IRQ_SPI2 44
+#define AWIN_IRQ_SPDIF 45
+#define AWIN_IRQ_AC97 46
+#define AWIN_IRQ_TS 47
+#define AWIN_IRQ_IIS0 48
+#define AWIN_IRQ_UART4 49
+#define AWIN_IRQ_UART5 50
+#define AWIN_IRQ_UART6 51
+#define AWIN_IRQ_UART7 52
+#define AWIN_IRQ_KEYPAD 53
+#define AWIN_IRQ_TMR0 54
+#define AWIN_IRQ_TMR1 55
+#define AWIN_IRQ_TMR2 56 /* WatchDog */
+#define AWIN_IRQ_TMR3 57
+#define AWIN_IRQ_CAN 58
+#define AWIN_IRQ_DMA 59
+#define AWIN_IRQ_PIO 60
+#define AWIN_IRQ_TP 61
+#define AWIN_IRQ_ADDC 62
+#define AWIN_IRQ_LRADC 63
+#define AWIN_IRQ_SDMMC0 64
+#define AWIN_IRQ_SDMMC1 65
+#define AWIN_IRQ_SDMMC2 66
+#define AWIN_IRQ_SDMMC3 67
+#define AWIN_IRQ_MS 68
+#define AWIN_IRQ_NAND 69
+#define AWIN_IRQ_USB0 70
+#define AWIN_IRQ_USB1 71
+#define AWIN_IRQ_USB2 72
+#define AWIN_IRQ_SCR 73
+#define AWIN_IRQ_CSI0 74
+#define AWIN_IRQ_CSI1 75
+#define AWIN_IRQ_LCD0 76
+#define AWIN_IRQ_LCD1 77
+#define AWIN_IRQ_MP 78
+#define AWIN_IRQ_DE_XE0 79
+#define AWIN_IRQ_DE_XE1 80
+#define AWIN_IRQ_PMU 81
+#define AWIN_IRQ_SPI3 82
+#define AWIN_IRQ_TZASC 83
+#define AWIN_IRQ_PATA 84
+#define AWIN_IRQ_VE 85
+#define AWIN_IRQ_SS 86
+#define AWIN_IRQ_EMAC 87
+#define AWIN_IRQ_SATA 88
+#define AWIN_IRQ__RSVD89 89
+#define AWIN_IRQ_HDMI0 90
+#define AWIN_IRQ_TVE 91
+#define AWIN_IRQ_ACE 92
+#define AWIN_IRQ_TVD 93
+#define AWIN_IRQ_PS2_0 94
+#define AWIN_IRQ_PS2_1 95
+#define AWIN_IRQ_USB3 96
+#define AWIN_IRQ_USB4 97
+#define AWIN_IRQ_PERFM 98
+#define AWIN_IRQ_TMR4 99
+#define AWIN_IRQ_TMR5 100
+#define AWIN_IRQ_GPU_GP 101
+#define AWIN_IRQ_GPU_GPMMU 102
+#define AWIN_IRQ_GPU_PP0 103
+#define AWIN_IRQ_GPU_PPMMU0 104
+#define AWIN_IRQ_GPU_PMU 105
+#define AWIN_IRQ_GPU_PP1 106
+#define AWIN_IRQ_GPU_PPMMU1 107
+#define AWIN_IRQ_GPU_RSV0 108
+#define AWIN_IRQ_GPU_RSV1 109
+#define AWIN_IRQ_GPU_RSV2 110
+#define AWIN_IRQ_GPU_RSV3 111
+#define AWIN_IRQ_GPU_RSV4 112
+#define AWIN_IRQ_HSTMR0 113
+#define AWIN_IRQ_HSTMR1 114
+#define AWIN_IRQ_HSTMR2 115
+#define AWIN_IRQ_HSTMR3 116
+#define AWIN_IRQ_GMAC 117
+#define AWIN_IRQ_HDMI1 118
+#define AWIN_IRQ_IIS1 119
+#define AWIN_IRQ_TWI3 120
+#define AWIN_IRQ_TWI4 121
+#define AWIN_IRQ_IIS2 122
+
+#endif /* _ARM_ALLWINNER_AWIN_INTR_H_ */
Index: src/sys/arch/arm/allwinner/awin_reg.h
diff -u /dev/null src/sys/arch/arm/allwinner/awin_reg.h:1.1
--- /dev/null Tue Sep 3 18:02:26 2013
+++ src/sys/arch/arm/allwinner/awin_reg.h Tue Sep 3 18:02:26 2013
@@ -0,0 +1,398 @@
+/* $NetBSD */
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+ */
+
+#ifndef _ARM_ALLWINNER_AWIN_REG_H
+#define _ARM_ALLWINNER_AWIN_REG_H
+
+#define AWIN_CPUBIST_PBASE 0x3f501000
+#define AWIN_CPUBIST_SIZE 0x00001000
+#define AWIN_SRAM_PBASE 0x00000000
+#define AWIN_SRAM_SIZE 0x00100000 /* round to 1MB */
+#define AWIN_SRAMA1_PBASE 0x00000000
+#define AWIN_SRAMA1_SIZE 0x00004000
+#define AWIN_SRAMA2_PBASE 0x00004000
+#define AWIN_SRAMA2_SIZE 0x00004000
+#define AWIN_SRAMA3_PBASE 0x00008000
+#define AWIN_SRAMA3_SIZE 0x00003400
+#define AWIN_SRAMA4_PBASE 0x0000b400
+#define AWIN_SRAMA4_SIZE 0x00000c00
+#define AWIN_SRAMD_PBASE 0x00010000
+#define AWIN_SRAMD_SIZE 0x00001000
+#define AWIN_SRAMB_PBASE 0x00020000 /* Secure */
+#define AWIN_SRAMB_SIZE 0x00010000 /* Secure */
+
+#define AWIN_CORE_PBASE 0x01c00000
+#define AWIN_CORE_SIZE 0x00300000
+#define AWIN_SRAM_OFFSET 0x00000000
+#define AWIN_DRAM_OFFSET 0x00001000
+#define AWIN_DMA_OFFSET 0x00002000
+#define AWIN_NFC_OFFSET 0x00003000
+#define AWIN_TS_OFFSET 0x00004000
+#define AWIN_SPI0_OFFSET 0x00005000
+#define AWIN_SPI1_OFFSET 0x00006000
+#define AWIN_MS_OFFSET 0x00007000
+#define AWIN_TVD_OFFSET 0x00008000
+#define AWIN_CSI0_OFFSET 0x00009000
+#define AWIN_TVE0_OFFSET 0x0000a000
+#define AWIN_EMAC_OFFSET 0x0000b000
+#define AWIN_LCD0_OFFSET 0x0000c000
+#define AWIN_LCD1_OFFSET 0x0000d000
+#define AWIN_VE_OFFSET 0x0000e000
+#define AWIN_SDMMC0_OFFSET 0x0000f000
+#define AWIN_SDMMC1_OFFSET 0x00010000
+#define AWIN_SDMMC2_OFFSET 0x00011000
+#define AWIN_SDMMC3_OFFSET 0x00012000
+#define AWIN_USB0_OFFSET 0x00013000
+#define AWIN_USB1_OFFSET 0x00014000
+#define AWIN_SS_OFFSET 0x00015000
+#define AWIN_HDMI_OFFSET 0x00016000
+#define AWIN_SPI2_OFFSET 0x00017000
+#define AWIN_SATA_OFFSET 0x00018000 /* A20 */
+#define AWIN_PATA_OFFSET 0x00019000 /* A10 */
+#define AWIN_ACE_OFFSET 0x0001a000
+#define AWIN_TVE1_OFFSET 0x0001b000
+#define AWIN_USB2_OFFSET 0x0001c000
+#define AWIN_CSI1_OFFSET 0x0001d000
+#define AWIN_TZASC_OFFSET 0x0001e000 /* A10 */
+#define AWIN_SPI3_OFFSET 0x0001f000
+#define AWIN_CCM_OFFSET 0x00020000
+#define AWIN_INTC_OFFSET 0x00020400
+#define AWIN_PIO_OFFSET 0x00020800
+#define AWIN_TIMER_OFFSET 0x00020c00
+#define AWIN_SPDIF_OFFSET 0x00021000 /* A20 */
+#define AWIN_AC97_OFFSET 0x00021400
+#define AWIN_IR0_OFFSET 0x00021800
+#define AWIN_IR1_OFFSET 0x00021c00
+#define AWIN_IIS0_OFFSET 0x00022000
+#define AWIN_IIS1_OFFSET 0x00022400
+#define AWIN_LRADC_OFFSET 0x00022800
+#define AWIN_ADDA_OFFSET 0x00022c00
+#define AWIN_KEYPAD_OFFSET 0x00023000
+#define AWIN_TZPC_OFFSET 0x00023400 /* A10 */
+#define AWIN_SID_OFFSET 0x00023800
+#define AWIN_SJTAG_OFFSET 0x00023c00
+#define AWIN__RSVD3_OFFSET 0x00024000
+#define AWIN_IIS2_OFFSET 0x00024400
+#define AWIN__RSVD4_OFFSET 0x00024800
+#define AWIN__RSVD5_OFFSET 0x00024c00
+#define AWIN_TP_OFFSET 0x00025000
+#define AWIN_PMU_OFFSET 0x00025400
+#define AWIN__RSVD6_OFFSET 0x00025800
+#define AWIN_CPUCNF_OFFSET 0x00025c00
+#define AWIN__RSVD7_OFFSET 0x00026000
+#define AWIN__RSVD8_OFFSET 0x00026400
+#define AWIN__RSVD9_OFFSET 0x00026800
+#define AWIN__RSVD10_OFFSET 0x00026c00
+#define AWIN__RSVD11_OFFSET 0x00027000
+#define AWIN__RSVD12_OFFSET 0x00027400
+#define AWIN__RSVD13_OFFSET 0x00027800
+#define AWIN__RSVD14_OFFSET 0x00027c00
+#define AWIN_UART_FREQ (24*1000*1000) /* 24MHz */
+#define AWIN_UART_SIZE 0x00000100
+#define AWIN_UART0_OFFSET 0x00028000
+#define AWIN_UART1_OFFSET 0x00028400
+#define AWIN_UART2_OFFSET 0x00028800
+#define AWIN_UART3_OFFSET 0x00028c00
+#define AWIN_UART4_OFFSET 0x00029000
+#define AWIN_UART5_OFFSET 0x00029400
+#define AWIN_UART6_OFFSET 0x00029800
+#define AWIN_UART7_OFFSET 0x00029c00
+#define AWIN_PS20_OFFSET 0x0002a000
+#define AWIN_PS21_OFFSET 0x0002a400
+#define AWIN__RSVD15_OFFSET 0x0002a800
+#define AWIN_TWI0_OFFSET 0x0002ac00
+#define AWIN_TWI1_OFFSET 0x0002b000
+#define AWIN_TWI2_OFFSET 0x0002b400
+#define AWIN_TWI3_OFFSET 0x0002b800
+#define AWIN_CAN_OFFSET 0x0002bc00
+#define AWIN_TWI4_OFFSET 0x0002c000 /* A20 */
+#define AWIN_SCR_OFFSET 0x0002c400
+#define AWIN_GPS_OFFSET 0x00030000
+#define AWIN_MALI400_OFFSET 0x00040000
+#define AWIN_GMAC_OFFSET 0x00050000
+#define AWIN_HSTMR_OFFSET 0x00060000 /* A20 */
+#define AWIN_GIC_OFFSET 0x00080000 /* A20 */
+#define AWIN_HDMI1_OFFSET 0x000E0000 /* A20 */
+#define AWIN_SRAMC_OFFSET 0x00100000
+#define AWIN_DE_FE0_OFFSET 0x00200000
+#define AWIN_DE_FE1_OFFSET 0x00220000
+#define AWIN_DE_BE1_OFFSET 0x00240000
+#define AWIN_DE_BE0_OFFSET 0x00260000
+#define AWIN_MP_OFFSET 0x00280000
+#define AWIN_AVG_OFFSET 0x002A0000
+#define AWIN_SDRAM_PBASE 0x40000000
+
+/* A10/A20 DRAM Controller */
+#define AWIN_DRAM_CCR_REG 0x0000
+#define AWIN_DRAM_DCR_REG 0x0004
+#define AWIN_DRAM_IOCR_REG 0x0008
+#define AWIN_DRAM_CSR_REG 0x000c
+#define AWIN_DRAM_DRR_REG 0x0010
+#define AWIN_DRAM_TPR0_REG 0x0014
+#define AWIN_DRAM_TPR1_REG 0x0018
+#define AWIN_DRAM_TPR2_REG 0x001c
+#define AWIN_DRAM_GDLLCR_REG 0x0020
+#define AWIN_DRAM_RSLR0_REG 0x004c
+#define AWIN_DRAM_RSLR1_REG 0x0050
+#define AWIN_DRAM_RDGR0_REG 0x005c
+#define AWIN_DRAM_RDGR1_REG 0x0060
+#define AWIN_DRAM_ODTCR_REG 0x0098
+#define AWIN_DRAM_DTR0_REG 0x009c
+#define AWIN_DRAM_DTR1_REG 0x00a0
+#define AWIN_DRAM_DTAR_REG 0x00a4
+#define AWIN_DRAM_ZQCR0_REG 0x00a8
+#define AWIN_DRAM_ZQCR1_REG 0x00ac
+#define AWIN_DRAM_ZQSR_REG 0x00b0
+#define AWIN_DRAM_IDCR_REG 0x00b4
+#define AWIN_DRAM_MR_REG 0x01f0
+#define AWIN_DRAM_EMR1_REG 0x01f4
+#define AWIN_DRAM_EMR2_REG 0x01f8
+#define AWIN_DRAM_EMR3_REG 0x01fc
+#define AWIN_DRAM_DLLCTR_REG 0x0200
+#define AWIN_DRAM_DLLCR0_REG 0x0204
+#define AWIN_DRAM_DLLCR1_REG 0x0208
+#define AWIN_DRAM_DLLCR2_REG 0x020c
+#define AWIN_DRAM_DLLCR3_REG 0x0210
+#define AWIN_DRAM_DLLCR4_REG 0x0214
+#define AWIN_DRAM_DQTR0_REG 0x0218
+#define AWIN_DRAM_DQTR1_REG 0x021c
+#define AWIN_DRAM_DQTR2_REG 0x0220
+#define AWIN_DRAM_DQTR3_REG 0x0224
+#define AWIN_DRAM_DQSTR_REG 0x0228
+#define AWIN_DRAM_DQSBTR_REG 0x022c
+#define AWIN_DRAM_MCR_REG 0x0230
+#define AWIN_DRAM_PPWRSCTRL_REG 0x0240
+#define AWIN_DRAM_APR_REG 0x0244
+#define AWIN_DRAM_PLDTR_REG 0x023c
+#define AWIN_DRAM_HPCR0_REG 0x0240
+#define AWIN_DRAM_HPCRn_REG(n) (0x0240+4*(n))
+#define AWIN_DRAM_CSEL_REG 0x02e0
+
+#define AWIN_DRAM_DCR_IO_WIDTH __BITS(2,1)
+#define AWIN_DRAM_DCR_IO_WIDTH_16BIT 2
+#define AWIN_DRAM_DCR_IO_WIDTH_8BIT 1
+#define AWIN_DRAM_DCR_CHIP_DENSITY __BITS(5,3)
+#define AWIN_DRAM_DCR_CHIP_DENSITY_256M 0
+#define AWIN_DRAM_DCR_CHIP_DENSITY_512M 1
+#define AWIN_DRAM_DCR_CHIP_DENSITY_1G 2
+#define AWIN_DRAM_DCR_CHIP_DENSITY_2G 3
+#define AWIN_DRAM_DCR_CHIP_DENSITY_4G 4
+#define AWIN_DRAM_DCR_CHIP_DENSITY_8G 5
+#define AWIN_DRAM_DCR_BUS_WIDTH __BITS(8,6)
+#define AWIN_DRAM_DCR_BUS_WIDTH_32BIT 3
+#define AWIN_DRAM_DCR_BUS_WIDTH_16BIT 1
+#define AWIN_DRAM_DCR_BUS_WIDTH_8BIT 0
+#define AWIN_DRAM_DCR_RANK_SEL __BITS(11,10)
+
+#define AWIN_PLL1_CFG_REG 0x0000
+#define AWIN_PLL1_TUN_REG 0x0004
+#define AWIN_PLL2_CFG_REG 0x0008
+#define AWIN_PLL2_TUN_REG 0x000c
+#define AWIN_PLL3_CFG_REG 0x0010
+#define AWIN_PLL4_CFG_REG 0x0018
+#define AWIN_PLL5_CFG_REG 0x0020
+#define AWIN_PLL5_TUN_REG 0x0024
+#define AWIN_PLL6_CFG_REG 0x0028
+#define AWIN_PLL6_TUN_REG 0x002c
+#define AWIN_PLL7_CFG_REG 0x0030
+#define AWIN_PLL1_TUN2_REG 0x0038
+#define AWIN_PLL6_TUN2_REG 0x003c
+#define AWIN_PLL8_CFG_REG 0x0040
+#define AWIN_OSC24M_CFG_REG 0x0050
+#define AWIN_CPU_AHB_APB0_CFG_REG 0x0054
+#define AWIN_APB1_CLK_DIV_REG 0x0058
+
+#define AWIN_OSC24M_CFG_ENABLE __BIT(0)
+
+#define AWIN_PLL_CFG_ENABLE __BIT(31)
+#define AWIN_PLL_CFG_EXG_MODE __BIT(25)
+#define AWIN_PLL_CFG_OUT_EXP_DIVP __BITS(17,16)
+#define AWIN_PLL_CFG_FACTOR_N __BITS(12,8)
+#define AWIN_PLL_CFG_FACTOR_K __BITS(5,4)
+#define AWIN_PLL_CFG_FACTOR_M __BITS(1,0)
+
+#define AWIN_CPU_CLK_SRC_SEL __BITS(17,16)
+#define AWIN_CPU_CLK_SRC_SEL_LOSC 0
+#define AWIN_CPU_CLK_SRC_SEL_OSC24M 1
+#define AWIN_CPU_CLK_SRC_SEL_PLL1 2
+#define AWIN_CPU_CLK_SRC_SEL_200MHZ 3
+#define AWIN_APB0_CLK_RATIO __BITS(9,8)
+
+/* USB device offsets */
+#define AWIN_EHCI_OFFSET 0x0000
+#define AWIN_OHCI_OFFSET 0x0400
+
+/* A10 Interrupt Register Definitions */
+#define AWIN_INTC_VECTOR_REG 0x0000
+#define AWIN_INTC_BASE_ADDR_REG 0x0004
+#define AWIN_NMI_INT_CTRL_REG 0x000C
+#define AWIN_INTC_IRQ_PEND0_REG 0x0010
+#define AWIN_INTC_IRQ_PEND1_REG 0x0014
+#define AWIN_INTC_IRQ_PEND2_REG 0x0018
+#define AWIN_INTC_FIQ_PEND0_REG 0x0020
+#define AWIN_INTC_FIQ_PEND1_REG 0x0024
+#define AWIN_INTC_FIQ_PEND2_REG 0x0028
+#define AWIN_INTC_IRQ_TYPE_SEL0_REG 0x0030
+#define AWIN_INTC_IRQ_TYPE_SEL1_REG 0x0034
+#define AWIN_INTC_IRQ_TYPE_SEL2_REG 0x0038
+#define AWIN_INTC_EN0_REG 0x0040
+#define AWIN_INTC_EN1_REG 0x0044
+#define AWIN_INTC_EN2_REG 0x0048
+#define AWIN_INTC_MASK0_REG 0x0050
+#define AWIN_INTC_MASK1_REG 0x0054
+#define AWIN_INTC_MASK2_REG 0x0058
+#define AWIN_INTC_RESP0_REG 0x0060
+#define AWIN_INTC_RESP1_REG 0x0064
+#define AWIN_INTC_RESP2_REG 0x0068
+#define AWIN_INTC_FF0_REG 0x0070
+#define AWIN_INTC_FF1_REG 0x0074
+#define AWIN_INTC_FF2_REG 0x0078
+#define AWIN_INTC_PRIO0_REG 0x0080
+#define AWIN_INTC_PRIO1_REG 0x0084
+#define AWIN_INTC_PRIO2_REG 0x0088
+#define AWIN_INTC_PRIO3_REG 0x008C
+#define AWIN_INTC_PRIO4_REG 0x0090
+
+/* Standard Timer (A10) */
+#define AWIN_TMR_IRQ_EN_REG 0x0000
+#define AWIN_TMR_IRQ_STA_REG 0x0004
+#define AWIN_TMR0_CTRL_REG 0x0010
+#define AWIN_TMR0_INTV_VALUE_REG 0x0014
+#define AWIN_TMR0_CUR_VALUE_REG 0x0018
+#define AWIN_TMR1_CTRL_REG 0x0020
+#define AWIN_TMR1_INTV_VALUE_REG 0x0024
+#define AWIN_TMR1_CUR_VALUE_REG 0x0028
+#define AWIN_TMR2_CTRL_REG 0x0030
+#define AWIN_TMR2_INTV_VALUE_REG 0x0034
+#define AWIN_TMR2_CUR_VALUE_REG 0x0038
+#define AWIN_TMR3_CTRL_REG 0x0040
+#define AWIN_TMR3_INTV_VALUE_REG 0x0044
+#define AWIN_TMR4_CTRL_REG 0x0050
+#define AWIN_TMR4_INTV_VALUE_REG 0x0054
+#define AWIN_TMR4_CUR_VALUE_REG 0x0058
+#define AWIN_TMR5_CTRL_REG 0x0060
+#define AWIN_TMR5_INTV_VALUE_REG 0x0064
+#define AWIN_TMR5_CUR_VALUE_REG 0x0068
+#define AWIN_AVS_CNT_CTL_REG 0x0080
+#define AWIN_AVS_CNT0_REG 0x0084
+#define AWIN_AVS_CNT1_REG 0x0088
+#define AWIN_AVS_CNT_DIV_REG 0x008C
+#define AWIN_WDOG_CTRL_REG 0x0090
+#define AWIN_WDOG_MODE_REG 0x0094
+#define AWIN_CNT64_CTRL_REG 0x00A0 /* A10 */
+#define AWIN_CNT64_LO_REG 0x00A4 /* A10 */
+#define AWIN_CNT64_HI_REG 0x00A8 /* A10 */
+#define AWIN_LOSC_CTRL_REG 0x0100
+#define AWIN_RTC_YY_MM_DD_REG 0x0104
+#define AWIN_RTC_HH_MM_SS_REG 0x0108
+#define AWIN_DD_HH_MM_SS_REG 0x010C
+#define AWIN_ALARM_WK_HH_MM_SS_REG 0x0110
+#define AWIN_ALARM_EN_REG 0x0114
+#define AWIN_ALARM_IRQ_EN_REG 0x0118
+#define AWIN_ALARM_IRQ_STA_REG 0x011C
+#define AWIN_TMR_GP_DATA0_REG 0x0120
+#define AWIN_TMR_GP_DATA1_REG 0x0124
+#define AWIN_TMR_GP_DATA2_REG 0x0128
+#define AWIN_TMR_GP_DATA3_REG 0x012C
+#define AWIN_CPU_CFG_REG 0x0140
+
+#define AWIN_TWI_ADDR_REG 0x0000
+#define AWIN_TWI_XADDR_REG 0x0004
+#define AWIN_TWI_DATA_REG 0x0008
+#define AWIN_TWI_CNTR_REG 0x000C
+#define AWIN_TWI_STAT_REG 0x0010
+#define AWIN_TWI_CCR_REG 0x0014
+#define AWIN_TWI_SRST_REG 0x0018
+#define AWIN_TWI_EFR_REG 0x001C
+#define AWIN_TWI_LCR_REG 0x0020
+
+#define AWIN_SPI_RXDATA_REG 0x0000
+#define AWIN_SPI_TXDATA_REG 0x0004
+#define AWIN_SPI_CTL_REG 0x0008
+#define AWIN_SPI_INTCTL_REG 0x000C
+#define AWIN_SPI_ST_REG 0x0010
+#define AWIN_SPI_DMACTL_REG 0x0014
+#define AWIN_SPI_WAIT_REG 0x0018
+#define AWIN_SPI_CCTL_REG 0x001C
+#define AWIN_SPI_BC_REG 0x0020
+#define AWIN_SPI_TC_REG 0x0024
+#define AWIN_SPI_FIFO_STA_REG 0x0028
+
+/* A20 CPU Configuration definitions */
+#define AWIN_CPU0_RST_CTRL_REG 0x0040
+#define AWIN_CPU0_CTRL_REG 0x0044
+#define AWIN_CPU0_STATUS_REG 0x0048
+#define AWIN_CPU1_RST_CTRL_REG 0x0080
+#define AWIN_CPU1_CTRL_REG 0x0084
+#define AWIN_CPU1_STATUS_REG 0x0088
+#define AWIN_GENER_CTRL_REG 0x0184
+#define AWIN_EVENT_IN_REG 0x0190
+#define AWIN_PRIVATE_REG 0x01a4
+#define AWIN_IDLE_CNT0_LOW_REG 0x0200
+#define AWIN_IDLE_CNT0_HIGH_REG 0x0204
+#define AWIN_IDLE_CNT0_CTRL_REG 0x0208
+#define AWIN_IDLE_CNT1_LOW_REG 0x0210
+#define AWIN_IDLE_CNT1_HIGH_REG 0x0214
+#define AWIN_IDLE_CNT1_CTRL_REG 0x0218
+#define AWIN_OSC24M_CNT64_CTRL_REG 0x0280
+#define AWIN_OSC24M_CNT64_LOW_REG 0x0284
+#define AWIN_OSC24M_CNT64_HIGH_REG 0x0288
+#define AWIN_LOSC_CNT64_CTRL_REG 0x0290
+#define AWIN_LOSC_CNT64_LOW_REG 0x0294
+#define AWIN_LOSC_CNT64_HIGH_REG 0x0298
+
+#define AWIN_CPU_CORE_RESET __BIT(1)
+#define AWIN_CPU_RESET __BIT(0)
+
+/* High Speed Timer (A20) */
+#define AWIN_HSTMR_IRQ_EN_REG 0x0000
+#define AWIN_HSTMR_IRQ_STAT_REG 0x0004
+#define AWIN_HSTMR_TMR0_CTRL_REG 0x0010
+#define AWIN_HSTMR_TMR0_INTV_LO_REG 0x0014
+#define AWIN_HSTMR_TMR0_INTV_HI_REG 0x0018
+#define AWIN_HSTMR_TMR0_CURNT_LO_REG 0x001c
+#define AWIN_HSTMR_TMR0_CURNT_HI_REG 0x0020
+#define AWIN_HSTMR_TMR1_CTRL_REG 0x0030
+#define AWIN_HSTMR_TMR1_INTV_LO_REG 0x0034
+#define AWIN_HSTMR_TMR1_INTV_HI_REG 0x0038
+#define AWIN_HSTMR_TMR1_CURNT_LO_REG 0x003c
+#define AWIN_HSTMR_TMR1_CURNT_HI_REG 0x0040
+#define AWIN_HSTMR_TMR2_CTRL_REG 0x0050
+#define AWIN_HSTMR_TMR2_INTV_LO_REG 0x0054
+#define AWIN_HSTMR_TMR2_INTV_HI_REG 0x0058
+#define AWIN_HSTMR_TMR2_CURNT_LO_REG 0x005c
+#define AWIN_HSTMR_TMR2_CURNT_HI_REG 0x0060
+#define AWIN_HSTMR_TMR3_CTRL_REG 0x0070
+#define AWIN_HSTMR_TMR3_INTV_LO_REG 0x0074
+#define AWIN_HSTMR_TMR3_INTV_HI_REG 0x0078
+#define AWIN_HSTMR_TMR3_CURNT_LO_REG 0x007c
+#define AWIN_HSTMR_TMR3_CURNT_HI_REG 0x0080
+
+#endif /* _ARM_ALLWINNER_AWIN_REG_H_ */
Index: src/sys/arch/arm/allwinner/awin_var.h
diff -u /dev/null src/sys/arch/arm/allwinner/awin_var.h:1.1
--- /dev/null Tue Sep 3 18:02:26 2013
+++ src/sys/arch/arm/allwinner/awin_var.h Tue Sep 3 18:02:26 2013
@@ -0,0 +1,42 @@
+/* $NetBSD: awin_var.h,v 1.1 2013/09/03 18:02:26 matt Exp $ */
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+ */
+
+#ifndef _ARM_ALLWINNER_AWIN_VAR_H_
+#define _ARM_ALLWINNER_AWIN_VAR_H_
+
+#include <sys/types.h>
+#include <sys/bus.h>
+
+extern struct bus_space awin_bs_tag;
+extern struct bus_space awin_a4x_bs_tag;
+
+bool awinwdt_enable(bool);
+
+#endif /* _ARM_ALLWINNER_AWIN_VAR_H_ */
Index: src/sys/arch/arm/allwinner/files.awin
diff -u /dev/null src/sys/arch/arm/allwinner/files.awin:1.1
--- /dev/null Tue Sep 3 18:02:26 2013
+++ src/sys/arch/arm/allwinner/files.awin Tue Sep 3 18:02:26 2013
@@ -0,0 +1,101 @@
+# $NetBSD: files.awin,v 1.1 2013/09/03 18:02:26 matt Exp $
+#
+# Configuration info for Allwinner ARM Peripherals
+#
+
+include "arch/arm/pic/files.pic"
+include "arch/arm/cortex/files.cortex"
+
+file arch/arm/arm32/arm32_boot.c
+file arch/arm/arm32/arm32_kvminit.c
+file arch/arm/arm32/arm32_reboot.c
+file arch/arm/arm32/irq_dispatch.S
+
+file arch/arm/allwinner/awin_board.c
+file arch/arm/allwinner/awingen_space.c
+file arch/arm/allwinner/awin_a4x_space.c
+file arch/arm/arm/bus_space_a4x.S
+
+# Console parameters
+defparam opt_allwinner.h CONADDR
+defparam opt_allwinner.h CONSPEED
+defparam opt_allwinner.h CONMODE
+defparam opt_allwinner.h MEMSIZE
+defflag opt_allwinner.h AWIN_CONSOLE_EARLY
+defflag opt_allwinner.h AWINETH_COUNTERS
+defflag opt_allwinner.h ALLWINNER_A10
+defflag opt_allwinner.h ALLWINNER_A20
+defflag opt_allwinner.h ALLWINNER_A31
+
+# SoC I/O attach point
+device awinio { [port=-1] } : bus_space_generic
+attach awinio at mainbus
+file arch/arm/allwinner/awinio.c awinio
+
+# A10 Interrupt Controller
+device awinicu
+attach awinicu at awinio
+file arch/arm/allwinner/awinicu.c awinicu
+
+# A10/A20 Watchdog
+device awinwdt
+attach awinwdt at awinio
+file arch/arm/allwinner/awinwdt.c awinwdt
+
+# A10 Timers
+device awintmr
+attach awintmr at awinio
+file arch/arm/allwinner/awintmr.c awintmr
+
+# A10/A20 UART
+attach com at awinio with com_awinio
+file arch/arm/allwinner/awin_com.c com_awinio
+
+# A10/A20 GPIO
+device awingpio : gpiobus
+attach awingpio at awinio
+file arch/arm/allwinner/awin_gpio.c awingpio
+
+# A10/A20 TWI (IIC)
+device awiniic : i2cbus, i2cexec
+attach awiniic at awinio
+file arch/arm/allwinner/awin_twi.c awiniic
+
+# A10/A20 NAND controller
+device awinnand : nandbus
+attach awinnand at awinio
+file arch/arm/allwinner/awin_nand.c awinnand
+
+# A10/A20 Security System
+device awincrypto : opencrypto
+attach awincrypto at awinio
+file arch/arm/allwinner/awin_rng.c awinrng needs-flag
+
+# A10/A20 EMAC
+device awinfe { } : ether, ifnet, arp
+attach awinfe at awinio
+file arch/arm/allwinner/awin_eth.c awinfe
+
+# A20 GMAC
+device awinge { } : ether, ifnet, arp
+attach awinge at awinio
+file arch/arm/allwinner/awin_gige.c awinge
+
+# USB2 Host Controller (EHCI/OHCI)
+device awinusb { }
+attach awinusb at awinio
+attach ohci at awinusb with ohci_awinusb
+attach ehci at awinusb with ehci_awinusb
+file arch/arm/allwinner/awin_usb.c awinusb
+
+# A10/A20 SD/MMC Controller (SDHC)
+attach sdhc at awinio with sdhc_awin
+file arch/arm/allwinner/awin_sdhc.c sdhc_awin
+
+# A10 WDC Controller (PATA)
+attach wdc at awinio with wdc_awin
+file arch/arm/allwinner/awin_wdc.c wdc_awin
+
+# A20 AHCI Controller (SATA)
+attach ahcisata at awinio with ahcisata_awin
+file arch/arm/allwinner/awin_ahcisata.c ahcisata_awin