1 1.3 andvar /* $NetBSD: mv78xx0reg.h,v 1.3 2022/10/31 20:30:22 andvar Exp $ */ 2 1.1 kiyohara /* 3 1.1 kiyohara * Copyright (c) 2010 KIYOHARA Takashi 4 1.1 kiyohara * All rights reserved. 5 1.1 kiyohara * 6 1.1 kiyohara * Redistribution and use in source and binary forms, with or without 7 1.1 kiyohara * modification, are permitted provided that the following conditions 8 1.1 kiyohara * are met: 9 1.1 kiyohara * 1. Redistributions of source code must retain the above copyright 10 1.1 kiyohara * notice, this list of conditions and the following disclaimer. 11 1.1 kiyohara * 2. Redistributions in binary form must reproduce the above copyright 12 1.1 kiyohara * notice, this list of conditions and the following disclaimer in the 13 1.1 kiyohara * documentation and/or other materials provided with the distribution. 14 1.1 kiyohara * 15 1.1 kiyohara * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16 1.1 kiyohara * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 1.1 kiyohara * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 1.1 kiyohara * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 19 1.1 kiyohara * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 1.1 kiyohara * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 21 1.1 kiyohara * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 1.1 kiyohara * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 23 1.1 kiyohara * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 24 1.1 kiyohara * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 1.1 kiyohara * POSSIBILITY OF SUCH DAMAGE. 26 1.1 kiyohara */ 27 1.1 kiyohara 28 1.1 kiyohara #ifndef _MV78XX0REG_H_ 29 1.1 kiyohara #define _MV78XX0REG_H_ 30 1.1 kiyohara 31 1.1 kiyohara #include <arm/marvell/mvsocreg.h> 32 1.1 kiyohara 33 1.1 kiyohara /* 34 1.1 kiyohara * MHz PCIe GbE SATA TDMI COM 35 1.1 kiyohara * MV76100: 800, 2 x2, x1, -, x3 36 1.1 kiyohara * MV78100: 1.2, 2 x4, x2, x2, x2, x4 37 1.1 kiyohara * MV78200: 1.0 x2, 2 x4, x4, x2, x2, x4 38 1.1 kiyohara */ 39 1.1 kiyohara 40 1.1 kiyohara #define MV78XX0_UNITID_DDR MVSOC_UNITID_DDR 41 1.1 kiyohara #define MV78XX0_UNITID_DEVBUS MVSOC_UNITID_DEVBUS 42 1.2 kiyohara #define MV78XX0_UNITID_LMB MVSOC_UNITID_MLMB 43 1.1 kiyohara #define MV78XX0_UNITID_GBE23 0x3 /* Gigabit Ethernet registers */ 44 1.1 kiyohara #define MV78XX0_UNITID_PEX MVSOC_UNITID_PEX 45 1.1 kiyohara #define MV78XX0_UNITID_USB 0x5 /* USB registers */ 46 1.1 kiyohara #define MV78XX0_UNITID_IDMA 0x6 /* IDMA registers */ 47 1.1 kiyohara #define MV78XX0_UNITID_XOR 0x6 /* XOR registers */ 48 1.1 kiyohara #define MV78XX0_UNITID_GBE01 0x7 /* Gigabit Ethernet registers */ 49 1.2 kiyohara #define MV78XX0_UNITID_PEX1 0x8 50 1.1 kiyohara #define MV78XX0_UNITID_CRYPT 0x9 /* Cryptographic Engine reg */ 51 1.3 andvar #define MV78XX0_UNITID_SA 0x9 /* Security Accelerator reg */ 52 1.1 kiyohara #define MV78XX0_UNITID_SATA 0xa /* SATA registers */ 53 1.1 kiyohara #define MV78XX0_UNITID_TDM 0xb /* TDM registers */ 54 1.1 kiyohara 55 1.1 kiyohara #define MV78XX0_ATTR_DEVICE_CS0 0x3e 56 1.1 kiyohara #define MV78XX0_ATTR_DEVICE_CS1 0x3d 57 1.1 kiyohara #define MV78XX0_ATTR_DEVICE_CS2 0x3b 58 1.2 kiyohara #define MV78XX0_ATTR_DEVICE_CS3 0x37 59 1.1 kiyohara #define MV78XX0_ATTR_BOOT_CS 0x2f 60 1.1 kiyohara #define MV78XX0_ATTR_SPI 0x1f 61 1.1 kiyohara #define MV78XX0_ATTR_PEX_0_IO 0xe0 /* PCIe x1 Port 0.0 */ 62 1.1 kiyohara #define MV78XX0_ATTR_PEX_0_MEM 0xe8 63 1.1 kiyohara #define MV78XX0_ATTR_PEX_1_IO 0xd0 /* PCIe x1 Port 0.1 */ 64 1.1 kiyohara #define MV78XX0_ATTR_PEX_1_MEM 0xd8 65 1.1 kiyohara #define MV78XX0_ATTR_PEX_2_IO 0xb0 /* PCIe x1 Port 0.2 */ 66 1.1 kiyohara #define MV78XX0_ATTR_PEX_2_MEM 0xb8 67 1.1 kiyohara #define MV78XX0_ATTR_PEX_3_IO 0x70 /* PCIe x1 Port 0.3 */ 68 1.1 kiyohara #define MV78XX0_ATTR_PEX_3_MEM 0x78 69 1.2 kiyohara #define MV78XX0_ATTR_CRYPT 0x00/* 0:Bswap,1:No,2:B&Wswap,3:Wswap */ 70 1.1 kiyohara 71 1.1 kiyohara #define MV78XX0_IRQ_ERRSUM 0 /* Sum of Main Intr Err Cause */ 72 1.1 kiyohara #define MV78XX0_IRQ_SPI 1 /* SPI */ 73 1.1 kiyohara #define MV78XX0_IRQ_TWSI0 2 /* TWSI0 */ 74 1.1 kiyohara #define MV78XX0_IRQ_TWSI1 3 /* TWSI1 */ 75 1.1 kiyohara #define MV78XX0_IRQ_IDMA0 4 /* IDMA Channel0 completion */ 76 1.1 kiyohara #define MV78XX0_IRQ_IDMA1 5 /* IDMA Channel1 completion */ 77 1.1 kiyohara #define MV78XX0_IRQ_IDMA2 6 /* IDMA Channel2 completion */ 78 1.1 kiyohara #define MV78XX0_IRQ_IDMA3 7 /* IDMA Channel3 completion */ 79 1.1 kiyohara #define MV78XX0_IRQ_TIMER0 8 /* Timer0 */ 80 1.1 kiyohara #define MV78XX0_IRQ_TIMER1 9 /* Timer1 */ 81 1.1 kiyohara #define MV78XX0_IRQ_TIMER2 10 /* Timer2 */ 82 1.1 kiyohara #define MV78XX0_IRQ_TIMER3 11 /* Timer3 */ 83 1.1 kiyohara #define MV78XX0_IRQ_UART0 12 /* UART0 */ 84 1.1 kiyohara #define MV78XX0_IRQ_UART1 13 /* UART1 */ 85 1.1 kiyohara #define MV78XX0_IRQ_UART2 14 /* UART2 */ 86 1.1 kiyohara #define MV78XX0_IRQ_UART3 15 /* UART3 */ 87 1.1 kiyohara #define MV78XX0_IRQ_USB0 16 /* USB0 */ 88 1.1 kiyohara #define MV78XX0_IRQ_USB1 17 /* USB1 */ 89 1.1 kiyohara #define MV78XX0_IRQ_USB2 18 /* USB2 */ 90 1.1 kiyohara #define MV78XX0_IRQ_CRYPTO 19 /* Crypto engine completion */ 91 1.1 kiyohara #define MV78XX0_IRQ_XOR0 22 /* XOR engine 0 completion */ 92 1.1 kiyohara #define MV78XX0_IRQ_XOR1 23 /* XOR engine 1 completion */ 93 1.1 kiyohara #define MV78XX0_IRQ_SATA 26 /* SATA ports */ 94 1.1 kiyohara #define MV78XX0_IRQ_TDMI_INT 27 /* TDM */ 95 1.1 kiyohara #define MV78XX0_IRQ_PEX00INTA 32 /* PCIe Port0.0 INTA/B/C/D */ 96 1.1 kiyohara #define MV78XX0_IRQ_PEX01INTA 33 /* PCIe Port0.1 INTA/B/C/D */ 97 1.1 kiyohara #define MV78XX0_IRQ_PEX02INTA 34 /* PCIe Port0.2 INTA/B/C/D */ 98 1.1 kiyohara #define MV78XX0_IRQ_PEX03INTA 35 /* PCIe Port0.3 INTA/B/C/D */ 99 1.1 kiyohara #define MV78XX0_IRQ_PEX10INTA 36 /* PCIe Port1.0 INTA/B/C/D */ 100 1.1 kiyohara #define MV78XX0_IRQ_PEX11INTA 37 /* PCIe Port1.1 INTA/B/C/D */ 101 1.1 kiyohara #define MV78XX0_IRQ_PEX12INTA 38 /* PCIe Port1.2 INTA/B/C/D */ 102 1.1 kiyohara #define MV78XX0_IRQ_PEX13INTA 39 /* PCIe Port1.3 INTA/B/C/D */ 103 1.1 kiyohara #define MV78XX0_IRQ_GE00SUM 40 /* Gigabit Ethernet Port0 sum */ 104 1.1 kiyohara #define MV78XX0_IRQ_GE00RX 41 /* Gigabit Ethernet Port0 Rx */ 105 1.1 kiyohara #define MV78XX0_IRQ_GE00TX 42 /* Gigabit Ethernet Port0 Tx */ 106 1.1 kiyohara #define MV78XX0_IRQ_GE00MISC 43 /* Gigabit Ethernet Port0 misc*/ 107 1.1 kiyohara #define MV78XX0_IRQ_GE01SUM 44 /* Gigabit Ethernet Port1 sum */ 108 1.1 kiyohara #define MV78XX0_IRQ_GE01RX 45 /* Gigabit Ethernet Port1 Rx */ 109 1.1 kiyohara #define MV78XX0_IRQ_GE01TX 46 /* Gigabit Ethernet Port1 Tx */ 110 1.1 kiyohara #define MV78XX0_IRQ_GE01MISC 47 /* Gigabit Ethernet Port1 misc*/ 111 1.1 kiyohara #define MV78XX0_IRQ_GE10SUM 48 /* Gigabit Ethernet Port2 sum */ 112 1.1 kiyohara #define MV78XX0_IRQ_GE10RX 49 /* Gigabit Ethernet Port2 Rx */ 113 1.1 kiyohara #define MV78XX0_IRQ_GE10TX 50 /* Gigabit Ethernet Port2 Tx */ 114 1.1 kiyohara #define MV78XX0_IRQ_GE10MISC 51 /* Gigabit Ethernet Port2 misc*/ 115 1.1 kiyohara #define MV78XX0_IRQ_GE11SUM 52 /* Gigabit Ethernet Port3 sum */ 116 1.1 kiyohara #define MV78XX0_IRQ_GE11RX 53 /* Gigabit Ethernet Port3 Rx */ 117 1.1 kiyohara #define MV78XX0_IRQ_GE11TX 54 /* Gigabit Ethernet Port3 Tx */ 118 1.1 kiyohara #define MV78XX0_IRQ_GE11MISC 55 /* Gigabit Ethernet Port3 misc*/ 119 1.1 kiyohara #define MV78XX0_IRQ_GPIO0_7 56 /* GPIO[7:0] */ 120 1.1 kiyohara #define MV78XX0_IRQ_GPIO8_15 57 /* GPIO[15:8] */ 121 1.1 kiyohara #define MV78XX0_IRQ_GPIO16_23 58 /* GPIO[23:16] */ 122 1.1 kiyohara #define MV78XX0_IRQ_GPIO24_31 59 /* GPIO[31:24] */ 123 1.1 kiyohara #define MV78XX0_IRQ_DB_IN 60 /*Summary of Inbound Doorbell Cause*/ 124 1.1 kiyohara #define MV78XX0_IRQ_DB_OUT 61/*Summary of Outbound Doorbell Cause*/ 125 1.1 kiyohara 126 1.1 kiyohara 127 1.1 kiyohara /* 128 1.1 kiyohara * Physical address of integrated peripherals 129 1.1 kiyohara */ 130 1.1 kiyohara 131 1.2 kiyohara #define MV78XX0_UNITID2PHYS(uid) ((MV78XX0_UNITID_ ## uid) << 16) 132 1.1 kiyohara 133 1.1 kiyohara /* 134 1.1 kiyohara * General Purpose Port Registers 135 1.1 kiyohara */ 136 1.1 kiyohara #define MV78XX0_GPP_BASE (MVSOC_DEVBUS_BASE + 0x0100) 137 1.1 kiyohara #define MV78XX0_GPP_SIZE 0x100 138 1.1 kiyohara 139 1.1 kiyohara /* 140 1.2 kiyohara * Two-Wire Serial Interface Registers 141 1.2 kiyohara */ 142 1.2 kiyohara #define MV78XX0_TWSI1_BASE (MVSOC_DEVBUS_BASE + 0x1100) 143 1.2 kiyohara 144 1.2 kiyohara /* 145 1.1 kiyohara * UART Interface Registers 146 1.1 kiyohara */ 147 1.1 kiyohara /* NS16550 compatible */ 148 1.1 kiyohara #define MV78XX0_COM2_BASE (MVSOC_DEVBUS_BASE + 0x2200) 149 1.1 kiyohara #define MV78XX0_COM3_BASE (MVSOC_DEVBUS_BASE + 0x2300) 150 1.1 kiyohara 151 1.1 kiyohara /* 152 1.2 kiyohara * Reset Registers 153 1.2 kiyohara */ 154 1.2 kiyohara #define MV78XX0_SAMPLE_AT_RESET_LOW (MVSOC_DEVBUS_BASE + 0x0030) 155 1.2 kiyohara #define MV78XX0_SAMPLE_AT_RESET_HIGH (MVSOC_DEVBUS_BASE + 0x0034) 156 1.2 kiyohara 157 1.2 kiyohara 158 1.2 kiyohara /* 159 1.1 kiyohara * Mbus-L to Mbus Bridge Registers 160 1.1 kiyohara */ 161 1.1 kiyohara /* CPU Address Map Registers */ 162 1.1 kiyohara #define MV78XX0_MLMB_NWINDOW 14 163 1.1 kiyohara #define MV78XX0_MLMB_NREMAP 8 164 1.1 kiyohara 165 1.2 kiyohara #define MV78XX0_ICI_BASE(cpu) ((cpu)->ci_cpuid << 14) 166 1.2 kiyohara 167 1.2 kiyohara /* Interrupt Controller Interface Registers */ 168 1.2 kiyohara #define MV78XX0_ICI_MIECR 0x200 /* Main Interrupt Error Cause */ 169 1.2 kiyohara #define MV78XX0_ICI_MICLR 0x204 /* Main Interrupt Cause Low */ 170 1.2 kiyohara #define MV78XX0_ICI_MICHR 0x208 /* Main Interrupt Cause High */ 171 1.2 kiyohara #define MV78XX0_ICI_IRQIMER 0x20c /* IRQ Interrupt Mask Error */ 172 1.2 kiyohara #define MV78XX0_ICI_IRQIMLR 0x210 /* IRQ Interrupt Mask Low */ 173 1.2 kiyohara #define MV78XX0_ICI_IRQIMHR 0x214 /* IRQ Interrupt Mask High */ 174 1.2 kiyohara #define MV78XX0_ICI_IRQSCR 0x218 /* IRQ Select Cause */ 175 1.2 kiyohara #define MV78XX0_ICI_FIQIMER 0x21c /* FIQ Interrupt Mask Error */ 176 1.2 kiyohara #define MV78XX0_ICI_FIQIMLR 0x220 /* FIQ Interrupt Mask Low */ 177 1.2 kiyohara #define MV78XX0_ICI_FIQIMHR 0x224 /* FIQ Interrupt Mask High */ 178 1.2 kiyohara #define MV78XX0_ICI_FIQSCR 0x228 /* FIQ Select Cause */ 179 1.2 kiyohara #define MV78XX0_ICI_EIMER 0x22c /* Endpoint Intr Mask Error */ 180 1.2 kiyohara #define MV78XX0_ICI_EIMLR 0x230 /* Endpoint Intr Mask Low */ 181 1.2 kiyohara #define MV78XX0_ICI_EIMHR 0x234 /* Endpoint Intr Mask High */ 182 1.2 kiyohara #define MV78XX0_ICI_ESCR 0x238 /* Endpoint Select Cause */ 183 1.1 kiyohara 184 1.1 kiyohara /* CPU Timers Registers */ 185 1.2 kiyohara 186 1.2 kiyohara #define IRQ_IS_TIMER(n, irq) ((irq) == MV78XX0_IRQ_TIMER ## n) 187 1.2 kiyohara #define MLMBI_TIMER(n) MVSOC_MLMB_MLMBI_CPUTIMER ## n ## INTREQ 188 1.2 kiyohara #define TIMER_IRQ2MLMBIMR(irq) \ 189 1.2 kiyohara IRQ_IS_TIMER(0, irq) ? MLMBI_TIMER(0) : \ 190 1.2 kiyohara (IRQ_IS_TIMER(1, irq) ? MLMBI_TIMER(1) : \ 191 1.2 kiyohara (IRQ_IS_TIMER(2, irq) ? MLMBI_TIMER(2) : MLMBI_TIMER(3))) 192 1.1 kiyohara 193 1.1 kiyohara 194 1.1 kiyohara /* 195 1.1 kiyohara * PCI Express Interface Registers 196 1.1 kiyohara */ 197 1.2 kiyohara #define MV78XX0_PEX1_BASE (MV78XX0_UNITID2PHYS(PEX1)) /* 0x80000 */ 198 1.1 kiyohara 199 1.1 kiyohara /* 200 1.1 kiyohara * USB 2.0 Interface Registers 201 1.1 kiyohara */ 202 1.2 kiyohara #define MV78XX0_USB_BASE (MV78XX0_UNITID2PHYS(USB)) /* 0x50000 */ 203 1.1 kiyohara 204 1.1 kiyohara /* 205 1.1 kiyohara * IDMA Controller and XOR Engine Registers 206 1.1 kiyohara */ 207 1.2 kiyohara #define MV78XX0_IDMAC_BASE (MV78XX0_UNITID2PHYS(IDMA)) /* 0x60000 */ 208 1.1 kiyohara 209 1.1 kiyohara /* 210 1.1 kiyohara * Gigabit Ethernet Registers 211 1.1 kiyohara */ 212 1.2 kiyohara #define MV78XX0_GBE0_BASE (MV78XX0_UNITID2PHYS(GBE01)) /* 0x70000 */ 213 1.2 kiyohara #define MV78XX0_GBE1_BASE (MV78XX0_UNITID2PHYS(GBE01) + MVGBE_SIZE) 214 1.2 kiyohara #define MV78XX0_GBE2_BASE (MV78XX0_UNITID2PHYS(GBE23)) /* 0x30000 */ 215 1.2 kiyohara #define MV78XX0_GBE3_BASE (MV78XX0_UNITID2PHYS(GBE23) + MVGBE_SIZE) 216 1.1 kiyohara 217 1.1 kiyohara /* 218 1.1 kiyohara * Cryptographic Engine and Security Accelerator Registers 219 1.1 kiyohara */ 220 1.2 kiyohara #define MV78XX0_CESA_BASE (MV78XX0_UNITID2PHYS(CRYPT) + 0xd000)/*0x9d000*/ 221 1.1 kiyohara 222 1.1 kiyohara /* 223 1.1 kiyohara * Serial-ATA Host Controller (SATAHC) Registers 224 1.1 kiyohara */ 225 1.2 kiyohara #define MV78XX0_SATAHC_BASE (MV78XX0_UNITID2PHYS(SATA)) /* 0xa0000 */ 226 1.1 kiyohara 227 1.1 kiyohara /* 228 1.1 kiyohara * Time Division Multiplexing (TDM) Unit Registers 229 1.1 kiyohara */ 230 1.2 kiyohara #define MV78XX0_TDM_BASE (MV78XX0_UNITID2PHYS(TDM)) /* 0xb0000 */ 231 1.1 kiyohara 232 1.1 kiyohara #endif /* _MV78XX0REG_H_ */ 233