Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright 2010 Advanced Micro Devices, Inc.
0003  *
0004  * Permission is hereby granted, free of charge, to any person obtaining a
0005  * copy of this software and associated documentation files (the "Software"),
0006  * to deal in the Software without restriction, including without limitation
0007  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
0008  * and/or sell copies of the Software, and to permit persons to whom the
0009  * Software is furnished to do so, subject to the following conditions:
0010  *
0011  * The above copyright notice and this permission notice shall be included in
0012  * all copies or substantial portions of the Software.
0013  *
0014  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0015  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0016  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
0017  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
0018  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
0019  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
0020  * OTHER DEALINGS IN THE SOFTWARE.
0021  *
0022  * Authors: Alex Deucher
0023  */
0024 #ifndef NI_H
0025 #define NI_H
0026 
0027 #define CAYMAN_MAX_SH_GPRS           256
0028 #define CAYMAN_MAX_TEMP_GPRS         16
0029 #define CAYMAN_MAX_SH_THREADS        256
0030 #define CAYMAN_MAX_SH_STACK_ENTRIES  4096
0031 #define CAYMAN_MAX_FRC_EOV_CNT       16384
0032 #define CAYMAN_MAX_BACKENDS          8
0033 #define CAYMAN_MAX_BACKENDS_MASK     0xFF
0034 #define CAYMAN_MAX_BACKENDS_PER_SE_MASK 0xF
0035 #define CAYMAN_MAX_SIMDS             16
0036 #define CAYMAN_MAX_SIMDS_MASK        0xFFFF
0037 #define CAYMAN_MAX_SIMDS_PER_SE_MASK 0xFFF
0038 #define CAYMAN_MAX_PIPES             8
0039 #define CAYMAN_MAX_PIPES_MASK        0xFF
0040 #define CAYMAN_MAX_LDS_NUM           0xFFFF
0041 #define CAYMAN_MAX_TCC               16
0042 #define CAYMAN_MAX_TCC_MASK          0xFF
0043 
0044 #define CAYMAN_GB_ADDR_CONFIG_GOLDEN       0x02011003
0045 #define ARUBA_GB_ADDR_CONFIG_GOLDEN        0x12010001
0046 
0047 #define DMIF_ADDR_CONFIG                0xBD4
0048 
0049 /* fusion vce clocks */
0050 #define CG_ECLK_CNTL                                    0x620
0051 #       define ECLK_DIVIDER_MASK                        0x7f
0052 #       define ECLK_DIR_CNTL_EN                         (1 << 8)
0053 #define CG_ECLK_STATUS                                  0x624
0054 #       define ECLK_STATUS                              (1 << 0)
0055 
0056 /* DCE6 only */
0057 #define DMIF_ADDR_CALC                  0xC00
0058 
0059 #define SRBM_GFX_CNTL                       0x0E44
0060 #define     RINGID(x)                   (((x) & 0x3) << 0)
0061 #define     VMID(x)                     (((x) & 0x7) << 0)
0062 #define SRBM_STATUS                     0x0E50
0063 #define     RLC_RQ_PENDING              (1 << 3)
0064 #define     GRBM_RQ_PENDING             (1 << 5)
0065 #define     VMC_BUSY                (1 << 8)
0066 #define     MCB_BUSY                (1 << 9)
0067 #define     MCB_NON_DISPLAY_BUSY            (1 << 10)
0068 #define     MCC_BUSY                (1 << 11)
0069 #define     MCD_BUSY                (1 << 12)
0070 #define     SEM_BUSY                (1 << 14)
0071 #define     RLC_BUSY                (1 << 15)
0072 #define     IH_BUSY                 (1 << 17)
0073 
0074 #define SRBM_SOFT_RESET                     0x0E60
0075 #define     SOFT_RESET_BIF              (1 << 1)
0076 #define     SOFT_RESET_CG               (1 << 2)
0077 #define     SOFT_RESET_DC               (1 << 5)
0078 #define     SOFT_RESET_DMA1             (1 << 6)
0079 #define     SOFT_RESET_GRBM             (1 << 8)
0080 #define     SOFT_RESET_HDP              (1 << 9)
0081 #define     SOFT_RESET_IH               (1 << 10)
0082 #define     SOFT_RESET_MC               (1 << 11)
0083 #define     SOFT_RESET_RLC              (1 << 13)
0084 #define     SOFT_RESET_ROM              (1 << 14)
0085 #define     SOFT_RESET_SEM              (1 << 15)
0086 #define     SOFT_RESET_VMC              (1 << 17)
0087 #define     SOFT_RESET_DMA              (1 << 20)
0088 #define     SOFT_RESET_TST              (1 << 21)
0089 #define     SOFT_RESET_REGBB            (1 << 22)
0090 #define     SOFT_RESET_ORB              (1 << 23)
0091 
0092 #define SRBM_READ_ERROR                 0xE98
0093 #define SRBM_INT_CNTL                   0xEA0
0094 #define SRBM_INT_ACK                    0xEA8
0095 
0096 #define SRBM_STATUS2                        0x0EC4
0097 #define     DMA_BUSY                (1 << 5)
0098 #define     DMA1_BUSY               (1 << 6)
0099 
0100 #define VM_CONTEXT0_REQUEST_RESPONSE            0x1470
0101 #define     REQUEST_TYPE(x)                 (((x) & 0xf) << 0)
0102 #define     RESPONSE_TYPE_MASK              0x000000F0
0103 #define     RESPONSE_TYPE_SHIFT             4
0104 #define VM_L2_CNTL                  0x1400
0105 #define     ENABLE_L2_CACHE                 (1 << 0)
0106 #define     ENABLE_L2_FRAGMENT_PROCESSING           (1 << 1)
0107 #define     ENABLE_L2_PTE_CACHE_LRU_UPDATE_BY_WRITE     (1 << 9)
0108 #define     ENABLE_L2_PDE0_CACHE_LRU_UPDATE_BY_WRITE    (1 << 10)
0109 #define     EFFECTIVE_L2_QUEUE_SIZE(x)          (((x) & 7) << 14)
0110 #define     CONTEXT1_IDENTITY_ACCESS_MODE(x)        (((x) & 3) << 18)
0111 /* CONTEXT1_IDENTITY_ACCESS_MODE
0112  * 0 physical = logical
0113  * 1 logical via context1 page table
0114  * 2 inside identity aperture use translation, outside physical = logical
0115  * 3 inside identity aperture physical = logical, outside use translation
0116  */
0117 #define VM_L2_CNTL2                 0x1404
0118 #define     INVALIDATE_ALL_L1_TLBS              (1 << 0)
0119 #define     INVALIDATE_L2_CACHE             (1 << 1)
0120 #define VM_L2_CNTL3                 0x1408
0121 #define     BANK_SELECT(x)                  ((x) << 0)
0122 #define     CACHE_UPDATE_MODE(x)                ((x) << 6)
0123 #define     L2_CACHE_BIGK_ASSOCIATIVITY         (1 << 20)
0124 #define     L2_CACHE_BIGK_FRAGMENT_SIZE(x)          ((x) << 15)
0125 #define VM_L2_STATUS                    0x140C
0126 #define     L2_BUSY                     (1 << 0)
0127 #define VM_CONTEXT0_CNTL                0x1410
0128 #define     ENABLE_CONTEXT                  (1 << 0)
0129 #define     PAGE_TABLE_DEPTH(x)             (((x) & 3) << 1)
0130 #define     RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT     (1 << 3)
0131 #define     RANGE_PROTECTION_FAULT_ENABLE_DEFAULT       (1 << 4)
0132 #define     DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT    (1 << 6)
0133 #define     DUMMY_PAGE_PROTECTION_FAULT_ENABLE_DEFAULT  (1 << 7)
0134 #define     PDE0_PROTECTION_FAULT_ENABLE_INTERRUPT      (1 << 9)
0135 #define     PDE0_PROTECTION_FAULT_ENABLE_DEFAULT        (1 << 10)
0136 #define     VALID_PROTECTION_FAULT_ENABLE_INTERRUPT     (1 << 12)
0137 #define     VALID_PROTECTION_FAULT_ENABLE_DEFAULT       (1 << 13)
0138 #define     READ_PROTECTION_FAULT_ENABLE_INTERRUPT      (1 << 15)
0139 #define     READ_PROTECTION_FAULT_ENABLE_DEFAULT        (1 << 16)
0140 #define     WRITE_PROTECTION_FAULT_ENABLE_INTERRUPT     (1 << 18)
0141 #define     WRITE_PROTECTION_FAULT_ENABLE_DEFAULT       (1 << 19)
0142 #define     PAGE_TABLE_BLOCK_SIZE(x)            (((x) & 0xF) << 24)
0143 #define VM_CONTEXT1_CNTL                0x1414
0144 #define VM_CONTEXT0_CNTL2               0x1430
0145 #define VM_CONTEXT1_CNTL2               0x1434
0146 #define VM_INVALIDATE_REQUEST               0x1478
0147 #define VM_INVALIDATE_RESPONSE              0x147c
0148 #define VM_CONTEXT1_PROTECTION_FAULT_ADDR       0x14FC
0149 #define VM_CONTEXT1_PROTECTION_FAULT_STATUS     0x14DC
0150 #define     PROTECTIONS_MASK            (0xf << 0)
0151 #define     PROTECTIONS_SHIFT           0
0152         /* bit 0: range
0153          * bit 2: pde0
0154          * bit 3: valid
0155          * bit 4: read
0156          * bit 5: write
0157          */
0158 #define     MEMORY_CLIENT_ID_MASK           (0xff << 12)
0159 #define     MEMORY_CLIENT_ID_SHIFT          12
0160 #define     MEMORY_CLIENT_RW_MASK           (1 << 24)
0161 #define     MEMORY_CLIENT_RW_SHIFT          24
0162 #define     FAULT_VMID_MASK             (0x7 << 25)
0163 #define     FAULT_VMID_SHIFT            25
0164 #define VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR   0x1518
0165 #define VM_CONTEXT1_PROTECTION_FAULT_DEFAULT_ADDR   0x151c
0166 #define VM_CONTEXT0_PAGE_TABLE_BASE_ADDR        0x153C
0167 #define VM_CONTEXT0_PAGE_TABLE_START_ADDR       0x155C
0168 #define VM_CONTEXT0_PAGE_TABLE_END_ADDR         0x157C
0169 
0170 #define MC_SHARED_CHMAP                     0x2004
0171 #define     NOOFCHAN_SHIFT                  12
0172 #define     NOOFCHAN_MASK                   0x00003000
0173 #define MC_SHARED_CHREMAP                   0x2008
0174 
0175 #define MC_VM_SYSTEM_APERTURE_LOW_ADDR          0x2034
0176 #define MC_VM_SYSTEM_APERTURE_HIGH_ADDR         0x2038
0177 #define MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR      0x203C
0178 #define MC_VM_MX_L1_TLB_CNTL                0x2064
0179 #define     ENABLE_L1_TLB                   (1 << 0)
0180 #define     ENABLE_L1_FRAGMENT_PROCESSING           (1 << 1)
0181 #define     SYSTEM_ACCESS_MODE_PA_ONLY          (0 << 3)
0182 #define     SYSTEM_ACCESS_MODE_USE_SYS_MAP          (1 << 3)
0183 #define     SYSTEM_ACCESS_MODE_IN_SYS           (2 << 3)
0184 #define     SYSTEM_ACCESS_MODE_NOT_IN_SYS           (3 << 3)
0185 #define     SYSTEM_APERTURE_UNMAPPED_ACCESS_PASS_THRU   (0 << 5)
0186 #define     ENABLE_ADVANCED_DRIVER_MODEL            (1 << 6)
0187 #define FUS_MC_VM_FB_OFFSET             0x2068
0188 
0189 #define MC_SHARED_BLACKOUT_CNTL                 0x20ac
0190 #define MC_ARB_RAMCFG                   0x2760
0191 #define     NOOFBANK_SHIFT                  0
0192 #define     NOOFBANK_MASK                   0x00000003
0193 #define     NOOFRANK_SHIFT                  2
0194 #define     NOOFRANK_MASK                   0x00000004
0195 #define     NOOFROWS_SHIFT                  3
0196 #define     NOOFROWS_MASK                   0x00000038
0197 #define     NOOFCOLS_SHIFT                  6
0198 #define     NOOFCOLS_MASK                   0x000000C0
0199 #define     CHANSIZE_SHIFT                  8
0200 #define     CHANSIZE_MASK                   0x00000100
0201 #define     BURSTLENGTH_SHIFT               9
0202 #define     BURSTLENGTH_MASK                0x00000200
0203 #define     CHANSIZE_OVERRIDE               (1 << 11)
0204 #define MC_SEQ_SUP_CNTL                     0x28c8
0205 #define     RUN_MASK                    (1 << 0)
0206 #define MC_SEQ_SUP_PGM                      0x28cc
0207 #define MC_IO_PAD_CNTL_D0                       0x29d0
0208 #define     MEM_FALL_OUT_CMD                (1 << 8)
0209 #define MC_SEQ_MISC0                        0x2a00
0210 #define     MC_SEQ_MISC0_GDDR5_SHIFT            28
0211 #define     MC_SEQ_MISC0_GDDR5_MASK             0xf0000000
0212 #define     MC_SEQ_MISC0_GDDR5_VALUE            5
0213 #define MC_SEQ_IO_DEBUG_INDEX                   0x2a44
0214 #define MC_SEQ_IO_DEBUG_DATA                    0x2a48
0215 
0216 #define HDP_HOST_PATH_CNTL              0x2C00
0217 #define HDP_NONSURFACE_BASE             0x2C04
0218 #define HDP_NONSURFACE_INFO             0x2C08
0219 #define HDP_NONSURFACE_SIZE             0x2C0C
0220 #define HDP_ADDR_CONFIG                 0x2F48
0221 #define HDP_MISC_CNTL                   0x2F4C
0222 #define     HDP_FLUSH_INVALIDATE_CACHE          (1 << 0)
0223 
0224 #define CC_SYS_RB_BACKEND_DISABLE           0x3F88
0225 #define GC_USER_SYS_RB_BACKEND_DISABLE          0x3F8C
0226 #define CGTS_SYS_TCC_DISABLE                0x3F90
0227 #define CGTS_USER_SYS_TCC_DISABLE           0x3F94
0228 
0229 #define RLC_GFX_INDEX                       0x3FC4
0230 
0231 #define CONFIG_MEMSIZE                  0x5428
0232 
0233 #define HDP_MEM_COHERENCY_FLUSH_CNTL            0x5480
0234 #define HDP_REG_COHERENCY_FLUSH_CNTL            0x54A0
0235 
0236 #define GRBM_CNTL                   0x8000
0237 #define     GRBM_READ_TIMEOUT(x)                ((x) << 0)
0238 #define GRBM_STATUS                 0x8010
0239 #define     CMDFIFO_AVAIL_MASK              0x0000000F
0240 #define     RING2_RQ_PENDING                (1 << 4)
0241 #define     SRBM_RQ_PENDING                 (1 << 5)
0242 #define     RING1_RQ_PENDING                (1 << 6)
0243 #define     CF_RQ_PENDING                   (1 << 7)
0244 #define     PF_RQ_PENDING                   (1 << 8)
0245 #define     GDS_DMA_RQ_PENDING              (1 << 9)
0246 #define     GRBM_EE_BUSY                    (1 << 10)
0247 #define     SX_CLEAN                    (1 << 11)
0248 #define     DB_CLEAN                    (1 << 12)
0249 #define     CB_CLEAN                    (1 << 13)
0250 #define     TA_BUSY                     (1 << 14)
0251 #define     GDS_BUSY                    (1 << 15)
0252 #define     VGT_BUSY_NO_DMA                 (1 << 16)
0253 #define     VGT_BUSY                    (1 << 17)
0254 #define     IA_BUSY_NO_DMA                  (1 << 18)
0255 #define     IA_BUSY                     (1 << 19)
0256 #define     SX_BUSY                     (1 << 20)
0257 #define     SH_BUSY                     (1 << 21)
0258 #define     SPI_BUSY                    (1 << 22)
0259 #define     SC_BUSY                     (1 << 24)
0260 #define     PA_BUSY                     (1 << 25)
0261 #define     DB_BUSY                     (1 << 26)
0262 #define     CP_COHERENCY_BUSY                   (1 << 28)
0263 #define     CP_BUSY                     (1 << 29)
0264 #define     CB_BUSY                     (1 << 30)
0265 #define     GUI_ACTIVE                  (1 << 31)
0266 #define GRBM_STATUS_SE0                 0x8014
0267 #define GRBM_STATUS_SE1                 0x8018
0268 #define     SE_SX_CLEAN                 (1 << 0)
0269 #define     SE_DB_CLEAN                 (1 << 1)
0270 #define     SE_CB_CLEAN                 (1 << 2)
0271 #define     SE_VGT_BUSY                 (1 << 23)
0272 #define     SE_PA_BUSY                  (1 << 24)
0273 #define     SE_TA_BUSY                  (1 << 25)
0274 #define     SE_SX_BUSY                  (1 << 26)
0275 #define     SE_SPI_BUSY                 (1 << 27)
0276 #define     SE_SH_BUSY                  (1 << 28)
0277 #define     SE_SC_BUSY                  (1 << 29)
0278 #define     SE_DB_BUSY                  (1 << 30)
0279 #define     SE_CB_BUSY                  (1 << 31)
0280 #define GRBM_SOFT_RESET                 0x8020
0281 #define     SOFT_RESET_CP                   (1 << 0)
0282 #define     SOFT_RESET_CB                   (1 << 1)
0283 #define     SOFT_RESET_DB                   (1 << 3)
0284 #define     SOFT_RESET_GDS                  (1 << 4)
0285 #define     SOFT_RESET_PA                   (1 << 5)
0286 #define     SOFT_RESET_SC                   (1 << 6)
0287 #define     SOFT_RESET_SPI                  (1 << 8)
0288 #define     SOFT_RESET_SH                   (1 << 9)
0289 #define     SOFT_RESET_SX                   (1 << 10)
0290 #define     SOFT_RESET_TC                   (1 << 11)
0291 #define     SOFT_RESET_TA                   (1 << 12)
0292 #define     SOFT_RESET_VGT                  (1 << 14)
0293 #define     SOFT_RESET_IA                   (1 << 15)
0294 
0295 #define GRBM_GFX_INDEX                      0x802C
0296 #define     INSTANCE_INDEX(x)           ((x) << 0)
0297 #define     SE_INDEX(x)                 ((x) << 16)
0298 #define     INSTANCE_BROADCAST_WRITES           (1 << 30)
0299 #define     SE_BROADCAST_WRITES             (1 << 31)
0300 
0301 #define SCRATCH_REG0                    0x8500
0302 #define SCRATCH_REG1                    0x8504
0303 #define SCRATCH_REG2                    0x8508
0304 #define SCRATCH_REG3                    0x850C
0305 #define SCRATCH_REG4                    0x8510
0306 #define SCRATCH_REG5                    0x8514
0307 #define SCRATCH_REG6                    0x8518
0308 #define SCRATCH_REG7                    0x851C
0309 #define SCRATCH_UMSK                    0x8540
0310 #define SCRATCH_ADDR                    0x8544
0311 #define CP_SEM_WAIT_TIMER               0x85BC
0312 #define CP_SEM_INCOMPLETE_TIMER_CNTL            0x85C8
0313 #define CP_COHER_CNTL2                  0x85E8
0314 #define CP_STALLED_STAT1            0x8674
0315 #define CP_STALLED_STAT2            0x8678
0316 #define CP_BUSY_STAT                0x867C
0317 #define CP_STAT                     0x8680
0318 #define CP_ME_CNTL                  0x86D8
0319 #define     CP_ME_HALT                  (1 << 28)
0320 #define     CP_PFP_HALT                 (1 << 26)
0321 #define CP_RB2_RPTR                 0x86f8
0322 #define CP_RB1_RPTR                 0x86fc
0323 #define CP_RB0_RPTR                 0x8700
0324 #define CP_RB_WPTR_DELAY                0x8704
0325 #define CP_MEQ_THRESHOLDS               0x8764
0326 #define     MEQ1_START(x)               ((x) << 0)
0327 #define     MEQ2_START(x)               ((x) << 8)
0328 #define CP_PERFMON_CNTL                 0x87FC
0329 
0330 #define VGT_CACHE_INVALIDATION              0x88C4
0331 #define     CACHE_INVALIDATION(x)               ((x) << 0)
0332 #define         VC_ONLY                     0
0333 #define         TC_ONLY                     1
0334 #define         VC_AND_TC                   2
0335 #define     AUTO_INVLD_EN(x)                ((x) << 6)
0336 #define         NO_AUTO                     0
0337 #define         ES_AUTO                     1
0338 #define         GS_AUTO                     2
0339 #define         ES_AND_GS_AUTO                  3
0340 #define VGT_GS_VERTEX_REUSE             0x88D4
0341 
0342 #define CC_GC_SHADER_PIPE_CONFIG            0x8950
0343 #define GC_USER_SHADER_PIPE_CONFIG          0x8954
0344 #define     INACTIVE_QD_PIPES(x)                ((x) << 8)
0345 #define     INACTIVE_QD_PIPES_MASK              0x0000FF00
0346 #define     INACTIVE_QD_PIPES_SHIFT             8
0347 #define     INACTIVE_SIMDS(x)               ((x) << 16)
0348 #define     INACTIVE_SIMDS_MASK             0xFFFF0000
0349 #define     INACTIVE_SIMDS_SHIFT                16
0350 
0351 #define VGT_PRIMITIVE_TYPE                              0x8958
0352 #define VGT_NUM_INSTANCES               0x8974
0353 #define VGT_TF_RING_SIZE                0x8988
0354 #define VGT_OFFCHIP_LDS_BASE                0x89b4
0355 
0356 #define PA_SC_LINE_STIPPLE_STATE            0x8B10
0357 #define PA_CL_ENHANCE                   0x8A14
0358 #define     CLIP_VTX_REORDER_ENA                (1 << 0)
0359 #define     NUM_CLIP_SEQ(x)                 ((x) << 1)
0360 #define PA_SC_FIFO_SIZE                 0x8BCC
0361 #define     SC_PRIM_FIFO_SIZE(x)                ((x) << 0)
0362 #define     SC_HIZ_TILE_FIFO_SIZE(x)            ((x) << 12)
0363 #define     SC_EARLYZ_TILE_FIFO_SIZE(x)         ((x) << 20)
0364 #define PA_SC_FORCE_EOV_MAX_CNTS            0x8B24
0365 #define     FORCE_EOV_MAX_CLK_CNT(x)            ((x) << 0)
0366 #define     FORCE_EOV_MAX_REZ_CNT(x)            ((x) << 16)
0367 
0368 #define SQ_CONFIG                   0x8C00
0369 #define     VC_ENABLE                   (1 << 0)
0370 #define     EXPORT_SRC_C                    (1 << 1)
0371 #define     GFX_PRIO(x)                 ((x) << 2)
0372 #define     CS1_PRIO(x)                 ((x) << 4)
0373 #define     CS2_PRIO(x)                 ((x) << 6)
0374 #define SQ_GPR_RESOURCE_MGMT_1              0x8C04
0375 #define     NUM_PS_GPRS(x)                  ((x) << 0)
0376 #define     NUM_VS_GPRS(x)                  ((x) << 16)
0377 #define     NUM_CLAUSE_TEMP_GPRS(x)             ((x) << 28)
0378 #define SQ_ESGS_RING_SIZE               0x8c44
0379 #define SQ_GSVS_RING_SIZE               0x8c4c
0380 #define SQ_ESTMP_RING_BASE              0x8c50
0381 #define SQ_ESTMP_RING_SIZE              0x8c54
0382 #define SQ_GSTMP_RING_BASE              0x8c58
0383 #define SQ_GSTMP_RING_SIZE              0x8c5c
0384 #define SQ_VSTMP_RING_BASE              0x8c60
0385 #define SQ_VSTMP_RING_SIZE              0x8c64
0386 #define SQ_PSTMP_RING_BASE              0x8c68
0387 #define SQ_PSTMP_RING_SIZE              0x8c6c
0388 #define SQ_MS_FIFO_SIZES                0x8CF0
0389 #define     CACHE_FIFO_SIZE(x)              ((x) << 0)
0390 #define     FETCH_FIFO_HIWATER(x)               ((x) << 8)
0391 #define     DONE_FIFO_HIWATER(x)                ((x) << 16)
0392 #define     ALU_UPDATE_FIFO_HIWATER(x)          ((x) << 24)
0393 #define SQ_LSTMP_RING_BASE              0x8e10
0394 #define SQ_LSTMP_RING_SIZE              0x8e14
0395 #define SQ_HSTMP_RING_BASE              0x8e18
0396 #define SQ_HSTMP_RING_SIZE              0x8e1c
0397 #define SQ_DYN_GPR_CNTL_PS_FLUSH_REQ            0x8D8C
0398 #define     DYN_GPR_ENABLE                  (1 << 8)
0399 #define SQ_CONST_MEM_BASE               0x8df8
0400 
0401 #define SX_EXPORT_BUFFER_SIZES              0x900C
0402 #define     COLOR_BUFFER_SIZE(x)                ((x) << 0)
0403 #define     POSITION_BUFFER_SIZE(x)             ((x) << 8)
0404 #define     SMX_BUFFER_SIZE(x)              ((x) << 16)
0405 #define SX_DEBUG_1                  0x9058
0406 #define     ENABLE_NEW_SMX_ADDRESS              (1 << 16)
0407 
0408 #define SPI_CONFIG_CNTL                 0x9100
0409 #define     GPR_WRITE_PRIORITY(x)               ((x) << 0)
0410 #define SPI_CONFIG_CNTL_1               0x913C
0411 #define     VTX_DONE_DELAY(x)               ((x) << 0)
0412 #define     INTERP_ONE_PRIM_PER_ROW             (1 << 4)
0413 #define     CRC_SIMD_ID_WADDR_DISABLE           (1 << 8)
0414 
0415 #define CGTS_TCC_DISABLE                0x9148
0416 #define CGTS_USER_TCC_DISABLE               0x914C
0417 #define     TCC_DISABLE_MASK                0xFFFF0000
0418 #define     TCC_DISABLE_SHIFT               16
0419 #define CGTS_SM_CTRL_REG                0x9150
0420 #define     OVERRIDE                (1 << 21)
0421 
0422 #define TA_CNTL_AUX                 0x9508
0423 #define     DISABLE_CUBE_WRAP               (1 << 0)
0424 #define     DISABLE_CUBE_ANISO              (1 << 1)
0425 
0426 #define TCP_CHAN_STEER_LO               0x960c
0427 #define TCP_CHAN_STEER_HI               0x9610
0428 
0429 #define CC_RB_BACKEND_DISABLE               0x98F4
0430 #define     BACKEND_DISABLE(x)              ((x) << 16)
0431 #define GB_ADDR_CONFIG                  0x98F8
0432 #define     NUM_PIPES(x)                ((x) << 0)
0433 #define     NUM_PIPES_MASK              0x00000007
0434 #define     NUM_PIPES_SHIFT             0
0435 #define     PIPE_INTERLEAVE_SIZE(x)         ((x) << 4)
0436 #define     PIPE_INTERLEAVE_SIZE_MASK       0x00000070
0437 #define     PIPE_INTERLEAVE_SIZE_SHIFT      4
0438 #define     BANK_INTERLEAVE_SIZE(x)         ((x) << 8)
0439 #define     NUM_SHADER_ENGINES(x)           ((x) << 12)
0440 #define     NUM_SHADER_ENGINES_MASK         0x00003000
0441 #define     NUM_SHADER_ENGINES_SHIFT        12
0442 #define     SHADER_ENGINE_TILE_SIZE(x)          ((x) << 16)
0443 #define     SHADER_ENGINE_TILE_SIZE_MASK        0x00070000
0444 #define     SHADER_ENGINE_TILE_SIZE_SHIFT       16
0445 #define     NUM_GPUS(x)                 ((x) << 20)
0446 #define     NUM_GPUS_MASK               0x00700000
0447 #define     NUM_GPUS_SHIFT              20
0448 #define     MULTI_GPU_TILE_SIZE(x)          ((x) << 24)
0449 #define     MULTI_GPU_TILE_SIZE_MASK        0x03000000
0450 #define     MULTI_GPU_TILE_SIZE_SHIFT       24
0451 #define     ROW_SIZE(x)                     ((x) << 28)
0452 #define     ROW_SIZE_MASK               0x30000000
0453 #define     ROW_SIZE_SHIFT              28
0454 #define     NUM_LOWER_PIPES(x)          ((x) << 30)
0455 #define     NUM_LOWER_PIPES_MASK            0x40000000
0456 #define     NUM_LOWER_PIPES_SHIFT           30
0457 #define GB_BACKEND_MAP                  0x98FC
0458 
0459 #define CB_PERF_CTR0_SEL_0              0x9A20
0460 #define CB_PERF_CTR0_SEL_1              0x9A24
0461 #define CB_PERF_CTR1_SEL_0              0x9A28
0462 #define CB_PERF_CTR1_SEL_1              0x9A2C
0463 #define CB_PERF_CTR2_SEL_0              0x9A30
0464 #define CB_PERF_CTR2_SEL_1              0x9A34
0465 #define CB_PERF_CTR3_SEL_0              0x9A38
0466 #define CB_PERF_CTR3_SEL_1              0x9A3C
0467 
0468 #define GC_USER_RB_BACKEND_DISABLE          0x9B7C
0469 #define     BACKEND_DISABLE_MASK            0x00FF0000
0470 #define     BACKEND_DISABLE_SHIFT           16
0471 
0472 #define SMX_DC_CTL0                 0xA020
0473 #define     USE_HASH_FUNCTION               (1 << 0)
0474 #define     NUMBER_OF_SETS(x)               ((x) << 1)
0475 #define     FLUSH_ALL_ON_EVENT              (1 << 10)
0476 #define     STALL_ON_EVENT                  (1 << 11)
0477 #define SMX_EVENT_CTL                   0xA02C
0478 #define     ES_FLUSH_CTL(x)                 ((x) << 0)
0479 #define     GS_FLUSH_CTL(x)                 ((x) << 3)
0480 #define     ACK_FLUSH_CTL(x)                ((x) << 6)
0481 #define     SYNC_FLUSH_CTL                  (1 << 8)
0482 
0483 #define CP_RB0_BASE                 0xC100
0484 #define CP_RB0_CNTL                 0xC104
0485 #define     RB_BUFSZ(x)                 ((x) << 0)
0486 #define     RB_BLKSZ(x)                 ((x) << 8)
0487 #define     RB_NO_UPDATE                    (1 << 27)
0488 #define     RB_RPTR_WR_ENA                  (1 << 31)
0489 #define     BUF_SWAP_32BIT                  (2 << 16)
0490 #define CP_RB0_RPTR_ADDR                0xC10C
0491 #define CP_RB0_RPTR_ADDR_HI             0xC110
0492 #define CP_RB0_WPTR                 0xC114
0493 
0494 #define CP_INT_CNTL                                     0xC124
0495 #       define CNTX_BUSY_INT_ENABLE                     (1 << 19)
0496 #       define CNTX_EMPTY_INT_ENABLE                    (1 << 20)
0497 #       define TIME_STAMP_INT_ENABLE                    (1 << 26)
0498 
0499 #define CP_RB1_BASE                 0xC180
0500 #define CP_RB1_CNTL                 0xC184
0501 #define CP_RB1_RPTR_ADDR                0xC188
0502 #define CP_RB1_RPTR_ADDR_HI             0xC18C
0503 #define CP_RB1_WPTR                 0xC190
0504 #define CP_RB2_BASE                 0xC194
0505 #define CP_RB2_CNTL                 0xC198
0506 #define CP_RB2_RPTR_ADDR                0xC19C
0507 #define CP_RB2_RPTR_ADDR_HI             0xC1A0
0508 #define CP_RB2_WPTR                 0xC1A4
0509 #define CP_PFP_UCODE_ADDR               0xC150
0510 #define CP_PFP_UCODE_DATA               0xC154
0511 #define CP_ME_RAM_RADDR                 0xC158
0512 #define CP_ME_RAM_WADDR                 0xC15C
0513 #define CP_ME_RAM_DATA                  0xC160
0514 #define CP_DEBUG                    0xC1FC
0515 
0516 #define VGT_EVENT_INITIATOR                             0x28a90
0517 #       define CACHE_FLUSH_AND_INV_EVENT_TS                     (0x14 << 0)
0518 #       define CACHE_FLUSH_AND_INV_EVENT                        (0x16 << 0)
0519 
0520 /* TN SMU registers */
0521 #define TN_CURRENT_GNB_TEMP             0x1F390
0522 
0523 /* pm registers */
0524 #define SMC_MSG                     0x20c
0525 #define     HOST_SMC_MSG(x)             ((x) << 0)
0526 #define     HOST_SMC_MSG_MASK           (0xff << 0)
0527 #define     HOST_SMC_MSG_SHIFT          0
0528 #define     HOST_SMC_RESP(x)            ((x) << 8)
0529 #define     HOST_SMC_RESP_MASK          (0xff << 8)
0530 #define     HOST_SMC_RESP_SHIFT         8
0531 #define     SMC_HOST_MSG(x)             ((x) << 16)
0532 #define     SMC_HOST_MSG_MASK           (0xff << 16)
0533 #define     SMC_HOST_MSG_SHIFT          16
0534 #define     SMC_HOST_RESP(x)            ((x) << 24)
0535 #define     SMC_HOST_RESP_MASK          (0xff << 24)
0536 #define     SMC_HOST_RESP_SHIFT         24
0537 
0538 #define CG_SPLL_FUNC_CNTL               0x600
0539 #define     SPLL_RESET              (1 << 0)
0540 #define     SPLL_SLEEP              (1 << 1)
0541 #define     SPLL_BYPASS_EN              (1 << 3)
0542 #define     SPLL_REF_DIV(x)             ((x) << 4)
0543 #define     SPLL_REF_DIV_MASK           (0x3f << 4)
0544 #define     SPLL_PDIV_A(x)              ((x) << 20)
0545 #define     SPLL_PDIV_A_MASK            (0x7f << 20)
0546 #define     SPLL_PDIV_A_SHIFT           20
0547 #define CG_SPLL_FUNC_CNTL_2             0x604
0548 #define     SCLK_MUX_SEL(x)             ((x) << 0)
0549 #define     SCLK_MUX_SEL_MASK           (0x1ff << 0)
0550 #define CG_SPLL_FUNC_CNTL_3             0x608
0551 #define     SPLL_FB_DIV(x)              ((x) << 0)
0552 #define     SPLL_FB_DIV_MASK            (0x3ffffff << 0)
0553 #define     SPLL_FB_DIV_SHIFT           0
0554 #define     SPLL_DITHEN             (1 << 28)
0555 
0556 #define MPLL_CNTL_MODE                                  0x61c
0557 #       define SS_SSEN                                  (1 << 24)
0558 #       define SS_DSMODE_EN                             (1 << 25)
0559 
0560 #define MPLL_AD_FUNC_CNTL               0x624
0561 #define     CLKF(x)                 ((x) << 0)
0562 #define     CLKF_MASK               (0x7f << 0)
0563 #define     CLKR(x)                 ((x) << 7)
0564 #define     CLKR_MASK               (0x1f << 7)
0565 #define     CLKFRAC(x)              ((x) << 12)
0566 #define     CLKFRAC_MASK                (0x1f << 12)
0567 #define     YCLK_POST_DIV(x)            ((x) << 17)
0568 #define     YCLK_POST_DIV_MASK          (3 << 17)
0569 #define     IBIAS(x)                ((x) << 20)
0570 #define     IBIAS_MASK              (0x3ff << 20)
0571 #define     RESET                   (1 << 30)
0572 #define     PDNB                    (1 << 31)
0573 #define MPLL_AD_FUNC_CNTL_2             0x628
0574 #define     BYPASS                  (1 << 19)
0575 #define     BIAS_GEN_PDNB               (1 << 24)
0576 #define     RESET_EN                (1 << 25)
0577 #define     VCO_MODE                (1 << 29)
0578 #define MPLL_DQ_FUNC_CNTL               0x62c
0579 #define MPLL_DQ_FUNC_CNTL_2             0x630
0580 
0581 #define GENERAL_PWRMGT                                  0x63c
0582 #       define GLOBAL_PWRMGT_EN                         (1 << 0)
0583 #       define STATIC_PM_EN                             (1 << 1)
0584 #       define THERMAL_PROTECTION_DIS                   (1 << 2)
0585 #       define THERMAL_PROTECTION_TYPE                  (1 << 3)
0586 #       define ENABLE_GEN2PCIE                          (1 << 4)
0587 #       define ENABLE_GEN2XSP                           (1 << 5)
0588 #       define SW_SMIO_INDEX(x)                         ((x) << 6)
0589 #       define SW_SMIO_INDEX_MASK                       (3 << 6)
0590 #       define SW_SMIO_INDEX_SHIFT                      6
0591 #       define LOW_VOLT_D2_ACPI                         (1 << 8)
0592 #       define LOW_VOLT_D3_ACPI                         (1 << 9)
0593 #       define VOLT_PWRMGT_EN                           (1 << 10)
0594 #       define BACKBIAS_PAD_EN                          (1 << 18)
0595 #       define BACKBIAS_VALUE                           (1 << 19)
0596 #       define DYN_SPREAD_SPECTRUM_EN                   (1 << 23)
0597 #       define AC_DC_SW                                 (1 << 24)
0598 
0599 #define SCLK_PWRMGT_CNTL                                  0x644
0600 #       define SCLK_PWRMGT_OFF                            (1 << 0)
0601 #       define SCLK_LOW_D1                                (1 << 1)
0602 #       define FIR_RESET                                  (1 << 4)
0603 #       define FIR_FORCE_TREND_SEL                        (1 << 5)
0604 #       define FIR_TREND_MODE                             (1 << 6)
0605 #       define DYN_GFX_CLK_OFF_EN                         (1 << 7)
0606 #       define GFX_CLK_FORCE_ON                           (1 << 8)
0607 #       define GFX_CLK_REQUEST_OFF                        (1 << 9)
0608 #       define GFX_CLK_FORCE_OFF                          (1 << 10)
0609 #       define GFX_CLK_OFF_ACPI_D1                        (1 << 11)
0610 #       define GFX_CLK_OFF_ACPI_D2                        (1 << 12)
0611 #       define GFX_CLK_OFF_ACPI_D3                        (1 << 13)
0612 #       define DYN_LIGHT_SLEEP_EN                         (1 << 14)
0613 #define MCLK_PWRMGT_CNTL                0x648
0614 #       define DLL_SPEED(x)             ((x) << 0)
0615 #       define DLL_SPEED_MASK               (0x1f << 0)
0616 #       define MPLL_PWRMGT_OFF                          (1 << 5)
0617 #       define DLL_READY                                (1 << 6)
0618 #       define MC_INT_CNTL                              (1 << 7)
0619 #       define MRDCKA0_PDNB                             (1 << 8)
0620 #       define MRDCKA1_PDNB                             (1 << 9)
0621 #       define MRDCKB0_PDNB                             (1 << 10)
0622 #       define MRDCKB1_PDNB                             (1 << 11)
0623 #       define MRDCKC0_PDNB                             (1 << 12)
0624 #       define MRDCKC1_PDNB                             (1 << 13)
0625 #       define MRDCKD0_PDNB                             (1 << 14)
0626 #       define MRDCKD1_PDNB                             (1 << 15)
0627 #       define MRDCKA0_RESET                            (1 << 16)
0628 #       define MRDCKA1_RESET                            (1 << 17)
0629 #       define MRDCKB0_RESET                            (1 << 18)
0630 #       define MRDCKB1_RESET                            (1 << 19)
0631 #       define MRDCKC0_RESET                            (1 << 20)
0632 #       define MRDCKC1_RESET                            (1 << 21)
0633 #       define MRDCKD0_RESET                            (1 << 22)
0634 #       define MRDCKD1_RESET                            (1 << 23)
0635 #       define DLL_READY_READ                           (1 << 24)
0636 #       define USE_DISPLAY_GAP                          (1 << 25)
0637 #       define USE_DISPLAY_URGENT_NORMAL                (1 << 26)
0638 #       define MPLL_TURNOFF_D2                          (1 << 28)
0639 #define DLL_CNTL                    0x64c
0640 #       define MRDCKA0_BYPASS                           (1 << 24)
0641 #       define MRDCKA1_BYPASS                           (1 << 25)
0642 #       define MRDCKB0_BYPASS                           (1 << 26)
0643 #       define MRDCKB1_BYPASS                           (1 << 27)
0644 #       define MRDCKC0_BYPASS                           (1 << 28)
0645 #       define MRDCKC1_BYPASS                           (1 << 29)
0646 #       define MRDCKD0_BYPASS                           (1 << 30)
0647 #       define MRDCKD1_BYPASS                           (1 << 31)
0648 
0649 #define TARGET_AND_CURRENT_PROFILE_INDEX                  0x66c
0650 #       define CURRENT_STATE_INDEX_MASK                   (0xf << 4)
0651 #       define CURRENT_STATE_INDEX_SHIFT                  4
0652 
0653 #define CG_AT                                           0x6d4
0654 #       define CG_R(x)                  ((x) << 0)
0655 #       define CG_R_MASK                (0xffff << 0)
0656 #       define CG_L(x)                  ((x) << 16)
0657 #       define CG_L_MASK                (0xffff << 16)
0658 
0659 #define CG_BIF_REQ_AND_RSP              0x7f4
0660 #define     CG_CLIENT_REQ(x)            ((x) << 0)
0661 #define     CG_CLIENT_REQ_MASK          (0xff << 0)
0662 #define     CG_CLIENT_REQ_SHIFT         0
0663 #define     CG_CLIENT_RESP(x)           ((x) << 8)
0664 #define     CG_CLIENT_RESP_MASK         (0xff << 8)
0665 #define     CG_CLIENT_RESP_SHIFT            8
0666 #define     CLIENT_CG_REQ(x)            ((x) << 16)
0667 #define     CLIENT_CG_REQ_MASK          (0xff << 16)
0668 #define     CLIENT_CG_REQ_SHIFT         16
0669 #define     CLIENT_CG_RESP(x)           ((x) << 24)
0670 #define     CLIENT_CG_RESP_MASK         (0xff << 24)
0671 #define     CLIENT_CG_RESP_SHIFT            24
0672 
0673 #define CG_SPLL_SPREAD_SPECTRUM             0x790
0674 #define     SSEN                    (1 << 0)
0675 #define     CLK_S(x)                ((x) << 4)
0676 #define     CLK_S_MASK              (0xfff << 4)
0677 #define     CLK_S_SHIFT             4
0678 #define CG_SPLL_SPREAD_SPECTRUM_2           0x794
0679 #define     CLK_V(x)                ((x) << 0)
0680 #define     CLK_V_MASK              (0x3ffffff << 0)
0681 #define     CLK_V_SHIFT             0
0682 
0683 #define SMC_SCRATCH0                                    0x81c
0684 
0685 #define CG_SPLL_FUNC_CNTL_4             0x850
0686 
0687 #define MPLL_SS1                    0x85c
0688 #define     CLKV(x)                 ((x) << 0)
0689 #define     CLKV_MASK               (0x3ffffff << 0)
0690 #define MPLL_SS2                    0x860
0691 #define     CLKS(x)                 ((x) << 0)
0692 #define     CLKS_MASK               (0xfff << 0)
0693 
0694 #define CG_CAC_CTRL                 0x88c
0695 #define     TID_CNT(x)              ((x) << 0)
0696 #define     TID_CNT_MASK                (0x3fff << 0)
0697 #define     TID_UNIT(x)             ((x) << 14)
0698 #define     TID_UNIT_MASK               (0xf << 14)
0699 
0700 #define CG_IND_ADDR                 0x8f8
0701 #define CG_IND_DATA                 0x8fc
0702 /* CGIND regs */
0703 #define CG_CGTT_LOCAL_0                 0x00
0704 #define CG_CGTT_LOCAL_1                 0x01
0705 
0706 #define MC_CG_CONFIG                                    0x25bc
0707 #define         MCDW_WR_ENABLE                          (1 << 0)
0708 #define         MCDX_WR_ENABLE                          (1 << 1)
0709 #define         MCDY_WR_ENABLE                          (1 << 2)
0710 #define         MCDZ_WR_ENABLE                          (1 << 3)
0711 #define     MC_RD_ENABLE(x)             ((x) << 4)
0712 #define     MC_RD_ENABLE_MASK           (3 << 4)
0713 #define     INDEX(x)                ((x) << 6)
0714 #define     INDEX_MASK              (0xfff << 6)
0715 #define     INDEX_SHIFT             6
0716 
0717 #define MC_ARB_CAC_CNTL                 0x2750
0718 #define         ENABLE                                  (1 << 0)
0719 #define     READ_WEIGHT(x)              ((x) << 1)
0720 #define     READ_WEIGHT_MASK            (0x3f << 1)
0721 #define     READ_WEIGHT_SHIFT           1
0722 #define     WRITE_WEIGHT(x)             ((x) << 7)
0723 #define     WRITE_WEIGHT_MASK           (0x3f << 7)
0724 #define     WRITE_WEIGHT_SHIFT          7
0725 #define         ALLOW_OVERFLOW                          (1 << 13)
0726 
0727 #define MC_ARB_DRAM_TIMING              0x2774
0728 #define MC_ARB_DRAM_TIMING2             0x2778
0729 
0730 #define MC_ARB_RFSH_RATE                0x27b0
0731 #define     POWERMODE0(x)               ((x) << 0)
0732 #define     POWERMODE0_MASK             (0xff << 0)
0733 #define     POWERMODE0_SHIFT            0
0734 #define     POWERMODE1(x)               ((x) << 8)
0735 #define     POWERMODE1_MASK             (0xff << 8)
0736 #define     POWERMODE1_SHIFT            8
0737 #define     POWERMODE2(x)               ((x) << 16)
0738 #define     POWERMODE2_MASK             (0xff << 16)
0739 #define     POWERMODE2_SHIFT            16
0740 #define     POWERMODE3(x)               ((x) << 24)
0741 #define     POWERMODE3_MASK             (0xff << 24)
0742 #define     POWERMODE3_SHIFT            24
0743 
0744 #define MC_ARB_CG                                       0x27e8
0745 #define     CG_ARB_REQ(x)               ((x) << 0)
0746 #define     CG_ARB_REQ_MASK             (0xff << 0)
0747 #define     CG_ARB_REQ_SHIFT            0
0748 #define     CG_ARB_RESP(x)              ((x) << 8)
0749 #define     CG_ARB_RESP_MASK            (0xff << 8)
0750 #define     CG_ARB_RESP_SHIFT           8
0751 #define     ARB_CG_REQ(x)               ((x) << 16)
0752 #define     ARB_CG_REQ_MASK             (0xff << 16)
0753 #define     ARB_CG_REQ_SHIFT            16
0754 #define     ARB_CG_RESP(x)              ((x) << 24)
0755 #define     ARB_CG_RESP_MASK            (0xff << 24)
0756 #define     ARB_CG_RESP_SHIFT           24
0757 
0758 #define MC_ARB_DRAM_TIMING_1                0x27f0
0759 #define MC_ARB_DRAM_TIMING_2                0x27f4
0760 #define MC_ARB_DRAM_TIMING_3                0x27f8
0761 #define MC_ARB_DRAM_TIMING2_1               0x27fc
0762 #define MC_ARB_DRAM_TIMING2_2               0x2800
0763 #define MC_ARB_DRAM_TIMING2_3               0x2804
0764 #define MC_ARB_BURST_TIME                               0x2808
0765 #define     STATE0(x)               ((x) << 0)
0766 #define     STATE0_MASK             (0x1f << 0)
0767 #define     STATE0_SHIFT                0
0768 #define     STATE1(x)               ((x) << 5)
0769 #define     STATE1_MASK             (0x1f << 5)
0770 #define     STATE1_SHIFT                5
0771 #define     STATE2(x)               ((x) << 10)
0772 #define     STATE2_MASK             (0x1f << 10)
0773 #define     STATE2_SHIFT                10
0774 #define     STATE3(x)               ((x) << 15)
0775 #define     STATE3_MASK             (0x1f << 15)
0776 #define     STATE3_SHIFT                15
0777 
0778 #define MC_CG_DATAPORT                                  0x2884
0779 
0780 #define MC_SEQ_RAS_TIMING                               0x28a0
0781 #define MC_SEQ_CAS_TIMING                               0x28a4
0782 #define MC_SEQ_MISC_TIMING                              0x28a8
0783 #define MC_SEQ_MISC_TIMING2                             0x28ac
0784 #define MC_SEQ_PMG_TIMING                               0x28b0
0785 #define MC_SEQ_RD_CTL_D0                                0x28b4
0786 #define MC_SEQ_RD_CTL_D1                                0x28b8
0787 #define MC_SEQ_WR_CTL_D0                                0x28bc
0788 #define MC_SEQ_WR_CTL_D1                                0x28c0
0789 
0790 #define MC_SEQ_MISC0                                    0x2a00
0791 #define         MC_SEQ_MISC0_GDDR5_SHIFT                28
0792 #define         MC_SEQ_MISC0_GDDR5_MASK                 0xf0000000
0793 #define         MC_SEQ_MISC0_GDDR5_VALUE                5
0794 #define MC_SEQ_MISC1                                    0x2a04
0795 #define MC_SEQ_RESERVE_M                                0x2a08
0796 #define MC_PMG_CMD_EMRS                                 0x2a0c
0797 
0798 #define MC_SEQ_MISC3                                    0x2a2c
0799 
0800 #define MC_SEQ_MISC5                                    0x2a54
0801 #define MC_SEQ_MISC6                                    0x2a58
0802 
0803 #define MC_SEQ_MISC7                                    0x2a64
0804 
0805 #define MC_SEQ_RAS_TIMING_LP                            0x2a6c
0806 #define MC_SEQ_CAS_TIMING_LP                            0x2a70
0807 #define MC_SEQ_MISC_TIMING_LP                           0x2a74
0808 #define MC_SEQ_MISC_TIMING2_LP                          0x2a78
0809 #define MC_SEQ_WR_CTL_D0_LP                             0x2a7c
0810 #define MC_SEQ_WR_CTL_D1_LP                             0x2a80
0811 #define MC_SEQ_PMG_CMD_EMRS_LP                          0x2a84
0812 #define MC_SEQ_PMG_CMD_MRS_LP                           0x2a88
0813 
0814 #define MC_PMG_CMD_MRS                                  0x2aac
0815 
0816 #define MC_SEQ_RD_CTL_D0_LP                             0x2b1c
0817 #define MC_SEQ_RD_CTL_D1_LP                             0x2b20
0818 
0819 #define MC_PMG_CMD_MRS1                                 0x2b44
0820 #define MC_SEQ_PMG_CMD_MRS1_LP                          0x2b48
0821 #define MC_SEQ_PMG_TIMING_LP                            0x2b4c
0822 
0823 #define MC_PMG_CMD_MRS2                                 0x2b5c
0824 #define MC_SEQ_PMG_CMD_MRS2_LP                          0x2b60
0825 
0826 #define AUX_CONTROL                 0x6200
0827 #define     AUX_EN                  (1 << 0)
0828 #define     AUX_LS_READ_EN              (1 << 8)
0829 #define     AUX_LS_UPDATE_DISABLE(x)        (((x) & 0x1) << 12)
0830 #define     AUX_HPD_DISCON(x)           (((x) & 0x1) << 16)
0831 #define     AUX_DET_EN              (1 << 18)
0832 #define     AUX_HPD_SEL(x)              (((x) & 0x7) << 20)
0833 #define     AUX_IMPCAL_REQ_EN           (1 << 24)
0834 #define     AUX_TEST_MODE               (1 << 28)
0835 #define     AUX_DEGLITCH_EN             (1 << 29)
0836 #define AUX_SW_CONTROL                  0x6204
0837 #define     AUX_SW_GO               (1 << 0)
0838 #define     AUX_LS_READ_TRIG            (1 << 2)
0839 #define     AUX_SW_START_DELAY(x)           (((x) & 0xf) << 4)
0840 #define     AUX_SW_WR_BYTES(x)          (((x) & 0x1f) << 16)
0841 
0842 #define AUX_SW_INTERRUPT_CONTROL            0x620c
0843 #define     AUX_SW_DONE_INT             (1 << 0)
0844 #define     AUX_SW_DONE_ACK             (1 << 1)
0845 #define     AUX_SW_DONE_MASK            (1 << 2)
0846 #define     AUX_SW_LS_DONE_INT          (1 << 4)
0847 #define     AUX_SW_LS_DONE_MASK         (1 << 6)
0848 #define AUX_SW_STATUS                   0x6210
0849 #define     AUX_SW_DONE             (1 << 0)
0850 #define     AUX_SW_REQ              (1 << 1)
0851 #define     AUX_SW_RX_TIMEOUT_STATE(x)      (((x) & 0x7) << 4)
0852 #define     AUX_SW_RX_TIMEOUT           (1 << 7)
0853 #define     AUX_SW_RX_OVERFLOW          (1 << 8)
0854 #define     AUX_SW_RX_HPD_DISCON            (1 << 9)
0855 #define     AUX_SW_RX_PARTIAL_BYTE          (1 << 10)
0856 #define     AUX_SW_NON_AUX_MODE         (1 << 11)
0857 #define     AUX_SW_RX_MIN_COUNT_VIOL        (1 << 12)
0858 #define     AUX_SW_RX_INVALID_STOP          (1 << 14)
0859 #define     AUX_SW_RX_SYNC_INVALID_L        (1 << 17)
0860 #define     AUX_SW_RX_SYNC_INVALID_H        (1 << 18)
0861 #define     AUX_SW_RX_INVALID_START         (1 << 19)
0862 #define     AUX_SW_RX_RECV_NO_DET           (1 << 20)
0863 #define     AUX_SW_RX_RECV_INVALID_H        (1 << 22)
0864 #define     AUX_SW_RX_RECV_INVALID_V        (1 << 23)
0865 
0866 #define AUX_SW_DATA                 0x6218
0867 #define AUX_SW_DATA_RW                  (1 << 0)
0868 #define AUX_SW_DATA_MASK(x)             (((x) & 0xff) << 8)
0869 #define AUX_SW_DATA_INDEX(x)                (((x) & 0x1f) << 16)
0870 #define AUX_SW_AUTOINCREMENT_DISABLE            (1 << 31)
0871 
0872 #define LB_SYNC_RESET_SEL               0x6b28
0873 #define     LB_SYNC_RESET_SEL_MASK          (3 << 0)
0874 #define     LB_SYNC_RESET_SEL_SHIFT         0
0875 
0876 #define DC_STUTTER_CNTL                 0x6b30
0877 #define     DC_STUTTER_ENABLE_A         (1 << 0)
0878 #define     DC_STUTTER_ENABLE_B         (1 << 1)
0879 
0880 #define SQ_CAC_THRESHOLD                                0x8e4c
0881 #define     VSP(x)                  ((x) << 0)
0882 #define     VSP_MASK                (0xff << 0)
0883 #define     VSP_SHIFT               0
0884 #define     VSP0(x)                 ((x) << 8)
0885 #define     VSP0_MASK               (0xff << 8)
0886 #define     VSP0_SHIFT              8
0887 #define     GPR(x)                  ((x) << 16)
0888 #define     GPR_MASK                (0xff << 16)
0889 #define     GPR_SHIFT               16
0890 
0891 #define SQ_POWER_THROTTLE                               0x8e58
0892 #define     MIN_POWER(x)                ((x) << 0)
0893 #define     MIN_POWER_MASK              (0x3fff << 0)
0894 #define     MIN_POWER_SHIFT             0
0895 #define     MAX_POWER(x)                ((x) << 16)
0896 #define     MAX_POWER_MASK              (0x3fff << 16)
0897 #define     MAX_POWER_SHIFT             0
0898 #define SQ_POWER_THROTTLE2                              0x8e5c
0899 #define     MAX_POWER_DELTA(x)          ((x) << 0)
0900 #define     MAX_POWER_DELTA_MASK            (0x3fff << 0)
0901 #define     MAX_POWER_DELTA_SHIFT           0
0902 #define     STI_SIZE(x)             ((x) << 16)
0903 #define     STI_SIZE_MASK               (0x3ff << 16)
0904 #define     STI_SIZE_SHIFT              16
0905 #define     LTI_RATIO(x)                ((x) << 27)
0906 #define     LTI_RATIO_MASK              (0xf << 27)
0907 #define     LTI_RATIO_SHIFT             27
0908 
0909 /* CG indirect registers */
0910 #define CG_CAC_REGION_1_WEIGHT_0                        0x83
0911 #define     WEIGHT_TCP_SIG0(x)          ((x) << 0)
0912 #define     WEIGHT_TCP_SIG0_MASK            (0x3f << 0)
0913 #define     WEIGHT_TCP_SIG0_SHIFT           0
0914 #define     WEIGHT_TCP_SIG1(x)          ((x) << 6)
0915 #define     WEIGHT_TCP_SIG1_MASK            (0x3f << 6)
0916 #define     WEIGHT_TCP_SIG1_SHIFT           6
0917 #define     WEIGHT_TA_SIG(x)            ((x) << 12)
0918 #define     WEIGHT_TA_SIG_MASK          (0x3f << 12)
0919 #define     WEIGHT_TA_SIG_SHIFT         12
0920 #define CG_CAC_REGION_1_WEIGHT_1                        0x84
0921 #define     WEIGHT_TCC_EN0(x)           ((x) << 0)
0922 #define     WEIGHT_TCC_EN0_MASK         (0x3f << 0)
0923 #define     WEIGHT_TCC_EN0_SHIFT            0
0924 #define     WEIGHT_TCC_EN1(x)           ((x) << 6)
0925 #define     WEIGHT_TCC_EN1_MASK         (0x3f << 6)
0926 #define     WEIGHT_TCC_EN1_SHIFT            6
0927 #define     WEIGHT_TCC_EN2(x)           ((x) << 12)
0928 #define     WEIGHT_TCC_EN2_MASK         (0x3f << 12)
0929 #define     WEIGHT_TCC_EN2_SHIFT            12
0930 #define     WEIGHT_TCC_EN3(x)           ((x) << 18)
0931 #define     WEIGHT_TCC_EN3_MASK         (0x3f << 18)
0932 #define     WEIGHT_TCC_EN3_SHIFT            18
0933 #define CG_CAC_REGION_2_WEIGHT_0                        0x85
0934 #define     WEIGHT_CB_EN0(x)            ((x) << 0)
0935 #define     WEIGHT_CB_EN0_MASK          (0x3f << 0)
0936 #define     WEIGHT_CB_EN0_SHIFT         0
0937 #define     WEIGHT_CB_EN1(x)            ((x) << 6)
0938 #define     WEIGHT_CB_EN1_MASK          (0x3f << 6)
0939 #define     WEIGHT_CB_EN1_SHIFT         6
0940 #define     WEIGHT_CB_EN2(x)            ((x) << 12)
0941 #define     WEIGHT_CB_EN2_MASK          (0x3f << 12)
0942 #define     WEIGHT_CB_EN2_SHIFT         12
0943 #define     WEIGHT_CB_EN3(x)            ((x) << 18)
0944 #define     WEIGHT_CB_EN3_MASK          (0x3f << 18)
0945 #define     WEIGHT_CB_EN3_SHIFT         18
0946 #define CG_CAC_REGION_2_WEIGHT_1                        0x86
0947 #define     WEIGHT_DB_SIG0(x)           ((x) << 0)
0948 #define     WEIGHT_DB_SIG0_MASK         (0x3f << 0)
0949 #define     WEIGHT_DB_SIG0_SHIFT            0
0950 #define     WEIGHT_DB_SIG1(x)           ((x) << 6)
0951 #define     WEIGHT_DB_SIG1_MASK         (0x3f << 6)
0952 #define     WEIGHT_DB_SIG1_SHIFT            6
0953 #define     WEIGHT_DB_SIG2(x)           ((x) << 12)
0954 #define     WEIGHT_DB_SIG2_MASK         (0x3f << 12)
0955 #define     WEIGHT_DB_SIG2_SHIFT            12
0956 #define     WEIGHT_DB_SIG3(x)           ((x) << 18)
0957 #define     WEIGHT_DB_SIG3_MASK         (0x3f << 18)
0958 #define     WEIGHT_DB_SIG3_SHIFT            18
0959 #define CG_CAC_REGION_2_WEIGHT_2                        0x87
0960 #define     WEIGHT_SXM_SIG0(x)          ((x) << 0)
0961 #define     WEIGHT_SXM_SIG0_MASK            (0x3f << 0)
0962 #define     WEIGHT_SXM_SIG0_SHIFT           0
0963 #define     WEIGHT_SXM_SIG1(x)          ((x) << 6)
0964 #define     WEIGHT_SXM_SIG1_MASK            (0x3f << 6)
0965 #define     WEIGHT_SXM_SIG1_SHIFT           6
0966 #define     WEIGHT_SXM_SIG2(x)          ((x) << 12)
0967 #define     WEIGHT_SXM_SIG2_MASK            (0x3f << 12)
0968 #define     WEIGHT_SXM_SIG2_SHIFT           12
0969 #define     WEIGHT_SXS_SIG0(x)          ((x) << 18)
0970 #define     WEIGHT_SXS_SIG0_MASK            (0x3f << 18)
0971 #define     WEIGHT_SXS_SIG0_SHIFT           18
0972 #define     WEIGHT_SXS_SIG1(x)          ((x) << 24)
0973 #define     WEIGHT_SXS_SIG1_MASK            (0x3f << 24)
0974 #define     WEIGHT_SXS_SIG1_SHIFT           24
0975 #define CG_CAC_REGION_3_WEIGHT_0                        0x88
0976 #define     WEIGHT_XBR_0(x)             ((x) << 0)
0977 #define     WEIGHT_XBR_0_MASK           (0x3f << 0)
0978 #define     WEIGHT_XBR_0_SHIFT          0
0979 #define     WEIGHT_XBR_1(x)             ((x) << 6)
0980 #define     WEIGHT_XBR_1_MASK           (0x3f << 6)
0981 #define     WEIGHT_XBR_1_SHIFT          6
0982 #define     WEIGHT_XBR_2(x)             ((x) << 12)
0983 #define     WEIGHT_XBR_2_MASK           (0x3f << 12)
0984 #define     WEIGHT_XBR_2_SHIFT          12
0985 #define     WEIGHT_SPI_SIG0(x)          ((x) << 18)
0986 #define     WEIGHT_SPI_SIG0_MASK            (0x3f << 18)
0987 #define     WEIGHT_SPI_SIG0_SHIFT           18
0988 #define CG_CAC_REGION_3_WEIGHT_1                        0x89
0989 #define     WEIGHT_SPI_SIG1(x)          ((x) << 0)
0990 #define     WEIGHT_SPI_SIG1_MASK            (0x3f << 0)
0991 #define     WEIGHT_SPI_SIG1_SHIFT           0
0992 #define     WEIGHT_SPI_SIG2(x)          ((x) << 6)
0993 #define     WEIGHT_SPI_SIG2_MASK            (0x3f << 6)
0994 #define     WEIGHT_SPI_SIG2_SHIFT           6
0995 #define     WEIGHT_SPI_SIG3(x)          ((x) << 12)
0996 #define     WEIGHT_SPI_SIG3_MASK            (0x3f << 12)
0997 #define     WEIGHT_SPI_SIG3_SHIFT           12
0998 #define     WEIGHT_SPI_SIG4(x)          ((x) << 18)
0999 #define     WEIGHT_SPI_SIG4_MASK            (0x3f << 18)
1000 #define     WEIGHT_SPI_SIG4_SHIFT           18
1001 #define     WEIGHT_SPI_SIG5(x)          ((x) << 24)
1002 #define     WEIGHT_SPI_SIG5_MASK            (0x3f << 24)
1003 #define     WEIGHT_SPI_SIG5_SHIFT           24
1004 #define CG_CAC_REGION_4_WEIGHT_0                        0x8a
1005 #define     WEIGHT_LDS_SIG0(x)          ((x) << 0)
1006 #define     WEIGHT_LDS_SIG0_MASK            (0x3f << 0)
1007 #define     WEIGHT_LDS_SIG0_SHIFT           0
1008 #define     WEIGHT_LDS_SIG1(x)          ((x) << 6)
1009 #define     WEIGHT_LDS_SIG1_MASK            (0x3f << 6)
1010 #define     WEIGHT_LDS_SIG1_SHIFT           6
1011 #define     WEIGHT_SC(x)                ((x) << 24)
1012 #define     WEIGHT_SC_MASK              (0x3f << 24)
1013 #define     WEIGHT_SC_SHIFT             24
1014 #define CG_CAC_REGION_4_WEIGHT_1                        0x8b
1015 #define     WEIGHT_BIF(x)               ((x) << 0)
1016 #define     WEIGHT_BIF_MASK             (0x3f << 0)
1017 #define     WEIGHT_BIF_SHIFT            0
1018 #define     WEIGHT_CP(x)                ((x) << 6)
1019 #define     WEIGHT_CP_MASK              (0x3f << 6)
1020 #define     WEIGHT_CP_SHIFT             6
1021 #define     WEIGHT_PA_SIG0(x)           ((x) << 12)
1022 #define     WEIGHT_PA_SIG0_MASK         (0x3f << 12)
1023 #define     WEIGHT_PA_SIG0_SHIFT            12
1024 #define     WEIGHT_PA_SIG1(x)           ((x) << 18)
1025 #define     WEIGHT_PA_SIG1_MASK         (0x3f << 18)
1026 #define     WEIGHT_PA_SIG1_SHIFT            18
1027 #define     WEIGHT_VGT_SIG0(x)          ((x) << 24)
1028 #define     WEIGHT_VGT_SIG0_MASK            (0x3f << 24)
1029 #define     WEIGHT_VGT_SIG0_SHIFT           24
1030 #define CG_CAC_REGION_4_WEIGHT_2                        0x8c
1031 #define     WEIGHT_VGT_SIG1(x)          ((x) << 0)
1032 #define     WEIGHT_VGT_SIG1_MASK            (0x3f << 0)
1033 #define     WEIGHT_VGT_SIG1_SHIFT           0
1034 #define     WEIGHT_VGT_SIG2(x)          ((x) << 6)
1035 #define     WEIGHT_VGT_SIG2_MASK            (0x3f << 6)
1036 #define     WEIGHT_VGT_SIG2_SHIFT           6
1037 #define     WEIGHT_DC_SIG0(x)           ((x) << 12)
1038 #define     WEIGHT_DC_SIG0_MASK         (0x3f << 12)
1039 #define     WEIGHT_DC_SIG0_SHIFT            12
1040 #define     WEIGHT_DC_SIG1(x)           ((x) << 18)
1041 #define     WEIGHT_DC_SIG1_MASK         (0x3f << 18)
1042 #define     WEIGHT_DC_SIG1_SHIFT            18
1043 #define     WEIGHT_DC_SIG2(x)           ((x) << 24)
1044 #define     WEIGHT_DC_SIG2_MASK         (0x3f << 24)
1045 #define     WEIGHT_DC_SIG2_SHIFT            24
1046 #define CG_CAC_REGION_4_WEIGHT_3                        0x8d
1047 #define     WEIGHT_DC_SIG3(x)           ((x) << 0)
1048 #define     WEIGHT_DC_SIG3_MASK         (0x3f << 0)
1049 #define     WEIGHT_DC_SIG3_SHIFT            0
1050 #define     WEIGHT_UVD_SIG0(x)          ((x) << 6)
1051 #define     WEIGHT_UVD_SIG0_MASK            (0x3f << 6)
1052 #define     WEIGHT_UVD_SIG0_SHIFT           6
1053 #define     WEIGHT_UVD_SIG1(x)          ((x) << 12)
1054 #define     WEIGHT_UVD_SIG1_MASK            (0x3f << 12)
1055 #define     WEIGHT_UVD_SIG1_SHIFT           12
1056 #define     WEIGHT_SPARE0(x)            ((x) << 18)
1057 #define     WEIGHT_SPARE0_MASK          (0x3f << 18)
1058 #define     WEIGHT_SPARE0_SHIFT         18
1059 #define     WEIGHT_SPARE1(x)            ((x) << 24)
1060 #define     WEIGHT_SPARE1_MASK          (0x3f << 24)
1061 #define     WEIGHT_SPARE1_SHIFT         24
1062 #define CG_CAC_REGION_5_WEIGHT_0                        0x8e
1063 #define     WEIGHT_SQ_VSP(x)            ((x) << 0)
1064 #define     WEIGHT_SQ_VSP_MASK          (0x3fff << 0)
1065 #define     WEIGHT_SQ_VSP_SHIFT         0
1066 #define     WEIGHT_SQ_VSP0(x)           ((x) << 14)
1067 #define     WEIGHT_SQ_VSP0_MASK         (0x3fff << 14)
1068 #define     WEIGHT_SQ_VSP0_SHIFT            14
1069 #define CG_CAC_REGION_4_OVERRIDE_4                      0xab
1070 #define     OVR_MODE_SPARE_0(x)         ((x) << 16)
1071 #define     OVR_MODE_SPARE_0_MASK           (0x1 << 16)
1072 #define     OVR_MODE_SPARE_0_SHIFT          16
1073 #define     OVR_VAL_SPARE_0(x)          ((x) << 17)
1074 #define     OVR_VAL_SPARE_0_MASK            (0x1 << 17)
1075 #define     OVR_VAL_SPARE_0_SHIFT           17
1076 #define     OVR_MODE_SPARE_1(x)         ((x) << 18)
1077 #define     OVR_MODE_SPARE_1_MASK           (0x3f << 18)
1078 #define     OVR_MODE_SPARE_1_SHIFT          18
1079 #define     OVR_VAL_SPARE_1(x)          ((x) << 19)
1080 #define     OVR_VAL_SPARE_1_MASK            (0x3f << 19)
1081 #define     OVR_VAL_SPARE_1_SHIFT           19
1082 #define CG_CAC_REGION_5_WEIGHT_1                        0xb7
1083 #define     WEIGHT_SQ_GPR(x)            ((x) << 0)
1084 #define     WEIGHT_SQ_GPR_MASK          (0x3fff << 0)
1085 #define     WEIGHT_SQ_GPR_SHIFT         0
1086 #define     WEIGHT_SQ_LDS(x)            ((x) << 14)
1087 #define     WEIGHT_SQ_LDS_MASK          (0x3fff << 14)
1088 #define     WEIGHT_SQ_LDS_SHIFT         14
1089 
1090 /* PCIE link stuff */
1091 #define PCIE_LC_TRAINING_CNTL                             0xa1 /* PCIE_P */
1092 #define PCIE_LC_LINK_WIDTH_CNTL                           0xa2 /* PCIE_P */
1093 #       define LC_LINK_WIDTH_SHIFT                        0
1094 #       define LC_LINK_WIDTH_MASK                         0x7
1095 #       define LC_LINK_WIDTH_X0                           0
1096 #       define LC_LINK_WIDTH_X1                           1
1097 #       define LC_LINK_WIDTH_X2                           2
1098 #       define LC_LINK_WIDTH_X4                           3
1099 #       define LC_LINK_WIDTH_X8                           4
1100 #       define LC_LINK_WIDTH_X16                          6
1101 #       define LC_LINK_WIDTH_RD_SHIFT                     4
1102 #       define LC_LINK_WIDTH_RD_MASK                      0x70
1103 #       define LC_RECONFIG_ARC_MISSING_ESCAPE             (1 << 7)
1104 #       define LC_RECONFIG_NOW                            (1 << 8)
1105 #       define LC_RENEGOTIATION_SUPPORT                   (1 << 9)
1106 #       define LC_RENEGOTIATE_EN                          (1 << 10)
1107 #       define LC_SHORT_RECONFIG_EN                       (1 << 11)
1108 #       define LC_UPCONFIGURE_SUPPORT                     (1 << 12)
1109 #       define LC_UPCONFIGURE_DIS                         (1 << 13)
1110 #define PCIE_LC_SPEED_CNTL                                0xa4 /* PCIE_P */
1111 #       define LC_GEN2_EN_STRAP                           (1 << 0)
1112 #       define LC_TARGET_LINK_SPEED_OVERRIDE_EN           (1 << 1)
1113 #       define LC_FORCE_EN_HW_SPEED_CHANGE                (1 << 5)
1114 #       define LC_FORCE_DIS_HW_SPEED_CHANGE               (1 << 6)
1115 #       define LC_SPEED_CHANGE_ATTEMPTS_ALLOWED_MASK      (0x3 << 8)
1116 #       define LC_SPEED_CHANGE_ATTEMPTS_ALLOWED_SHIFT     3
1117 #       define LC_CURRENT_DATA_RATE                       (1 << 11)
1118 #       define LC_HW_VOLTAGE_IF_CONTROL(x)                ((x) << 12)
1119 #       define LC_HW_VOLTAGE_IF_CONTROL_MASK              (3 << 12)
1120 #       define LC_HW_VOLTAGE_IF_CONTROL_SHIFT             12
1121 #       define LC_VOLTAGE_TIMER_SEL_MASK                  (0xf << 14)
1122 #       define LC_CLR_FAILED_SPD_CHANGE_CNT               (1 << 21)
1123 #       define LC_OTHER_SIDE_EVER_SENT_GEN2               (1 << 23)
1124 #       define LC_OTHER_SIDE_SUPPORTS_GEN2                (1 << 24)
1125 #define MM_CFGREGS_CNTL                                   0x544c
1126 #       define MM_WR_TO_CFG_EN                            (1 << 3)
1127 #define LINK_CNTL2                                        0x88 /* F0 */
1128 #       define TARGET_LINK_SPEED_MASK                     (0xf << 0)
1129 #       define SELECTABLE_DEEMPHASIS                      (1 << 6)
1130 
1131 /*
1132  * UVD
1133  */
1134 #define UVD_SEMA_ADDR_LOW               0xEF00
1135 #define UVD_SEMA_ADDR_HIGH              0xEF04
1136 #define UVD_SEMA_CMD                    0xEF08
1137 #define UVD_UDEC_ADDR_CONFIG                0xEF4C
1138 #define UVD_UDEC_DB_ADDR_CONFIG             0xEF50
1139 #define UVD_UDEC_DBW_ADDR_CONFIG            0xEF54
1140 #define UVD_NO_OP                   0xEFFC
1141 #define UVD_RBC_RB_RPTR                 0xF690
1142 #define UVD_RBC_RB_WPTR                 0xF694
1143 #define UVD_STATUS                  0xf6bc
1144 
1145 /*
1146  * PM4
1147  */
1148 #define PACKET0(reg, n) ((RADEON_PACKET_TYPE0 << 30) |          \
1149              (((reg) >> 2) & 0xFFFF) |          \
1150              ((n) & 0x3FFF) << 16)
1151 #define CP_PACKET2          0x80000000
1152 #define     PACKET2_PAD_SHIFT       0
1153 #define     PACKET2_PAD_MASK        (0x3fffffff << 0)
1154 
1155 #define PACKET2(v)  (CP_PACKET2 | REG_SET(PACKET2_PAD, (v)))
1156 
1157 #define PACKET3(op, n)  ((RADEON_PACKET_TYPE3 << 30) |          \
1158              (((op) & 0xFF) << 8) |             \
1159              ((n) & 0x3FFF) << 16)
1160 
1161 /* Packet 3 types */
1162 #define PACKET3_NOP                 0x10
1163 #define PACKET3_SET_BASE                0x11
1164 #define PACKET3_CLEAR_STATE             0x12
1165 #define PACKET3_INDEX_BUFFER_SIZE           0x13
1166 #define PACKET3_DEALLOC_STATE               0x14
1167 #define PACKET3_DISPATCH_DIRECT             0x15
1168 #define PACKET3_DISPATCH_INDIRECT           0x16
1169 #define PACKET3_INDIRECT_BUFFER_END         0x17
1170 #define PACKET3_MODE_CONTROL                0x18
1171 #define PACKET3_SET_PREDICATION             0x20
1172 #define PACKET3_REG_RMW                 0x21
1173 #define PACKET3_COND_EXEC               0x22
1174 #define PACKET3_PRED_EXEC               0x23
1175 #define PACKET3_DRAW_INDIRECT               0x24
1176 #define PACKET3_DRAW_INDEX_INDIRECT         0x25
1177 #define PACKET3_INDEX_BASE              0x26
1178 #define PACKET3_DRAW_INDEX_2                0x27
1179 #define PACKET3_CONTEXT_CONTROL             0x28
1180 #define PACKET3_DRAW_INDEX_OFFSET           0x29
1181 #define PACKET3_INDEX_TYPE              0x2A
1182 #define PACKET3_DRAW_INDEX              0x2B
1183 #define PACKET3_DRAW_INDEX_AUTO             0x2D
1184 #define PACKET3_DRAW_INDEX_IMMD             0x2E
1185 #define PACKET3_NUM_INSTANCES               0x2F
1186 #define PACKET3_DRAW_INDEX_MULTI_AUTO           0x30
1187 #define PACKET3_INDIRECT_BUFFER             0x32
1188 #define PACKET3_STRMOUT_BUFFER_UPDATE           0x34
1189 #define PACKET3_DRAW_INDEX_OFFSET_2         0x35
1190 #define PACKET3_DRAW_INDEX_MULTI_ELEMENT        0x36
1191 #define PACKET3_WRITE_DATA              0x37
1192 #define PACKET3_MEM_SEMAPHORE               0x39
1193 #define PACKET3_MPEG_INDEX              0x3A
1194 #define PACKET3_WAIT_REG_MEM                0x3C
1195 #define     WAIT_REG_MEM_FUNCTION(x)                ((x) << 0)
1196                 /* 0 - always
1197          * 1 - <
1198          * 2 - <=
1199          * 3 - ==
1200          * 4 - !=
1201          * 5 - >=
1202          * 6 - >
1203          */
1204 #define     WAIT_REG_MEM_MEM_SPACE(x)               ((x) << 4)
1205                 /* 0 - reg
1206          * 1 - mem
1207          */
1208 #define     WAIT_REG_MEM_ENGINE(x)                  ((x) << 8)
1209                 /* 0 - me
1210          * 1 - pfp
1211          */
1212 #define PACKET3_MEM_WRITE               0x3D
1213 #define PACKET3_PFP_SYNC_ME             0x42
1214 #define PACKET3_SURFACE_SYNC                0x43
1215 #              define PACKET3_CB0_DEST_BASE_ENA    (1 << 6)
1216 #              define PACKET3_CB1_DEST_BASE_ENA    (1 << 7)
1217 #              define PACKET3_CB2_DEST_BASE_ENA    (1 << 8)
1218 #              define PACKET3_CB3_DEST_BASE_ENA    (1 << 9)
1219 #              define PACKET3_CB4_DEST_BASE_ENA    (1 << 10)
1220 #              define PACKET3_CB5_DEST_BASE_ENA    (1 << 11)
1221 #              define PACKET3_CB6_DEST_BASE_ENA    (1 << 12)
1222 #              define PACKET3_CB7_DEST_BASE_ENA    (1 << 13)
1223 #              define PACKET3_DB_DEST_BASE_ENA     (1 << 14)
1224 #              define PACKET3_CB8_DEST_BASE_ENA    (1 << 15)
1225 #              define PACKET3_CB9_DEST_BASE_ENA    (1 << 16)
1226 #              define PACKET3_CB10_DEST_BASE_ENA   (1 << 17)
1227 #              define PACKET3_CB11_DEST_BASE_ENA   (1 << 18)
1228 #              define PACKET3_FULL_CACHE_ENA       (1 << 20)
1229 #              define PACKET3_TC_ACTION_ENA        (1 << 23)
1230 #              define PACKET3_CB_ACTION_ENA        (1 << 25)
1231 #              define PACKET3_DB_ACTION_ENA        (1 << 26)
1232 #              define PACKET3_SH_ACTION_ENA        (1 << 27)
1233 #              define PACKET3_SX_ACTION_ENA        (1 << 28)
1234 #              define PACKET3_ENGINE_ME            (1 << 31)
1235 #define PACKET3_ME_INITIALIZE               0x44
1236 #define     PACKET3_ME_INITIALIZE_DEVICE_ID(x) ((x) << 16)
1237 #define PACKET3_COND_WRITE              0x45
1238 #define PACKET3_EVENT_WRITE             0x46
1239 #define     EVENT_TYPE(x)                           ((x) << 0)
1240 #define     EVENT_INDEX(x)                          ((x) << 8)
1241                 /* 0 - any non-TS event
1242          * 1 - ZPASS_DONE
1243          * 2 - SAMPLE_PIPELINESTAT
1244          * 3 - SAMPLE_STREAMOUTSTAT*
1245          * 4 - *S_PARTIAL_FLUSH
1246          * 5 - TS events
1247          */
1248 #define PACKET3_EVENT_WRITE_EOP             0x47
1249 #define     DATA_SEL(x)                             ((x) << 29)
1250                 /* 0 - discard
1251          * 1 - send low 32bit data
1252          * 2 - send 64bit data
1253          * 3 - send 64bit counter value
1254          */
1255 #define     INT_SEL(x)                              ((x) << 24)
1256                 /* 0 - none
1257          * 1 - interrupt only (DATA_SEL = 0)
1258          * 2 - interrupt when data write is confirmed
1259          */
1260 #define PACKET3_EVENT_WRITE_EOS             0x48
1261 #define PACKET3_PREAMBLE_CNTL               0x4A
1262 #              define PACKET3_PREAMBLE_BEGIN_CLEAR_STATE     (2 << 28)
1263 #              define PACKET3_PREAMBLE_END_CLEAR_STATE       (3 << 28)
1264 #define PACKET3_ALU_PS_CONST_BUFFER_COPY        0x4C
1265 #define PACKET3_ALU_VS_CONST_BUFFER_COPY        0x4D
1266 #define PACKET3_ALU_PS_CONST_UPDATE             0x4E
1267 #define PACKET3_ALU_VS_CONST_UPDATE             0x4F
1268 #define PACKET3_ONE_REG_WRITE               0x57
1269 #define PACKET3_SET_CONFIG_REG              0x68
1270 #define     PACKET3_SET_CONFIG_REG_START            0x00008000
1271 #define     PACKET3_SET_CONFIG_REG_END          0x0000ac00
1272 #define PACKET3_SET_CONTEXT_REG             0x69
1273 #define     PACKET3_SET_CONTEXT_REG_START           0x00028000
1274 #define     PACKET3_SET_CONTEXT_REG_END         0x00029000
1275 #define PACKET3_SET_ALU_CONST               0x6A
1276 /* alu const buffers only; no reg file */
1277 #define PACKET3_SET_BOOL_CONST              0x6B
1278 #define     PACKET3_SET_BOOL_CONST_START            0x0003a500
1279 #define     PACKET3_SET_BOOL_CONST_END          0x0003a518
1280 #define PACKET3_SET_LOOP_CONST              0x6C
1281 #define     PACKET3_SET_LOOP_CONST_START            0x0003a200
1282 #define     PACKET3_SET_LOOP_CONST_END          0x0003a500
1283 #define PACKET3_SET_RESOURCE                0x6D
1284 #define     PACKET3_SET_RESOURCE_START          0x00030000
1285 #define     PACKET3_SET_RESOURCE_END            0x00038000
1286 #define PACKET3_SET_SAMPLER             0x6E
1287 #define     PACKET3_SET_SAMPLER_START           0x0003c000
1288 #define     PACKET3_SET_SAMPLER_END             0x0003c600
1289 #define PACKET3_SET_CTL_CONST               0x6F
1290 #define     PACKET3_SET_CTL_CONST_START         0x0003cff0
1291 #define     PACKET3_SET_CTL_CONST_END           0x0003ff0c
1292 #define PACKET3_SET_RESOURCE_OFFSET         0x70
1293 #define PACKET3_SET_ALU_CONST_VS            0x71
1294 #define PACKET3_SET_ALU_CONST_DI            0x72
1295 #define PACKET3_SET_CONTEXT_REG_INDIRECT        0x73
1296 #define PACKET3_SET_RESOURCE_INDIRECT           0x74
1297 #define PACKET3_SET_APPEND_CNT                  0x75
1298 #define PACKET3_ME_WRITE                0x7A
1299 
1300 /* ASYNC DMA - first instance at 0xd000, second at 0xd800 */
1301 #define DMA0_REGISTER_OFFSET                              0x0 /* not a register */
1302 #define DMA1_REGISTER_OFFSET                              0x800 /* not a register */
1303 
1304 #define DMA_RB_CNTL                                       0xd000
1305 #       define DMA_RB_ENABLE                              (1 << 0)
1306 #       define DMA_RB_SIZE(x)                             ((x) << 1) /* log2 */
1307 #       define DMA_RB_SWAP_ENABLE                         (1 << 9) /* 8IN32 */
1308 #       define DMA_RPTR_WRITEBACK_ENABLE                  (1 << 12)
1309 #       define DMA_RPTR_WRITEBACK_SWAP_ENABLE             (1 << 13)  /* 8IN32 */
1310 #       define DMA_RPTR_WRITEBACK_TIMER(x)                ((x) << 16) /* log2 */
1311 #define DMA_RB_BASE                                       0xd004
1312 #define DMA_RB_RPTR                                       0xd008
1313 #define DMA_RB_WPTR                                       0xd00c
1314 
1315 #define DMA_RB_RPTR_ADDR_HI                               0xd01c
1316 #define DMA_RB_RPTR_ADDR_LO                               0xd020
1317 
1318 #define DMA_IB_CNTL                                       0xd024
1319 #       define DMA_IB_ENABLE                              (1 << 0)
1320 #       define DMA_IB_SWAP_ENABLE                         (1 << 4)
1321 #       define CMD_VMID_FORCE                             (1 << 31)
1322 #define DMA_IB_RPTR                                       0xd028
1323 #define DMA_CNTL                                          0xd02c
1324 #       define TRAP_ENABLE                                (1 << 0)
1325 #       define SEM_INCOMPLETE_INT_ENABLE                  (1 << 1)
1326 #       define SEM_WAIT_INT_ENABLE                        (1 << 2)
1327 #       define DATA_SWAP_ENABLE                           (1 << 3)
1328 #       define FENCE_SWAP_ENABLE                          (1 << 4)
1329 #       define CTXEMPTY_INT_ENABLE                        (1 << 28)
1330 #define DMA_STATUS_REG                                    0xd034
1331 #       define DMA_IDLE                                   (1 << 0)
1332 #define DMA_SEM_INCOMPLETE_TIMER_CNTL                     0xd044
1333 #define DMA_SEM_WAIT_FAIL_TIMER_CNTL                      0xd048
1334 #define DMA_TILING_CONFIG                 0xd0b8
1335 #define DMA_MODE                                          0xd0bc
1336 
1337 #define DMA_PACKET(cmd, t, s, n)    ((((cmd) & 0xF) << 28) |    \
1338                      (((t) & 0x1) << 23) |      \
1339                      (((s) & 0x1) << 22) |      \
1340                      (((n) & 0xFFFFF) << 0))
1341 
1342 #define DMA_IB_PACKET(cmd, vmid, n) ((((cmd) & 0xF) << 28) |    \
1343                      (((vmid) & 0xF) << 20) |   \
1344                      (((n) & 0xFFFFF) << 0))
1345 
1346 #define DMA_PTE_PDE_PACKET(n)       ((2 << 28) |            \
1347                      (1 << 26) |            \
1348                      (1 << 21) |            \
1349                      (((n) & 0xFFFFF) << 0))
1350 
1351 #define DMA_SRBM_POLL_PACKET        ((9 << 28) |            \
1352                      (1 << 27) |            \
1353                      (1 << 26))
1354 
1355 #define DMA_SRBM_READ_PACKET        ((9 << 28) |            \
1356                      (1 << 27))
1357 
1358 /* async DMA Packet types */
1359 #define DMA_PACKET_WRITE                  0x2
1360 #define DMA_PACKET_COPY                   0x3
1361 #define DMA_PACKET_INDIRECT_BUFFER            0x4
1362 #define DMA_PACKET_SEMAPHORE                  0x5
1363 #define DMA_PACKET_FENCE                  0x6
1364 #define DMA_PACKET_TRAP                   0x7
1365 #define DMA_PACKET_SRBM_WRITE                 0x9
1366 #define DMA_PACKET_CONSTANT_FILL              0xd
1367 #define DMA_PACKET_NOP                    0xf
1368 
1369 #endif