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