Module Name: src Committed By: kiyohara Date: Mon Sep 30 13:33:05 UTC 2013
Added Files: src/sys/arch/arm/marvell: armadaxpreg.h Removed Files: src/sys/arch/evbarm/armadaxp: armadaxpreg.h Log Message: Move armadaxpreg.h into arm/marvell. And add some defines and reorder. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/marvell/armadaxpreg.h cvs rdiff -u -r1.2 -r0 src/sys/arch/evbarm/armadaxp/armadaxpreg.h 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/marvell/armadaxpreg.h diff -u /dev/null src/sys/arch/arm/marvell/armadaxpreg.h:1.1 --- /dev/null Mon Sep 30 13:33:05 2013 +++ src/sys/arch/arm/marvell/armadaxpreg.h Mon Sep 30 13:33:05 2013 @@ -0,0 +1,301 @@ +/******************************************************************************* +Copyright (C) Marvell International Ltd. and its affiliates + +Developed by Semihalf + +******************************************************************************** +Marvell BSD License + +If you received this File from Marvell, you may opt to use, redistribute and/or +modify this File under the following licensing terms. +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * 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. + + * Neither the name of Marvell nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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 _ARMADAXPREG_H_ +#define _ARMADAXPREG_H_ + +#include <arm/marvell/mvsocreg.h> +#include <evbarm/marvell/marvellvar.h> + +#define ARMADAXP_UNITID_DDR MVSOC_UNITID_DDR +#define ARMADAXP_UNITID_DEVBUS MVSOC_UNITID_DEVBUS +#define ARMADAXP_UNITID_MBUS MVSOC_UNITID_MBUS +#define ARMADAXP_UNITID_MLMB MVSOC_UNITID_MLMB +#define ARMADAXP_UNITID_PEX MVSOC_UNITID_PEX +#define ARMADAXP_UNITID_USB 0x5 /* USB registers */ +#define ARMADAXP_UNITID_XORE0 0x6 /* Reserved? */ +#define ARMADAXP_UNITID_GBE0 0x7 +#define ARMADAXP_UNITID_GBE2 0x3 +#define ARMADAXP_UNITID_PEX0 MVSOC_UNITID_PEX +#define ARMADAXP_UNITID_PEX1 0x8 +#define ARMADAXP_UNITID_PEX2 MVSOC_UNITID_PEX +#define ARMADAXP_UNITID_PEX3 0x8 +#define ARMADAXP_UNITID_CRYPT 0x9 +#define ARMADAXP_UNITID_SATA 0xa +#define ARMADAXP_UNITID_BM 0xc +#define ARMADAXP_UNITID_PNC 0xc +#define ARMADAXP_UNITID_SDIO 0xd /* SDIO registers */ +#define ARMADAXP_UNITID_LCD 0xe /* Reserved? */ +#define ARMADAXP_UNITID_XORE1 0xf /* Reserved? */ + +#define ARMADAXP_ATTR_PEXx0_MEM 0xe8 +#define ARMADAXP_ATTR_PEXx0_IO 0xe0 +#define ARMADAXP_ATTR_PEXx1_MEM 0xd8 +#define ARMADAXP_ATTR_PEXx1_IO 0xd0 +#define ARMADAXP_ATTR_PEXx2_MEM 0xb8 +#define ARMADAXP_ATTR_PEXx2_IO 0xb0 +#define ARMADAXP_ATTR_PEXx3_MEM 0x78 +#define ARMADAXP_ATTR_PEXx3_IO 0x70 +#define ARMADAXP_ATTR_PEX2_MEM 0xf8 +#define ARMADAXP_ATTR_PEX2_IO 0xf0 +#define ARMADAXP_ATTR_PEX3_MEM 0xf8 +#define ARMADAXP_ATTR_PEX3_IO 0xf0 + + +#define ARMADAXP_IRQ_GBE0_TH_RXTX 8 /* GBE0_TH_RXTX_Int */ +#define ARMADAXP_IRQ_GBE1_TH_RXTX 10 /* GBE1_TH_RXTX_Int */ +#define ARMADAXP_IRQ_GBE2_TH_RXTX 12 /* GBE2_TH_RXTX_Int */ +#define ARMADAXP_IRQ_GBE3_TH_RXTX 14 /* GBE3_TH_RXTX_Int */ + +#define ARMADAXP_IRQ_LCD 29 +#define ARMADAXP_IRQ_SPI 30 +#define ARMADAXP_IRQ_TWSI0 31 +#define ARMADAXP_IRQ_TWSI1 32 +#define ARMADAXP_IRQ_IDMA0 33 /* IDMA Channel 0 */ +#define ARMADAXP_IRQ_IDMA1 34 /* IDMA Channel 1 */ +#define ARMADAXP_IRQ_IDMA2 35 /* IDMA Channel 2 */ +#define ARMADAXP_IRQ_IDMA3 36 /* IDMA Channel 3 */ +#define ARMADAXP_IRQ_TIMER0 37 +#define ARMADAXP_IRQ_TIMER1 38 +#define ARMADAXP_IRQ_TIMER2 39 +#define ARMADAXP_IRQ_TIMER3 40 +#define ARMADAXP_IRQ_UART0 41 +#define ARMADAXP_IRQ_UART1 42 +#define ARMADAXP_IRQ_UART2 43 +#define ARMADAXP_IRQ_UART3 44 +#if 0 +#define ARMADAXP_IRQ_USB0 45 +#define ARMADAXP_IRQ_USB1 46 +#define ARMADAXP_IRQ_USB2 47 +#else +/* + * According to functional specification (MV-S107021-00B.pdf), interrupt number + * for USB0_int is 47, in fact this number is 45. Because of that interrupt + * number definitions are not equivalent to ArmadaXP functional specification + * (MV-S107021-00B.pdf). + */ +#define ARMADAXP_IRQ_USB0 45 /* USB2 */ +#define ARMADAXP_IRQ_USB1 46 /* USB1 */ +#define ARMADAXP_IRQ_USB2 47 /* USB0 */ +#endif +#define ARMADAXP_IRQ_CESA0 48 +#define ARMADAXP_IRQ_CESA1 49 +#define ARMADAXP_IRQ_RTC 50 +#define ARMADAXP_IRQ_XOR0CH0 51 /* XOR0 Ch0 */ +#define ARMADAXP_IRQ_XOR0CH1 52 /* XOR0 Ch1 */ +#define ARMADAXP_IRQ_BM 53 /* Buffer Management */ +#define ARMADAXP_IRQ_SDIO 54 +#define ARMADAXP_IRQ_SATA0 55 +#define ARMADAXP_IRQ_TDM 56 +#define ARMADAXP_IRQ_SATA1 57 +#define ARMADAXP_IRQ_PEX00 58 /* PCIe Port0.0 INTA/B/C/D */ +#define ARMADAXP_IRQ_PEX01 59 /* PCIe Port0.1 INTA/B/C/D */ +#define ARMADAXP_IRQ_PEX02 60 /* PCIe Port0.2 INTA/B/C/D */ +#define ARMADAXP_IRQ_PEX03 61 /* PCIe Port0.3 INTA/B/C/D */ +#define ARMADAXP_IRQ_PEX10 62 /* PCIe Port1.0 INTA/B/C/D */ +#define ARMADAXP_IRQ_PEX11 63 /* PCIe Port1.1 INTA/B/C/D */ +#define ARMADAXP_IRQ_PEX12 64 /* PCIe Port1.2 INTA/B/C/D */ +#define ARMADAXP_IRQ_PEX13 65 /* PCIe Port1.3 INTA/B/C/D */ +#define ARMADAXP_IRQ_XOR1CH2 94 /* XOR1 Ch2 */ +#define ARMADAXP_IRQ_XOR1CH3 95 /* XOR1 Ch3 */ +#define ARMADAXP_IRQ_PEX2 99 /* PCIe Port2 INTA/B/C/D */ +#define ARMADAXP_IRQ_PEX3 103 /* PCIe Port3 INTA/B/C/D */ + + +#define ARMADAXP_MLMB_NWINDOW 19 +#define ARMADAXP_MLMB_NREMAP 8 + +/* + * Physical address of integrated peripherals + */ + +#undef UNITID2PHYS +#define UNITID2PHYS(uid) ((ARMADAXP_UNITID_ ## uid) << 16) + +/* + * Real-Time Clock Unit Registers + */ +#define ARMADAXP_RTC_BASE (MVSOC_DEVBUS_BASE + 0x0300) + +/* + * SPI Interface Registers + */ +#define ARMADAXP_SPI_BASE (MVSOC_DEVBUS_BASE + 0x0600) + +/* + * TWSI Interface Registers + */ +#define ARMADAXP_TWSI1_BASE (MVSOC_DEVBUS_BASE + 0x1100) + +/* + * UART Interface Registers + */ /* NS16550 compatible */ +#define ARMADAXP_COM2_BASE (MVSOC_DEVBUS_BASE + 0x2200) +#define ARMADAXP_COM3_BASE (MVSOC_DEVBUS_BASE + 0x2300) + +/* + * General Purpose Input/Output Port Registers + */ +#define ARMADAXP_GPIO0_BASE (MVSOC_DEVBUS_BASE + 0x8100) +#define ARMADAXP_GPIO1_BASE (MVSOC_DEVBUS_BASE + 0x8120) +#define ARMADAXP_GPIO2_BASE (MVSOC_DEVBUS_BASE + 0x8140) + +/* + * Power Management Unit Registers + */ /* NS16550 compatible */ +#define ARMADAXP_PMU_BASE (MVSOC_DEVBUS_BASE + 0xc000) + +/* + * SoC MISC Registers + */ +#define ARMADAXP_MISC_SAR_LO 0x30 /* Sample At Reset Low */ +#define ARMADAXP_MISC_SAR_HI 0x34 /* Sample At Reset High */ + +/* Multiprocessor Interrupt Controller Registers */ +#define ARMADAXP_MLMB_MPIC_BASE 0x20a00 +#define ARMADAXP_MLMB_MPIC_CPU_BASE 0x21800 +#define ARMADAXP_MLMB_MPIC_CTRL 0x0 +#define ARMADAXP_MLMB_MPIC_SOFT_INT 0x4 +#define ARMADAXP_MLMB_MPIC_ERR_CAUSE 0x20 +#define ARMADAXP_MLMB_MPIC_ISE 0x30 +#define ARMADAXP_MLMB_MPIC_ICE 0x34 +#define ARMADAXP_MLMB_MPIC_ISCR_BASE 0x100 + +#define ARMADAXP_MLMB_MPIC_DOORBELL 0x78 +#define ARMADAXP_MLMB_MPIC_DOORBELL_MASK 0x7c +#define ARMADAXP_MLMB_MPIC_CTP 0xb0 +#define ARMADAXP_MLMB_MPIC_IIACK 0xb4 +#define ARMADAXP_MLMB_MPIC_ISM 0xb8 +#define ARMADAXP_MLMB_MPIC_ICM 0xbc +#define ARMADAXP_MLMB_MPIC_ERR_MASK 0xec0 + +/* Multiprocessor Interrupt Controller Shifts */ +#define MPIC_CTP_SHIFT 28 /* Global priority level field */ +#define MPIC_ISCR_SHIFT 24 /* IRQ source priority level field */ + +/* Cache Main Control */ +#define ARMADAXP_L2_BASE 0x8000 +#define ARMADAXP_L2_CTRL 0x100 +#define ARMADAXP_L2_AUX_CTRL 0x104 +#define ARMADAXP_L2_CNTR_CTRL 0x200 +#define ARMADAXP_L2_CNTR_CONF(x) (0x204 + (x) * 0xc) +#define ARMADAXP_L2_INT_CAUSE 0x220 +#define ARMADAXP_L2_CFU 0x228 +#define ARMADAXP_L2_INV_WAY 0x778 +#define L2_ENABLE (1 << 0) +#define L2_WBWT_MODE_MASK (3 << 0) +#define L2_REP_STRAT_MASK (3 << 27) +#define L2_REP_STRAT_SEMIPLRU (3 << 27) +#define L2_ALL_WAYS 0xffffffff + +/* + * PCI-Express Interface Registers + */ +#define ARMADAXP_PEX01_BASE (MVSOC_PEX_BASE + 0x4000) +#define ARMADAXP_PEX02_BASE (MVSOC_PEX_BASE + 0x8000) +#define ARMADAXP_PEX03_BASE (MVSOC_PEX_BASE + 0xc000) +#define ARMADAXP_PEX10_BASE (UNITID2PHYS(PEX1)) +#define ARMADAXP_PEX11_BASE (ARMADAXP_PEX10_BASE + 0x4000) +#define ARMADAXP_PEX12_BASE (ARMADAXP_PEX10_BASE + 0x8000) +#define ARMADAXP_PEX13_BASE (ARMADAXP_PEX10_BASE + 0xc000) +#define ARMADAXP_PEX2_BASE (UNITID2PHYS(PEX2) + 0x2000) +#define ARMADAXP_PEX3_BASE (UNITID2PHYS(PEX3) + 0x2000) + +/* + * USB 2.0 Interface Registers + */ +#define ARMADAXP_USB_BASE (UNITID2PHYS(USB)) /* 0x50000 */ +#define ARMADAXP_USB0_BASE (ARMADAXP_USB_BASE + 0x0000) +#define ARMADAXP_USB1_BASE (ARMADAXP_USB_BASE + 0x1000) +#define ARMADAXP_USB2_BASE (ARMADAXP_USB_BASE + 0x2000) + +/* + * XOR Engine Registers + */ +#define ARMADAXP_XORE0_BASE (UNITID2PHYS(XORE0)) /* 0x60000 */ +#define ARMADAXP_XORE1_BASE (UNITID2PHYS(XORE1)) /* 0xf0000 */ + +/* + * Gigabit Ethernet Registers + */ +#define ARMADAXP_GBE0_BASE (UNITID2PHYS(GBE0)) /* 0x70000 */ +#define ARMADAXP_GBE1_BASE (ARMADAXP_GBE0_BASE + 0x4000) +#define ARMADAXP_GBE2_BASE (UNITID2PHYS(GBE2)) /* 0x30000 */ +#define ARMADAXP_GBE3_BASE (ARMADAXP_GBE2_BASE + 0x4000) + +/* + * Precise Time Protocol (PTP) Registers + */ +#define ARMADAXP_PTP_BASE (UNITID2PHYS(GBE0)) /* 0x7c000 */ + +/* + * Cryptographic Engine and Security Accelerator Registers + */ +#define ARMADAXP_CESA0_BASE (UNITID2PHYS(CRYPT) + 0xd000) /* 0x9d000 */ +#define ARMADAXP_CESA1_BASE (UNITID2PHYS(CRYPT) + 0xf000) /* 0x9f000 */ + +/* + * Serial-ATA Host Controller (SATAHC) Registers + */ +#define ARMADAXP_SATAHC_BASE (UNITID2PHYS(SATA)) /* 0xa0000 */ + +/* + * Buffer Management Controller Registers + */ +#define ARMADAXP_BMC_BASE (UNITID2PHYS(BM)) /* 0xc0000 */ + +/* + * NAND Flash Controller Version 2.0 Registers + */ +#define ARMADAXP_NAND_BASE 0xc0000 + +/* + * PnC Unit Registers + */ +#define ARMADAXP_PNC_BASE (UNITID2PHYS(PNC)) /* 0xc8000 */ + +/* + * SDIO Registers + */ +#define ARMADAXP_SDIO_BASE (UNITID2PHYS(SDIO) + 0x4000) /* 0xd4000 */ + +/* + * Liquid Crystal Display Registers + */ +#define ARMADAXP_LCD_BASE (UNITID2PHYS(LCD)) /* 0xe0000 */ + +#endif /* _ARMADAXPREG_H_ */