Home | History | Annotate | Line # | Download | only in marvell
      1 /*******************************************************************************
      2 Copyright (C) Marvell International Ltd. and its affiliates
      3 
      4 Developed by Semihalf
      5 
      6 ********************************************************************************
      7 Marvell BSD License
      8 
      9 If you received this File from Marvell, you may opt to use, redistribute and/or
     10 modify this File under the following licensing terms.
     11 Redistribution and use in source and binary forms, with or without modification,
     12 are permitted provided that the following conditions are met:
     13 
     14     *   Redistributions of source code must retain the above copyright notice,
     15             this list of conditions and the following disclaimer.
     16 
     17     *   Redistributions in binary form must reproduce the above copyright
     18         notice, this list of conditions and the following disclaimer in the
     19         documentation and/or other materials provided with the distribution.
     20 
     21     *   Neither the name of Marvell nor the names of its contributors may be
     22         used to endorse or promote products derived from this software without
     23         specific prior written permission.
     24 
     25 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     26 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     27 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     28 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
     29 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     30 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     31 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
     32 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     33 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     34 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     35 
     36 *******************************************************************************/
     37 
     38 #ifndef _ARMADAXPREG_H_
     39 #define _ARMADAXPREG_H_
     40 
     41 #include <arm/marvell/mvsocreg.h>
     42 #include <evbarm/marvell/marvellvar.h>
     43 
     44 #define ARMADAXP_UNITID_DDR		MVSOC_UNITID_DDR
     45 #define ARMADAXP_UNITID_DEVBUS		MVSOC_UNITID_DEVBUS
     46 #define ARMADAXP_UNITID_MLMB		MVSOC_UNITID_MLMB
     47 #define ARMADAXP_UNITID_PEX		MVSOC_UNITID_PEX
     48 #define ARMADAXP_UNITID_USB		0x5	/* USB registers */
     49 #define ARMADAXP_UNITID_XORE0		0x6	/* Reserved? */
     50 #define ARMADAXP_UNITID_GBE0		0x7
     51 #define ARMADAXP_UNITID_GBE1		0x7
     52 #define ARMADAXP_UNITID_GBE2		0x3
     53 #define ARMADAXP_UNITID_GBE3		0x3
     54 #define ARMADAXP_UNITID_PEX0		MVSOC_UNITID_PEX
     55 #define ARMADAXP_UNITID_PEX1		0x8
     56 #define ARMADAXP_UNITID_PEX2		MVSOC_UNITID_PEX
     57 #define ARMADAXP_UNITID_PEX3		0x8
     58 #define ARMADAXP_UNITID_CRYPT		0x9
     59 #define ARMADAXP_UNITID_SATA		0xa
     60 #define ARMADAXP_UNITID_BM		0xc
     61 #define ARMADAXP_UNITID_NAND		0xd	/* NAND registers */
     62 #define ARMADAXP_UNITID_SDIO		0xd	/* SDIO registers */
     63 #define ARMADAXP_UNITID_LCD		0xe
     64 #define ARMADAXP_UNITID_XORE1		0xf
     65 
     66 /* DDR Attributes */
     67 #define ARMADAXP_ATTR_DDR_CS0		0x0e
     68 #define ARMADAXP_ATTR_DDR_CS1		0x0d
     69 #define ARMADAXP_ATTR_DDR_CS2		0x0b
     70 #define ARMADAXP_ATTR_DDR_CS3		0x07
     71 
     72 /* DEVBUS Attributes */
     73 #define ARMADAXP_ATTR_DEVBUS_UART	0x01
     74 #define ARMADAXP_ATTR_DEVBUS_SPI0_CS0	0x1e
     75 #define ARMADAXP_ATTR_DEVBUS_SPI0_CS1	0x5e
     76 #define ARMADAXP_ATTR_DEVBUS_SPI0_CS2	0x9e
     77 #define ARMADAXP_ATTR_DEVBUS_SPI0_CS3	0xde
     78 #define ARMADAXP_ATTR_DEVBUS_SPI0_CS4	0x1f
     79 #define ARMADAXP_ATTR_DEVBUS_SPI0_CS5	0x5f
     80 #define ARMADAXP_ATTR_DEVBUS_SPI0_CS6	0x9f
     81 #define ARMADAXP_ATTR_DEVBUS_SPI0_CS7	0xdf
     82 #define ARMADAXP_ATTR_DEVBUS_SPI1_CS0	0x1a
     83 #define ARMADAXP_ATTR_DEVBUS_SPI1_CS1	0x5a
     84 #define ARMADAXP_ATTR_DEVBUS_SPI1_CS2	0x9a
     85 #define ARMADAXP_ATTR_DEVBUS_SPI1_CS3	0xda
     86 #define ARMADAXP_ATTR_DEVBUS_SPI1_CS4	0x1b
     87 #define ARMADAXP_ATTR_DEVBUS_SPI1_CS5	0x5b
     88 #define ARMADAXP_ATTR_DEVBUS_SPI1_CS6	0x9b
     89 #define ARMADAXP_ATTR_DEVBUS_SPI1_CS7	0xdb
     90 #define ARMADAXP_ATTR_DEVBUS_DEV_CS0	0x3e
     91 #define ARMADAXP_ATTR_DEVBUS_DEV_CS1	0x3d
     92 #define ARMADAXP_ATTR_DEVBUS_DEV_CS2	0x3b
     93 #define ARMADAXP_ATTR_DEVBUS_DEV_CS3	0x37
     94 #define ARMADAXP_ATTR_DEVBUS_BOOT_CS	0x2f
     95 #define ARMADAXP_ATTR_DEVBUS_BOOT_ROM	0x1d
     96 
     97 /* NAND Attributes */
     98 #define ARMADAXP_ATTR_NAND_RESERVED	0x20
     99 
    100 /* PCIe Attributes */
    101 /* port 0 has 4 lanes. port 1 has either 4 or 1 lanes. */
    102 #define ARMADAXP_ATTR_PEXx0_MEM		0xe8
    103 #define ARMADAXP_ATTR_PEXx0_IO		0xe0
    104 #define ARMADAXP_ATTR_PEXx1_MEM		0xd8
    105 #define ARMADAXP_ATTR_PEXx1_IO		0xd0
    106 #define ARMADAXP_ATTR_PEXx2_MEM		0xb8
    107 #define ARMADAXP_ATTR_PEXx2_IO		0xb0
    108 #define ARMADAXP_ATTR_PEXx3_MEM		0x78
    109 #define ARMADAXP_ATTR_PEXx3_IO		0x70
    110 /* port 2, 3 has only 1 lane */
    111 #define ARMADAXP_ATTR_PEX2_MEM		0xf8
    112 #define ARMADAXP_ATTR_PEX2_IO		0xf0
    113 #define ARMADAXP_ATTR_PEX3_MEM		0xf8
    114 #define ARMADAXP_ATTR_PEX3_IO		0xf0
    115 
    116 /* GbE Attributes */
    117 #define ARMADAXP_ATTR_GBE_RESERVED	0x00
    118 
    119 /* BM Attributes */
    120 #define ARMADAXP_ATTR_BM_RESERVED	0x00
    121 
    122 /* CRYPT Attributes */
    123 #define ARMADAXP_ATTR_CRYPT_SWAP_MASK	__BITS(1,0)
    124 #define ARMADAXP_ATTR_CRYPT_SWAP_B	(0x0 << 0)
    125 #define ARMADAXP_ATTR_CRYPT_SWAP_NONE	(0x1 << 0)
    126 #define ARMADAXP_ATTR_CRYPT_SWAP_BW	(0x2 << 0)
    127 #define ARMADAXP_ATTR_CRYPT_SWAP_W	(0x3 << 0)
    128 #define ARMADAXP_ATTR_CRYPT_UNIT_MASK	__BITS(3,2)
    129 #define ARMADAXP_ATTR_CRYPT_UNIT0	(0x1 << 2)
    130 #define ARMADAXP_ATTR_CRYPT_UNIT1	(0x2 << 2)
    131 
    132 #define ARMADAXP_ATTR_CRYPT0_NOSWAP \
    133     (ARMADAXP_ATTR_CRYPT_SWAP_NONE|ARMADAXP_ATTR_CRYPT_UNIT0)
    134 #define ARMADAXP_ATTR_CRYPT0_SWAP_BYTE \
    135     (ARMADAXP_ATTR_CRYPT_SWAP_B|ARMADAXP_ATTR_CRYPT_UNIT0)
    136 #define ARMADAXP_ATTR_CRYPT0_SWAP_BYTE_WORD \
    137     (ARMADAXP_ATTR_CRYPT_SWAP_BW|ARMADAXP_ATTR_CRYPT_UNIT0)
    138 #define ARMADAXP_ATTR_CRYPT0_SWAP_WORD \
    139     (ARMADAXP_ATTR_CRYPT_SWAP_W|ARMADAXP_ATTR_CRYPT_UNIT0)
    140 
    141 #define ARMADAXP_ATTR_CRYPT1_NOSWAP \
    142     (ARMADAXP_ATTR_CRYPT_SWAP_NONE|ARMADAXP_ATTR_CRYPT_UNIT1)
    143 #define ARMADAXP_ATTR_CRYPT1_SWAP_BYTE \
    144     (ARMADAXP_ATTR_CRYPT_SWAP_B|ARMADAXP_ATTR_CRYPT_UNIT1)
    145 #define ARMADAXP_ATTR_CRYPT1_SWAP_BYTE_WORD \
    146     (ARMADAXP_ATTR_CRYPT_SWAP_BW|ARMADAXP_ATTR_CRYPT_UNIT1)
    147 #define ARMADAXP_ATTR_CRYPT1_SWAP_WORD \
    148     (ARMADAXP_ATTR_CRYPT_SWAP_W|ARMADAXP_ATTR_CRYPT_UNIT1)
    149 
    150 
    151 #define ARMADAXP_IRQ_ERR_SUMMARY	4
    152 
    153 #define ARMADAXP_IRQ_GBE0_TH_RXTX	8	/* GBE0_TH_RXTX_Int */
    154 #define ARMADAXP_IRQ_GBE1_TH_RXTX	10	/* GBE1_TH_RXTX_Int */
    155 #define ARMADAXP_IRQ_GBE2_TH_RXTX	12	/* GBE2_TH_RXTX_Int */
    156 #define ARMADAXP_IRQ_GBE3_TH_RXTX	14	/* GBE3_TH_RXTX_Int */
    157 
    158 #define ARMADAXP_IRQ_LCD		29
    159 #define ARMADAXP_IRQ_SPI		30
    160 #define ARMADAXP_IRQ_TWSI0		31
    161 #define ARMADAXP_IRQ_TWSI1		32
    162 #define ARMADAXP_IRQ_IDMA0		33	/* IDMA Channel 0 */
    163 #define ARMADAXP_IRQ_IDMA1		34	/* IDMA Channel 1 */
    164 #define ARMADAXP_IRQ_IDMA2		35	/* IDMA Channel 2 */
    165 #define ARMADAXP_IRQ_IDMA3		36	/* IDMA Channel 3 */
    166 #define ARMADAXP_IRQ_TIMER0		37
    167 #define ARMADAXP_IRQ_TIMER1		38
    168 #define ARMADAXP_IRQ_TIMER2		39
    169 #define ARMADAXP_IRQ_TIMER3		40
    170 #define ARMADAXP_IRQ_UART0		41
    171 #define ARMADAXP_IRQ_UART1		42
    172 #define ARMADAXP_IRQ_UART2		43
    173 #define ARMADAXP_IRQ_UART3		44
    174 #if 0
    175 #define ARMADAXP_IRQ_USB0		45
    176 #define ARMADAXP_IRQ_USB1		46
    177 #define ARMADAXP_IRQ_USB2		47
    178 #else
    179 /*
    180  * According to functional specification (MV-S107021-00B.pdf), interrupt number
    181  * for USB0_int is 47, in fact this number is 45. Because of that interrupt
    182  * number definitions are not equivalent to ArmadaXP functional specification
    183  * (MV-S107021-00B.pdf).
    184  */
    185 #define ARMADAXP_IRQ_USB0		45	/* USB2 */
    186 #define ARMADAXP_IRQ_USB1		46	/* USB1 */
    187 #define ARMADAXP_IRQ_USB2		47	/* USB0 */
    188 #endif
    189 #define ARMADAXP_IRQ_CESA0		48
    190 #define ARMADAXP_IRQ_CESA1		49
    191 #define ARMADAXP_IRQ_RTC		50
    192 #define ARMADAXP_IRQ_XOR0CH0		51	/* XOR0 Ch0 */
    193 #define ARMADAXP_IRQ_XOR0CH1		52	/* XOR0 Ch1 */
    194 #define ARMADAXP_IRQ_BM			53	/* Buffer Management */
    195 #define ARMADAXP_IRQ_SDIO		54
    196 #define ARMADAXP_IRQ_SATA0		55
    197 #define ARMADAXP_IRQ_TDM		56
    198 #define ARMADAXP_IRQ_SATA1		57
    199 #define ARMADAXP_IRQ_PEX00		58	/* PCIe Port0.0 INTA/B/C/D */
    200 #define ARMADAXP_IRQ_PEX01		59	/* PCIe Port0.1 INTA/B/C/D */
    201 #define ARMADAXP_IRQ_PEX02		60	/* PCIe Port0.2 INTA/B/C/D */
    202 #define ARMADAXP_IRQ_PEX03		61	/* PCIe Port0.3 INTA/B/C/D */
    203 #define ARMADAXP_IRQ_PEX10		62	/* PCIe Port1.0 INTA/B/C/D */
    204 #define ARMADAXP_IRQ_PEX11		63	/* PCIe Port1.1 INTA/B/C/D */
    205 #define ARMADAXP_IRQ_PEX12		64	/* PCIe Port1.2 INTA/B/C/D */
    206 #define ARMADAXP_IRQ_PEX13		65	/* PCIe Port1.3 INTA/B/C/D */
    207 #define ARMADAXP_IRQ_GBE0_SUM		66
    208 #define ARMADAXP_IRQ_XOR1CH2		94	/* XOR1 Ch2 */
    209 #define ARMADAXP_IRQ_XOR1CH3		95	/* XOR1 Ch3 */
    210 #define ARMADAXP_IRQ_PEX2		99	/* PCIe Port2 INTA/B/C/D */
    211 #define ARMADAXP_IRQ_PEX3		103	/* PCIe Port3 INTA/B/C/D */
    212 #define ARMADAXP_IRQ_PMU		107	/* Power Management Unit */
    213 
    214 #define ARMADAXP_IRQ_SOURCES		116
    215 
    216 /*
    217  * IRQ mappings for Error Interrupt Cause(ARMADAXP_MLMB_MPIC_ERR_CAUSE)
    218  */
    219 #define ARMADAXP_IRQ_ERROR_BASE		120
    220 #define ARMADAXP_IRQ_ERROR_SOURCES	32
    221 #define ARMADAXP_IRQ_ERROR(x)		(120 + (x))
    222 #define ARMADAXP_IRQ_ERROR_BIT(irq)	(1 << irq)
    223 
    224 #define ARMADAXP_IRQ_CESA0_ERR		ARMADAXP_IRQ_ERROR(0)
    225 #define ARMADAXP_IRQ_DEVBUS_ERR		ARMADAXP_IRQ_ERROR(1)
    226 #define ARMADAXP_IRQ_IDMA_ERR		ARMADAXP_IRQ_ERROR(2)
    227 #define ARMADAXP_IRQ_XOR1_ERR		ARMADAXP_IRQ_ERROR(3)
    228 #define ARMADAXP_IRQ_PEX0_ERR		ARMADAXP_IRQ_ERROR(4)
    229 #define ARMADAXP_IRQ_PEX1_ERR		ARMADAXP_IRQ_ERROR(5)
    230 #define ARMADAXP_IRQ_GBE_ERR		ARMADAXP_IRQ_ERROR(6)
    231 #define ARMADAXP_IRQ_CESA1_ERR		ARMADAXP_IRQ_ERROR(7)
    232 #define ARMADAXP_IRQ_USB_ERR		ARMADAXP_IRQ_ERROR(8)
    233 #define ARMADAXP_IRQ_DRAM_ERR		ARMADAXP_IRQ_ERROR(9)
    234 #define ARMADAXP_IRQ_XOR0_ERR		ARMADAXP_IRQ_ERROR(10)
    235 #define ARMADAXP_IRQ_BM_ERR		ARMADAXP_IRQ_ERROR(12)
    236 #define ARMADAXP_IRQ_CIB_ERR		ARMADAXP_IRQ_ERROR(13)
    237 #define ARMADAXP_IRQ_PEX2_ERR		ARMADAXP_IRQ_ERROR(15)
    238 #define ARMADAXP_IRQ_PEX3_ERR		ARMADAXP_IRQ_ERROR(16)
    239 #define ARMADAXP_IRQ_SATA0_ERR		ARMADAXP_IRQ_ERROR(17)
    240 #define ARMADAXP_IRQ_SATA1_ERR		ARMADAXP_IRQ_ERROR(18)
    241 #define ARMADAXP_IRQ_TDM_ERR		ARMADAXP_IRQ_ERROR(20)
    242 #define ARMADAXP_IRQ_NAND_ERR		ARMADAXP_IRQ_ERROR(21)
    243 
    244 #define ARMADAXP_MLMB_NWINDOW		20
    245 #define ARMADAXP_MLMB_NREMAP		8
    246 
    247 /*
    248  * Physical address of integrated peripherals
    249  */
    250 
    251 #undef UNITID2PHYS
    252 #define UNITID2PHYS(uid)	((ARMADAXP_UNITID_ ## uid) << 16)
    253 
    254 /*
    255  * Real-Time Clock Unit Registers
    256  */
    257 #define ARMADAXP_RTC_BASE	(MVSOC_DEVBUS_BASE + 0x0300)
    258 
    259 /*
    260  * SPI Interface Registers
    261  */
    262 #define ARMADAXP_SPI_BASE	(MVSOC_DEVBUS_BASE + 0x0600)
    263 
    264 /*
    265  * TWSI Interface Registers
    266  */
    267 #define ARMADAXP_TWSI1_BASE	(MVSOC_DEVBUS_BASE + 0x1100)
    268 
    269 /*
    270  * UART Interface Registers
    271  */				/* NS16550 compatible */
    272 #define ARMADAXP_COM2_BASE	(MVSOC_DEVBUS_BASE + 0x2200)
    273 #define ARMADAXP_COM3_BASE	(MVSOC_DEVBUS_BASE + 0x2300)
    274 
    275 /*
    276  * General Purpose Input/Output Port Registers
    277  */
    278 #define ARMADAXP_GPIO0_BASE	(MVSOC_DEVBUS_BASE + 0x8100)
    279 #define ARMADAXP_GPIO1_BASE	(MVSOC_DEVBUS_BASE + 0x8120)
    280 #define ARMADAXP_GPIO2_BASE	(MVSOC_DEVBUS_BASE + 0x8140)
    281 
    282 /*
    283  * Miscellaneous Register
    284  */
    285 #define	ARMADAXP_MISC_BASE	(MVSOC_DEVBUS_BASE + 0x8200)
    286 
    287 #define	ARMADAXP_MISC_PMCGC		0x20	/* PM Clock Gating Control */
    288 #define	ARMADAXP_MISC_SAR_LO		0x30	/* Sample At Reset Low */
    289 #define	ARMADAXP_MISC_SAR_HI		0x34	/* Sample At Reset High */
    290 #define	ARMADAXP_MISC_RSTOUTNMASKR	0x60	/* RSTOUTn Mask Register */
    291 #define	ARMADAXP_MISC_RSTOUTNMASKR_GLOBALSOFTRSTOUTEN (1 << 0)
    292 #define	ARMADAXP_MISC_SSRR		0x64	/* System Soft Reset Register */
    293 #define	ARMADAXP_MISC_SSRR_GLOBALSOFTRST	(1 << 0)
    294 
    295 /*
    296  * Thermal Sensor and Thermal Management
    297  */
    298 #define ARMADAXP_TS_BASE	(MVSOC_DEVBUS_BASE + 0x82b0)
    299 #define ARMADAXP_TM_BASE	(MVSOC_DEVBUS_BASE + 0x84c0)
    300 #define ARMADA370_TM_BASE	(MVSOC_DEVBUS_BASE + 0x8300)
    301 
    302 /* Multiprocessor Interrupt Controller Registers */
    303 #define ARMADAXP_MLMB_CFUCONFIG		  0x228
    304 #define ARMADAXP_MLMB_CFUCONFIG_POUTOSL2	(1 << 18)
    305 #define ARMADAXP_MLMB_CFUCONFIG_POCTOSL2	(1 << 18)
    306 
    307 #define	ARMADAXP_MLMB_MPIC_BASE			0x20a00
    308 #define	ARMADAXP_MLMB_MPIC_CPU_BASE		0x21800
    309 #define	ARMADAXP_MLMB_MPIC_CTRL			0x0
    310 #define	ARMADAXP_MLMB_MPIC_SOFT_INT		0x4
    311 #define	ARMADAXP_MLMB_MPIC_ERR_CAUSE		0x20
    312 #define	ARMADAXP_MLMB_MPIC_ISE			0x30
    313 #define	ARMADAXP_MLMB_MPIC_ICE			0x34
    314 #define	ARMADAXP_MLMB_MPIC_ISCR_BASE		0x100
    315 
    316 #define	ARMADAXP_MLMB_MPIC_DOORBELL		0x78
    317 #define	ARMADAXP_MLMB_MPIC_DOORBELL_MASK	0x7c
    318 #define	ARMADAXP_MLMB_MPIC_CTP			0xb0
    319 #define	ARMADAXP_MLMB_MPIC_IIACK		0xb4
    320 #define	ARMADAXP_MLMB_MPIC_ISM			0xb8
    321 #define	ARMADAXP_MLMB_MPIC_ICM			0xbc
    322 #define	ARMADAXP_MLMB_MPIC_ERR_MASK		0xc0
    323 
    324 /* Multiprocessor Interrupt Controller Shifts */
    325 #define	MPIC_CTP_SHIFT			28 /* Global priority level field */
    326 #define	MPIC_ISCR_SHIFT			24 /* IRQ source priority level field */
    327 
    328 /* Cache Main Control */
    329 #define ARMADAXP_L2_BASE		0x8000
    330 #define ARMADAXP_L2_CTRL		0x100
    331 #define ARMADAXP_L2_AUX_CTRL		0x104
    332 #define ARMADAXP_L2_CNTR_CTRL		0x200
    333 #define ARMADAXP_L2_CNTR_CONF(x)	(0x204 + (x) * 0xc)
    334 #define ARMADAXP_L2_INT_CAUSE		0x220
    335 #define ARMADAXP_L2_CFU			0x228
    336 #define ARMADAXP_L2_SYNC		0x700
    337 #define ARMADAXP_L2_STATUS		0x704
    338 /* Cache maintenance operations */
    339 #define ARMADAXP_L2_RANGE_BASE		0x720
    340 #define ARMADAXP_L2_INV_PHYS		0x770
    341 #define ARMADAXP_L2_INV_RANGE		0x774
    342 #define ARMADAXP_L2_INV_IDXWAY		0x778
    343 #define ARMADAXP_L2_INV_WAY		0x77c
    344 #define ARMADAXP_L2_BLOCK		0x78c
    345 #define ARMADAXP_L2_WB_PHYS		0x7b0
    346 #define ARMADAXP_L2_WB_RANGE		0x7b4
    347 #define ARMADAXP_L2_WB_IDXWAY		0x7b8
    348 #define ARMADAXP_L2_WB_WAY		0x7bc
    349 #define ARMADAXP_L2_WBINV_PHYS		0x7f0
    350 #define ARMADAXP_L2_WBINV_RANGE		0x7f4
    351 #define ARMADAXP_L2_WBINV_IDXWAY	0x7f8
    352 #define ARMADAXP_L2_WBINV_WAY		0x7fc
    353 
    354 /* Cache line size */
    355 #define ARMADAXP_L2_SIZE		(256 * 1024) /* bytes */
    356 #define ARMADAXP_L2_LINE_SIZE		32
    357 #define ARMADAXP_L2_ALIGN		(ARMADAXP_L2_LINE_SIZE - 1)
    358 #define ARMADAXP_L2_WAYS		4
    359 #define ARMADAXP_L2_WAY_SIZE		(ARMADAXP_L2_SIZE / ARMADAXP_L2_WAYS)
    360 #define ARMADAXP_L2_SETS \
    361     (ARMADAXP_L2_WAY_SIZE / ARMADAXP_L2_LINE_SIZE)
    362 
    363 /* ARMADAXP_L2_CTRL */
    364 #define L2_CTRL_ENABLE			(1 << 0)
    365 
    366 /* ARMADAXP_L2_AUX_CTRL */
    367 #define L2_AUX_WBWT_MODE_MASK		__BITS(1,0)
    368 #define L2_AUX_WBWT_MODE_BY_ATTR	(0 << 0)
    369 #define L2_AUX_WBWT_MODE_WB		(1 << 0)
    370 #define L2_AUX_WBWT_MODE_WT		(2 << 0)
    371 #define L2_AUX_FLUSH_ON_POWERDOWN	__BIT(3)
    372 #define L2_AUX_ECC_ENABLE		__BIT(20)
    373 #define L2_AUX_PARITY_ENABLE		__BIT(21)
    374 #define L2_AUX_INVAL_UCE		__BIT(22)
    375 #define L2_AUX_FORCE_WA_MASK		__BITS(24,23)
    376 #define L2_AUX_FORCE_WA_BY_ATTR		(0 << 23)
    377 #define L2_AUX_FORCE_WA_DISABLE		(1 << 23)
    378 #define L2_AUX_FORCE_WA_ENABLE		(2 << 23)
    379 #define L2_AUX_FORCE_WA_ENABLE_DT	(3 << 23)
    380 #define L2_AUX_REP_STRAT_MASK		(3 << 27)
    381 #define L2_AUX_REP_STRAT_LFSR		(1 << 27)
    382 #define L2_AUX_REP_STRAT_PLRU		(2 << 27)
    383 #define L2_AUX_REP_STRAT_SEMIPLRU	(3 << 27)
    384 #define L2_AUX_L2_SIZE_MASK		(0x03 << 10)
    385 #define L2_AUX_L2_SIZE_256K		(0x00 << 10)
    386 #define L2_AUX_L2_ASSOC_MASK		(0x0f << 13)
    387 #define L2_AUX_L2_ASSOC_4WAY		(0x03 << 13)
    388 #define L2_AUX_L2_WAY_MASK		(0x07 << 17)
    389 #define L2_AUX_L2_WAY_16K		(0x02 << 17)
    390 #define L2_AUX_L2_WAY_32K		(0x03 << 17)
    391 #define L2_AUX_L2_WAY_64K		(0x04 << 17)
    392 #define L2_AUX_L2_WAY_128K		(0x05 << 17)
    393 #define L2_AUX_L2_WAY_256K		(0x06 << 17)
    394 #define L2_AUX_L2_WAY_512K		(0x07 << 17)
    395 
    396 #define L2_ALL_WAYS			0xffffffff
    397 
    398 /*
    399  * PCI-Express Interface Registers
    400  */
    401 #define ARMADAXP_PEX01_BASE	(MVSOC_PEX_BASE + 0x4000)
    402 #define ARMADAXP_PEX02_BASE	(MVSOC_PEX_BASE + 0x8000)
    403 #define ARMADAXP_PEX03_BASE	(MVSOC_PEX_BASE + 0xc000)
    404 #define ARMADAXP_PEX10_BASE	(UNITID2PHYS(PEX1))
    405 #define ARMADAXP_PEX11_BASE	(ARMADAXP_PEX10_BASE + 0x4000)
    406 #define ARMADAXP_PEX12_BASE	(ARMADAXP_PEX10_BASE + 0x8000)
    407 #define ARMADAXP_PEX13_BASE	(ARMADAXP_PEX10_BASE + 0xc000)
    408 #define ARMADAXP_PEX2_BASE	(UNITID2PHYS(PEX2) + 0x2000)
    409 #define ARMADAXP_PEX3_BASE	(UNITID2PHYS(PEX3) + 0x2000)
    410 
    411 /*
    412  * USB 2.0 Interface Registers
    413  */
    414 #define ARMADAXP_USB_BASE	(UNITID2PHYS(USB))	/* 0x50000 */
    415 #define ARMADAXP_USB0_BASE	(ARMADAXP_USB_BASE + 0x0000)
    416 #define ARMADAXP_USB1_BASE	(ARMADAXP_USB_BASE + 0x1000)
    417 #define ARMADAXP_USB2_BASE	(ARMADAXP_USB_BASE + 0x2000)
    418 
    419 /*
    420  * XOR Engine Registers
    421  */
    422 #define ARMADAXP_XORE0_BASE	(UNITID2PHYS(XORE0))	/* 0x60000 */
    423 #define ARMADAXP_XORE1_BASE	(UNITID2PHYS(XORE1))	/* 0xf0000 */
    424 
    425 /*
    426  * Gigabit Ethernet Registers
    427  */
    428 #define ARMADAXP_GBE0_BASE	(UNITID2PHYS(GBE0))	/* 0x70000 */
    429 #define ARMADAXP_GBE1_BASE	(ARMADAXP_GBE0_BASE + 0x4000)
    430 #define ARMADAXP_GBE2_BASE	(UNITID2PHYS(GBE2))	/* 0x30000 */
    431 #define ARMADAXP_GBE3_BASE	(ARMADAXP_GBE2_BASE + 0x4000)
    432 
    433 /*
    434  * Precise Time Protocol (PTP) Registers
    435  */
    436 #define ARMADAXP_PTP_BASE	(UNITID2PHYS(GBE0))	/* 0x7c000 */
    437 
    438 /*
    439  * Cryptographic Engine and Security Accelerator Registers
    440  */
    441 #define ARMADAXP_CESA0_BASE	(UNITID2PHYS(CRYPT) + 0xd000)	/* 0x9d000 */
    442 #define ARMADAXP_CESA1_BASE	(UNITID2PHYS(CRYPT) + 0xf000)	/* 0x9f000 */
    443 
    444 #define ARMADAXP_XPSEC0_BASE	(UNITID2PHYS(CRYPT) + 0x0000)	/* 0x90000 */
    445 #define ARMADAXP_XPSEC1_BASE	(UNITID2PHYS(CRYPT) + 0x2000)	/* 0x92000 */
    446 
    447 /*
    448  * Serial-ATA Host Controller (SATAHC) Registers
    449  */
    450 #define ARMADAXP_SATAHC_BASE	(UNITID2PHYS(SATA))	/* 0xa0000 */
    451 
    452 /*
    453  * Buffer Management Controller Registers
    454  */
    455 #define ARMADAXP_BMC_BASE	(UNITID2PHYS(BM))	/* 0xc0000 */
    456 
    457 /*
    458  * NAND Flash Controller Version 2.0 Registers
    459  */
    460 #define ARMADAXP_NAND_BASE	(UINTID2PHYS(NAND))
    461 
    462 /*
    463  * PnC Unit Registers
    464  */
    465 #define ARMADAXP_PNC_BASE	(UNITID2PHYS(PNC))	/* 0xc8000 */
    466 
    467 /*
    468  * SDIO Registers
    469  */
    470 #define ARMADAXP_SDIO_BASE	(UNITID2PHYS(SDIO) + 0x4000)	/* 0xd4000 */
    471 
    472 /*
    473  * Liquid Crystal Display Registers
    474  */
    475 #define ARMADAXP_LCD_BASE	(UNITID2PHYS(LCD))	/* 0xe0000 */
    476 
    477 #endif /* _ARMADAXPREG_H_ */
    478