1 1.4 rkujawa /* $NetBSD: amcc460ex.h,v 1.4 2026/06/22 12:34:20 rkujawa Exp $ */ 2 1.1 rkujawa 3 1.1 rkujawa /* 4 1.1 rkujawa * Copyright (c) 2012, 2014, 2024, 2026 The NetBSD Foundation, Inc. 5 1.1 rkujawa * All rights reserved. 6 1.1 rkujawa * 7 1.1 rkujawa * This code is derived from software contributed to The NetBSD Foundation 8 1.1 rkujawa * by Radoslaw Kujawa. 9 1.1 rkujawa * 10 1.1 rkujawa * Redistribution and use in source and binary forms, with or without 11 1.1 rkujawa * modification, are permitted provided that the following conditions 12 1.1 rkujawa * are met: 13 1.1 rkujawa * 1. Redistributions of source code must retain the above copyright 14 1.1 rkujawa * notice, this list of conditions and the following disclaimer. 15 1.1 rkujawa * 2. Redistributions in binary form must reproduce the above copyright 16 1.1 rkujawa * notice, this list of conditions and the following disclaimer in the 17 1.1 rkujawa * documentation and/or other materials provided with the distribution. 18 1.1 rkujawa * 19 1.1 rkujawa * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20 1.1 rkujawa * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21 1.1 rkujawa * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22 1.1 rkujawa * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23 1.1 rkujawa * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24 1.1 rkujawa * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 1.1 rkujawa * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 1.1 rkujawa * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 1.1 rkujawa * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 1.1 rkujawa * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 1.1 rkujawa */ 30 1.1 rkujawa 31 1.1 rkujawa /* 32 1.1 rkujawa * AMCC/AppliedMicro 460EX system-on-chip 33 1.1 rkujawa */ 34 1.1 rkujawa 35 1.1 rkujawa #ifndef _IBM4XX_AMCC460EX_H_ 36 1.1 rkujawa #define _IBM4XX_AMCC460EX_H_ 37 1.1 rkujawa 38 1.1 rkujawa /* Upper 4 bits (ERPN) of the physical address of the I/O region */ 39 1.1 rkujawa #define AMCC460EX_OPB_PA_HIGH 0x4 40 1.1 rkujawa 41 1.1 rkujawa #define AMCC460EX_OPB_BASE 0xef600000 42 1.1 rkujawa 43 1.1 rkujawa #define AMCC460EX_UART0_BASE 0xef600300 44 1.1 rkujawa #define AMCC460EX_UART1_BASE 0xef600400 45 1.1 rkujawa #define AMCC460EX_UART2_BASE 0xef600500 46 1.1 rkujawa #define AMCC460EX_UART3_BASE 0xef600600 47 1.1 rkujawa #define AMCC460EX_IIC0_BASE 0xef600700 48 1.1 rkujawa #define AMCC460EX_IIC1_BASE 0xef600800 49 1.1 rkujawa #define AMCC460EX_GPIO0_BASE 0xef600b00 50 1.1 rkujawa #define AMCC460EX_ZMII0_BASE 0xef600d00 51 1.1 rkujawa #define AMCC460EX_EMAC0_BASE 0xef600e00 52 1.1 rkujawa #define AMCC460EX_EMAC1_BASE 0xef600f00 53 1.1 rkujawa #define AMCC460EX_TAH0_BASE 0xef601350 54 1.1 rkujawa #define AMCC460EX_TAH1_BASE 0xef601450 55 1.1 rkujawa #define AMCC460EX_RGMII0_BASE 0xef601500 56 1.1 rkujawa 57 1.1 rkujawa /* UARTs get freq from external 11.0592 MHz osc */ 58 1.1 rkujawa #define AMCC460EX_COM_FREQ 11059200 59 1.1 rkujawa 60 1.1 rkujawa /* 61 1.1 rkujawa * PLB-PCIX host bridge. 62 1.1 rkujawa */ 63 1.1 rkujawa #define AMCC460EX_PCIX0_CFG_PLBA 0x0ec00000 /* ERPN 0xc */ 64 1.1 rkujawa #define AMCC460EX_PCIX0_REGS_PLBA 0x0ec80000 /* ERPN 0xc */ 65 1.1 rkujawa #define AMCC460EX_PCIX0_CFG_PA_HIGH 0xc 66 1.1 rkujawa #define AMCC460EX_PCIX0_IO_PLBA 0x08000000 /* ERPN 0xc */ 67 1.1 rkujawa #define AMCC460EX_PCIX0_IO_PA_HIGH 0xc 68 1.1 rkujawa #define AMCC460EX_PCIX0_MEM_BASE 0x80000000 /* ERPN 0xd */ 69 1.1 rkujawa #define AMCC460EX_PCIX0_MEM_PLBA_H 0xd 70 1.1 rkujawa /* How much of the (128MB) outbound memory window has pinned mappings */ 71 1.1 rkujawa #define AMCC460EX_PCIX0_MEM_SIZE 0x05000000 /* 80MB */ 72 1.1 rkujawa 73 1.1 rkujawa /* 74 1.2 rkujawa * Second outbound memory window (POM1) 75 1.2 rkujawa */ 76 1.2 rkujawa #define AMCC460EX_PCIX0_PMEM_BASE 0x88000000 /* ERPN 0xd */ 77 1.2 rkujawa #define AMCC460EX_PCIX0_PMEM_PLBA_H 0xd 78 1.2 rkujawa #define AMCC460EX_PCIX0_PMEM_SIZE 0x10000000 /* 256MB POM1/extent */ 79 1.2 rkujawa /* How much of the prefetchable window gets pinned into kernel VA */ 80 1.2 rkujawa #define AMCC460EX_PCIX0_PMEM_MAP 0x04000000 /* 64MB */ 81 1.2 rkujawa 82 1.2 rkujawa /* 83 1.1 rkujawa * PCI Express root complexes (PCIE0/PCIE1). 84 1.1 rkujawa */ 85 1.1 rkujawa #define AMCC460EX_PCIE0_DCR_BASE 0x100 /* PEGPL register block */ 86 1.1 rkujawa #define AMCC460EX_PCIE1_DCR_BASE 0x120 87 1.1 rkujawa 88 1.1 rkujawa #define AMCC460EX_PCIE_CFG_PA_HIGH 0xd /* ERPN of config windows */ 89 1.1 rkujawa #define AMCC460EX_PCIE0_CFG_PLBA 0x30000000 90 1.4 rkujawa /* 91 1.4 rkujawa * The PCIe core - port's local config 92 1.4 rkujawa * XCFG: PECFG inbound BAR/PIM at cfg-region-base + 0x10000000 93 1.4 rkujawa */ 94 1.4 rkujawa #define AMCC460EX_PCIE1_CFG_PLBA 0x40000000 95 1.4 rkujawa #define AMCC460EX_PCIE_CFG_SIZE 0x01000000 /* ECAM: buses 0-15 */ 96 1.4 rkujawa #define AMCC460EX_PCIE_CFG_REGION_SIZE 0x20000000 /* PEGPL region: 512MB */ 97 1.4 rkujawa #define AMCC460EX_PCIE_XCFG_OFFSET 0x10000000 /* local cfg vs region base */ 98 1.4 rkujawa #define AMCC460EX_PCIE1_XCFG_PLBA (AMCC460EX_PCIE1_CFG_PLBA + \ 99 1.4 rkujawa AMCC460EX_PCIE_XCFG_OFFSET) 100 1.1 rkujawa 101 1.1 rkujawa #define AMCC460EX_PCIE_MEM_PA_HIGH 0xe /* ERPN of memory windows */ 102 1.1 rkujawa #define AMCC460EX_PCIE0_MEM_PLBA 0x10000000 103 1.1 rkujawa #define AMCC460EX_PCIE1_MEM_PLBA 0x90000000 104 1.1 rkujawa #define AMCC460EX_PCIE_MEM_BASE 0xa0000000 /* PCI-side base */ 105 1.1 rkujawa #define AMCC460EX_PCIE_MEM_SIZE 0x01000000 106 1.1 rkujawa 107 1.1 rkujawa /* 108 1.4 rkujawa * AHB peripherals (USB). 109 1.1 rkujawa */ 110 1.1 rkujawa #define AMCC460EX_AHB_PA_HIGH 0x4 /* ERPN */ 111 1.1 rkujawa #define AMCC460EX_AHB_BASE 0xbf000000 112 1.1 rkujawa #define AMCC460EX_AHB_SIZE 0x01000000 113 1.1 rkujawa 114 1.1 rkujawa #define AMCC460EX_USB_OTG_BASE 0xbff80000 /* DWC OTG, 256KB */ 115 1.1 rkujawa #define AMCC460EX_USB_OTG_SIZE 0x00040000 116 1.1 rkujawa #define AMCC460EX_USB_OHCI_BASE 0xbffd0000 117 1.1 rkujawa #define AMCC460EX_USB_OHCI_SIZE 0x00000400 118 1.1 rkujawa #define AMCC460EX_USB_EHCI_BASE 0xbffd0400 119 1.1 rkujawa #define AMCC460EX_USB_EHCI_SIZE 0x00000400 120 1.1 rkujawa 121 1.1 rkujawa /* 122 1.1 rkujawa * On-chip SATA, the lousy DWC SATA-II core 123 1.1 rkujawa */ 124 1.1 rkujawa #define AMCC460EX_SATA_DMA_BASE 0xbffd0800 125 1.1 rkujawa #define AMCC460EX_SATA_DMA_SIZE 0x00000400 126 1.1 rkujawa #define AMCC460EX_SATA_BASE 0xbffd1000 127 1.1 rkujawa #define AMCC460EX_SATA_SIZE 0x00000800 128 1.1 rkujawa 129 1.1 rkujawa /* 130 1.1 rkujawa * Per-port PCIe SDR registers 131 1.1 rkujawa */ 132 1.1 rkujawa #define AMCC460EX_PESDR0_LOOP 0x303 133 1.1 rkujawa #define AMCC460EX_PESDR0_RCSSET 0x304 134 1.1 rkujawa #define AMCC460EX_PESDR0_RCSSTS 0x305 135 1.1 rkujawa #define AMCC460EX_PESDR1_LOOP 0x343 136 1.1 rkujawa #define AMCC460EX_PESDR1_RCSSET 0x344 137 1.1 rkujawa #define AMCC460EX_PESDR1_RCSSTS 0x345 138 1.1 rkujawa 139 1.1 rkujawa #define AMCC460EX_PESDR_LOOP_LNKUP 0x00001000 /* link trained */ 140 1.1 rkujawa 141 1.1 rkujawa /* 142 1.1 rkujawa * Interrupt numbers in the flat PIC space: 143 1.1 rkujawa * UIC0 : irqs 0-31 144 1.1 rkujawa * UIC1 : cascaded via UIC0 bit 30) is irqs 32-63 145 1.1 rkujawa * UIC2 : (UIC0 bit 10) is irqs 64-95 146 1.1 rkujawa * UIC3 : (UIC0 bit 16) is irqs 96-127 147 1.1 rkujawa */ 148 1.1 rkujawa #define AMCC460EX_UART0_IRQ 33 /* UIC1 bit 1 */ 149 1.1 rkujawa #define AMCC460EX_UART1_IRQ 1 /* UIC0 bit 1 */ 150 1.1 rkujawa #define AMCC460EX_IIC0_IRQ 2 /* UIC0 bit 2 */ 151 1.1 rkujawa #define AMCC460EX_IIC1_IRQ 3 /* UIC0 bit 3 */ 152 1.1 rkujawa #define AMCC460EX_PCI_IRQ 32 /* UIC1 bit 0: PCI INTA */ 153 1.1 rkujawa #define AMCC460EX_MAL_TXEOB_IRQ 70 /* UIC2 bit 6 */ 154 1.1 rkujawa #define AMCC460EX_MAL_RXEOB_IRQ 71 /* UIC2 bit 7 */ 155 1.1 rkujawa #define AMCC460EX_EMAC0_IRQ 80 /* UIC2 bit 16 */ 156 1.1 rkujawa #define AMCC460EX_EMAC1_IRQ 81 /* UIC2 bit 17 */ 157 1.1 rkujawa #define AMCC460EX_USB_EHCI_IRQ 93 /* UIC2 bit 29 */ 158 1.1 rkujawa #define AMCC460EX_USB_OHCI_IRQ 94 /* UIC2 bit 30 */ 159 1.1 rkujawa #define AMCC460EX_SATA_IRQ 96 /* UIC3 bit 0 */ 160 1.1 rkujawa #define AMCC460EX_SATA_DMA_IRQ 101 /* UIC3 bit 5: AHB DMAC */ 161 1.1 rkujawa 162 1.3 rkujawa /* 163 1.3 rkujawa * L2 cache controller (L2C0) device control registers. 164 1.3 rkujawa */ 165 1.3 rkujawa #define DCR_L2C0_CFG 0x030 /* L2 cache configuration */ 166 1.3 rkujawa #define L2C_CFG_L2M 0x80000000 /* SRAM array used as L2 */ 167 1.3 rkujawa #define L2C_CFG_ICU 0x40000000 /* I-cache uses L2 */ 168 1.3 rkujawa #define L2C_CFG_DCU 0x20000000 /* D-cache uses L2 */ 169 1.3 rkujawa #define L2C_CFG_FRAN 0x00200000 /* fast read ack (best perf) */ 170 1.3 rkujawa #define L2C_CFG_SS_256KB 0x00000000 /* SRAM size 256KB (only) */ 171 1.3 rkujawa #define L2C_CFG_SNPCI 0x00000020 /* snoop cache-inhibit writes */ 172 1.3 rkujawa #define L2C_CFG_RDBW 0x00000008 /* read byte write (required) */ 173 1.3 rkujawa #define DCR_L2C0_CMD 0x031 /* L2 cache command */ 174 1.3 rkujawa #define L2C_CMD_INV 0x20000000 /* invalidate at L2C0_ADDR */ 175 1.3 rkujawa #define L2C_CMD_CCP 0x10000000 /* clear cache parity error */ 176 1.3 rkujawa #define L2C_CMD_CTE 0x08000000 /* clear tag error */ 177 1.3 rkujawa #define L2C_CMD_HCC 0x00800000 /* hardware clear whole cache */ 178 1.3 rkujawa #define DCR_L2C0_ADDR 0x032 /* L2 cache address */ 179 1.3 rkujawa #define DCR_L2C0_DATA 0x033 /* L2 cache data */ 180 1.3 rkujawa #define DCR_L2C0_SR 0x034 /* L2 cache status */ 181 1.3 rkujawa #define L2C_SR_CC 0x80000000 /* command complete */ 182 1.3 rkujawa #define DCR_L2C0_REVID 0x035 /* L2 cache revision id */ 183 1.3 rkujawa #define DCR_L2C0_SNP0 0x036 /* L2 snoop region 0 */ 184 1.3 rkujawa #define DCR_L2C0_SNP1 0x037 /* L2 snoop region 1 */ 185 1.3 rkujawa #define L2C_SNP_SSR_SHIFT 12 /* size field (bits 16:19) shift */ 186 1.3 rkujawa #define L2C_SNP_ESR 0x00000800 /* enable snoop region */ 187 1.3 rkujawa 188 1.3 rkujawa /* Internal SRAM0 bank config registers; zeroed to free the array for L2. */ 189 1.3 rkujawa #define DCR_SRAM0_SB0CR 0x020 190 1.3 rkujawa #define DCR_SRAM0_SB1CR 0x021 191 1.3 rkujawa #define DCR_SRAM0_SB2CR 0x022 192 1.3 rkujawa #define DCR_SRAM0_SB3CR 0x023 193 1.3 rkujawa 194 1.3 rkujawa /* 195 1.3 rkujawa * AHB-to-PLB bridge CSRs 196 1.3 rkujawa */ 197 1.3 rkujawa #define DCR_AHB_REV 0x0a0 /* revision id */ 198 1.3 rkujawa #define DCR_AHB_TOP 0x0a4 /* PLB2AHB top address */ 199 1.3 rkujawa #define DCR_AHB_BOT 0x0a5 /* PLB2AHB bottom address */ 200 1.3 rkujawa #define DCR_AHB_ATT 0x0a6 /* PLB2AHB attribute */ 201 1.3 rkujawa #define DCR_AHB_CR 0x0a7 /* AHB2PLB control (PUOA in [6:3]) */ 202 1.3 rkujawa #define AHB_CR_PUOA_MASK 0x00000078 /* PLB upper order address */ 203 1.3 rkujawa #define AHB_CR_PUOA_SHIFT 3 204 1.3 rkujawa 205 1.1 rkujawa #endif /* _IBM4XX_AMCC460EX_H_ */ 206