1*7991f5a7Sandvar /* $NetBSD: rmixlreg.h,v 1.5 2021/07/24 21:31:33 andvar Exp $ */ 2290a34a0Smatt 3290a34a0Smatt /*- 4290a34a0Smatt * Copyright (c) 2009 The NetBSD Foundation, Inc. 5290a34a0Smatt * All rights reserved. 6290a34a0Smatt * 7290a34a0Smatt * This code is derived from software contributed to The NetBSD Foundation 83e67b512Smatt * by Cliff Neighbors 9290a34a0Smatt * 10290a34a0Smatt * Redistribution and use in source and binary forms, with or without 11290a34a0Smatt * modification, are permitted provided that the following conditions 12290a34a0Smatt * are met: 13290a34a0Smatt * 1. Redistributions of source code must retain the above copyright 14290a34a0Smatt * notice, this list of conditions and the following disclaimer. 15290a34a0Smatt * 2. Redistributions in binary form must reproduce the above copyright 16290a34a0Smatt * notice, this list of conditions and the following disclaimer in the 17290a34a0Smatt * documentation and/or other materials provided with the distribution. 18290a34a0Smatt * 19290a34a0Smatt * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20290a34a0Smatt * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21290a34a0Smatt * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22290a34a0Smatt * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23290a34a0Smatt * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24290a34a0Smatt * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25290a34a0Smatt * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26290a34a0Smatt * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27290a34a0Smatt * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28290a34a0Smatt * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29290a34a0Smatt * POSSIBILITY OF SUCH DAMAGE. 30290a34a0Smatt */ 31290a34a0Smatt 32290a34a0Smatt 33290a34a0Smatt #ifndef _MIPS_RMI_RMIXLREGS_H_ 34290a34a0Smatt #define _MIPS_RMI_RMIXLREGS_H_ 35290a34a0Smatt 36290a34a0Smatt #include <sys/endian.h> 37290a34a0Smatt 38290a34a0Smatt /* 39290a34a0Smatt * on chip I/O register byte order is 40290a34a0Smatt * BIG ENDIAN regardless of code model 41290a34a0Smatt */ 42290a34a0Smatt #define RMIXL_IOREG_VADDR(o) \ 43290a34a0Smatt (volatile uint32_t *)MIPS_PHYS_TO_KSEG1( \ 44290a34a0Smatt rmixl_configuration.rc_io_pbase + (o)) 45290a34a0Smatt #define RMIXL_IOREG_READ(o) be32toh(*RMIXL_IOREG_VADDR(o)) 46290a34a0Smatt #define RMIXL_IOREG_WRITE(o,v) *RMIXL_IOREG_VADDR(o) = htobe32(v) 47290a34a0Smatt 48290a34a0Smatt 49290a34a0Smatt /* 50290a34a0Smatt * RMIXL Coprocessor 2 registers: 51290a34a0Smatt */ 52290a34a0Smatt #ifdef _LOCORE 53290a34a0Smatt #define _(n) __CONCAT($,n) 54290a34a0Smatt #else 55290a34a0Smatt #define _(n) n 56290a34a0Smatt #endif 573e67b512Smatt /* 583e67b512Smatt * Note CP2 FMN register scope or "context" 593e67b512Smatt * L : Local : per thread register 603e67b512Smatt * G : Global : per FMN Station (per core) register 613e67b512Smatt * L/G : "partly global" : ??? 623e67b512Smatt * Global regs should be managed by a single thread 633e67b512Smatt * (see XLS PRM "Coprocessor 2 Register Summary") 643e67b512Smatt */ 653e67b512Smatt /* context ---------------+ */ 663e67b512Smatt /* #sels --------------+ | */ 673e67b512Smatt /* #regs -----------+ | | */ 683e67b512Smatt /* What: #bits --+ | | | */ 693e67b512Smatt /* v v v v */ 703e67b512Smatt #define RMIXL_COP_2_TXBUF _(0) /* Transmit Buffers 64 [1][4] L */ 713e67b512Smatt #define RMIXL_COP_2_RXBUF _(1) /* Receive Buffers 64 [1][4] L */ 72*7991f5a7Sandvar #define RMIXL_COP_2_MSG_STS _(2) /* Message Status 32 [1][2] L/G */ 73*7991f5a7Sandvar #define RMIXL_COP_2_MSG_CFG _(3) /* Message Config 32 [1][2] G */ 743e67b512Smatt #define RMIXL_COP_2_MSG_BSZ _(4) /* Message Bucket Size 32 [1][8] G */ 753e67b512Smatt #define RMIXL_COP_2_CREDITS _(16) /* Credit Counters 8 [16][8] G */ 76290a34a0Smatt 773e67b512Smatt /* 783e67b512Smatt * MsgStatus: RMIXL_COP_2_MSG_STS (CP2 Reg 2, Select 0) bits 793e67b512Smatt */ 803e67b512Smatt #define RMIXL_MSG_STS0_RFBE __BITS(31,24) /* RX FIFO Buckets bit mask 813e67b512Smatt * 0=not empty 823e67b512Smatt * 1=empty 833e67b512Smatt */ 843e67b512Smatt #define RMIXL_MSG_STS0_RFBE_SHIFT 24 853e67b512Smatt #define RMIXL_MSG_STS0_RESV __BIT(23) 863e67b512Smatt #define RMIXL_MSG_STS0_RMSID __BITS(22,16) /* Source ID */ 873e67b512Smatt #define RMIXL_MSG_STS0_RMSID_SHIFT 16 883e67b512Smatt #define RMIXL_MSG_STS0_RMSC __BITS(15,8) /* RX Message Software Code */ 893e67b512Smatt #define RMIXL_MSG_STS0_RMSC_SHIFT 8 903e67b512Smatt #define RMIXL_MSG_STS0_RMS __BITS(7,6) /* RX Message Size (minus 1) */ 913e67b512Smatt #define RMIXL_MSG_STS0_RMS_SHIFT 6 923e67b512Smatt #define RMIXL_MSG_STS0_LEF __BIT(5) /* Load Empty Fail */ 933e67b512Smatt #define RMIXL_MSG_STS0_LPF __BIT(4) /* Load Pending Fail */ 943e67b512Smatt #define RMIXL_MSG_STS0_LMP __BIT(3) /* Load Message Pending */ 953e67b512Smatt #define RMIXL_MSG_STS0_SCF __BIT(2) /* Send Credit Fail */ 963e67b512Smatt #define RMIXL_MSG_STS0_SPF __BIT(1) /* Send Pending Fail */ 973e67b512Smatt #define RMIXL_MSG_STS0_SMP __BIT(0) /* Send Message Pending */ 983e67b512Smatt #define RMIXL_MSG_STS0_ERRS \ 993e67b512Smatt (RMIXL_MSG_STS0_LEF|RMIXL_MSG_STS0_LPF|RMIXL_MSG_STS0_LMP \ 1003e67b512Smatt |RMIXL_MSG_STS0_SCF|RMIXL_MSG_STS0_SPF|RMIXL_MSG_STS0_SMP) 1013e67b512Smatt 1023e67b512Smatt /* 1033e67b512Smatt * MsgStatus1: RMIXL_COP_2_MSG_STS (CP2 Reg 2, Select 1) bits 1043e67b512Smatt */ 1053e67b512Smatt #define RMIXL_MSG_STS1_RESV __BIT(31) 1063e67b512Smatt #define RMIXL_MSG_STS1_C __BIT(30) /* Credit Overrun Error */ 1073e67b512Smatt #define RMIXL_MSG_STS1_CCFCME __BITS(29,23) /* Credit Counter of Free Credit Message with Error */ 1083e67b512Smatt #define RMIXL_MSG_STS1_CCFCME_SHIFT 23 1093e67b512Smatt #define RMIXL_MSG_STS1_SIDFCME __BITS(22,16) /* Source ID of Free Credit Message with Error */ 1103e67b512Smatt #define RMIXL_MSG_STS1_SIDFCME_SHIFT 16 1113e67b512Smatt #define RMIXL_MSG_STS1_T __BIT(15) /* Invalid Target Error */ 1123e67b512Smatt #define RMIXL_MSG_STS1_F __BIT(14) /* Receive Queue "Write When Full" Error */ 1133e67b512Smatt #define RMIXL_MSG_STS1_SIDE __BITS(13,7) /* Source ID of incoming msg with Error */ 1143e67b512Smatt #define RMIXL_MSG_STS1_SIDE_SHIFT 7 1153e67b512Smatt #define RMIXL_MSG_STS1_DIDE __BITS(6,0) /* Destination ID of the incoming message Message with Error */ 1163e67b512Smatt #define RMIXL_MSG_STS1_DIDE_SHIFT 0 1173e67b512Smatt #define RMIXL_MSG_STS1_ERRS \ 1183e67b512Smatt (RMIXL_MSG_STS1_C|RMIXL_MSG_STS1_T|RMIXL_MSG_STS1_F) 1193e67b512Smatt 1203e67b512Smatt /* 1213e67b512Smatt * MsgConfig: RMIXL_COP_2_MSG_CFG (CP2 Reg 3, Select 0) bits 1223e67b512Smatt */ 1233e67b512Smatt #define RMIXL_MSG_CFG0_WM __BITS(31,24) /* Watermark level */ 1243e67b512Smatt #define RMIXL_MSG_CFG0_WMSHIFT 24 1253e67b512Smatt #define RMIXL_MSG_CFG0_RESa __BITS(23,22) 1263e67b512Smatt #define RMIXL_MSG_CFG0_IV __BITS(21,16) /* Interrupt Vector */ 1273e67b512Smatt #define RMIXL_MSG_CFG0_IV_SHIFT 16 1283e67b512Smatt #define RMIXL_MSG_CFG0_RESb __BITS(15,12) 1293e67b512Smatt #define RMIXL_MSG_CFG0_ITM __BITS(11,8) /* Interrupt Thread Mask */ 1303e67b512Smatt #define RMIXL_MSG_CFG0_ITM_SHIFT 8 1313e67b512Smatt #define RMIXL_MSG_CFG0_RESc __BITS(7,2) 1323e67b512Smatt #define RMIXL_MSG_CFG0_WIE __BIT(1) /* Watermark Interrupt Enable */ 1333e67b512Smatt #define RMIXL_MSG_CFG0_EIE __BIT(0) /* Receive Queue Not Empty Enable */ 1343e67b512Smatt #define RMIXL_MSG_CFG0_RESV \ 1353e67b512Smatt (RMIXL_MSG_CFG0_RESa|RMIXL_MSG_CFG0_RESb|RMIXL_MSG_CFG0_RESc) 1363e67b512Smatt 1373e67b512Smatt /* 1383e67b512Smatt * MsgConfig1: RMIXL_COP_2_MSG_CFG (CP2 Reg 3, Select 1) bits 1393e67b512Smatt * Note: reg width is 64 bits in PRM reg description, but 32 bits in reg summary 1403e67b512Smatt */ 1413e67b512Smatt #define RMIXL_MSG_CFG1_RESV __BITS(63,3) 1423e67b512Smatt #define RMIXL_MSG_CFG1_T __BIT(2) /* Trace Mode Enable */ 1433e67b512Smatt #define RMIXL_MSG_CFG1_C __BIT(1) /* Credit Over-run Interrupt Enable */ 1443e67b512Smatt #define RMIXL_MSG_CFG1_M __BIT(0) /* Messaging Errors Interrupt Enable */ 1453e67b512Smatt 1463e67b512Smatt 1473e67b512Smatt /* 1483e67b512Smatt * MsgBucketSize: RMIXL_COP_2_MSG_BSZ (CP2 Reg 4, Select [0..7]) bits 1493e67b512Smatt * Note: reg width is 64 bits in PRM reg description, but 32 bits in reg summary 1503e67b512Smatt * Size: 1513e67b512Smatt * - 0 means bucket disabled, else 1523e67b512Smatt * - must be power of 2 1533e67b512Smatt * - must be >=4 1543e67b512Smatt */ 1553e67b512Smatt #define RMIXL_MSG_BSZ_RESV __BITS(63,8) 1563e67b512Smatt #define RMIXL_MSG_BSZ_SIZE __BITS(7,0) 1573e67b512Smatt 1583e67b512Smatt 1593e67b512Smatt 160290a34a0Smatt 161290a34a0Smatt /* 162290a34a0Smatt * RMIXL Processor Control Register addresses 163290a34a0Smatt * - Offset in bits 7..0 164290a34a0Smatt * - BlockID in bits 15..8 165290a34a0Smatt */ 166290a34a0Smatt #define RMIXL_PCR_THREADEN 0x0000 167290a34a0Smatt #define RMIXL_PCR_SOFTWARE_SLEEP 0x0001 168290a34a0Smatt #define RMIXL_PCR_SCHEDULING 0x0002 169290a34a0Smatt #define RMIXL_PCR_SCHEDULING_COUNTERS 0x0003 170290a34a0Smatt #define RMIXL_PCR_BHRPM 0x0004 171290a34a0Smatt #define RMIXL_PCR_IFU_DEFEATURE 0x0006 172290a34a0Smatt #define RMIXL_PCR_ICU_DEFEATURE 0x0100 173290a34a0Smatt #define RMIXL_PCR_ICU_ERROR_LOGGING 0x0101 174290a34a0Smatt #define RMIXL_PCR_ICU_DEBUG_ACCESS_ADDR 0x0102 175290a34a0Smatt #define RMIXL_PCR_ICU_DEBUG_ACCESS_DATALO 0x0103 176290a34a0Smatt #define RMIXL_PCR_ICU_DEBUG_ACCESS_DATAHI 0x0104 177290a34a0Smatt #define RMIXL_PCR_ICU_SAMPLING_LFSR 0x0105 178290a34a0Smatt #define RMIXL_PCR_ICU_SAMPLING_PC 0x0106 179290a34a0Smatt #define RMIXL_PCR_ICU_SAMPLING_SETUP 0x0107 180290a34a0Smatt #define RMIXL_PCR_ICU_SAMPLING_TIMER 0x0108 181290a34a0Smatt #define RMIXL_PCR_ICU_SAMPLING_PC_UPPER 0x0109 182290a34a0Smatt #define RMIXL_PCR_IEU_DEFEATURE 0x0200 183290a34a0Smatt #define RMIXL_PCR_TARGET_PC_REGISTER 0x0207 184290a34a0Smatt #define RMIXL_PCR_L1D_CONFIG0 0x0300 185290a34a0Smatt #define RMIXL_PCR_L1D_CONFIG1 0x0301 186290a34a0Smatt #define RMIXL_PCR_L1D_CONFIG2 0x0302 187290a34a0Smatt #define RMIXL_PCR_L1D_CONFIG3 0x0303 188290a34a0Smatt #define RMIXL_PCR_L1D_CONFIG4 0x0304 189290a34a0Smatt #define RMIXL_PCR_L1D_STATUS 0x0305 190290a34a0Smatt #define RMIXL_PCR_L1D_DEFEATURE 0x0306 191290a34a0Smatt #define RMIXL_PCR_L1D_DEBUG0 0x0307 192290a34a0Smatt #define RMIXL_PCR_L1D_DEBUG1 0x0308 193290a34a0Smatt #define RMIXL_PCR_L1D_CACHE_ERROR_LOG 0x0309 194290a34a0Smatt #define RMIXL_PCR_L1D_CACHE_ERROR_OVF_LO 0x030A 195290a34a0Smatt #define RMIXL_PCR_L1D_CACHE_INTERRUPT 0x030B 196290a34a0Smatt #define RMIXL_PCR_MMU_SETUP 0x0400 197290a34a0Smatt #define RMIXL_PCR_PRF_SMP_EVENT 0x0500 198290a34a0Smatt #define RMIXL_PCR_RF_SMP_RPLY_BUF 0x0501 199290a34a0Smatt 200290a34a0Smatt /* PCR bit defines TBD */ 201290a34a0Smatt 202290a34a0Smatt 203290a34a0Smatt /* 204290a34a0Smatt * Memory Distributed Interconnect (MDI) System Memory Map 205290a34a0Smatt */ 206290a34a0Smatt #define RMIXL_PHYSADDR_MAX 0xffffffffffLL /* 1TB Physical Address space */ 207290a34a0Smatt #define RMIXL_IO_DEV_PBASE 0x1ef00000 /* default phys. from XL[RS]_IO_BAR */ 208290a34a0Smatt #define RMIXL_IO_DEV_VBASE MIPS_PHYS_TO_KSEG1(RMIXL_IO_DEV_PBASE) 209290a34a0Smatt /* default virtual base address */ 210290a34a0Smatt #define RMIXL_IO_DEV_SIZE 0x100000 /* I/O Conf. space is 1MB region */ 211290a34a0Smatt 212290a34a0Smatt 213290a34a0Smatt 214290a34a0Smatt /* 215290a34a0Smatt * Peripheral and I/O Configuration Region of Memory 216290a34a0Smatt * 217290a34a0Smatt * These are relocatable; we run using the reset value defaults, 218290a34a0Smatt * and we expect to inherit those intact from the boot firmware. 219290a34a0Smatt * 220290a34a0Smatt * Many of these overlap between XLR and XLS, exceptions are ifdef'ed. 221290a34a0Smatt * 222290a34a0Smatt * Device region offsets are relative to RMIXL_IO_DEV_PBASE. 223290a34a0Smatt */ 224290a34a0Smatt #define RMIXL_IO_DEV_BRIDGE 0x00000 /* System Bridge Controller (SBC) */ 225290a34a0Smatt #define RMIXL_IO_DEV_DDR_CHNA 0x01000 /* DDR1/DDR2 DRAM_A Channel, Port MA */ 226290a34a0Smatt #define RMIXL_IO_DEV_DDR_CHNB 0x02000 /* DDR1/DDR2 DRAM_B Channel, Port MB */ 227290a34a0Smatt #define RMIXL_IO_DEV_DDR_CHNC 0x03000 /* DDR1/DDR2 DRAM_C Channel, Port MC */ 228290a34a0Smatt #define RMIXL_IO_DEV_DDR_CHND 0x04000 /* DDR1/DDR2 DRAM_D Channel, Port MD */ 229290a34a0Smatt #if defined(MIPS64_XLR) 230290a34a0Smatt #define RMIXL_IO_DEV_SRAM 0x07000 /* SRAM Controller, Port SA */ 231290a34a0Smatt #endif /* MIPS64_XLR */ 232290a34a0Smatt #define RMIXL_IO_DEV_PIC 0x08000 /* Programmable Interrupt Controller */ 233290a34a0Smatt #if defined(MIPS64_XLR) 234290a34a0Smatt #define RMIXL_IO_DEV_PCIX 0x09000 /* PCI-X */ 2353e67b512Smatt #define RMIXL_IO_DEV_PCIX_EL \ 2363e67b512Smatt RMIXL_IO_DEV_PCIX /* PXI-X little endian */ 2373e67b512Smatt #define RMIXL_IO_DEV_PCIX_EB \ 2383e67b512Smatt (RMIXL_IO_DEV_PCIX | __BIT(11)) /* PXI-X big endian */ 239290a34a0Smatt #define RMIXL_IO_DEV_HT 0x0a000 /* HyperTransport */ 240290a34a0Smatt #endif /* MIPS64_XLR */ 241290a34a0Smatt #define RMIXL_IO_DEV_SAE 0x0b000 /* Security Acceleration Engine */ 242290a34a0Smatt #if defined(MIPS64_XLS) 2433e67b512Smatt #define XAUI_INTERFACE_0 0x0c000 /* XAUI Interface_0 */ 244290a34a0Smatt /* when SGMII Interface_[0-3] are not used */ 2453e67b512Smatt #define RMIXL_IO_DEV_GMAC_0 0x0c000 /* SGMII-Interface_0, Port SGMII0 */ 2463e67b512Smatt #define RMIXL_IO_DEV_GMAC_1 0x0d000 /* SGMII-Interface_1, Port SGMII1 */ 2473e67b512Smatt #define RMIXL_IO_DEV_GMAC_2 0x0e000 /* SGMII-Interface_2, Port SGMII2 */ 2483e67b512Smatt #define RMIXL_IO_DEV_GMAC_3 0x0f000 /* SGMII-Interface_3, Port SGMII3 */ 249290a34a0Smatt #endif /* MIPS64_XLS */ 250290a34a0Smatt #if defined(MIPS64_XLR) 2513e67b512Smatt #define RMIXL_IO_DEV_GMAC_A 0x0c000 /* RGMII-Interface_0, Port RA */ 2523e67b512Smatt #define RMIXL_IO_DEV_GMAC_B 0x0d000 /* RGMII-Interface_1, Port RB */ 2533e67b512Smatt #define RMIXL_IO_DEV_GMAC_C 0x0e000 /* RGMII-Interface_2, Port RC */ 2543e67b512Smatt #define RMIXL_IO_DEV_GMAC_D 0x0f000 /* RGMII-Interface_3, Port RD */ 255290a34a0Smatt #define RMIXL_IO_DEV_SPI4_A 0x10000 /* SPI-4.2-Interface_A, Port XA */ 256290a34a0Smatt #define RMIXL_IO_DEV_XGMAC_A 0x11000 /* XGMII-Interface_A, Port XA */ 257290a34a0Smatt #define RMIXL_IO_DEV_SPI4_B 0x12000 /* SPI-4.2-Interface_B, Port XB */ 258290a34a0Smatt #define RMIXL_IO_DEV_XGMAC_B 0x13000 /* XGMII-Interface_B, Port XB */ 259290a34a0Smatt #endif /* MIPS64_XLR */ 260290a34a0Smatt #define RMIXL_IO_DEV_UART_1 0x14000 /* UART_1 (16550 w/ ax4 addrs) */ 261290a34a0Smatt #define RMIXL_IO_DEV_UART_2 0x15000 /* UART_2 (16550 w/ ax4 addrs) */ 262290a34a0Smatt #define RMIXL_IO_DEV_I2C_1 0x16000 /* I2C_1 */ 263290a34a0Smatt #define RMIXL_IO_DEV_I2C_2 0x17000 /* I2C_2 */ 264290a34a0Smatt #define RMIXL_IO_DEV_GPIO 0x18000 /* GPIO */ 26502246879Scliff #define RMIXL_IO_DEV_FLASH 0x19000 /* Peripherals IO Bus, to Flash memory &etc. */ 266290a34a0Smatt #define RMIXL_IO_DEV_DMA 0x1a000 /* DMA */ 267290a34a0Smatt #define RMIXL_IO_DEV_L2 0x1b000 /* L2 Cache */ 268290a34a0Smatt #define RMIXL_IO_DEV_TB 0x1c000 /* Trace Buffer */ 269290a34a0Smatt #if defined(MIPS64_XLS) 2703e67b512Smatt #define RMIXL_IO_DEV_CDE 0x1d000 /* Compression/Decompression Engine */ 271290a34a0Smatt #define RMIXL_IO_DEV_PCIE_BE 0x1e000 /* PCI-Express_BE */ 272290a34a0Smatt #define RMIXL_IO_DEV_PCIE_LE 0x1f000 /* PCI-Express_LE */ 273290a34a0Smatt #define RMIXL_IO_DEV_SRIO_BE 0x1e000 /* SRIO_BE */ 274290a34a0Smatt #define RMIXL_IO_DEV_SRIO_LE 0x1f000 /* SRIO_LE */ 275290a34a0Smatt #define RMIXL_IO_DEV_XAUI_1 0x20000 /* XAUI Interface_1 */ 276290a34a0Smatt /* when SGMII Interface_[4-7] are not used */ 277290a34a0Smatt #define RMIXL_IO_DEV_GMAC_4 0x20000 /* SGMII-Interface_4, Port SGMII4 */ 278290a34a0Smatt #define RMIXL_IO_DEV_GMAC_5 0x21000 /* SGMII-Interface_5, Port SGMII5 */ 279290a34a0Smatt #define RMIXL_IO_DEV_GMAC_6 0x22000 /* SGMII-Interface_6, Port SGMII6 */ 280290a34a0Smatt #define RMIXL_IO_DEV_GMAC_7 0x23000 /* SGMII-Interface_7, Port SGMII7 */ 281290a34a0Smatt #define RMIXL_IO_DEV_USB_A 0x24000 /* USB Interface Low Address Space */ 282290a34a0Smatt #define RMIXL_IO_DEV_USB_B 0x25000 /* USB Interface High Address Space */ 283290a34a0Smatt #endif /* MIPS64_XLS */ 284290a34a0Smatt 285290a34a0Smatt 286290a34a0Smatt /* 287290a34a0Smatt * the Programming Reference Manual 288290a34a0Smatt * lists "Reg ID" values not offsets; 289290a34a0Smatt * offset = id * 4 290290a34a0Smatt */ 291290a34a0Smatt #define _RMIXL_OFFSET(id) ((id) * 4) 292290a34a0Smatt 293290a34a0Smatt 294290a34a0Smatt /* 295290a34a0Smatt * System Bridge Controller registers 296290a34a0Smatt * offsets are relative to RMIXL_IO_DEV_BRIDGE 297290a34a0Smatt */ 298290a34a0Smatt #define RMIXL_SBC_DRAM_NBARS 8 299290a34a0Smatt #define RMIXL_SBC_DRAM_BAR(n) _RMIXL_OFFSET(0x000 + (n)) 300290a34a0Smatt /* DRAM Region Base Address Regs[0-7] */ 301290a34a0Smatt #define RMIXL_SBC_DRAM_CHNAC_DTR(n) _RMIXL_OFFSET(0x008 + (n)) 302290a34a0Smatt /* DRAM Region Channels A,C Address Translation Regs[0-7] */ 303290a34a0Smatt #define RMIXL_SBC_DRAM_CHNBD_DTR(n) _RMIXL_OFFSET(0x010 + (n)) 304290a34a0Smatt /* DRAM Region Channels B,D Address Translation Regs[0-7] */ 305290a34a0Smatt #define RMIXL_SBC_DRAM_BRIDGE_CFG _RMIXL_OFFSET(0x18) /* SBC DRAM config reg */ 30602246879Scliff 30702246879Scliff #define RMIXL_SBC_IO_BAR _RMIXL_OFFSET(0x19) /* I/O Config Base Addr reg */ 30802246879Scliff #define RMIXL_SBC_FLASH_BAR _RMIXL_OFFSET(0x1a) /* Flash Memory Base Addr reg */ 30902246879Scliff 3103e67b512Smatt #if defined(MIPS64_XLR) 3113e67b512Smatt #define RMIXLR_SBC_SRAM_BAR _RMIXL_OFFSET(0x1b) /* SRAM Base Addr reg */ 3123e67b512Smatt #define RMIXLR_SBC_HTMEM_BAR _RMIXL_OFFSET(0x1c) /* HyperTransport Mem Base Addr reg */ 3133e67b512Smatt #define RMIXLR_SBC_HTINT_BAR _RMIXL_OFFSET(0x1d) /* HyperTransport Interrupt Base Addr reg */ 3143e67b512Smatt #define RMIXLR_SBC_HTPIC_BAR _RMIXL_OFFSET(0x1e) /* HyperTransport Legacy PIC Base Addr reg */ 3153e67b512Smatt #define RMIXLR_SBC_HTSM_BAR _RMIXL_OFFSET(0x1f) /* HyperTransport System Management Base Addr reg */ 3163e67b512Smatt #define RMIXLR_SBC_HTIO_BAR _RMIXL_OFFSET(0x20) /* HyperTransport IO Base Addr reg */ 3173e67b512Smatt #define RMIXLR_SBC_HTCFG_BAR _RMIXL_OFFSET(0x21) /* HyperTransport Configuration Base Addr reg */ 3183e67b512Smatt #define RMIXLR_SBC_PCIX_CFG_BAR _RMIXL_OFFSET(0x22) /* PCI-X Configuration Base Addr reg */ 3193e67b512Smatt #define RMIXLR_SBC_PCIX_MEM_BAR _RMIXL_OFFSET(0x23) /* PCI-X Mem Base Addr reg */ 3203e67b512Smatt #define RMIXLR_SBC_PCIX_IO_BAR _RMIXL_OFFSET(0x24) /* PCI-X IO Base Addr reg */ 3213e67b512Smatt #define RMIXLR_SBC_SYS2IO_CREDITS _RMIXL_OFFSET(0x35) /* System Bridge I/O Transaction Credits register */ 3223e67b512Smatt #endif /* MIPS64_XLR */ 3233e67b512Smatt #if defined(MIPS64_XLS) 3243e67b512Smatt #define RMIXLS_SBC_PCIE_CFG_BAR _RMIXL_OFFSET(0x40) /* PCI Configuration BAR */ 3253e67b512Smatt #define RMIXLS_SBC_PCIE_ECFG_BAR _RMIXL_OFFSET(0x41) /* PCI Extended Configuration BAR */ 3263e67b512Smatt #define RMIXLS_SBC_PCIE_MEM_BAR _RMIXL_OFFSET(0x42) /* PCI Memory region BAR */ 3273e67b512Smatt #define RMIXLS_SBC_PCIE_IO_BAR _RMIXL_OFFSET(0x43) /* PCI IO region BAR */ 3283e67b512Smatt #endif /* MIPS64_XLS */ 329290a34a0Smatt 330290a34a0Smatt /* 331290a34a0Smatt * Address Error registers 332290a34a0Smatt * offsets are relative to RMIXL_IO_DEV_BRIDGE 333290a34a0Smatt */ 334290a34a0Smatt #define RMIXL_ADDR_ERR_DEVICE_MASK _RMIXL_OFFSET(0x25) /* Address Error Device Mask */ 3353e67b512Smatt #define RMIXL_ADDR_ERR_DEVICE_MASK_2 _RMIXL_OFFSET(0x44) /* extension of Device Mask */ 336290a34a0Smatt #define RMIXL_ADDR_ERR_AERR0_LOG1 _RMIXL_OFFSET(0x26) /* Address Error Set 0 Log 1 */ 337290a34a0Smatt #define RMIXL_ADDR_ERR_AERR0_LOG2 _RMIXL_OFFSET(0x27) /* Address Error Set 0 Log 2 */ 338290a34a0Smatt #define RMIXL_ADDR_ERR_AERR0_LOG3 _RMIXL_OFFSET(0x28) /* Address Error Set 0 Log 3 */ 339290a34a0Smatt #define RMIXL_ADDR_ERR_AERR0_DEVSTAT _RMIXL_OFFSET(0x29) /* Address Error Set 0 irpt status */ 340290a34a0Smatt #define RMIXL_ADDR_ERR_AERR1_LOG1 _RMIXL_OFFSET(0x2a) /* Address Error Set 1 Log 1 */ 341290a34a0Smatt #define RMIXL_ADDR_ERR_AERR1_LOG2 _RMIXL_OFFSET(0x2b) /* Address Error Set 1 Log 2 */ 342290a34a0Smatt #define RMIXL_ADDR_ERR_AERR1_LOG3 _RMIXL_OFFSET(0x2c) /* Address Error Set 1 Log 3 */ 343290a34a0Smatt #define RMIXL_ADDR_ERR_AERR1_DEVSTAT _RMIXL_OFFSET(0x2d) /* Address Error Set 1 irpt status */ 344290a34a0Smatt #define RMIXL_ADDR_ERR_AERR0_EN _RMIXL_OFFSET(0x2e) /* Address Error Set 0 irpt enable */ 345290a34a0Smatt #define RMIXL_ADDR_ERR_AERR0_UPG _RMIXL_OFFSET(0x2f) /* Address Error Set 0 Upgrade */ 346290a34a0Smatt #define RMIXL_ADDR_ERR_AERR0_CLEAR _RMIXL_OFFSET(0x30) /* Address Error Set 0 irpt clear */ 347290a34a0Smatt #define RMIXL_ADDR_ERR_AERR1_CLEAR _RMIXL_OFFSET(0x31) /* Address Error Set 1 irpt clear */ 348290a34a0Smatt #define RMIXL_ADDR_ERR_SBE_COUNTS _RMIXL_OFFSET(0x32) /* Single Bit Error Counts */ 349290a34a0Smatt #define RMIXL_ADDR_ERR_DBE_COUNTS _RMIXL_OFFSET(0x33) /* Double Bit Error Counts */ 350290a34a0Smatt #define RMIXL_ADDR_ERR_BITERR_INT_EN _RMIXL_OFFSET(0x33) /* Bit Error intr enable */ 351290a34a0Smatt 352290a34a0Smatt /* 35302246879Scliff * RMIXL_SBC_FLASH_BAR bit defines 35402246879Scliff */ 35502246879Scliff #define RMIXL_FLASH_BAR_BASE __BITS(31,16) /* phys address bits 39:24 */ 35602246879Scliff #define RMIXL_FLASH_BAR_TO_BA(r) \ 35702246879Scliff (((r) & RMIXL_FLASH_BAR_BASE) << (24 - 16)) 35802246879Scliff #define RMIXL_FLASH_BAR_MASK __BITS(15,5) /* phys address mask bits 34:24 */ 35902246879Scliff #define RMIXL_FLASH_BAR_TO_MASK(r) \ 36002246879Scliff (((((r) & RMIXL_FLASH_BAR_MASK)) << (24 - 5)) | __BITS(23, 0)) 36102246879Scliff #define RMIXL_FLASH_BAR_RESV __BITS(4,1) /* (reserved) */ 36202246879Scliff #define RMIXL_FLASH_BAR_ENB __BIT(0) /* 1=Enable */ 36302246879Scliff #define RMIXL_FLASH_BAR_MASK_MAX RMIXL_FLASH_BAR_TO_MASK(RMIXL_FLASH_BAR_MASK) 36402246879Scliff 36502246879Scliff /* 366290a34a0Smatt * RMIXL_SBC_DRAM_BAR bit defines 367290a34a0Smatt */ 368290a34a0Smatt #define RMIXL_DRAM_BAR_BASE_ADDR __BITS(31,16) /* bits 39:24 of Base Address */ 369290a34a0Smatt #define DRAM_BAR_TO_BASE(r) \ 370290a34a0Smatt (((r) & RMIXL_DRAM_BAR_BASE_ADDR) << (24 - 16)) 371290a34a0Smatt #define RMIXL_DRAM_BAR_ADDR_MASK __BITS(15,4) /* bits 35:24 of Address Mask */ 372290a34a0Smatt #define DRAM_BAR_TO_SIZE(r) \ 373290a34a0Smatt ((((r) & RMIXL_DRAM_BAR_ADDR_MASK) + __BIT(4)) << (24 - 4)) 374290a34a0Smatt #define RMIXL_DRAM_BAR_INTERLEAVE __BITS(3,1) /* Interleave Mode */ 375290a34a0Smatt #define RMIXL_DRAM_BAR_STATUS __BIT(0) /* 1='region enabled' */ 376290a34a0Smatt 377290a34a0Smatt /* 378290a34a0Smatt * RMIXL_SBC_DRAM_CHNAC_DTR and 379290a34a0Smatt * RMIXL_SBC_DRAM_CHNBD_DTR bit defines 380290a34a0Smatt * insert 'divisions' (0, 1 or 2) bits 381290a34a0Smatt * of value 'partition' 382290a34a0Smatt * at 'position' bit location. 383290a34a0Smatt */ 384290a34a0Smatt #define RMIXL_DRAM_DTR_RESa __BITS(31,14) 385290a34a0Smatt #define RMIXL_DRAM_DTR_PARTITION __BITS(13,12) 386290a34a0Smatt #define RMIXL_DRAM_DTR_RESb __BITS(11,10) 387290a34a0Smatt #define RMIXL_DRAM_DTR_DIVISIONS __BITS(9,8) 388290a34a0Smatt #define RMIXL_DRAM_DTR_RESc __BITS(7,6) 389290a34a0Smatt #define RMIXL_DRAM_DTR_POSITION __BITS(5,0) 390290a34a0Smatt #define RMIXL_DRAM_DTR_RESV \ 391290a34a0Smatt (RMIXL_DRAM_DTR_RESa|RMIXL_DRAM_DTR_RESb|RMIXL_DRAM_DTR_RESc) 392290a34a0Smatt 393290a34a0Smatt /* 394290a34a0Smatt * RMIXL_SBC_DRAM_BRIDGE_CFG bit defines 395290a34a0Smatt */ 396290a34a0Smatt #define RMIXL_DRAM_CFG_RESa __BITS(31,13) 397290a34a0Smatt #define RMIXL_DRAM_CFG_CHANNEL_MODE __BIT(12) 398290a34a0Smatt #define RMIXL_DRAM_CFG_RESb __BIT(11) 399290a34a0Smatt #define RMIXL_DRAM_CFG_INTERLEAVE_MODE __BITS(10,8) 400290a34a0Smatt #define RMIXL_DRAM_CFG_RESc __BITS(7,5) 401290a34a0Smatt #define RMIXL_DRAM_CFG_BUS_MODE __BIT(4) 402290a34a0Smatt #define RMIXL_DRAM_CFG_RESd __BITS(3,2) 403290a34a0Smatt #define RMIXL_DRAM_CFG_DRAM_MODE __BITS(1,0) /* 1=DDR2 */ 404290a34a0Smatt 405290a34a0Smatt /* 4063e67b512Smatt * RMIXL_SBC_XLR_PCIX_CFG_BAR bit defines 4073e67b512Smatt */ 4083e67b512Smatt #define RMIXL_PCIX_CFG_BAR_BASE __BITS(31,17) /* phys address bits 39:25 */ 4093e67b512Smatt #define RMIXL_PCIX_CFG_BAR_BA_SHIFT (25 - 17) 4103e67b512Smatt #define RMIXL_PCIX_CFG_BAR_TO_BA(r) \ 4113e67b512Smatt (((r) & RMIXL_PCIX_CFG_BAR_BASE) << RMIXL_PCIX_CFG_BAR_BA_SHIFT) 4123e67b512Smatt #define RMIXL_PCIX_CFG_BAR_RESV __BITS(16,1) /* (reserved) */ 4133e67b512Smatt #define RMIXL_PCIX_CFG_BAR_ENB __BIT(0) /* 1=Enable */ 4143e67b512Smatt #define RMIXL_PCIX_CFG_SIZE __BIT(25) 4153e67b512Smatt #define RMIXL_PCIX_CFG_BAR(ba, en) \ 4163e67b512Smatt ((uint32_t)(((ba) >> (25 - 17)) | ((en) ? RMIXL_PCIX_CFG_BAR_ENB : 0))) 4173e67b512Smatt 4183e67b512Smatt /* 4193e67b512Smatt * RMIXLR_SBC_PCIX_MEM_BAR bit defines 4203e67b512Smatt */ 4213e67b512Smatt #define RMIXL_PCIX_MEM_BAR_BASE __BITS(31,16) /* phys address bits 39:24 */ 4223e67b512Smatt #define RMIXL_PCIX_MEM_BAR_TO_BA(r) \ 4233e67b512Smatt (((r) & RMIXL_PCIX_MEM_BAR_BASE) << (24 - 16)) 4243e67b512Smatt #define RMIXL_PCIX_MEM_BAR_MASK __BITS(15,1) /* phys address mask bits 38:24 */ 4253e67b512Smatt #define RMIXL_PCIX_MEM_BAR_TO_SIZE(r) \ 4263e67b512Smatt ((((r) & RMIXL_PCIX_MEM_BAR_MASK) + 2) << (24 - 1)) 4273e67b512Smatt #define RMIXL_PCIX_MEM_BAR_ENB __BIT(0) /* 1=Enable */ 4283e67b512Smatt #define RMIXL_PCIX_MEM_BAR(ba, en) \ 4293e67b512Smatt ((uint32_t)(((ba) >> (24 - 16)) | ((en) ? RMIXL_PCIX_MEM_BAR_ENB : 0))) 4303e67b512Smatt 4313e67b512Smatt /* 4323e67b512Smatt * RMIXLR_SBC_PCIX_IO_BAR bit defines 4333e67b512Smatt */ 4343e67b512Smatt #define RMIXL_PCIX_IO_BAR_BASE __BITS(31,18) /* phys address bits 39:26 */ 4353e67b512Smatt #define RMIXL_PCIX_IO_BAR_TO_BA(r) \ 4363e67b512Smatt (((r) & RMIXL_PCIX_IO_BAR_BASE) << (26 - 18)) 4373e67b512Smatt #define RMIXL_PCIX_IO_BAR_RESV __BITS(17,7) /* (reserve) */ 4383e67b512Smatt #define RMIXL_PCIX_IO_BAR_MASK __BITS(6,1) /* phys address mask bits 31:26 */ 4393e67b512Smatt #define RMIXL_PCIX_IO_BAR_TO_SIZE(r) \ 4403e67b512Smatt ((((r) & RMIXL_PCIX_IO_BAR_MASK) + 2) << (26 - 1)) 4413e67b512Smatt #define RMIXL_PCIX_IO_BAR_ENB __BIT(0) /* 1=Enable */ 4423e67b512Smatt #define RMIXL_PCIX_IO_BAR(ba, en) \ 4433e67b512Smatt ((uint32_t)(((ba) >> (26 - 18)) | ((en) ? RMIXL_PCIX_IO_BAR_ENB : 0))) 4443e67b512Smatt 4453e67b512Smatt /* 4463e67b512Smatt * RMIXLS_SBC_PCIE_CFG_BAR bit defines 447290a34a0Smatt */ 448290a34a0Smatt #define RMIXL_PCIE_CFG_BAR_BASE __BITS(31,17) /* phys address bits 39:25 */ 449290a34a0Smatt #define RMIXL_PCIE_CFG_BAR_BA_SHIFT (25 - 17) 450290a34a0Smatt #define RMIXL_PCIE_CFG_BAR_TO_BA(r) \ 451290a34a0Smatt (((r) & RMIXL_PCIE_CFG_BAR_BASE) << RMIXL_PCIE_CFG_BAR_BA_SHIFT) 452290a34a0Smatt #define RMIXL_PCIE_CFG_BAR_RESV __BITS(16,1) /* (reserved) */ 453290a34a0Smatt #define RMIXL_PCIE_CFG_BAR_ENB __BIT(0) /* 1=Enable */ 454290a34a0Smatt #define RMIXL_PCIE_CFG_SIZE __BIT(25) 455290a34a0Smatt #define RMIXL_PCIE_CFG_BAR(ba, en) \ 456290a34a0Smatt ((uint32_t)(((ba) >> (25 - 17)) | ((en) ? RMIXL_PCIE_CFG_BAR_ENB : 0))) 457290a34a0Smatt 458290a34a0Smatt /* 4593e67b512Smatt * RMIXLS_SBC_PCIE_ECFG_BAR bit defines 460290a34a0Smatt * (PCIe extended config space) 461290a34a0Smatt */ 462290a34a0Smatt #define RMIXL_PCIE_ECFG_BAR_BASE __BITS(31,21) /* phys address bits 39:29 */ 463290a34a0Smatt #define RMIXL_PCIE_ECFG_BAR_BA_SHIFT (29 - 21) 464290a34a0Smatt #define RMIXL_PCIE_ECFG_BAR_TO_BA(r) \ 465290a34a0Smatt (((r) & RMIXL_PCIE_ECFG_BAR_BASE) << RMIXL_PCIE_ECFG_BAR_BA_SHIFT) 466290a34a0Smatt #define RMIXL_PCIE_ECFG_BAR_RESV __BITS(20,1) /* (reserved) */ 467290a34a0Smatt #define RMIXL_PCIE_ECFG_BAR_ENB __BIT(0) /* 1=Enable */ 468290a34a0Smatt #define RMIXL_PCIE_ECFG_SIZE __BIT(29) 469290a34a0Smatt #define RMIXL_PCIE_ECFG_BAR(ba, en) \ 470290a34a0Smatt ((uint32_t)(((ba) >> (29 - 21)) | ((en) ? RMIXL_PCIE_ECFG_BAR_ENB : 0))) 471290a34a0Smatt 472290a34a0Smatt /* 4733e67b512Smatt * RMIXLS_SBC_PCIE_MEM_BAR bit defines 474290a34a0Smatt */ 475290a34a0Smatt #define RMIXL_PCIE_MEM_BAR_BASE __BITS(31,16) /* phys address bits 39:24 */ 476290a34a0Smatt #define RMIXL_PCIE_MEM_BAR_TO_BA(r) \ 477290a34a0Smatt (((r) & RMIXL_PCIE_MEM_BAR_BASE) << (24 - 16)) 478290a34a0Smatt #define RMIXL_PCIE_MEM_BAR_MASK __BITS(15,1) /* phys address mask bits 38:24 */ 479290a34a0Smatt #define RMIXL_PCIE_MEM_BAR_TO_SIZE(r) \ 480290a34a0Smatt ((((r) & RMIXL_PCIE_MEM_BAR_MASK) + 2) << (24 - 1)) 481290a34a0Smatt #define RMIXL_PCIE_MEM_BAR_ENB __BIT(0) /* 1=Enable */ 482290a34a0Smatt #define RMIXL_PCIE_MEM_BAR(ba, en) \ 483290a34a0Smatt ((uint32_t)(((ba) >> (24 - 16)) | ((en) ? RMIXL_PCIE_MEM_BAR_ENB : 0))) 484290a34a0Smatt 485290a34a0Smatt /* 4863e67b512Smatt * RMIXLS_SBC_PCIE_IO_BAR bit defines 487290a34a0Smatt */ 488290a34a0Smatt #define RMIXL_PCIE_IO_BAR_BASE __BITS(31,18) /* phys address bits 39:26 */ 489290a34a0Smatt #define RMIXL_PCIE_IO_BAR_TO_BA(r) \ 490290a34a0Smatt (((r) & RMIXL_PCIE_IO_BAR_BASE) << (26 - 18)) 491290a34a0Smatt #define RMIXL_PCIE_IO_BAR_RESV __BITS(17,7) /* (reserve) */ 492290a34a0Smatt #define RMIXL_PCIE_IO_BAR_MASK __BITS(6,1) /* phys address mask bits 31:26 */ 493290a34a0Smatt #define RMIXL_PCIE_IO_BAR_TO_SIZE(r) \ 494290a34a0Smatt ((((r) & RMIXL_PCIE_IO_BAR_MASK) + 2) << (26 - 1)) 495290a34a0Smatt #define RMIXL_PCIE_IO_BAR_ENB __BIT(0) /* 1=Enable */ 496290a34a0Smatt #define RMIXL_PCIE_IO_BAR(ba, en) \ 497290a34a0Smatt ((uint32_t)(((ba) >> (26 - 18)) | ((en) ? RMIXL_PCIE_IO_BAR_ENB : 0))) 498290a34a0Smatt 499290a34a0Smatt 500290a34a0Smatt /* 501290a34a0Smatt * Programmable Interrupt Controller registers 502290a34a0Smatt * the Programming Reference Manual table 10.4 503290a34a0Smatt * lists "Reg ID" values not offsets 504290a34a0Smatt * Offsets are relative to RMIXL_IO_DEV_BRIDGE 505290a34a0Smatt */ 506290a34a0Smatt #define RMIXL_PIC_CONTROL _RMIXL_OFFSET(0x0) 507290a34a0Smatt #define RMIXL_PIC_IPIBASE _RMIXL_OFFSET(0x4) 508290a34a0Smatt #define RMIXL_PIC_INTRACK _RMIXL_OFFSET(0x6) 509290a34a0Smatt #define RMIXL_PIC_WATCHdOGMAXVALUE0 _RMIXL_OFFSET(0x8) 510290a34a0Smatt #define RMIXL_PIC_WATCHDOGMAXVALUE1 _RMIXL_OFFSET(0x9) 511290a34a0Smatt #define RMIXL_PIC_WATCHDOGMASK0 _RMIXL_OFFSET(0xa) 512290a34a0Smatt #define RMIXL_PIC_WATCHDOGMASK1 _RMIXL_OFFSET(0xb) 513290a34a0Smatt #define RMIXL_PIC_WATCHDOGHEARTBEAT0 _RMIXL_OFFSET(0xc) 514290a34a0Smatt #define RMIXL_PIC_WATCHDOGHEARTBEAT1 _RMIXL_OFFSET(0xd) 515290a34a0Smatt #define RMIXL_PIC_IRTENTRYC0(n) _RMIXL_OFFSET(0x40 + (n)) /* 0<=n<=31 */ 516290a34a0Smatt #define RMIXL_PIC_IRTENTRYC1(n) _RMIXL_OFFSET(0x80 + (n)) /* 0<=n<=31 */ 517290a34a0Smatt #define RMIXL_PIC_SYSTMRMAXVALC0(n) _RMIXL_OFFSET(0x100 + (n)) /* 0<=n<=7 */ 518290a34a0Smatt #define RMIXL_PIC_SYSTMRMAXVALC1(n) _RMIXL_OFFSET(0x110 + (n)) /* 0<=n<=7 */ 519290a34a0Smatt #define RMIXL_PIC_SYSTMRC0(n) _RMIXL_OFFSET(0x120 + (n)) /* 0<=n<=7 */ 520290a34a0Smatt #define RMIXL_PIC_SYSTMRC1(n) _RMIXL_OFFSET(0x130 + (n)) /* 0<=n<=7 */ 521290a34a0Smatt 522290a34a0Smatt /* 523290a34a0Smatt * RMIXL_PIC_CONTROL bits 524290a34a0Smatt */ 525290a34a0Smatt #define RMIXL_PIC_CONTROL_WATCHDOG_ENB __BIT(0) 526290a34a0Smatt #define RMIXL_PIC_CONTROL_GEN_NMI __BITS(2,1) /* do NMI after n WDog irpts */ 527290a34a0Smatt #define RMIXL_PIC_CONTROL_GEN_NMIn(n) (((n) << 1) & RMIXL_PIC_CONTROL_GEN_NMI) 528290a34a0Smatt #define RMIXL_PIC_CONTROL_RESa __BITS(7,3) 529290a34a0Smatt #define RMIXL_PIC_CONTROL_TIMER_ENB __BITS(15,8) /* per-Timer enable bits */ 5303e67b512Smatt #define RMIXL_PIC_CONTROL_TIMER_ENBn(n) ((1 << (8 + (n))) & RMIXL_PIC_CONTROL_TIMER_ENB) 531290a34a0Smatt #define RMIXL_PIC_CONTROL_RESb __BITS(31,16) 532290a34a0Smatt #define RMIXL_PIC_CONTROL_RESV \ 533290a34a0Smatt (RMIXL_PIC_CONTROL_RESa|RMIXL_PIC_CONTROL_RESb) 534290a34a0Smatt 535290a34a0Smatt /* 536290a34a0Smatt * RMIXL_PIC_IPIBASE bits 537290a34a0Smatt */ 538290a34a0Smatt #define RMIXL_PIC_IPIBASE_VECTORNUM __BITS(5,0) 539290a34a0Smatt #define RMIXL_PIC_IPIBASE_RESa __BIT(6) /* undocumented bit */ 540290a34a0Smatt #define RMIXL_PIC_IPIBASE_BCAST __BIT(7) 541290a34a0Smatt #define RMIXL_PIC_IPIBASE_NMI __BIT(8) 542290a34a0Smatt #define RMIXL_PIC_IPIBASE_ID __BITS(31,16) 543290a34a0Smatt #define RMIXL_PIC_IPIBASE_ID_RESb __BITS(31,23) 5443e67b512Smatt #define RMIXL_PIC_IPIBASE_ID_CORE __BITS(22,20) /* Physical CPU ID */ 5453e67b512Smatt #define RMIXL_PIC_IPIBASE_ID_CORE_SHIFT 20 546290a34a0Smatt #define RMIXL_PIC_IPIBASE_ID_RESc __BITS(19,18) 5473e67b512Smatt #define RMIXL_PIC_IPIBASE_ID_THREAD __BITS(17,16) /* Thread ID */ 5483e67b512Smatt #define RMIXL_PIC_IPIBASE_ID_THREAD_SHIFT 16 549290a34a0Smatt #define RMIXL_PIC_IPIBASE_ID_RESV \ 550290a34a0Smatt (RMIXL_PIC_IPIBASE_ID_RESa|RMIXL_PIC_IPIBASE_ID_RESb \ 551290a34a0Smatt |RMIXL_PIC_IPIBASE_ID_RESc) 552290a34a0Smatt 553290a34a0Smatt /* 554290a34a0Smatt * RMIXL_PIC_IRTENTRYC0 bits 555290a34a0Smatt * IRT Entry low word 556290a34a0Smatt */ 557290a34a0Smatt #define RMIXL_PIC_IRTENTRYC0_TMASK __BITS(7,0) /* Thread Mask */ 558290a34a0Smatt #define RMIXL_PIC_IRTENTRYC0_RESa __BITS(3,2) /* write as 0 */ 559290a34a0Smatt #define RMIXL_PIC_IRTENTRYC0_RESb __BITS(31,8) /* write as 0 */ 560290a34a0Smatt #define RMIXL_PIC_IRTENTRYC0_RESV \ 561290a34a0Smatt (RMIXL_PIC_IRTENTRYC0_RESa | RMIXL_PIC_IRTENTRYC0_RESb) 562290a34a0Smatt 563290a34a0Smatt /* 564290a34a0Smatt * RMIXL_PIC_IRTENTRYC1 bits 565290a34a0Smatt * IRT Entry high word 566290a34a0Smatt */ 567290a34a0Smatt #define RMIXL_PIC_IRTENTRYC1_INTVEC __BITS(5,0) /* maps to bit# in CPU's EIRR */ 568290a34a0Smatt #define RMIXL_PIC_IRTENTRYC1_GL __BIT(6) /* 0=Global; 1=Local */ 569290a34a0Smatt #define RMIXL_PIC_IRTENTRYC1_NMI __BIT(7) /* 0=Maskable; 1=NMI */ 570290a34a0Smatt #define RMIXL_PIC_IRTENTRYC1_RESV __BITS(28,8) 571290a34a0Smatt #define RMIXL_PIC_IRTENTRYC1_P __BIT(29) /* 0=Rising/High; 1=Falling/Low */ 572290a34a0Smatt #define RMIXL_PIC_IRTENTRYC1_TRG __BIT(30) /* 0=Edge; 1=Level */ 573290a34a0Smatt #define RMIXL_PIC_IRTENTRYC1_VALID __BIT(31) /* 0=Invalid; 1=Valid IRT Entry */ 574290a34a0Smatt 575290a34a0Smatt 576290a34a0Smatt /* 577290a34a0Smatt * GPIO Controller registers 57802246879Scliff * bit number is same as GPIO pin number for the GPIO masks below 579290a34a0Smatt */ 580290a34a0Smatt 58102246879Scliff #define RMIXL_GPIO_NSIGNALS 25 /* 25 GPIO signals supported in HW */ 58202246879Scliff 583290a34a0Smatt /* GPIO Signal Registers */ 584290a34a0Smatt #define RMIXL_GPIO_INT_ENB _RMIXL_OFFSET(0x0) /* Interrupt Enable register */ 585290a34a0Smatt #define RMIXL_GPIO_INT_INV _RMIXL_OFFSET(0x1) /* Interrupt Inversion register */ 586290a34a0Smatt #define RMIXL_GPIO_IO_DIR _RMIXL_OFFSET(0x2) /* I/O Direction register */ 587290a34a0Smatt #define RMIXL_GPIO_OUTPUT _RMIXL_OFFSET(0x3) /* Output Write register */ 58802246879Scliff #define RMIXL_GPIO_INPUT _RMIXL_OFFSET(0x4) /* Intput Read register *//* ro */ 58902246879Scliff #define RMIXL_GPIO_INT_CLR _RMIXL_OFFSET(0x5) /* Interrupt Clear register */ 59002246879Scliff #define RMIXL_GPIO_INT_STS _RMIXL_OFFSET(0x6) /* Interrupt Status register *//* ro */ 591290a34a0Smatt #define RMIXL_GPIO_INT_TYP _RMIXL_OFFSET(0x7) /* Interrupt Type register */ 59202246879Scliff #define RMIXL_GPIO_RESET _RMIXL_OFFSET(0x8) /* XLR/XLS Soft Reset register */ 59302246879Scliff 59402246879Scliff 59502246879Scliff /* 59602246879Scliff * common GPIO bit masks 59702246879Scliff */ 59802246879Scliff #define RMIXL_GPIO_PGM_MASK (__BITS(13,0) | __BITS(22,20) | __BIT(24)) /* programmable pins */ 59902246879Scliff #define RMIXL_GPIO_INTR_MASK (__BITS(13,0) | __BITS(24,20)) /* intr-capable pins */ 60002246879Scliff 60102246879Scliff /* 60202246879Scliff * never-programmable fixed-function GPIO signals 60302246879Scliff * bit number is same as GPIO pin 60402246879Scliff */ 60502246879Scliff #define RMIXL_GPIO_FLASH_CPUID __BITS(16,14) /* Flash CPU ID, output only */ 60602246879Scliff #define RMIXL_GPIO_FLASH_CPUID_SHFT 14 60702246879Scliff #define RMIXL_GPIO_FLASH_RDY __BIT(17) /* Flash memory ready, input only */ 60802246879Scliff #define RMIXL_GPIO_FLASH_ADV __BIT(18) /* Flash memory address valid, output only */ 60902246879Scliff #define RMIXL_GPIO_FLASH_RESET_N __BIT(19) /* Flash memory reset, output only */ 61002246879Scliff #define RMIXL_GPIO_THERMAL_INTRPT __BIT(23) /* Thermal interrupt, interrupt only */ 61102246879Scliff 61202246879Scliff /* 61302246879Scliff * RMIXL_GPIO_INT_ENB bits 61402246879Scliff */ 61502246879Scliff #define RMIXL_GPIO_INT_ENB_MASK RMIXL_GPIO_INTR_MASK 61602246879Scliff 61702246879Scliff /* 61802246879Scliff * RMIXL_GPIO_INT_INV bits 61902246879Scliff * inversion control is possible only on the programmable pins 62002246879Scliff */ 62102246879Scliff #define RMIXL_GPIO_INT_INV_MASK RMIXL_GPIO_PGM_MASK 62202246879Scliff 62302246879Scliff /* 62402246879Scliff * RMIXL_GPIO_IO_DIR bits 62502246879Scliff * direction control is possible only on the programmable pins 62602246879Scliff */ 62702246879Scliff #define RMIXL_GPIO_IO_DIR_MASK RMIXL_GPIO_PGM_MASK 62802246879Scliff 62902246879Scliff /* 63002246879Scliff * RMIXL_GPIO_OUTPUT bits 63102246879Scliff * output is possible only on the programmable pins and fixed-function outputs 63202246879Scliff */ 63302246879Scliff #define RMIXL_GPIO_OUTPUT_MASK (RMIXL_GPIO_PGM_MASK \ 63402246879Scliff | RMIXL_GPIO_FLASH_ADV \ 63502246879Scliff | RMIXL_GPIO_FLASH_RESET_N) 63602246879Scliff 63702246879Scliff /* 63802246879Scliff * RMIXL_GPIO_INPUT bits 63902246879Scliff * input is possible only on the programmable pins and fixed-function inputs & interrupts 64002246879Scliff */ 64102246879Scliff #define RMIXL_GPIO_INPUT_MASK (RMIXL_GPIO_PGM_MASK \ 64202246879Scliff | RMIXL_GPIO_FLASH_RDY \ 64302246879Scliff | RMIXL_GPIO_THERMAL_INTRPT) 64402246879Scliff 64502246879Scliff /* 64602246879Scliff * RMIXL_GPIO_INT_CLR bits 64702246879Scliff */ 64802246879Scliff #define RMIXL_GPIO_INT_CLR_MASK RMIXL_GPIO_INTR_MASK 64902246879Scliff 65002246879Scliff /* 65102246879Scliff * RMIXL_GPIO_INT_STS bits 65202246879Scliff */ 65302246879Scliff #define RMIXL_GPIO_INT_STS_INT_HI_L __BIT(25) /* INT_HI_L (input) requested */ 65402246879Scliff #define RMIXL_GPIO_INT_STS_INT_LO_L __BIT(26) /* INT_LO_L (input) requested */ 65502246879Scliff #define RMIXL_GPIO_INT_STS_MASK (RMIXL_GPIO_INTR_MASK \ 65602246879Scliff | RMIXL_GPIO_INT_STS_INT_LO_L \ 65702246879Scliff | RMIXL_GPIO_INT_STS_INT_HI_L) 65802246879Scliff 65902246879Scliff /* 66002246879Scliff * RMIXL_GPIO_INT_TYP bits 66102246879Scliff * 0=Edge, 1=Level 66202246879Scliff */ 66302246879Scliff #define RMIXL_GPIO_INT_TYP_MASK RMIXL_GPIO_INTR_MASK 664290a34a0Smatt 6653e67b512Smatt /* 6663e67b512Smatt * RMIXL_GPIO_RESET bits 6673e67b512Smatt */ 6683e67b512Smatt #define RMIXL_GPIO_RESET_RESV __BITS(31,1) 6693e67b512Smatt #define RMIXL_GPIO_RESET_RESET __BIT(0) 6703e67b512Smatt 6713e67b512Smatt 672290a34a0Smatt /* GPIO System Control Registers */ 673290a34a0Smatt #define RMIXL_GPIO_RESET_CFG _RMIXL_OFFSET(0x15) /* Reset Configuration register */ 674290a34a0Smatt #define RMIXL_GPIO_THERMAL_CSR _RMIXL_OFFSET(0x16) /* Thermal Control/Status register */ 675290a34a0Smatt #define RMIXL_GPIO_THERMAL_SHFT _RMIXL_OFFSET(0x17) /* Thermal Shift register */ 676290a34a0Smatt #define RMIXL_GPIO_BIST_ALL_STS _RMIXL_OFFSET(0x18) /* BIST All Status register */ 677290a34a0Smatt #define RMIXL_GPIO_BIST_EACH_STS _RMIXL_OFFSET(0x19) /* BIST Each Status register */ 678290a34a0Smatt #define RMIXL_GPIO_SGMII_0_3_PHY_CTL _RMIXL_OFFSET(0x20) /* SGMII #0..3 PHY Control register */ 679290a34a0Smatt #define RMIXL_GPIO_AUI_0_PHY_CTL _RMIXL_OFFSET(0x20) /* AUI port#0 PHY Control register */ 680290a34a0Smatt #define RMIXL_GPIO_SGMII_4_7_PLL_CTL _RMIXL_OFFSET(0x21) /* SGMII #4..7 PLL Control register */ 681290a34a0Smatt #define RMIXL_GPIO_AUI_1_PLL_CTL _RMIXL_OFFSET(0x21) /* AUI port#1 PLL Control register */ 682290a34a0Smatt #define RMIXL_GPIO_SGMII_4_7_PHY_CTL _RMIXL_OFFSET(0x22) /* SGMII #4..7 PHY Control register */ 683290a34a0Smatt #define RMIXL_GPIO_AUI_1_PHY_CTL _RMIXL_OFFSET(0x22) /* AUI port#1 PHY Control register */ 684290a34a0Smatt #define RMIXL_GPIO_INT_MAP _RMIXL_OFFSET(0x25) /* Interrupt Map to PIC, 0=int14, 1=int30 */ 685290a34a0Smatt #define RMIXL_GPIO_EXT_INT _RMIXL_OFFSET(0x26) /* External Interrupt control register */ 686290a34a0Smatt #define RMIXL_GPIO_CPU_RST _RMIXL_OFFSET(0x28) /* CPU Reset control register */ 687290a34a0Smatt #define RMIXL_GPIO_LOW_PWR_DIS _RMIXL_OFFSET(0x29) /* Low Power Dissipation register */ 688290a34a0Smatt #define RMIXL_GPIO_RANDOM _RMIXL_OFFSET(0x2b) /* Low Power Dissipation register */ 689290a34a0Smatt #define RMIXL_GPIO_CPU_CLK_DIS _RMIXL_OFFSET(0x2d) /* CPU Clock Disable register */ 690290a34a0Smatt 691290a34a0Smatt /* 6923e67b512Smatt * RMIXL_GPIO_RESET_CFG bits 6933e67b512Smatt */ 6943e67b512Smatt #define RMIXL_GPIO_RESET_CFG_RESa __BITS(31,28) 6953e67b512Smatt #define RMIXL_GPIO_RESET_CFG_PCIE_SRIO_SEL __BITS(27,26) /* PCIe or SRIO Select: 6963e67b512Smatt * 00 = PCIe selected, SRIO not available 6973e67b512Smatt * 01 = SRIO selected, 1.25 Gbaud (1.0 Gbps) 6983e67b512Smatt * 10 = SRIO selected, 2.25 Gbaud (2.0 Gbps) 6993e67b512Smatt * 11 = SRIO selected, 3.125 Gbaud (2.5 Gbps) 7003e67b512Smatt */ 7013e67b512Smatt #define RMIXL_GPIO_RESET_CFG_XAUI_PORT1_SEL __BIT(25) /* XAUI Port 1 Select: 7023e67b512Smatt * 0 = Disabled - Port is SGMII ports 4-7 7033e67b512Smatt * 1 = Enabled - Port is 4-lane XAUI Port 1 7043e67b512Smatt */ 7053e67b512Smatt #define RMIXL_GPIO_RESET_CFG_XAUI_PORT0_SEL __BIT(24) /* XAUI Port 0 Select: 7063e67b512Smatt * 0 = Disabled - Port is SGMII ports 0-3 7073e67b512Smatt * 1 = Enabled - Port is 4-lane XAUI Port 0 7083e67b512Smatt */ 7093e67b512Smatt #define RMIXL_GPIO_RESET_CFG_RESb __BIT(23) 7103e67b512Smatt #define RMIXL_GPIO_RESET_CFG_USB_DEV __BIT(22) /* USB Device: 7113e67b512Smatt * 0 = Device Mode 7123e67b512Smatt * 1 = Host Mode 7133e67b512Smatt */ 7143e67b512Smatt #define RMIXL_GPIO_RESET_CFG_PCIE_CFG __BITS(21,20) /* PCIe or SRIO configuration */ 7153e67b512Smatt #define RMIXL_GPIO_RESET_CFG_FLASH33_EN __BIT(19) /* Flash 33 MHZ Enable: 7163e67b512Smatt * 0 = 66.67 MHz 7173e67b512Smatt * 1 = 33.33 MHz 7183e67b512Smatt */ 7193e67b512Smatt #define RMIXL_GPIO_RESET_CFG_BIST_DIAG_EN __BIT(18) /* BIST Diagnostics enable */ 7203e67b512Smatt #define RMIXL_GPIO_RESET_CFG_BIST_RUN_EN __BIT(18) /* BIST Run enable */ 72102246879Scliff #define RMIXL_GPIO_RESET_CFG_BOOT_NAND __BIT(16) /* Enable boot from NAND Flash */ 7223e67b512Smatt #define RMIXL_GPIO_RESET_CFG_BOOT_PCMCIA __BIT(15) /* Enable boot from PCMCIA */ 7233e67b512Smatt #define RMIXL_GPIO_RESET_CFG_FLASH_CFG __BIT(14) /* Flash 32-bit Data Configuration: 7243e67b512Smatt * 0 = 32-bit address / 16-bit data 7253e67b512Smatt * 1 = 32-bit address / 32-bit data 7263e67b512Smatt */ 7273e67b512Smatt #define RMIXL_GPIO_RESET_CFG_PCMCIA_EN __BIT(13) /* PCMCIA Enable Status */ 7283e67b512Smatt #define RMIXL_GPIO_RESET_CFG_PARITY_EN __BIT(12) /* Parity Enable Status */ 7293e67b512Smatt #define RMIXL_GPIO_RESET_CFG_BIGEND __BIT(11) /* Big Endian Mode Enable Status */ 7303e67b512Smatt #define RMIXL_GPIO_RESET_CFG_PLL1_OUT_DIV __BITS(10,8) /* PLL1 (Core PLL) Output Divider */ 7313e67b512Smatt #define RMIXL_GPIO_RESET_CFG_PLL1_FB_DIV __BITS(7,0) /* PLL1 Feedback Divider */ 7323e67b512Smatt 7333e67b512Smatt /* 73402246879Scliff * RMIXL_GPIO_EXT_INT bits 73502246879Scliff */ 73602246879Scliff #define RMIXL_GPIO_EXT_INT_RESV __BITS(31,4) 73702246879Scliff #define RMIXL_GPIO_EXT_INT_HI_MASK __BIT(3) /* mask (input) INT_HI_L */ 73802246879Scliff #define RMIXL_GPIO_EXT_INT_LO_MASK __BIT(2) /* mask (input) INT_HI_L */ 73902246879Scliff #define RMIXL_GPIO_EXT_INT_HI_CTL __BIT(1) /* generate (output) INT_HI_L */ 74002246879Scliff #define RMIXL_GPIO_EXT_INT_LO_CTL __BIT(0) /* generate (output) INT_LO_L */ 74102246879Scliff 74202246879Scliff /* 7433e67b512Smatt * RMIXL_GPIO_LOW_PWR_DIS bits 7443e67b512Smatt * except as noted, all bits are: 7453e67b512Smatt * 0 = feature enable (default) 7463e67b512Smatt * 1 = feature disable 7473e67b512Smatt */ 7483e67b512Smatt /* XXX defines are for XLS6xx, XLS4xx-Lite and XLS4xx Devices */ 7493e67b512Smatt #define RMIXL_GPIO_LOW_PWR_DIS_LP __BIT(0) /* Low Power disable */ 7503e67b512Smatt #define RMIXL_GPIO_LOW_PWR_DIS_GMAC_QD_0 __BIT(1) /* GMAC Quad 0 (GMAC 0..3) disable */ 7513e67b512Smatt #define RMIXL_GPIO_LOW_PWR_DIS_GMAC_QD_1 __BIT(2) /* GMAC Quad 1 (GMAC 4..7) disable */ 7523e67b512Smatt #define RMIXL_GPIO_LOW_PWR_DIS_USB __BIT(3) /* USB disable */ 7533e67b512Smatt #define RMIXL_GPIO_LOW_PWR_DIS_PCIE __BIT(4) /* PCIE disable */ 7543e67b512Smatt #define RMIXL_GPIO_LOW_PWR_DIS_CDE __BIT(5) /* Compression/Decompression Engine disable */ 7553e67b512Smatt #define RMIXL_GPIO_LOW_PWR_DIS_DMA __BIT(6) /* DMA Engine disable */ 7563e67b512Smatt #define RMIXL_GPIO_LOW_PWR_DIS_SAE __BITS(8,7) /* Security Acceleration Engine disable: 7573e67b512Smatt * 00 = enable (default) 7583e67b512Smatt * 01 = reserved 7593e67b512Smatt * 10 = reserved 7603e67b512Smatt * 11 = disable 7613e67b512Smatt */ 7623e67b512Smatt #define RMIXL_GPIO_LOW_PWR_DIS_RESV __BITS(31,9) 7633e67b512Smatt 76402246879Scliff /* 76502246879Scliff * Peripheral I/O bus (Flash/PCMCIA) controller registers 76602246879Scliff */ 76702246879Scliff #define RMIXL_FLASH_NCS 10 /* number of chip selects */ 76802246879Scliff #define RMIXL_FLASH_CS_BOOT 0 /* CS0 is boot flash */ 76902246879Scliff #define RMIXL_FLASH_CS_PCMCIA_CF 6 /* CS6 is PCMCIA compact flash */ 77002246879Scliff #define RMIXL_FLASH_CSBASE_ADDRn(n) _RMIXL_OFFSET(0x00+(n)) /* CSn Base Address reg */ 77102246879Scliff #define RMIXL_FLASH_CSADDR_MASKn(n) _RMIXL_OFFSET(0x10+(n)) /* CSn Address Mask reg */ 77202246879Scliff #define RMIXL_FLASH_CSDEV_PARMn(n) _RMIXL_OFFSET(0x20+(n)) /* CSn Device Parameter reg */ 77302246879Scliff #define RMIXL_FLASH_CSTIME_PARMAn(n) _RMIXL_OFFSET(0x30+(n)) /* CSn Timing Parameters A reg */ 77402246879Scliff #define RMIXL_FLASH_CSTIME_PARMBn(n) _RMIXL_OFFSET(0x40+(n)) /* CSn Timing Parameters B reg */ 77502246879Scliff #define RMIXL_FLASH_INT_MASK _RMIXL_OFFSET(0x50) /* Flash Interrupt Mask reg */ 77602246879Scliff #define RMIXL_FLASH_INT_STATUS _RMIXL_OFFSET(0x60) /* Flash Interrupt Status reg */ 77702246879Scliff #define RMIXL_FLASH_ERROR_STATUS _RMIXL_OFFSET(0x70) /* Flash Error Status reg */ 77802246879Scliff #define RMIXL_FLASH_ERROR_ADDR _RMIXL_OFFSET(0x80) /* Flash Error Address reg */ 77902246879Scliff 78002246879Scliff /* 78102246879Scliff * RMIXL_FLASH_CSDEV_PARMn bits 78202246879Scliff */ 78302246879Scliff #define RMIXL_FLASH_CSDEV_RESV __BITS(31,16) 78402246879Scliff #define RMIXL_FLASH_CSDEV_BFN __BIT(15) /* Boot From Nand 78502246879Scliff * 0=Boot from NOR or 78602246879Scliff * PCCard Type 1 Flash 78702246879Scliff * 1=Boot from NAND 78802246879Scliff */ 78902246879Scliff #define RMIXL_FLASH_CSDEV_NANDEN __BIT(14) /* NAND Flash Enable 79002246879Scliff * 0=NOR 79102246879Scliff * 1=NAND 79202246879Scliff */ 79302246879Scliff #define RMIXL_FLASH_CSDEV_ADVTYPE __BIT(13) /* Add Valid Sensing Type 79402246879Scliff * 0=level 79502246879Scliff * 1=pulse 79602246879Scliff */ 79702246879Scliff #define RMIXL_FLASH_CSDEV_PARITY_TYPE __BIT(12) /* Parity Type 79802246879Scliff * 0=even 79902246879Scliff * 1=odd 80002246879Scliff */ 80102246879Scliff #define RMIXL_FLASH_CSDEV_PARITY_EN __BIT(11) /* Parity Enable */ 80202246879Scliff #define RMIXL_FLASH_CSDEV_GENIF_EN __BIT(10) /* Generic PLD/FPGA interface mode 80302246879Scliff * if this bit is set, then 80402246879Scliff * GPIO[13:10] cannot be used 80502246879Scliff * for interrupts 80602246879Scliff */ 80702246879Scliff #define RMIXL_FLASH_CSDEV_PCMCIA_EN __BIT(9) /* PCMCIA Interface mode */ 80802246879Scliff #define RMIXL_FLASH_CSDEV_DWIDTH __BITS(8,7) /* Data Bus Width: 80902246879Scliff * 00: 8 bit 81002246879Scliff * 01: 16 bit 81102246879Scliff * 10: 32 bit 81202246879Scliff * 11: 8 bit 81302246879Scliff */ 81402246879Scliff #define RMIXL_FLASH_CSDEV_DWIDTH_SHFT 7 81502246879Scliff #define RMIXL_FLASH_CSDEV_MX_ADDR __BIT(6) /* Multiplexed Address 81602246879Scliff * 0: non-muxed 81702246879Scliff * AD[31:24] = Data, 81802246879Scliff * AD[23:0] = Addr 81902246879Scliff * 1: muxed 82002246879Scliff * External latch required 82102246879Scliff */ 82202246879Scliff #define RMIXL_FLASH_CSDEV_WAIT_POL __BIT(5) /* WAIT polarity 82302246879Scliff * 0: Active high 82402246879Scliff * 1: Active low 82502246879Scliff */ 82602246879Scliff #define RMIXL_FLASH_CSDEV_WAIT_EN __BIT(4) /* Enable External WAIT Ack mode */ 82702246879Scliff #define RMIXL_FLASH_CSDEV_BURST __BITS(3,1) /* Burst Length: 82802246879Scliff * 000: 2x 82902246879Scliff * 001: 4x 83002246879Scliff * 010: 8x 83102246879Scliff * 011: 16x 83202246879Scliff * 100: 32x 83302246879Scliff */ 83402246879Scliff #define RMIXL_FLASH_CSDEV_BURST_SHFT 1 83502246879Scliff #define RMIXL_FLASH_CSDEV_BURST_EN __BITS(0) /* Burst Enable */ 83602246879Scliff 83702246879Scliff 83802246879Scliff /* 83902246879Scliff * NAND Flash Memory Control registers 84002246879Scliff */ 84102246879Scliff #define RMIXL_NAND_CLEn(n) _RMIXL_OFFSET(0x90+(n)) /* CSn 8-bit CLE command value reg */ 84202246879Scliff #define RMIXL_NAND_ALEn(n) _RMIXL_OFFSET(0xa0+(n)) /* CSn 8-bit ALE address phase reg */ 8433e67b512Smatt 8443e67b512Smatt /* 845290a34a0Smatt * PCIE Interface Controller registers 846290a34a0Smatt */ 847290a34a0Smatt #define RMIXL_PCIE_CTRL1 _RMIXL_OFFSET(0x0) 848290a34a0Smatt #define RMIXL_PCIE_CTRL2 _RMIXL_OFFSET(0x1) 849290a34a0Smatt #define RMIXL_PCIE_CTRL3 _RMIXL_OFFSET(0x2) 850290a34a0Smatt #define RMIXL_PCIE_CTRL4 _RMIXL_OFFSET(0x3) 851290a34a0Smatt #define RMIXL_PCIE_CTRL _RMIXL_OFFSET(0x4) 852290a34a0Smatt #define RMIXL_PCIE_IOBM_TIMER _RMIXL_OFFSET(0x5) 853290a34a0Smatt #define RMIXL_PCIE_MSI_CMD _RMIXL_OFFSET(0x6) 854290a34a0Smatt #define RMIXL_PCIE_MSI_RESP _RMIXL_OFFSET(0x7) 855290a34a0Smatt #define RMIXL_PCIE_DWC_CRTL5 _RMIXL_OFFSET(0x8) /* not on XLS408Lite, XLS404Lite */ 856290a34a0Smatt #define RMIXL_PCIE_DWC_CRTL6 _RMIXL_OFFSET(0x9) /* not on XLS408Lite, XLS404Lite */ 857290a34a0Smatt #define RMIXL_PCIE_IOBM_SWAP_MEM_BASE _RMIXL_OFFSET(0x10) 858290a34a0Smatt #define RMIXL_PCIE_IOBM_SWAP_MEM_LIMIT _RMIXL_OFFSET(0x11) 859290a34a0Smatt #define RMIXL_PCIE_IOBM_SWAP_IO_BASE _RMIXL_OFFSET(0x12) 860290a34a0Smatt #define RMIXL_PCIE_IOBM_SWAP_IO_LIMIT _RMIXL_OFFSET(0x13) 861290a34a0Smatt #define RMIXL_PCIE_TRGT_CHRNT_MEM_BASE _RMIXL_OFFSET(0x14) 862290a34a0Smatt #define RMIXL_PCIE_TRGT_CHRNT_MEM_LIMIT _RMIXL_OFFSET(0x15) 863290a34a0Smatt #define RMIXL_PCIE_TRGT_L2ALC_MEM_BASE _RMIXL_OFFSET(0x16) 864290a34a0Smatt #define RMIXL_PCIE_TRGT_L2ALC_MEM_LIMIT _RMIXL_OFFSET(0x17) 865290a34a0Smatt #define RMIXL_PCIE_TRGT_REX_MEM_BASE _RMIXL_OFFSET(0x18) 866290a34a0Smatt #define RMIXL_PCIE_TRGT_REX_MEM_LIMIT _RMIXL_OFFSET(0x19) 867290a34a0Smatt #define RMIXL_PCIE_EP_MEM_BASE _RMIXL_OFFSET(0x1a) 868290a34a0Smatt #define RMIXL_PCIE_EP_MEM_LIMIT _RMIXL_OFFSET(0x1b) 869290a34a0Smatt #define RMIXL_PCIE_EP_ADDR_MAP_ENTRY0 _RMIXL_OFFSET(0x1c) 870290a34a0Smatt #define RMIXL_PCIE_EP_ADDR_MAP_ENTRY1 _RMIXL_OFFSET(0x1d) 871290a34a0Smatt #define RMIXL_PCIE_EP_ADDR_MAP_ENTRY2 _RMIXL_OFFSET(0x1e) 872290a34a0Smatt #define RMIXL_PCIE_EP_ADDR_MAP_ENTRY3 _RMIXL_OFFSET(0x1f) 873290a34a0Smatt #define RMIXL_PCIE_LINK0_STATE _RMIXL_OFFSET(0x20) 874290a34a0Smatt #define RMIXL_PCIE_LINK1_STATE _RMIXL_OFFSET(0x21) 875290a34a0Smatt #define RMIXL_PCIE_IOBM_INT_STATUS _RMIXL_OFFSET(0x22) 876290a34a0Smatt #define RMIXL_PCIE_IOBM_INT_ENABLE _RMIXL_OFFSET(0x23) 877290a34a0Smatt #define RMIXL_PCIE_LINK0_MSI_STATUS _RMIXL_OFFSET(0x24) 878290a34a0Smatt #define RMIXL_PCIE_LINK1_MSI_STATUS _RMIXL_OFFSET(0x25) 879290a34a0Smatt #define RMIXL_PCIE_LINK0_MSI_ENABLE _RMIXL_OFFSET(0x26) 880290a34a0Smatt #define RMIXL_PCIE_LINK1_MSI_ENABLE _RMIXL_OFFSET(0x27) 881290a34a0Smatt #define RMIXL_PCIE_LINK0_INT_STATUS0 _RMIXL_OFFSET(0x28) 882290a34a0Smatt #define RMIXL_PCIE_LINK1_INT_STATUS0 _RMIXL_OFFSET(0x29) 883290a34a0Smatt #define RMIXL_PCIE_LINK0_INT_STATUS1 _RMIXL_OFFSET(0x2a) 884290a34a0Smatt #define RMIXL_PCIE_LINK1_INT_STATUS1 _RMIXL_OFFSET(0x2b) 885290a34a0Smatt #define RMIXL_PCIE_LINK0_INT_ENABLE0 _RMIXL_OFFSET(0x2c) 886290a34a0Smatt #define RMIXL_PCIE_LINK1_INT_ENABLE0 _RMIXL_OFFSET(0x2d) 887290a34a0Smatt #define RMIXL_PCIE_LINK0_INT_ENABLE1 _RMIXL_OFFSET(0x2e) 888290a34a0Smatt #define RMIXL_PCIE_LINK1_INT_ENABLE1 _RMIXL_OFFSET(0x2f) 889290a34a0Smatt #define RMIXL_PCIE_PHY_CR_CMD _RMIXL_OFFSET(0x30) 890290a34a0Smatt #define RMIXL_PCIE_PHY_CR_WR_DATA _RMIXL_OFFSET(0x31) 891290a34a0Smatt #define RMIXL_PCIE_PHY_CR_RESP _RMIXL_OFFSET(0x32) 892290a34a0Smatt #define RMIXL_PCIE_PHY_CR_RD_DATA _RMIXL_OFFSET(0x33) 893290a34a0Smatt #define RMIXL_PCIE_IOBM_ERR_CMD _RMIXL_OFFSET(0x34) 894290a34a0Smatt #define RMIXL_PCIE_IOBM_ERR_LOWER_ADDR _RMIXL_OFFSET(0x35) 895290a34a0Smatt #define RMIXL_PCIE_IOBM_ERR_UPPER_ADDR _RMIXL_OFFSET(0x36) 896290a34a0Smatt #define RMIXL_PCIE_IOBM_ERR_BE _RMIXL_OFFSET(0x37) 897290a34a0Smatt #define RMIXL_PCIE_LINK2_STATE _RMIXL_OFFSET(0x60) /* not on XLS408Lite, XLS404Lite */ 898290a34a0Smatt #define RMIXL_PCIE_LINK3_STATE _RMIXL_OFFSET(0x61) /* not on XLS408Lite, XLS404Lite */ 899290a34a0Smatt #define RMIXL_PCIE_LINK2_MSI_STATUS _RMIXL_OFFSET(0x64) /* not on XLS408Lite, XLS404Lite */ 900290a34a0Smatt #define RMIXL_PCIE_LINK3_MSI_STATUS _RMIXL_OFFSET(0x65) /* not on XLS408Lite, XLS404Lite */ 901290a34a0Smatt #define RMIXL_PCIE_LINK2_MSI_ENABLE _RMIXL_OFFSET(0x66) /* not on XLS408Lite, XLS404Lite */ 902290a34a0Smatt #define RMIXL_PCIE_LINK3_MSI_ENABLE _RMIXL_OFFSET(0x67) /* not on XLS408Lite, XLS404Lite */ 903290a34a0Smatt #define RMIXL_PCIE_LINK2_INT_STATUS0 _RMIXL_OFFSET(0x68) /* not on XLS408Lite, XLS404Lite */ 904290a34a0Smatt #define RMIXL_PCIE_LINK3_INT_STATUS0 _RMIXL_OFFSET(0x69) /* not on XLS408Lite, XLS404Lite */ 905290a34a0Smatt #define RMIXL_PCIE_LINK2_INT_STATUS1 _RMIXL_OFFSET(0x6a) /* not on XLS408Lite, XLS404Lite */ 906290a34a0Smatt #define RMIXL_PCIE_LINK3_INT_STATUS1 _RMIXL_OFFSET(0x6b) /* not on XLS408Lite, XLS404Lite */ 907290a34a0Smatt #define RMIXL_PCIE_LINK2_INT_ENABLE0 _RMIXL_OFFSET(0x6c) /* not on XLS408Lite, XLS404Lite */ 908290a34a0Smatt #define RMIXL_PCIE_LINK3_INT_ENABLE0 _RMIXL_OFFSET(0x6d) /* not on XLS408Lite, XLS404Lite */ 909290a34a0Smatt #define RMIXL_PCIE_LINK2_INT_ENABLE1 _RMIXL_OFFSET(0x6e) /* not on XLS408Lite, XLS404Lite */ 910290a34a0Smatt #define RMIXL_PCIE_LINK3_INT_ENABLE1 _RMIXL_OFFSET(0x6f) /* not on XLS408Lite, XLS404Lite */ 911290a34a0Smatt #define RMIXL_VC0_POSTED_RX_QUEUE_CTRL _RMIXL_OFFSET(0x1d2) 912290a34a0Smatt #define RMIXL_VC0_POSTED_BUFFER_DEPTH _RMIXL_OFFSET(0x1ea) 913290a34a0Smatt #define RMIXL_PCIE_MSG_TX_THRESHOLD _RMIXL_OFFSET(0x308) 914290a34a0Smatt #define RMIXL_PCIE_MSG_BUCKET_SIZE_0 _RMIXL_OFFSET(0x320) 915290a34a0Smatt #define RMIXL_PCIE_MSG_BUCKET_SIZE_1 _RMIXL_OFFSET(0x321) 916290a34a0Smatt #define RMIXL_PCIE_MSG_BUCKET_SIZE_2 _RMIXL_OFFSET(0x322) 917290a34a0Smatt #define RMIXL_PCIE_MSG_BUCKET_SIZE_3 _RMIXL_OFFSET(0x323) 918290a34a0Smatt #define RMIXL_PCIE_MSG_BUCKET_SIZE_4 _RMIXL_OFFSET(0x324) /* not on XLS408Lite, XLS404Lite */ 919290a34a0Smatt #define RMIXL_PCIE_MSG_BUCKET_SIZE_5 _RMIXL_OFFSET(0x325) /* not on XLS408Lite, XLS404Lite */ 920290a34a0Smatt #define RMIXL_PCIE_MSG_BUCKET_SIZE_6 _RMIXL_OFFSET(0x326) /* not on XLS408Lite, XLS404Lite */ 921290a34a0Smatt #define RMIXL_PCIE_MSG_BUCKET_SIZE_7 _RMIXL_OFFSET(0x327) /* not on XLS408Lite, XLS404Lite */ 922290a34a0Smatt #define RMIXL_PCIE_MSG_CREDIT_FIRST _RMIXL_OFFSET(0x380) 923290a34a0Smatt #define RMIXL_PCIE_MSG_CREDIT_LAST _RMIXL_OFFSET(0x3ff) 924290a34a0Smatt 9253e67b512Smatt /* 9263e67b512Smatt * USB General Interface registers 9273e67b512Smatt * these are opffset from REGSPACE selected by __BIT(12) == 1 9283e67b512Smatt * RMIXL_IOREG_VADDR(RMIXL_IO_DEV_USB_B + reg) 9293e67b512Smatt * see Tables 18-7 and 18-14 in the XLS PRM 9303e67b512Smatt */ 9313e67b512Smatt #define RMIXL_USB_GEN_CTRL1 0x00 9323e67b512Smatt #define RMIXL_USB_GEN_CTRL2 0x04 9333e67b512Smatt #define RMIXL_USB_GEN_CTRL3 0x08 9343e67b512Smatt #define RMIXL_USB_IOBM_TIMER 0x0C 9353e67b512Smatt #define RMIXL_USB_VBUS_TIMER 0x10 9363e67b512Smatt #define RMIXL_USB_BYTESWAP_EN 0x14 9373e67b512Smatt #define RMIXL_USB_COHERENT_MEM_BASE 0x40 9383e67b512Smatt #define RMIXL_USB_COHERENT_MEM_LIMIT 0x44 9393e67b512Smatt #define RMIXL_USB_L2ALLOC_MEM_BASE 0x48 9403e67b512Smatt #define RMIXL_USB_L2ALLOC_MEM_LIMIT 0x4C 9413e67b512Smatt #define RMIXL_USB_READEX_MEM_BASE 0x50 9423e67b512Smatt #define RMIXL_USB_READEX_MEM_LIMIT 0x54 9433e67b512Smatt #define RMIXL_USB_PHY_STATUS 0xC0 9443e67b512Smatt #define RMIXL_USB_INTERRUPT_STATUS 0xC4 9453e67b512Smatt #define RMIXL_USB_INTERRUPT_ENABLE 0xC8 9463e67b512Smatt 9473e67b512Smatt /* 9483e67b512Smatt * RMIXL_USB_GEN_CTRL1 bits 9493e67b512Smatt */ 9503e67b512Smatt #define RMIXL_UG_CTRL1_RESV __BITS(31,2) 9513e67b512Smatt #define RMIXL_UG_CTRL1_HOST_RST __BIT(1) /* Resets the Host Controller 9523e67b512Smatt * 0: reset 9533e67b512Smatt * 1: normal operation 9543e67b512Smatt */ 9553e67b512Smatt #define RMIXL_UG_CTRL1_DEV_RST __BIT(0) /* Resets the Device Controller 9563e67b512Smatt * 0: reset 9573e67b512Smatt * 1: normal operation 9583e67b512Smatt */ 9593e67b512Smatt 9603e67b512Smatt /* 9613e67b512Smatt * RMIXL_USB_GEN_CTRL2 bits 9623e67b512Smatt */ 9633e67b512Smatt #define RMIXL_UG_CTRL2_RESa __BITS(31,20) 9643e67b512Smatt #define RMIXL_UG_CTRL2_TX_TUNE_1 __BITS(19,18) /* Port_1 Transmitter Tuning for High-Speed Operation. 9653e67b512Smatt * 00: ~-4.5% 9663e67b512Smatt * 01: Design default 9673e67b512Smatt * 10: ~+4.5% 9683e67b512Smatt * 11: ~+9% = Recommended Operating setting 9693e67b512Smatt */ 9703e67b512Smatt #define RMIXL_UG_CTRL2_TX_TUNE_0 __BITS(17,16) /* Port_0 Transmitter Tuning for High-Speed Operation 9713e67b512Smatt * 11: Recommended Operating condition 9723e67b512Smatt */ 9733e67b512Smatt #define RMIXL_UG_CTRL2_RESb __BIT(15) 9743e67b512Smatt #define RMIXL_UG_CTRL2_WEAK_PDEN __BIT(14) /* 500kOhm Pull-Down Resistor on D+ and D- Enable */ 9753e67b512Smatt #define RMIXL_UG_CTRL2_DP_PULLUP_ESD __BIT(13) /* D+ Pull-Up Resistor Enable */ 9763e67b512Smatt #define RMIXL_UG_CTRL2_ESD_TEST_MODE __BIT(12) /* D+ Pull-Up Resistor Control Select */ 9773e67b512Smatt #define RMIXL_UG_CTRL2_TX_BIT_STUFF_EN_H_1 \ 9783e67b512Smatt __BIT(11) /* Port_1 High-Byte Transmit Bit-Stuffing Enable */ 9793e67b512Smatt #define RMIXL_UG_CTRL2_TX_BIT_STUFF_EN_H_0 \ 9803e67b512Smatt __BIT(10) /* Port_0 High-Byte Transmit Bit-Stuffing Enable */ 9813e67b512Smatt #define RMIXL_UG_CTRL2_TX_BIT_STUFF_EN_L_1 \ 9823e67b512Smatt __BIT(9) /* Port_1 Low-Byte Transmit Bit-Stuffing Enable */ 9833e67b512Smatt #define RMIXL_UG_CTRL2_TX_BIT_STUFF_EN_L_0 \ 9843e67b512Smatt __BIT(8) /* Port_0 Low-Byte Transmit Bit-Stuffing Enable */ 9853e67b512Smatt #define RMIXL_UG_CTRL2_RESc __BITS(7,6) 9863e67b512Smatt #define RMIXL_UG_CTRL2_LOOPBACK_ENB_1 __BIT(5) /* Port_1 Loopback Test Enable */ 9873e67b512Smatt #define RMIXL_UG_CTRL2_LOOPBACK_ENB_0 __BIT(4) /* Port_0 Loopback Test Enable */ 9883e67b512Smatt #define RMIXL_UG_CTRL2_DEVICE_VBUS __BIT(3) /* VBUS detected (Device mode only) */ 9893e67b512Smatt #define RMIXL_UG_CTRL2_PHY_PORT_RST_1 __BIT(2) /* Resets Port_1 of the PHY 9903e67b512Smatt * 1: normal operation 9913e67b512Smatt * 0: reset 9923e67b512Smatt */ 9933e67b512Smatt #define RMIXL_UG_CTRL2_PHY_PORT_RST_0 __BIT(1) /* Resets Port_0 of the PHY 9943e67b512Smatt * 1: normal operation 9953e67b512Smatt * 0: reset 9963e67b512Smatt */ 9973e67b512Smatt #define RMIXL_UG_CTRL2_PHY_RST __BIT(0) /* Resets the PHY 9983e67b512Smatt * 1: normal operation 9993e67b512Smatt * 0: reset 10003e67b512Smatt */ 10013e67b512Smatt #define RMIXL_UG_CTRL2_RESV \ 10023e67b512Smatt (RMIXL_UG_CTRL2_RESa | RMIXL_UG_CTRL2_RESb | RMIXL_UG_CTRL2_RESc) 10033e67b512Smatt 10043e67b512Smatt 10053e67b512Smatt /* 10063e67b512Smatt * RMIXL_USB_GEN_CTRL3 bits 10073e67b512Smatt */ 10083e67b512Smatt #define RMIXL_UG_CTRL3_RESa __BITS(31,11) 10093e67b512Smatt #define RMIXL_UG_CTRL3_PREFETCH_SIZE __BITS(10,8) /* The pre-fetch size for a memory read transfer 10103e67b512Smatt * between USB Interface and DI station. 10113e67b512Smatt * Valid value ranges is from 1 to 4. 10123e67b512Smatt */ 10133e67b512Smatt #define RMIXL_UG_CTRL3_RESb __BIT(7) 10143e67b512Smatt #define RMIXL_UG_CTRL3_DEV_UPPERADDR __BITS(6,1) /* Device controller address space selector */ 10153e67b512Smatt #define RMIXL_UG_CTRL3_USB_FLUSH __BIT(0) /* Flush the USB interface */ 10163e67b512Smatt 10173e67b512Smatt /* 10183e67b512Smatt * RMIXL_USB_PHY_STATUS bits 10193e67b512Smatt */ 10203e67b512Smatt #define RMIXL_UB_PHY_STATUS_RESV __BITS(31,1) 10213e67b512Smatt #define RMIXL_UB_PHY_STATUS_VBUS __BIT(0) /* USB VBUS status */ 10223e67b512Smatt 10233e67b512Smatt /* 10243e67b512Smatt * RMIXL_USB_INTERRUPT_STATUS and RMIXL_USB_INTERRUPT_ENABLE bits 10253e67b512Smatt */ 10263e67b512Smatt #define RMIXL_UB_INTERRUPT_RESV __BITS(31,6) 10273e67b512Smatt #define RMIXL_UB_INTERRUPT_FORCE __BIT(5) /* USB force interrupt */ 10283e67b512Smatt #define RMIXL_UB_INTERRUPT_PHY __BIT(4) /* USB PHY interrupt */ 10293e67b512Smatt #define RMIXL_UB_INTERRUPT_DEV __BIT(3) /* USB Device Controller interrupt */ 10303e67b512Smatt #define RMIXL_UB_INTERRUPT_EHCI __BIT(2) /* USB EHCI interrupt */ 10313e67b512Smatt #define RMIXL_UB_INTERRUPT_OHCI_1 __BIT(1) /* USB OHCI #1 interrupt */ 10323e67b512Smatt #define RMIXL_UB_INTERRUPT_OHCI_0 __BIT(0) /* USB OHCI #0 interrupt */ 10333e67b512Smatt #define RMIXL_UB_INTERRUPT_MAX 5 10343e67b512Smatt 10353e67b512Smatt 10363e67b512Smatt /* 10373e67b512Smatt * USB Device Controller registers 10383e67b512Smatt * these are opffset from REGSPACE selected by __BIT(12) == 0 10393e67b512Smatt * RMIXL_IOREG_VADDR(RMIXL_IO_DEV_USB_A + reg) 10403e67b512Smatt * see Table 18-7 in the XLS PRM 10413e67b512Smatt */ 10423e67b512Smatt #define RMIXL_USB_UDC_GAHBCFG 0x008 /* UDC Configuration A (UDC_GAHBCFG) */ 10433e67b512Smatt #define RMIXL_USB_UDC_GUSBCFG 0x00C /* UDC Configuration B (UDC_GUSBCFG) */ 10443e67b512Smatt #define RMIXL_USB_UDC_GRSTCTL 0x010 /* UDC Reset */ 10453e67b512Smatt #define RMIXL_USB_UDC_GINTSTS 0x014 /* UDC Interrupt Register */ 10463e67b512Smatt #define RMIXL_USB_UDC_GINTMSK 0x018 /* UDC Interrupt Mask Register */ 10473e67b512Smatt #define RMIXL_USB_UDC_GRXSTSP 0x020 /* UDC Receive Status Read /Pop Register (Read Only) */ 10483e67b512Smatt #define RMIXL_USB_UDC_GRXFSIZ 0x024 /* UDC Receive FIFO Size Register */ 10493e67b512Smatt #define RMIXL_USB_UDC_GNPTXFSIZ 0x028 /* UDC Non-periodic Transmit FIFO Size Register */ 10503e67b512Smatt #define RMIXL_USB_UDC_GUID 0x03C /* UDC User ID Register (UDC_GUID) */ 10513e67b512Smatt #define RMIXL_USB_UDC_GSNPSID 0x040 /* UDC ID Register (Read Only) */ 10523e67b512Smatt #define RMIXL_USB_UDC_GHWCFG1 0x044 /* UDC User HW Config1 Register (Read Only) */ 10533e67b512Smatt #define RMIXL_USB_UDC_GHWCFG2 0x048 /* UDC User HW Config2 Register (Read Only) */ 10543e67b512Smatt #define RMIXL_USB_UDC_GHWCFG3 0x04C /* UDC User HW Config3 Register (Read Only) */ 10553e67b512Smatt #define RMIXL_USB_UDC_GHWCFG4 0x050 /* UDC User HW Config4 Register (Read Only) */ 10563e67b512Smatt #define RMIXL_USB_UDC_DPTXFSIZ0 0x104 10573e67b512Smatt #define RMIXL_USB_UDC_DPTXFSIZ1 0x108 10583e67b512Smatt #define RMIXL_USB_UDC_DPTXFSIZ2 0x10c 10593e67b512Smatt #define RMIXL_USB_UDC_DPTXFSIZn(n) (0x104 + (4 * (n))) 10603e67b512Smatt /* UDC Device IN Endpoint Transmit FIFO-n 10613e67b512Smatt Size Registers (UDC_DPTXFSIZn) */ 10623e67b512Smatt #define RMIXL_USB_UDC_DCFG 0x800 /* UDC Configuration C */ 10633e67b512Smatt #define RMIXL_USB_UDC_DCTL 0x804 /* UDC Control Register */ 10643e67b512Smatt #define RMIXL_USB_UDC_DSTS 0x808 /* UDC Status Register (Read Only) */ 10653e67b512Smatt #define RMIXL_USB_UDC_DIEPMSK 0x810 /* UDC Device IN Endpoint Common 10663e67b512Smatt Interrupt Mask Register (UDC_DIEPMSK) */ 10673e67b512Smatt #define RMIXL_USB_UDC_DOEPMSK 0x814 /* UDC Device OUT Endpoint Common Interrupt Mask register */ 10683e67b512Smatt #define RMIXL_USB_UDC_DAINT 0x818 /* UDC Device All Endpoints Interrupt Register */ 10693e67b512Smatt #define RMIXL_USB_UDC_DAINTMSK 0x81C /* UDC Device All Endpoints Interrupt Mask Register */ 10703e67b512Smatt #define RMIXL_USB_UDC_DTKNQR3 0x830 /* Device Threshold Control Register */ 10713e67b512Smatt #define RMIXL_USB_UDC_DTKNQR4 0x834 /* Device IN Endpoint FIFO Empty Interrupt Mask Register */ 10723e67b512Smatt #define RMIXL_USB_UDC_DIEPCTL 0x900 /* Device Control IN Endpoint 0 Control Register */ 10733e67b512Smatt #define RMIXL_USB_UDC_DIEPINT 0x908 /* Device IN Endpoint 0 Interrupt Register */ 10743e67b512Smatt #define RMIXL_USB_UDC_DIEPTSIZ 0x910 /* Device IN Endpoint 0 Transfer Size Register */ 10753e67b512Smatt #define RMIXL_USB_UDC_DIEPDMA 0x914 /* Device IN Endpoint 0 DMA Address Register */ 10763e67b512Smatt #define RMIXL_USB_UDC_DTXFSTS 0x918 /* Device IN Endpoint Transmit FIFO Status Register */ 10773e67b512Smatt #define RMIXL_USB_DEV_IN_ENDPT(d,n) (0x920 + ((d) * 0x20) + ((n) * 4)) 10783e67b512Smatt /* Device IN Endpoint #d Register #n */ 10793e67b512Smatt 10803e67b512Smatt /* 10813e67b512Smatt * USB Host Controller register base addrs 10823e67b512Smatt * these are offset from REGSPACE selected by __BIT(12) == 0 10833e67b512Smatt * RMIXL_IOREG_VADDR(RMIXL_IO_DEV_USB_A + reg) 10843e67b512Smatt * see Table 18-14 in the XLS PRM 10853e67b512Smatt * specific Host Controller is selected by __BITS(11,10) 10863e67b512Smatt */ 10873e67b512Smatt #define RMIXL_USB_HOST_EHCI_BASE 0x000 10883e67b512Smatt #define RMIXL_USB_HOST_0HCI0_BASE 0x400 10893e67b512Smatt #define RMIXL_USB_HOST_0HCI1_BASE 0x800 10903e67b512Smatt #define RMIXL_USB_HOST_RESV 0xc00 10913e67b512Smatt #define RMIXL_USB_HOST_MASK 0xc00 10923e67b512Smatt 10933e67b512Smatt 10943e67b512Smatt /* 10953e67b512Smatt * FMN non-core station configuration registers 10963e67b512Smatt */ 10973e67b512Smatt #define RMIXL_FMN_BS_FIRST _RMIXL_OFFSET(0x320) 10983e67b512Smatt 10993e67b512Smatt /* 11003e67b512Smatt * SGMII bucket size regs 11013e67b512Smatt */ 11023e67b512Smatt #define RMIXL_FMN_BS_SGMII_UNUSED0 _RMIXL_OFFSET(0x320) /* initialize as 0 */ 11033e67b512Smatt #define RMIXL_FMN_BS_SGMII_FCB _RMIXL_OFFSET(0x321) /* Free Credit Bucket size */ 11043e67b512Smatt #define RMIXL_FMN_BS_SGMII_TX0 _RMIXL_OFFSET(0x322) 11053e67b512Smatt #define RMIXL_FMN_BS_SGMII_TX1 _RMIXL_OFFSET(0x323) 11063e67b512Smatt #define RMIXL_FMN_BS_SGMII_TX2 _RMIXL_OFFSET(0x324) 11073e67b512Smatt #define RMIXL_FMN_BS_SGMII_TX3 _RMIXL_OFFSET(0x325) 11083e67b512Smatt #define RMIXL_FMN_BS_SGMII_UNUSED1 _RMIXL_OFFSET(0x326) /* initialize as 0 */ 11093e67b512Smatt #define RMIXL_FMN_BS_SGMII_FCB1 _RMIXL_OFFSET(0x327) /* Free Credit Bucket1 size */ 11103e67b512Smatt 11113e67b512Smatt /* 11123e67b512Smatt * SAE bucket size regs 11133e67b512Smatt */ 11143e67b512Smatt #define RMIXL_FMN_BS_SAE_PIPE0 _RMIXL_OFFSET(0x320) 11153e67b512Smatt #define RMIXL_FMN_BS_SAE_RSA_PIPE _RMIXL_OFFSET(0x321) 11163e67b512Smatt 11173e67b512Smatt /* 11183e67b512Smatt * DMA bucket size regs 11193e67b512Smatt */ 11203e67b512Smatt #define RMIXL_FMN_BS_DMA_CHAN0 _RMIXL_OFFSET(0x320) 11213e67b512Smatt #define RMIXL_FMN_BS_DMA_CHAN1 _RMIXL_OFFSET(0x321) 11223e67b512Smatt #define RMIXL_FMN_BS_DMA_CHAN2 _RMIXL_OFFSET(0x322) 11233e67b512Smatt #define RMIXL_FMN_BS_DMA_CHAN3 _RMIXL_OFFSET(0x323) 11243e67b512Smatt 11253e67b512Smatt /* 11263e67b512Smatt * CDE bucket size regs 11273e67b512Smatt */ 11283e67b512Smatt #define RMIXL_FMN_BS_CDE_FREE_DESC _RMIXL_OFFSET(0x320) 11293e67b512Smatt #define RMIXL_FMN_BS_CDE_COMPDECOMP _RMIXL_OFFSET(0x321) 11303e67b512Smatt 11313e67b512Smatt /* 11323e67b512Smatt * PCIe bucket size regs 11333e67b512Smatt */ 11343e67b512Smatt #define RMIXL_FMN_BS_PCIE_TX0 _RMIXL_OFFSET(0x320) 11353e67b512Smatt #define RMIXL_FMN_BS_PCIE_RX0 _RMIXL_OFFSET(0x321) 11363e67b512Smatt #define RMIXL_FMN_BS_PCIE_TX1 _RMIXL_OFFSET(0x322) 11373e67b512Smatt #define RMIXL_FMN_BS_PCIE_RX1 _RMIXL_OFFSET(0x323) 11383e67b512Smatt #define RMIXL_FMN_BS_PCIE_TX2 _RMIXL_OFFSET(0x324) 11393e67b512Smatt #define RMIXL_FMN_BS_PCIE_RX2 _RMIXL_OFFSET(0x325) 11403e67b512Smatt #define RMIXL_FMN_BS_PCIE_TX3 _RMIXL_OFFSET(0x326) 11413e67b512Smatt #define RMIXL_FMN_BS_PCIE_RX3 _RMIXL_OFFSET(0x327) 11423e67b512Smatt 11433e67b512Smatt /* 11443e67b512Smatt * non-core Credit Counter offsets 11453e67b512Smatt */ 11463e67b512Smatt #define RMIXL_FMN_CC_FIRST _RMIXL_OFFSET(0x380) 11473e67b512Smatt #define RMIXL_FMN_CC_LAST _RMIXL_OFFSET(0x3ff) 11483e67b512Smatt 11493e67b512Smatt /* 11503e67b512Smatt * non-core Credit Counter bit defines 11513e67b512Smatt */ 11523e67b512Smatt #define RMIXL_FMN_CC_RESV __BITS(31,8) 11533e67b512Smatt #define RMIXL_FMN_CC_COUNT __BITS(7,0) 11543e67b512Smatt 1155290a34a0Smatt #endif /* _MIPS_RMI_RMIRMIXLEGS_H_ */ 1156290a34a0Smatt 1157