Home | History | Annotate | Line # | Download | only in marvell
      1 /*	$NetBSD: dovereg.h,v 1.2 2022/10/31 20:30:22 andvar Exp $	*/
      2 /*
      3  * Copyright (c) 2016 KIYOHARA Takashi
      4  * All rights reserved.
      5  *
      6  * Redistribution and use in source and binary forms, with or without
      7  * modification, are permitted provided that the following conditions
      8  * are met:
      9  * 1. Redistributions of source code must retain the above copyright
     10  *    notice, this list of conditions and the following disclaimer.
     11  * 2. Redistributions in binary form must reproduce the above copyright
     12  *    notice, this list of conditions and the following disclaimer in the
     13  *    documentation and/or other materials provided with the distribution.
     14  *
     15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     18  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
     19  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     21  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     23  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
     24  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25  * POSSIBILITY OF SUCH DAMAGE.
     26  */
     27 
     28 #ifndef _DOVEREG_H_
     29 #define _DOVEREG_H_
     30 
     31 #include <arm/marvell/mvsocreg.h>
     32 
     33 #define DOVE_UNITID_DDR			MVSOC_UNITID_DDR
     34 #define DOVE_UNITID_DEVBUS		MVSOC_UNITID_DEVBUS
     35 #define DOVE_UNITID_DB			0x2	/* Downstream Bridge reg */
     36 #define DOVE_UNITID_SA			0x3	/* Security Accelerator reg */
     37 #define DOVE_UNITID_PEX			MVSOC_UNITID_PEX
     38 #define DOVE_UNITID_USB			0x5
     39 #define DOVE_UNITID_XOR			0x6
     40 #define DOVE_UNITID_GBE			0x7
     41 #define DOVE_UNITID_PEX1		0x8
     42 #define DOVE_UNITID_SDIO		0x9
     43 #define DOVE_UNITID_SATA		0xa
     44 #define DOVE_UNITID_I2S			0xb
     45 #define DOVE_UNITID_NAND		0xc
     46 #define DOVE_UNITID_PMU			0xd
     47 #define DOVE_UNITID_AC97		0xe
     48 
     49 #define DOVE_ATTR_PEX_MEM		0xe8
     50 #define DOVE_ATTR_PEX_IO		0xe0
     51 #define DOVE_ATTR_SA			0x00
     52 #define DOVE_ATTR_SPI0			0xfe
     53 #define DOVE_ATTR_SPI1			0xfb
     54 #define DOVE_ATTR_BOOTROM		0xfd
     55 #define DOVE_ATTR_NAND			0x00
     56 #define DOVE_ATTR_PMU			0x00
     57 
     58 #define DOVE_IRQ_BRIDGE			0	/* Downstream Bridge intr */
     59 #define DOVE_IRQ_H2CPUDB		1	/* Doorbell Interrupt */
     60 #define DOVE_IRQ_CPU2HDB		2	/* Doorbell Interrupt */
     61 #define DOVE_IRQ_NF			3	/* NandFlash Interrupt */
     62 #define DOVE_IRQ_PDMA			4	/* Peripheral DMA Interrupt */
     63 #define DOVE_IRQ_SPI1			5	/* SPI1 Ready Interrupt */
     64 #define DOVE_IRQ_SPI0			6	/* SPI9 Ready Interrupt */
     65 #define DOVE_IRQ_UART0			7	/* UART0 Interrupt */
     66 #define DOVE_IRQ_UART1			8	/* UART1 Interrupt */
     67 #define DOVE_IRQ_UART2			9	/* UART2 Interrupt */
     68 #define DOVE_IRQ_UART3			10	/* UART3 Interrupt */
     69 #define DOVE_IRQ_TWSI			11	/* TWSI Interrupt */
     70 #define DOVE_IRQ_GPIO7_0		12	/* GPIO[7:0] Interrupt */
     71 #define DOVE_IRQ_GPIO15_8		13	/* GPIO[15:8] Interrupt */
     72 #define DOVE_IRQ_GPIO23_16		14	/* GPIO[23:16] Interrupt */
     73 #define DOVE_IRQ_PEX0_ERR		15	/* PCI Express0 Error */
     74 #define DOVE_IRQ_PEX0_INT		16	/*PCI Express0 INT [A-D] mesg*/
     75 #define DOVE_IRQ_PEX1_ERR		17	/* PCI Express1 Error */
     76 #define DOVE_IRQ_PEX1_INT		18	/*PCI Express1 INT [A-D] mesg*/
     77 #define DOVE_IRQ_AUDIO0_INT		19	/* Audio0 Interrupt */
     78 #define DOVE_IRQ_AUDIO0_ERR		20	/* Audio0 Error */
     79 #define DOVE_IRQ_AUDIO1_INT		21	/* Audio1 Interrupt */
     80 #define DOVE_IRQ_AUDIO1_ERR		22	/* Audio1 Error */
     81 #define DOVE_IRQ_USBBR			23	/* USB Bridge Error */
     82 #define DOVE_IRQ_USB0CNT		24	/* USB0 Controller Interrupt */
     83 #define DOVE_IRQ_USB1CNT		25	/* USB1 Controller Interrupt */
     84 #define DOVE_IRQ_GBERX			26	/* GbE Receive Interrupt */
     85 #define DOVE_IRQ_GBETX			27	/* GbE Transmit Interrupt */
     86 #define DOVE_IRQ_GBEMISC		28	/* GbE Miscellaneous intr */
     87 #define DOVE_IRQ_GBESUM			29	/* GbE Summary */
     88 #define DOVE_IRQ_GBEERR			30	/* GbE Error */
     89 #define DOVE_IRQ_SECURITYINT		31	/* Security Interrupt */
     90 #define DOVE_IRQ_AC97			32	/* AC97 Interrupt */
     91 #define DOVE_IRQ_PMU			33	/* Power Management Unit intr */
     92 #define DOVE_IRQ_CAM			34	/* Cafe Camera Interrupt */
     93 #define DOVE_IRQ_SD0			35	/* SD0 IRQ Interrupt */
     94 #define DOVE_IRQ_SD1			36	/* SD1 IRQ Interrupt */
     95 #define DOVE_IRQ_XOR0_DMA0		39	/* XOR Unit DMA0 Completion */
     96 #define DOVE_IRQ_XOR0_DMA1		40	/* XOR Unit DMA1 Completion */
     97 #define DOVE_IRQ_XOR0ERR		41	/* XOR Unit Error Interrupt */
     98 #define DOVE_IRQ_XOR1_DMA0		42	/* XOR Unit DMA0 Completion */
     99 #define DOVE_IRQ_XOR1_DMA1		43	/* XOR Unit DMA1 Completion */
    100 #define DOVE_IRQ_XOR1ERR		44	/* XOR Unit Error Interrupt */
    101 #define DOVE_IRQ_IRE_DCON		45	/* IRE OR DCON Interrupt */
    102 #define DOVE_IRQ_LCD1			46	/* LCD1 Interrupt */
    103 #define DOVE_IRQ_LCD0			47	/* LCD0 Interrupt */
    104 #define DOVE_IRQ_GPU			48	/* GPU Interrupt */
    105 #define DOVE_IRQ_VMETA			51     /*Video dec Unit Semaphore intr*/
    106 #define DOVE_IRQ_SSPTIMER		54	/* SSP Timer Interrupt */
    107 #define DOVE_IRQ_SSPINT			55	/* SSP Interrupt */
    108 #define DOVE_IRQ_MEMORYERR		56	/*mem Controller or L2 ECC err*/
    109 #define DOVE_IRQ_DWNSTRMEXCLTM		57
    110 #define DOVE_IRQ_UPSTRMADDERR		58
    111 #define DOVE_IRQ_SECURITYERR		59	/* Security Error */
    112 #define DOVE_IRQ_GPIO_31_24		60	/* Interrupt from GPIO[31:24] */
    113 #define DOVE_IRQ_HIGHGPIO		61	/* intr from High GPIO[31:0] */
    114 #define DOVE_IRQ_SATAINT		62	/* SATA Interrupt */
    115 
    116 
    117 /*
    118  * Physical address of integrated peripherals
    119  */
    120 
    121 #define DOVE_UNITID2PHYS(uid)		((DOVE_UNITID_ ## uid) << 16)
    122 
    123 /*
    124  * SPI Registers
    125  */
    126 #define DOVE_SPI0_BASE		(MVSOC_DEVBUS_BASE + 0x0600)	/* 0x10600 */
    127 #define DOVE_SPI1_BASE		(MVSOC_DEVBUS_BASE + 0x4600)	/* 0x14600 */
    128 
    129 /*
    130  * UART Interface Registers
    131  */
    132 				/* NS16550 compatible */
    133 #define DOVE_COM2_BASE		(MVSOC_DEVBUS_BASE + 0x2200)
    134 #define DOVE_COM3_BASE		(MVSOC_DEVBUS_BASE + 0x2300)
    135 
    136 /*
    137  * Downstream Bridge Registers
    138  */
    139 #define DOVE_DB_BASE		(DOVE_UNITID2PHYS(DB))
    140 
    141 /* CPU Address Map Registers */
    142 #define DOVE_DB_NWINDOW			8
    143 #define DOVE_DB_NREMAP			4
    144 
    145 /* Main Interrupt Controller Registers */
    146 #define DOVE_DB_MICR			  0x200 /* Main Interrupt Cause reg */
    147 #define DOVE_DB_MIRQIMR			  0x204 /* Main IRQ Interrupt Mask */
    148 #define DOVE_DB_MFIQIMR			  0x208 /* Main FIQ Interrupt Mask */
    149 #define DOVE_DB_EIMR			  0x20c /* Endpoint Interrupt Mask */
    150 #define DOVE_DB_SMICR			  0x210 /* Second Main Intr Cause reg */
    151 #define DOVE_DB_SMIRQIMR		  0x214 /* Second Main IRQ intr Mask */
    152 #define DOVE_DB_SMFIQIMR		  0x218 /* Second Main FIQ intr Mask */
    153 #define DOVE_DB_SEIMR			  0x21c /* Second Endpoint intr Mask */
    154 #define DOVE_DB_PCIEIMR			  0x220 /* PCIe0/PCIe1 intr Mask reg */
    155 
    156 
    157 /*
    158  * Cryptographic Engine and Security Accelerator (CESA) Registers
    159  */								/* 0x3d000 */
    160 #define DOVE_CESA_BASE		(DOVE_UNITID2PHYS(SA) + 0xd000)
    161 
    162 /*
    163  * USB 2.0 Interface Registers
    164  */
    165 #define DOVE_USB0_BASE		(DOVE_UNITID2PHYS(USB))		/* 0x50000 */
    166 #define DOVE_USB1_BASE		(DOVE_UNITID2PHYS(USB) + 0x1000)
    167 
    168 /*
    169  * XOR DMA Engine Registers
    170  */
    171 #define DOVE_XORE_BASE		(DOVE_UNITID2PHYS(XOR))		/* 0x60000 */
    172 
    173 /*
    174  * Gigabit Ethernet Controller (GbE) Registers
    175  */
    176 #define DOVE_GBE_BASE		(DOVE_UNITID2PHYS(GBE))		/* 0x70000 */
    177 
    178 /*
    179  * PCI Express (PCIe) Registers
    180  */
    181 #define DOVE_PEX1_BASE		(DOVE_UNITID2PHYS(PEX1))	/* 0x80000 */
    182 
    183 /*
    184  * Camera and SDIO Registers
    185  */
    186 #define DOVE_SDHC_SIZE	0x2000
    187 #define DOVE_SDHC1_BASE		(DOVE_UNITID2PHYS(SDIO))	/* 0x90000 */
    188 #define DOVE_SDHC0_BASE		(DOVE_SDHC1_BASE + DOVE_SDHC_SIZE)
    189 #define DOVE_CAMERA_BASE	(DOVE_SDHC0_BASE + DOVE_SDHC_SIZE)
    190 
    191 /*
    192  * Serial-ATA Host Controller Registers
    193  */
    194 #define DOVE_SATAHC_BASE	(DOVE_UNITID2PHYS(SATA))	/* 0xa0000 */
    195 
    196 /*
    197  * Audio (I2S/S/PDIF) Interface Registers
    198  */
    199 #define DOVE_AUDIO0_BASE	(DOVE_UNITID2PHYS(I2S))		/* 0xb0000 */
    200 #define DOVE_AUDIO1_BASE	(DOVE_UNITID2PHYS(I2S) + 0x4000)
    201 
    202 /*
    203  * NAND Flash Registers
    204  */
    205 #define DOVE_NAND_BASE		(DOVE_UNITID2PHYS(NAND))	/* 0xc0000 */
    206 
    207 /*
    208  * Power Management Registers
    209  */
    210 #define DOVE_PMU_BASE		(DOVE_UNITID2PHYS(PMU))		/* 0xd0000 */
    211 #define DOVE_MISC_BASE		(DOVE_UNITID2PHYS(PMU) + 0x0200)
    212 #define DOVE_GPIO_BASE		(DOVE_UNITID2PHYS(PMU) + 0x0400)
    213 #define DOVE_PMU_BASE2		(DOVE_UNITID2PHYS(PMU) + 0x8000)
    214 #define DOVE_RTC_BASE		(DOVE_UNITID2PHYS(PMU) + 0x8500)
    215 #define DOVE_PMU_SRAM_BASE	(DOVE_UNITID2PHYS(PMU) + 0xc000)
    216 #define DOVE_PMU_SRAM_SIZE		0x800
    217 
    218 #define DOVE_PMU_SIZE			0x200
    219 #define DOVE_PMU_CPUSDFSCR		0x00
    220 #define DOVE_PMU_CPUSDFSCR_DFSEN		(1 << 0)
    221 #define DOVE_PMU_CPUSDFSCR_CPUSLOWEN		(1 << 1)
    222 #define DOVE_PMU_CPUSDFSCR_DDRLRATIO(x)		(((x) & 0x3f) << 3)
    223 #define DOVE_PMU_CPUSDFSCR_CPUL2CR(x)		(((x) & 0x3f) << 9)
    224 #define DOVE_PMU_CPUSDFSCR_CHNGPLLEN		(1 << 16)
    225 #define DOVE_PMU_CPUSDFSSR		0x04
    226 #define DOVE_PMU_CPUSDFSSR_CPUSLOWMODESTTS_MASK		(1 << 1)
    227 #define DOVE_PMU_CPUSDFSSR_CPUSLOWMODESTTS_TURBO	(0 << 1)
    228 #define DOVE_PMU_CPUSDFSSR_CPUSLOWMODESTTS_SLOW		(1 << 1)
    229 #define DOVE_PMU_TM_BASE		0x1c
    230 #define DOVE_PMU_CGCR			0x38	/* Clock Gating Control reg */
    231 #define DOVE_PMU_CPUCDC0R		0x44	/* CPU Clock Divider Control */
    232 #define DOVE_PMU_CPUCDC0R_DPRATIO(x)		(((x) >> 24) & 0x3f) /* DRAM */
    233 #define DOVE_PMU_CPUCDC0R_XPRATIO(x)		(((x) >> 16) & 0x3f) /* L2C */
    234 #define DOVE_PMU_CPUCDC0R_BPRATIO(x)		(((x) >> 8) & 0x3f) /* AXI DS */
    235 #define DOVE_PMU_CPUCDC0R_PPRATIO(x)		(((x) >> 0) & 0x3f) /* CPU */
    236 #define DOVE_PMU_PMUICR			0x50	/* PMU Interrupts Cause reg */
    237 #define DOVE_PMU_PMUIMR			0x54	/* PMU Interrupts Mask reg */
    238 #define DOVE_PMU_PMUI_DFSDONE			(1 << 0) /* DFS Done */
    239 #define DOVE_PMU_PMUI_DVSDONE			(1 << 1) /* DVS Done */
    240 #define DOVE_PMU_PMUI_THERMCOOLING		(1 << 3) /* Thermal Cooling */
    241 #define DOVE_PMU_PMUI_THERMOVERHEAT		(1 << 4) /*Thermal Overheating*/
    242 #define DOVE_PMU_PMUI_RTCALARM			(1 << 5)
    243 #define DOVE_PMU_PMUI_BATTFAULT			(1 << 6) /* Battery Fault */
    244 #define DOVE_PMU_TDC0R			0x5c	/* Thermal Diode Control 0 */
    245 #define DOVE_PMU_TDC0R_THERMSLEEP		(1 << 30) /* sleep mode */
    246 #define DOVE_PMU_TDC0R_THERMOTFCALB		(1 << 29) /* On-The-Fly calb */
    247 #define DOVE_PMU_TDC0R_THERMDOUBLESLOPE		(1 << 28)
    248 #define DOVE_PMU_TDC0R_THERMAVGNUM_MASK		(0x7 << 25)
    249 #define DOVE_PMU_TDC0R_THERMAVGNUM_NO		(0x0 << 25)
    250 #define DOVE_PMU_TDC0R_THERMAVGNUM_2		(0x1 << 25)
    251 #define DOVE_PMU_TDC0R_THERMAVGNUM_4		(0x2 << 25)
    252 #define DOVE_PMU_TDC0R_THERMAVGNUM_8		(0x3 << 25)
    253 #define DOVE_PMU_TDC0R_THERMAVGNUM_16		(0x4 << 25)
    254 #define DOVE_PMU_TDC0R_THERMAVGNUM_32		(0x5 << 25)	/* ? */
    255 #define DOVE_PMU_TDC0R_THERMSELCALCAPSRC_MASK	(0x7 << 20)
    256 #define DOVE_PMU_TDC0R_THERMREFCALCOUNT_MASK	(0x1ff << 11)
    257 #define DOVE_PMU_TDC0R_THERMREFCALCOUNT(x)	((x) << 11)
    258 #define DOVE_PMU_TDC0R_THERMATEST		(0x3 << 10)
    259 #define DOVE_PMU_TDC0R_THERMSELIREF		(1 << 8)
    260 #define DOVE_PMU_TDC0R_THERMVBEBYPASS		(1 << 7)
    261 #define DOVE_PMU_TDC0R_THERMSELVCAL_MASK	(0x3 << 5)
    262 #define DOVE_PMU_TDC0R_THERMSELVCAL(x)		((x) << 5)
    263 #define DOVE_PMU_TDC0R_THERMTCTRIP		(0x7 << 2)
    264 #define DOVE_PMU_TDC0R_THERMSOFTRESET		(1 << 1)
    265 #define DOVE_PMU_TDC0R_THERMPOWERDOWN		(1 << 0)
    266 #define DOVE_PMU_TDC1R			0x60	/* Thermal Diode Control 1 */
    267 
    268 #define DOVE_PMU_PMUCR			0x00	/* PMU Control Register */
    269 #define DOVE_PMU_PMUCR_MASKFIQ			(1 << 28)
    270 #define DOVE_PMU_PMUCR_MASKIRQ			(1 << 24)
    271 #define DOVE_PMU_PMUCR_MCSLEEPREQACK		(1 << 19)
    272 #define DOVE_PMU_PMUCR_MCSLEEPREQ		(1 << 18)
    273 #define DOVE_PMU_PMUCR_MCHALTREQACK		(1 << 17)
    274 #define DOVE_PMU_PMUCR_MCHALTREQ		(1 << 16)
    275 #define DOVE_PMU_PMUCR_DDRSELFREFEN		(1 << 5)
    276 #define DOVE_PMU_PMUCR_STDBYPWREN		(1 << 4)
    277 #define DOVE_PMU_PMUCR_DEEPIDLEPWREN		(1 << 3)
    278 #define DOVE_PMU_PMUCR_EBOOKMODE		(1 << 2)
    279 #define DOVE_PMU_PMUCR_MEMRETENTIONEN		(1 << 0)
    280 
    281 #define DOVE_MISC_SAMPLE_AT_RESET0	0x14
    282 
    283 /*
    284  * Audio Codec'97 (AC'97) Registers
    285  */
    286 #define DOVE_AC97_BASE		(DOVE_UNITID2PHYS(AC97))	/* 0xe0000 */
    287 #define DOVE_SSP_BASE		(DOVE_UNITID2PHYS(AC97) + 0xc000)
    288 
    289 #endif	/* _DOVEREG_H_ */
    290