Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * PCI Register definitions for the MIPS System Controller.
0003  *
0004  * Copyright (C) 2002, 2005  MIPS Technologies, Inc.  All rights reserved.
0005  *  Authors: Carsten Langgaard <carstenl@mips.com>
0006  *       Maciej W. Rozycki <macro@mips.com>
0007  *
0008  * This file is subject to the terms and conditions of the GNU General Public
0009  * License.  See the file "COPYING" in the main directory of this archive
0010  * for more details.
0011  */
0012 #ifndef __ASM_MIPS_BOARDS_MSC01_PCI_H
0013 #define __ASM_MIPS_BOARDS_MSC01_PCI_H
0014 
0015 /*
0016  * Register offset addresses
0017  */
0018 
0019 #define MSC01_PCI_ID_OFS        0x0000
0020 #define MSC01_PCI_SC2PMBASL_OFS     0x0208
0021 #define MSC01_PCI_SC2PMMSKL_OFS     0x0218
0022 #define MSC01_PCI_SC2PMMAPL_OFS     0x0228
0023 #define MSC01_PCI_SC2PIOBASL_OFS    0x0248
0024 #define MSC01_PCI_SC2PIOMSKL_OFS    0x0258
0025 #define MSC01_PCI_SC2PIOMAPL_OFS    0x0268
0026 #define MSC01_PCI_P2SCMSKL_OFS      0x0308
0027 #define MSC01_PCI_P2SCMAPL_OFS      0x0318
0028 #define MSC01_PCI_INTCFG_OFS        0x0600
0029 #define MSC01_PCI_INTSTAT_OFS       0x0608
0030 #define MSC01_PCI_CFGADDR_OFS       0x0610
0031 #define MSC01_PCI_CFGDATA_OFS       0x0618
0032 #define MSC01_PCI_IACK_OFS      0x0620
0033 #define MSC01_PCI_HEAD0_OFS     0x2000  /* DevID, VendorID */
0034 #define MSC01_PCI_HEAD1_OFS     0x2008  /* Status, Command */
0035 #define MSC01_PCI_HEAD2_OFS     0x2010  /* Class code, RevID */
0036 #define MSC01_PCI_HEAD3_OFS     0x2018  /* bist, header, latency */
0037 #define MSC01_PCI_HEAD4_OFS     0x2020  /* BAR 0 */
0038 #define MSC01_PCI_HEAD5_OFS     0x2028  /* BAR 1 */
0039 #define MSC01_PCI_HEAD6_OFS     0x2030  /* BAR 2 */
0040 #define MSC01_PCI_HEAD7_OFS     0x2038  /* BAR 3 */
0041 #define MSC01_PCI_HEAD8_OFS     0x2040  /* BAR 4 */
0042 #define MSC01_PCI_HEAD9_OFS     0x2048  /* BAR 5 */
0043 #define MSC01_PCI_HEAD10_OFS        0x2050  /* CardBus CIS Ptr */
0044 #define MSC01_PCI_HEAD11_OFS        0x2058  /* SubSystem ID, -VendorID */
0045 #define MSC01_PCI_HEAD12_OFS        0x2060  /* ROM BAR */
0046 #define MSC01_PCI_HEAD13_OFS        0x2068  /* Capabilities ptr */
0047 #define MSC01_PCI_HEAD14_OFS        0x2070  /* reserved */
0048 #define MSC01_PCI_HEAD15_OFS        0x2078  /* Maxl, ming, intpin, int */
0049 #define MSC01_PCI_BAR0_OFS      0x2220
0050 #define MSC01_PCI_CFG_OFS       0x2380
0051 #define MSC01_PCI_SWAP_OFS      0x2388
0052 
0053 
0054 /*****************************************************************************
0055  * Register encodings
0056  ****************************************************************************/
0057 
0058 #define MSC01_PCI_ID_ID_SHF     16
0059 #define MSC01_PCI_ID_ID_MSK     0x00ff0000
0060 #define MSC01_PCI_ID_ID_HOSTBRIDGE  82
0061 #define MSC01_PCI_ID_MAR_SHF        8
0062 #define MSC01_PCI_ID_MAR_MSK        0x0000ff00
0063 #define MSC01_PCI_ID_MIR_SHF        0
0064 #define MSC01_PCI_ID_MIR_MSK        0x000000ff
0065 
0066 #define MSC01_PCI_SC2PMBASL_BAS_SHF 24
0067 #define MSC01_PCI_SC2PMBASL_BAS_MSK 0xff000000
0068 
0069 #define MSC01_PCI_SC2PMMSKL_MSK_SHF 24
0070 #define MSC01_PCI_SC2PMMSKL_MSK_MSK 0xff000000
0071 
0072 #define MSC01_PCI_SC2PMMAPL_MAP_SHF 24
0073 #define MSC01_PCI_SC2PMMAPL_MAP_MSK 0xff000000
0074 
0075 #define MSC01_PCI_SC2PIOBASL_BAS_SHF    24
0076 #define MSC01_PCI_SC2PIOBASL_BAS_MSK    0xff000000
0077 
0078 #define MSC01_PCI_SC2PIOMSKL_MSK_SHF    24
0079 #define MSC01_PCI_SC2PIOMSKL_MSK_MSK    0xff000000
0080 
0081 #define MSC01_PCI_SC2PIOMAPL_MAP_SHF    24
0082 #define MSC01_PCI_SC2PIOMAPL_MAP_MSK    0xff000000
0083 
0084 #define MSC01_PCI_P2SCMSKL_MSK_SHF  24
0085 #define MSC01_PCI_P2SCMSKL_MSK_MSK  0xff000000
0086 
0087 #define MSC01_PCI_P2SCMAPL_MAP_SHF  24
0088 #define MSC01_PCI_P2SCMAPL_MAP_MSK  0xff000000
0089 
0090 #define MSC01_PCI_INTCFG_RST_SHF    10
0091 #define MSC01_PCI_INTCFG_RST_MSK    0x00000400
0092 #define MSC01_PCI_INTCFG_RST_BIT    0x00000400
0093 #define MSC01_PCI_INTCFG_MWE_SHF    9
0094 #define MSC01_PCI_INTCFG_MWE_MSK    0x00000200
0095 #define MSC01_PCI_INTCFG_MWE_BIT    0x00000200
0096 #define MSC01_PCI_INTCFG_DTO_SHF    8
0097 #define MSC01_PCI_INTCFG_DTO_MSK    0x00000100
0098 #define MSC01_PCI_INTCFG_DTO_BIT    0x00000100
0099 #define MSC01_PCI_INTCFG_MA_SHF     7
0100 #define MSC01_PCI_INTCFG_MA_MSK     0x00000080
0101 #define MSC01_PCI_INTCFG_MA_BIT     0x00000080
0102 #define MSC01_PCI_INTCFG_TA_SHF     6
0103 #define MSC01_PCI_INTCFG_TA_MSK     0x00000040
0104 #define MSC01_PCI_INTCFG_TA_BIT     0x00000040
0105 #define MSC01_PCI_INTCFG_RTY_SHF    5
0106 #define MSC01_PCI_INTCFG_RTY_MSK    0x00000020
0107 #define MSC01_PCI_INTCFG_RTY_BIT    0x00000020
0108 #define MSC01_PCI_INTCFG_MWP_SHF    4
0109 #define MSC01_PCI_INTCFG_MWP_MSK    0x00000010
0110 #define MSC01_PCI_INTCFG_MWP_BIT    0x00000010
0111 #define MSC01_PCI_INTCFG_MRP_SHF    3
0112 #define MSC01_PCI_INTCFG_MRP_MSK    0x00000008
0113 #define MSC01_PCI_INTCFG_MRP_BIT    0x00000008
0114 #define MSC01_PCI_INTCFG_SWP_SHF    2
0115 #define MSC01_PCI_INTCFG_SWP_MSK    0x00000004
0116 #define MSC01_PCI_INTCFG_SWP_BIT    0x00000004
0117 #define MSC01_PCI_INTCFG_SRP_SHF    1
0118 #define MSC01_PCI_INTCFG_SRP_MSK    0x00000002
0119 #define MSC01_PCI_INTCFG_SRP_BIT    0x00000002
0120 #define MSC01_PCI_INTCFG_SE_SHF     0
0121 #define MSC01_PCI_INTCFG_SE_MSK     0x00000001
0122 #define MSC01_PCI_INTCFG_SE_BIT     0x00000001
0123 
0124 #define MSC01_PCI_INTSTAT_RST_SHF   10
0125 #define MSC01_PCI_INTSTAT_RST_MSK   0x00000400
0126 #define MSC01_PCI_INTSTAT_RST_BIT   0x00000400
0127 #define MSC01_PCI_INTSTAT_MWE_SHF   9
0128 #define MSC01_PCI_INTSTAT_MWE_MSK   0x00000200
0129 #define MSC01_PCI_INTSTAT_MWE_BIT   0x00000200
0130 #define MSC01_PCI_INTSTAT_DTO_SHF   8
0131 #define MSC01_PCI_INTSTAT_DTO_MSK   0x00000100
0132 #define MSC01_PCI_INTSTAT_DTO_BIT   0x00000100
0133 #define MSC01_PCI_INTSTAT_MA_SHF    7
0134 #define MSC01_PCI_INTSTAT_MA_MSK    0x00000080
0135 #define MSC01_PCI_INTSTAT_MA_BIT    0x00000080
0136 #define MSC01_PCI_INTSTAT_TA_SHF    6
0137 #define MSC01_PCI_INTSTAT_TA_MSK    0x00000040
0138 #define MSC01_PCI_INTSTAT_TA_BIT    0x00000040
0139 #define MSC01_PCI_INTSTAT_RTY_SHF   5
0140 #define MSC01_PCI_INTSTAT_RTY_MSK   0x00000020
0141 #define MSC01_PCI_INTSTAT_RTY_BIT   0x00000020
0142 #define MSC01_PCI_INTSTAT_MWP_SHF   4
0143 #define MSC01_PCI_INTSTAT_MWP_MSK   0x00000010
0144 #define MSC01_PCI_INTSTAT_MWP_BIT   0x00000010
0145 #define MSC01_PCI_INTSTAT_MRP_SHF   3
0146 #define MSC01_PCI_INTSTAT_MRP_MSK   0x00000008
0147 #define MSC01_PCI_INTSTAT_MRP_BIT   0x00000008
0148 #define MSC01_PCI_INTSTAT_SWP_SHF   2
0149 #define MSC01_PCI_INTSTAT_SWP_MSK   0x00000004
0150 #define MSC01_PCI_INTSTAT_SWP_BIT   0x00000004
0151 #define MSC01_PCI_INTSTAT_SRP_SHF   1
0152 #define MSC01_PCI_INTSTAT_SRP_MSK   0x00000002
0153 #define MSC01_PCI_INTSTAT_SRP_BIT   0x00000002
0154 #define MSC01_PCI_INTSTAT_SE_SHF    0
0155 #define MSC01_PCI_INTSTAT_SE_MSK    0x00000001
0156 #define MSC01_PCI_INTSTAT_SE_BIT    0x00000001
0157 
0158 #define MSC01_PCI_CFGADDR_BNUM_SHF  16
0159 #define MSC01_PCI_CFGADDR_BNUM_MSK  0x00ff0000
0160 #define MSC01_PCI_CFGADDR_DNUM_SHF  11
0161 #define MSC01_PCI_CFGADDR_DNUM_MSK  0x0000f800
0162 #define MSC01_PCI_CFGADDR_FNUM_SHF  8
0163 #define MSC01_PCI_CFGADDR_FNUM_MSK  0x00000700
0164 #define MSC01_PCI_CFGADDR_RNUM_SHF  2
0165 #define MSC01_PCI_CFGADDR_RNUM_MSK  0x000000fc
0166 
0167 #define MSC01_PCI_CFGDATA_DATA_SHF  0
0168 #define MSC01_PCI_CFGDATA_DATA_MSK  0xffffffff
0169 
0170 /* The defines below are ONLY valid for a MEM bar! */
0171 #define MSC01_PCI_BAR0_SIZE_SHF     4
0172 #define MSC01_PCI_BAR0_SIZE_MSK     0xfffffff0
0173 #define MSC01_PCI_BAR0_P_SHF        3
0174 #define MSC01_PCI_BAR0_P_MSK        0x00000008
0175 #define MSC01_PCI_BAR0_P_BIT        MSC01_PCI_BAR0_P_MSK
0176 #define MSC01_PCI_BAR0_D_SHF        1
0177 #define MSC01_PCI_BAR0_D_MSK        0x00000006
0178 #define MSC01_PCI_BAR0_T_SHF        0
0179 #define MSC01_PCI_BAR0_T_MSK        0x00000001
0180 #define MSC01_PCI_BAR0_T_BIT        MSC01_PCI_BAR0_T_MSK
0181 
0182 
0183 #define MSC01_PCI_CFG_RA_SHF        17
0184 #define MSC01_PCI_CFG_RA_MSK        0x00020000
0185 #define MSC01_PCI_CFG_RA_BIT        MSC01_PCI_CFG_RA_MSK
0186 #define MSC01_PCI_CFG_G_SHF     16
0187 #define MSC01_PCI_CFG_G_MSK     0x00010000
0188 #define MSC01_PCI_CFG_G_BIT     MSC01_PCI_CFG_G_MSK
0189 #define MSC01_PCI_CFG_EN_SHF        15
0190 #define MSC01_PCI_CFG_EN_MSK        0x00008000
0191 #define MSC01_PCI_CFG_EN_BIT        MSC01_PCI_CFG_EN_MSK
0192 #define MSC01_PCI_CFG_MAXRTRY_SHF   0
0193 #define MSC01_PCI_CFG_MAXRTRY_MSK   0x00000fff
0194 
0195 #define MSC01_PCI_SWAP_IO_SHF       18
0196 #define MSC01_PCI_SWAP_IO_MSK       0x000c0000
0197 #define MSC01_PCI_SWAP_MEM_SHF      16
0198 #define MSC01_PCI_SWAP_MEM_MSK      0x00030000
0199 #define MSC01_PCI_SWAP_BAR0_SHF     0
0200 #define MSC01_PCI_SWAP_BAR0_MSK     0x00000003
0201 #define MSC01_PCI_SWAP_NOSWAP       0
0202 #define MSC01_PCI_SWAP_BYTESWAP     1
0203 
0204 /*
0205  * MIPS System controller PCI register base.
0206  *
0207  * FIXME - are these macros specific to Malta and co or to the MSC?  If the
0208  * latter, they should be moved elsewhere.
0209  */
0210 #define MIPS_MSC01_PCI_REG_BASE     0x1bd00000
0211 #define MIPS_SOCITSC_PCI_REG_BASE   0x1ff10000
0212 
0213 extern unsigned long _pcictrl_msc;
0214 
0215 #define MSC01_PCI_REG_BASE  _pcictrl_msc
0216 
0217 #define MSC_WRITE(reg, data)    do { *(volatile u32 *)(reg) = data; } while (0)
0218 #define MSC_READ(reg, data) do { data = *(volatile u32 *)(reg); } while (0)
0219 
0220 /*
0221  * Registers absolute addresses
0222  */
0223 
0224 #define MSC01_PCI_ID        (MSC01_PCI_REG_BASE + MSC01_PCI_ID_OFS)
0225 #define MSC01_PCI_SC2PMBASL (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PMBASL_OFS)
0226 #define MSC01_PCI_SC2PMMSKL (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PMMSKL_OFS)
0227 #define MSC01_PCI_SC2PMMAPL (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PMMAPL_OFS)
0228 #define MSC01_PCI_SC2PIOBASL    (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PIOBASL_OFS)
0229 #define MSC01_PCI_SC2PIOMSKL    (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PIOMSKL_OFS)
0230 #define MSC01_PCI_SC2PIOMAPL    (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PIOMAPL_OFS)
0231 #define MSC01_PCI_P2SCMSKL  (MSC01_PCI_REG_BASE + MSC01_PCI_P2SCMSKL_OFS)
0232 #define MSC01_PCI_P2SCMAPL  (MSC01_PCI_REG_BASE + MSC01_PCI_P2SCMAPL_OFS)
0233 #define MSC01_PCI_INTCFG    (MSC01_PCI_REG_BASE + MSC01_PCI_INTCFG_OFS)
0234 #define MSC01_PCI_INTSTAT   (MSC01_PCI_REG_BASE + MSC01_PCI_INTSTAT_OFS)
0235 #define MSC01_PCI_CFGADDR   (MSC01_PCI_REG_BASE + MSC01_PCI_CFGADDR_OFS)
0236 #define MSC01_PCI_CFGDATA   (MSC01_PCI_REG_BASE + MSC01_PCI_CFGDATA_OFS)
0237 #define MSC01_PCI_IACK      (MSC01_PCI_REG_BASE + MSC01_PCI_IACK_OFS)
0238 #define MSC01_PCI_HEAD0     (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD0_OFS)
0239 #define MSC01_PCI_HEAD1     (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD1_OFS)
0240 #define MSC01_PCI_HEAD2     (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD2_OFS)
0241 #define MSC01_PCI_HEAD3     (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD3_OFS)
0242 #define MSC01_PCI_HEAD4     (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD4_OFS)
0243 #define MSC01_PCI_HEAD5     (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD5_OFS)
0244 #define MSC01_PCI_HEAD6     (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD6_OFS)
0245 #define MSC01_PCI_HEAD7     (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD7_OFS)
0246 #define MSC01_PCI_HEAD8     (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD8_OFS)
0247 #define MSC01_PCI_HEAD9     (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD9_OFS)
0248 #define MSC01_PCI_HEAD10    (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD10_OFS)
0249 #define MSC01_PCI_HEAD11    (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD11_OFS)
0250 #define MSC01_PCI_HEAD12    (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD11_OFS)
0251 #define MSC01_PCI_HEAD13    (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD11_OFS)
0252 #define MSC01_PCI_HEAD14    (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD11_OFS)
0253 #define MSC01_PCI_HEAD15    (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD11_OFS)
0254 #define MSC01_PCI_BAR0      (MSC01_PCI_REG_BASE + MSC01_PCI_BAR0_OFS)
0255 #define MSC01_PCI_CFG       (MSC01_PCI_REG_BASE + MSC01_PCI_CFG_OFS)
0256 #define MSC01_PCI_SWAP      (MSC01_PCI_REG_BASE + MSC01_PCI_SWAP_OFS)
0257 
0258 #endif /* __ASM_MIPS_BOARDS_MSC01_PCI_H */