1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify it 3*4882a593Smuzhiyun * under the terms of the GNU General Public License as published by the 4*4882a593Smuzhiyun * Free Software Foundation; either version 2 of the License, or (at your 5*4882a593Smuzhiyun * option) any later version. 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 8*4882a593Smuzhiyun * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 9*4882a593Smuzhiyun * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 10*4882a593Smuzhiyun * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 11*4882a593Smuzhiyun * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 12*4882a593Smuzhiyun * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 13*4882a593Smuzhiyun * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 14*4882a593Smuzhiyun * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 15*4882a593Smuzhiyun * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 16*4882a593Smuzhiyun * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 17*4882a593Smuzhiyun * 18*4882a593Smuzhiyun * You should have received a copy of the GNU General Public License along 19*4882a593Smuzhiyun * with this program; if not, write to the Free Software Foundation, Inc., 20*4882a593Smuzhiyun * 675 Mass Ave, Cambridge, MA 02139, USA. 21*4882a593Smuzhiyun * 22*4882a593Smuzhiyun * Copyright 2004 IDT Inc. (rischelp@idt.com) 23*4882a593Smuzhiyun * 24*4882a593Smuzhiyun * Initial Release 25*4882a593Smuzhiyun */ 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #ifndef _ASM_RC32434_PCI_H_ 28*4882a593Smuzhiyun #define _ASM_RC32434_PCI_H_ 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #define epld_mask ((volatile unsigned char *)0xB900000d) 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #define PCI0_BASE_ADDR 0x18080000 33*4882a593Smuzhiyun #define PCI_LBA_COUNT 4 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun struct pci_map { 36*4882a593Smuzhiyun u32 address; /* Address. */ 37*4882a593Smuzhiyun u32 control; /* Control. */ 38*4882a593Smuzhiyun u32 mapping; /* mapping. */ 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun struct pci_reg { 42*4882a593Smuzhiyun u32 pcic; 43*4882a593Smuzhiyun u32 pcis; 44*4882a593Smuzhiyun u32 pcism; 45*4882a593Smuzhiyun u32 pcicfga; 46*4882a593Smuzhiyun u32 pcicfgd; 47*4882a593Smuzhiyun volatile struct pci_map pcilba[PCI_LBA_COUNT]; 48*4882a593Smuzhiyun u32 pcidac; 49*4882a593Smuzhiyun u32 pcidas; 50*4882a593Smuzhiyun u32 pcidasm; 51*4882a593Smuzhiyun u32 pcidad; 52*4882a593Smuzhiyun u32 pcidma8c; 53*4882a593Smuzhiyun u32 pcidma9c; 54*4882a593Smuzhiyun u32 pcitc; 55*4882a593Smuzhiyun }; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun #define PCI_MSU_COUNT 2 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun struct pci_msu { 60*4882a593Smuzhiyun u32 pciim[PCI_MSU_COUNT]; 61*4882a593Smuzhiyun u32 pciom[PCI_MSU_COUNT]; 62*4882a593Smuzhiyun u32 pciid; 63*4882a593Smuzhiyun u32 pciiic; 64*4882a593Smuzhiyun u32 pciiim; 65*4882a593Smuzhiyun u32 pciiod; 66*4882a593Smuzhiyun u32 pciioic; 67*4882a593Smuzhiyun u32 pciioim; 68*4882a593Smuzhiyun }; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun /* 71*4882a593Smuzhiyun * PCI Control Register 72*4882a593Smuzhiyun */ 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun #define PCI_CTL_EN (1 << 0) 75*4882a593Smuzhiyun #define PCI_CTL_TNR (1 << 1) 76*4882a593Smuzhiyun #define PCI_CTL_SCE (1 << 2) 77*4882a593Smuzhiyun #define PCI_CTL_IEN (1 << 3) 78*4882a593Smuzhiyun #define PCI_CTL_AAA (1 << 4) 79*4882a593Smuzhiyun #define PCI_CTL_EAP (1 << 5) 80*4882a593Smuzhiyun #define PCI_CTL_PCIM_BIT 6 81*4882a593Smuzhiyun #define PCI_CTL_PCIM 0x000001c0 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #define PCI_CTL_PCIM_DIS 0 84*4882a593Smuzhiyun #define PCI_CTL_PCIM_TNR 1 /* Satellite - target not ready */ 85*4882a593Smuzhiyun #define PCI_CTL_PCIM_SUS 2 /* Satellite - suspended CPU. */ 86*4882a593Smuzhiyun #define PCI_CTL_PCIM_EXT 3 /* Host - external arbiter. */ 87*4882a593Smuzhiyun #define PCI_CTL PCIM_PRIO 4 /* Host - fixed priority arb. */ 88*4882a593Smuzhiyun #define PCI_CTL_PCIM_RR 5 /* Host - round robin priority. */ 89*4882a593Smuzhiyun #define PCI_CTL_PCIM_RSVD6 6 90*4882a593Smuzhiyun #define PCI_CTL_PCIM_RSVD7 7 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun #define PCI_CTL_IGM (1 << 9) 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun /* 95*4882a593Smuzhiyun * PCI Status Register 96*4882a593Smuzhiyun */ 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #define PCI_STAT_EED (1 << 0) 99*4882a593Smuzhiyun #define PCI_STAT_WR (1 << 1) 100*4882a593Smuzhiyun #define PCI_STAT_NMI (1 << 2) 101*4882a593Smuzhiyun #define PCI_STAT_II (1 << 3) 102*4882a593Smuzhiyun #define PCI_STAT_CWE (1 << 4) 103*4882a593Smuzhiyun #define PCI_STAT_CRE (1 << 5) 104*4882a593Smuzhiyun #define PCI_STAT_MDPE (1 << 6) 105*4882a593Smuzhiyun #define PCI_STAT_STA (1 << 7) 106*4882a593Smuzhiyun #define PCI_STAT_RTA (1 << 8) 107*4882a593Smuzhiyun #define PCI_STAT_RMA (1 << 9) 108*4882a593Smuzhiyun #define PCI_STAT_SSE (1 << 10) 109*4882a593Smuzhiyun #define PCI_STAT_OSE (1 << 11) 110*4882a593Smuzhiyun #define PCI_STAT_PE (1 << 12) 111*4882a593Smuzhiyun #define PCI_STAT_TAE (1 << 13) 112*4882a593Smuzhiyun #define PCI_STAT_RLE (1 << 14) 113*4882a593Smuzhiyun #define PCI_STAT_BME (1 << 15) 114*4882a593Smuzhiyun #define PCI_STAT_PRD (1 << 16) 115*4882a593Smuzhiyun #define PCI_STAT_RIP (1 << 17) 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun /* 118*4882a593Smuzhiyun * PCI Status Mask Register 119*4882a593Smuzhiyun */ 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun #define PCI_STATM_EED PCI_STAT_EED 122*4882a593Smuzhiyun #define PCI_STATM_WR PCI_STAT_WR 123*4882a593Smuzhiyun #define PCI_STATM_NMI PCI_STAT_NMI 124*4882a593Smuzhiyun #define PCI_STATM_II PCI_STAT_II 125*4882a593Smuzhiyun #define PCI_STATM_CWE PCI_STAT_CWE 126*4882a593Smuzhiyun #define PCI_STATM_CRE PCI_STAT_CRE 127*4882a593Smuzhiyun #define PCI_STATM_MDPE PCI_STAT_MDPE 128*4882a593Smuzhiyun #define PCI_STATM_STA PCI_STAT_STA 129*4882a593Smuzhiyun #define PCI_STATM_RTA PCI_STAT_RTA 130*4882a593Smuzhiyun #define PCI_STATM_RMA PCI_STAT_RMA 131*4882a593Smuzhiyun #define PCI_STATM_SSE PCI_STAT_SSE 132*4882a593Smuzhiyun #define PCI_STATM_OSE PCI_STAT_OSE 133*4882a593Smuzhiyun #define PCI_STATM_PE PCI_STAT_PE 134*4882a593Smuzhiyun #define PCI_STATM_TAE PCI_STAT_TAE 135*4882a593Smuzhiyun #define PCI_STATM_RLE PCI_STAT_RLE 136*4882a593Smuzhiyun #define PCI_STATM_BME PCI_STAT_BME 137*4882a593Smuzhiyun #define PCI_STATM_PRD PCI_STAT_PRD 138*4882a593Smuzhiyun #define PCI_STATM_RIP PCI_STAT_RIP 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun /* 141*4882a593Smuzhiyun * PCI Configuration Address Register 142*4882a593Smuzhiyun */ 143*4882a593Smuzhiyun #define PCI_CFGA_REG_BIT 2 144*4882a593Smuzhiyun #define PCI_CFGA_REG 0x000000fc 145*4882a593Smuzhiyun #define PCI_CFGA_REG_ID (0x00 >> 2) /* use PCFGID */ 146*4882a593Smuzhiyun #define PCI_CFGA_REG_04 (0x04 >> 2) /* use PCFG04_ */ 147*4882a593Smuzhiyun #define PCI_CFGA_REG_08 (0x08 >> 2) /* use PCFG08_ */ 148*4882a593Smuzhiyun #define PCI_CFGA_REG_0C (0x0C >> 2) /* use PCFG0C_ */ 149*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA0 (0x10 >> 2) /* use PCIPBA_ */ 150*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA1 (0x14 >> 2) /* use PCIPBA_ */ 151*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA2 (0x18 >> 2) /* use PCIPBA_ */ 152*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA3 (0x1c >> 2) /* use PCIPBA_ */ 153*4882a593Smuzhiyun #define PCI_CFGA_REG_SUBSYS (0x2c >> 2) /* use PCFGSS_ */ 154*4882a593Smuzhiyun #define PCI_CFGA_REG_3C (0x3C >> 2) /* use PCFG3C_ */ 155*4882a593Smuzhiyun #define PCI_CFGA_REG_PBBA0C (0x44 >> 2) /* use PCIPBAC_ */ 156*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA0M (0x48 >> 2) 157*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA1C (0x4c >> 2) /* use PCIPBAC_ */ 158*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA1M (0x50 >> 2) 159*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA2C (0x54 >> 2) /* use PCIPBAC_ */ 160*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA2M (0x58 >> 2) 161*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA3C (0x5c >> 2) /* use PCIPBAC_ */ 162*4882a593Smuzhiyun #define PCI_CFGA_REG_PBA3M (0x60 >> 2) 163*4882a593Smuzhiyun #define PCI_CFGA_REG_PMGT (0x64 >> 2) 164*4882a593Smuzhiyun #define PCI_CFGA_FUNC_BIT 8 165*4882a593Smuzhiyun #define PCI_CFGA_FUNC 0x00000700 166*4882a593Smuzhiyun #define PCI_CFGA_DEV_BIT 11 167*4882a593Smuzhiyun #define PCI_CFGA_DEV 0x0000f800 168*4882a593Smuzhiyun #define PCI_CFGA_DEV_INTERN 0 169*4882a593Smuzhiyun #define PCI_CFGA_BUS_BIT 16 170*4882a593Smuzhiyun #define PCI CFGA_BUS 0x00ff0000 171*4882a593Smuzhiyun #define PCI_CFGA_BUS_TYPE0 0 172*4882a593Smuzhiyun #define PCI_CFGA_EN (1 << 31) 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun /* PCI CFG04 commands */ 175*4882a593Smuzhiyun #define PCI_CFG04_CMD_IO_ENA (1 << 0) 176*4882a593Smuzhiyun #define PCI_CFG04_CMD_MEM_ENA (1 << 1) 177*4882a593Smuzhiyun #define PCI_CFG04_CMD_BM_ENA (1 << 2) 178*4882a593Smuzhiyun #define PCI_CFG04_CMD_MW_INV (1 << 4) 179*4882a593Smuzhiyun #define PCI_CFG04_CMD_PAR_ENA (1 << 6) 180*4882a593Smuzhiyun #define PCI_CFG04_CMD_SER_ENA (1 << 8) 181*4882a593Smuzhiyun #define PCI_CFG04_CMD_FAST_ENA (1 << 9) 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun /* PCI CFG04 status fields */ 184*4882a593Smuzhiyun #define PCI_CFG04_STAT_BIT 16 185*4882a593Smuzhiyun #define PCI_CFG04_STAT 0xffff0000 186*4882a593Smuzhiyun #define PCI_CFG04_STAT_66_MHZ (1 << 21) 187*4882a593Smuzhiyun #define PCI_CFG04_STAT_FBB (1 << 23) 188*4882a593Smuzhiyun #define PCI_CFG04_STAT_MDPE (1 << 24) 189*4882a593Smuzhiyun #define PCI_CFG04_STAT_DST (1 << 25) 190*4882a593Smuzhiyun #define PCI_CFG04_STAT_STA (1 << 27) 191*4882a593Smuzhiyun #define PCI_CFG04_STAT_RTA (1 << 28) 192*4882a593Smuzhiyun #define PCI_CFG04_STAT_RMA (1 << 29) 193*4882a593Smuzhiyun #define PCI_CFG04_STAT_SSE (1 << 30) 194*4882a593Smuzhiyun #define PCI_CFG04_STAT_PE (1 << 31) 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun #define PCI_PBA_MSI (1 << 0) 197*4882a593Smuzhiyun #define PCI_PBA_P (1 << 2) 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun /* PCI PBAC registers */ 200*4882a593Smuzhiyun #define PCI_PBAC_MSI (1 << 0) 201*4882a593Smuzhiyun #define PCI_PBAC_P (1 << 1) 202*4882a593Smuzhiyun #define PCI_PBAC_SIZE_BIT 2 203*4882a593Smuzhiyun #define PCI_PBAC_SIZE 0x0000007c 204*4882a593Smuzhiyun #define PCI_PBAC_SB (1 << 7) 205*4882a593Smuzhiyun #define PCI_PBAC_PP (1 << 8) 206*4882a593Smuzhiyun #define PCI_PBAC_MR_BIT 9 207*4882a593Smuzhiyun #define PCI_PBAC_MR 0x00000600 208*4882a593Smuzhiyun #define PCI_PBAC_MR_RD 0 209*4882a593Smuzhiyun #define PCI_PBAC_MR_RD_LINE 1 210*4882a593Smuzhiyun #define PCI_PBAC_MR_RD_MULT 2 211*4882a593Smuzhiyun #define PCI_PBAC_MRL (1 << 11) 212*4882a593Smuzhiyun #define PCI_PBAC_MRM (1 << 12) 213*4882a593Smuzhiyun #define PCI_PBAC_TRP (1 << 13) 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun #define PCI_CFG40_TRDY_TIM 0x000000ff 216*4882a593Smuzhiyun #define PCI_CFG40_RET_LIM 0x0000ff00 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun /* 219*4882a593Smuzhiyun * PCI Local Base Address [0|1|2|3] Register 220*4882a593Smuzhiyun */ 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun #define PCI_LBA_BADDR_BIT 0 223*4882a593Smuzhiyun #define PCI_LBA_BADDR 0xffffff00 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun /* 226*4882a593Smuzhiyun * PCI Local Base Address Control Register 227*4882a593Smuzhiyun */ 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun #define PCI_LBAC_MSI (1 << 0) 230*4882a593Smuzhiyun #define PCI_LBAC_MSI_MEM 0 231*4882a593Smuzhiyun #define PCI_LBAC_MSI_IO 1 232*4882a593Smuzhiyun #define PCI_LBAC_SIZE_BIT 2 233*4882a593Smuzhiyun #define PCI_LBAC_SIZE 0x0000007c 234*4882a593Smuzhiyun #define PCI_LBAC_SB (1 << 7) 235*4882a593Smuzhiyun #define PCI_LBAC_RT (1 << 8) 236*4882a593Smuzhiyun #define PCI_LBAC_RT_NO_PREF 0 237*4882a593Smuzhiyun #define PCI_LBAC_RT_PREF 1 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun /* 240*4882a593Smuzhiyun * PCI Local Base Address [0|1|2|3] Mapping Register 241*4882a593Smuzhiyun */ 242*4882a593Smuzhiyun #define PCI_LBAM_MADDR_BIT 8 243*4882a593Smuzhiyun #define PCI_LBAM_MADDR 0xffffff00 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun /* 246*4882a593Smuzhiyun * PCI Decoupled Access Control Register 247*4882a593Smuzhiyun */ 248*4882a593Smuzhiyun #define PCI_DAC_DEN (1 << 0) 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun /* 251*4882a593Smuzhiyun * PCI Decoupled Access Status Register 252*4882a593Smuzhiyun */ 253*4882a593Smuzhiyun #define PCI_DAS_D (1 << 0) 254*4882a593Smuzhiyun #define PCI_DAS_B (1 << 1) 255*4882a593Smuzhiyun #define PCI_DAS_E (1 << 2) 256*4882a593Smuzhiyun #define PCI_DAS_OFE (1 << 3) 257*4882a593Smuzhiyun #define PCI_DAS_OFF (1 << 4) 258*4882a593Smuzhiyun #define PCI_DAS_IFE (1 << 5) 259*4882a593Smuzhiyun #define PCI_DAS_IFF (1 << 6) 260*4882a593Smuzhiyun 261*4882a593Smuzhiyun /* 262*4882a593Smuzhiyun * PCI DMA Channel 8 Configuration Register 263*4882a593Smuzhiyun */ 264*4882a593Smuzhiyun #define PCI_DMA8C_MBS_BIT 0 265*4882a593Smuzhiyun #define PCI_DMA8C_MBS 0x00000fff /* Maximum Burst Size. */ 266*4882a593Smuzhiyun #define PCI_DMA8C_OUR (1 << 12) 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun /* 269*4882a593Smuzhiyun * PCI DMA Channel 9 Configuration Register 270*4882a593Smuzhiyun */ 271*4882a593Smuzhiyun #define PCI_DMA9C_MBS_BIT 0 /* Maximum Burst Size. */ 272*4882a593Smuzhiyun #define PCI_DMA9C_MBS 0x00000fff 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun /* 275*4882a593Smuzhiyun * PCI to Memory(DMA Channel 8) AND Memory to PCI DMA(DMA Channel 9)Descriptors 276*4882a593Smuzhiyun */ 277*4882a593Smuzhiyun 278*4882a593Smuzhiyun #define PCI_DMAD_PT_BIT 22 /* in DEVCMD field (descriptor) */ 279*4882a593Smuzhiyun #define PCI_DMAD_PT 0x00c00000 /* preferred transaction field */ 280*4882a593Smuzhiyun /* These are for reads (DMA channel 8) */ 281*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_MR 0 /* memory read */ 282*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_MRL 1 /* memory read line */ 283*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_MRM 2 /* memory read multiple */ 284*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_IOR 3 /* I/O read */ 285*4882a593Smuzhiyun /* These are for writes (DMA channel 9) */ 286*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_MW 0 /* memory write */ 287*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_MWI 1 /* memory write invalidate */ 288*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_IOW 3 /* I/O write */ 289*4882a593Smuzhiyun 290*4882a593Smuzhiyun /* Swap byte field applies to both DMA channel 8 and 9 */ 291*4882a593Smuzhiyun #define PCI_DMAD_SB (1 << 24) /* swap byte field */ 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun /* 295*4882a593Smuzhiyun * PCI Target Control Register 296*4882a593Smuzhiyun */ 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun #define PCI_TC_RTIMER_BIT 0 299*4882a593Smuzhiyun #define PCI_TC_RTIMER 0x000000ff 300*4882a593Smuzhiyun #define PCI_TC_DTIMER_BIT 8 301*4882a593Smuzhiyun #define PCI_TC_DTIMER 0x0000ff00 302*4882a593Smuzhiyun #define PCI_TC_RDR (1 << 18) 303*4882a593Smuzhiyun #define PCI_TC_DDT (1 << 19) 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun /* 306*4882a593Smuzhiyun * PCI messaging unit [applies to both inbound and outbound registers ] 307*4882a593Smuzhiyun */ 308*4882a593Smuzhiyun #define PCI_MSU_M0 (1 << 0) 309*4882a593Smuzhiyun #define PCI_MSU_M1 (1 << 1) 310*4882a593Smuzhiyun #define PCI_MSU_DB (1 << 2) 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun #define PCI_MSG_ADDR 0xB8088010 313*4882a593Smuzhiyun #define PCI0_ADDR 0xB8080000 314*4882a593Smuzhiyun #define rc32434_pci ((struct pci_reg *) PCI0_ADDR) 315*4882a593Smuzhiyun #define rc32434_pci_msg ((struct pci_msu *) PCI_MSG_ADDR) 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun #define PCIM_SHFT 0x6 318*4882a593Smuzhiyun #define PCIM_BIT_LEN 0x7 319*4882a593Smuzhiyun #define PCIM_H_EA 0x3 320*4882a593Smuzhiyun #define PCIM_H_IA_FIX 0x4 321*4882a593Smuzhiyun #define PCIM_H_IA_RR 0x5 322*4882a593Smuzhiyun 323*4882a593Smuzhiyun #define PCI_ADDR_START 0x50000000 324*4882a593Smuzhiyun 325*4882a593Smuzhiyun #define CPUTOPCI_MEM_WIN 0x02000000 326*4882a593Smuzhiyun #define CPUTOPCI_IO_WIN 0x00100000 327*4882a593Smuzhiyun #define PCILBA_SIZE_SHFT 2 328*4882a593Smuzhiyun #define PCILBA_SIZE_MASK 0x1F 329*4882a593Smuzhiyun #define SIZE_256MB 0x1C 330*4882a593Smuzhiyun #define SIZE_128MB 0x1B 331*4882a593Smuzhiyun #define SIZE_64MB 0x1A 332*4882a593Smuzhiyun #define SIZE_32MB 0x19 333*4882a593Smuzhiyun #define SIZE_16MB 0x18 334*4882a593Smuzhiyun #define SIZE_4MB 0x16 335*4882a593Smuzhiyun #define SIZE_2MB 0x15 336*4882a593Smuzhiyun #define SIZE_1MB 0x14 337*4882a593Smuzhiyun #define KORINA_CONFIG0_ADDR 0x80000000 338*4882a593Smuzhiyun #define KORINA_CONFIG1_ADDR 0x80000004 339*4882a593Smuzhiyun #define KORINA_CONFIG2_ADDR 0x80000008 340*4882a593Smuzhiyun #define KORINA_CONFIG3_ADDR 0x8000000C 341*4882a593Smuzhiyun #define KORINA_CONFIG4_ADDR 0x80000010 342*4882a593Smuzhiyun #define KORINA_CONFIG5_ADDR 0x80000014 343*4882a593Smuzhiyun #define KORINA_CONFIG6_ADDR 0x80000018 344*4882a593Smuzhiyun #define KORINA_CONFIG7_ADDR 0x8000001C 345*4882a593Smuzhiyun #define KORINA_CONFIG8_ADDR 0x80000020 346*4882a593Smuzhiyun #define KORINA_CONFIG9_ADDR 0x80000024 347*4882a593Smuzhiyun #define KORINA_CONFIG10_ADDR 0x80000028 348*4882a593Smuzhiyun #define KORINA_CONFIG11_ADDR 0x8000002C 349*4882a593Smuzhiyun #define KORINA_CONFIG12_ADDR 0x80000030 350*4882a593Smuzhiyun #define KORINA_CONFIG13_ADDR 0x80000034 351*4882a593Smuzhiyun #define KORINA_CONFIG14_ADDR 0x80000038 352*4882a593Smuzhiyun #define KORINA_CONFIG15_ADDR 0x8000003C 353*4882a593Smuzhiyun #define KORINA_CONFIG16_ADDR 0x80000040 354*4882a593Smuzhiyun #define KORINA_CONFIG17_ADDR 0x80000044 355*4882a593Smuzhiyun #define KORINA_CONFIG18_ADDR 0x80000048 356*4882a593Smuzhiyun #define KORINA_CONFIG19_ADDR 0x8000004C 357*4882a593Smuzhiyun #define KORINA_CONFIG20_ADDR 0x80000050 358*4882a593Smuzhiyun #define KORINA_CONFIG21_ADDR 0x80000054 359*4882a593Smuzhiyun #define KORINA_CONFIG22_ADDR 0x80000058 360*4882a593Smuzhiyun #define KORINA_CONFIG23_ADDR 0x8000005C 361*4882a593Smuzhiyun #define KORINA_CONFIG24_ADDR 0x80000060 362*4882a593Smuzhiyun #define KORINA_CONFIG25_ADDR 0x80000064 363*4882a593Smuzhiyun #define KORINA_CMD (PCI_CFG04_CMD_IO_ENA | \ 364*4882a593Smuzhiyun PCI_CFG04_CMD_MEM_ENA | \ 365*4882a593Smuzhiyun PCI_CFG04_CMD_BM_ENA | \ 366*4882a593Smuzhiyun PCI_CFG04_CMD_MW_INV | \ 367*4882a593Smuzhiyun PCI_CFG04_CMD_PAR_ENA | \ 368*4882a593Smuzhiyun PCI_CFG04_CMD_SER_ENA) 369*4882a593Smuzhiyun 370*4882a593Smuzhiyun #define KORINA_STAT (PCI_CFG04_STAT_MDPE | \ 371*4882a593Smuzhiyun PCI_CFG04_STAT_STA | \ 372*4882a593Smuzhiyun PCI_CFG04_STAT_RTA | \ 373*4882a593Smuzhiyun PCI_CFG04_STAT_RMA | \ 374*4882a593Smuzhiyun PCI_CFG04_STAT_SSE | \ 375*4882a593Smuzhiyun PCI_CFG04_STAT_PE) 376*4882a593Smuzhiyun 377*4882a593Smuzhiyun #define KORINA_CNFG1 ((KORINA_STAT<<16)|KORINA_CMD) 378*4882a593Smuzhiyun 379*4882a593Smuzhiyun #define KORINA_REVID 0 380*4882a593Smuzhiyun #define KORINA_CLASS_CODE 0 381*4882a593Smuzhiyun #define KORINA_CNFG2 ((KORINA_CLASS_CODE<<8) | \ 382*4882a593Smuzhiyun KORINA_REVID) 383*4882a593Smuzhiyun 384*4882a593Smuzhiyun #define KORINA_CACHE_LINE_SIZE 4 385*4882a593Smuzhiyun #define KORINA_MASTER_LAT 0x3c 386*4882a593Smuzhiyun #define KORINA_HEADER_TYPE 0 387*4882a593Smuzhiyun #define KORINA_BIST 0 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun #define KORINA_CNFG3 ((KORINA_BIST << 24) | \ 390*4882a593Smuzhiyun (KORINA_HEADER_TYPE<<16) | \ 391*4882a593Smuzhiyun (KORINA_MASTER_LAT<<8) | \ 392*4882a593Smuzhiyun KORINA_CACHE_LINE_SIZE) 393*4882a593Smuzhiyun 394*4882a593Smuzhiyun #define KORINA_BAR0 0x00000008 /* 128 MB Memory */ 395*4882a593Smuzhiyun #define KORINA_BAR1 0x18800001 /* 1 MB IO */ 396*4882a593Smuzhiyun #define KORINA_BAR2 0x18000001 /* 2 MB IO window for Korina 397*4882a593Smuzhiyun internal Registers */ 398*4882a593Smuzhiyun #define KORINA_BAR3 0x48000008 /* Spare 128 MB Memory */ 399*4882a593Smuzhiyun 400*4882a593Smuzhiyun #define KORINA_CNFG4 KORINA_BAR0 401*4882a593Smuzhiyun #define KORINA_CNFG5 KORINA_BAR1 402*4882a593Smuzhiyun #define KORINA_CNFG6 KORINA_BAR2 403*4882a593Smuzhiyun #define KORINA_CNFG7 KORINA_BAR3 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun #define KORINA_SUBSYS_VENDOR_ID 0x011d 406*4882a593Smuzhiyun #define KORINA_SUBSYSTEM_ID 0x0214 407*4882a593Smuzhiyun #define KORINA_CNFG8 0 408*4882a593Smuzhiyun #define KORINA_CNFG9 0 409*4882a593Smuzhiyun #define KORINA_CNFG10 0 410*4882a593Smuzhiyun #define KORINA_CNFG11 ((KORINA_SUBSYS_VENDOR_ID<<16) | \ 411*4882a593Smuzhiyun KORINA_SUBSYSTEM_ID) 412*4882a593Smuzhiyun #define KORINA_INT_LINE 1 413*4882a593Smuzhiyun #define KORINA_INT_PIN 1 414*4882a593Smuzhiyun #define KORINA_MIN_GNT 8 415*4882a593Smuzhiyun #define KORINA_MAX_LAT 0x38 416*4882a593Smuzhiyun #define KORINA_CNFG12 0 417*4882a593Smuzhiyun #define KORINA_CNFG13 0 418*4882a593Smuzhiyun #define KORINA_CNFG14 0 419*4882a593Smuzhiyun #define KORINA_CNFG15 ((KORINA_MAX_LAT<<24) | \ 420*4882a593Smuzhiyun (KORINA_MIN_GNT<<16) | \ 421*4882a593Smuzhiyun (KORINA_INT_PIN<<8) | \ 422*4882a593Smuzhiyun KORINA_INT_LINE) 423*4882a593Smuzhiyun #define KORINA_RETRY_LIMIT 0x80 424*4882a593Smuzhiyun #define KORINA_TRDY_LIMIT 0x80 425*4882a593Smuzhiyun #define KORINA_CNFG16 ((KORINA_RETRY_LIMIT<<8) | \ 426*4882a593Smuzhiyun KORINA_TRDY_LIMIT) 427*4882a593Smuzhiyun #define PCI_PBAxC_R 0x0 428*4882a593Smuzhiyun #define PCI_PBAxC_RL 0x1 429*4882a593Smuzhiyun #define PCI_PBAxC_RM 0x2 430*4882a593Smuzhiyun #define SIZE_SHFT 2 431*4882a593Smuzhiyun 432*4882a593Smuzhiyun #if defined(__MIPSEB__) 433*4882a593Smuzhiyun #define KORINA_PBA0C (PCI_PBAC_MRL | PCI_PBAC_SB | \ 434*4882a593Smuzhiyun ((PCI_PBAxC_RM & 0x3) << PCI_PBAC_MR_BIT) | \ 435*4882a593Smuzhiyun PCI_PBAC_PP | \ 436*4882a593Smuzhiyun (SIZE_128MB<<SIZE_SHFT) | \ 437*4882a593Smuzhiyun PCI_PBAC_P) 438*4882a593Smuzhiyun #else 439*4882a593Smuzhiyun #define KORINA_PBA0C (PCI_PBAC_MRL | \ 440*4882a593Smuzhiyun ((PCI_PBAxC_RM & 0x3) << PCI_PBAC_MR_BIT) | \ 441*4882a593Smuzhiyun PCI_PBAC_PP | \ 442*4882a593Smuzhiyun (SIZE_128MB<<SIZE_SHFT) | \ 443*4882a593Smuzhiyun PCI_PBAC_P) 444*4882a593Smuzhiyun #endif 445*4882a593Smuzhiyun #define KORINA_CNFG17 KORINA_PBA0C 446*4882a593Smuzhiyun #define KORINA_PBA0M 0x0 447*4882a593Smuzhiyun #define KORINA_CNFG18 KORINA_PBA0M 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun #if defined(__MIPSEB__) 450*4882a593Smuzhiyun #define KORINA_PBA1C ((SIZE_1MB<<SIZE_SHFT) | PCI_PBAC_SB | \ 451*4882a593Smuzhiyun PCI_PBAC_MSI) 452*4882a593Smuzhiyun #else 453*4882a593Smuzhiyun #define KORINA_PBA1C ((SIZE_1MB<<SIZE_SHFT) | \ 454*4882a593Smuzhiyun PCI_PBAC_MSI) 455*4882a593Smuzhiyun #endif 456*4882a593Smuzhiyun #define KORINA_CNFG19 KORINA_PBA1C 457*4882a593Smuzhiyun #define KORINA_PBA1M 0x0 458*4882a593Smuzhiyun #define KORINA_CNFG20 KORINA_PBA1M 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun #if defined(__MIPSEB__) 461*4882a593Smuzhiyun #define KORINA_PBA2C ((SIZE_2MB<<SIZE_SHFT) | PCI_PBAC_SB | \ 462*4882a593Smuzhiyun PCI_PBAC_MSI) 463*4882a593Smuzhiyun #else 464*4882a593Smuzhiyun #define KORINA_PBA2C ((SIZE_2MB<<SIZE_SHFT) | \ 465*4882a593Smuzhiyun PCI_PBAC_MSI) 466*4882a593Smuzhiyun #endif 467*4882a593Smuzhiyun #define KORINA_CNFG21 KORINA_PBA2C 468*4882a593Smuzhiyun #define KORINA_PBA2M 0x18000000 469*4882a593Smuzhiyun #define KORINA_CNFG22 KORINA_PBA2M 470*4882a593Smuzhiyun #define KORINA_PBA3C 0 471*4882a593Smuzhiyun #define KORINA_CNFG23 KORINA_PBA3C 472*4882a593Smuzhiyun #define KORINA_PBA3M 0 473*4882a593Smuzhiyun #define KORINA_CNFG24 KORINA_PBA3M 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun #define PCITC_DTIMER_VAL 8 476*4882a593Smuzhiyun #define PCITC_RTIMER_VAL 0x10 477*4882a593Smuzhiyun 478*4882a593Smuzhiyun #endif /* __ASM_RC32434_PCI_H */ 479