Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:57

0001 /*  $NetBSD: gtreg.h,v 1.1 2003/03/05 22:08:22 matt Exp $   */
0002 
0003 /*
0004  * Copyright (c) 2002 Allegro Networks, Inc., Wasabi Systems, Inc.
0005  * All rights reserved.
0006  *
0007  * Redistribution and use in source and binary forms, with or without
0008  * modification, are permitted provided that the following conditions
0009  * are met:
0010  * 1. Redistributions of source code must retain the above copyright
0011  *    notice, this list of conditions and the following disclaimer.
0012  * 2. Redistributions in binary form must reproduce the above copyright
0013  *    notice, this list of conditions and the following disclaimer in the
0014  *    documentation and/or other materials provided with the distribution.
0015  * 3. All advertising materials mentioning features or use of this software
0016  *    must display the following acknowledgement:
0017  *      This product includes software developed for the NetBSD Project by
0018  *      Allegro Networks, Inc., and Wasabi Systems, Inc.
0019  * 4. The name of Allegro Networks, Inc. may not be used to endorse
0020  *    or promote products derived from this software without specific prior
0021  *    written permission.
0022  * 5. The name of Wasabi Systems, Inc. may not be used to endorse
0023  *    or promote products derived from this software without specific prior
0024  *    written permission.
0025  *
0026  * THIS SOFTWARE IS PROVIDED BY ALLEGRO NETWORKS, INC. AND
0027  * WASABI SYSTEMS, INC. ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
0028  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
0029  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
0030  * IN NO EVENT SHALL EITHER ALLEGRO NETWORKS, INC. OR WASABI SYSTEMS, INC.
0031  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0032  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0033  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0034  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0035  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0036  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0037  * POSSIBILITY OF SUCH DAMAGE.
0038  */
0039 
0040 #ifndef _DISCOVERY_DEV_GTREG_H_
0041 #define _DISCOVERY_DEV_GTREG_H_
0042 
0043 #define GT__BIT(bit)            (1U << (bit))
0044 #define GT__MASK(bit)           (GT__BIT(bit) - 1)
0045 #define GT__EXT(data, bit, len)     (((data) >> (bit)) & GT__MASK(len))
0046 #define GT__CLR(data, bit, len)     ((data) &= ~(GT__MASK(len) << (bit)))
0047 #define GT__INS(new, bit)       ((new) << (bit))
0048 
0049 
0050 /*
0051  * Table 30: CPU Address Decode Register Map
0052  */
0053 #define GT_SCS0_Low_Decode      0x0008
0054 #define GT_SCS0_High_Decode     0x0010
0055 #define GT_SCS1_Low_Decode      0x0208
0056 #define GT_SCS1_High_Decode     0x0210
0057 #define GT_SCS2_Low_Decode      0x0018
0058 #define GT_SCS2_High_Decode     0x0020
0059 #define GT_SCS3_Low_Decode      0x0218
0060 #define GT_SCS3_High_Decode     0x0220
0061 #define GT_CS0_Low_Decode       0x0028
0062 #define GT_CS0_High_Decode      0x0030
0063 #define GT_CS1_Low_Decode       0x0228
0064 #define GT_CS1_High_Decode      0x0230
0065 #define GT_CS2_Low_Decode       0x0248
0066 #define GT_CS2_High_Decode      0x0250
0067 #define GT_CS3_Low_Decode       0x0038
0068 #define GT_CS3_High_Decode      0x0040
0069 #define GT_BootCS_Low_Decode        0x0238
0070 #define GT_BootCS_High_Decode       0x0240
0071 #define GT_PCI0_IO_Low_Decode       0x0048
0072 #define GT_PCI0_IO_High_Decode      0x0050
0073 #define GT_PCI0_Mem0_Low_Decode     0x0058
0074 #define GT_PCI0_Mem0_High_Decode    0x0060
0075 #define GT_PCI0_Mem1_Low_Decode     0x0080
0076 #define GT_PCI0_Mem1_High_Decode    0x0088
0077 #define GT_PCI0_Mem2_Low_Decode     0x0258
0078 #define GT_PCI0_Mem2_High_Decode    0x0260
0079 #define GT_PCI0_Mem3_Low_Decode     0x0280
0080 #define GT_PCI0_Mem3_High_Decode    0x0288
0081 #define GT_PCI1_IO_Low_Decode       0x0090
0082 #define GT_PCI1_IO_High_Decode      0x0098
0083 #define GT_PCI1_Mem0_Low_Decode     0x00a0
0084 #define GT_PCI1_Mem0_High_Decode    0x00a8
0085 #define GT_PCI1_Mem1_Low_Decode     0x00b0
0086 #define GT_PCI1_Mem1_High_Decode    0x00b8
0087 #define GT_PCI1_Mem2_Low_Decode     0x02a0
0088 #define GT_PCI1_Mem2_High_Decode    0x02a8
0089 #define GT_PCI1_Mem3_Low_Decode     0x02b0
0090 #define GT_PCI1_Mem3_High_Decode    0x02b8
0091 #define GT_Internal_Decode      0x0068
0092 #define GT_CPU0_Low_Decode      0x0290
0093 #define GT_CPU0_High_Decode     0x0298
0094 #define GT_CPU1_Low_Decode      0x02c0
0095 #define GT_CPU1_High_Decode     0x02c8
0096 #define GT_PCI0_IO_Remap        0x00f0
0097 #define GT_PCI0_Mem0_Remap_Low      0x00f8
0098 #define GT_PCI0_Mem0_Remap_High     0x0320
0099 #define GT_PCI0_Mem1_Remap_Low      0x0100
0100 #define GT_PCI0_Mem1_Remap_High     0x0328
0101 #define GT_PCI0_Mem2_Remap_Low      0x02f8
0102 #define GT_PCI0_Mem2_Remap_High     0x0330
0103 #define GT_PCI0_Mem3_Remap_Low      0x0300
0104 #define GT_PCI0_Mem3_Remap_High     0x0338
0105 #define GT_PCI1_IO_Remap        0x0108
0106 #define GT_PCI1_Mem0_Remap_Low      0x0110
0107 #define GT_PCI1_Mem0_Remap_High     0x0340
0108 #define GT_PCI1_Mem1_Remap_Low      0x0118
0109 #define GT_PCI1_Mem1_Remap_High     0x0348
0110 #define GT_PCI1_Mem2_Remap_Low      0x0310
0111 #define GT_PCI1_Mem2_Remap_High     0x0350
0112 #define GT_PCI1_Mem3_Remap_Low      0x0318
0113 #define GT_PCI1_Mem3_Remap_High     0x0358
0114 
0115 
0116 /*
0117  * Table 31: CPU Control Register Map
0118  */
0119 #define GT_CPU_Cfg          0x0000
0120 #define GT_CPU_Mode         0x0120
0121 #define GT_CPU_Master_Ctl       0x0160
0122 #define GT_CPU_If_Xbar_Ctl_Low      0x0150
0123 #define GT_CPU_If_Xbar_Ctl_High     0x0158
0124 #define GT_CPU_If_Xbar_Timeout      0x0168
0125 #define GT_CPU_Rd_Rsp_Xbar_Ctl_Low  0x0170
0126 #define GT_CPU_Rd_Rsp_Xbar_Ctl_High 0x0178
0127 
0128 /*
0129  * Table 32: CPU Sync Barrier Register Map
0130  */
0131 #define GT_PCI_Sync_Barrier(bus)    (0x00c0 | ((bus) << 3))
0132 #define GT_PCI0_Sync_Barrier        0x00c0
0133 #define GT_PCI1_Sync_Barrier        0x00c8
0134 
0135 /*
0136  * Table 33: CPU Access Protection Register Map
0137  */
0138 #define GT_Protect_Low_0        0x0180
0139 #define GT_Protect_High_0       0x0188
0140 #define GT_Protect_Low_1        0x0190
0141 #define GT_Protect_High_1       0x0198
0142 #define GT_Protect_Low_2        0x01a0
0143 #define GT_Protect_High_2       0x01a8
0144 #define GT_Protect_Low_3        0x01b0
0145 #define GT_Protect_High_3       0x01b8
0146 #define GT_Protect_Low_4        0x01c0
0147 #define GT_Protect_High_4       0x01c8
0148 #define GT_Protect_Low_5        0x01d0
0149 #define GT_Protect_High_5       0x01d8
0150 #define GT_Protect_Low_6        0x01e0
0151 #define GT_Protect_High_6       0x01e8
0152 #define GT_Protect_Low_7        0x01f0
0153 #define GT_Protect_High_7       0x01f8
0154 
0155 /*
0156  * Table 34: Snoop Control Register Map
0157  */
0158 #define GT_Snoop_Base_0         0x0380
0159 #define GT_Snoop_Top_0          0x0388
0160 #define GT_Snoop_Base_1         0x0390
0161 #define GT_Snoop_Top_1          0x0398
0162 #define GT_Snoop_Base_2         0x03a0
0163 #define GT_Snoop_Top_2          0x03a8
0164 #define GT_Snoop_Base_3         0x03b0
0165 #define GT_Snoop_Top_3          0x03b8
0166 
0167 /*
0168  * Table 35: CPU Error Report Register Map
0169  */
0170 #define GT_CPU_Error_Address_Low    0x0070
0171 #define GT_CPU_Error_Address_High   0x0078
0172 #define GT_CPU_Error_Data_Low       0x0128
0173 #define GT_CPU_Error_Data_High      0x0130
0174 #define GT_CPU_Error_Parity     0x0138
0175 #define GT_CPU_Error_Cause      0x0140
0176 #define GT_CPU_Error_Mask       0x0148
0177 
0178 #define GT_DecodeAddr_SET(g, r, v)                  \
0179     do {                                \
0180         gt_read((g), GT_Internal_Decode);           \
0181         gt_write((g), (r), ((v) & 0xfff00000) >> 20);       \
0182         while ((gt_read((g), (r)) & 0xfff) != ((v) >> 20)); \
0183     } while (0)
0184 
0185 #define GT_LowAddr_GET(v)        (GT__EXT((v), 0, 12) << 20)
0186 #define GT_HighAddr_GET(v)      ((GT__EXT((v), 0, 12) << 20) | 0xfffff)
0187 
0188 #define GT_MPP_Control0         0xf000
0189 #define GT_MPP_Control1         0xf004
0190 #define GT_MPP_Control2         0xf008
0191 #define GT_MPP_Control3         0xf00c
0192 
0193 /* <skf> added for GT64260 */
0194 #define GT_MPP_SerialPortMultiplex      0xf010
0195 
0196 #define GT_GPP_IO_Control       0xf100
0197 #define GT_GPP_Level_Control        0xf110
0198 #define GT_GPP_Value            0xf104
0199 #define GT_GPP_Interrupt_Cause      0xf108
0200 #define GT_GPP_Interrupt_Mask       0xf10c
0201 /*
0202  * Table 36: SCS[0]* Low Decode Address, Offset: 0x008
0203  * Table 38: SCS[1]* Low Decode Address, Offset: 0x208
0204  * Table 40: SCS[2]* Low Decode Address, Offset: 0x018
0205  * Table 42: SCS[3]* Low Decode Address, Offset: 0x218
0206  * Table 44: CS[0]*  Low Decode Address, Offset: 0x028
0207  * Table 46: CS[1]*  Low Decode Address, Offset: 0x228
0208  * Table 48: CS[2]*  Low Decode Address, Offset: 0x248
0209  * Table 50: CS[3]*  Low Decode Address, Offset: 0x038
0210  * Table 52: BootCS* Low Decode Address, Offset: 0x238
0211  * Table 75: CPU 0   Low Decode Address, Offset: 0x290
0212  * Table 77: CPU 1   Low Decode Address, Offset: 0x2c0
0213  *
0214  * 11:00 LowAddr        SCS[0] Base Address
0215  * 31:12 Reserved       Must be 0.
0216  */
0217 
0218 /*
0219  * Table 37: SCS[0]* High Decode Address, Offset: 0x010
0220  * Table 39: SCS[1]* High Decode Address, Offset: 0x210
0221  * Table 41: SCS[2]* High Decode Address, Offset: 0x020
0222  * Table 43: SCS[3]* High Decode Address, Offset: 0x220
0223  * Table 45: CS[0]*  High Decode Address, Offset: 0x030
0224  * Table 47: CS[1]*  High Decode Address, Offset: 0x230
0225  * Table 49: CS[2]*  High Decode Address, Offset: 0x250
0226  * Table 51: CS[3]*  High Decode Address, Offset: 0x040
0227  * Table 53: BootCS* High Decode Address, Offset: 0x240
0228  * Table 76: CPU 0   High Decode Address, Offset: 0x298
0229  * Table 78: CPU 1   High Decode Address, Offset: 0x2c8
0230  *
0231  * 11:00 HighAddr       SCS[0] Top Address
0232  * 31:12 Reserved
0233  */
0234 
0235 /*
0236  * Table 54: PCI_0 I/O Low Decode Address,      Offset: 0x048
0237  * Table 56: PCI_0 Memory 0 Low Decode Address, Offset: 0x058
0238  * Table 58: PCI_0 Memory 1 Low Decode Address, Offset: 0x080
0239  * Table 60: PCI_0 Memory 2 Low Decode Address, Offset: 0x258
0240  * Table 62: PCI_0 Memory 3 Low Decode Address, Offset: 0x280
0241  * Table 64: PCI_1 I/O Low Decode Address,      Offset: 0x090
0242  * Table 66: PCI_1 Memory 0 Low Decode Address, Offset: 0x0a0
0243  * Table 68: PCI_1 Memory 1 Low Decode Address, Offset: 0x0b0
0244  * Table 70: PCI_1 Memory 2 Low Decode Address, Offset: 0x2a0
0245  * Table 72: PCI_1 Memory 3 Low Decode Address, Offset: 0x2b0
0246  *
0247  * 11:00 LowAddr        PCI IO/Memory Space Base Address
0248  * 23:12 Reserved
0249  * 26:24 PCISwap        PCI Master Data Swap Control (0: Byte Swap;
0250  *              1: No swapping; 2: Both byte and word swap;
0251  *              3: Word swap; 4..7: Reserved)
0252  * 27:27 PCIReq64       PCI master REQ64* policy (Relevant only when
0253  *              configured to 64-bit PCI bus and not I/O)
0254  *              0: Assert s REQ64* only when transaction
0255  *                 is longer than 64-bits.
0256  *              1: Always assert REQ64*.
0257  * 31:28 Reserved
0258  */
0259 #define GT_PCISwap_GET(v)       GT__EXT((v), 24, 3)
0260 #define GT_PCISwap_ByteSwap     0
0261 #define GT_PCISwap_NoSwap       1
0262 #define GT_PCISwap_ByteWordSwap     2
0263 #define GT_PCISwap_WordSwap     3
0264 #define GT_PCI_LowDecode_PCIReq64   GT__BIT(27)
0265 
0266 /*
0267  * Table 55: PCI_0 I/O High Decode Address,      Offset: 0x050
0268  * Table 57: PCI_0 Memory 0 High Decode Address, Offset: 0x060
0269  * Table 59: PCI_0 Memory 1 High Decode Address, Offset: 0x088
0270  * Table 61: PCI_0 Memory 2 High Decode Address, Offset: 0x260
0271  * Table 63: PCI_0 Memory 3 High Decode Address, Offset: 0x288
0272  * Table 65: PCI_1 I/O High Decode Address,      Offset: 0x098
0273  * Table 67: PCI_1 Memory 0 High Decode Address, Offset: 0x0a8
0274  * Table 69: PCI_1 Memory 1 High Decode Address, Offset: 0x0b8
0275  * Table 71: PCI_1 Memory 2 High Decode Address, Offset: 0x2a8
0276  * Table 73: PCI_1 Memory 3 High Decode Address, Offset: 0x2b8
0277  *
0278  * 11:00 HighAddr       PCI_0 I/O Space Top Address
0279  * 31:12 Reserved
0280  */
0281 
0282 /*
0283  * Table 74: Internal Space Decode, Offset: 0x068
0284  * 15:00 IntDecode      GT64260 Internal Space Base Address
0285  * 23:16 Reserved
0286  * 26:24 PCISwap        Same as PCI_0 Memory 0 Low Decode Address.
0287  *              NOTE: Reserved for Galileo Technology usage.
0288  *              Relevant only for PCI master configuration
0289  *              transactions on the PCI bus.
0290  * 31:27 Reserved
0291  */
0292 
0293 /*
0294  * Table 79: PCI_0 I/O Address Remap,          Offset: 0x0f0
0295  * Table 80: PCI_0 Memory 0 Address Remap Low, Offset: 0x0f8
0296  * Table 82: PCI_0 Memory 1 Address Remap Low, Offset: 0x100
0297  * Table 84: PCI_0 Memory 2 Address Remap Low, Offset: 0x2f8
0298  * Table 86: PCI_0 Memory 3 Address Remap Low, Offset: 0x300
0299  * Table 88: PCI_1 I/O Address Remap,          Offset: 0x108
0300  * Table 89: PCI_1 Memory 0 Address Remap Low, Offset: 0x110
0301  * Table 91: PCI_1 Memory 1 Address Remap Low, Offset: 0x118
0302  * Table 93: PCI_1 Memory 2 Address Remap Low, Offset: 0x310
0303  * Table 95: PCI_1 Memory 3 Address Remap Low, Offset: 0x318
0304  *
0305  * 11:00 Remap          PCI IO/Memory Space Address Remap (31:20)
0306  * 31:12 Reserved
0307  */
0308 
0309 /*
0310  * Table 81: PCI_0 Memory 0 Address Remap High, Offset: 0x320
0311  * Table 83: PCI_0 Memory 1 Address Remap High, Offset: 0x328
0312  * Table 85: PCI_0 Memory 2 Address Remap High, Offset: 0x330
0313  * Table 87: PCI_0 Memory 3 Address Remap High, Offset: 0x338
0314  * Table 90: PCI_1 Memory 0 Address Remap High, Offset: 0x340
0315  * Table 92: PCI_1 Memory 1 Address Remap High, Offset: 0x348
0316  * Table 94: PCI_1 Memory 2 Address Remap High, Offset: 0x350
0317  * Table 96: PCI_1 Memory 3 Address Remap High, Offset: 0x358
0318  *
0319  * 31:00 Remap          PCI Memory Address Remap (high 32 bits)
0320  */
0321 
0322 /*
0323  * Table 97: CPU Configuration, Offset: 0x000
0324  * 07:00 NoMatchCnt     CPU Address Miss Counter
0325  * 08:08 NoMatchCntEn       CPU Address Miss Counter Enable
0326  *              NOTE: Relevant only if multi-GT is enabled.
0327  *              (0: Disabled; 1: Enabled)
0328  * 09:09 NoMatchCntExt      CPU address miss counter MSB
0329  * 10:10 Reserved
0330  * 11:11 AACKDelay      Address Acknowledge Delay
0331  *              0: AACK* is asserted one cycle after TS*.
0332  *              1: AACK* is asserted two cycles after TS*.
0333  * 12:12 Endianess      Must be 0
0334  *              NOTE: The GT64260 does not support the PowerPC
0335  *                    Little Endian convention
0336  * 13:13 Pipeline       Pipeline Enable
0337  *              0: Disabled. The GT64260 will not respond with
0338  *                 AACK* to a new CPU transaction, before the
0339  *                 previous transaction data phase completes.
0340  *              1: Enabled.
0341  * 14:14 Reserved
0342  * 15:15 TADelay        Transfer Acknowledge Delay
0343  *              0: TA* is asserted one cycle after AACK*
0344  *              1: TA* is asserted two cycles after AACK*
0345  * 16:16 RdOOO          Read Out of Order Completion
0346  *              0: Not Supported, Data is always returned in
0347  *                 order (DTI[0-2] is always driven
0348  *              1: Supported
0349  * 17:17 StopRetry      Relevant only if PCI Retry is enabled
0350  *              0: Keep Retry all PCI transactions targeted
0351  *                 to the GT64260.
0352  *              1: Stop Retry of PCI transactions.
0353  * 18:18 MultiGTDec     Multi-GT Address Decode
0354  *              0: Normal address decoding
0355  *              1: Multi-GT address decoding
0356  * 19:19 DPValid        CPU DP[0-7] Connection.  CPU write parity ...
0357  *              0: is not checked. (Not connected)
0358  *              1: is checked (Connected)
0359  * 21:20 Reserved
0360  * 22:22 PErrProp       Parity Error Propagation
0361  *              0: GT64260 always drives good parity on
0362  *                 DP[0-7] during CPU reads.
0363  *              1: GT64260 drives bad parity on DP[0-7] in case
0364  *                 the read response from the target interface
0365  *                 comes with erroneous data indication
0366  *                 (e.g. ECC error from SDRAM interface).
0367  * 25:23 Reserved
0368  * 26:26 APValid        CPU AP[0-3] Connection.  CPU address parity ...
0369  *              0: is not checked. (Not connected)
0370  *              1: is checked (Connected)
0371  * 27:27 RemapWrDis     Address Remap Registers Write Control
0372  *              0: Write to Low Address decode register.
0373  *                 Results in writing of the corresponding
0374  *                 Remap register.
0375  *              1: Write to Low Address decode register.  No
0376  *                 affect on the corresponding Remap register.
0377  * 28:28 ConfSBDis      Configuration Read Sync Barrier Disable
0378  *              0: enabled; 1: disabled
0379  * 29:29 IOSBDis        I/O Read Sync Barrier Disable
0380  *              0: enabled; 1: disabled
0381  * 30:30 ClkSync        Clocks Synchronization
0382  *              0: The CPU interface is running with SysClk,
0383  *                 which is asynchronous to TClk.
0384  *              1: The CPU interface is running with TClk.
0385  * 31:31 Reserved
0386  */
0387 #define GT_CPUCfg_NoMatchCnt_GET(v) GT__EXT((v), 0, 8)
0388 #define GT_CPUCfg_NoMatchCntEn      GT__BIT( 9)
0389 #define GT_CPUCfg_NoMatchCntExt     GT__BIT(10)
0390 #define GT_CPUCfg_AACKDelay     GT__BIT(11)
0391 #define GT_CPUCfg_Endianess     GT__BIT(12)
0392 #define GT_CPUCfg_Pipeline      GT__BIT(13)
0393 #define GT_CPUCfg_TADelay       GT__BIT(15)
0394 #define GT_CPUCfg_RdOOO         GT__BIT(16)
0395 #define GT_CPUCfg_StopRetry     GT__BIT(17)
0396 #define GT_CPUCfg_MultiGTDec        GT__BIT(18)
0397 #define GT_CPUCfg_DPValid       GT__BIT(19)
0398 #define GT_CPUCfg_PErrProp      GT__BIT(22)
0399 #define GT_CPUCfg_APValid       GT__BIT(26)
0400 #define GT_CPUCfg_RemapWrDis        GT__BIT(27)
0401 #define GT_CPUCfg_ConfSBDis     GT__BIT(28)
0402 #define GT_CPUCfg_IOSBDis       GT__BIT(29)
0403 #define GT_CPUCfg_ClkSync       GT__BIT(30)
0404 
0405 /*
0406  * Table 98: CPU Mode, Offset: 0x120, Read only
0407  * 01:00 MultiGTID      Multi-GT ID
0408  *              Represents the ID to which the GT64260 responds
0409  *              to during a multi-GT address decoding period.
0410  * 02:02 MultiGT        (0: Single; 1: Multiple) GT configuration
0411  * 03:03 RetryEn        (0: Don't; 1: Do) Retry PCI transactions
0412  * 07:04 CPUType
0413  *              0x0-0x3: Reserved
0414  *              0x4:     64-bit PowerPC CPU, 60x bus
0415  *              0x5:     64-bit PowerPC CPU, MPX bus
0416  *              0x6-0xf: Reserved
0417  * 31:08 Reserved
0418  */
0419 #define GT_CPUMode_MultiGTID_GET(v) GT__EXT(v, 0, 2)
0420 #define GT_CPUMode_MultiGT      GT__BIT(2)
0421 #define GT_CPUMode_RetryEn      GT__BIT(3)
0422 #define GT_CPUMode_CPUType_GET(v)   GT__EXT(v, 4, 4)
0423 
0424 /*
0425  * Table 99: CPU Master Control, Offset: 0x160
0426  * 07:00 Reserved
0427  * 08:08 IntArb         CPU Bus Internal Arbiter Enable
0428  *              NOTE: Only relevant to 60x bus mode. When
0429  *                    running MPX bus, the GT64260 internal
0430  *                    arbiter must be used.
0431  *              0: Disabled.  External arbiter is required.
0432  *              1: Enabled.  Use the GT64260 CPU bus arbiter.
0433  * 09:09 IntBusCtl      CPU Interface Unit Internal Bus Control
0434  *              NOTE: This bit must be set to 1. It is reserved
0435  *                    for Galileo Technology usage.
0436  *              0: Enable internal bus sharing between master
0437  *                 and slave interfaces.
0438  *              1: Disable internal bus sharing between master
0439  *                 and slave interfaces.
0440  * 10:10 MWrTrig        Master Write Transaction Trigger
0441  *              0: With first valid write data
0442  *              1: With last valid write data
0443  * 11:11 MRdTrig        Master Read Response Trigger
0444  *              0: With first valid read data
0445  *              1: With last valid read data
0446  * 12:12 CleanBlock     Clean Block Snoop Transaction Support
0447  *              0: CPU does not support clean block (603e,750)
0448  *              1: CPU supports clean block (604e,G4)
0449  * 13:13 FlushBlock     Flush Block Snoop Transaction Support
0450  *              0: CPU does not support flush block (603e,750)
0451  *              1: CPU supports flush block (604e,G4)
0452  * 31:14 Reserved
0453  */
0454 #define GT_CPUMstrCtl_IntArb            GT__BIT(8)
0455 #define GT_CPUMstrCtl_IntBusCtl         GT__BIT(9)
0456 #define GT_CPUMstrCtl_MWrTrig           GT__BIT(10)
0457 #define GT_CPUMstrCtl_MRdTrig           GT__BIT(11)
0458 #define GT_CPUMstrCtl_CleanBlock        GT__BIT(12)
0459 #define GT_CPUMstrCtl_FlushBlock        GT__BIT(13)
0460 
0461 #define GT_ArbSlice_SDRAM   0x0 /* SDRAM interface snoop request */
0462 #define GT_ArbSlice_DEVICE  0x1 /* Device request */
0463 #define GT_ArbSlice_NULL    0x2 /* NULL request */
0464 #define GT_ArbSlice_PCI0    0x3 /* PCI_0 access */
0465 #define GT_ArbSlice_PCI1    0x4 /* PCI_1 access */
0466 #define GT_ArbSlice_COMM    0x5 /* Comm unit access */
0467 #define GT_ArbSlice_IDMA0123    0x6 /* IDMA channels 0/1/2/3 access */
0468 #define GT_ArbSlice_IDMA4567    0x7 /* IDMA channels 4/5/6/7 access */
0469                     /* 0x8-0xf: Reserved */
0470 
0471 /* Pass in the slice number (from 0..16) as 'n'
0472  */
0473 #define GT_XbarCtl_GET_ArbSlice(v, n)       GT__EXT((v), (((n) & 7)*4, 4)
0474 
0475 /*
0476  * Table 100: CPU Interface Crossbar Control Low, Offset: 0x150
0477  * 03:00 Arb0           Slice  0 of CPU Master pizza Arbiter
0478  * 07:04 Arb1           Slice  1 of CPU Master pizza Arbiter
0479  * 11:08 Arb2           Slice  2 of CPU Master pizza Arbiter
0480  * 15:12 Arb3           Slice  3 of CPU Master pizza Arbiter
0481  * 19:16 Arb4           Slice  4 of CPU Master pizza Arbiter
0482  * 23:20 Arb5           Slice  5 of CPU Master pizza Arbiter
0483  * 27:24 Arb6           Slice  6 of CPU Master pizza Arbiter
0484  * 31:28 Arb7           Slice  7 of CPU Master pizza Arbiter
0485  */
0486 
0487 /*
0488  * Table 101: CPU Interface Crossbar Control High, Offset: 0x158
0489  * 03:00 Arb8           Slice  8 of CPU Master pizza Arbiter
0490  * 07:04 Arb9           Slice  9 of CPU Master pizza Arbiter
0491  * 11:08 Arb10          Slice 10 of CPU Master pizza Arbiter
0492  * 15:12 Arb11          Slice 11 of CPU Master pizza Arbiter
0493  * 19:16 Arb12          Slice 12 of CPU Master pizza Arbiter
0494  * 23:20 Arb13          Slice 13 of CPU Master pizza Arbiter
0495  * 27:24 Arb14          Slice 14 of CPU Master pizza Arbiter
0496  * 31:28 Arb15          Slice 15 of CPU Master pizza Arbiter
0497  */
0498 
0499 /*
0500  * Table 102: CPU Interface Crossbar Timeout, Offset: 0x168
0501  * NOTE: Reserved for Galileo Technology usage.
0502  * 07:00 Timeout        Crossbar Arbiter Timeout Preset Value
0503  * 15:08 Reserved
0504  * 16:16 TimeoutEn      Crossbar Arbiter Timer Enable
0505  *              (0: Enable; 1: Disable)
0506  * 31:17 Reserved
0507  */
0508 
0509 /*
0510  * Table 103: CPU Read Response Crossbar Control Low, Offset: 0x170
0511  * 03:00 Arb0           Slice  0 of CPU Slave pizza Arbiter
0512  * 07:04 Arb1           Slice  1 of CPU Slave pizza Arbiter
0513  * 11:08 Arb2           Slice  2 of CPU Slave pizza Arbiter
0514  * 15:12 Arb3           Slice  3 of CPU Slave pizza Arbiter
0515  * 19:16 Arb4           Slice  4 of CPU Slave pizza Arbiter
0516  * 23:20 Arb5           Slice  5 of CPU Slave pizza Arbiter
0517  * 27:24 Arb6           Slice  6 of CPU Slave pizza Arbiter
0518  * 31:28 Arb7           Slice  7 of CPU Slave pizza Arbiter
0519  */
0520 /*
0521  * Table 104: CPU Read Response Crossbar Control High, Offset: 0x178
0522  * 03:00 Arb8           Slice  8 of CPU Slave pizza Arbiter
0523  * 07:04 Arb9           Slice  9 of CPU Slave pizza Arbiter
0524  * 11:08 Arb10          Slice 10 of CPU Slave pizza Arbiter
0525  * 15:12 Arb11          Slice 11 of CPU Slave pizza Arbiter
0526  * 19:16 Arb12          Slice 12 of CPU Slave pizza Arbiter
0527  * 23:20 Arb13          Slice 13 of CPU Slave pizza Arbiter
0528  * 27:24 Arb14          Slice 14 of CPU Slave pizza Arbiter
0529  * 31:28 Arb15          Slice 15 of CPU Slave pizza Arbiter
0530  */
0531 
0532 /*
0533  * Table 105: PCI_0 Sync Barrier Virtual Register, Offset: 0x0c0
0534  * Table 106: PCI_1 Sync Barrier Virtual Register, Offset: 0x0c8
0535  *   NOTE: The read data is random and should be ignored.
0536  * 31:00 SyncBarrier        A CPU read from this register creates a
0537  *              synchronization barrier cycle.
0538  */
0539 
0540 /*
0541  * Table 107: CPU Protect Address 0 Low, Offset: 0x180
0542  * Table 109: CPU Protect Address 1 Low, Offset: 0x190
0543  * Table 111: CPU Protect Address 2 Low, Offset: 0x1a0
0544  * Table 113: CPU Protect Address 3 Low, Offset: 0x1b0
0545  * Table 115: CPU Protect Address 4 Low, Offset: 0x1c0
0546  * Table 117: CPU Protect Address 5 Low, Offset: 0x1d0
0547  * Table 119: CPU Protect Address 6 Low, Offset: 0x1e0
0548  * Table 121: CPU Protect Address 7 Low, Offset: 0x1f0
0549  *
0550  * 11:00 LowAddr        CPU Protect Region Base Address
0551  *              Corresponds to address bits[31:20].
0552  * 15:12 Reserved.      Must be 0
0553  * 16:16 AccProtect     CPU Access Protect
0554  *              Access is (0: allowed; 1: forbidden)
0555  * 17:17 WrProtect      CPU Write Protect
0556  *              Writes are (0: allowed; 1: forbidden)
0557  * 18:18 CacheProtect       CPU caching protect.    Caching (block read)
0558  *              is (0: allowed; 1: forbidden)
0559  * 31:19 Reserved
0560  */
0561 #define GT_CPU_AccProtect           GT__BIT(16)
0562 #define GT_CPU_WrProtect            GT__BIT(17)
0563 #define GT_CPU_CacheProtect         GT__BIT(18)
0564 
0565 /*
0566  * Table 108: CPU Protect Address 0 High, Offset: 0x188
0567  * Table 110: CPU Protect Address 1 High, Offset: 0x198
0568  * Table 112: CPU Protect Address 2 High, Offset: 0x1a8
0569  * Table 114: CPU Protect Address 3 High, Offset: 0x1b8
0570  * Table 116: CPU Protect Address 4 High, Offset: 0x1c8
0571  * Table 118: CPU Protect Address 5 High, Offset: 0x1d8
0572  * Table 120: CPU Protect Address 6 High, Offset: 0x1e8
0573  * Table 122: CPU Protect Address 7 High, Offset: 0x1f8
0574  *
0575  * 11:00 HighAddr       CPU Protect Region Top Address
0576  *              Corresponds to address bits[31:20]
0577  * 31:12 Reserved
0578  */
0579 
0580 /*
0581  * Table 123: Snoop Base Address 0, Offset: 0x380
0582  * Table 125: Snoop Base Address 1, Offset: 0x390
0583  * Table 127: Snoop Base Address 2, Offset: 0x3a0
0584  * Table 129: Snoop Base Address 3, Offset: 0x3b0
0585  *
0586  * 11:00 LowAddr        Snoop Region Base Address [31:20]
0587  * 15:12 Reserved       Must be 0.
0588  * 17:16 Snoop          Snoop Type
0589  *              0x0: No Snoop
0590  *              0x1: Snoop to WT region
0591  *              0x2: Snoop to WB region
0592  *              0x3: Reserved
0593  * 31:18 Reserved
0594  */
0595 #define GT_Snoop_GET(v)             GT__EXT((v), 16, 2)
0596 #define GT_Snoop_INS(v)             GT__INS((v), 16)
0597 #define GT_Snoop_None               0
0598 #define GT_Snoop_WT             1
0599 #define GT_Snoop_WB             2
0600 
0601 
0602 /*
0603  * Table 124: Snoop Top Address 0, Offset: 0x388
0604  * Table 126: Snoop Top Address 1, Offset: 0x398
0605  * Table 128: Snoop Top Address 2, Offset: 0x3a8
0606  * Table 130: Snoop Top Address 3, Offset: 0x3b8
0607  * 11:00 HighAddr       Snoop Region Top Address [31:20]
0608  * 31:12 Reserved
0609  */
0610 
0611 
0612 /*
0613  * Table 131: CPU Error Address Low, Offset: 0x070, Read Only.
0614  *   In case of multiple errors, only the first one is latched.  New error
0615  *   report latching is enabled only after the CPU Error Address Low register
0616  *   is being read.
0617  * 31:00 ErrAddr        Latched address bits [31:0] of a CPU
0618  *              transaction in case of:
0619  *              o illegal address (failed address decoding)
0620  *              o access protection violation
0621  *              o bad data parity
0622  *              o bad address parity
0623  *              Upon address latch, no new address are
0624  *              registered (due to additional error condition),
0625  *              until the register is being read.
0626  */
0627 
0628 /*
0629  * Table 132: CPU Error Address High, Offset: 0x078, Read Only.
0630  *   Once data is latched, no new data can be registered (due to additional
0631  *   error condition), until CPU Error Low Address is being read (which
0632  *   implies, it should be the last being read by the interrupt handler).
0633  * 03:00 Reserved
0634  * 07:04 ErrPar         Latched address parity bits in case
0635  *              of bad CPU address parity detection.
0636  * 31:08 Reserved
0637  */
0638 #define GT_CPUErrorAddrHigh_ErrPar_GET(v)   GT__EXT((v), 4, 4)
0639 
0640 /*
0641  * Table 133: CPU Error Data Low, Offset: 0x128, Read only.
0642  * 31:00 PErrData       Latched data bits [31:0] in case of bad data
0643  *              parity sampled on write transactions or on
0644  *              master read transactions.
0645  */
0646 
0647 /*
0648  * Table 134: CPU Error Data High, Offset: 0x130, Read only.
0649  * 31:00 PErrData       Latched data bits [63:32] in case of bad data
0650  *              parity sampled on write transactions or on
0651  *              master read transactions.
0652  */
0653 
0654 /*
0655  * Table 135: CPU Error Parity, Offset: 0x138, Read only.
0656  * 07:00 PErrPar        Latched data parity bus in case of bad data
0657  *              parity sampled on write transactions or on
0658  *              master read transactions.
0659  * 31:10 Reserved
0660  */
0661 #define GT_CPUErrorParity_PErrPar_GET(v)    GT__EXT((v), 0, 8)
0662 
0663 /*
0664  * Table 136: CPU Error Cause, Offset: 0x140
0665  *   Bits[7:0] are clear only. A cause bit is set upon an error condition
0666  *   occurrence. Write a 0 value to clear the bit.  Writing a 1 value has
0667  *   no affect.
0668  * 00:00 AddrOut        CPU Address Out of Range
0669  * 01:01 AddrPErr       Bad Address Parity Detected
0670  * 02:02 TTErr          Transfer Type Violation.
0671  *              The CPU attempts to burst (read or write) to an
0672  *              internal register.
0673  * 03:03 AccErr         Access to a Protected Region
0674  * 04:04 WrErr          Write to a Write Protected Region
0675  * 05:05 CacheErr       Read from a Caching protected region
0676  * 06:06 WrDataPErr     Bad Write Data Parity Detected
0677  * 07:07 RdDataPErr     Bad Read Data Parity Detected
0678  * 26:08 Reserved
0679  * 31:27 Sel            Specifies the error event currently being
0680  *              reported in Error Address, Error Data, and
0681  *              Error Parity registers.
0682  *              0x0: AddrOut
0683  *              0x1: AddrPErr
0684  *              0x2: TTErr
0685  *              0x3: AccErr
0686  *              0x4: WrErr
0687  *              0x5: CacheErr
0688  *              0x6: WrDataPErr
0689  *              0x7: RdDataPErr
0690  *              0x8-0x1f: Reserved
0691  */
0692 #define GT_CPUError_AddrOut     GT__BIT(GT_CPUError_Sel_AddrOut)
0693 #define GT_CPUError_AddrPErr        GT__BIT(GT_CPUError_Sel_AddrPErr)
0694 #define GT_CPUError_TTErr       GT__BIT(GT_CPUError_Sel_TTErr)
0695 #define GT_CPUError_AccErr      GT__BIT(GT_CPUError_Sel_AccErr)
0696 #define GT_CPUError_WrErr       GT__BIT(GT_CPUError_Sel_WrPErr)
0697 #define GT_CPUError_CacheErr        GT__BIT(GT_CPUError_Sel_CachePErr)
0698 #define GT_CPUError_WrDataPErr      GT__BIT(GT_CPUError_Sel_WrDataPErr)
0699 #define GT_CPUError_RdDataPErr      GT__BIT(GT_CPUError_Sel_RdDataPErr)
0700 
0701 #define GT_CPUError_Sel_AddrOut     0
0702 #define GT_CPUError_Sel_AddrPErr    1
0703 #define GT_CPUError_Sel_TTErr       2
0704 #define GT_CPUError_Sel_AccErr      3
0705 #define GT_CPUError_Sel_WrErr       4
0706 #define GT_CPUError_Sel_CacheErr    5
0707 #define GT_CPUError_Sel_WrDataPErr  6
0708 #define GT_CPUError_Sel_RdDataPErr  7
0709 
0710 #define GT_CPUError_Sel_GET(v)      GT__EXT((v), 27, 5)
0711 
0712 /*
0713  * Table 137: CPU Error Mask, Offset: 0x148
0714  * 00:00 AddrOut        If set to 1, enables AddrOut interrupt.
0715  * 01:01 AddrPErr       If set to 1, enables AddrPErr interrupt.
0716  * 02:02 TTErr          If set to 1, enables TTErr interrupt.
0717  * 03:03 AccErr         If set to 1, enables AccErr interrupt.
0718  * 04:04 WrErr          If set to 1, enables WrErr interrupt.
0719  * 05:05 CacheErr       If set to 1, enables CacheErr interrupt.
0720  * 06:06 WrDataPErr     If set to 1, enables WrDataPErr interrupt.
0721  * 07:07 RdDataPErr     If set to 1, enables RdDataPErr interrupt.
0722  * 31:08 Reserved
0723  */
0724 
0725 /* Comm Unit Arbiter Control */
0726 #define GT_CommUnitArb_Ctrl     0xf300    /*<skf>*/
0727 /*
0728  * Comm Unit Interrupt registers
0729  */
0730 #define GT_CommUnitIntr_Cause   0xf310
0731 #define GT_CommUnitIntr_Mask    0xf314
0732 #define GT_CommUnitIntr_ErrAddr 0xf318
0733 
0734 #define GT_CommUnitIntr_E0  0x00000007
0735 #define GT_CommUnitIntr_E1  0x00000070
0736 #define GT_CommUnitIntr_E2  0x00000700
0737 #define GT_CommUnitIntr_S0  0x00070000
0738 #define GT_CommUnitIntr_S1  0x00700000
0739 #define GT_CommUnitIntr_Sel 0x70000000
0740 
0741 /*
0742  * SDRAM Error Report (ECC) Registers
0743  */
0744 #define GT_ECC_Data_Lo      0x484   /* latched Error Data (low) */
0745 #define GT_ECC_Data_Hi      0x480   /* latched Error Data (high) */
0746 #define GT_ECC_Addr     0x490   /* latched Error Address */
0747 #define GT_ECC_Rec      0x488   /* latched ECC code from SDRAM */
0748 #define GT_ECC_Calc     0x48c   /* latched ECC code from SDRAM */
0749 #define GT_ECC_Ctl      0x494   /* ECC Control */
0750 #define GT_ECC_Count        0x498   /* ECC 1-bit error count */
0751 
0752 /*
0753  * Watchdog Registers
0754  */
0755 #define GT_WDOG_Config      0xb410
0756 #define GT_WDOG_Value       0xb414
0757 #define GT_WDOG_Value_NMI   GT__MASK(24)
0758 #define GT_WDOG_Config_Preset   GT__MASK(24)
0759 #define GT_WDOG_Config_Ctl1a    GT__BIT(24)
0760 #define GT_WDOG_Config_Ctl1b    GT__BIT(25)
0761 #define GT_WDOG_Config_Ctl2a    GT__BIT(26)
0762 #define GT_WDOG_Config_Ctl2b    GT__BIT(27)
0763 #define GT_WDOG_Config_Enb  GT__BIT(31)
0764 
0765 #define GT_WDOG_NMI_DFLT    (GT__MASK(24) & GT_WDOG_Value_NMI)
0766 #define GT_WDOG_Preset_DFLT (GT__MASK(22) & GT_WDOG_Config_Preset)
0767 
0768 /*
0769  * Device Bus Interrupts
0770  */
0771 #define GT_DEVBUS_ICAUSE    0x4d0   /* Device Interrupt Cause */
0772 #define GT_DEVBUS_IMASK     0x4d4   /* Device Interrupt Mask */
0773 #define GT_DEVBUS_ERR_ADDR  0x4d8   /* Device Error Address */
0774 
0775 /*
0776  * bit defines for GT_DEVBUS_ICAUSE, GT_DEVBUS_IMASK
0777  */
0778 #define GT_DEVBUS_DBurstErr GT__BIT(0)
0779 #define GT_DEVBUS_DRdyErr   GT__BIT(1)
0780 #define GT_DEVBUS_Sel       GT__BIT(27)
0781 #define GT_DEVBUS_RES   ~(GT_DEVBUS_DBurstErr|GT_DEVBUS_DRdyErr|GT_DEVBUS_Sel)
0782 
0783 /* TWSI Interface - TWSI Interface Registers <skf> */
0784 #define TWSI_SLV_ADDR       0xc000
0785 #define TWSI_EXT_SLV_ADDR   0xc010
0786 #define TWSI_DATA       0xc004
0787 #define TWSI_CTRL       0xc008
0788 #define TWSI_STATUS     0xc00c
0789 #define TWSI_BAUDE_RATE     0xc00c
0790 #define TWSI_SFT_RST        0xc01c
0791 
0792 /* Section 25.2 : Table 734 <skf> */
0793 
0794 #define GT64260_MAIN_INT_CAUSE_LO   0xc18 /* read Only */
0795 #define GT64260_MAIN_INT_CAUSE_HI       0xc68 /* read Only */
0796 #define GT64260_CPU_INT_MASK_LO     0xc1c
0797 #define GT64260_CPU_INT_MASK_HI         0xc6c
0798 #define GT64260_CPU_SEL_CAUSE   0xc70 /* read Only */
0799 #define GT_PCI0_INT_MASK_LO 0xc24
0800 #define GT_PCI0_INT_MASK_HI 0xc64
0801 #define GT_PCI0_SEL_CAUSE   0xc74 /* read Only */
0802 #define GT_PCI1_INT_MASK_LO 0xca4
0803 #define GT_PCI1_INT_MASK_HI 0xce4
0804 #define GT_PCI1_SEL_CAUSE   0xcf4 /* read Only */
0805 #define GT_CPU_INT0_MASK    0xe60
0806 #define GT_CPU_INT1_MASK    0xe64
0807 #define GT_CPU_INT2_MASK    0xe68
0808 #define GT_CPU_INT3_MASK    0xe6c
0809 
0810 #endif /* !_DISCOVERY_DEV_GTREG_H */