LCOV - code coverage report
Current view: top level - drivers/gpu/drm/amd/amdgpu - gfx_v10_0.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 3033 0.0 %
Date: 2022-12-09 01:23:36 Functions: 0 168 0.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright 2019 Advanced Micro Devices, Inc.
       3             :  *
       4             :  * Permission is hereby granted, free of charge, to any person obtaining a
       5             :  * copy of this software and associated documentation files (the "Software"),
       6             :  * to deal in the Software without restriction, including without limitation
       7             :  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
       8             :  * and/or sell copies of the Software, and to permit persons to whom the
       9             :  * Software is furnished to do so, subject to the following conditions:
      10             :  *
      11             :  * The above copyright notice and this permission notice shall be included in
      12             :  * all copies or substantial portions of the Software.
      13             :  *
      14             :  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      15             :  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      16             :  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
      17             :  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
      18             :  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
      19             :  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
      20             :  * OTHER DEALINGS IN THE SOFTWARE.
      21             :  *
      22             :  */
      23             : 
      24             : #include <linux/delay.h>
      25             : #include <linux/kernel.h>
      26             : #include <linux/firmware.h>
      27             : #include <linux/module.h>
      28             : #include <linux/pci.h>
      29             : #include "amdgpu.h"
      30             : #include "amdgpu_gfx.h"
      31             : #include "amdgpu_psp.h"
      32             : #include "nv.h"
      33             : #include "nvd.h"
      34             : 
      35             : #include "gc/gc_10_1_0_offset.h"
      36             : #include "gc/gc_10_1_0_sh_mask.h"
      37             : #include "smuio/smuio_11_0_0_offset.h"
      38             : #include "smuio/smuio_11_0_0_sh_mask.h"
      39             : #include "navi10_enum.h"
      40             : #include "ivsrcid/gfx/irqsrcs_gfx_10_1.h"
      41             : 
      42             : #include "soc15.h"
      43             : #include "soc15d.h"
      44             : #include "soc15_common.h"
      45             : #include "clearstate_gfx10.h"
      46             : #include "v10_structs.h"
      47             : #include "gfx_v10_0.h"
      48             : #include "nbio_v2_3.h"
      49             : 
      50             : /*
      51             :  * Navi10 has two graphic rings to share each graphic pipe.
      52             :  * 1. Primary ring
      53             :  * 2. Async ring
      54             :  */
      55             : #define GFX10_NUM_GFX_RINGS_NV1X        1
      56             : #define GFX10_NUM_GFX_RINGS_Sienna_Cichlid      2
      57             : #define GFX10_MEC_HPD_SIZE      2048
      58             : 
      59             : #define F32_CE_PROGRAM_RAM_SIZE         65536
      60             : #define RLCG_UCODE_LOADING_START_ADDRESS        0x00002000L
      61             : 
      62             : #define mmCGTT_GS_NGG_CLK_CTRL  0x5087
      63             : #define mmCGTT_GS_NGG_CLK_CTRL_BASE_IDX 1
      64             : #define mmCGTT_SPI_RA0_CLK_CTRL 0x507a
      65             : #define mmCGTT_SPI_RA0_CLK_CTRL_BASE_IDX 1
      66             : #define mmCGTT_SPI_RA1_CLK_CTRL 0x507b
      67             : #define mmCGTT_SPI_RA1_CLK_CTRL_BASE_IDX 1
      68             : 
      69             : #define GB_ADDR_CONFIG__NUM_PKRS__SHIFT                                                                       0x8
      70             : #define GB_ADDR_CONFIG__NUM_PKRS_MASK                                                                         0x00000700L
      71             : 
      72             : #define mmCGTS_TCC_DISABLE_gc_10_3                 0x5006
      73             : #define mmCGTS_TCC_DISABLE_gc_10_3_BASE_IDX        1
      74             : #define mmCGTS_USER_TCC_DISABLE_gc_10_3            0x5007
      75             : #define mmCGTS_USER_TCC_DISABLE_gc_10_3_BASE_IDX   1
      76             : 
      77             : #define mmCP_MEC_CNTL_Sienna_Cichlid                      0x0f55
      78             : #define mmCP_MEC_CNTL_Sienna_Cichlid_BASE_IDX             0
      79             : #define mmRLC_SAFE_MODE_Sienna_Cichlid                  0x4ca0
      80             : #define mmRLC_SAFE_MODE_Sienna_Cichlid_BASE_IDX         1
      81             : #define mmRLC_CP_SCHEDULERS_Sienna_Cichlid              0x4ca1
      82             : #define mmRLC_CP_SCHEDULERS_Sienna_Cichlid_BASE_IDX     1
      83             : #define mmSPI_CONFIG_CNTL_Sienna_Cichlid                        0x11ec
      84             : #define mmSPI_CONFIG_CNTL_Sienna_Cichlid_BASE_IDX               0
      85             : #define mmVGT_ESGS_RING_SIZE_Sienna_Cichlid             0x0fc1
      86             : #define mmVGT_ESGS_RING_SIZE_Sienna_Cichlid_BASE_IDX    0
      87             : #define mmVGT_GSVS_RING_SIZE_Sienna_Cichlid             0x0fc2
      88             : #define mmVGT_GSVS_RING_SIZE_Sienna_Cichlid_BASE_IDX    0
      89             : #define mmVGT_TF_RING_SIZE_Sienna_Cichlid                       0x0fc3
      90             : #define mmVGT_TF_RING_SIZE_Sienna_Cichlid_BASE_IDX      0
      91             : #define mmVGT_HS_OFFCHIP_PARAM_Sienna_Cichlid           0x0fc4
      92             : #define mmVGT_HS_OFFCHIP_PARAM_Sienna_Cichlid_BASE_IDX  0
      93             : #define mmVGT_TF_MEMORY_BASE_Sienna_Cichlid             0x0fc5
      94             : #define mmVGT_TF_MEMORY_BASE_Sienna_Cichlid_BASE_IDX    0
      95             : #define mmVGT_TF_MEMORY_BASE_HI_Sienna_Cichlid          0x0fc6
      96             : #define mmVGT_TF_MEMORY_BASE_HI_Sienna_Cichlid_BASE_IDX 0
      97             : #define GRBM_STATUS2__RLC_BUSY_Sienna_Cichlid__SHIFT    0x1a
      98             : #define GRBM_STATUS2__RLC_BUSY_Sienna_Cichlid_MASK      0x04000000L
      99             : #define CP_RB_DOORBELL_RANGE_LOWER__DOORBELL_RANGE_LOWER_Sienna_Cichlid_MASK    0x00000FFCL
     100             : #define CP_RB_DOORBELL_RANGE_LOWER__DOORBELL_RANGE_LOWER_Sienna_Cichlid__SHIFT  0x2
     101             : #define CP_RB_DOORBELL_RANGE_UPPER__DOORBELL_RANGE_UPPER_Sienna_Cichlid_MASK    0x00000FFCL
     102             : #define mmGCR_GENERAL_CNTL_Sienna_Cichlid                       0x1580
     103             : #define mmGCR_GENERAL_CNTL_Sienna_Cichlid_BASE_IDX      0
     104             : 
     105             : #define mmGOLDEN_TSC_COUNT_UPPER_Vangogh                0x0025
     106             : #define mmGOLDEN_TSC_COUNT_UPPER_Vangogh_BASE_IDX       1
     107             : #define mmGOLDEN_TSC_COUNT_LOWER_Vangogh                0x0026
     108             : #define mmGOLDEN_TSC_COUNT_LOWER_Vangogh_BASE_IDX       1
     109             : 
     110             : #define mmGOLDEN_TSC_COUNT_UPPER_GC_10_3_6                0x002d
     111             : #define mmGOLDEN_TSC_COUNT_UPPER_GC_10_3_6_BASE_IDX       1
     112             : #define mmGOLDEN_TSC_COUNT_LOWER_GC_10_3_6                0x002e
     113             : #define mmGOLDEN_TSC_COUNT_LOWER_GC_10_3_6_BASE_IDX       1
     114             : 
     115             : #define mmSPI_CONFIG_CNTL_1_Vangogh              0x2441
     116             : #define mmSPI_CONFIG_CNTL_1_Vangogh_BASE_IDX     1
     117             : #define mmVGT_TF_MEMORY_BASE_HI_Vangogh          0x2261
     118             : #define mmVGT_TF_MEMORY_BASE_HI_Vangogh_BASE_IDX 1
     119             : #define mmVGT_HS_OFFCHIP_PARAM_Vangogh           0x224f
     120             : #define mmVGT_HS_OFFCHIP_PARAM_Vangogh_BASE_IDX  1
     121             : #define mmVGT_TF_RING_SIZE_Vangogh               0x224e
     122             : #define mmVGT_TF_RING_SIZE_Vangogh_BASE_IDX      1
     123             : #define mmVGT_GSVS_RING_SIZE_Vangogh             0x2241
     124             : #define mmVGT_GSVS_RING_SIZE_Vangogh_BASE_IDX    1
     125             : #define mmVGT_TF_MEMORY_BASE_Vangogh             0x2250
     126             : #define mmVGT_TF_MEMORY_BASE_Vangogh_BASE_IDX    1
     127             : #define mmVGT_ESGS_RING_SIZE_Vangogh             0x2240
     128             : #define mmVGT_ESGS_RING_SIZE_Vangogh_BASE_IDX    1
     129             : #define mmSPI_CONFIG_CNTL_Vangogh                0x2440
     130             : #define mmSPI_CONFIG_CNTL_Vangogh_BASE_IDX       1
     131             : #define mmGCR_GENERAL_CNTL_Vangogh               0x1580
     132             : #define mmGCR_GENERAL_CNTL_Vangogh_BASE_IDX      0
     133             : #define RLC_PG_DELAY_3__CGCG_ACTIVE_BEFORE_CGPG_MASK_Vangogh   0x0000FFFFL
     134             : 
     135             : #define mmCP_HYP_PFP_UCODE_ADDR                 0x5814
     136             : #define mmCP_HYP_PFP_UCODE_ADDR_BASE_IDX        1
     137             : #define mmCP_HYP_PFP_UCODE_DATA                 0x5815
     138             : #define mmCP_HYP_PFP_UCODE_DATA_BASE_IDX        1
     139             : #define mmCP_HYP_CE_UCODE_ADDR                  0x5818
     140             : #define mmCP_HYP_CE_UCODE_ADDR_BASE_IDX         1
     141             : #define mmCP_HYP_CE_UCODE_DATA                  0x5819
     142             : #define mmCP_HYP_CE_UCODE_DATA_BASE_IDX         1
     143             : #define mmCP_HYP_ME_UCODE_ADDR                  0x5816
     144             : #define mmCP_HYP_ME_UCODE_ADDR_BASE_IDX         1
     145             : #define mmCP_HYP_ME_UCODE_DATA                  0x5817
     146             : #define mmCP_HYP_ME_UCODE_DATA_BASE_IDX         1
     147             : 
     148             : #define mmCPG_PSP_DEBUG                         0x5c10
     149             : #define mmCPG_PSP_DEBUG_BASE_IDX                1
     150             : #define mmCPC_PSP_DEBUG                         0x5c11
     151             : #define mmCPC_PSP_DEBUG_BASE_IDX                1
     152             : #define CPC_PSP_DEBUG__GPA_OVERRIDE_MASK        0x00000008L
     153             : #define CPG_PSP_DEBUG__GPA_OVERRIDE_MASK        0x00000008L
     154             : 
     155             : //CC_GC_SA_UNIT_DISABLE
     156             : #define mmCC_GC_SA_UNIT_DISABLE                 0x0fe9
     157             : #define mmCC_GC_SA_UNIT_DISABLE_BASE_IDX        0
     158             : #define CC_GC_SA_UNIT_DISABLE__SA_DISABLE__SHIFT        0x8
     159             : #define CC_GC_SA_UNIT_DISABLE__SA_DISABLE_MASK          0x0000FF00L
     160             : //GC_USER_SA_UNIT_DISABLE
     161             : #define mmGC_USER_SA_UNIT_DISABLE               0x0fea
     162             : #define mmGC_USER_SA_UNIT_DISABLE_BASE_IDX      0
     163             : #define GC_USER_SA_UNIT_DISABLE__SA_DISABLE__SHIFT      0x8
     164             : #define GC_USER_SA_UNIT_DISABLE__SA_DISABLE_MASK        0x0000FF00L
     165             : //PA_SC_ENHANCE_3
     166             : #define mmPA_SC_ENHANCE_3                       0x1085
     167             : #define mmPA_SC_ENHANCE_3_BASE_IDX              0
     168             : #define PA_SC_ENHANCE_3__FORCE_PBB_WORKLOAD_MODE_TO_ZERO__SHIFT 0x3
     169             : #define PA_SC_ENHANCE_3__FORCE_PBB_WORKLOAD_MODE_TO_ZERO_MASK   0x00000008L
     170             : 
     171             : #define mmCGTT_SPI_CS_CLK_CTRL                  0x507c
     172             : #define mmCGTT_SPI_CS_CLK_CTRL_BASE_IDX         1
     173             : 
     174             : #define mmGCUTCL2_CGTT_CLK_CTRL_Sienna_Cichlid          0x16f3
     175             : #define mmGCUTCL2_CGTT_CLK_CTRL_Sienna_Cichlid_BASE_IDX 0
     176             : #define mmGCVM_L2_CGTT_CLK_CTRL_Sienna_Cichlid          0x15db
     177             : #define mmGCVM_L2_CGTT_CLK_CTRL_Sienna_Cichlid_BASE_IDX 0
     178             : 
     179             : #define mmGC_THROTTLE_CTRL_Sienna_Cichlid              0x2030
     180             : #define mmGC_THROTTLE_CTRL_Sienna_Cichlid_BASE_IDX     0
     181             : 
     182             : #define mmRLC_SPARE_INT_0_Sienna_Cichlid               0x4ca5
     183             : #define mmRLC_SPARE_INT_0_Sienna_Cichlid_BASE_IDX      1
     184             : 
     185             : MODULE_FIRMWARE("amdgpu/navi10_ce.bin");
     186             : MODULE_FIRMWARE("amdgpu/navi10_pfp.bin");
     187             : MODULE_FIRMWARE("amdgpu/navi10_me.bin");
     188             : MODULE_FIRMWARE("amdgpu/navi10_mec.bin");
     189             : MODULE_FIRMWARE("amdgpu/navi10_mec2.bin");
     190             : MODULE_FIRMWARE("amdgpu/navi10_rlc.bin");
     191             : 
     192             : MODULE_FIRMWARE("amdgpu/navi14_ce_wks.bin");
     193             : MODULE_FIRMWARE("amdgpu/navi14_pfp_wks.bin");
     194             : MODULE_FIRMWARE("amdgpu/navi14_me_wks.bin");
     195             : MODULE_FIRMWARE("amdgpu/navi14_mec_wks.bin");
     196             : MODULE_FIRMWARE("amdgpu/navi14_mec2_wks.bin");
     197             : MODULE_FIRMWARE("amdgpu/navi14_ce.bin");
     198             : MODULE_FIRMWARE("amdgpu/navi14_pfp.bin");
     199             : MODULE_FIRMWARE("amdgpu/navi14_me.bin");
     200             : MODULE_FIRMWARE("amdgpu/navi14_mec.bin");
     201             : MODULE_FIRMWARE("amdgpu/navi14_mec2.bin");
     202             : MODULE_FIRMWARE("amdgpu/navi14_rlc.bin");
     203             : 
     204             : MODULE_FIRMWARE("amdgpu/navi12_ce.bin");
     205             : MODULE_FIRMWARE("amdgpu/navi12_pfp.bin");
     206             : MODULE_FIRMWARE("amdgpu/navi12_me.bin");
     207             : MODULE_FIRMWARE("amdgpu/navi12_mec.bin");
     208             : MODULE_FIRMWARE("amdgpu/navi12_mec2.bin");
     209             : MODULE_FIRMWARE("amdgpu/navi12_rlc.bin");
     210             : 
     211             : MODULE_FIRMWARE("amdgpu/sienna_cichlid_ce.bin");
     212             : MODULE_FIRMWARE("amdgpu/sienna_cichlid_pfp.bin");
     213             : MODULE_FIRMWARE("amdgpu/sienna_cichlid_me.bin");
     214             : MODULE_FIRMWARE("amdgpu/sienna_cichlid_mec.bin");
     215             : MODULE_FIRMWARE("amdgpu/sienna_cichlid_mec2.bin");
     216             : MODULE_FIRMWARE("amdgpu/sienna_cichlid_rlc.bin");
     217             : 
     218             : MODULE_FIRMWARE("amdgpu/navy_flounder_ce.bin");
     219             : MODULE_FIRMWARE("amdgpu/navy_flounder_pfp.bin");
     220             : MODULE_FIRMWARE("amdgpu/navy_flounder_me.bin");
     221             : MODULE_FIRMWARE("amdgpu/navy_flounder_mec.bin");
     222             : MODULE_FIRMWARE("amdgpu/navy_flounder_mec2.bin");
     223             : MODULE_FIRMWARE("amdgpu/navy_flounder_rlc.bin");
     224             : 
     225             : MODULE_FIRMWARE("amdgpu/vangogh_ce.bin");
     226             : MODULE_FIRMWARE("amdgpu/vangogh_pfp.bin");
     227             : MODULE_FIRMWARE("amdgpu/vangogh_me.bin");
     228             : MODULE_FIRMWARE("amdgpu/vangogh_mec.bin");
     229             : MODULE_FIRMWARE("amdgpu/vangogh_mec2.bin");
     230             : MODULE_FIRMWARE("amdgpu/vangogh_rlc.bin");
     231             : 
     232             : MODULE_FIRMWARE("amdgpu/dimgrey_cavefish_ce.bin");
     233             : MODULE_FIRMWARE("amdgpu/dimgrey_cavefish_pfp.bin");
     234             : MODULE_FIRMWARE("amdgpu/dimgrey_cavefish_me.bin");
     235             : MODULE_FIRMWARE("amdgpu/dimgrey_cavefish_mec.bin");
     236             : MODULE_FIRMWARE("amdgpu/dimgrey_cavefish_mec2.bin");
     237             : MODULE_FIRMWARE("amdgpu/dimgrey_cavefish_rlc.bin");
     238             : 
     239             : MODULE_FIRMWARE("amdgpu/beige_goby_ce.bin");
     240             : MODULE_FIRMWARE("amdgpu/beige_goby_pfp.bin");
     241             : MODULE_FIRMWARE("amdgpu/beige_goby_me.bin");
     242             : MODULE_FIRMWARE("amdgpu/beige_goby_mec.bin");
     243             : MODULE_FIRMWARE("amdgpu/beige_goby_mec2.bin");
     244             : MODULE_FIRMWARE("amdgpu/beige_goby_rlc.bin");
     245             : 
     246             : MODULE_FIRMWARE("amdgpu/yellow_carp_ce.bin");
     247             : MODULE_FIRMWARE("amdgpu/yellow_carp_pfp.bin");
     248             : MODULE_FIRMWARE("amdgpu/yellow_carp_me.bin");
     249             : MODULE_FIRMWARE("amdgpu/yellow_carp_mec.bin");
     250             : MODULE_FIRMWARE("amdgpu/yellow_carp_mec2.bin");
     251             : MODULE_FIRMWARE("amdgpu/yellow_carp_rlc.bin");
     252             : 
     253             : MODULE_FIRMWARE("amdgpu/cyan_skillfish2_ce.bin");
     254             : MODULE_FIRMWARE("amdgpu/cyan_skillfish2_pfp.bin");
     255             : MODULE_FIRMWARE("amdgpu/cyan_skillfish2_me.bin");
     256             : MODULE_FIRMWARE("amdgpu/cyan_skillfish2_mec.bin");
     257             : MODULE_FIRMWARE("amdgpu/cyan_skillfish2_mec2.bin");
     258             : MODULE_FIRMWARE("amdgpu/cyan_skillfish2_rlc.bin");
     259             : 
     260             : MODULE_FIRMWARE("amdgpu/gc_10_3_6_ce.bin");
     261             : MODULE_FIRMWARE("amdgpu/gc_10_3_6_pfp.bin");
     262             : MODULE_FIRMWARE("amdgpu/gc_10_3_6_me.bin");
     263             : MODULE_FIRMWARE("amdgpu/gc_10_3_6_mec.bin");
     264             : MODULE_FIRMWARE("amdgpu/gc_10_3_6_mec2.bin");
     265             : MODULE_FIRMWARE("amdgpu/gc_10_3_6_rlc.bin");
     266             : 
     267             : MODULE_FIRMWARE("amdgpu/gc_10_3_7_ce.bin");
     268             : MODULE_FIRMWARE("amdgpu/gc_10_3_7_pfp.bin");
     269             : MODULE_FIRMWARE("amdgpu/gc_10_3_7_me.bin");
     270             : MODULE_FIRMWARE("amdgpu/gc_10_3_7_mec.bin");
     271             : MODULE_FIRMWARE("amdgpu/gc_10_3_7_mec2.bin");
     272             : MODULE_FIRMWARE("amdgpu/gc_10_3_7_rlc.bin");
     273             : 
     274             : static const struct soc15_reg_golden golden_settings_gc_10_1[] =
     275             : {
     276             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCB_HW_CONTROL_4, 0xffffffff, 0x00400014),
     277             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_CPF_CLK_CTRL, 0xfcff8fff, 0xf8000100),
     278             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CLK_CTRL, 0xcd000000, 0x0d000100),
     279             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SQ_CLK_CTRL, 0x60000ff0, 0x60000100),
     280             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SQG_CLK_CTRL, 0x40000000, 0x40000100),
     281             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_VGT_CLK_CTRL, 0xffff8fff, 0xffff8100),
     282             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_WD_CLK_CTRL, 0xfeff8fff, 0xfeff8100),
     283             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_PIPE_STEER, 0xffffffff, 0xe4e4e4e4),
     284             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_VC5_ENABLE, 0x00000002, 0x00000000),
     285             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCP_SD_CNTL, 0x000007ff, 0x000005ff),
     286             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG, 0x20000000, 0x20000000),
     287             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG2, 0xffffffff, 0x00000420),
     288             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0x00000200, 0x00000200),
     289             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0x07900000, 0x04900000),
     290             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DFSM_TILES_IN_FLIGHT, 0x0000ffff, 0x0000003f),
     291             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_LAST_OF_BURST_CONFIG, 0xffffffff, 0x03860204),
     292             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL, 0x1ff0ffff, 0x00000500),
     293             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGE_PRIV_CONTROL, 0x000007ff, 0x000001fe),
     294             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL1_PIPE_STEER, 0xffffffff, 0xe4e4e4e4),
     295             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_0, 0x77777777, 0x10321032),
     296             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_1, 0x77777777, 0x02310231),
     297             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
     298             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
     299             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CGTT_SCLK_CTRL, 0x10000000, 0x10000100),
     300             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL2, 0xffffffff, 0x1402002f),
     301             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0xffff9fff, 0x00001188),
     302             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_TIMEOUT_COUNTER, 0xffffffff, 0x00000800),
     303             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE, 0x3fffffff, 0x08000009),
     304             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_1, 0x00400000, 0x04440000),
     305             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0x00000800, 0x00000820),
     306             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_LINE_STIPPLE_STATE, 0x0000ff0f, 0x00000000),
     307             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRMI_SPARE, 0xffffffff, 0xffff3101),
     308             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSPI_CONFIG_CNTL_1, 0x001f0000, 0x00070104),
     309             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_ALU_CLK_CTRL, 0xffffffff, 0xffffffff),
     310             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_ARB_CONFIG, 0x00000100, 0x00000130),
     311             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_LDS_CLK_CTRL, 0xffffffff, 0xffffffff),
     312             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
     313             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTCP_CNTL, 0x60000010, 0x479c0010),
     314             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CGTT_CLK_CTRL, 0xfeff0fff, 0x40000100),
     315             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0x00c00000, 0x00c00000)
     316             : };
     317             : 
     318             : static const struct soc15_reg_golden golden_settings_gc_10_0_nv10[] =
     319             : {
     320             :         /* Pending on emulation bring up */
     321             : };
     322             : 
     323             : static const struct soc15_reg_golden golden_settings_gc_rlc_spm_10_0_nv10[] =
     324             : {
     325             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xe0000000, 0x0),
     326             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     327             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x28),
     328             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     329             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
     330             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     331             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8),
     332             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     333             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
     334             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     335             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8),
     336             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     337             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
     338             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     339             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x20),
     340             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     341             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     342             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     343             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc8),
     344             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     345             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
     346             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     347             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xcc),
     348             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     349             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
     350             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     351             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd0),
     352             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     353             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
     354             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     355             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd4),
     356             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     357             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
     358             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     359             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
     360             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     361             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
     362             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     363             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
     364             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     365             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
     366             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     367             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4),
     368             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     369             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
     370             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     371             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8),
     372             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     373             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
     374             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     375             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x0),
     376             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     377             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
     378             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     379             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc),
     380             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     381             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
     382             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     383             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc),
     384             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     385             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
     386             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     387             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x88),
     388             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     389             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
     390             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     391             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8c),
     392             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     393             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
     394             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     395             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb0),
     396             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     397             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
     398             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     399             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb4),
     400             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     401             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
     402             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     403             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb8),
     404             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     405             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     406             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     407             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xbc),
     408             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     409             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
     410             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     411             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc0),
     412             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     413             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     414             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     415             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc4),
     416             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     417             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     418             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     419             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x90),
     420             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     421             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
     422             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     423             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x94),
     424             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     425             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
     426             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     427             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x98),
     428             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     429             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
     430             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     431             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x9c),
     432             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     433             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
     434             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     435             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa0),
     436             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     437             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
     438             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     439             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa4),
     440             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     441             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
     442             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     443             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa8),
     444             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     445             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
     446             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     447             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xac),
     448             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     449             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
     450             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     451             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10),
     452             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     453             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
     454             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     455             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc),
     456             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     457             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
     458             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     459             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18),
     460             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     461             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
     462             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     463             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x38),
     464             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     465             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
     466             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     467             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x3c),
     468             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     469             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
     470             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     471             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x40),
     472             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     473             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     474             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     475             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x44),
     476             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     477             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
     478             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     479             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x48),
     480             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     481             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
     482             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     483             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4c),
     484             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     485             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
     486             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     487             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x70),
     488             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     489             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
     490             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     491             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x74),
     492             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     493             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
     494             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     495             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x78),
     496             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     497             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
     498             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     499             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x7c),
     500             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     501             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
     502             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     503             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x80),
     504             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     505             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
     506             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     507             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x84),
     508             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     509             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
     510             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     511             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x50),
     512             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     513             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
     514             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     515             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x54),
     516             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     517             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
     518             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     519             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x58),
     520             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     521             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
     522             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     523             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x5c),
     524             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     525             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
     526             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     527             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x60),
     528             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     529             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
     530             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     531             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x64),
     532             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     533             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
     534             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     535             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x68),
     536             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     537             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
     538             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     539             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x6c),
     540             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     541             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
     542             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     543             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1c),
     544             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     545             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
     546             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     547             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14),
     548             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     549             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     550             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     551             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x20),
     552             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     553             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
     554             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     555             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x20),
     556             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     557             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
     558             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     559             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
     560             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     561             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
     562             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     563             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
     564             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     565             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
     566             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     567             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x28),
     568             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     569             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     570             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     571             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x28),
     572             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     573             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     574             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     575             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x2c),
     576             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     577             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
     578             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     579             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x2c),
     580             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     581             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
     582             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     583             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x30),
     584             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     585             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     586             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     587             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x30),
     588             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     589             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     590             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     591             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x34),
     592             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     593             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
     594             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     595             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x34),
     596             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     597             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
     598             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     599             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x38),
     600             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     601             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     602             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     603             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x38),
     604             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     605             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     606             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     607             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x3c),
     608             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     609             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
     610             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     611             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x3c),
     612             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     613             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
     614             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     615             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18),
     616             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     617             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
     618             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     619             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18),
     620             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     621             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
     622             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     623             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x50),
     624             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     625             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     626             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     627             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x50),
     628             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     629             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     630             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     631             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x54),
     632             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     633             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     634             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     635             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x54),
     636             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     637             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     638             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     639             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x58),
     640             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     641             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     642             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     643             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x58),
     644             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     645             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     646             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     647             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x5c),
     648             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     649             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     650             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     651             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x5c),
     652             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     653             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
     654             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     655             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14),
     656             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     657             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1d),
     658             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     659             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14),
     660             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     661             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1d),
     662             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     663             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x48),
     664             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     665             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
     666             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     667             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x48),
     668             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     669             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
     670             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     671             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4c),
     672             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     673             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
     674             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     675             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4c),
     676             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     677             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
     678             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     679             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x40),
     680             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     681             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1c),
     682             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     683             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x40),
     684             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     685             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1c),
     686             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     687             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x44),
     688             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     689             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
     690             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     691             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x44),
     692             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     693             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
     694             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     695             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10),
     696             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     697             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x17),
     698             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     699             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10),
     700             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     701             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x17),
     702             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     703             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x60),
     704             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     705             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     706             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     707             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x60),
     708             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     709             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     710             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     711             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x64),
     712             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     713             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
     714             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     715             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x64),
     716             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     717             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
     718             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     719             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x70),
     720             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     721             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
     722             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     723             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x70),
     724             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     725             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
     726             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     727             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x74),
     728             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     729             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     730             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     731             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x74),
     732             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     733             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     734             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     735             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x68),
     736             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     737             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     738             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     739             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x68),
     740             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     741             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     742             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     743             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x6c),
     744             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     745             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
     746             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     747             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x6c),
     748             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     749             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
     750             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     751             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x78),
     752             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     753             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
     754             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     755             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x78),
     756             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     757             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
     758             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     759             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x7c),
     760             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     761             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     762             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     763             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x7c),
     764             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     765             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     766             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     767             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x88),
     768             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     769             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     770             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     771             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x88),
     772             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     773             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     774             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     775             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8c),
     776             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     777             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     778             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     779             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8c),
     780             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     781             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     782             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     783             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x80),
     784             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     785             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     786             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     787             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x80),
     788             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     789             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     790             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     791             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x84),
     792             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     793             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     794             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     795             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x84),
     796             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     797             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     798             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     799             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x90),
     800             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     801             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
     802             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     803             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x90),
     804             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     805             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
     806             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     807             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x94),
     808             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     809             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
     810             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     811             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x94),
     812             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     813             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
     814             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     815             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa0),
     816             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     817             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
     818             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     819             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa0),
     820             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     821             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
     822             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     823             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa4),
     824             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     825             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
     826             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     827             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa4),
     828             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     829             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
     830             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     831             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x98),
     832             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     833             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
     834             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     835             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x98),
     836             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     837             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
     838             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     839             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x9c),
     840             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     841             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
     842             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     843             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x9c),
     844             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     845             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
     846             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     847             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa8),
     848             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     849             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     850             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     851             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa8),
     852             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     853             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     854             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     855             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xac),
     856             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     857             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     858             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     859             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xac),
     860             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     861             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     862             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     863             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb8),
     864             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     865             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
     866             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     867             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb8),
     868             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     869             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
     870             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     871             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xbc),
     872             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     873             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
     874             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     875             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xbc),
     876             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     877             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
     878             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     879             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb0),
     880             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     881             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     882             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     883             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb0),
     884             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     885             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     886             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     887             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb4),
     888             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     889             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     890             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     891             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb4),
     892             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     893             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     894             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     895             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc0),
     896             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     897             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
     898             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     899             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc0),
     900             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     901             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
     902             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     903             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc4),
     904             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     905             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     906             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     907             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc4),
     908             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     909             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
     910             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     911             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd0),
     912             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     913             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
     914             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     915             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd0),
     916             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     917             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
     918             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     919             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd4),
     920             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     921             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
     922             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     923             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd4),
     924             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     925             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
     926             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     927             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc8),
     928             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     929             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
     930             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     931             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc8),
     932             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     933             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
     934             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     935             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xcc),
     936             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     937             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
     938             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     939             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xcc),
     940             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     941             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
     942             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     943             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe8),
     944             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     945             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     946             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     947             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe8),
     948             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     949             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     950             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     951             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xec),
     952             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     953             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     954             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     955             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xec),
     956             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     957             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     958             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     959             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf0),
     960             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     961             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
     962             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     963             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf0),
     964             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     965             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
     966             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     967             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf4),
     968             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     969             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
     970             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     971             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf4),
     972             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     973             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
     974             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     975             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf8),
     976             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     977             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     978             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     979             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf8),
     980             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     981             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     982             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     983             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xfc),
     984             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     985             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     986             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     987             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xfc),
     988             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     989             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
     990             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     991             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x100),
     992             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     993             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     994             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     995             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x100),
     996             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
     997             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
     998             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
     999             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x104),
    1000             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1001             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1002             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1003             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x104),
    1004             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1005             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1006             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1007             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe0),
    1008             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1009             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    1010             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1011             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe0),
    1012             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1013             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    1014             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1015             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x118),
    1016             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1017             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    1018             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1019             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x118),
    1020             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1021             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    1022             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1023             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x11c),
    1024             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1025             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    1026             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1027             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x11c),
    1028             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1029             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    1030             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1031             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x120),
    1032             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1033             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    1034             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1035             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x120),
    1036             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1037             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    1038             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1039             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x124),
    1040             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1041             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    1042             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1043             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x124),
    1044             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1045             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    1046             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1047             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xdc),
    1048             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1049             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
    1050             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1051             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xdc),
    1052             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1053             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
    1054             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1055             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x110),
    1056             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1057             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1058             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1059             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x110),
    1060             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1061             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1062             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1063             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x114),
    1064             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1065             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1066             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1067             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x114),
    1068             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1069             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1070             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1071             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x108),
    1072             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1073             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1074             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1075             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x108),
    1076             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1077             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1078             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1079             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10c),
    1080             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1081             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1082             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1083             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10c),
    1084             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1085             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1086             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1087             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd8),
    1088             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1089             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x17),
    1090             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1091             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd8),
    1092             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1093             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x17),
    1094             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1095             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x128),
    1096             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1097             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
    1098             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1099             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x128),
    1100             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1101             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
    1102             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1103             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x12c),
    1104             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1105             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1106             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1107             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x12c),
    1108             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1109             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1110             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1111             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x138),
    1112             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1113             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1114             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1115             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x138),
    1116             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1117             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1118             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1119             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x13c),
    1120             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1121             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    1122             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1123             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x13c),
    1124             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1125             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    1126             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1127             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x130),
    1128             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1129             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1130             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1131             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x130),
    1132             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1133             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1134             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1135             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x134),
    1136             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1137             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1138             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1139             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x134),
    1140             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1141             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1142             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1143             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x140),
    1144             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1145             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1146             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1147             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x140),
    1148             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1149             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1150             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1151             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x144),
    1152             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1153             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    1154             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1155             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x144),
    1156             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1157             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    1158             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1159             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x150),
    1160             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1161             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1162             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1163             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x150),
    1164             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1165             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1166             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1167             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x154),
    1168             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1169             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    1170             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1171             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x154),
    1172             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1173             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    1174             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1175             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x148),
    1176             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1177             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1178             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1179             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x148),
    1180             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1181             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1182             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1183             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14c),
    1184             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1185             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    1186             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1187             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14c),
    1188             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1189             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    1190             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1191             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x158),
    1192             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1193             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    1194             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1195             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x158),
    1196             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1197             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    1198             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1199             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x15c),
    1200             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1201             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1202             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1203             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x15c),
    1204             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1205             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1206             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1207             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x168),
    1208             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1209             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1),
    1210             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1211             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x168),
    1212             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1213             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1),
    1214             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1215             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x16c),
    1216             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1217             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    1218             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1219             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x16c),
    1220             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1221             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    1222             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1223             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x160),
    1224             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1225             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    1226             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1227             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x160),
    1228             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1229             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    1230             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1231             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x164),
    1232             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1233             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1234             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1235             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x164),
    1236             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1237             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1238             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1239             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x170),
    1240             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1241             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    1242             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1243             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x170),
    1244             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1245             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    1246             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1247             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x174),
    1248             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1249             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    1250             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1251             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x174),
    1252             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1253             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    1254             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1255             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x180),
    1256             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1257             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
    1258             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1259             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x180),
    1260             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1261             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
    1262             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1263             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x184),
    1264             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1265             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1266             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1267             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x184),
    1268             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1269             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1270             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1271             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x178),
    1272             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1273             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    1274             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1275             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x178),
    1276             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1277             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    1278             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1279             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x17c),
    1280             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1281             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    1282             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1283             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x17c),
    1284             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1285             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    1286             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1287             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x188),
    1288             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1289             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1290             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1291             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x188),
    1292             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1293             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1294             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1295             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18c),
    1296             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1297             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
    1298             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1299             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18c),
    1300             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1301             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
    1302             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1303             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x198),
    1304             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1305             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    1306             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1307             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x198),
    1308             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1309             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    1310             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1311             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x19c),
    1312             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1313             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
    1314             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1315             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x19c),
    1316             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1317             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
    1318             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1319             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x190),
    1320             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1321             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1322             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1323             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x190),
    1324             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1325             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1326             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1327             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x194),
    1328             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1329             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
    1330             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1331             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x194),
    1332             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1333             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
    1334             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1335             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x30),
    1336             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1337             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    1338             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1339             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x34),
    1340             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1341             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    1342             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1343             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x0),
    1344             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1345             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1d),
    1346             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1347             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x0),
    1348             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1349             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1d),
    1350             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1351             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4),
    1352             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1353             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1f),
    1354             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1355             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4),
    1356             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1357             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1f),
    1358             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1359             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x2c),
    1360             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1361             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    1362             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1363             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLOBALS_SAMPLE_SKEW, 0x000000FF, 0x19),
    1364             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1365             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLOBALS_MUXSEL_SKEW, 0x000000FF, 0x20),
    1366             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1367             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLE_SKEW, 0x000000FF, 0x5),
    1368             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1369             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLE_SKEW, 0x000000FF, 0xa),
    1370             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1371             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_MUXSEL_SKEW, 0x000000FF, 0x14),
    1372             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    1373             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_MUXSEL_SKEW, 0x000000FF, 0x19),
    1374             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1375             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_DESER_START_SKEW, 0x000000FF, 0x33),
    1376             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xFFFFFFFF, 0xe0000000)
    1377             : };
    1378             : 
    1379             : static const struct soc15_reg_golden golden_settings_gc_10_1_1[] =
    1380             : {
    1381             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCB_HW_CONTROL_4, 0xffffffff, 0x003c0014),
    1382             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_GS_NGG_CLK_CTRL, 0xffff8fff, 0xffff8100),
    1383             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_IA_CLK_CTRL, 0xffff0fff, 0xffff0100),
    1384             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CLK_CTRL, 0xcd000000, 0x0d000100),
    1385             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SQ_CLK_CTRL, 0xf8ff0fff, 0x60000100),
    1386             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SQG_CLK_CTRL, 0x40000ff0, 0x40000100),
    1387             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_VGT_CLK_CTRL, 0xffff8fff, 0xffff8100),
    1388             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_WD_CLK_CTRL, 0xffff8fff, 0xffff8100),
    1389             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_PIPE_STEER, 0xffffffff, 0xe4e4e4e4),
    1390             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_VC5_ENABLE, 0x00000002, 0x00000000),
    1391             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCP_SD_CNTL, 0x800007ff, 0x000005ff),
    1392             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG, 0xffffffff, 0x20000000),
    1393             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG2, 0xffffffff, 0x00000420),
    1394             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0x00000200, 0x00000200),
    1395             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x04900000),
    1396             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DFSM_TILES_IN_FLIGHT, 0x0000ffff, 0x0000003f),
    1397             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_LAST_OF_BURST_CONFIG, 0xffffffff, 0x03860204),
    1398             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL, 0x1ff0ffff, 0x00000500),
    1399             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGE_PRIV_CONTROL, 0x000007ff, 0x000001fe),
    1400             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL1_PIPE_STEER, 0xffffffff, 0xe4e4e4e4),
    1401             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xffffffe7),
    1402             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xffffffe7),
    1403             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CGTT_SCLK_CTRL, 0xffff0fff, 0x10000100),
    1404             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL2, 0xffffffff, 0x1402002f),
    1405             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0xffffbfff, 0x00000188),
    1406             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_TIMEOUT_COUNTER, 0xffffffff, 0x00000800),
    1407             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE, 0x3fffffff, 0x08000009),
    1408             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_1, 0x00400000, 0x04440000),
    1409             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0x00000800, 0x00000820),
    1410             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_LINE_STIPPLE_STATE, 0x0000ff0f, 0x00000000),
    1411             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRMI_SPARE, 0xffffffff, 0xffff3101),
    1412             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSPI_CONFIG_CNTL_1, 0x001f0000, 0x00070105),
    1413             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_ALU_CLK_CTRL, 0xffffffff, 0xffffffff),
    1414             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_ARB_CONFIG, 0x00000133, 0x00000130),
    1415             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_LDS_CLK_CTRL, 0xffffffff, 0xffffffff),
    1416             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
    1417             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTCP_CNTL, 0x60000010, 0x479c0010),
    1418             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0x00c00000, 0x00c00000),
    1419             : };
    1420             : 
    1421             : static const struct soc15_reg_golden golden_settings_gc_10_1_2[] =
    1422             : {
    1423             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCB_HW_CONTROL_4, 0x003e001f, 0x003c0014),
    1424             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_GS_NGG_CLK_CTRL, 0xffff8fff, 0xffff8100),
    1425             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_IA_CLK_CTRL, 0xffff0fff, 0xffff0100),
    1426             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CLK_CTRL, 0xff7f0fff, 0x0d000100),
    1427             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SQ_CLK_CTRL, 0xffffcfff, 0x60000100),
    1428             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SQG_CLK_CTRL, 0xffff0fff, 0x40000100),
    1429             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_VGT_CLK_CTRL, 0xffff8fff, 0xffff8100),
    1430             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_WD_CLK_CTRL, 0xffff8fff, 0xffff8100),
    1431             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_PIPE_STEER, 0xffffffff, 0xe4e4e4e4),
    1432             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_VC5_ENABLE, 0x00000003, 0x00000000),
    1433             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCP_SD_CNTL, 0x800007ff, 0x000005ff),
    1434             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG, 0xffffffff, 0x20000000),
    1435             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG2, 0xffffffff, 0x00000420),
    1436             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0xffffffff, 0x00000200),
    1437             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x04900000),
    1438             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DFSM_TILES_IN_FLIGHT, 0x0000ffff, 0x0000003f),
    1439             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_LAST_OF_BURST_CONFIG, 0xffffffff, 0x03860204),
    1440             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGB_ADDR_CONFIG, 0x0c1800ff, 0x00000044),
    1441             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL, 0x1ff0ffff, 0x00000500),
    1442             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGE_PRIV_CONTROL, 0x00007fff, 0x000001fe),
    1443             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL1_PIPE_STEER, 0xffffffff, 0xe4e4e4e4),
    1444             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_0, 0x77777777, 0x10321032),
    1445             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_1, 0x77777777, 0x02310231),
    1446             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    1447             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    1448             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CGTT_SCLK_CTRL, 0xffff0fff, 0x10000100),
    1449             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL2, 0xffffffff, 0x1402002f),
    1450             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0xffffbfff, 0x00000188),
    1451             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_EVENT_CNTL_0, 0xffffffff, 0x842a4c02),
    1452             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_TIMEOUT_COUNTER, 0xffffffff, 0x00000800),
    1453             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE, 0x3fffffff, 0x08000009),
    1454             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_1, 0xffffffff, 0x04440000),
    1455             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0x00000820, 0x00000820),
    1456             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_LINE_STIPPLE_STATE, 0x0000ff0f, 0x00000000),
    1457             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRMI_SPARE, 0xffffffff, 0xffff3101),
    1458             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSPI_CONFIG_CNTL_1, 0x001f0000, 0x00070104),
    1459             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_ALU_CLK_CTRL, 0xffffffff, 0xffffffff),
    1460             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_ARB_CONFIG, 0x00000133, 0x00000130),
    1461             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_LDS_CLK_CTRL, 0xffffffff, 0xffffffff),
    1462             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
    1463             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTCP_CNTL, 0xffdf80ff, 0x479c0010),
    1464             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0xffffffff, 0x00c00000)
    1465             : };
    1466             : 
    1467             : static const struct soc15_reg_golden golden_settings_gc_10_1_nv14[] =
    1468             : {
    1469             :         /* Pending on emulation bring up */
    1470             : };
    1471             : 
    1472             : static const struct soc15_reg_golden golden_settings_gc_rlc_spm_10_1_nv14[] =
    1473             : {
    1474             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xE0000000L, 0x0),
    1475             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1476             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x28),
    1477             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1478             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1479             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1480             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8),
    1481             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1482             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1c),
    1483             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1484             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x20),
    1485             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1486             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
    1487             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1488             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x80),
    1489             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1490             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1491             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1492             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x84),
    1493             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1494             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1495             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1496             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x88),
    1497             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1498             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1499             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1500             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8c),
    1501             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1502             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1503             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1504             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
    1505             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1506             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1507             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1508             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
    1509             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1510             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1511             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1512             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4),
    1513             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1514             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1515             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1516             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8),
    1517             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1518             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    1519             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1520             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x0),
    1521             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1522             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1523             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1524             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc),
    1525             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1526             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x20),
    1527             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1528             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x60),
    1529             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1530             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    1531             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1532             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x64),
    1533             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1534             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1535             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1536             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x68),
    1537             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1538             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1539             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1540             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x6c),
    1541             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1542             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1543             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1544             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x70),
    1545             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1546             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1547             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1548             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x74),
    1549             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1550             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1551             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1552             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x78),
    1553             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1554             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    1555             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1556             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x7c),
    1557             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1558             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1559             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1560             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10),
    1561             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1562             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1563             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1564             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc),
    1565             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1566             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    1567             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1568             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18),
    1569             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1570             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1571             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1572             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x38),
    1573             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1574             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
    1575             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1576             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x3c),
    1577             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1578             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
    1579             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1580             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x40),
    1581             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1582             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
    1583             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1584             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x44),
    1585             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1586             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    1587             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1588             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x48),
    1589             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1590             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    1591             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1592             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4c),
    1593             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1594             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
    1595             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1596             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x50),
    1597             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1598             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
    1599             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1600             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x54),
    1601             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1602             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
    1603             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1604             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x58),
    1605             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1606             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    1607             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1608             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x5c),
    1609             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1610             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    1611             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1612             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1c),
    1613             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1614             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    1615             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1616             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14),
    1617             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1618             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    1619             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1620             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x20),
    1621             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1622             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1623             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1624             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
    1625             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1626             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1627             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1628             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x28),
    1629             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1630             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1631             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1632             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x2c),
    1633             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1634             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    1635             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1636             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x30),
    1637             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1638             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1639             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1640             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x34),
    1641             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1642             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1643             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1644             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x38),
    1645             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1646             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    1647             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1648             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x3c),
    1649             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1650             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1c),
    1651             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1652             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18),
    1653             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1654             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    1655             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1656             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x50),
    1657             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1658             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1e),
    1659             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1660             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x54),
    1661             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1662             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1e),
    1663             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1664             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x58),
    1665             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1666             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1e),
    1667             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1668             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x5c),
    1669             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1670             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1e),
    1671             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1672             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14),
    1673             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1674             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x20),
    1675             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1676             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x48),
    1677             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1678             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    1679             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1680             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4c),
    1681             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1682             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    1683             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1684             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x40),
    1685             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1686             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1e),
    1687             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1688             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x44),
    1689             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1690             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1e),
    1691             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1692             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10),
    1693             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1694             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    1695             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1696             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x60),
    1697             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1698             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1699             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1700             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x64),
    1701             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1702             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    1703             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1704             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x70),
    1705             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1706             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1707             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1708             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x74),
    1709             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1710             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1711             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1712             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x68),
    1713             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1714             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1715             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1716             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x6c),
    1717             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1718             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    1719             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1720             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x78),
    1721             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1722             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1723             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1724             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x7c),
    1725             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1726             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1727             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1728             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x88),
    1729             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1730             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1731             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1732             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8c),
    1733             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1734             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    1735             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1736             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x80),
    1737             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1738             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1739             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1740             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x84),
    1741             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1742             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1743             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1744             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x90),
    1745             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1746             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1747             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1748             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x94),
    1749             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1750             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    1751             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1752             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa0),
    1753             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1754             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1755             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1756             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa4),
    1757             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1758             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    1759             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1760             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x98),
    1761             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1762             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1763             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1764             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x9c),
    1765             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1766             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    1767             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1768             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa8),
    1769             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1770             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1c),
    1771             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1772             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xac),
    1773             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1774             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1775             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1776             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb8),
    1777             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1778             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1779             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1780             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xbc),
    1781             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1782             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1783             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1784             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb0),
    1785             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1786             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1c),
    1787             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1788             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb4),
    1789             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1790             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1791             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1792             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc0),
    1793             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1794             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1795             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1796             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc4),
    1797             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1798             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    1799             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1800             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd0),
    1801             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1802             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1803             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1804             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd4),
    1805             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1806             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1807             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1808             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc8),
    1809             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1810             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1811             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1812             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xcc),
    1813             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1814             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    1815             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1816             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd8),
    1817             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1818             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1819             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1820             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xdc),
    1821             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1822             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1823             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1824             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe8),
    1825             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1826             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    1827             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1828             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xec),
    1829             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1830             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1831             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1832             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe0),
    1833             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1834             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1835             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1836             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe4),
    1837             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1838             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1839             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1840             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x100),
    1841             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1842             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    1843             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1844             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x104),
    1845             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1846             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1847             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1848             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x108),
    1849             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1850             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    1851             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1852             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10c),
    1853             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1854             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1855             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1856             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x110),
    1857             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1858             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1859             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1860             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x114),
    1861             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1862             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    1863             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1864             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x118),
    1865             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1866             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1867             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1868             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x11c),
    1869             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1870             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1871             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1872             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf8),
    1873             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1874             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x17),
    1875             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1876             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x130),
    1877             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1878             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1879             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1880             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x134),
    1881             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1882             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1883             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1884             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x138),
    1885             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1886             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1887             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1888             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x13c),
    1889             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1890             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1891             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1892             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf4),
    1893             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1894             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x20),
    1895             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1896             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x128),
    1897             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1898             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1899             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1900             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x12c),
    1901             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1902             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1903             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1904             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x120),
    1905             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1906             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1907             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1908             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x124),
    1909             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1910             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    1911             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1912             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf0),
    1913             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1914             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    1915             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1916             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x140),
    1917             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1918             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1919             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1920             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x144),
    1921             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1922             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1923             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1924             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x150),
    1925             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1926             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    1927             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1928             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x154),
    1929             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1930             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1931             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1932             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x148),
    1933             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1934             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    1935             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1936             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14c),
    1937             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1938             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1939             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1940             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x158),
    1941             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1942             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1943             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1944             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x15c),
    1945             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1946             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    1947             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1948             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x168),
    1949             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1950             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    1951             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1952             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x16c),
    1953             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1954             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    1955             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1956             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x160),
    1957             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1958             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1959             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1960             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x164),
    1961             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1962             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    1963             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1964             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x170),
    1965             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1966             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    1967             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1968             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x174),
    1969             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1970             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    1971             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1972             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x180),
    1973             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1974             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    1975             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1976             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x184),
    1977             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1978             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
    1979             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1980             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x178),
    1981             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1982             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    1983             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1984             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x17c),
    1985             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1986             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    1987             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1988             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x188),
    1989             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1990             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    1991             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1992             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18c),
    1993             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1994             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    1995             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1996             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x198),
    1997             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    1998             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    1999             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2000             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x19c),
    2001             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2002             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2003             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2004             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x190),
    2005             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2006             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    2007             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2008             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x194),
    2009             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2010             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2011             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2012             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1a0),
    2013             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2014             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2015             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2016             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1a4),
    2017             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2018             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    2019             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2020             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1b0),
    2021             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2022             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2023             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2024             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1b4),
    2025             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2026             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2027             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2028             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1a8),
    2029             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2030             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2031             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2032             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1ac),
    2033             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2034             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    2035             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2036             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1b8),
    2037             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2038             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    2039             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2040             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1bc),
    2041             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2042             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2043             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2044             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1c8),
    2045             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2046             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    2047             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2048             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1cc),
    2049             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2050             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    2051             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2052             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1c0),
    2053             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2054             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    2055             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2056             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1c4),
    2057             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2058             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2059             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2060             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x30),
    2061             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2062             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2063             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2064             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x34),
    2065             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2066             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2067             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2068             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x0),
    2069             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2070             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x20),
    2071             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2072             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4),
    2073             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2074             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x20),
    2075             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2076             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x2c),
    2077             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2078             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    2079             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2080             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLOBALS_SAMPLE_SKEW, 0x000000FF, 0x26),
    2081             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2082             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLOBALS_MUXSEL_SKEW, 0x000000FF, 0x28),
    2083             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2084             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLE_SKEW, 0x000000FF, 0xf),
    2085             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2086             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLE_SKEW, 0x000000FF, 0x15),
    2087             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2088             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_MUXSEL_SKEW, 0x000000FF, 0x1f),
    2089             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2090             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_MUXSEL_SKEW, 0x000000FF, 0x25),
    2091             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2092             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_DESER_START_SKEW, 0x000000FF, 0x3b),
    2093             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xFFFFFFFF, 0xe0000000)
    2094             : };
    2095             : 
    2096             : static const struct soc15_reg_golden golden_settings_gc_10_1_2_nv12[] =
    2097             : {
    2098             :         /* Pending on emulation bring up */
    2099             : };
    2100             : 
    2101             : static const struct soc15_reg_golden golden_settings_gc_rlc_spm_10_1_2_nv12[] =
    2102             : {
    2103             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xe0000000L, 0x0),
    2104             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2105             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x28),
    2106             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2107             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    2108             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2109             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8),
    2110             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2111             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
    2112             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2113             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8),
    2114             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2115             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
    2116             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2117             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x20),
    2118             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2119             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    2120             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2121             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc8),
    2122             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2123             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2124             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2125             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xcc),
    2126             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2127             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2128             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2129             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd0),
    2130             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2131             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2132             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2133             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd4),
    2134             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2135             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2136             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2137             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
    2138             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2139             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2140             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2141             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
    2142             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2143             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2144             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2145             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4),
    2146             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2147             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    2148             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2149             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8),
    2150             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2151             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    2152             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2153             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x0),
    2154             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2155             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2156             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2157             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc),
    2158             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2159             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2160             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2161             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc),
    2162             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2163             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2164             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2165             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x88),
    2166             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2167             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    2168             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2169             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8c),
    2170             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2171             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    2172             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2173             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb0),
    2174             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2175             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
    2176             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2177             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb4),
    2178             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2179             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
    2180             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2181             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb8),
    2182             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2183             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2184             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2185             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xbc),
    2186             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2187             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2188             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2189             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc0),
    2190             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2191             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2192             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2193             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc4),
    2194             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2195             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2196             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2197             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x90),
    2198             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2199             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x2),
    2200             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2201             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x94),
    2202             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2203             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1),
    2204             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2205             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x98),
    2206             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2207             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    2208             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2209             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x9c),
    2210             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2211             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    2212             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2213             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa0),
    2214             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2215             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1),
    2216             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2217             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa4),
    2218             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2219             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2220             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2221             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa8),
    2222             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2223             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2224             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2225             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xac),
    2226             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2227             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2228             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2229             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10),
    2230             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2231             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    2232             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2233             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc),
    2234             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2235             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2236             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2237             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18),
    2238             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2239             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    2240             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2241             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x38),
    2242             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2243             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2244             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2245             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x3c),
    2246             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2247             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2248             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2249             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x40),
    2250             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2251             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2252             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2253             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x44),
    2254             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2255             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    2256             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2257             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x48),
    2258             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2259             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    2260             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2261             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4c),
    2262             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2263             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2264             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2265             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x70),
    2266             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2267             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    2268             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2269             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x74),
    2270             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2271             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2272             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2273             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x78),
    2274             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2275             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x8),
    2276             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2277             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x7c),
    2278             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2279             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    2280             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2281             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x80),
    2282             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2283             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    2284             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2285             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x84),
    2286             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2287             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2288             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2289             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x50),
    2290             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2291             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2292             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2293             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x54),
    2294             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2295             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
    2296             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2297             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x58),
    2298             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2299             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    2300             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2301             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x5c),
    2302             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2303             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2304             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2305             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x60),
    2306             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2307             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    2308             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2309             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x64),
    2310             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2311             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    2312             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2313             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x68),
    2314             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2315             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2316             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2317             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x6c),
    2318             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2319             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    2320             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2321             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x1c),
    2322             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2323             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x3),
    2324             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2325             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14),
    2326             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2327             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    2328             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2329             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x20),
    2330             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2331             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1c),
    2332             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2333             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x20),
    2334             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2335             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1c),
    2336             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2337             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
    2338             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2339             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2340             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2341             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x24),
    2342             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2343             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2344             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2345             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x28),
    2346             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2347             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2348             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2349             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x28),
    2350             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2351             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2352             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2353             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x2c),
    2354             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2355             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    2356             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2357             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x2c),
    2358             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2359             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    2360             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2361             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x30),
    2362             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2363             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1d),
    2364             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2365             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x30),
    2366             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2367             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1d),
    2368             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2369             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x34),
    2370             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2371             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    2372             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2373             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x34),
    2374             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2375             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    2376             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2377             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x38),
    2378             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2379             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    2380             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2381             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x38),
    2382             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2383             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    2384             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2385             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x3c),
    2386             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2387             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2388             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2389             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x3c),
    2390             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2391             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2392             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2393             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18),
    2394             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2395             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    2396             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2397             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18),
    2398             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2399             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x18),
    2400             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2401             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x50),
    2402             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2403             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2404             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2405             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x50),
    2406             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2407             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2408             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2409             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x54),
    2410             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2411             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2412             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2413             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x54),
    2414             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2415             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2416             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2417             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x58),
    2418             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2419             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2420             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2421             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x58),
    2422             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2423             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2424             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2425             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x5c),
    2426             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2427             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2428             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2429             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x5c),
    2430             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2431             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2432             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2433             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14),
    2434             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2435             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    2436             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2437             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14),
    2438             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2439             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    2440             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2441             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x48),
    2442             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2443             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2444             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2445             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x48),
    2446             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2447             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2448             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2449             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4c),
    2450             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2451             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2452             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2453             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4c),
    2454             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2455             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2456             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2457             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x40),
    2458             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2459             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    2460             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2461             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x40),
    2462             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2463             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    2464             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2465             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x44),
    2466             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2467             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    2468             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2469             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x44),
    2470             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2471             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1a),
    2472             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2473             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10),
    2474             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2475             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
    2476             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2477             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10),
    2478             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2479             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
    2480             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2481             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x60),
    2482             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2483             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2484             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2485             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x60),
    2486             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2487             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2488             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2489             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x64),
    2490             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2491             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    2492             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2493             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x64),
    2494             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2495             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    2496             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2497             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x70),
    2498             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2499             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    2500             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2501             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x70),
    2502             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2503             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    2504             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2505             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x74),
    2506             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2507             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2508             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2509             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x74),
    2510             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2511             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2512             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2513             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x68),
    2514             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2515             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2516             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2517             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x68),
    2518             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2519             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2520             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2521             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x6c),
    2522             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2523             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    2524             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2525             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x6c),
    2526             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2527             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    2528             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2529             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x78),
    2530             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2531             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2532             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2533             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x78),
    2534             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2535             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2536             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2537             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x7c),
    2538             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2539             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    2540             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2541             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x7c),
    2542             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2543             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    2544             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2545             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x88),
    2546             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2547             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2548             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2549             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x88),
    2550             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2551             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2552             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2553             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8c),
    2554             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2555             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2556             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2557             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x8c),
    2558             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2559             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2560             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2561             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x80),
    2562             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2563             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2564             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2565             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x80),
    2566             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2567             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2568             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2569             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x84),
    2570             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2571             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    2572             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2573             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x84),
    2574             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2575             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    2576             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2577             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x90),
    2578             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2579             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    2580             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2581             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x90),
    2582             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2583             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    2584             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2585             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x94),
    2586             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2587             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    2588             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2589             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x94),
    2590             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2591             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    2592             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2593             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa0),
    2594             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2595             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2596             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2597             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa0),
    2598             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2599             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2600             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2601             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa4),
    2602             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2603             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2604             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2605             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa4),
    2606             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2607             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2608             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2609             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x98),
    2610             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2611             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    2612             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2613             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x98),
    2614             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2615             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    2616             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2617             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x9c),
    2618             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2619             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    2620             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2621             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x9c),
    2622             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2623             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x4),
    2624             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2625             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa8),
    2626             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2627             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2628             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2629             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xa8),
    2630             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2631             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2632             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2633             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xac),
    2634             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2635             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2636             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2637             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xac),
    2638             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2639             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2640             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2641             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb8),
    2642             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2643             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2644             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2645             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb8),
    2646             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2647             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2648             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2649             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xbc),
    2650             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2651             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2652             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2653             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xbc),
    2654             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2655             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2656             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2657             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb0),
    2658             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2659             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2660             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2661             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb0),
    2662             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2663             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2664             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2665             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb4),
    2666             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2667             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2668             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2669             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xb4),
    2670             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2671             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2672             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2673             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc0),
    2674             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2675             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    2676             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2677             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc0),
    2678             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2679             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    2680             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2681             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc4),
    2682             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2683             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    2684             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2685             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc4),
    2686             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2687             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    2688             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2689             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd0),
    2690             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2691             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2692             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2693             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd0),
    2694             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2695             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2696             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2697             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd4),
    2698             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2699             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2700             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2701             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd4),
    2702             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2703             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2704             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2705             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc8),
    2706             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2707             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    2708             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2709             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xc8),
    2710             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2711             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    2712             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2713             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xcc),
    2714             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2715             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    2716             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2717             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xcc),
    2718             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2719             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    2720             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2721             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe8),
    2722             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2723             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2724             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2725             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe8),
    2726             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2727             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2728             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2729             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xec),
    2730             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2731             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    2732             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2733             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xec),
    2734             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2735             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x16),
    2736             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2737             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf0),
    2738             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2739             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2740             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2741             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf0),
    2742             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2743             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2744             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2745             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf4),
    2746             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2747             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2748             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2749             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf4),
    2750             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2751             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2752             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2753             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf8),
    2754             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2755             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2756             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2757             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xf8),
    2758             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2759             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2760             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2761             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xfc),
    2762             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2763             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x17),
    2764             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2765             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xfc),
    2766             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2767             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x17),
    2768             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2769             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x100),
    2770             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2771             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    2772             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2773             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x100),
    2774             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2775             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x13),
    2776             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2777             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x104),
    2778             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2779             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    2780             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2781             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x104),
    2782             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2783             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    2784             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2785             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe0),
    2786             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2787             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2788             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2789             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xe0),
    2790             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2791             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2792             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2793             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x118),
    2794             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2795             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2796             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2797             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x118),
    2798             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2799             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2800             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2801             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x11c),
    2802             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2803             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2804             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2805             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x11c),
    2806             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2807             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2808             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2809             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x120),
    2810             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2811             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2812             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2813             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x120),
    2814             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2815             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2816             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2817             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x124),
    2818             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2819             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2820             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2821             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x124),
    2822             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2823             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2824             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2825             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xdc),
    2826             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2827             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2828             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2829             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xdc),
    2830             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2831             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2832             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2833             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x110),
    2834             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2835             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2836             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2837             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x110),
    2838             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2839             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x15),
    2840             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2841             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x114),
    2842             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2843             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2844             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2845             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x114),
    2846             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2847             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x14),
    2848             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2849             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x108),
    2850             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2851             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2852             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2853             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x108),
    2854             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2855             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2856             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2857             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10c),
    2858             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2859             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2860             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2861             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x10c),
    2862             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2863             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x19),
    2864             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2865             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd8),
    2866             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2867             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
    2868             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2869             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0xd8),
    2870             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2871             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1b),
    2872             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2873             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x128),
    2874             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2875             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2876             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2877             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x128),
    2878             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2879             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2880             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2881             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x12c),
    2882             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2883             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2884             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2885             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x12c),
    2886             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2887             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2888             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2889             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x138),
    2890             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2891             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2892             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2893             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x138),
    2894             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2895             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2896             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2897             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x13c),
    2898             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2899             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2900             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2901             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x13c),
    2902             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2903             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    2904             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2905             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x130),
    2906             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2907             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2908             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2909             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x130),
    2910             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2911             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x12),
    2912             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2913             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x134),
    2914             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2915             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
    2916             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2917             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x134),
    2918             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2919             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xf),
    2920             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2921             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x140),
    2922             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2923             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2924             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2925             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x140),
    2926             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2927             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2928             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2929             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x144),
    2930             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2931             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2932             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2933             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x144),
    2934             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2935             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2936             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2937             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x150),
    2938             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2939             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2940             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2941             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x150),
    2942             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2943             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2944             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2945             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x154),
    2946             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2947             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2948             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2949             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x154),
    2950             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2951             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    2952             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2953             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x148),
    2954             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2955             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2956             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2957             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x148),
    2958             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2959             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    2960             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2961             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14c),
    2962             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2963             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2964             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2965             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x14c),
    2966             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2967             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x7),
    2968             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2969             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x158),
    2970             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2971             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    2972             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2973             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x158),
    2974             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2975             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    2976             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2977             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x15c),
    2978             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2979             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    2980             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2981             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x15c),
    2982             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2983             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    2984             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2985             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x168),
    2986             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2987             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    2988             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2989             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x168),
    2990             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2991             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xa),
    2992             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2993             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x16c),
    2994             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    2995             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    2996             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2997             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x16c),
    2998             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    2999             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x9),
    3000             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3001             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x160),
    3002             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3003             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    3004             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3005             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x160),
    3006             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3007             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    3008             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3009             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x164),
    3010             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3011             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    3012             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3013             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x164),
    3014             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3015             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x0),
    3016             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3017             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x170),
    3018             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3019             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    3020             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3021             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x170),
    3022             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3023             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    3024             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3025             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x174),
    3026             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3027             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    3028             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3029             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x174),
    3030             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3031             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    3032             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3033             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x180),
    3034             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3035             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    3036             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3037             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x180),
    3038             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3039             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    3040             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3041             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x184),
    3042             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3043             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    3044             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3045             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x184),
    3046             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3047             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    3048             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3049             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x178),
    3050             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3051             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    3052             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3053             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x178),
    3054             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3055             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x10),
    3056             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3057             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x17c),
    3058             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3059             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    3060             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3061             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x17c),
    3062             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3063             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    3064             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3065             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x188),
    3066             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3067             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    3068             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3069             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x188),
    3070             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3071             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    3072             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3073             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18c),
    3074             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3075             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    3076             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3077             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x18c),
    3078             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3079             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x5),
    3080             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3081             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x198),
    3082             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3083             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    3084             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3085             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x198),
    3086             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3087             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xc),
    3088             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3089             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x19c),
    3090             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3091             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    3092             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3093             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x19c),
    3094             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3095             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    3096             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3097             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x190),
    3098             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3099             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    3100             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3101             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x190),
    3102             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3103             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xe),
    3104             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3105             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x194),
    3106             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3107             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    3108             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3109             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x194),
    3110             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3111             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x6),
    3112             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3113             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x30),
    3114             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3115             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xd),
    3116             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3117             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x34),
    3118             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3119             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x11),
    3120             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3121             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x0),
    3122             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3123             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1d),
    3124             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3125             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x0),
    3126             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3127             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1d),
    3128             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3129             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4),
    3130             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3131             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1f),
    3132             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3133             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x4),
    3134             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3135             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0x1f),
    3136             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3137             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_ADDR, 0xFFFFFFFF, 0x2c),
    3138             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3139             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLB_SAMPLEDELAY_IND_DATA, 0xFFFFFFFF, 0xb),
    3140             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3141             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLOBALS_SAMPLE_SKEW, 0x000000FF, 0x1f),
    3142             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3143             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_GLOBALS_MUXSEL_SKEW, 0x000000FF, 0x22),
    3144             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3145             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLE_SKEW, 0x000000FF, 0x1),
    3146             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3147             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_SAMPLE_SKEW, 0x000000FF, 0x6),
    3148             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3149             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_MUXSEL_SKEW, 0x000000FF, 0x10),
    3150             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x10000),
    3151             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_SE_MUXSEL_SKEW, 0x000000FF, 0x15),
    3152             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffff, 0x0),
    3153             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRLC_SPM_DESER_START_SKEW, 0x000000FF, 0x35),
    3154             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xFFFFFFFF, 0xe0000000)
    3155             : };
    3156             : 
    3157             : static const struct soc15_reg_golden golden_settings_gc_10_3[] =
    3158             : {
    3159             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CS_CLK_CTRL, 0x78000000, 0x78000100),
    3160             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_PS_CLK_CTRL, 0xff7f0fff, 0x78000100),
    3161             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_RA0_CLK_CTRL, 0xff7f0fff, 0x30000100),
    3162             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_RA1_CLK_CTRL, 0xff7f0fff, 0x7e000100),
    3163             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCPF_GCR_CNTL, 0x0007ffff, 0x0000c000),
    3164             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0xffffffff, 0x00000280),
    3165             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x00800000),
    3166             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_EXCEPTION_CONTROL, 0x7fff0f1f, 0x00b80000),
    3167             :         SOC15_REG_GOLDEN_VALUE(GC, 0 ,mmGCEA_SDP_TAG_RESERVE0, 0xffffffff, 0x10100100),
    3168             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCEA_SDP_TAG_RESERVE1, 0xffffffff, 0x17000088),
    3169             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL_Sienna_Cichlid, 0x1ff1ffff, 0x00000500),
    3170             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCUTCL2_CGTT_CLK_CTRL_Sienna_Cichlid, 0xff000000, 0xff008080),
    3171             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCVM_L2_CGTT_CLK_CTRL_Sienna_Cichlid, 0xff000000, 0xff008080),
    3172             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGE_PC_CNTL, 0x003fffff, 0x00280400),
    3173             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    3174             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    3175             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CM_CTRL1, 0xff8fff0f, 0x580f1008),
    3176             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0xf7ffffff, 0x10f80988),
    3177             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmLDS_CONFIG,  0x00000020, 0x00000020),
    3178             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_CL_ENHANCE, 0xf17fffff, 0x01200007),
    3179             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_TIMEOUT_COUNTER, 0xffffffff, 0x00000800),
    3180             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0xffffffbf, 0x00000820),
    3181             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSPI_CONFIG_CNTL_1, 0xffffffff, 0x00070104),
    3182             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_CONFIG, 0xe07df47f, 0x00180070),
    3183             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER0_SELECT, 0xf0f001ff, 0x00000000),
    3184             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER1_SELECT, 0xf0f001ff, 0x00000000),
    3185             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER10_SELECT, 0xf0f001ff, 0x00000000),
    3186             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER11_SELECT, 0xf0f001ff, 0x00000000),
    3187             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER12_SELECT, 0xf0f001ff, 0x00000000),
    3188             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER13_SELECT, 0xf0f001ff, 0x00000000),
    3189             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER14_SELECT, 0xf0f001ff, 0x00000000),
    3190             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER15_SELECT, 0xf0f001ff, 0x00000000),
    3191             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER2_SELECT, 0xf0f001ff, 0x00000000),
    3192             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER3_SELECT, 0xf0f001ff, 0x00000000),
    3193             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER4_SELECT, 0xf0f001ff, 0x00000000),
    3194             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER5_SELECT, 0xf0f001ff, 0x00000000),
    3195             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER6_SELECT, 0xf0f001ff, 0x00000000),
    3196             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER7_SELECT, 0xf0f001ff, 0x00000000),
    3197             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER8_SELECT, 0xf0f001ff, 0x00000000),
    3198             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER9_SELECT, 0xf0f001ff, 0x00000000),
    3199             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSX_DEBUG_1, 0x00010000, 0x00010020),
    3200             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
    3201             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0xffbfffff, 0x00a00000)
    3202             : };
    3203             : 
    3204             : static const struct soc15_reg_golden golden_settings_gc_10_3_sienna_cichlid[] =
    3205             : {
    3206             :         /* Pending on emulation bring up */
    3207             : };
    3208             : 
    3209             : static const struct soc15_reg_golden golden_settings_gc_10_3_2[] =
    3210             : {
    3211             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CS_CLK_CTRL, 0xff7f0fff, 0x78000100),
    3212             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_PS_CLK_CTRL, 0xff7f0fff, 0x78000100),
    3213             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_RA0_CLK_CTRL, 0xff7f0fff, 0x30000100),
    3214             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_RA1_CLK_CTRL, 0xff7f0fff, 0x7e000100),
    3215             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCPF_GCR_CNTL, 0x0007ffff, 0x0000c000),
    3216             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0xffffffff, 0x00000280),
    3217             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x00800000),
    3218             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_EXCEPTION_CONTROL, 0x7fff0f1f, 0x00b80000),
    3219             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL_Sienna_Cichlid, 0x1ff1ffff, 0x00000500),
    3220             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCUTCL2_CGTT_CLK_CTRL_Sienna_Cichlid, 0xffffffff, 0xff008080),
    3221             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCVM_L2_CGTT_CLK_CTRL_Sienna_Cichlid, 0xffff8fff, 0xff008080),
    3222             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGE_PC_CNTL, 0x003fffff, 0x00280400),
    3223             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    3224             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    3225             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CM_CTRL1, 0xff8fff0f, 0x580f1008),
    3226             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0xf7ffffff, 0x00f80988),
    3227             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_CL_ENHANCE, 0xf17fffff, 0x01200007),
    3228             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_TIMEOUT_COUNTER, 0xffffffff, 0x00000800),
    3229             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0xffffffbf, 0x00000820),
    3230             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSPI_CONFIG_CNTL_1, 0xffffffff, 0x00070104),
    3231             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSPI_START_PHASE, 0x000000ff, 0x00000004),
    3232             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_CONFIG, 0xe07df47f, 0x00180070),
    3233             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER0_SELECT, 0xf0f001ff, 0x00000000),
    3234             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER1_SELECT, 0xf0f001ff, 0x00000000),
    3235             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER10_SELECT, 0xf0f001ff, 0x00000000),
    3236             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER11_SELECT, 0xf0f001ff, 0x00000000),
    3237             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER12_SELECT, 0xf0f001ff, 0x00000000),
    3238             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER13_SELECT, 0xf0f001ff, 0x00000000),
    3239             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER14_SELECT, 0xf0f001ff, 0x00000000),
    3240             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER15_SELECT, 0xf0f001ff, 0x00000000),
    3241             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER2_SELECT, 0xf0f001ff, 0x00000000),
    3242             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER3_SELECT, 0xf0f001ff, 0x00000000),
    3243             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER4_SELECT, 0xf0f001ff, 0x00000000),
    3244             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER5_SELECT, 0xf0f001ff, 0x00000000),
    3245             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER6_SELECT, 0xf0f001ff, 0x00000000),
    3246             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER7_SELECT, 0xf0f001ff, 0x00000000),
    3247             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER8_SELECT, 0xf0f001ff, 0x00000000),
    3248             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER9_SELECT, 0xf0f001ff, 0x00000000),
    3249             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
    3250             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0xffbfffff, 0x00a00000),
    3251             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmVGT_GS_MAX_WAVE_ID, 0x00000fff, 0x000003ff),
    3252             : 
    3253             :         /* This is not in GDB yet. Don't remove it. It fixes a GPU hang on Navy Flounder. */
    3254             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmLDS_CONFIG,  0x00000020, 0x00000020),
    3255             : };
    3256             : 
    3257             : static const struct soc15_reg_golden golden_settings_gc_10_3_vangogh[] =
    3258             : {
    3259             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_RA0_CLK_CTRL, 0xff7f0fff, 0x30000100),
    3260             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_RA1_CLK_CTRL, 0xff7f0fff, 0x7e000100),
    3261             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_PIPE_STEER, 0x000000ff, 0x000000e4),
    3262             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0xffffffff, 0x00000200),
    3263             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x00800000),
    3264             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_EXCEPTION_CONTROL, 0x7fff0f1f, 0x00b80000),
    3265             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGB_ADDR_CONFIG, 0x0c1807ff, 0x00000142),
    3266             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL_Vangogh, 0x1ff1ffff, 0x00000500),
    3267             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL1_PIPE_STEER, 0x000000ff, 0x000000e4),
    3268             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_0, 0x77777777, 0x32103210),
    3269             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_1, 0x77777777, 0x32103210),
    3270             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xfffffff3),
    3271             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xfffffff3),
    3272             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CM_CTRL1, 0xff8fff0f, 0x580f1008),
    3273             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0xf7ffffff, 0x00f80988),
    3274             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_CL_ENHANCE, 0xf17fffff, 0x01200007),
    3275             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_TIMEOUT_COUNTER, 0xffffffff, 0x00000800),
    3276             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0xffffffbf, 0x00000020),
    3277             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSPI_CONFIG_CNTL_1_Vangogh, 0xffffffff, 0x00070103),
    3278             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQG_CONFIG, 0x000017ff, 0x00001000),
    3279             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSX_DEBUG_1, 0x00010000, 0x00010020),
    3280             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
    3281             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0xffffffff, 0x00400000),
    3282             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmVGT_GS_MAX_WAVE_ID, 0x00000fff, 0x000000ff),
    3283             : 
    3284             :         /* This is not in GDB yet. Don't remove it. It fixes a GPU hang on VanGogh. */
    3285             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmLDS_CONFIG,  0x00000020, 0x00000020),
    3286             : };
    3287             : 
    3288             : static const struct soc15_reg_golden golden_settings_gc_10_3_3[] =
    3289             : {
    3290             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CS_CLK_CTRL, 0xff7f0fff, 0x78000100),
    3291             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_PIPE_STEER, 0x000000ff, 0x000000e4),
    3292             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCPF_GCR_CNTL, 0x0007ffff, 0x0000c200),
    3293             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0xffffffff, 0x00000280),
    3294             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x00800000),
    3295             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGB_ADDR_CONFIG, 0x0c1807ff, 0x00000242),
    3296             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL_Vangogh, 0x1ff1ffff, 0x00000500),
    3297             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL1_PIPE_STEER, 0x000000ff, 0x000000e4),
    3298             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_0, 0x77777777, 0x32103210),
    3299             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_1, 0x77777777, 0x32103210),
    3300             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xfffffff3),
    3301             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xfffffff3),
    3302             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CM_CTRL1, 0xff8fff0f, 0x580f1008),
    3303             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0xf7ffffff, 0x00f80988),
    3304             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmLDS_CONFIG, 0x000001ff, 0x00000020),
    3305             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_CL_ENHANCE, 0xf17fffff, 0x01200007),
    3306             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_TIMEOUT_COUNTER, 0xffffffff, 0x00000800),
    3307             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0xffffffbf, 0x00000820),
    3308             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
    3309             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0xffffffff, 0x00100000)
    3310             : };
    3311             : 
    3312             : static const struct soc15_reg_golden golden_settings_gc_10_3_4[] =
    3313             : {
    3314             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CS_CLK_CTRL, 0x78000000, 0x78000100),
    3315             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_RA0_CLK_CTRL, 0x30000000, 0x30000100),
    3316             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_RA1_CLK_CTRL, 0x7e000000, 0x7e000100),
    3317             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCPF_GCR_CNTL, 0x0007ffff, 0x0000c000),
    3318             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0x00000280, 0x00000280),
    3319             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0x07800000, 0x00800000),
    3320             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL_Sienna_Cichlid, 0x00001d00, 0x00000500),
    3321             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGE_PC_CNTL, 0x003c0000, 0x00280400),
    3322             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    3323             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    3324             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CM_CTRL1, 0x40000000, 0x580f1008),
    3325             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0x00040000, 0x00f80988),
    3326             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_CL_ENHANCE, 0x01000000, 0x01200007),
    3327             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_TIMEOUT_COUNTER, 0xffffffff, 0x00000800),
    3328             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0x00000800, 0x00000820),
    3329             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_CONFIG, 0x0000001f, 0x00180070),
    3330             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER0_SELECT, 0xf0f001ff, 0x00000000),
    3331             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER1_SELECT, 0xf0f001ff, 0x00000000),
    3332             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER10_SELECT, 0xf0f001ff, 0x00000000),
    3333             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER11_SELECT, 0xf0f001ff, 0x00000000),
    3334             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER12_SELECT, 0xf0f001ff, 0x00000000),
    3335             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER13_SELECT, 0xf0f001ff, 0x00000000),
    3336             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER14_SELECT, 0xf0f001ff, 0x00000000),
    3337             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER15_SELECT, 0xf0f001ff, 0x00000000),
    3338             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER2_SELECT, 0xf0f001ff, 0x00000000),
    3339             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER3_SELECT, 0xf0f001ff, 0x00000000),
    3340             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER4_SELECT, 0xf0f001ff, 0x00000000),
    3341             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER5_SELECT, 0xf0f001ff, 0x00000000),
    3342             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER6_SELECT, 0xf0f001ff, 0x00000000),
    3343             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER7_SELECT, 0xf0f001ff, 0x00000000),
    3344             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER8_SELECT, 0xf0f001ff, 0x00000000),
    3345             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER9_SELECT, 0xf0f001ff, 0x00000000),
    3346             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSX_DEBUG_1, 0x00010000, 0x00010020),
    3347             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0x01030000, 0x01030000),
    3348             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0x03a00000, 0x00a00000),
    3349             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmLDS_CONFIG,  0x00000020, 0x00000020)
    3350             : };
    3351             : 
    3352             : static const struct soc15_reg_golden golden_settings_gc_10_3_5[] = {
    3353             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CS_CLK_CTRL, 0x78000000, 0x78000100),
    3354             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_RA0_CLK_CTRL, 0xb0000ff0, 0x30000100),
    3355             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_RA1_CLK_CTRL, 0xff000000, 0x7e000100),
    3356             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCPF_GCR_CNTL, 0x0007ffff, 0x0000c000),
    3357             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0xffffffff, 0x00000280),
    3358             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x00800000),
    3359             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL_Sienna_Cichlid, 0x1ff1ffff, 0x00000500),
    3360             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    3361             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    3362             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CM_CTRL1, 0xff8fff0f, 0x580f1008),
    3363             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0xf7ffffff, 0x00f80988),
    3364             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmLDS_CONFIG, 0x000001ff, 0x00000020),
    3365             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_CL_ENHANCE, 0xf17fffff, 0x01200007),
    3366             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_CONFIG, 0xe07df47f, 0x00180070),
    3367             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER0_SELECT, 0xf0f001ff, 0x00000000),
    3368             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER1_SELECT, 0xf0f001ff, 0x00000000),
    3369             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER10_SELECT, 0xf0f001ff, 0x00000000),
    3370             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER11_SELECT, 0xf0f001ff, 0x00000000),
    3371             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER12_SELECT, 0xf0f001ff, 0x00000000),
    3372             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER13_SELECT, 0xf0f001ff, 0x00000000),
    3373             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER14_SELECT, 0xf0f001ff, 0x00000000),
    3374             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER15_SELECT, 0xf0f001ff, 0x00000000),
    3375             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER2_SELECT, 0xf0f001ff, 0x00000000),
    3376             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER3_SELECT, 0xf0f001ff, 0x00000000),
    3377             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER4_SELECT, 0xf0f001ff, 0x00000000),
    3378             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER5_SELECT, 0xf0f001ff, 0x00000000),
    3379             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER6_SELECT, 0xf0f001ff, 0x00000000),
    3380             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER7_SELECT, 0xf0f001ff, 0x00000000),
    3381             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER8_SELECT, 0xf0f001ff, 0x00000000),
    3382             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER9_SELECT, 0xf0f001ff, 0x00000000),
    3383             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX,0xfff7ffff, 0x01030000),
    3384             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0xffbfffff, 0x00a00000)
    3385             : };
    3386             : 
    3387             : static const struct soc15_reg_golden golden_settings_gc_10_0_cyan_skillfish[] = {
    3388             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGRBM_GFX_INDEX, 0xffffffff, 0xe0000000),
    3389             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGE_FAST_CLKS, 0x3fffffff, 0x0000493e),
    3390             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_CPF_CLK_CTRL, 0xfcff8fff, 0xf8000100),
    3391             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CLK_CTRL, 0xff7f0fff, 0x3c000100),
    3392             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCB_HW_CONTROL_3, 0xa0000000, 0xa0000000),
    3393             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCB_HW_CONTROL_4, 0x00008000, 0x003c8014),
    3394             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_DRAM_BURST_CTRL, 0x00000010, 0x00000017),
    3395             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_PIPE_STEER, 0xffffffff, 0xd8d8d8d8),
    3396             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_VC5_ENABLE, 0x00000003, 0x00000003),
    3397             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCP_SD_CNTL, 0x800007ff, 0x000005ff),
    3398             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG, 0xffffffff, 0x20000000),
    3399             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0xffffffff, 0x00000200),
    3400             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x04800000),
    3401             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_LAST_OF_BURST_CONFIG, 0xffffffff, 0x03860210),
    3402             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGB_ADDR_CONFIG, 0x0c1800ff, 0x00000044),
    3403             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL, 0x00009d00, 0x00008500),
    3404             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCMC_VM_CACHEABLE_DRAM_ADDRESS_END, 0xffffffff, 0x000fffff),
    3405             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL1_DRAM_BURST_CTRL, 0x00000010, 0x00000017),
    3406             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL1_PIPE_STEER, 0xfcfcfcfc, 0xd8d8d8d8),
    3407             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_0, 0x77707770, 0x21302130),
    3408             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_1, 0x77707770, 0x21302130),
    3409             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    3410             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
    3411             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CGTT_SCLK_CTRL, 0x10000000, 0x10000100),
    3412             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL2, 0xfc02002f, 0x9402002f),
    3413             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0x00002188, 0x00000188),
    3414             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE, 0x08000009, 0x08000009),
    3415             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_EVENT_CNTL_0, 0xcc3fcc03, 0x842a4c02),
    3416             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_LINE_STIPPLE_STATE, 0x0000000f, 0x00000000),
    3417             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmRMI_SPARE, 0xffff3109, 0xffff3101),
    3418             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_ARB_CONFIG, 0x00000100, 0x00000130),
    3419             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_LDS_CLK_CTRL, 0xffffffff, 0xffffffff),
    3420             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0x00030008, 0x01030000),
    3421             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0x00800000, 0x00800000)
    3422             : };
    3423             : 
    3424             : static const struct soc15_reg_golden golden_settings_gc_10_3_6[] =
    3425             : {
    3426             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CS_CLK_CTRL, 0xff7f0fff, 0x78000100),
    3427             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_PIPE_STEER, 0x000000ff, 0x00000044),
    3428             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCPF_GCR_CNTL, 0x0007ffff, 0x0000c200),
    3429             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0xffffffff, 0x00000280),
    3430             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x00800000),
    3431             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGB_ADDR_CONFIG, 0x0c1807ff, 0x00000042),
    3432             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL_Vangogh, 0x1ff1ffff, 0x00000500),
    3433             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL1_PIPE_STEER, 0x000000ff, 0x00000044),
    3434             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_0, 0x77777777, 0x32103210),
    3435             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_1, 0x77777777, 0x32103210),
    3436             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xfffffff3),
    3437             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xfffffff3),
    3438             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CM_CTRL1, 0xff8fff0f, 0x580f1008),
    3439             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0xf7ffffff, 0x00f80988),
    3440             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmLDS_CONFIG, 0x000001ff, 0x00000020),
    3441             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_CL_ENHANCE, 0xf17fffff, 0x01200007),
    3442             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_TIMEOUT_COUNTER, 0xffffffff, 0x00000800),
    3443             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0xffffffbf, 0x00000820),
    3444             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQG_CONFIG, 0x000017ff, 0x00001000),
    3445             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSX_DEBUG_1, 0xffffff7f, 0x00010020),
    3446             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
    3447             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0xffffffff, 0x00100000)
    3448             : };
    3449             : 
    3450             : static const struct soc15_reg_golden golden_settings_gc_10_3_7[] = {
    3451             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCGTT_SPI_CS_CLK_CTRL, 0xff7f0fff, 0x78000100),
    3452             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCH_PIPE_STEER, 0x000000ff, 0x000000e4),
    3453             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmCPF_GCR_CNTL, 0x0007ffff, 0x0000c200),
    3454             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0xffffffff, 0x00000280),
    3455             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x00800000),
    3456             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGB_ADDR_CONFIG, 0x0c1807ff, 0x00000041),
    3457             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL_Vangogh, 0x1ff1ffff, 0x00000500),
    3458             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL1_PIPE_STEER, 0x000000ff, 0x000000e4),
    3459             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_0, 0x77777777, 0x32103210),
    3460             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2_PIPE_STEER_1, 0x77777777, 0x32103210),
    3461             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xffffffff),
    3462             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_ADDR_MATCH_MASK, 0xffffffff, 0xffffffff),
    3463             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CM_CTRL1, 0xff8fff0f, 0x580f1008),
    3464             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2C_CTRL3, 0xf7ffffff, 0x00f80988),
    3465             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmLDS_CONFIG, 0x000001ff, 0x00000020),
    3466             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_CL_ENHANCE, 0xf000003f, 0x01200007),
    3467             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_BINNER_TIMEOUT_COUNTER, 0xffffffff, 0x00000800),
    3468             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0xffffffbf, 0x00000820),
    3469             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQG_CONFIG, 0x000017ff, 0x00001000),
    3470             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmSX_DEBUG_1, 0xffffff7f, 0x00010020),
    3471             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
    3472             :         SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0xffffffff, 0x00100000)
    3473             : };
    3474             : 
    3475             : #define DEFAULT_SH_MEM_CONFIG \
    3476             :         ((SH_MEM_ADDRESS_MODE_64 << SH_MEM_CONFIG__ADDRESS_MODE__SHIFT) | \
    3477             :          (SH_MEM_ALIGNMENT_MODE_UNALIGNED << SH_MEM_CONFIG__ALIGNMENT_MODE__SHIFT) | \
    3478             :          (SH_MEM_RETRY_MODE_ALL << SH_MEM_CONFIG__RETRY_MODE__SHIFT) | \
    3479             :          (3 << SH_MEM_CONFIG__INITIAL_INST_PREFETCH__SHIFT))
    3480             : 
    3481             : /* TODO: pending on golden setting value of gb address config */
    3482             : #define CYAN_SKILLFISH_GB_ADDR_CONFIG_GOLDEN 0x00100044
    3483             : 
    3484             : static void gfx_v10_0_set_ring_funcs(struct amdgpu_device *adev);
    3485             : static void gfx_v10_0_set_irq_funcs(struct amdgpu_device *adev);
    3486             : static void gfx_v10_0_set_gds_init(struct amdgpu_device *adev);
    3487             : static void gfx_v10_0_set_rlc_funcs(struct amdgpu_device *adev);
    3488             : static void gfx_v10_0_set_mqd_funcs(struct amdgpu_device *adev);
    3489             : static int gfx_v10_0_get_cu_info(struct amdgpu_device *adev,
    3490             :                                  struct amdgpu_cu_info *cu_info);
    3491             : static uint64_t gfx_v10_0_get_gpu_clock_counter(struct amdgpu_device *adev);
    3492             : static void gfx_v10_0_select_se_sh(struct amdgpu_device *adev, u32 se_num,
    3493             :                                    u32 sh_num, u32 instance);
    3494             : static u32 gfx_v10_0_get_wgp_active_bitmap_per_sh(struct amdgpu_device *adev);
    3495             : 
    3496             : static int gfx_v10_0_rlc_backdoor_autoload_buffer_init(struct amdgpu_device *adev);
    3497             : static void gfx_v10_0_rlc_backdoor_autoload_buffer_fini(struct amdgpu_device *adev);
    3498             : static int gfx_v10_0_rlc_backdoor_autoload_enable(struct amdgpu_device *adev);
    3499             : static int gfx_v10_0_wait_for_rlc_autoload_complete(struct amdgpu_device *adev);
    3500             : static void gfx_v10_0_ring_emit_ce_meta(struct amdgpu_ring *ring, bool resume);
    3501             : static void gfx_v10_0_ring_emit_de_meta(struct amdgpu_ring *ring, bool resume);
    3502             : static void gfx_v10_0_ring_emit_frame_cntl(struct amdgpu_ring *ring, bool start, bool secure);
    3503             : static u32 gfx_v10_3_get_disabled_sa(struct amdgpu_device *adev);
    3504             : static void gfx_v10_3_program_pbb_mode(struct amdgpu_device *adev);
    3505             : static void gfx_v10_3_set_power_brake_sequence(struct amdgpu_device *adev);
    3506             : static void gfx_v10_0_ring_invalidate_tlbs(struct amdgpu_ring *ring,
    3507             :                                            uint16_t pasid, uint32_t flush_type,
    3508             :                                            bool all_hub, uint8_t dst_sel);
    3509             : 
    3510           0 : static void gfx10_kiq_set_resources(struct amdgpu_ring *kiq_ring, uint64_t queue_mask)
    3511             : {
    3512           0 :         amdgpu_ring_write(kiq_ring, PACKET3(PACKET3_SET_RESOURCES, 6));
    3513           0 :         amdgpu_ring_write(kiq_ring, PACKET3_SET_RESOURCES_VMID_MASK(0) |
    3514             :                           PACKET3_SET_RESOURCES_QUEUE_TYPE(0)); /* vmid_mask:0 queue_type:0 (KIQ) */
    3515           0 :         amdgpu_ring_write(kiq_ring, lower_32_bits(queue_mask)); /* queue mask lo */
    3516           0 :         amdgpu_ring_write(kiq_ring, upper_32_bits(queue_mask)); /* queue mask hi */
    3517           0 :         amdgpu_ring_write(kiq_ring, 0); /* gws mask lo */
    3518           0 :         amdgpu_ring_write(kiq_ring, 0); /* gws mask hi */
    3519           0 :         amdgpu_ring_write(kiq_ring, 0); /* oac mask */
    3520           0 :         amdgpu_ring_write(kiq_ring, 0); /* gds heap base:0, gds heap size:0 */
    3521           0 : }
    3522             : 
    3523           0 : static void gfx10_kiq_map_queues(struct amdgpu_ring *kiq_ring,
    3524             :                                  struct amdgpu_ring *ring)
    3525             : {
    3526           0 :         uint64_t mqd_addr = amdgpu_bo_gpu_offset(ring->mqd_obj);
    3527           0 :         uint64_t wptr_addr = ring->wptr_gpu_addr;
    3528           0 :         uint32_t eng_sel = 0;
    3529             : 
    3530           0 :         switch (ring->funcs->type) {
    3531             :         case AMDGPU_RING_TYPE_COMPUTE:
    3532             :                 eng_sel = 0;
    3533             :                 break;
    3534             :         case AMDGPU_RING_TYPE_GFX:
    3535           0 :                 eng_sel = 4;
    3536           0 :                 break;
    3537             :         case AMDGPU_RING_TYPE_MES:
    3538           0 :                 eng_sel = 5;
    3539           0 :                 break;
    3540             :         default:
    3541           0 :                 WARN_ON(1);
    3542             :         }
    3543             : 
    3544           0 :         amdgpu_ring_write(kiq_ring, PACKET3(PACKET3_MAP_QUEUES, 5));
    3545             :         /* Q_sel:0, vmid:0, vidmem: 1, engine:0, num_Q:1*/
    3546           0 :         amdgpu_ring_write(kiq_ring, /* Q_sel: 0, vmid: 0, engine: 0, num_Q: 1 */
    3547             :                           PACKET3_MAP_QUEUES_QUEUE_SEL(0) | /* Queue_Sel */
    3548           0 :                           PACKET3_MAP_QUEUES_VMID(0) | /* VMID */
    3549           0 :                           PACKET3_MAP_QUEUES_QUEUE(ring->queue) |
    3550           0 :                           PACKET3_MAP_QUEUES_PIPE(ring->pipe) |
    3551           0 :                           PACKET3_MAP_QUEUES_ME((ring->me == 1 ? 0 : 1)) |
    3552           0 :                           PACKET3_MAP_QUEUES_QUEUE_TYPE(0) | /*queue_type: normal compute queue */
    3553           0 :                           PACKET3_MAP_QUEUES_ALLOC_FORMAT(0) | /* alloc format: all_on_one_pipe */
    3554           0 :                           PACKET3_MAP_QUEUES_ENGINE_SEL(eng_sel) |
    3555             :                           PACKET3_MAP_QUEUES_NUM_QUEUES(1)); /* num_queues: must be 1 */
    3556           0 :         amdgpu_ring_write(kiq_ring, PACKET3_MAP_QUEUES_DOORBELL_OFFSET(ring->doorbell_index));
    3557           0 :         amdgpu_ring_write(kiq_ring, lower_32_bits(mqd_addr));
    3558           0 :         amdgpu_ring_write(kiq_ring, upper_32_bits(mqd_addr));
    3559           0 :         amdgpu_ring_write(kiq_ring, lower_32_bits(wptr_addr));
    3560           0 :         amdgpu_ring_write(kiq_ring, upper_32_bits(wptr_addr));
    3561           0 : }
    3562             : 
    3563           0 : static void gfx10_kiq_unmap_queues(struct amdgpu_ring *kiq_ring,
    3564             :                                    struct amdgpu_ring *ring,
    3565             :                                    enum amdgpu_unmap_queues_action action,
    3566             :                                    u64 gpu_addr, u64 seq)
    3567             : {
    3568           0 :         struct amdgpu_device *adev = kiq_ring->adev;
    3569           0 :         uint32_t eng_sel = ring->funcs->type == AMDGPU_RING_TYPE_GFX ? 4 : 0;
    3570             : 
    3571           0 :         if (adev->enable_mes && !adev->gfx.kiq.ring.sched.ready) {
    3572           0 :                 amdgpu_mes_unmap_legacy_queue(adev, ring, action, gpu_addr, seq);
    3573           0 :                 return;
    3574             :         }
    3575             : 
    3576           0 :         amdgpu_ring_write(kiq_ring, PACKET3(PACKET3_UNMAP_QUEUES, 4));
    3577           0 :         amdgpu_ring_write(kiq_ring, /* Q_sel: 0, vmid: 0, engine: 0, num_Q: 1 */
    3578             :                           PACKET3_UNMAP_QUEUES_ACTION(action) |
    3579           0 :                           PACKET3_UNMAP_QUEUES_QUEUE_SEL(0) |
    3580           0 :                           PACKET3_UNMAP_QUEUES_ENGINE_SEL(eng_sel) |
    3581             :                           PACKET3_UNMAP_QUEUES_NUM_QUEUES(1));
    3582           0 :         amdgpu_ring_write(kiq_ring,
    3583           0 :                   PACKET3_UNMAP_QUEUES_DOORBELL_OFFSET0(ring->doorbell_index));
    3584             : 
    3585           0 :         if (action == PREEMPT_QUEUES_NO_UNMAP) {
    3586           0 :                 amdgpu_ring_write(kiq_ring, lower_32_bits(gpu_addr));
    3587           0 :                 amdgpu_ring_write(kiq_ring, upper_32_bits(gpu_addr));
    3588           0 :                 amdgpu_ring_write(kiq_ring, seq);
    3589             :         } else {
    3590           0 :                 amdgpu_ring_write(kiq_ring, 0);
    3591           0 :                 amdgpu_ring_write(kiq_ring, 0);
    3592           0 :                 amdgpu_ring_write(kiq_ring, 0);
    3593             :         }
    3594             : }
    3595             : 
    3596           0 : static void gfx10_kiq_query_status(struct amdgpu_ring *kiq_ring,
    3597             :                                    struct amdgpu_ring *ring,
    3598             :                                    u64 addr,
    3599             :                                    u64 seq)
    3600             : {
    3601           0 :         uint32_t eng_sel = ring->funcs->type == AMDGPU_RING_TYPE_GFX ? 4 : 0;
    3602             : 
    3603           0 :         amdgpu_ring_write(kiq_ring, PACKET3(PACKET3_QUERY_STATUS, 5));
    3604           0 :         amdgpu_ring_write(kiq_ring,
    3605             :                           PACKET3_QUERY_STATUS_CONTEXT_ID(0) |
    3606             :                           PACKET3_QUERY_STATUS_INTERRUPT_SEL(0) |
    3607             :                           PACKET3_QUERY_STATUS_COMMAND(2));
    3608           0 :         amdgpu_ring_write(kiq_ring, /* Q_sel: 0, vmid: 0, engine: 0, num_Q: 1 */
    3609           0 :                           PACKET3_QUERY_STATUS_DOORBELL_OFFSET(ring->doorbell_index) |
    3610           0 :                           PACKET3_QUERY_STATUS_ENG_SEL(eng_sel));
    3611           0 :         amdgpu_ring_write(kiq_ring, lower_32_bits(addr));
    3612           0 :         amdgpu_ring_write(kiq_ring, upper_32_bits(addr));
    3613           0 :         amdgpu_ring_write(kiq_ring, lower_32_bits(seq));
    3614           0 :         amdgpu_ring_write(kiq_ring, upper_32_bits(seq));
    3615           0 : }
    3616             : 
    3617           0 : static void gfx10_kiq_invalidate_tlbs(struct amdgpu_ring *kiq_ring,
    3618             :                                 uint16_t pasid, uint32_t flush_type,
    3619             :                                 bool all_hub)
    3620             : {
    3621           0 :         gfx_v10_0_ring_invalidate_tlbs(kiq_ring, pasid, flush_type, all_hub, 1);
    3622           0 : }
    3623             : 
    3624             : static const struct kiq_pm4_funcs gfx_v10_0_kiq_pm4_funcs = {
    3625             :         .kiq_set_resources = gfx10_kiq_set_resources,
    3626             :         .kiq_map_queues = gfx10_kiq_map_queues,
    3627             :         .kiq_unmap_queues = gfx10_kiq_unmap_queues,
    3628             :         .kiq_query_status = gfx10_kiq_query_status,
    3629             :         .kiq_invalidate_tlbs = gfx10_kiq_invalidate_tlbs,
    3630             :         .set_resources_size = 8,
    3631             :         .map_queues_size = 7,
    3632             :         .unmap_queues_size = 6,
    3633             :         .query_status_size = 7,
    3634             :         .invalidate_tlbs_size = 2,
    3635             : };
    3636             : 
    3637             : static void gfx_v10_0_set_kiq_pm4_funcs(struct amdgpu_device *adev)
    3638             : {
    3639           0 :         adev->gfx.kiq.pmf = &gfx_v10_0_kiq_pm4_funcs;
    3640             : }
    3641             : 
    3642           0 : static void gfx_v10_0_init_spm_golden_registers(struct amdgpu_device *adev)
    3643             : {
    3644           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    3645             :         case IP_VERSION(10, 1, 10):
    3646           0 :                 soc15_program_register_sequence(adev,
    3647             :                                                 golden_settings_gc_rlc_spm_10_0_nv10,
    3648             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_rlc_spm_10_0_nv10));
    3649           0 :                 break;
    3650             :         case IP_VERSION(10, 1, 1):
    3651           0 :                 soc15_program_register_sequence(adev,
    3652             :                                                 golden_settings_gc_rlc_spm_10_1_nv14,
    3653             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_rlc_spm_10_1_nv14));
    3654           0 :                 break;
    3655             :         case IP_VERSION(10, 1, 2):
    3656           0 :                 soc15_program_register_sequence(adev,
    3657             :                                                 golden_settings_gc_rlc_spm_10_1_2_nv12,
    3658             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_rlc_spm_10_1_2_nv12));
    3659           0 :                 break;
    3660             :         default:
    3661             :                 break;
    3662             :         }
    3663           0 : }
    3664             : 
    3665           0 : static void gfx_v10_0_init_golden_registers(struct amdgpu_device *adev)
    3666             : {
    3667           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    3668             :         case IP_VERSION(10, 1, 10):
    3669           0 :                 soc15_program_register_sequence(adev,
    3670             :                                                 golden_settings_gc_10_1,
    3671             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_1));
    3672           0 :                 soc15_program_register_sequence(adev,
    3673             :                                                 golden_settings_gc_10_0_nv10,
    3674             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_0_nv10));
    3675           0 :                 break;
    3676             :         case IP_VERSION(10, 1, 1):
    3677           0 :                 soc15_program_register_sequence(adev,
    3678             :                                                 golden_settings_gc_10_1_1,
    3679             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_1_1));
    3680           0 :                 soc15_program_register_sequence(adev,
    3681             :                                                 golden_settings_gc_10_1_nv14,
    3682             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_1_nv14));
    3683           0 :                 break;
    3684             :         case IP_VERSION(10, 1, 2):
    3685           0 :                 soc15_program_register_sequence(adev,
    3686             :                                                 golden_settings_gc_10_1_2,
    3687             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_1_2));
    3688           0 :                 soc15_program_register_sequence(adev,
    3689             :                                                 golden_settings_gc_10_1_2_nv12,
    3690             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_1_2_nv12));
    3691           0 :                 break;
    3692             :         case IP_VERSION(10, 3, 0):
    3693           0 :                 soc15_program_register_sequence(adev,
    3694             :                                                 golden_settings_gc_10_3,
    3695             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_3));
    3696           0 :                 soc15_program_register_sequence(adev,
    3697             :                                                 golden_settings_gc_10_3_sienna_cichlid,
    3698             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_3_sienna_cichlid));
    3699           0 :                 break;
    3700             :         case IP_VERSION(10, 3, 2):
    3701           0 :                 soc15_program_register_sequence(adev,
    3702             :                                                 golden_settings_gc_10_3_2,
    3703             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_3_2));
    3704           0 :                 break;
    3705             :         case IP_VERSION(10, 3, 1):
    3706           0 :                 soc15_program_register_sequence(adev,
    3707             :                                                 golden_settings_gc_10_3_vangogh,
    3708             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_3_vangogh));
    3709           0 :                 break;
    3710             :         case IP_VERSION(10, 3, 3):
    3711           0 :                 soc15_program_register_sequence(adev,
    3712             :                                                 golden_settings_gc_10_3_3,
    3713             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_3_3));
    3714           0 :                 break;
    3715             :         case IP_VERSION(10, 3, 4):
    3716           0 :                 soc15_program_register_sequence(adev,
    3717             :                                                 golden_settings_gc_10_3_4,
    3718             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_3_4));
    3719           0 :                 break;
    3720             :         case IP_VERSION(10, 3, 5):
    3721           0 :                 soc15_program_register_sequence(adev,
    3722             :                                                 golden_settings_gc_10_3_5,
    3723             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_3_5));
    3724           0 :                 break;
    3725             :         case IP_VERSION(10, 1, 3):
    3726             :         case IP_VERSION(10, 1, 4):
    3727           0 :                 soc15_program_register_sequence(adev,
    3728             :                                                 golden_settings_gc_10_0_cyan_skillfish,
    3729             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_0_cyan_skillfish));
    3730           0 :                 break;
    3731             :         case IP_VERSION(10, 3, 6):
    3732           0 :                 soc15_program_register_sequence(adev,
    3733             :                                                 golden_settings_gc_10_3_6,
    3734             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_3_6));
    3735           0 :                 break;
    3736             :         case IP_VERSION(10, 3, 7):
    3737           0 :                 soc15_program_register_sequence(adev,
    3738             :                                                 golden_settings_gc_10_3_7,
    3739             :                                                 (const u32)ARRAY_SIZE(golden_settings_gc_10_3_7));
    3740           0 :                 break;
    3741             :         default:
    3742             :                 break;
    3743             :         }
    3744           0 :         gfx_v10_0_init_spm_golden_registers(adev);
    3745           0 : }
    3746             : 
    3747           0 : static void gfx_v10_0_write_data_to_reg(struct amdgpu_ring *ring, int eng_sel,
    3748             :                                        bool wc, uint32_t reg, uint32_t val)
    3749             : {
    3750           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
    3751           0 :         amdgpu_ring_write(ring, WRITE_DATA_ENGINE_SEL(eng_sel) |
    3752           0 :                           WRITE_DATA_DST_SEL(0) | (wc ? WR_CONFIRM : 0));
    3753           0 :         amdgpu_ring_write(ring, reg);
    3754           0 :         amdgpu_ring_write(ring, 0);
    3755           0 :         amdgpu_ring_write(ring, val);
    3756           0 : }
    3757             : 
    3758           0 : static void gfx_v10_0_wait_reg_mem(struct amdgpu_ring *ring, int eng_sel,
    3759             :                                   int mem_space, int opt, uint32_t addr0,
    3760             :                                   uint32_t addr1, uint32_t ref, uint32_t mask,
    3761             :                                   uint32_t inv)
    3762             : {
    3763           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_WAIT_REG_MEM, 5));
    3764           0 :         amdgpu_ring_write(ring,
    3765             :                           /* memory (1) or register (0) */
    3766           0 :                           (WAIT_REG_MEM_MEM_SPACE(mem_space) |
    3767           0 :                            WAIT_REG_MEM_OPERATION(opt) | /* wait */
    3768           0 :                            WAIT_REG_MEM_FUNCTION(3) |  /* equal */
    3769           0 :                            WAIT_REG_MEM_ENGINE(eng_sel)));
    3770             : 
    3771           0 :         if (mem_space)
    3772           0 :                 BUG_ON(addr0 & 0x3); /* Dword align */
    3773           0 :         amdgpu_ring_write(ring, addr0);
    3774           0 :         amdgpu_ring_write(ring, addr1);
    3775           0 :         amdgpu_ring_write(ring, ref);
    3776           0 :         amdgpu_ring_write(ring, mask);
    3777           0 :         amdgpu_ring_write(ring, inv); /* poll interval */
    3778           0 : }
    3779             : 
    3780           0 : static int gfx_v10_0_ring_test_ring(struct amdgpu_ring *ring)
    3781             : {
    3782           0 :         struct amdgpu_device *adev = ring->adev;
    3783           0 :         uint32_t scratch = SOC15_REG_OFFSET(GC, 0, mmSCRATCH_REG0);
    3784           0 :         uint32_t tmp = 0;
    3785             :         unsigned i;
    3786             :         int r;
    3787             : 
    3788           0 :         WREG32(scratch, 0xCAFEDEAD);
    3789           0 :         r = amdgpu_ring_alloc(ring, 3);
    3790           0 :         if (r) {
    3791           0 :                 DRM_ERROR("amdgpu: cp failed to lock ring %d (%d).\n",
    3792             :                           ring->idx, r);
    3793           0 :                 return r;
    3794             :         }
    3795             : 
    3796           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_SET_UCONFIG_REG, 1));
    3797           0 :         amdgpu_ring_write(ring, scratch -
    3798             :                           PACKET3_SET_UCONFIG_REG_START);
    3799           0 :         amdgpu_ring_write(ring, 0xDEADBEEF);
    3800           0 :         amdgpu_ring_commit(ring);
    3801             : 
    3802           0 :         for (i = 0; i < adev->usec_timeout; i++) {
    3803           0 :                 tmp = RREG32(scratch);
    3804           0 :                 if (tmp == 0xDEADBEEF)
    3805             :                         break;
    3806           0 :                 if (amdgpu_emu_mode == 1)
    3807           0 :                         msleep(1);
    3808             :                 else
    3809             :                         udelay(1);
    3810             :         }
    3811             : 
    3812           0 :         if (i >= adev->usec_timeout)
    3813           0 :                 r = -ETIMEDOUT;
    3814             : 
    3815             :         return r;
    3816             : }
    3817             : 
    3818           0 : static int gfx_v10_0_ring_test_ib(struct amdgpu_ring *ring, long timeout)
    3819             : {
    3820           0 :         struct amdgpu_device *adev = ring->adev;
    3821             :         struct amdgpu_ib ib;
    3822           0 :         struct dma_fence *f = NULL;
    3823             :         unsigned index;
    3824             :         uint64_t gpu_addr;
    3825             :         volatile uint32_t *cpu_ptr;
    3826             :         long r;
    3827             : 
    3828           0 :         memset(&ib, 0, sizeof(ib));
    3829             : 
    3830           0 :         if (ring->is_mes_queue) {
    3831             :                 uint32_t padding, offset;
    3832             : 
    3833           0 :                 offset = amdgpu_mes_ctx_get_offs(ring, AMDGPU_MES_CTX_IB_OFFS);
    3834           0 :                 padding = amdgpu_mes_ctx_get_offs(ring,
    3835             :                                                   AMDGPU_MES_CTX_PADDING_OFFS);
    3836             : 
    3837           0 :                 ib.gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset);
    3838           0 :                 ib.ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset);
    3839             : 
    3840           0 :                 gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, padding);
    3841           0 :                 cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, padding);
    3842           0 :                 *cpu_ptr = cpu_to_le32(0xCAFEDEAD);
    3843             :         } else {
    3844           0 :                 r = amdgpu_device_wb_get(adev, &index);
    3845           0 :                 if (r)
    3846             :                         return r;
    3847             : 
    3848           0 :                 gpu_addr = adev->wb.gpu_addr + (index * 4);
    3849           0 :                 adev->wb.wb[index] = cpu_to_le32(0xCAFEDEAD);
    3850           0 :                 cpu_ptr = &adev->wb.wb[index];
    3851             : 
    3852           0 :                 r = amdgpu_ib_get(adev, NULL, 20, AMDGPU_IB_POOL_DIRECT, &ib);
    3853           0 :                 if (r) {
    3854           0 :                         DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r);
    3855           0 :                         goto err1;
    3856             :                 }
    3857             :         }
    3858             : 
    3859           0 :         ib.ptr[0] = PACKET3(PACKET3_WRITE_DATA, 3);
    3860           0 :         ib.ptr[1] = WRITE_DATA_DST_SEL(5) | WR_CONFIRM;
    3861           0 :         ib.ptr[2] = lower_32_bits(gpu_addr);
    3862           0 :         ib.ptr[3] = upper_32_bits(gpu_addr);
    3863           0 :         ib.ptr[4] = 0xDEADBEEF;
    3864           0 :         ib.length_dw = 5;
    3865             : 
    3866           0 :         r = amdgpu_ib_schedule(ring, 1, &ib, NULL, &f);
    3867           0 :         if (r)
    3868             :                 goto err2;
    3869             : 
    3870           0 :         r = dma_fence_wait_timeout(f, false, timeout);
    3871           0 :         if (r == 0) {
    3872             :                 r = -ETIMEDOUT;
    3873             :                 goto err2;
    3874           0 :         } else if (r < 0) {
    3875             :                 goto err2;
    3876             :         }
    3877             : 
    3878           0 :         if (le32_to_cpu(*cpu_ptr) == 0xDEADBEEF)
    3879             :                 r = 0;
    3880             :         else
    3881           0 :                 r = -EINVAL;
    3882             : err2:
    3883           0 :         if (!ring->is_mes_queue)
    3884           0 :                 amdgpu_ib_free(adev, &ib, NULL);
    3885           0 :         dma_fence_put(f);
    3886             : err1:
    3887           0 :         if (!ring->is_mes_queue)
    3888           0 :                 amdgpu_device_wb_free(adev, index);
    3889           0 :         return r;
    3890             : }
    3891             : 
    3892           0 : static void gfx_v10_0_free_microcode(struct amdgpu_device *adev)
    3893             : {
    3894           0 :         release_firmware(adev->gfx.pfp_fw);
    3895           0 :         adev->gfx.pfp_fw = NULL;
    3896           0 :         release_firmware(adev->gfx.me_fw);
    3897           0 :         adev->gfx.me_fw = NULL;
    3898           0 :         release_firmware(adev->gfx.ce_fw);
    3899           0 :         adev->gfx.ce_fw = NULL;
    3900           0 :         release_firmware(adev->gfx.rlc_fw);
    3901           0 :         adev->gfx.rlc_fw = NULL;
    3902           0 :         release_firmware(adev->gfx.mec_fw);
    3903           0 :         adev->gfx.mec_fw = NULL;
    3904           0 :         release_firmware(adev->gfx.mec2_fw);
    3905           0 :         adev->gfx.mec2_fw = NULL;
    3906             : 
    3907           0 :         kfree(adev->gfx.rlc.register_list_format);
    3908           0 : }
    3909             : 
    3910           0 : static void gfx_v10_0_check_fw_write_wait(struct amdgpu_device *adev)
    3911             : {
    3912           0 :         adev->gfx.cp_fw_write_wait = false;
    3913             : 
    3914           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    3915             :         case IP_VERSION(10, 1, 10):
    3916             :         case IP_VERSION(10, 1, 2):
    3917             :         case IP_VERSION(10, 1, 1):
    3918             :         case IP_VERSION(10, 1, 3):
    3919             :         case IP_VERSION(10, 1, 4):
    3920           0 :                 if ((adev->gfx.me_fw_version >= 0x00000046) &&
    3921           0 :                     (adev->gfx.me_feature_version >= 27) &&
    3922           0 :                     (adev->gfx.pfp_fw_version >= 0x00000068) &&
    3923           0 :                     (adev->gfx.pfp_feature_version >= 27) &&
    3924           0 :                     (adev->gfx.mec_fw_version >= 0x0000005b) &&
    3925           0 :                     (adev->gfx.mec_feature_version >= 27))
    3926           0 :                         adev->gfx.cp_fw_write_wait = true;
    3927             :                 break;
    3928             :         case IP_VERSION(10, 3, 0):
    3929             :         case IP_VERSION(10, 3, 2):
    3930             :         case IP_VERSION(10, 3, 1):
    3931             :         case IP_VERSION(10, 3, 4):
    3932             :         case IP_VERSION(10, 3, 5):
    3933             :         case IP_VERSION(10, 3, 6):
    3934             :         case IP_VERSION(10, 3, 3):
    3935             :         case IP_VERSION(10, 3, 7):
    3936           0 :                 adev->gfx.cp_fw_write_wait = true;
    3937           0 :                 break;
    3938             :         default:
    3939             :                 break;
    3940             :         }
    3941             : 
    3942           0 :         if (!adev->gfx.cp_fw_write_wait)
    3943           0 :                 DRM_WARN_ONCE("CP firmware version too old, please update!");
    3944           0 : }
    3945             : 
    3946             : 
    3947           0 : static void gfx_v10_0_init_rlc_ext_microcode(struct amdgpu_device *adev)
    3948             : {
    3949             :         const struct rlc_firmware_header_v2_1 *rlc_hdr;
    3950             : 
    3951           0 :         rlc_hdr = (const struct rlc_firmware_header_v2_1 *)adev->gfx.rlc_fw->data;
    3952           0 :         adev->gfx.rlc_srlc_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_cntl_ucode_ver);
    3953           0 :         adev->gfx.rlc_srlc_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_cntl_feature_ver);
    3954           0 :         adev->gfx.rlc.save_restore_list_cntl_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_cntl_size_bytes);
    3955           0 :         adev->gfx.rlc.save_restore_list_cntl = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_cntl_offset_bytes);
    3956           0 :         adev->gfx.rlc_srlg_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_gpm_ucode_ver);
    3957           0 :         adev->gfx.rlc_srlg_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_gpm_feature_ver);
    3958           0 :         adev->gfx.rlc.save_restore_list_gpm_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_gpm_size_bytes);
    3959           0 :         adev->gfx.rlc.save_restore_list_gpm = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_gpm_offset_bytes);
    3960           0 :         adev->gfx.rlc_srls_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_srm_ucode_ver);
    3961           0 :         adev->gfx.rlc_srls_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_srm_feature_ver);
    3962           0 :         adev->gfx.rlc.save_restore_list_srm_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_srm_size_bytes);
    3963           0 :         adev->gfx.rlc.save_restore_list_srm = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_srm_offset_bytes);
    3964           0 :         adev->gfx.rlc.reg_list_format_direct_reg_list_length =
    3965           0 :                         le32_to_cpu(rlc_hdr->reg_list_format_direct_reg_list_length);
    3966           0 : }
    3967             : 
    3968             : static void gfx_v10_0_init_rlc_iram_dram_microcode(struct amdgpu_device *adev)
    3969             : {
    3970             :         const struct rlc_firmware_header_v2_2 *rlc_hdr;
    3971             : 
    3972           0 :         rlc_hdr = (const struct rlc_firmware_header_v2_2 *)adev->gfx.rlc_fw->data;
    3973           0 :         adev->gfx.rlc.rlc_iram_ucode_size_bytes = le32_to_cpu(rlc_hdr->rlc_iram_ucode_size_bytes);
    3974           0 :         adev->gfx.rlc.rlc_iram_ucode = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->rlc_iram_ucode_offset_bytes);
    3975           0 :         adev->gfx.rlc.rlc_dram_ucode_size_bytes = le32_to_cpu(rlc_hdr->rlc_dram_ucode_size_bytes);
    3976           0 :         adev->gfx.rlc.rlc_dram_ucode = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->rlc_dram_ucode_offset_bytes);
    3977             : }
    3978             : 
    3979           0 : static void gfx_v10_0_init_tap_delays_microcode(struct amdgpu_device *adev)
    3980             : {
    3981             :         const struct rlc_firmware_header_v2_4 *rlc_hdr;
    3982             : 
    3983           0 :         rlc_hdr = (const struct rlc_firmware_header_v2_4 *)adev->gfx.rlc_fw->data;
    3984           0 :         adev->gfx.rlc.global_tap_delays_ucode_size_bytes = le32_to_cpu(rlc_hdr->global_tap_delays_ucode_size_bytes);
    3985           0 :         adev->gfx.rlc.global_tap_delays_ucode = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->global_tap_delays_ucode_offset_bytes);
    3986           0 :         adev->gfx.rlc.se0_tap_delays_ucode_size_bytes = le32_to_cpu(rlc_hdr->se0_tap_delays_ucode_size_bytes);
    3987           0 :         adev->gfx.rlc.se0_tap_delays_ucode = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->se0_tap_delays_ucode_offset_bytes);
    3988           0 :         adev->gfx.rlc.se1_tap_delays_ucode_size_bytes = le32_to_cpu(rlc_hdr->se1_tap_delays_ucode_size_bytes);
    3989           0 :         adev->gfx.rlc.se1_tap_delays_ucode = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->se1_tap_delays_ucode_offset_bytes);
    3990           0 :         adev->gfx.rlc.se2_tap_delays_ucode_size_bytes = le32_to_cpu(rlc_hdr->se2_tap_delays_ucode_size_bytes);
    3991           0 :         adev->gfx.rlc.se2_tap_delays_ucode = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->se2_tap_delays_ucode_offset_bytes);
    3992           0 :         adev->gfx.rlc.se3_tap_delays_ucode_size_bytes = le32_to_cpu(rlc_hdr->se3_tap_delays_ucode_size_bytes);
    3993           0 :         adev->gfx.rlc.se3_tap_delays_ucode = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->se3_tap_delays_ucode_offset_bytes);
    3994           0 : }
    3995             : 
    3996             : static bool gfx_v10_0_navi10_gfxoff_should_enable(struct amdgpu_device *adev)
    3997             : {
    3998           0 :         bool ret = false;
    3999             : 
    4000           0 :         switch (adev->pdev->revision) {
    4001             :         case 0xc2:
    4002             :         case 0xc3:
    4003             :                 ret = true;
    4004             :                 break;
    4005             :         default:
    4006           0 :                 ret = false;
    4007             :                 break;
    4008             :         }
    4009             : 
    4010             :         return ret ;
    4011             : }
    4012             : 
    4013             : static void gfx_v10_0_check_gfxoff_flag(struct amdgpu_device *adev)
    4014             : {
    4015           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    4016             :         case IP_VERSION(10, 1, 10):
    4017           0 :                 if (!gfx_v10_0_navi10_gfxoff_should_enable(adev))
    4018           0 :                         adev->pm.pp_feature &= ~PP_GFXOFF_MASK;
    4019             :                 break;
    4020             :         default:
    4021             :                 break;
    4022             :         }
    4023             : }
    4024             : 
    4025           0 : static int gfx_v10_0_init_microcode(struct amdgpu_device *adev)
    4026             : {
    4027             :         const char *chip_name;
    4028             :         char fw_name[40];
    4029           0 :         char *wks = "";
    4030             :         int err;
    4031           0 :         struct amdgpu_firmware_info *info = NULL;
    4032           0 :         const struct common_firmware_header *header = NULL;
    4033             :         const struct gfx_firmware_header_v1_0 *cp_hdr;
    4034             :         const struct rlc_firmware_header_v2_0 *rlc_hdr;
    4035           0 :         unsigned int *tmp = NULL;
    4036           0 :         unsigned int i = 0;
    4037             :         uint16_t version_major;
    4038             :         uint16_t version_minor;
    4039             : 
    4040           0 :         DRM_DEBUG("\n");
    4041             : 
    4042           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    4043             :         case IP_VERSION(10, 1, 10):
    4044             :                 chip_name = "navi10";
    4045             :                 break;
    4046             :         case IP_VERSION(10, 1, 1):
    4047           0 :                 chip_name = "navi14";
    4048           0 :                 if (!(adev->pdev->device == 0x7340 &&
    4049           0 :                       adev->pdev->revision != 0x00))
    4050           0 :                         wks = "_wks";
    4051             :                 break;
    4052             :         case IP_VERSION(10, 1, 2):
    4053           0 :                 chip_name = "navi12";
    4054           0 :                 break;
    4055             :         case IP_VERSION(10, 3, 0):
    4056           0 :                 chip_name = "sienna_cichlid";
    4057           0 :                 break;
    4058             :         case IP_VERSION(10, 3, 2):
    4059           0 :                 chip_name = "navy_flounder";
    4060           0 :                 break;
    4061             :         case IP_VERSION(10, 3, 1):
    4062           0 :                 chip_name = "vangogh";
    4063           0 :                 break;
    4064             :         case IP_VERSION(10, 3, 4):
    4065           0 :                 chip_name = "dimgrey_cavefish";
    4066           0 :                 break;
    4067             :         case IP_VERSION(10, 3, 5):
    4068           0 :                 chip_name = "beige_goby";
    4069           0 :                 break;
    4070             :         case IP_VERSION(10, 3, 3):
    4071           0 :                 chip_name = "yellow_carp";
    4072           0 :                 break;
    4073             :         case IP_VERSION(10, 3, 6):
    4074           0 :                 chip_name = "gc_10_3_6";
    4075           0 :                 break;
    4076             :         case IP_VERSION(10, 1, 3):
    4077             :         case IP_VERSION(10, 1, 4):
    4078           0 :                 chip_name = "cyan_skillfish2";
    4079           0 :                 break;
    4080             :         case IP_VERSION(10, 3, 7):
    4081           0 :                 chip_name = "gc_10_3_7";
    4082           0 :                 break;
    4083             :         default:
    4084           0 :                 BUG();
    4085             :         }
    4086             : 
    4087           0 :         snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp%s.bin", chip_name, wks);
    4088           0 :         err = request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev);
    4089           0 :         if (err)
    4090             :                 goto out;
    4091           0 :         err = amdgpu_ucode_validate(adev->gfx.pfp_fw);
    4092           0 :         if (err)
    4093             :                 goto out;
    4094           0 :         cp_hdr = (const struct gfx_firmware_header_v1_0 *)adev->gfx.pfp_fw->data;
    4095           0 :         adev->gfx.pfp_fw_version = le32_to_cpu(cp_hdr->header.ucode_version);
    4096           0 :         adev->gfx.pfp_feature_version = le32_to_cpu(cp_hdr->ucode_feature_version);
    4097             : 
    4098           0 :         snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me%s.bin", chip_name, wks);
    4099           0 :         err = request_firmware(&adev->gfx.me_fw, fw_name, adev->dev);
    4100           0 :         if (err)
    4101             :                 goto out;
    4102           0 :         err = amdgpu_ucode_validate(adev->gfx.me_fw);
    4103           0 :         if (err)
    4104             :                 goto out;
    4105           0 :         cp_hdr = (const struct gfx_firmware_header_v1_0 *)adev->gfx.me_fw->data;
    4106           0 :         adev->gfx.me_fw_version = le32_to_cpu(cp_hdr->header.ucode_version);
    4107           0 :         adev->gfx.me_feature_version = le32_to_cpu(cp_hdr->ucode_feature_version);
    4108             : 
    4109           0 :         snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce%s.bin", chip_name, wks);
    4110           0 :         err = request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev);
    4111           0 :         if (err)
    4112             :                 goto out;
    4113           0 :         err = amdgpu_ucode_validate(adev->gfx.ce_fw);
    4114           0 :         if (err)
    4115             :                 goto out;
    4116           0 :         cp_hdr = (const struct gfx_firmware_header_v1_0 *)adev->gfx.ce_fw->data;
    4117           0 :         adev->gfx.ce_fw_version = le32_to_cpu(cp_hdr->header.ucode_version);
    4118           0 :         adev->gfx.ce_feature_version = le32_to_cpu(cp_hdr->ucode_feature_version);
    4119             : 
    4120           0 :         if (!amdgpu_sriov_vf(adev)) {
    4121           0 :                 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name);
    4122           0 :                 err = request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev);
    4123           0 :                 if (err)
    4124             :                         goto out;
    4125           0 :                 err = amdgpu_ucode_validate(adev->gfx.rlc_fw);
    4126           0 :                 rlc_hdr = (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->data;
    4127           0 :                 version_major = le16_to_cpu(rlc_hdr->header.header_version_major);
    4128           0 :                 version_minor = le16_to_cpu(rlc_hdr->header.header_version_minor);
    4129             : 
    4130           0 :                 adev->gfx.rlc_fw_version = le32_to_cpu(rlc_hdr->header.ucode_version);
    4131           0 :                 adev->gfx.rlc_feature_version = le32_to_cpu(rlc_hdr->ucode_feature_version);
    4132           0 :                 adev->gfx.rlc.save_and_restore_offset =
    4133           0 :                         le32_to_cpu(rlc_hdr->save_and_restore_offset);
    4134           0 :                 adev->gfx.rlc.clear_state_descriptor_offset =
    4135           0 :                         le32_to_cpu(rlc_hdr->clear_state_descriptor_offset);
    4136           0 :                 adev->gfx.rlc.avail_scratch_ram_locations =
    4137           0 :                         le32_to_cpu(rlc_hdr->avail_scratch_ram_locations);
    4138           0 :                 adev->gfx.rlc.reg_restore_list_size =
    4139           0 :                         le32_to_cpu(rlc_hdr->reg_restore_list_size);
    4140           0 :                 adev->gfx.rlc.reg_list_format_start =
    4141           0 :                         le32_to_cpu(rlc_hdr->reg_list_format_start);
    4142           0 :                 adev->gfx.rlc.reg_list_format_separate_start =
    4143           0 :                         le32_to_cpu(rlc_hdr->reg_list_format_separate_start);
    4144           0 :                 adev->gfx.rlc.starting_offsets_start =
    4145           0 :                         le32_to_cpu(rlc_hdr->starting_offsets_start);
    4146           0 :                 adev->gfx.rlc.reg_list_format_size_bytes =
    4147           0 :                         le32_to_cpu(rlc_hdr->reg_list_format_size_bytes);
    4148           0 :                 adev->gfx.rlc.reg_list_size_bytes =
    4149           0 :                         le32_to_cpu(rlc_hdr->reg_list_size_bytes);
    4150           0 :                 adev->gfx.rlc.register_list_format =
    4151           0 :                         kmalloc(adev->gfx.rlc.reg_list_format_size_bytes +
    4152             :                                         adev->gfx.rlc.reg_list_size_bytes, GFP_KERNEL);
    4153           0 :                 if (!adev->gfx.rlc.register_list_format) {
    4154             :                         err = -ENOMEM;
    4155             :                         goto out;
    4156             :                 }
    4157             : 
    4158           0 :                 tmp = (unsigned int *)((uintptr_t)rlc_hdr +
    4159           0 :                                                            le32_to_cpu(rlc_hdr->reg_list_format_array_offset_bytes));
    4160           0 :                 for (i = 0 ; i < (rlc_hdr->reg_list_format_size_bytes >> 2); i++)
    4161           0 :                         adev->gfx.rlc.register_list_format[i] =      le32_to_cpu(tmp[i]);
    4162             : 
    4163           0 :                 adev->gfx.rlc.register_restore = adev->gfx.rlc.register_list_format + i;
    4164             : 
    4165           0 :                 tmp = (unsigned int *)((uintptr_t)rlc_hdr +
    4166           0 :                                                            le32_to_cpu(rlc_hdr->reg_list_array_offset_bytes));
    4167           0 :                 for (i = 0 ; i < (rlc_hdr->reg_list_size_bytes >> 2); i++)
    4168           0 :                         adev->gfx.rlc.register_restore[i] = le32_to_cpu(tmp[i]);
    4169             : 
    4170           0 :                 if (version_major == 2) {
    4171           0 :                         if (version_minor >= 1)
    4172           0 :                                 gfx_v10_0_init_rlc_ext_microcode(adev);
    4173           0 :                         if (version_minor >= 2)
    4174             :                                 gfx_v10_0_init_rlc_iram_dram_microcode(adev);
    4175           0 :                         if (version_minor == 4) {
    4176           0 :                                 gfx_v10_0_init_tap_delays_microcode(adev);
    4177             :                         }
    4178             :                 }
    4179             :         }
    4180             : 
    4181           0 :         snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec%s.bin", chip_name, wks);
    4182           0 :         err = request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev);
    4183           0 :         if (err)
    4184             :                 goto out;
    4185           0 :         err = amdgpu_ucode_validate(adev->gfx.mec_fw);
    4186           0 :         if (err)
    4187             :                 goto out;
    4188           0 :         cp_hdr = (const struct gfx_firmware_header_v1_0 *)adev->gfx.mec_fw->data;
    4189           0 :         adev->gfx.mec_fw_version = le32_to_cpu(cp_hdr->header.ucode_version);
    4190           0 :         adev->gfx.mec_feature_version = le32_to_cpu(cp_hdr->ucode_feature_version);
    4191             : 
    4192           0 :         snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2%s.bin", chip_name, wks);
    4193           0 :         err = request_firmware(&adev->gfx.mec2_fw, fw_name, adev->dev);
    4194           0 :         if (!err) {
    4195           0 :                 err = amdgpu_ucode_validate(adev->gfx.mec2_fw);
    4196           0 :                 if (err)
    4197             :                         goto out;
    4198           0 :                 cp_hdr = (const struct gfx_firmware_header_v1_0 *)
    4199           0 :                 adev->gfx.mec2_fw->data;
    4200           0 :                 adev->gfx.mec2_fw_version =
    4201           0 :                 le32_to_cpu(cp_hdr->header.ucode_version);
    4202           0 :                 adev->gfx.mec2_feature_version =
    4203           0 :                 le32_to_cpu(cp_hdr->ucode_feature_version);
    4204             :         } else {
    4205           0 :                 err = 0;
    4206           0 :                 adev->gfx.mec2_fw = NULL;
    4207             :         }
    4208             : 
    4209           0 :         if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
    4210           0 :                 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_PFP];
    4211           0 :                 info->ucode_id = AMDGPU_UCODE_ID_CP_PFP;
    4212           0 :                 info->fw = adev->gfx.pfp_fw;
    4213           0 :                 header = (const struct common_firmware_header *)info->fw->data;
    4214           0 :                 adev->firmware.fw_size +=
    4215           0 :                         ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE);
    4216             : 
    4217           0 :                 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_ME];
    4218           0 :                 info->ucode_id = AMDGPU_UCODE_ID_CP_ME;
    4219           0 :                 info->fw = adev->gfx.me_fw;
    4220           0 :                 header = (const struct common_firmware_header *)info->fw->data;
    4221           0 :                 adev->firmware.fw_size +=
    4222           0 :                         ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE);
    4223             : 
    4224           0 :                 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_CE];
    4225           0 :                 info->ucode_id = AMDGPU_UCODE_ID_CP_CE;
    4226           0 :                 info->fw = adev->gfx.ce_fw;
    4227           0 :                 header = (const struct common_firmware_header *)info->fw->data;
    4228           0 :                 adev->firmware.fw_size +=
    4229           0 :                         ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE);
    4230             : 
    4231           0 :                 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_G];
    4232           0 :                 info->ucode_id = AMDGPU_UCODE_ID_RLC_G;
    4233           0 :                 info->fw = adev->gfx.rlc_fw;
    4234           0 :                 if (info->fw) {
    4235           0 :                         header = (const struct common_firmware_header *)info->fw->data;
    4236           0 :                         adev->firmware.fw_size +=
    4237           0 :                                 ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE);
    4238             :                 }
    4239           0 :                 if (adev->gfx.rlc.save_restore_list_cntl_size_bytes &&
    4240           0 :                     adev->gfx.rlc.save_restore_list_gpm_size_bytes &&
    4241           0 :                     adev->gfx.rlc.save_restore_list_srm_size_bytes) {
    4242           0 :                         info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL];
    4243           0 :                         info->ucode_id = AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL;
    4244           0 :                         info->fw = adev->gfx.rlc_fw;
    4245           0 :                         adev->firmware.fw_size +=
    4246           0 :                                 ALIGN(adev->gfx.rlc.save_restore_list_cntl_size_bytes, PAGE_SIZE);
    4247             : 
    4248           0 :                         info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_RESTORE_LIST_GPM_MEM];
    4249           0 :                         info->ucode_id = AMDGPU_UCODE_ID_RLC_RESTORE_LIST_GPM_MEM;
    4250           0 :                         info->fw = adev->gfx.rlc_fw;
    4251           0 :                         adev->firmware.fw_size +=
    4252           0 :                                 ALIGN(adev->gfx.rlc.save_restore_list_gpm_size_bytes, PAGE_SIZE);
    4253             : 
    4254           0 :                         info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_RESTORE_LIST_SRM_MEM];
    4255           0 :                         info->ucode_id = AMDGPU_UCODE_ID_RLC_RESTORE_LIST_SRM_MEM;
    4256           0 :                         info->fw = adev->gfx.rlc_fw;
    4257           0 :                         adev->firmware.fw_size +=
    4258           0 :                                 ALIGN(adev->gfx.rlc.save_restore_list_srm_size_bytes, PAGE_SIZE);
    4259             : 
    4260           0 :                         if (adev->gfx.rlc.rlc_iram_ucode_size_bytes &&
    4261           0 :                             adev->gfx.rlc.rlc_dram_ucode_size_bytes) {
    4262           0 :                                 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_IRAM];
    4263           0 :                                 info->ucode_id = AMDGPU_UCODE_ID_RLC_IRAM;
    4264           0 :                                 info->fw = adev->gfx.rlc_fw;
    4265           0 :                                 adev->firmware.fw_size +=
    4266           0 :                                         ALIGN(adev->gfx.rlc.rlc_iram_ucode_size_bytes, PAGE_SIZE);
    4267             : 
    4268           0 :                                 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_DRAM];
    4269           0 :                                 info->ucode_id = AMDGPU_UCODE_ID_RLC_DRAM;
    4270           0 :                                 info->fw = adev->gfx.rlc_fw;
    4271           0 :                                 adev->firmware.fw_size +=
    4272           0 :                                         ALIGN(adev->gfx.rlc.rlc_dram_ucode_size_bytes, PAGE_SIZE);
    4273             :                         }
    4274             : 
    4275             :                 }
    4276             : 
    4277           0 :                 if (adev->gfx.rlc.global_tap_delays_ucode_size_bytes) {
    4278           0 :                         info = &adev->firmware.ucode[AMDGPU_UCODE_ID_GLOBAL_TAP_DELAYS];
    4279           0 :                         info->ucode_id = AMDGPU_UCODE_ID_GLOBAL_TAP_DELAYS;
    4280           0 :                         info->fw = adev->gfx.rlc_fw;
    4281           0 :                         adev->firmware.fw_size +=
    4282           0 :                                 ALIGN(adev->gfx.rlc.global_tap_delays_ucode_size_bytes, PAGE_SIZE);
    4283             :                 }
    4284             : 
    4285           0 :                 if (adev->gfx.rlc.se0_tap_delays_ucode_size_bytes) {
    4286           0 :                         info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SE0_TAP_DELAYS];
    4287           0 :                         info->ucode_id = AMDGPU_UCODE_ID_SE0_TAP_DELAYS;
    4288           0 :                         info->fw = adev->gfx.rlc_fw;
    4289           0 :                         adev->firmware.fw_size +=
    4290           0 :                                 ALIGN(adev->gfx.rlc.se0_tap_delays_ucode_size_bytes, PAGE_SIZE);
    4291             :                 }
    4292             : 
    4293           0 :                 if (adev->gfx.rlc.se1_tap_delays_ucode_size_bytes) {
    4294           0 :                         info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SE1_TAP_DELAYS];
    4295           0 :                         info->ucode_id = AMDGPU_UCODE_ID_SE1_TAP_DELAYS;
    4296           0 :                         info->fw = adev->gfx.rlc_fw;
    4297           0 :                         adev->firmware.fw_size +=
    4298           0 :                                 ALIGN(adev->gfx.rlc.se1_tap_delays_ucode_size_bytes, PAGE_SIZE);
    4299             :                 }
    4300             : 
    4301           0 :                 if (adev->gfx.rlc.se2_tap_delays_ucode_size_bytes) {
    4302           0 :                         info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SE2_TAP_DELAYS];
    4303           0 :                         info->ucode_id = AMDGPU_UCODE_ID_SE2_TAP_DELAYS;
    4304           0 :                         info->fw = adev->gfx.rlc_fw;
    4305           0 :                         adev->firmware.fw_size +=
    4306           0 :                                 ALIGN(adev->gfx.rlc.se2_tap_delays_ucode_size_bytes, PAGE_SIZE);
    4307             :                 }
    4308             : 
    4309           0 :                 if (adev->gfx.rlc.se3_tap_delays_ucode_size_bytes) {
    4310           0 :                         info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SE3_TAP_DELAYS];
    4311           0 :                         info->ucode_id = AMDGPU_UCODE_ID_SE3_TAP_DELAYS;
    4312           0 :                         info->fw = adev->gfx.rlc_fw;
    4313           0 :                         adev->firmware.fw_size +=
    4314           0 :                                 ALIGN(adev->gfx.rlc.se3_tap_delays_ucode_size_bytes, PAGE_SIZE);
    4315             :                 }
    4316             : 
    4317           0 :                 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_MEC1];
    4318           0 :                 info->ucode_id = AMDGPU_UCODE_ID_CP_MEC1;
    4319           0 :                 info->fw = adev->gfx.mec_fw;
    4320           0 :                 header = (const struct common_firmware_header *)info->fw->data;
    4321           0 :                 cp_hdr = (const struct gfx_firmware_header_v1_0 *)info->fw->data;
    4322           0 :                 adev->firmware.fw_size +=
    4323           0 :                         ALIGN(le32_to_cpu(header->ucode_size_bytes) -
    4324             :                               le32_to_cpu(cp_hdr->jt_size) * 4, PAGE_SIZE);
    4325             : 
    4326           0 :                 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_MEC1_JT];
    4327           0 :                 info->ucode_id = AMDGPU_UCODE_ID_CP_MEC1_JT;
    4328           0 :                 info->fw = adev->gfx.mec_fw;
    4329           0 :                 adev->firmware.fw_size +=
    4330           0 :                         ALIGN(le32_to_cpu(cp_hdr->jt_size) * 4, PAGE_SIZE);
    4331             : 
    4332           0 :                 if (adev->gfx.mec2_fw) {
    4333           0 :                         info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_MEC2];
    4334           0 :                         info->ucode_id = AMDGPU_UCODE_ID_CP_MEC2;
    4335           0 :                         info->fw = adev->gfx.mec2_fw;
    4336           0 :                         header = (const struct common_firmware_header *)info->fw->data;
    4337           0 :                         cp_hdr = (const struct gfx_firmware_header_v1_0 *)info->fw->data;
    4338           0 :                         adev->firmware.fw_size +=
    4339           0 :                                 ALIGN(le32_to_cpu(header->ucode_size_bytes) -
    4340             :                                       le32_to_cpu(cp_hdr->jt_size) * 4,
    4341             :                                       PAGE_SIZE);
    4342           0 :                         info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_MEC2_JT];
    4343           0 :                         info->ucode_id = AMDGPU_UCODE_ID_CP_MEC2_JT;
    4344           0 :                         info->fw = adev->gfx.mec2_fw;
    4345           0 :                         adev->firmware.fw_size +=
    4346           0 :                                 ALIGN(le32_to_cpu(cp_hdr->jt_size) * 4,
    4347             :                                       PAGE_SIZE);
    4348             :                 }
    4349             :         }
    4350             : 
    4351           0 :         gfx_v10_0_check_fw_write_wait(adev);
    4352             : out:
    4353           0 :         if (err) {
    4354           0 :                 dev_err(adev->dev,
    4355             :                         "gfx10: Failed to load firmware \"%s\"\n",
    4356             :                         fw_name);
    4357           0 :                 release_firmware(adev->gfx.pfp_fw);
    4358           0 :                 adev->gfx.pfp_fw = NULL;
    4359           0 :                 release_firmware(adev->gfx.me_fw);
    4360           0 :                 adev->gfx.me_fw = NULL;
    4361           0 :                 release_firmware(adev->gfx.ce_fw);
    4362           0 :                 adev->gfx.ce_fw = NULL;
    4363           0 :                 release_firmware(adev->gfx.rlc_fw);
    4364           0 :                 adev->gfx.rlc_fw = NULL;
    4365           0 :                 release_firmware(adev->gfx.mec_fw);
    4366           0 :                 adev->gfx.mec_fw = NULL;
    4367           0 :                 release_firmware(adev->gfx.mec2_fw);
    4368           0 :                 adev->gfx.mec2_fw = NULL;
    4369             :         }
    4370             : 
    4371           0 :         gfx_v10_0_check_gfxoff_flag(adev);
    4372             : 
    4373           0 :         return err;
    4374             : }
    4375             : 
    4376           0 : static u32 gfx_v10_0_get_csb_size(struct amdgpu_device *adev)
    4377             : {
    4378           0 :         u32 count = 0;
    4379           0 :         const struct cs_section_def *sect = NULL;
    4380           0 :         const struct cs_extent_def *ext = NULL;
    4381             : 
    4382             :         /* begin clear state */
    4383           0 :         count += 2;
    4384             :         /* context control state */
    4385           0 :         count += 3;
    4386             : 
    4387           0 :         for (sect = gfx10_cs_data; sect->section != NULL; ++sect) {
    4388           0 :                 for (ext = sect->section; ext->extent != NULL; ++ext) {
    4389           0 :                         if (sect->id == SECT_CONTEXT)
    4390           0 :                                 count += 2 + ext->reg_count;
    4391             :                         else
    4392             :                                 return 0;
    4393             :                 }
    4394             :         }
    4395             : 
    4396             :         /* set PA_SC_TILE_STEERING_OVERRIDE */
    4397           0 :         count += 3;
    4398             :         /* end clear state */
    4399           0 :         count += 2;
    4400             :         /* clear state */
    4401           0 :         count += 2;
    4402             : 
    4403           0 :         return count;
    4404             : }
    4405             : 
    4406           0 : static void gfx_v10_0_get_csb_buffer(struct amdgpu_device *adev,
    4407             :                                     volatile u32 *buffer)
    4408             : {
    4409           0 :         u32 count = 0, i;
    4410           0 :         const struct cs_section_def *sect = NULL;
    4411           0 :         const struct cs_extent_def *ext = NULL;
    4412             :         int ctx_reg_offset;
    4413             : 
    4414           0 :         if (adev->gfx.rlc.cs_data == NULL)
    4415             :                 return;
    4416           0 :         if (buffer == NULL)
    4417             :                 return;
    4418             : 
    4419           0 :         buffer[count++] = cpu_to_le32(PACKET3(PACKET3_PREAMBLE_CNTL, 0));
    4420           0 :         buffer[count++] = cpu_to_le32(PACKET3_PREAMBLE_BEGIN_CLEAR_STATE);
    4421             : 
    4422           0 :         buffer[count++] = cpu_to_le32(PACKET3(PACKET3_CONTEXT_CONTROL, 1));
    4423           0 :         buffer[count++] = cpu_to_le32(0x80000000);
    4424           0 :         buffer[count++] = cpu_to_le32(0x80000000);
    4425             : 
    4426           0 :         for (sect = adev->gfx.rlc.cs_data; sect->section != NULL; ++sect) {
    4427           0 :                 for (ext = sect->section; ext->extent != NULL; ++ext) {
    4428           0 :                         if (sect->id == SECT_CONTEXT) {
    4429           0 :                                 buffer[count++] =
    4430           0 :                                         cpu_to_le32(PACKET3(PACKET3_SET_CONTEXT_REG, ext->reg_count));
    4431           0 :                                 buffer[count++] = cpu_to_le32(ext->reg_index -
    4432             :                                                 PACKET3_SET_CONTEXT_REG_START);
    4433           0 :                                 for (i = 0; i < ext->reg_count; i++)
    4434           0 :                                         buffer[count++] = cpu_to_le32(ext->extent[i]);
    4435             :                         } else {
    4436             :                                 return;
    4437             :                         }
    4438             :                 }
    4439             :         }
    4440             : 
    4441           0 :         ctx_reg_offset =
    4442           0 :                 SOC15_REG_OFFSET(GC, 0, mmPA_SC_TILE_STEERING_OVERRIDE) - PACKET3_SET_CONTEXT_REG_START;
    4443           0 :         buffer[count++] = cpu_to_le32(PACKET3(PACKET3_SET_CONTEXT_REG, 1));
    4444           0 :         buffer[count++] = cpu_to_le32(ctx_reg_offset);
    4445           0 :         buffer[count++] = cpu_to_le32(adev->gfx.config.pa_sc_tile_steering_override);
    4446             : 
    4447           0 :         buffer[count++] = cpu_to_le32(PACKET3(PACKET3_PREAMBLE_CNTL, 0));
    4448           0 :         buffer[count++] = cpu_to_le32(PACKET3_PREAMBLE_END_CLEAR_STATE);
    4449             : 
    4450           0 :         buffer[count++] = cpu_to_le32(PACKET3(PACKET3_CLEAR_STATE, 0));
    4451           0 :         buffer[count++] = cpu_to_le32(0);
    4452             : }
    4453             : 
    4454           0 : static void gfx_v10_0_rlc_fini(struct amdgpu_device *adev)
    4455             : {
    4456             :         /* clear state block */
    4457           0 :         amdgpu_bo_free_kernel(&adev->gfx.rlc.clear_state_obj,
    4458           0 :                         &adev->gfx.rlc.clear_state_gpu_addr,
    4459           0 :                         (void **)&adev->gfx.rlc.cs_ptr);
    4460             : 
    4461             :         /* jump table block */
    4462           0 :         amdgpu_bo_free_kernel(&adev->gfx.rlc.cp_table_obj,
    4463           0 :                         &adev->gfx.rlc.cp_table_gpu_addr,
    4464           0 :                         (void **)&adev->gfx.rlc.cp_table_ptr);
    4465           0 : }
    4466             : 
    4467           0 : static void gfx_v10_0_init_rlcg_reg_access_ctrl(struct amdgpu_device *adev)
    4468             : {
    4469             :         struct amdgpu_rlcg_reg_access_ctrl *reg_access_ctrl;
    4470             : 
    4471           0 :         reg_access_ctrl = &adev->gfx.rlc.reg_access_ctrl;
    4472           0 :         reg_access_ctrl->scratch_reg0 = SOC15_REG_OFFSET(GC, 0, mmSCRATCH_REG0);
    4473           0 :         reg_access_ctrl->scratch_reg1 = SOC15_REG_OFFSET(GC, 0, mmSCRATCH_REG1);
    4474           0 :         reg_access_ctrl->scratch_reg2 = SOC15_REG_OFFSET(GC, 0, mmSCRATCH_REG2);
    4475           0 :         reg_access_ctrl->scratch_reg3 = SOC15_REG_OFFSET(GC, 0, mmSCRATCH_REG3);
    4476           0 :         reg_access_ctrl->grbm_cntl = SOC15_REG_OFFSET(GC, 0, mmGRBM_GFX_CNTL);
    4477           0 :         reg_access_ctrl->grbm_idx = SOC15_REG_OFFSET(GC, 0, mmGRBM_GFX_INDEX);
    4478           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    4479             :                 case IP_VERSION(10, 3, 0):
    4480           0 :                         reg_access_ctrl->spare_int =
    4481           0 :                                 SOC15_REG_OFFSET(GC, 0, mmRLC_SPARE_INT_0_Sienna_Cichlid);
    4482           0 :                         break;
    4483             :                 default:
    4484           0 :                         reg_access_ctrl->spare_int =
    4485           0 :                                 SOC15_REG_OFFSET(GC, 0, mmRLC_SPARE_INT);
    4486           0 :                         break;
    4487             :         }
    4488           0 :         adev->gfx.rlc.rlcg_reg_access_supported = true;
    4489           0 : }
    4490             : 
    4491           0 : static int gfx_v10_0_rlc_init(struct amdgpu_device *adev)
    4492             : {
    4493             :         const struct cs_section_def *cs_data;
    4494             :         int r;
    4495             : 
    4496           0 :         adev->gfx.rlc.cs_data = gfx10_cs_data;
    4497             : 
    4498           0 :         cs_data = adev->gfx.rlc.cs_data;
    4499             : 
    4500             :         if (cs_data) {
    4501             :                 /* init clear state block */
    4502           0 :                 r = amdgpu_gfx_rlc_init_csb(adev);
    4503           0 :                 if (r)
    4504             :                         return r;
    4505             :         }
    4506             : 
    4507             :         /* init spm vmid with 0xf */
    4508           0 :         if (adev->gfx.rlc.funcs->update_spm_vmid)
    4509           0 :                 adev->gfx.rlc.funcs->update_spm_vmid(adev, 0xf);
    4510             : 
    4511             : 
    4512             :         return 0;
    4513             : }
    4514             : 
    4515           0 : static void gfx_v10_0_mec_fini(struct amdgpu_device *adev)
    4516             : {
    4517           0 :         amdgpu_bo_free_kernel(&adev->gfx.mec.hpd_eop_obj, NULL, NULL);
    4518           0 :         amdgpu_bo_free_kernel(&adev->gfx.mec.mec_fw_obj, NULL, NULL);
    4519           0 : }
    4520             : 
    4521           0 : static int gfx_v10_0_me_init(struct amdgpu_device *adev)
    4522             : {
    4523             :         int r;
    4524             : 
    4525           0 :         bitmap_zero(adev->gfx.me.queue_bitmap, AMDGPU_MAX_GFX_QUEUES);
    4526             : 
    4527           0 :         amdgpu_gfx_graphics_queue_acquire(adev);
    4528             : 
    4529           0 :         r = gfx_v10_0_init_microcode(adev);
    4530           0 :         if (r)
    4531           0 :                 DRM_ERROR("Failed to load gfx firmware!\n");
    4532             : 
    4533           0 :         return r;
    4534             : }
    4535             : 
    4536           0 : static int gfx_v10_0_mec_init(struct amdgpu_device *adev)
    4537             : {
    4538             :         int r;
    4539             :         u32 *hpd;
    4540           0 :         const __le32 *fw_data = NULL;
    4541             :         unsigned fw_size;
    4542           0 :         u32 *fw = NULL;
    4543             :         size_t mec_hpd_size;
    4544             : 
    4545           0 :         const struct gfx_firmware_header_v1_0 *mec_hdr = NULL;
    4546             : 
    4547           0 :         bitmap_zero(adev->gfx.mec.queue_bitmap, AMDGPU_MAX_COMPUTE_QUEUES);
    4548             : 
    4549             :         /* take ownership of the relevant compute queues */
    4550           0 :         amdgpu_gfx_compute_queue_acquire(adev);
    4551           0 :         mec_hpd_size = adev->gfx.num_compute_rings * GFX10_MEC_HPD_SIZE;
    4552             : 
    4553           0 :         if (mec_hpd_size) {
    4554           0 :                 r = amdgpu_bo_create_reserved(adev, mec_hpd_size, PAGE_SIZE,
    4555             :                                               AMDGPU_GEM_DOMAIN_GTT,
    4556             :                                               &adev->gfx.mec.hpd_eop_obj,
    4557             :                                               &adev->gfx.mec.hpd_eop_gpu_addr,
    4558             :                                               (void **)&hpd);
    4559           0 :                 if (r) {
    4560           0 :                         dev_warn(adev->dev, "(%d) create HDP EOP bo failed\n", r);
    4561           0 :                         gfx_v10_0_mec_fini(adev);
    4562           0 :                         return r;
    4563             :                 }
    4564             : 
    4565           0 :                 memset(hpd, 0, mec_hpd_size);
    4566             : 
    4567           0 :                 amdgpu_bo_kunmap(adev->gfx.mec.hpd_eop_obj);
    4568           0 :                 amdgpu_bo_unreserve(adev->gfx.mec.hpd_eop_obj);
    4569             :         }
    4570             : 
    4571           0 :         if (adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT) {
    4572           0 :                 mec_hdr = (const struct gfx_firmware_header_v1_0 *)adev->gfx.mec_fw->data;
    4573             : 
    4574           0 :                 fw_data = (const __le32 *) (adev->gfx.mec_fw->data +
    4575           0 :                          le32_to_cpu(mec_hdr->header.ucode_array_offset_bytes));
    4576           0 :                 fw_size = le32_to_cpu(mec_hdr->header.ucode_size_bytes);
    4577             : 
    4578           0 :                 r = amdgpu_bo_create_reserved(adev, mec_hdr->header.ucode_size_bytes,
    4579             :                                               PAGE_SIZE, AMDGPU_GEM_DOMAIN_GTT,
    4580             :                                               &adev->gfx.mec.mec_fw_obj,
    4581             :                                               &adev->gfx.mec.mec_fw_gpu_addr,
    4582             :                                               (void **)&fw);
    4583           0 :                 if (r) {
    4584           0 :                         dev_err(adev->dev, "(%d) failed to create mec fw bo\n", r);
    4585           0 :                         gfx_v10_0_mec_fini(adev);
    4586           0 :                         return r;
    4587             :                 }
    4588             : 
    4589           0 :                 memcpy(fw, fw_data, fw_size);
    4590             : 
    4591           0 :                 amdgpu_bo_kunmap(adev->gfx.mec.mec_fw_obj);
    4592           0 :                 amdgpu_bo_unreserve(adev->gfx.mec.mec_fw_obj);
    4593             :         }
    4594             : 
    4595             :         return 0;
    4596             : }
    4597             : 
    4598           0 : static uint32_t wave_read_ind(struct amdgpu_device *adev, uint32_t wave, uint32_t address)
    4599             : {
    4600           0 :         WREG32_SOC15(GC, 0, mmSQ_IND_INDEX,
    4601             :                 (wave << SQ_IND_INDEX__WAVE_ID__SHIFT) |
    4602             :                 (address << SQ_IND_INDEX__INDEX__SHIFT));
    4603           0 :         return RREG32_SOC15(GC, 0, mmSQ_IND_DATA);
    4604             : }
    4605             : 
    4606           0 : static void wave_read_regs(struct amdgpu_device *adev, uint32_t wave,
    4607             :                            uint32_t thread, uint32_t regno,
    4608             :                            uint32_t num, uint32_t *out)
    4609             : {
    4610           0 :         WREG32_SOC15(GC, 0, mmSQ_IND_INDEX,
    4611             :                 (wave << SQ_IND_INDEX__WAVE_ID__SHIFT) |
    4612             :                 (regno << SQ_IND_INDEX__INDEX__SHIFT) |
    4613             :                 (thread << SQ_IND_INDEX__WORKITEM_ID__SHIFT) |
    4614             :                 (SQ_IND_INDEX__AUTO_INCR_MASK));
    4615           0 :         while (num--)
    4616           0 :                 *(out++) = RREG32_SOC15(GC, 0, mmSQ_IND_DATA);
    4617           0 : }
    4618             : 
    4619           0 : static void gfx_v10_0_read_wave_data(struct amdgpu_device *adev, uint32_t simd, uint32_t wave, uint32_t *dst, int *no_fields)
    4620             : {
    4621             :         /* in gfx10 the SIMD_ID is specified as part of the INSTANCE
    4622             :          * field when performing a select_se_sh so it should be
    4623             :          * zero here */
    4624           0 :         WARN_ON(simd != 0);
    4625             : 
    4626             :         /* type 2 wave data */
    4627           0 :         dst[(*no_fields)++] = 2;
    4628           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_STATUS);
    4629           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_PC_LO);
    4630           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_PC_HI);
    4631           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_EXEC_LO);
    4632           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_EXEC_HI);
    4633           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_HW_ID1);
    4634           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_HW_ID2);
    4635           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_INST_DW0);
    4636           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_GPR_ALLOC);
    4637           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_LDS_ALLOC);
    4638           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_TRAPSTS);
    4639           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_IB_STS);
    4640           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_IB_STS2);
    4641           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_IB_DBG1);
    4642           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_M0);
    4643           0 :         dst[(*no_fields)++] = wave_read_ind(adev, wave, ixSQ_WAVE_MODE);
    4644           0 : }
    4645             : 
    4646           0 : static void gfx_v10_0_read_wave_sgprs(struct amdgpu_device *adev, uint32_t simd,
    4647             :                                      uint32_t wave, uint32_t start,
    4648             :                                      uint32_t size, uint32_t *dst)
    4649             : {
    4650           0 :         WARN_ON(simd != 0);
    4651             : 
    4652           0 :         wave_read_regs(
    4653             :                 adev, wave, 0, start + SQIND_WAVE_SGPRS_OFFSET, size,
    4654             :                 dst);
    4655           0 : }
    4656             : 
    4657           0 : static void gfx_v10_0_read_wave_vgprs(struct amdgpu_device *adev, uint32_t simd,
    4658             :                                       uint32_t wave, uint32_t thread,
    4659             :                                       uint32_t start, uint32_t size,
    4660             :                                       uint32_t *dst)
    4661             : {
    4662           0 :         wave_read_regs(
    4663             :                 adev, wave, thread,
    4664             :                 start + SQIND_WAVE_VGPRS_OFFSET, size, dst);
    4665           0 : }
    4666             : 
    4667           0 : static void gfx_v10_0_select_me_pipe_q(struct amdgpu_device *adev,
    4668             :                                        u32 me, u32 pipe, u32 q, u32 vm)
    4669             : {
    4670           0 :         nv_grbm_select(adev, me, pipe, q, vm);
    4671           0 : }
    4672             : 
    4673           0 : static void gfx_v10_0_update_perfmon_mgcg(struct amdgpu_device *adev,
    4674             :                                           bool enable)
    4675             : {
    4676             :         uint32_t data, def;
    4677             : 
    4678           0 :         data = def = RREG32_SOC15(GC, 0, mmRLC_PERFMON_CLK_CNTL);
    4679             : 
    4680           0 :         if (enable)
    4681           0 :                 data |= RLC_PERFMON_CLK_CNTL__PERFMON_CLOCK_STATE_MASK;
    4682             :         else
    4683           0 :                 data &= ~RLC_PERFMON_CLK_CNTL__PERFMON_CLOCK_STATE_MASK;
    4684             : 
    4685           0 :         if (data != def)
    4686           0 :                 WREG32_SOC15(GC, 0, mmRLC_PERFMON_CLK_CNTL, data);
    4687           0 : }
    4688             : 
    4689             : static const struct amdgpu_gfx_funcs gfx_v10_0_gfx_funcs = {
    4690             :         .get_gpu_clock_counter = &gfx_v10_0_get_gpu_clock_counter,
    4691             :         .select_se_sh = &gfx_v10_0_select_se_sh,
    4692             :         .read_wave_data = &gfx_v10_0_read_wave_data,
    4693             :         .read_wave_sgprs = &gfx_v10_0_read_wave_sgprs,
    4694             :         .read_wave_vgprs = &gfx_v10_0_read_wave_vgprs,
    4695             :         .select_me_pipe_q = &gfx_v10_0_select_me_pipe_q,
    4696             :         .init_spm_golden = &gfx_v10_0_init_spm_golden_registers,
    4697             :         .update_perfmon_mgcg = &gfx_v10_0_update_perfmon_mgcg,
    4698             : };
    4699             : 
    4700           0 : static void gfx_v10_0_gpu_early_init(struct amdgpu_device *adev)
    4701             : {
    4702             :         u32 gb_addr_config;
    4703             : 
    4704           0 :         adev->gfx.funcs = &gfx_v10_0_gfx_funcs;
    4705             : 
    4706           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    4707             :         case IP_VERSION(10, 1, 10):
    4708             :         case IP_VERSION(10, 1, 1):
    4709             :         case IP_VERSION(10, 1, 2):
    4710           0 :                 adev->gfx.config.max_hw_contexts = 8;
    4711           0 :                 adev->gfx.config.sc_prim_fifo_size_frontend = 0x20;
    4712           0 :                 adev->gfx.config.sc_prim_fifo_size_backend = 0x100;
    4713           0 :                 adev->gfx.config.sc_hiz_tile_fifo_size = 0;
    4714           0 :                 adev->gfx.config.sc_earlyz_tile_fifo_size = 0x4C0;
    4715           0 :                 gb_addr_config = RREG32_SOC15(GC, 0, mmGB_ADDR_CONFIG);
    4716             :                 break;
    4717             :         case IP_VERSION(10, 3, 0):
    4718             :         case IP_VERSION(10, 3, 2):
    4719             :         case IP_VERSION(10, 3, 1):
    4720             :         case IP_VERSION(10, 3, 4):
    4721             :         case IP_VERSION(10, 3, 5):
    4722             :         case IP_VERSION(10, 3, 6):
    4723             :         case IP_VERSION(10, 3, 3):
    4724             :         case IP_VERSION(10, 3, 7):
    4725           0 :                 adev->gfx.config.max_hw_contexts = 8;
    4726           0 :                 adev->gfx.config.sc_prim_fifo_size_frontend = 0x20;
    4727           0 :                 adev->gfx.config.sc_prim_fifo_size_backend = 0x100;
    4728           0 :                 adev->gfx.config.sc_hiz_tile_fifo_size = 0;
    4729           0 :                 adev->gfx.config.sc_earlyz_tile_fifo_size = 0x4C0;
    4730           0 :                 gb_addr_config = RREG32_SOC15(GC, 0, mmGB_ADDR_CONFIG);
    4731           0 :                 adev->gfx.config.gb_addr_config_fields.num_pkrs =
    4732           0 :                         1 << REG_GET_FIELD(gb_addr_config, GB_ADDR_CONFIG, NUM_PKRS);
    4733           0 :                 break;
    4734             :         case IP_VERSION(10, 1, 3):
    4735             :         case IP_VERSION(10, 1, 4):
    4736           0 :                 adev->gfx.config.max_hw_contexts = 8;
    4737           0 :                 adev->gfx.config.sc_prim_fifo_size_frontend = 0x20;
    4738           0 :                 adev->gfx.config.sc_prim_fifo_size_backend = 0x100;
    4739           0 :                 adev->gfx.config.sc_hiz_tile_fifo_size = 0x30;
    4740           0 :                 adev->gfx.config.sc_earlyz_tile_fifo_size = 0x4C0;
    4741           0 :                 gb_addr_config = CYAN_SKILLFISH_GB_ADDR_CONFIG_GOLDEN;
    4742           0 :                 break;
    4743             :         default:
    4744           0 :                 BUG();
    4745             :                 break;
    4746             :         }
    4747             : 
    4748           0 :         adev->gfx.config.gb_addr_config = gb_addr_config;
    4749             : 
    4750           0 :         adev->gfx.config.gb_addr_config_fields.num_pipes = 1 <<
    4751           0 :                         REG_GET_FIELD(adev->gfx.config.gb_addr_config,
    4752             :                                       GB_ADDR_CONFIG, NUM_PIPES);
    4753             : 
    4754           0 :         adev->gfx.config.max_tile_pipes =
    4755           0 :                 adev->gfx.config.gb_addr_config_fields.num_pipes;
    4756             : 
    4757           0 :         adev->gfx.config.gb_addr_config_fields.max_compress_frags = 1 <<
    4758           0 :                         REG_GET_FIELD(adev->gfx.config.gb_addr_config,
    4759             :                                       GB_ADDR_CONFIG, MAX_COMPRESSED_FRAGS);
    4760           0 :         adev->gfx.config.gb_addr_config_fields.num_rb_per_se = 1 <<
    4761           0 :                         REG_GET_FIELD(adev->gfx.config.gb_addr_config,
    4762             :                                       GB_ADDR_CONFIG, NUM_RB_PER_SE);
    4763           0 :         adev->gfx.config.gb_addr_config_fields.num_se = 1 <<
    4764           0 :                         REG_GET_FIELD(adev->gfx.config.gb_addr_config,
    4765             :                                       GB_ADDR_CONFIG, NUM_SHADER_ENGINES);
    4766           0 :         adev->gfx.config.gb_addr_config_fields.pipe_interleave_size = 1 << (8 +
    4767           0 :                         REG_GET_FIELD(adev->gfx.config.gb_addr_config,
    4768             :                                       GB_ADDR_CONFIG, PIPE_INTERLEAVE_SIZE));
    4769           0 : }
    4770             : 
    4771           0 : static int gfx_v10_0_gfx_ring_init(struct amdgpu_device *adev, int ring_id,
    4772             :                                    int me, int pipe, int queue)
    4773             : {
    4774             :         struct amdgpu_ring *ring;
    4775             :         unsigned int irq_type;
    4776             :         unsigned int hw_prio;
    4777             : 
    4778           0 :         ring = &adev->gfx.gfx_ring[ring_id];
    4779             : 
    4780           0 :         ring->me = me;
    4781           0 :         ring->pipe = pipe;
    4782           0 :         ring->queue = queue;
    4783             : 
    4784           0 :         ring->ring_obj = NULL;
    4785           0 :         ring->use_doorbell = true;
    4786             : 
    4787           0 :         if (!ring_id)
    4788           0 :                 ring->doorbell_index = adev->doorbell_index.gfx_ring0 << 1;
    4789             :         else
    4790           0 :                 ring->doorbell_index = adev->doorbell_index.gfx_ring1 << 1;
    4791           0 :         sprintf(ring->name, "gfx_%d.%d.%d", ring->me, ring->pipe, ring->queue);
    4792             : 
    4793           0 :         irq_type = AMDGPU_CP_IRQ_GFX_ME0_PIPE0_EOP + ring->pipe;
    4794           0 :         hw_prio = amdgpu_gfx_is_high_priority_graphics_queue(adev, ring) ?
    4795           0 :                         AMDGPU_GFX_PIPE_PRIO_HIGH : AMDGPU_GFX_PIPE_PRIO_NORMAL;
    4796           0 :         return amdgpu_ring_init(adev, ring, 1024, &adev->gfx.eop_irq, irq_type,
    4797             :                                 hw_prio, NULL);
    4798             : }
    4799             : 
    4800           0 : static int gfx_v10_0_compute_ring_init(struct amdgpu_device *adev, int ring_id,
    4801             :                                        int mec, int pipe, int queue)
    4802             : {
    4803             :         unsigned irq_type;
    4804             :         struct amdgpu_ring *ring;
    4805             :         unsigned int hw_prio;
    4806             : 
    4807           0 :         ring = &adev->gfx.compute_ring[ring_id];
    4808             : 
    4809             :         /* mec0 is me1 */
    4810           0 :         ring->me = mec + 1;
    4811           0 :         ring->pipe = pipe;
    4812           0 :         ring->queue = queue;
    4813             : 
    4814           0 :         ring->ring_obj = NULL;
    4815           0 :         ring->use_doorbell = true;
    4816           0 :         ring->doorbell_index = (adev->doorbell_index.mec_ring0 + ring_id) << 1;
    4817           0 :         ring->eop_gpu_addr = adev->gfx.mec.hpd_eop_gpu_addr
    4818           0 :                                 + (ring_id * GFX10_MEC_HPD_SIZE);
    4819           0 :         sprintf(ring->name, "comp_%d.%d.%d", ring->me, ring->pipe, ring->queue);
    4820             : 
    4821           0 :         irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP
    4822           0 :                 + ((ring->me - 1) * adev->gfx.mec.num_pipe_per_mec)
    4823           0 :                 + ring->pipe;
    4824           0 :         hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring) ?
    4825           0 :                         AMDGPU_RING_PRIO_2 : AMDGPU_RING_PRIO_DEFAULT;
    4826             :         /* type-2 packets are deprecated on MEC, use type-3 instead */
    4827           0 :         return amdgpu_ring_init(adev, ring, 1024, &adev->gfx.eop_irq, irq_type,
    4828             :                              hw_prio, NULL);
    4829             : }
    4830             : 
    4831           0 : static int gfx_v10_0_sw_init(void *handle)
    4832             : {
    4833           0 :         int i, j, k, r, ring_id = 0;
    4834             :         struct amdgpu_kiq *kiq;
    4835           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    4836             : 
    4837           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    4838             :         case IP_VERSION(10, 1, 10):
    4839             :         case IP_VERSION(10, 1, 1):
    4840             :         case IP_VERSION(10, 1, 2):
    4841             :         case IP_VERSION(10, 1, 3):
    4842             :         case IP_VERSION(10, 1, 4):
    4843           0 :                 adev->gfx.me.num_me = 1;
    4844           0 :                 adev->gfx.me.num_pipe_per_me = 1;
    4845           0 :                 adev->gfx.me.num_queue_per_pipe = 1;
    4846           0 :                 adev->gfx.mec.num_mec = 2;
    4847           0 :                 adev->gfx.mec.num_pipe_per_mec = 4;
    4848           0 :                 adev->gfx.mec.num_queue_per_pipe = 8;
    4849           0 :                 break;
    4850             :         case IP_VERSION(10, 3, 0):
    4851             :         case IP_VERSION(10, 3, 2):
    4852             :         case IP_VERSION(10, 3, 1):
    4853             :         case IP_VERSION(10, 3, 4):
    4854             :         case IP_VERSION(10, 3, 5):
    4855             :         case IP_VERSION(10, 3, 6):
    4856             :         case IP_VERSION(10, 3, 3):
    4857             :         case IP_VERSION(10, 3, 7):
    4858           0 :                 adev->gfx.me.num_me = 1;
    4859           0 :                 adev->gfx.me.num_pipe_per_me = 1;
    4860           0 :                 adev->gfx.me.num_queue_per_pipe = 1;
    4861           0 :                 adev->gfx.mec.num_mec = 2;
    4862           0 :                 adev->gfx.mec.num_pipe_per_mec = 4;
    4863           0 :                 adev->gfx.mec.num_queue_per_pipe = 4;
    4864           0 :                 break;
    4865             :         default:
    4866           0 :                 adev->gfx.me.num_me = 1;
    4867           0 :                 adev->gfx.me.num_pipe_per_me = 1;
    4868           0 :                 adev->gfx.me.num_queue_per_pipe = 1;
    4869           0 :                 adev->gfx.mec.num_mec = 1;
    4870           0 :                 adev->gfx.mec.num_pipe_per_mec = 4;
    4871           0 :                 adev->gfx.mec.num_queue_per_pipe = 8;
    4872           0 :                 break;
    4873             :         }
    4874             : 
    4875             :         /* KIQ event */
    4876           0 :         r = amdgpu_irq_add_id(adev, SOC15_IH_CLIENTID_GRBM_CP,
    4877             :                               GFX_10_1__SRCID__CP_IB2_INTERRUPT_PKT,
    4878             :                               &adev->gfx.kiq.irq);
    4879           0 :         if (r)
    4880             :                 return r;
    4881             : 
    4882             :         /* EOP Event */
    4883           0 :         r = amdgpu_irq_add_id(adev, SOC15_IH_CLIENTID_GRBM_CP,
    4884             :                               GFX_10_1__SRCID__CP_EOP_INTERRUPT,
    4885             :                               &adev->gfx.eop_irq);
    4886           0 :         if (r)
    4887             :                 return r;
    4888             : 
    4889             :         /* Privileged reg */
    4890           0 :         r = amdgpu_irq_add_id(adev, SOC15_IH_CLIENTID_GRBM_CP, GFX_10_1__SRCID__CP_PRIV_REG_FAULT,
    4891             :                               &adev->gfx.priv_reg_irq);
    4892           0 :         if (r)
    4893             :                 return r;
    4894             : 
    4895             :         /* Privileged inst */
    4896           0 :         r = amdgpu_irq_add_id(adev, SOC15_IH_CLIENTID_GRBM_CP, GFX_10_1__SRCID__CP_PRIV_INSTR_FAULT,
    4897             :                               &adev->gfx.priv_inst_irq);
    4898           0 :         if (r)
    4899             :                 return r;
    4900             : 
    4901           0 :         adev->gfx.gfx_current_status = AMDGPU_GFX_NORMAL_MODE;
    4902             : 
    4903           0 :         r = gfx_v10_0_me_init(adev);
    4904           0 :         if (r)
    4905             :                 return r;
    4906             : 
    4907           0 :         if (adev->gfx.rlc.funcs) {
    4908           0 :                 if (adev->gfx.rlc.funcs->init) {
    4909           0 :                         r = adev->gfx.rlc.funcs->init(adev);
    4910           0 :                         if (r) {
    4911           0 :                                 dev_err(adev->dev, "Failed to init rlc BOs!\n");
    4912           0 :                                 return r;
    4913             :                         }
    4914             :                 }
    4915             :         }
    4916             : 
    4917           0 :         r = gfx_v10_0_mec_init(adev);
    4918           0 :         if (r) {
    4919           0 :                 DRM_ERROR("Failed to init MEC BOs!\n");
    4920           0 :                 return r;
    4921             :         }
    4922             : 
    4923             :         /* set up the gfx ring */
    4924           0 :         for (i = 0; i < adev->gfx.me.num_me; i++) {
    4925           0 :                 for (j = 0; j < adev->gfx.me.num_queue_per_pipe; j++) {
    4926           0 :                         for (k = 0; k < adev->gfx.me.num_pipe_per_me; k++) {
    4927           0 :                                 if (!amdgpu_gfx_is_me_queue_enabled(adev, i, k, j))
    4928           0 :                                         continue;
    4929             : 
    4930           0 :                                 r = gfx_v10_0_gfx_ring_init(adev, ring_id,
    4931             :                                                             i, k, j);
    4932           0 :                                 if (r)
    4933             :                                         return r;
    4934           0 :                                 ring_id++;
    4935             :                         }
    4936             :                 }
    4937             :         }
    4938             : 
    4939             :         ring_id = 0;
    4940             :         /* set up the compute queues - allocate horizontally across pipes */
    4941           0 :         for (i = 0; i < adev->gfx.mec.num_mec; ++i) {
    4942           0 :                 for (j = 0; j < adev->gfx.mec.num_queue_per_pipe; j++) {
    4943           0 :                         for (k = 0; k < adev->gfx.mec.num_pipe_per_mec; k++) {
    4944           0 :                                 if (!amdgpu_gfx_is_mec_queue_enabled(adev, i, k,
    4945             :                                                                      j))
    4946           0 :                                         continue;
    4947             : 
    4948           0 :                                 r = gfx_v10_0_compute_ring_init(adev, ring_id,
    4949             :                                                                 i, k, j);
    4950           0 :                                 if (r)
    4951             :                                         return r;
    4952             : 
    4953           0 :                                 ring_id++;
    4954             :                         }
    4955             :                 }
    4956             :         }
    4957             : 
    4958           0 :         if (!adev->enable_mes_kiq) {
    4959           0 :                 r = amdgpu_gfx_kiq_init(adev, GFX10_MEC_HPD_SIZE);
    4960           0 :                 if (r) {
    4961           0 :                         DRM_ERROR("Failed to init KIQ BOs!\n");
    4962           0 :                         return r;
    4963             :                 }
    4964             : 
    4965           0 :                 kiq = &adev->gfx.kiq;
    4966           0 :                 r = amdgpu_gfx_kiq_init_ring(adev, &kiq->ring, &kiq->irq);
    4967           0 :                 if (r)
    4968             :                         return r;
    4969             :         }
    4970             : 
    4971           0 :         r = amdgpu_gfx_mqd_sw_init(adev, sizeof(struct v10_compute_mqd));
    4972           0 :         if (r)
    4973             :                 return r;
    4974             : 
    4975             :         /* allocate visible FB for rlc auto-loading fw */
    4976           0 :         if (adev->firmware.load_type == AMDGPU_FW_LOAD_RLC_BACKDOOR_AUTO) {
    4977           0 :                 r = gfx_v10_0_rlc_backdoor_autoload_buffer_init(adev);
    4978           0 :                 if (r)
    4979             :                         return r;
    4980             :         }
    4981             : 
    4982           0 :         adev->gfx.ce_ram_size = F32_CE_PROGRAM_RAM_SIZE;
    4983             : 
    4984           0 :         gfx_v10_0_gpu_early_init(adev);
    4985             : 
    4986           0 :         return 0;
    4987             : }
    4988             : 
    4989             : static void gfx_v10_0_pfp_fini(struct amdgpu_device *adev)
    4990             : {
    4991           0 :         amdgpu_bo_free_kernel(&adev->gfx.pfp.pfp_fw_obj,
    4992           0 :                               &adev->gfx.pfp.pfp_fw_gpu_addr,
    4993           0 :                               (void **)&adev->gfx.pfp.pfp_fw_ptr);
    4994             : }
    4995             : 
    4996             : static void gfx_v10_0_ce_fini(struct amdgpu_device *adev)
    4997             : {
    4998           0 :         amdgpu_bo_free_kernel(&adev->gfx.ce.ce_fw_obj,
    4999           0 :                               &adev->gfx.ce.ce_fw_gpu_addr,
    5000           0 :                               (void **)&adev->gfx.ce.ce_fw_ptr);
    5001             : }
    5002             : 
    5003             : static void gfx_v10_0_me_fini(struct amdgpu_device *adev)
    5004             : {
    5005           0 :         amdgpu_bo_free_kernel(&adev->gfx.me.me_fw_obj,
    5006           0 :                               &adev->gfx.me.me_fw_gpu_addr,
    5007           0 :                               (void **)&adev->gfx.me.me_fw_ptr);
    5008             : }
    5009             : 
    5010           0 : static int gfx_v10_0_sw_fini(void *handle)
    5011             : {
    5012             :         int i;
    5013           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    5014             : 
    5015           0 :         for (i = 0; i < adev->gfx.num_gfx_rings; i++)
    5016           0 :                 amdgpu_ring_fini(&adev->gfx.gfx_ring[i]);
    5017           0 :         for (i = 0; i < adev->gfx.num_compute_rings; i++)
    5018           0 :                 amdgpu_ring_fini(&adev->gfx.compute_ring[i]);
    5019             : 
    5020           0 :         amdgpu_gfx_mqd_sw_fini(adev);
    5021             : 
    5022           0 :         if (!adev->enable_mes_kiq) {
    5023           0 :                 amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring);
    5024           0 :                 amdgpu_gfx_kiq_fini(adev);
    5025             :         }
    5026             : 
    5027           0 :         gfx_v10_0_pfp_fini(adev);
    5028           0 :         gfx_v10_0_ce_fini(adev);
    5029           0 :         gfx_v10_0_me_fini(adev);
    5030           0 :         gfx_v10_0_rlc_fini(adev);
    5031           0 :         gfx_v10_0_mec_fini(adev);
    5032             : 
    5033           0 :         if (adev->firmware.load_type == AMDGPU_FW_LOAD_RLC_BACKDOOR_AUTO)
    5034           0 :                 gfx_v10_0_rlc_backdoor_autoload_buffer_fini(adev);
    5035             : 
    5036           0 :         gfx_v10_0_free_microcode(adev);
    5037             : 
    5038           0 :         return 0;
    5039             : }
    5040             : 
    5041           0 : static void gfx_v10_0_select_se_sh(struct amdgpu_device *adev, u32 se_num,
    5042             :                                    u32 sh_num, u32 instance)
    5043             : {
    5044             :         u32 data;
    5045             : 
    5046           0 :         if (instance == 0xffffffff)
    5047             :                 data = REG_SET_FIELD(0, GRBM_GFX_INDEX,
    5048             :                                      INSTANCE_BROADCAST_WRITES, 1);
    5049             :         else
    5050           0 :                 data = REG_SET_FIELD(0, GRBM_GFX_INDEX, INSTANCE_INDEX,
    5051             :                                      instance);
    5052             : 
    5053           0 :         if (se_num == 0xffffffff)
    5054           0 :                 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SE_BROADCAST_WRITES,
    5055             :                                      1);
    5056             :         else
    5057           0 :                 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SE_INDEX, se_num);
    5058             : 
    5059           0 :         if (sh_num == 0xffffffff)
    5060           0 :                 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SA_BROADCAST_WRITES,
    5061             :                                      1);
    5062             :         else
    5063           0 :                 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SA_INDEX, sh_num);
    5064             : 
    5065           0 :         WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, data);
    5066           0 : }
    5067             : 
    5068           0 : static u32 gfx_v10_0_get_rb_active_bitmap(struct amdgpu_device *adev)
    5069             : {
    5070             :         u32 data, mask;
    5071             : 
    5072           0 :         data = RREG32_SOC15(GC, 0, mmCC_RB_BACKEND_DISABLE);
    5073           0 :         data |= RREG32_SOC15(GC, 0, mmGC_USER_RB_BACKEND_DISABLE);
    5074             : 
    5075           0 :         data &= CC_RB_BACKEND_DISABLE__BACKEND_DISABLE_MASK;
    5076           0 :         data >>= GC_USER_RB_BACKEND_DISABLE__BACKEND_DISABLE__SHIFT;
    5077             : 
    5078           0 :         mask = amdgpu_gfx_create_bitmask(adev->gfx.config.max_backends_per_se /
    5079           0 :                                          adev->gfx.config.max_sh_per_se);
    5080             : 
    5081           0 :         return (~data) & mask;
    5082             : }
    5083             : 
    5084           0 : static void gfx_v10_0_setup_rb(struct amdgpu_device *adev)
    5085             : {
    5086             :         int i, j;
    5087             :         u32 data;
    5088           0 :         u32 active_rbs = 0;
    5089             :         u32 bitmap;
    5090           0 :         u32 rb_bitmap_width_per_sh = adev->gfx.config.max_backends_per_se /
    5091           0 :                                         adev->gfx.config.max_sh_per_se;
    5092             : 
    5093           0 :         mutex_lock(&adev->grbm_idx_mutex);
    5094           0 :         for (i = 0; i < adev->gfx.config.max_shader_engines; i++) {
    5095           0 :                 for (j = 0; j < adev->gfx.config.max_sh_per_se; j++) {
    5096           0 :                         bitmap = i * adev->gfx.config.max_sh_per_se + j;
    5097           0 :                         if (((adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 0)) ||
    5098           0 :                                 (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 3)) ||
    5099           0 :                                 (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 6))) &&
    5100           0 :                             ((gfx_v10_3_get_disabled_sa(adev) >> bitmap) & 1))
    5101           0 :                                 continue;
    5102           0 :                         gfx_v10_0_select_se_sh(adev, i, j, 0xffffffff);
    5103           0 :                         data = gfx_v10_0_get_rb_active_bitmap(adev);
    5104           0 :                         active_rbs |= data << ((i * adev->gfx.config.max_sh_per_se + j) *
    5105             :                                                rb_bitmap_width_per_sh);
    5106             :                 }
    5107             :         }
    5108           0 :         gfx_v10_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff);
    5109           0 :         mutex_unlock(&adev->grbm_idx_mutex);
    5110             : 
    5111           0 :         adev->gfx.config.backend_enable_mask = active_rbs;
    5112           0 :         adev->gfx.config.num_rbs = hweight32(active_rbs);
    5113           0 : }
    5114             : 
    5115           0 : static u32 gfx_v10_0_init_pa_sc_tile_steering_override(struct amdgpu_device *adev)
    5116             : {
    5117             :         uint32_t num_sc;
    5118             :         uint32_t enabled_rb_per_sh;
    5119             :         uint32_t active_rb_bitmap;
    5120             :         uint32_t num_rb_per_sc;
    5121             :         uint32_t num_packer_per_sc;
    5122             :         uint32_t pa_sc_tile_steering_override;
    5123             : 
    5124             :         /* for ASICs that integrates GFX v10.3
    5125             :          * pa_sc_tile_steering_override should be set to 0 */
    5126           0 :         if (adev->ip_versions[GC_HWIP][0] >= IP_VERSION(10, 3, 0))
    5127             :                 return 0;
    5128             : 
    5129             :         /* init num_sc */
    5130           0 :         num_sc = adev->gfx.config.max_shader_engines * adev->gfx.config.max_sh_per_se *
    5131           0 :                         adev->gfx.config.num_sc_per_sh;
    5132             :         /* init num_rb_per_sc */
    5133           0 :         active_rb_bitmap = gfx_v10_0_get_rb_active_bitmap(adev);
    5134           0 :         enabled_rb_per_sh = hweight32(active_rb_bitmap);
    5135           0 :         num_rb_per_sc = enabled_rb_per_sh / adev->gfx.config.num_sc_per_sh;
    5136             :         /* init num_packer_per_sc */
    5137           0 :         num_packer_per_sc = adev->gfx.config.num_packer_per_sc;
    5138             : 
    5139           0 :         pa_sc_tile_steering_override = 0;
    5140           0 :         pa_sc_tile_steering_override |=
    5141           0 :                 (order_base_2(num_sc) << PA_SC_TILE_STEERING_OVERRIDE__NUM_SC__SHIFT) &
    5142             :                 PA_SC_TILE_STEERING_OVERRIDE__NUM_SC_MASK;
    5143           0 :         pa_sc_tile_steering_override |=
    5144           0 :                 (order_base_2(num_rb_per_sc) << PA_SC_TILE_STEERING_OVERRIDE__NUM_RB_PER_SC__SHIFT) &
    5145             :                 PA_SC_TILE_STEERING_OVERRIDE__NUM_RB_PER_SC_MASK;
    5146           0 :         pa_sc_tile_steering_override |=
    5147           0 :                 (order_base_2(num_packer_per_sc) << PA_SC_TILE_STEERING_OVERRIDE__NUM_PACKER_PER_SC__SHIFT) &
    5148             :                 PA_SC_TILE_STEERING_OVERRIDE__NUM_PACKER_PER_SC_MASK;
    5149             : 
    5150           0 :         return pa_sc_tile_steering_override;
    5151             : }
    5152             : 
    5153             : #define DEFAULT_SH_MEM_BASES    (0x6000)
    5154             : 
    5155           0 : static void gfx_v10_0_init_compute_vmid(struct amdgpu_device *adev)
    5156             : {
    5157             :         int i;
    5158             :         uint32_t sh_mem_bases;
    5159             : 
    5160             :         /*
    5161             :          * Configure apertures:
    5162             :          * LDS:         0x60000000'00000000 - 0x60000001'00000000 (4GB)
    5163             :          * Scratch:     0x60000001'00000000 - 0x60000002'00000000 (4GB)
    5164             :          * GPUVM:       0x60010000'00000000 - 0x60020000'00000000 (1TB)
    5165             :          */
    5166           0 :         sh_mem_bases = DEFAULT_SH_MEM_BASES | (DEFAULT_SH_MEM_BASES << 16);
    5167             : 
    5168           0 :         mutex_lock(&adev->srbm_mutex);
    5169           0 :         for (i = adev->vm_manager.first_kfd_vmid; i < AMDGPU_NUM_VMID; i++) {
    5170           0 :                 nv_grbm_select(adev, 0, 0, 0, i);
    5171             :                 /* CP and shaders */
    5172           0 :                 WREG32_SOC15(GC, 0, mmSH_MEM_CONFIG, DEFAULT_SH_MEM_CONFIG);
    5173           0 :                 WREG32_SOC15(GC, 0, mmSH_MEM_BASES, sh_mem_bases);
    5174             :         }
    5175           0 :         nv_grbm_select(adev, 0, 0, 0, 0);
    5176           0 :         mutex_unlock(&adev->srbm_mutex);
    5177             : 
    5178             :         /* Initialize all compute VMIDs to have no GDS, GWS, or OA
    5179             :            access. These should be enabled by FW for target VMIDs. */
    5180           0 :         for (i = adev->vm_manager.first_kfd_vmid; i < AMDGPU_NUM_VMID; i++) {
    5181           0 :                 WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_BASE, 2 * i, 0);
    5182           0 :                 WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_SIZE, 2 * i, 0);
    5183           0 :                 WREG32_SOC15_OFFSET(GC, 0, mmGDS_GWS_VMID0, i, 0);
    5184           0 :                 WREG32_SOC15_OFFSET(GC, 0, mmGDS_OA_VMID0, i, 0);
    5185             :         }
    5186           0 : }
    5187             : 
    5188           0 : static void gfx_v10_0_init_gds_vmid(struct amdgpu_device *adev)
    5189             : {
    5190             :         int vmid;
    5191             : 
    5192             :         /*
    5193             :          * Initialize all compute and user-gfx VMIDs to have no GDS, GWS, or OA
    5194             :          * access. Compute VMIDs should be enabled by FW for target VMIDs,
    5195             :          * the driver can enable them for graphics. VMID0 should maintain
    5196             :          * access so that HWS firmware can save/restore entries.
    5197             :          */
    5198           0 :         for (vmid = 1; vmid < AMDGPU_NUM_VMID; vmid++) {
    5199           0 :                 WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_BASE, 2 * vmid, 0);
    5200           0 :                 WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_SIZE, 2 * vmid, 0);
    5201           0 :                 WREG32_SOC15_OFFSET(GC, 0, mmGDS_GWS_VMID0, vmid, 0);
    5202           0 :                 WREG32_SOC15_OFFSET(GC, 0, mmGDS_OA_VMID0, vmid, 0);
    5203             :         }
    5204           0 : }
    5205             : 
    5206             : 
    5207           0 : static void gfx_v10_0_tcp_harvest(struct amdgpu_device *adev)
    5208             : {
    5209             :         int i, j, k;
    5210           0 :         int max_wgp_per_sh = adev->gfx.config.max_cu_per_sh >> 1;
    5211           0 :         u32 tmp, wgp_active_bitmap = 0;
    5212           0 :         u32 gcrd_targets_disable_tcp = 0;
    5213           0 :         u32 utcl_invreq_disable = 0;
    5214             :         /*
    5215             :          * GCRD_TARGETS_DISABLE field contains
    5216             :          * for Navi10/Navi12: GL1C=[18:15], SQC=[14:10], TCP=[9:0]
    5217             :          * for Navi14: GL1C=[21:18], SQC=[17:12], TCP=[11:0]
    5218             :          */
    5219           0 :         u32 gcrd_targets_disable_mask = amdgpu_gfx_create_bitmask(
    5220           0 :                 2 * max_wgp_per_sh + /* TCP */
    5221           0 :                 max_wgp_per_sh + /* SQC */
    5222             :                 4); /* GL1C */
    5223             :         /*
    5224             :          * UTCL1_UTCL0_INVREQ_DISABLE field contains
    5225             :          * for Navi10Navi12: SQG=[24], RMI=[23:20], SQC=[19:10], TCP=[9:0]
    5226             :          * for Navi14: SQG=[28], RMI=[27:24], SQC=[23:12], TCP=[11:0]
    5227             :          */
    5228           0 :         u32 utcl_invreq_disable_mask = amdgpu_gfx_create_bitmask(
    5229             :                 2 * max_wgp_per_sh + /* TCP */
    5230           0 :                 2 * max_wgp_per_sh + /* SQC */
    5231           0 :                 4 + /* RMI */
    5232             :                 1); /* SQG */
    5233             : 
    5234           0 :         mutex_lock(&adev->grbm_idx_mutex);
    5235           0 :         for (i = 0; i < adev->gfx.config.max_shader_engines; i++) {
    5236           0 :                 for (j = 0; j < adev->gfx.config.max_sh_per_se; j++) {
    5237           0 :                         gfx_v10_0_select_se_sh(adev, i, j, 0xffffffff);
    5238           0 :                         wgp_active_bitmap = gfx_v10_0_get_wgp_active_bitmap_per_sh(adev);
    5239             :                         /*
    5240             :                          * Set corresponding TCP bits for the inactive WGPs in
    5241             :                          * GCRD_SA_TARGETS_DISABLE
    5242             :                          */
    5243           0 :                         gcrd_targets_disable_tcp = 0;
    5244             :                         /* Set TCP & SQC bits in UTCL1_UTCL0_INVREQ_DISABLE */
    5245           0 :                         utcl_invreq_disable = 0;
    5246             : 
    5247           0 :                         for (k = 0; k < max_wgp_per_sh; k++) {
    5248           0 :                                 if (!(wgp_active_bitmap & (1 << k))) {
    5249           0 :                                         gcrd_targets_disable_tcp |= 3 << (2 * k);
    5250           0 :                                         gcrd_targets_disable_tcp |= 1 << (k + (max_wgp_per_sh * 2));
    5251           0 :                                         utcl_invreq_disable |= (3 << (2 * k)) |
    5252           0 :                                                 (3 << (2 * (max_wgp_per_sh + k)));
    5253             :                                 }
    5254             :                         }
    5255             : 
    5256           0 :                         tmp = RREG32_SOC15(GC, 0, mmUTCL1_UTCL0_INVREQ_DISABLE);
    5257             :                         /* only override TCP & SQC bits */
    5258           0 :                         tmp &= (0xffffffffU << (4 * max_wgp_per_sh));
    5259           0 :                         tmp |= (utcl_invreq_disable & utcl_invreq_disable_mask);
    5260           0 :                         WREG32_SOC15(GC, 0, mmUTCL1_UTCL0_INVREQ_DISABLE, tmp);
    5261             : 
    5262           0 :                         tmp = RREG32_SOC15(GC, 0, mmGCRD_SA_TARGETS_DISABLE);
    5263             :                         /* only override TCP & SQC bits */
    5264           0 :                         tmp &= (0xffffffffU << (3 * max_wgp_per_sh));
    5265           0 :                         tmp |= (gcrd_targets_disable_tcp & gcrd_targets_disable_mask);
    5266           0 :                         WREG32_SOC15(GC, 0, mmGCRD_SA_TARGETS_DISABLE, tmp);
    5267             :                 }
    5268             :         }
    5269             : 
    5270           0 :         gfx_v10_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff);
    5271           0 :         mutex_unlock(&adev->grbm_idx_mutex);
    5272           0 : }
    5273             : 
    5274           0 : static void gfx_v10_0_get_tcc_info(struct amdgpu_device *adev)
    5275             : {
    5276             :         /* TCCs are global (not instanced). */
    5277             :         uint32_t tcc_disable;
    5278             : 
    5279           0 :         if (adev->ip_versions[GC_HWIP][0] >= IP_VERSION(10, 3, 0)) {
    5280           0 :                 tcc_disable = RREG32_SOC15(GC, 0, mmCGTS_TCC_DISABLE_gc_10_3) |
    5281           0 :                               RREG32_SOC15(GC, 0, mmCGTS_USER_TCC_DISABLE_gc_10_3);
    5282             :         } else {
    5283           0 :                 tcc_disable = RREG32_SOC15(GC, 0, mmCGTS_TCC_DISABLE) |
    5284           0 :                               RREG32_SOC15(GC, 0, mmCGTS_USER_TCC_DISABLE);
    5285             :         }
    5286             : 
    5287           0 :         adev->gfx.config.tcc_disabled_mask =
    5288           0 :                 REG_GET_FIELD(tcc_disable, CGTS_TCC_DISABLE, TCC_DISABLE) |
    5289           0 :                 (REG_GET_FIELD(tcc_disable, CGTS_TCC_DISABLE, HI_TCC_DISABLE) << 16);
    5290           0 : }
    5291             : 
    5292           0 : static void gfx_v10_0_constants_init(struct amdgpu_device *adev)
    5293             : {
    5294             :         u32 tmp;
    5295             :         int i;
    5296             : 
    5297           0 :         WREG32_FIELD15(GC, 0, GRBM_CNTL, READ_TIMEOUT, 0xff);
    5298             : 
    5299           0 :         gfx_v10_0_setup_rb(adev);
    5300           0 :         gfx_v10_0_get_cu_info(adev, &adev->gfx.cu_info);
    5301           0 :         gfx_v10_0_get_tcc_info(adev);
    5302           0 :         adev->gfx.config.pa_sc_tile_steering_override =
    5303           0 :                 gfx_v10_0_init_pa_sc_tile_steering_override(adev);
    5304             : 
    5305             :         /* XXX SH_MEM regs */
    5306             :         /* where to put LDS, scratch, GPUVM in FSA64 space */
    5307           0 :         mutex_lock(&adev->srbm_mutex);
    5308           0 :         for (i = 0; i < adev->vm_manager.id_mgr[AMDGPU_GFXHUB_0].num_ids; i++) {
    5309           0 :                 nv_grbm_select(adev, 0, 0, 0, i);
    5310             :                 /* CP and shaders */
    5311           0 :                 WREG32_SOC15(GC, 0, mmSH_MEM_CONFIG, DEFAULT_SH_MEM_CONFIG);
    5312           0 :                 if (i != 0) {
    5313           0 :                         tmp = REG_SET_FIELD(0, SH_MEM_BASES, PRIVATE_BASE,
    5314             :                                 (adev->gmc.private_aperture_start >> 48));
    5315           0 :                         tmp = REG_SET_FIELD(tmp, SH_MEM_BASES, SHARED_BASE,
    5316             :                                 (adev->gmc.shared_aperture_start >> 48));
    5317           0 :                         WREG32_SOC15(GC, 0, mmSH_MEM_BASES, tmp);
    5318             :                 }
    5319             :         }
    5320           0 :         nv_grbm_select(adev, 0, 0, 0, 0);
    5321             : 
    5322           0 :         mutex_unlock(&adev->srbm_mutex);
    5323             : 
    5324           0 :         gfx_v10_0_init_compute_vmid(adev);
    5325           0 :         gfx_v10_0_init_gds_vmid(adev);
    5326             : 
    5327           0 : }
    5328             : 
    5329           0 : static void gfx_v10_0_enable_gui_idle_interrupt(struct amdgpu_device *adev,
    5330             :                                                bool enable)
    5331             : {
    5332             :         u32 tmp;
    5333             : 
    5334           0 :         if (amdgpu_sriov_vf(adev))
    5335             :                 return;
    5336             : 
    5337           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_INT_CNTL_RING0);
    5338             : 
    5339           0 :         tmp = REG_SET_FIELD(tmp, CP_INT_CNTL_RING0, CNTX_BUSY_INT_ENABLE,
    5340             :                             enable ? 1 : 0);
    5341           0 :         tmp = REG_SET_FIELD(tmp, CP_INT_CNTL_RING0, CNTX_EMPTY_INT_ENABLE,
    5342             :                             enable ? 1 : 0);
    5343           0 :         tmp = REG_SET_FIELD(tmp, CP_INT_CNTL_RING0, CMP_BUSY_INT_ENABLE,
    5344             :                             enable ? 1 : 0);
    5345           0 :         tmp = REG_SET_FIELD(tmp, CP_INT_CNTL_RING0, GFX_IDLE_INT_ENABLE,
    5346             :                             enable ? 1 : 0);
    5347             : 
    5348           0 :         WREG32_SOC15(GC, 0, mmCP_INT_CNTL_RING0, tmp);
    5349             : }
    5350             : 
    5351           0 : static int gfx_v10_0_init_csb(struct amdgpu_device *adev)
    5352             : {
    5353           0 :         adev->gfx.rlc.funcs->get_csb_buffer(adev, adev->gfx.rlc.cs_ptr);
    5354             : 
    5355             :         /* csib */
    5356           0 :         if (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 1, 2)) {
    5357           0 :                 WREG32_SOC15_RLC(GC, 0, mmRLC_CSIB_ADDR_HI,
    5358             :                                 adev->gfx.rlc.clear_state_gpu_addr >> 32);
    5359           0 :                 WREG32_SOC15_RLC(GC, 0, mmRLC_CSIB_ADDR_LO,
    5360             :                                 adev->gfx.rlc.clear_state_gpu_addr & 0xfffffffc);
    5361           0 :                 WREG32_SOC15_RLC(GC, 0, mmRLC_CSIB_LENGTH, adev->gfx.rlc.clear_state_size);
    5362             :         } else {
    5363           0 :                 WREG32_SOC15(GC, 0, mmRLC_CSIB_ADDR_HI,
    5364             :                                 adev->gfx.rlc.clear_state_gpu_addr >> 32);
    5365           0 :                 WREG32_SOC15(GC, 0, mmRLC_CSIB_ADDR_LO,
    5366             :                                 adev->gfx.rlc.clear_state_gpu_addr & 0xfffffffc);
    5367           0 :                 WREG32_SOC15(GC, 0, mmRLC_CSIB_LENGTH, adev->gfx.rlc.clear_state_size);
    5368             :         }
    5369           0 :         return 0;
    5370             : }
    5371             : 
    5372           0 : static void gfx_v10_0_rlc_stop(struct amdgpu_device *adev)
    5373             : {
    5374           0 :         u32 tmp = RREG32_SOC15(GC, 0, mmRLC_CNTL);
    5375             : 
    5376           0 :         tmp = REG_SET_FIELD(tmp, RLC_CNTL, RLC_ENABLE_F32, 0);
    5377           0 :         WREG32_SOC15(GC, 0, mmRLC_CNTL, tmp);
    5378           0 : }
    5379             : 
    5380           0 : static void gfx_v10_0_rlc_reset(struct amdgpu_device *adev)
    5381             : {
    5382           0 :         WREG32_FIELD15(GC, 0, GRBM_SOFT_RESET, SOFT_RESET_RLC, 1);
    5383           0 :         udelay(50);
    5384           0 :         WREG32_FIELD15(GC, 0, GRBM_SOFT_RESET, SOFT_RESET_RLC, 0);
    5385           0 :         udelay(50);
    5386           0 : }
    5387             : 
    5388           0 : static void gfx_v10_0_rlc_smu_handshake_cntl(struct amdgpu_device *adev,
    5389             :                                              bool enable)
    5390             : {
    5391             :         uint32_t rlc_pg_cntl;
    5392             : 
    5393           0 :         rlc_pg_cntl = RREG32_SOC15(GC, 0, mmRLC_PG_CNTL);
    5394             : 
    5395           0 :         if (!enable) {
    5396             :                 /* RLC_PG_CNTL[23] = 0 (default)
    5397             :                  * RLC will wait for handshake acks with SMU
    5398             :                  * GFXOFF will be enabled
    5399             :                  * RLC_PG_CNTL[23] = 1
    5400             :                  * RLC will not issue any message to SMU
    5401             :                  * hence no handshake between SMU & RLC
    5402             :                  * GFXOFF will be disabled
    5403             :                  */
    5404           0 :                 rlc_pg_cntl |= 0x800000;
    5405             :         } else
    5406           0 :                 rlc_pg_cntl &= ~0x800000;
    5407           0 :         WREG32_SOC15(GC, 0, mmRLC_PG_CNTL, rlc_pg_cntl);
    5408           0 : }
    5409             : 
    5410           0 : static void gfx_v10_0_rlc_start(struct amdgpu_device *adev)
    5411             : {
    5412             :         /* TODO: enable rlc & smu handshake until smu
    5413             :          * and gfxoff feature works as expected */
    5414           0 :         if (!(amdgpu_pp_feature_mask & PP_GFXOFF_MASK))
    5415           0 :                 gfx_v10_0_rlc_smu_handshake_cntl(adev, false);
    5416             : 
    5417           0 :         WREG32_FIELD15(GC, 0, RLC_CNTL, RLC_ENABLE_F32, 1);
    5418           0 :         udelay(50);
    5419           0 : }
    5420             : 
    5421           0 : static void gfx_v10_0_rlc_enable_srm(struct amdgpu_device *adev)
    5422             : {
    5423             :         uint32_t tmp;
    5424             : 
    5425             :         /* enable Save Restore Machine */
    5426           0 :         tmp = RREG32_SOC15(GC, 0, mmRLC_SRM_CNTL);
    5427           0 :         tmp |= RLC_SRM_CNTL__AUTO_INCR_ADDR_MASK;
    5428           0 :         tmp |= RLC_SRM_CNTL__SRM_ENABLE_MASK;
    5429           0 :         WREG32_SOC15(GC, 0, mmRLC_SRM_CNTL, tmp);
    5430           0 : }
    5431             : 
    5432           0 : static int gfx_v10_0_rlc_load_microcode(struct amdgpu_device *adev)
    5433             : {
    5434             :         const struct rlc_firmware_header_v2_0 *hdr;
    5435             :         const __le32 *fw_data;
    5436             :         unsigned i, fw_size;
    5437             : 
    5438           0 :         if (!adev->gfx.rlc_fw)
    5439             :                 return -EINVAL;
    5440             : 
    5441           0 :         hdr = (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->data;
    5442           0 :         amdgpu_ucode_print_rlc_hdr(&hdr->header);
    5443             : 
    5444           0 :         fw_data = (const __le32 *)(adev->gfx.rlc_fw->data +
    5445           0 :                            le32_to_cpu(hdr->header.ucode_array_offset_bytes));
    5446           0 :         fw_size = le32_to_cpu(hdr->header.ucode_size_bytes) / 4;
    5447             : 
    5448           0 :         WREG32_SOC15(GC, 0, mmRLC_GPM_UCODE_ADDR,
    5449             :                      RLCG_UCODE_LOADING_START_ADDRESS);
    5450             : 
    5451           0 :         for (i = 0; i < fw_size; i++)
    5452           0 :                 WREG32_SOC15(GC, 0, mmRLC_GPM_UCODE_DATA,
    5453             :                              le32_to_cpup(fw_data++));
    5454             : 
    5455           0 :         WREG32_SOC15(GC, 0, mmRLC_GPM_UCODE_ADDR, adev->gfx.rlc_fw_version);
    5456             : 
    5457             :         return 0;
    5458             : }
    5459             : 
    5460           0 : static int gfx_v10_0_rlc_resume(struct amdgpu_device *adev)
    5461             : {
    5462             :         int r;
    5463             : 
    5464           0 :         if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP &&
    5465           0 :                 adev->psp.autoload_supported) {
    5466             : 
    5467           0 :                 r = gfx_v10_0_wait_for_rlc_autoload_complete(adev);
    5468           0 :                 if (r)
    5469             :                         return r;
    5470             : 
    5471           0 :                 gfx_v10_0_init_csb(adev);
    5472             : 
    5473           0 :                 if (!amdgpu_sriov_vf(adev)) /* enable RLC SRM */
    5474           0 :                         gfx_v10_0_rlc_enable_srm(adev);
    5475             :         } else {
    5476           0 :                 if (amdgpu_sriov_vf(adev)) {
    5477           0 :                         gfx_v10_0_init_csb(adev);
    5478           0 :                         return 0;
    5479             :                 }
    5480             : 
    5481           0 :                 adev->gfx.rlc.funcs->stop(adev);
    5482             : 
    5483             :                 /* disable CG */
    5484           0 :                 WREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL, 0);
    5485             : 
    5486             :                 /* disable PG */
    5487           0 :                 WREG32_SOC15(GC, 0, mmRLC_PG_CNTL, 0);
    5488             : 
    5489           0 :                 if (adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT) {
    5490             :                         /* legacy rlc firmware loading */
    5491           0 :                         r = gfx_v10_0_rlc_load_microcode(adev);
    5492           0 :                         if (r)
    5493             :                                 return r;
    5494           0 :                 } else if (adev->firmware.load_type == AMDGPU_FW_LOAD_RLC_BACKDOOR_AUTO) {
    5495             :                         /* rlc backdoor autoload firmware */
    5496           0 :                         r = gfx_v10_0_rlc_backdoor_autoload_enable(adev);
    5497           0 :                         if (r)
    5498             :                                 return r;
    5499             :                 }
    5500             : 
    5501           0 :                 gfx_v10_0_init_csb(adev);
    5502             : 
    5503           0 :                 adev->gfx.rlc.funcs->start(adev);
    5504             : 
    5505           0 :                 if (adev->firmware.load_type == AMDGPU_FW_LOAD_RLC_BACKDOOR_AUTO) {
    5506           0 :                         r = gfx_v10_0_wait_for_rlc_autoload_complete(adev);
    5507           0 :                         if (r)
    5508             :                                 return r;
    5509             :                 }
    5510             :         }
    5511             :         return 0;
    5512             : }
    5513             : 
    5514             : static struct {
    5515             :         FIRMWARE_ID     id;
    5516             :         unsigned int    offset;
    5517             :         unsigned int    size;
    5518             : } rlc_autoload_info[FIRMWARE_ID_MAX];
    5519             : 
    5520           0 : static int gfx_v10_0_parse_rlc_toc(struct amdgpu_device *adev)
    5521             : {
    5522             :         int ret;
    5523             :         RLC_TABLE_OF_CONTENT *rlc_toc;
    5524             : 
    5525           0 :         ret = amdgpu_bo_create_reserved(adev, adev->psp.toc.size_bytes, PAGE_SIZE,
    5526             :                                         AMDGPU_GEM_DOMAIN_GTT,
    5527             :                                         &adev->gfx.rlc.rlc_toc_bo,
    5528           0 :                                         &adev->gfx.rlc.rlc_toc_gpu_addr,
    5529             :                                         (void **)&adev->gfx.rlc.rlc_toc_buf);
    5530           0 :         if (ret) {
    5531           0 :                 dev_err(adev->dev, "(%d) failed to create rlc toc bo\n", ret);
    5532           0 :                 return ret;
    5533             :         }
    5534             : 
    5535             :         /* Copy toc from psp sos fw to rlc toc buffer */
    5536           0 :         memcpy(adev->gfx.rlc.rlc_toc_buf, adev->psp.toc.start_addr, adev->psp.toc.size_bytes);
    5537             : 
    5538           0 :         rlc_toc = (RLC_TABLE_OF_CONTENT *)adev->gfx.rlc.rlc_toc_buf;
    5539           0 :         while (rlc_toc && (rlc_toc->id > FIRMWARE_ID_INVALID) &&
    5540             :                 (rlc_toc->id < FIRMWARE_ID_MAX)) {
    5541           0 :                 if ((rlc_toc->id >= FIRMWARE_ID_CP_CE) &&
    5542             :                     (rlc_toc->id <= FIRMWARE_ID_CP_MES)) {
    5543             :                         /* Offset needs 4KB alignment */
    5544           0 :                         rlc_toc->offset = ALIGN(rlc_toc->offset * 4, PAGE_SIZE);
    5545             :                 }
    5546             : 
    5547           0 :                 rlc_autoload_info[rlc_toc->id].id = rlc_toc->id;
    5548           0 :                 rlc_autoload_info[rlc_toc->id].offset = rlc_toc->offset * 4;
    5549           0 :                 rlc_autoload_info[rlc_toc->id].size = rlc_toc->size * 4;
    5550             : 
    5551           0 :                 rlc_toc++;
    5552             :         }
    5553             : 
    5554             :         return 0;
    5555             : }
    5556             : 
    5557           0 : static uint32_t gfx_v10_0_calc_toc_total_size(struct amdgpu_device *adev)
    5558             : {
    5559           0 :         uint32_t total_size = 0;
    5560             :         FIRMWARE_ID id;
    5561             :         int ret;
    5562             : 
    5563           0 :         ret = gfx_v10_0_parse_rlc_toc(adev);
    5564           0 :         if (ret) {
    5565           0 :                 dev_err(adev->dev, "failed to parse rlc toc\n");
    5566           0 :                 return 0;
    5567             :         }
    5568             : 
    5569           0 :         for (id = FIRMWARE_ID_RLC_G_UCODE; id < FIRMWARE_ID_MAX; id++)
    5570           0 :                 total_size += rlc_autoload_info[id].size;
    5571             : 
    5572             :         /* In case the offset in rlc toc ucode is aligned */
    5573           0 :         if (total_size < rlc_autoload_info[FIRMWARE_ID_MAX-1].offset)
    5574           0 :                 total_size = rlc_autoload_info[FIRMWARE_ID_MAX-1].offset +
    5575           0 :                                 rlc_autoload_info[FIRMWARE_ID_MAX-1].size;
    5576             : 
    5577             :         return total_size;
    5578             : }
    5579             : 
    5580           0 : static int gfx_v10_0_rlc_backdoor_autoload_buffer_init(struct amdgpu_device *adev)
    5581             : {
    5582             :         int r;
    5583             :         uint32_t total_size;
    5584             : 
    5585           0 :         total_size = gfx_v10_0_calc_toc_total_size(adev);
    5586             : 
    5587           0 :         r = amdgpu_bo_create_reserved(adev, total_size, PAGE_SIZE,
    5588             :                                       AMDGPU_GEM_DOMAIN_GTT,
    5589             :                                       &adev->gfx.rlc.rlc_autoload_bo,
    5590             :                                       &adev->gfx.rlc.rlc_autoload_gpu_addr,
    5591             :                                       (void **)&adev->gfx.rlc.rlc_autoload_ptr);
    5592           0 :         if (r) {
    5593           0 :                 dev_err(adev->dev, "(%d) failed to create fw autoload bo\n", r);
    5594           0 :                 return r;
    5595             :         }
    5596             : 
    5597             :         return 0;
    5598             : }
    5599             : 
    5600           0 : static void gfx_v10_0_rlc_backdoor_autoload_buffer_fini(struct amdgpu_device *adev)
    5601             : {
    5602           0 :         amdgpu_bo_free_kernel(&adev->gfx.rlc.rlc_toc_bo,
    5603           0 :                               &adev->gfx.rlc.rlc_toc_gpu_addr,
    5604             :                               (void **)&adev->gfx.rlc.rlc_toc_buf);
    5605           0 :         amdgpu_bo_free_kernel(&adev->gfx.rlc.rlc_autoload_bo,
    5606             :                               &adev->gfx.rlc.rlc_autoload_gpu_addr,
    5607             :                               (void **)&adev->gfx.rlc.rlc_autoload_ptr);
    5608           0 : }
    5609             : 
    5610           0 : static void gfx_v10_0_rlc_backdoor_autoload_copy_ucode(struct amdgpu_device *adev,
    5611             :                                                        FIRMWARE_ID id,
    5612             :                                                        const void *fw_data,
    5613             :                                                        uint32_t fw_size)
    5614             : {
    5615             :         uint32_t toc_offset;
    5616             :         uint32_t toc_fw_size;
    5617           0 :         char *ptr = adev->gfx.rlc.rlc_autoload_ptr;
    5618             : 
    5619           0 :         if (id <= FIRMWARE_ID_INVALID || id >= FIRMWARE_ID_MAX)
    5620             :                 return;
    5621             : 
    5622           0 :         toc_offset = rlc_autoload_info[id].offset;
    5623           0 :         toc_fw_size = rlc_autoload_info[id].size;
    5624             : 
    5625           0 :         if (fw_size == 0)
    5626           0 :                 fw_size = toc_fw_size;
    5627             : 
    5628           0 :         if (fw_size > toc_fw_size)
    5629           0 :                 fw_size = toc_fw_size;
    5630             : 
    5631           0 :         memcpy(ptr + toc_offset, fw_data, fw_size);
    5632             : 
    5633           0 :         if (fw_size < toc_fw_size)
    5634           0 :                 memset(ptr + toc_offset + fw_size, 0, toc_fw_size - fw_size);
    5635             : }
    5636             : 
    5637             : static void gfx_v10_0_rlc_backdoor_autoload_copy_toc_ucode(struct amdgpu_device *adev)
    5638             : {
    5639             :         void *data;
    5640             :         uint32_t size;
    5641             : 
    5642           0 :         data = adev->gfx.rlc.rlc_toc_buf;
    5643           0 :         size = rlc_autoload_info[FIRMWARE_ID_RLC_TOC].size;
    5644             : 
    5645           0 :         gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev,
    5646             :                                                    FIRMWARE_ID_RLC_TOC,
    5647             :                                                    data, size);
    5648             : }
    5649             : 
    5650           0 : static void gfx_v10_0_rlc_backdoor_autoload_copy_gfx_ucode(struct amdgpu_device *adev)
    5651             : {
    5652             :         const __le32 *fw_data;
    5653             :         uint32_t fw_size;
    5654             :         const struct gfx_firmware_header_v1_0 *cp_hdr;
    5655             :         const struct rlc_firmware_header_v2_0 *rlc_hdr;
    5656             : 
    5657             :         /* pfp ucode */
    5658           0 :         cp_hdr = (const struct gfx_firmware_header_v1_0 *)
    5659           0 :                 adev->gfx.pfp_fw->data;
    5660           0 :         fw_data = (const __le32 *)(adev->gfx.pfp_fw->data +
    5661           0 :                 le32_to_cpu(cp_hdr->header.ucode_array_offset_bytes));
    5662           0 :         fw_size = le32_to_cpu(cp_hdr->header.ucode_size_bytes);
    5663           0 :         gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev,
    5664             :                                                    FIRMWARE_ID_CP_PFP,
    5665             :                                                    fw_data, fw_size);
    5666             : 
    5667             :         /* ce ucode */
    5668           0 :         cp_hdr = (const struct gfx_firmware_header_v1_0 *)
    5669           0 :                 adev->gfx.ce_fw->data;
    5670           0 :         fw_data = (const __le32 *)(adev->gfx.ce_fw->data +
    5671           0 :                 le32_to_cpu(cp_hdr->header.ucode_array_offset_bytes));
    5672           0 :         fw_size = le32_to_cpu(cp_hdr->header.ucode_size_bytes);
    5673           0 :         gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev,
    5674             :                                                    FIRMWARE_ID_CP_CE,
    5675             :                                                    fw_data, fw_size);
    5676             : 
    5677             :         /* me ucode */
    5678           0 :         cp_hdr = (const struct gfx_firmware_header_v1_0 *)
    5679           0 :                 adev->gfx.me_fw->data;
    5680           0 :         fw_data = (const __le32 *)(adev->gfx.me_fw->data +
    5681           0 :                 le32_to_cpu(cp_hdr->header.ucode_array_offset_bytes));
    5682           0 :         fw_size = le32_to_cpu(cp_hdr->header.ucode_size_bytes);
    5683           0 :         gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev,
    5684             :                                                    FIRMWARE_ID_CP_ME,
    5685             :                                                    fw_data, fw_size);
    5686             : 
    5687             :         /* rlc ucode */
    5688           0 :         rlc_hdr = (const struct rlc_firmware_header_v2_0 *)
    5689           0 :                 adev->gfx.rlc_fw->data;
    5690           0 :         fw_data = (const __le32 *)(adev->gfx.rlc_fw->data +
    5691           0 :                 le32_to_cpu(rlc_hdr->header.ucode_array_offset_bytes));
    5692           0 :         fw_size = le32_to_cpu(rlc_hdr->header.ucode_size_bytes);
    5693           0 :         gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev,
    5694             :                                                    FIRMWARE_ID_RLC_G_UCODE,
    5695             :                                                    fw_data, fw_size);
    5696             : 
    5697             :         /* mec1 ucode */
    5698           0 :         cp_hdr = (const struct gfx_firmware_header_v1_0 *)
    5699           0 :                 adev->gfx.mec_fw->data;
    5700           0 :         fw_data = (const __le32 *) (adev->gfx.mec_fw->data +
    5701           0 :                 le32_to_cpu(cp_hdr->header.ucode_array_offset_bytes));
    5702           0 :         fw_size = le32_to_cpu(cp_hdr->header.ucode_size_bytes) -
    5703           0 :                 cp_hdr->jt_size * 4;
    5704           0 :         gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev,
    5705             :                                                    FIRMWARE_ID_CP_MEC,
    5706             :                                                    fw_data, fw_size);
    5707             :         /* mec2 ucode is not necessary if mec2 ucode is same as mec1 */
    5708           0 : }
    5709             : 
    5710             : /* Temporarily put sdma part here */
    5711           0 : static void gfx_v10_0_rlc_backdoor_autoload_copy_sdma_ucode(struct amdgpu_device *adev)
    5712             : {
    5713             :         const __le32 *fw_data;
    5714             :         uint32_t fw_size;
    5715             :         const struct sdma_firmware_header_v1_0 *sdma_hdr;
    5716             :         int i;
    5717             : 
    5718           0 :         for (i = 0; i < adev->sdma.num_instances; i++) {
    5719           0 :                 sdma_hdr = (const struct sdma_firmware_header_v1_0 *)
    5720           0 :                         adev->sdma.instance[i].fw->data;
    5721           0 :                 fw_data = (const __le32 *) (adev->sdma.instance[i].fw->data +
    5722           0 :                         le32_to_cpu(sdma_hdr->header.ucode_array_offset_bytes));
    5723           0 :                 fw_size = le32_to_cpu(sdma_hdr->header.ucode_size_bytes);
    5724             : 
    5725           0 :                 if (i == 0) {
    5726           0 :                         gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev,
    5727             :                                 FIRMWARE_ID_SDMA0_UCODE, fw_data, fw_size);
    5728           0 :                         gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev,
    5729             :                                 FIRMWARE_ID_SDMA0_JT,
    5730           0 :                                 (uint32_t *)fw_data +
    5731           0 :                                 sdma_hdr->jt_offset,
    5732           0 :                                 sdma_hdr->jt_size * 4);
    5733           0 :                 } else if (i == 1) {
    5734           0 :                         gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev,
    5735             :                                 FIRMWARE_ID_SDMA1_UCODE, fw_data, fw_size);
    5736           0 :                         gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev,
    5737             :                                 FIRMWARE_ID_SDMA1_JT,
    5738           0 :                                 (uint32_t *)fw_data +
    5739           0 :                                 sdma_hdr->jt_offset,
    5740           0 :                                 sdma_hdr->jt_size * 4);
    5741             :                 }
    5742             :         }
    5743           0 : }
    5744             : 
    5745           0 : static int gfx_v10_0_rlc_backdoor_autoload_enable(struct amdgpu_device *adev)
    5746             : {
    5747             :         uint32_t rlc_g_offset, rlc_g_size, tmp;
    5748             :         uint64_t gpu_addr;
    5749             : 
    5750           0 :         gfx_v10_0_rlc_backdoor_autoload_copy_toc_ucode(adev);
    5751           0 :         gfx_v10_0_rlc_backdoor_autoload_copy_sdma_ucode(adev);
    5752           0 :         gfx_v10_0_rlc_backdoor_autoload_copy_gfx_ucode(adev);
    5753             : 
    5754           0 :         rlc_g_offset = rlc_autoload_info[FIRMWARE_ID_RLC_G_UCODE].offset;
    5755           0 :         rlc_g_size = rlc_autoload_info[FIRMWARE_ID_RLC_G_UCODE].size;
    5756           0 :         gpu_addr = adev->gfx.rlc.rlc_autoload_gpu_addr + rlc_g_offset;
    5757             : 
    5758           0 :         WREG32_SOC15(GC, 0, mmRLC_HYP_BOOTLOAD_ADDR_HI, upper_32_bits(gpu_addr));
    5759           0 :         WREG32_SOC15(GC, 0, mmRLC_HYP_BOOTLOAD_ADDR_LO, lower_32_bits(gpu_addr));
    5760           0 :         WREG32_SOC15(GC, 0, mmRLC_HYP_BOOTLOAD_SIZE, rlc_g_size);
    5761             : 
    5762           0 :         tmp = RREG32_SOC15(GC, 0, mmRLC_HYP_RESET_VECTOR);
    5763           0 :         if (!(tmp & (RLC_HYP_RESET_VECTOR__COLD_BOOT_EXIT_MASK |
    5764             :                    RLC_HYP_RESET_VECTOR__VDDGFX_EXIT_MASK))) {
    5765           0 :                 DRM_ERROR("Neither COLD_BOOT_EXIT nor VDDGFX_EXIT is set\n");
    5766           0 :                 return -EINVAL;
    5767             :         }
    5768             : 
    5769           0 :         tmp = RREG32_SOC15(GC, 0, mmRLC_CNTL);
    5770           0 :         if (tmp & RLC_CNTL__RLC_ENABLE_F32_MASK) {
    5771           0 :                 DRM_ERROR("RLC ROM should halt itself\n");
    5772           0 :                 return -EINVAL;
    5773             :         }
    5774             : 
    5775             :         return 0;
    5776             : }
    5777             : 
    5778           0 : static int gfx_v10_0_rlc_backdoor_autoload_config_me_cache(struct amdgpu_device *adev)
    5779             : {
    5780           0 :         uint32_t usec_timeout = 50000;  /* wait for 50ms */
    5781             :         uint32_t tmp;
    5782             :         int i;
    5783             :         uint64_t addr;
    5784             : 
    5785             :         /* Trigger an invalidation of the L1 instruction caches */
    5786           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_ME_IC_OP_CNTL);
    5787           0 :         tmp = REG_SET_FIELD(tmp, CP_ME_IC_OP_CNTL, INVALIDATE_CACHE, 1);
    5788           0 :         WREG32_SOC15(GC, 0, mmCP_ME_IC_OP_CNTL, tmp);
    5789             : 
    5790             :         /* Wait for invalidation complete */
    5791           0 :         for (i = 0; i < usec_timeout; i++) {
    5792           0 :                 tmp = RREG32_SOC15(GC, 0, mmCP_ME_IC_OP_CNTL);
    5793           0 :                 if (1 == REG_GET_FIELD(tmp, CP_ME_IC_OP_CNTL,
    5794             :                         INVALIDATE_CACHE_COMPLETE))
    5795             :                         break;
    5796           0 :                 udelay(1);
    5797             :         }
    5798             : 
    5799           0 :         if (i >= usec_timeout) {
    5800           0 :                 dev_err(adev->dev, "failed to invalidate instruction cache\n");
    5801           0 :                 return -EINVAL;
    5802             :         }
    5803             : 
    5804             :         /* Program me ucode address into intruction cache address register */
    5805           0 :         addr = adev->gfx.rlc.rlc_autoload_gpu_addr +
    5806           0 :                 rlc_autoload_info[FIRMWARE_ID_CP_ME].offset;
    5807           0 :         WREG32_SOC15(GC, 0, mmCP_ME_IC_BASE_LO,
    5808             :                         lower_32_bits(addr) & 0xFFFFF000);
    5809           0 :         WREG32_SOC15(GC, 0, mmCP_ME_IC_BASE_HI,
    5810             :                         upper_32_bits(addr));
    5811             : 
    5812             :         return 0;
    5813             : }
    5814             : 
    5815           0 : static int gfx_v10_0_rlc_backdoor_autoload_config_ce_cache(struct amdgpu_device *adev)
    5816             : {
    5817           0 :         uint32_t usec_timeout = 50000;  /* wait for 50ms */
    5818             :         uint32_t tmp;
    5819             :         int i;
    5820             :         uint64_t addr;
    5821             : 
    5822             :         /* Trigger an invalidation of the L1 instruction caches */
    5823           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_CE_IC_OP_CNTL);
    5824           0 :         tmp = REG_SET_FIELD(tmp, CP_CE_IC_OP_CNTL, INVALIDATE_CACHE, 1);
    5825           0 :         WREG32_SOC15(GC, 0, mmCP_CE_IC_OP_CNTL, tmp);
    5826             : 
    5827             :         /* Wait for invalidation complete */
    5828           0 :         for (i = 0; i < usec_timeout; i++) {
    5829           0 :                 tmp = RREG32_SOC15(GC, 0, mmCP_CE_IC_OP_CNTL);
    5830           0 :                 if (1 == REG_GET_FIELD(tmp, CP_CE_IC_OP_CNTL,
    5831             :                         INVALIDATE_CACHE_COMPLETE))
    5832             :                         break;
    5833           0 :                 udelay(1);
    5834             :         }
    5835             : 
    5836           0 :         if (i >= usec_timeout) {
    5837           0 :                 dev_err(adev->dev, "failed to invalidate instruction cache\n");
    5838           0 :                 return -EINVAL;
    5839             :         }
    5840             : 
    5841             :         /* Program ce ucode address into intruction cache address register */
    5842           0 :         addr = adev->gfx.rlc.rlc_autoload_gpu_addr +
    5843           0 :                 rlc_autoload_info[FIRMWARE_ID_CP_CE].offset;
    5844           0 :         WREG32_SOC15(GC, 0, mmCP_CE_IC_BASE_LO,
    5845             :                         lower_32_bits(addr) & 0xFFFFF000);
    5846           0 :         WREG32_SOC15(GC, 0, mmCP_CE_IC_BASE_HI,
    5847             :                         upper_32_bits(addr));
    5848             : 
    5849             :         return 0;
    5850             : }
    5851             : 
    5852           0 : static int gfx_v10_0_rlc_backdoor_autoload_config_pfp_cache(struct amdgpu_device *adev)
    5853             : {
    5854           0 :         uint32_t usec_timeout = 50000;  /* wait for 50ms */
    5855             :         uint32_t tmp;
    5856             :         int i;
    5857             :         uint64_t addr;
    5858             : 
    5859             :         /* Trigger an invalidation of the L1 instruction caches */
    5860           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_PFP_IC_OP_CNTL);
    5861           0 :         tmp = REG_SET_FIELD(tmp, CP_PFP_IC_OP_CNTL, INVALIDATE_CACHE, 1);
    5862           0 :         WREG32_SOC15(GC, 0, mmCP_PFP_IC_OP_CNTL, tmp);
    5863             : 
    5864             :         /* Wait for invalidation complete */
    5865           0 :         for (i = 0; i < usec_timeout; i++) {
    5866           0 :                 tmp = RREG32_SOC15(GC, 0, mmCP_PFP_IC_OP_CNTL);
    5867           0 :                 if (1 == REG_GET_FIELD(tmp, CP_PFP_IC_OP_CNTL,
    5868             :                         INVALIDATE_CACHE_COMPLETE))
    5869             :                         break;
    5870           0 :                 udelay(1);
    5871             :         }
    5872             : 
    5873           0 :         if (i >= usec_timeout) {
    5874           0 :                 dev_err(adev->dev, "failed to invalidate instruction cache\n");
    5875           0 :                 return -EINVAL;
    5876             :         }
    5877             : 
    5878             :         /* Program pfp ucode address into intruction cache address register */
    5879           0 :         addr = adev->gfx.rlc.rlc_autoload_gpu_addr +
    5880           0 :                 rlc_autoload_info[FIRMWARE_ID_CP_PFP].offset;
    5881           0 :         WREG32_SOC15(GC, 0, mmCP_PFP_IC_BASE_LO,
    5882             :                         lower_32_bits(addr) & 0xFFFFF000);
    5883           0 :         WREG32_SOC15(GC, 0, mmCP_PFP_IC_BASE_HI,
    5884             :                         upper_32_bits(addr));
    5885             : 
    5886             :         return 0;
    5887             : }
    5888             : 
    5889           0 : static int gfx_v10_0_rlc_backdoor_autoload_config_mec_cache(struct amdgpu_device *adev)
    5890             : {
    5891           0 :         uint32_t usec_timeout = 50000;  /* wait for 50ms */
    5892             :         uint32_t tmp;
    5893             :         int i;
    5894             :         uint64_t addr;
    5895             : 
    5896             :         /* Trigger an invalidation of the L1 instruction caches */
    5897           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_CPC_IC_OP_CNTL);
    5898           0 :         tmp = REG_SET_FIELD(tmp, CP_CPC_IC_OP_CNTL, INVALIDATE_CACHE, 1);
    5899           0 :         WREG32_SOC15(GC, 0, mmCP_CPC_IC_OP_CNTL, tmp);
    5900             : 
    5901             :         /* Wait for invalidation complete */
    5902           0 :         for (i = 0; i < usec_timeout; i++) {
    5903           0 :                 tmp = RREG32_SOC15(GC, 0, mmCP_CPC_IC_OP_CNTL);
    5904           0 :                 if (1 == REG_GET_FIELD(tmp, CP_CPC_IC_OP_CNTL,
    5905             :                         INVALIDATE_CACHE_COMPLETE))
    5906             :                         break;
    5907           0 :                 udelay(1);
    5908             :         }
    5909             : 
    5910           0 :         if (i >= usec_timeout) {
    5911           0 :                 dev_err(adev->dev, "failed to invalidate instruction cache\n");
    5912           0 :                 return -EINVAL;
    5913             :         }
    5914             : 
    5915             :         /* Program mec1 ucode address into intruction cache address register */
    5916           0 :         addr = adev->gfx.rlc.rlc_autoload_gpu_addr +
    5917           0 :                 rlc_autoload_info[FIRMWARE_ID_CP_MEC].offset;
    5918           0 :         WREG32_SOC15(GC, 0, mmCP_CPC_IC_BASE_LO,
    5919             :                         lower_32_bits(addr) & 0xFFFFF000);
    5920           0 :         WREG32_SOC15(GC, 0, mmCP_CPC_IC_BASE_HI,
    5921             :                         upper_32_bits(addr));
    5922             : 
    5923             :         return 0;
    5924             : }
    5925             : 
    5926           0 : static int gfx_v10_0_wait_for_rlc_autoload_complete(struct amdgpu_device *adev)
    5927             : {
    5928             :         uint32_t cp_status;
    5929             :         uint32_t bootload_status;
    5930             :         int i, r;
    5931             : 
    5932           0 :         for (i = 0; i < adev->usec_timeout; i++) {
    5933           0 :                 cp_status = RREG32_SOC15(GC, 0, mmCP_STAT);
    5934           0 :                 bootload_status = RREG32_SOC15(GC, 0, mmRLC_RLCS_BOOTLOAD_STATUS);
    5935           0 :                 if ((cp_status == 0) &&
    5936           0 :                     (REG_GET_FIELD(bootload_status,
    5937             :                         RLC_RLCS_BOOTLOAD_STATUS, BOOTLOAD_COMPLETE) == 1)) {
    5938             :                         break;
    5939             :                 }
    5940           0 :                 udelay(1);
    5941             :         }
    5942             : 
    5943           0 :         if (i >= adev->usec_timeout) {
    5944           0 :                 dev_err(adev->dev, "rlc autoload: gc ucode autoload timeout\n");
    5945           0 :                 return -ETIMEDOUT;
    5946             :         }
    5947             : 
    5948           0 :         if (adev->firmware.load_type == AMDGPU_FW_LOAD_RLC_BACKDOOR_AUTO) {
    5949           0 :                 r = gfx_v10_0_rlc_backdoor_autoload_config_me_cache(adev);
    5950           0 :                 if (r)
    5951             :                         return r;
    5952             : 
    5953           0 :                 r = gfx_v10_0_rlc_backdoor_autoload_config_ce_cache(adev);
    5954           0 :                 if (r)
    5955             :                         return r;
    5956             : 
    5957           0 :                 r = gfx_v10_0_rlc_backdoor_autoload_config_pfp_cache(adev);
    5958           0 :                 if (r)
    5959             :                         return r;
    5960             : 
    5961           0 :                 r = gfx_v10_0_rlc_backdoor_autoload_config_mec_cache(adev);
    5962           0 :                 if (r)
    5963             :                         return r;
    5964             :         }
    5965             : 
    5966             :         return 0;
    5967             : }
    5968             : 
    5969           0 : static int gfx_v10_0_cp_gfx_enable(struct amdgpu_device *adev, bool enable)
    5970             : {
    5971             :         int i;
    5972           0 :         u32 tmp = RREG32_SOC15(GC, 0, mmCP_ME_CNTL);
    5973             : 
    5974           0 :         tmp = REG_SET_FIELD(tmp, CP_ME_CNTL, ME_HALT, enable ? 0 : 1);
    5975           0 :         tmp = REG_SET_FIELD(tmp, CP_ME_CNTL, PFP_HALT, enable ? 0 : 1);
    5976           0 :         tmp = REG_SET_FIELD(tmp, CP_ME_CNTL, CE_HALT, enable ? 0 : 1);
    5977             : 
    5978           0 :         if (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 1, 2)) {
    5979           0 :                 WREG32_SOC15_RLC(GC, 0, mmCP_ME_CNTL, tmp);
    5980             :         } else {
    5981           0 :                 WREG32_SOC15(GC, 0, mmCP_ME_CNTL, tmp);
    5982             :         }
    5983             : 
    5984           0 :         if (adev->job_hang && !enable)
    5985             :                 return 0;
    5986             : 
    5987           0 :         for (i = 0; i < adev->usec_timeout; i++) {
    5988           0 :                 if (RREG32_SOC15(GC, 0, mmCP_STAT) == 0)
    5989             :                         break;
    5990           0 :                 udelay(1);
    5991             :         }
    5992             : 
    5993           0 :         if (i >= adev->usec_timeout)
    5994           0 :                 DRM_ERROR("failed to %s cp gfx\n", enable ? "unhalt" : "halt");
    5995             : 
    5996             :         return 0;
    5997             : }
    5998             : 
    5999           0 : static int gfx_v10_0_cp_gfx_load_pfp_microcode(struct amdgpu_device *adev)
    6000             : {
    6001             :         int r;
    6002             :         const struct gfx_firmware_header_v1_0 *pfp_hdr;
    6003             :         const __le32 *fw_data;
    6004             :         unsigned i, fw_size;
    6005             :         uint32_t tmp;
    6006           0 :         uint32_t usec_timeout = 50000;  /* wait for 50ms */
    6007             : 
    6008           0 :         pfp_hdr = (const struct gfx_firmware_header_v1_0 *)
    6009           0 :                 adev->gfx.pfp_fw->data;
    6010             : 
    6011           0 :         amdgpu_ucode_print_gfx_hdr(&pfp_hdr->header);
    6012             : 
    6013           0 :         fw_data = (const __le32 *)(adev->gfx.pfp_fw->data +
    6014           0 :                 le32_to_cpu(pfp_hdr->header.ucode_array_offset_bytes));
    6015           0 :         fw_size = le32_to_cpu(pfp_hdr->header.ucode_size_bytes);
    6016             : 
    6017           0 :         r = amdgpu_bo_create_reserved(adev, pfp_hdr->header.ucode_size_bytes,
    6018             :                                       PAGE_SIZE, AMDGPU_GEM_DOMAIN_GTT,
    6019             :                                       &adev->gfx.pfp.pfp_fw_obj,
    6020           0 :                                       &adev->gfx.pfp.pfp_fw_gpu_addr,
    6021           0 :                                       (void **)&adev->gfx.pfp.pfp_fw_ptr);
    6022           0 :         if (r) {
    6023           0 :                 dev_err(adev->dev, "(%d) failed to create pfp fw bo\n", r);
    6024           0 :                 gfx_v10_0_pfp_fini(adev);
    6025           0 :                 return r;
    6026             :         }
    6027             : 
    6028           0 :         memcpy(adev->gfx.pfp.pfp_fw_ptr, fw_data, fw_size);
    6029             : 
    6030           0 :         amdgpu_bo_kunmap(adev->gfx.pfp.pfp_fw_obj);
    6031           0 :         amdgpu_bo_unreserve(adev->gfx.pfp.pfp_fw_obj);
    6032             : 
    6033             :         /* Trigger an invalidation of the L1 instruction caches */
    6034           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_PFP_IC_OP_CNTL);
    6035           0 :         tmp = REG_SET_FIELD(tmp, CP_PFP_IC_OP_CNTL, INVALIDATE_CACHE, 1);
    6036           0 :         WREG32_SOC15(GC, 0, mmCP_PFP_IC_OP_CNTL, tmp);
    6037             : 
    6038             :         /* Wait for invalidation complete */
    6039           0 :         for (i = 0; i < usec_timeout; i++) {
    6040           0 :                 tmp = RREG32_SOC15(GC, 0, mmCP_PFP_IC_OP_CNTL);
    6041           0 :                 if (1 == REG_GET_FIELD(tmp, CP_PFP_IC_OP_CNTL,
    6042             :                         INVALIDATE_CACHE_COMPLETE))
    6043             :                         break;
    6044           0 :                 udelay(1);
    6045             :         }
    6046             : 
    6047           0 :         if (i >= usec_timeout) {
    6048           0 :                 dev_err(adev->dev, "failed to invalidate instruction cache\n");
    6049           0 :                 return -EINVAL;
    6050             :         }
    6051             : 
    6052           0 :         if (amdgpu_emu_mode == 1)
    6053           0 :                 adev->hdp.funcs->flush_hdp(adev, NULL);
    6054             : 
    6055           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_PFP_IC_BASE_CNTL);
    6056           0 :         tmp = REG_SET_FIELD(tmp, CP_PFP_IC_BASE_CNTL, VMID, 0);
    6057           0 :         tmp = REG_SET_FIELD(tmp, CP_PFP_IC_BASE_CNTL, CACHE_POLICY, 0);
    6058           0 :         tmp = REG_SET_FIELD(tmp, CP_PFP_IC_BASE_CNTL, EXE_DISABLE, 0);
    6059           0 :         tmp = REG_SET_FIELD(tmp, CP_PFP_IC_BASE_CNTL, ADDRESS_CLAMP, 1);
    6060           0 :         WREG32_SOC15(GC, 0, mmCP_PFP_IC_BASE_CNTL, tmp);
    6061           0 :         WREG32_SOC15(GC, 0, mmCP_PFP_IC_BASE_LO,
    6062             :                 adev->gfx.pfp.pfp_fw_gpu_addr & 0xFFFFF000);
    6063           0 :         WREG32_SOC15(GC, 0, mmCP_PFP_IC_BASE_HI,
    6064             :                 upper_32_bits(adev->gfx.pfp.pfp_fw_gpu_addr));
    6065             : 
    6066           0 :         WREG32_SOC15(GC, 0, mmCP_HYP_PFP_UCODE_ADDR, 0);
    6067             : 
    6068           0 :         for (i = 0; i < pfp_hdr->jt_size; i++)
    6069           0 :                 WREG32_SOC15(GC, 0, mmCP_HYP_PFP_UCODE_DATA,
    6070             :                              le32_to_cpup(fw_data + pfp_hdr->jt_offset + i));
    6071             : 
    6072           0 :         WREG32_SOC15(GC, 0, mmCP_HYP_PFP_UCODE_ADDR, adev->gfx.pfp_fw_version);
    6073             : 
    6074             :         return 0;
    6075             : }
    6076             : 
    6077           0 : static int gfx_v10_0_cp_gfx_load_ce_microcode(struct amdgpu_device *adev)
    6078             : {
    6079             :         int r;
    6080             :         const struct gfx_firmware_header_v1_0 *ce_hdr;
    6081             :         const __le32 *fw_data;
    6082             :         unsigned i, fw_size;
    6083             :         uint32_t tmp;
    6084           0 :         uint32_t usec_timeout = 50000;  /* wait for 50ms */
    6085             : 
    6086           0 :         ce_hdr = (const struct gfx_firmware_header_v1_0 *)
    6087           0 :                 adev->gfx.ce_fw->data;
    6088             : 
    6089           0 :         amdgpu_ucode_print_gfx_hdr(&ce_hdr->header);
    6090             : 
    6091           0 :         fw_data = (const __le32 *)(adev->gfx.ce_fw->data +
    6092           0 :                 le32_to_cpu(ce_hdr->header.ucode_array_offset_bytes));
    6093           0 :         fw_size = le32_to_cpu(ce_hdr->header.ucode_size_bytes);
    6094             : 
    6095           0 :         r = amdgpu_bo_create_reserved(adev, ce_hdr->header.ucode_size_bytes,
    6096             :                                       PAGE_SIZE, AMDGPU_GEM_DOMAIN_GTT,
    6097             :                                       &adev->gfx.ce.ce_fw_obj,
    6098           0 :                                       &adev->gfx.ce.ce_fw_gpu_addr,
    6099           0 :                                       (void **)&adev->gfx.ce.ce_fw_ptr);
    6100           0 :         if (r) {
    6101           0 :                 dev_err(adev->dev, "(%d) failed to create ce fw bo\n", r);
    6102           0 :                 gfx_v10_0_ce_fini(adev);
    6103           0 :                 return r;
    6104             :         }
    6105             : 
    6106           0 :         memcpy(adev->gfx.ce.ce_fw_ptr, fw_data, fw_size);
    6107             : 
    6108           0 :         amdgpu_bo_kunmap(adev->gfx.ce.ce_fw_obj);
    6109           0 :         amdgpu_bo_unreserve(adev->gfx.ce.ce_fw_obj);
    6110             : 
    6111             :         /* Trigger an invalidation of the L1 instruction caches */
    6112           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_CE_IC_OP_CNTL);
    6113           0 :         tmp = REG_SET_FIELD(tmp, CP_CE_IC_OP_CNTL, INVALIDATE_CACHE, 1);
    6114           0 :         WREG32_SOC15(GC, 0, mmCP_CE_IC_OP_CNTL, tmp);
    6115             : 
    6116             :         /* Wait for invalidation complete */
    6117           0 :         for (i = 0; i < usec_timeout; i++) {
    6118           0 :                 tmp = RREG32_SOC15(GC, 0, mmCP_CE_IC_OP_CNTL);
    6119           0 :                 if (1 == REG_GET_FIELD(tmp, CP_CE_IC_OP_CNTL,
    6120             :                         INVALIDATE_CACHE_COMPLETE))
    6121             :                         break;
    6122           0 :                 udelay(1);
    6123             :         }
    6124             : 
    6125           0 :         if (i >= usec_timeout) {
    6126           0 :                 dev_err(adev->dev, "failed to invalidate instruction cache\n");
    6127           0 :                 return -EINVAL;
    6128             :         }
    6129             : 
    6130           0 :         if (amdgpu_emu_mode == 1)
    6131           0 :                 adev->hdp.funcs->flush_hdp(adev, NULL);
    6132             : 
    6133           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_CE_IC_BASE_CNTL);
    6134           0 :         tmp = REG_SET_FIELD(tmp, CP_CE_IC_BASE_CNTL, VMID, 0);
    6135           0 :         tmp = REG_SET_FIELD(tmp, CP_CE_IC_BASE_CNTL, CACHE_POLICY, 0);
    6136           0 :         tmp = REG_SET_FIELD(tmp, CP_CE_IC_BASE_CNTL, EXE_DISABLE, 0);
    6137           0 :         tmp = REG_SET_FIELD(tmp, CP_CE_IC_BASE_CNTL, ADDRESS_CLAMP, 1);
    6138           0 :         WREG32_SOC15(GC, 0, mmCP_CE_IC_BASE_LO,
    6139             :                 adev->gfx.ce.ce_fw_gpu_addr & 0xFFFFF000);
    6140           0 :         WREG32_SOC15(GC, 0, mmCP_CE_IC_BASE_HI,
    6141             :                 upper_32_bits(adev->gfx.ce.ce_fw_gpu_addr));
    6142             : 
    6143           0 :         WREG32_SOC15(GC, 0, mmCP_HYP_CE_UCODE_ADDR, 0);
    6144             : 
    6145           0 :         for (i = 0; i < ce_hdr->jt_size; i++)
    6146           0 :                 WREG32_SOC15(GC, 0, mmCP_HYP_CE_UCODE_DATA,
    6147             :                              le32_to_cpup(fw_data + ce_hdr->jt_offset + i));
    6148             : 
    6149           0 :         WREG32_SOC15(GC, 0, mmCP_HYP_CE_UCODE_ADDR, adev->gfx.ce_fw_version);
    6150             : 
    6151             :         return 0;
    6152             : }
    6153             : 
    6154           0 : static int gfx_v10_0_cp_gfx_load_me_microcode(struct amdgpu_device *adev)
    6155             : {
    6156             :         int r;
    6157             :         const struct gfx_firmware_header_v1_0 *me_hdr;
    6158             :         const __le32 *fw_data;
    6159             :         unsigned i, fw_size;
    6160             :         uint32_t tmp;
    6161           0 :         uint32_t usec_timeout = 50000;  /* wait for 50ms */
    6162             : 
    6163           0 :         me_hdr = (const struct gfx_firmware_header_v1_0 *)
    6164           0 :                 adev->gfx.me_fw->data;
    6165             : 
    6166           0 :         amdgpu_ucode_print_gfx_hdr(&me_hdr->header);
    6167             : 
    6168           0 :         fw_data = (const __le32 *)(adev->gfx.me_fw->data +
    6169           0 :                 le32_to_cpu(me_hdr->header.ucode_array_offset_bytes));
    6170           0 :         fw_size = le32_to_cpu(me_hdr->header.ucode_size_bytes);
    6171             : 
    6172           0 :         r = amdgpu_bo_create_reserved(adev, me_hdr->header.ucode_size_bytes,
    6173             :                                       PAGE_SIZE, AMDGPU_GEM_DOMAIN_GTT,
    6174             :                                       &adev->gfx.me.me_fw_obj,
    6175           0 :                                       &adev->gfx.me.me_fw_gpu_addr,
    6176           0 :                                       (void **)&adev->gfx.me.me_fw_ptr);
    6177           0 :         if (r) {
    6178           0 :                 dev_err(adev->dev, "(%d) failed to create me fw bo\n", r);
    6179           0 :                 gfx_v10_0_me_fini(adev);
    6180           0 :                 return r;
    6181             :         }
    6182             : 
    6183           0 :         memcpy(adev->gfx.me.me_fw_ptr, fw_data, fw_size);
    6184             : 
    6185           0 :         amdgpu_bo_kunmap(adev->gfx.me.me_fw_obj);
    6186           0 :         amdgpu_bo_unreserve(adev->gfx.me.me_fw_obj);
    6187             : 
    6188             :         /* Trigger an invalidation of the L1 instruction caches */
    6189           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_ME_IC_OP_CNTL);
    6190           0 :         tmp = REG_SET_FIELD(tmp, CP_ME_IC_OP_CNTL, INVALIDATE_CACHE, 1);
    6191           0 :         WREG32_SOC15(GC, 0, mmCP_ME_IC_OP_CNTL, tmp);
    6192             : 
    6193             :         /* Wait for invalidation complete */
    6194           0 :         for (i = 0; i < usec_timeout; i++) {
    6195           0 :                 tmp = RREG32_SOC15(GC, 0, mmCP_ME_IC_OP_CNTL);
    6196           0 :                 if (1 == REG_GET_FIELD(tmp, CP_ME_IC_OP_CNTL,
    6197             :                         INVALIDATE_CACHE_COMPLETE))
    6198             :                         break;
    6199           0 :                 udelay(1);
    6200             :         }
    6201             : 
    6202           0 :         if (i >= usec_timeout) {
    6203           0 :                 dev_err(adev->dev, "failed to invalidate instruction cache\n");
    6204           0 :                 return -EINVAL;
    6205             :         }
    6206             : 
    6207           0 :         if (amdgpu_emu_mode == 1)
    6208           0 :                 adev->hdp.funcs->flush_hdp(adev, NULL);
    6209             : 
    6210           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_ME_IC_BASE_CNTL);
    6211           0 :         tmp = REG_SET_FIELD(tmp, CP_ME_IC_BASE_CNTL, VMID, 0);
    6212           0 :         tmp = REG_SET_FIELD(tmp, CP_ME_IC_BASE_CNTL, CACHE_POLICY, 0);
    6213           0 :         tmp = REG_SET_FIELD(tmp, CP_ME_IC_BASE_CNTL, EXE_DISABLE, 0);
    6214           0 :         tmp = REG_SET_FIELD(tmp, CP_ME_IC_BASE_CNTL, ADDRESS_CLAMP, 1);
    6215           0 :         WREG32_SOC15(GC, 0, mmCP_ME_IC_BASE_LO,
    6216             :                 adev->gfx.me.me_fw_gpu_addr & 0xFFFFF000);
    6217           0 :         WREG32_SOC15(GC, 0, mmCP_ME_IC_BASE_HI,
    6218             :                 upper_32_bits(adev->gfx.me.me_fw_gpu_addr));
    6219             : 
    6220           0 :         WREG32_SOC15(GC, 0, mmCP_HYP_ME_UCODE_ADDR, 0);
    6221             : 
    6222           0 :         for (i = 0; i < me_hdr->jt_size; i++)
    6223           0 :                 WREG32_SOC15(GC, 0, mmCP_HYP_ME_UCODE_DATA,
    6224             :                              le32_to_cpup(fw_data + me_hdr->jt_offset + i));
    6225             : 
    6226           0 :         WREG32_SOC15(GC, 0, mmCP_HYP_ME_UCODE_ADDR, adev->gfx.me_fw_version);
    6227             : 
    6228             :         return 0;
    6229             : }
    6230             : 
    6231           0 : static int gfx_v10_0_cp_gfx_load_microcode(struct amdgpu_device *adev)
    6232             : {
    6233             :         int r;
    6234             : 
    6235           0 :         if (!adev->gfx.me_fw || !adev->gfx.pfp_fw || !adev->gfx.ce_fw)
    6236             :                 return -EINVAL;
    6237             : 
    6238           0 :         gfx_v10_0_cp_gfx_enable(adev, false);
    6239             : 
    6240           0 :         r = gfx_v10_0_cp_gfx_load_pfp_microcode(adev);
    6241           0 :         if (r) {
    6242           0 :                 dev_err(adev->dev, "(%d) failed to load pfp fw\n", r);
    6243           0 :                 return r;
    6244             :         }
    6245             : 
    6246           0 :         r = gfx_v10_0_cp_gfx_load_ce_microcode(adev);
    6247           0 :         if (r) {
    6248           0 :                 dev_err(adev->dev, "(%d) failed to load ce fw\n", r);
    6249           0 :                 return r;
    6250             :         }
    6251             : 
    6252           0 :         r = gfx_v10_0_cp_gfx_load_me_microcode(adev);
    6253           0 :         if (r) {
    6254           0 :                 dev_err(adev->dev, "(%d) failed to load me fw\n", r);
    6255           0 :                 return r;
    6256             :         }
    6257             : 
    6258             :         return 0;
    6259             : }
    6260             : 
    6261           0 : static int gfx_v10_0_cp_gfx_start(struct amdgpu_device *adev)
    6262             : {
    6263             :         struct amdgpu_ring *ring;
    6264           0 :         const struct cs_section_def *sect = NULL;
    6265           0 :         const struct cs_extent_def *ext = NULL;
    6266             :         int r, i;
    6267             :         int ctx_reg_offset;
    6268             : 
    6269             :         /* init the CP */
    6270           0 :         WREG32_SOC15(GC, 0, mmCP_MAX_CONTEXT,
    6271             :                      adev->gfx.config.max_hw_contexts - 1);
    6272           0 :         WREG32_SOC15(GC, 0, mmCP_DEVICE_ID, 1);
    6273             : 
    6274           0 :         gfx_v10_0_cp_gfx_enable(adev, true);
    6275             : 
    6276           0 :         ring = &adev->gfx.gfx_ring[0];
    6277           0 :         r = amdgpu_ring_alloc(ring, gfx_v10_0_get_csb_size(adev) + 4);
    6278           0 :         if (r) {
    6279           0 :                 DRM_ERROR("amdgpu: cp failed to lock ring (%d).\n", r);
    6280           0 :                 return r;
    6281             :         }
    6282             : 
    6283           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_PREAMBLE_CNTL, 0));
    6284           0 :         amdgpu_ring_write(ring, PACKET3_PREAMBLE_BEGIN_CLEAR_STATE);
    6285             : 
    6286           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_CONTEXT_CONTROL, 1));
    6287           0 :         amdgpu_ring_write(ring, 0x80000000);
    6288           0 :         amdgpu_ring_write(ring, 0x80000000);
    6289             : 
    6290           0 :         for (sect = gfx10_cs_data; sect->section != NULL; ++sect) {
    6291           0 :                 for (ext = sect->section; ext->extent != NULL; ++ext) {
    6292           0 :                         if (sect->id == SECT_CONTEXT) {
    6293           0 :                                 amdgpu_ring_write(ring,
    6294           0 :                                                   PACKET3(PACKET3_SET_CONTEXT_REG,
    6295             :                                                           ext->reg_count));
    6296           0 :                                 amdgpu_ring_write(ring, ext->reg_index -
    6297             :                                                   PACKET3_SET_CONTEXT_REG_START);
    6298           0 :                                 for (i = 0; i < ext->reg_count; i++)
    6299           0 :                                         amdgpu_ring_write(ring, ext->extent[i]);
    6300             :                         }
    6301             :                 }
    6302             :         }
    6303             : 
    6304           0 :         ctx_reg_offset =
    6305           0 :                 SOC15_REG_OFFSET(GC, 0, mmPA_SC_TILE_STEERING_OVERRIDE) - PACKET3_SET_CONTEXT_REG_START;
    6306           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_SET_CONTEXT_REG, 1));
    6307           0 :         amdgpu_ring_write(ring, ctx_reg_offset);
    6308           0 :         amdgpu_ring_write(ring, adev->gfx.config.pa_sc_tile_steering_override);
    6309             : 
    6310           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_PREAMBLE_CNTL, 0));
    6311           0 :         amdgpu_ring_write(ring, PACKET3_PREAMBLE_END_CLEAR_STATE);
    6312             : 
    6313           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_CLEAR_STATE, 0));
    6314           0 :         amdgpu_ring_write(ring, 0);
    6315             : 
    6316           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_SET_BASE, 2));
    6317           0 :         amdgpu_ring_write(ring, PACKET3_BASE_INDEX(CE_PARTITION_BASE));
    6318           0 :         amdgpu_ring_write(ring, 0x8000);
    6319           0 :         amdgpu_ring_write(ring, 0x8000);
    6320             : 
    6321           0 :         amdgpu_ring_commit(ring);
    6322             : 
    6323             :         /* submit cs packet to copy state 0 to next available state */
    6324           0 :         if (adev->gfx.num_gfx_rings > 1) {
    6325             :                 /* maximum supported gfx ring is 2 */
    6326           0 :                 ring = &adev->gfx.gfx_ring[1];
    6327           0 :                 r = amdgpu_ring_alloc(ring, 2);
    6328           0 :                 if (r) {
    6329           0 :                         DRM_ERROR("amdgpu: cp failed to lock ring (%d).\n", r);
    6330           0 :                         return r;
    6331             :                 }
    6332             : 
    6333           0 :                 amdgpu_ring_write(ring, PACKET3(PACKET3_CLEAR_STATE, 0));
    6334           0 :                 amdgpu_ring_write(ring, 0);
    6335             : 
    6336           0 :                 amdgpu_ring_commit(ring);
    6337             :         }
    6338             :         return 0;
    6339             : }
    6340             : 
    6341           0 : static void gfx_v10_0_cp_gfx_switch_pipe(struct amdgpu_device *adev,
    6342             :                                          CP_PIPE_ID pipe)
    6343             : {
    6344             :         u32 tmp;
    6345             : 
    6346           0 :         tmp = RREG32_SOC15(GC, 0, mmGRBM_GFX_CNTL);
    6347           0 :         tmp = REG_SET_FIELD(tmp, GRBM_GFX_CNTL, PIPEID, pipe);
    6348             : 
    6349           0 :         WREG32_SOC15(GC, 0, mmGRBM_GFX_CNTL, tmp);
    6350           0 : }
    6351             : 
    6352           0 : static void gfx_v10_0_cp_gfx_set_doorbell(struct amdgpu_device *adev,
    6353             :                                           struct amdgpu_ring *ring)
    6354             : {
    6355             :         u32 tmp;
    6356             : 
    6357           0 :         if (!amdgpu_async_gfx_ring) {
    6358           0 :                 tmp = RREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_CONTROL);
    6359           0 :                 if (ring->use_doorbell) {
    6360           0 :                         tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
    6361             :                                                 DOORBELL_OFFSET, ring->doorbell_index);
    6362           0 :                         tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
    6363             :                                                 DOORBELL_EN, 1);
    6364             :                 } else {
    6365           0 :                         tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
    6366             :                                                 DOORBELL_EN, 0);
    6367             :                 }
    6368           0 :                 WREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_CONTROL, tmp);
    6369             :         }
    6370           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    6371             :         case IP_VERSION(10, 3, 0):
    6372             :         case IP_VERSION(10, 3, 2):
    6373             :         case IP_VERSION(10, 3, 1):
    6374             :         case IP_VERSION(10, 3, 4):
    6375             :         case IP_VERSION(10, 3, 5):
    6376             :         case IP_VERSION(10, 3, 6):
    6377             :         case IP_VERSION(10, 3, 3):
    6378             :         case IP_VERSION(10, 3, 7):
    6379           0 :                 tmp = REG_SET_FIELD(0, CP_RB_DOORBELL_RANGE_LOWER,
    6380             :                                     DOORBELL_RANGE_LOWER_Sienna_Cichlid, ring->doorbell_index);
    6381           0 :                 WREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_RANGE_LOWER, tmp);
    6382             : 
    6383           0 :                 WREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_RANGE_UPPER,
    6384             :                              CP_RB_DOORBELL_RANGE_UPPER__DOORBELL_RANGE_UPPER_Sienna_Cichlid_MASK);
    6385             :                 break;
    6386             :         default:
    6387           0 :                 tmp = REG_SET_FIELD(0, CP_RB_DOORBELL_RANGE_LOWER,
    6388             :                                     DOORBELL_RANGE_LOWER, ring->doorbell_index);
    6389           0 :                 WREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_RANGE_LOWER, tmp);
    6390             : 
    6391           0 :                 WREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_RANGE_UPPER,
    6392             :                              CP_RB_DOORBELL_RANGE_UPPER__DOORBELL_RANGE_UPPER_MASK);
    6393             :                 break;
    6394             :         }
    6395           0 : }
    6396             : 
    6397           0 : static int gfx_v10_0_cp_gfx_resume(struct amdgpu_device *adev)
    6398             : {
    6399             :         struct amdgpu_ring *ring;
    6400             :         u32 tmp;
    6401             :         u32 rb_bufsz;
    6402             :         u64 rb_addr, rptr_addr, wptr_gpu_addr;
    6403             :         u32 i;
    6404             : 
    6405             :         /* Set the write pointer delay */
    6406           0 :         WREG32_SOC15(GC, 0, mmCP_RB_WPTR_DELAY, 0);
    6407             : 
    6408             :         /* set the RB to use vmid 0 */
    6409           0 :         WREG32_SOC15(GC, 0, mmCP_RB_VMID, 0);
    6410             : 
    6411             :         /* Init gfx ring 0 for pipe 0 */
    6412           0 :         mutex_lock(&adev->srbm_mutex);
    6413           0 :         gfx_v10_0_cp_gfx_switch_pipe(adev, PIPE_ID0);
    6414             : 
    6415             :         /* Set ring buffer size */
    6416           0 :         ring = &adev->gfx.gfx_ring[0];
    6417           0 :         rb_bufsz = order_base_2(ring->ring_size / 8);
    6418           0 :         tmp = REG_SET_FIELD(0, CP_RB0_CNTL, RB_BUFSZ, rb_bufsz);
    6419           0 :         tmp = REG_SET_FIELD(tmp, CP_RB0_CNTL, RB_BLKSZ, rb_bufsz - 2);
    6420             : #ifdef __BIG_ENDIAN
    6421             :         tmp = REG_SET_FIELD(tmp, CP_RB0_CNTL, BUF_SWAP, 1);
    6422             : #endif
    6423           0 :         WREG32_SOC15(GC, 0, mmCP_RB0_CNTL, tmp);
    6424             : 
    6425             :         /* Initialize the ring buffer's write pointers */
    6426           0 :         ring->wptr = 0;
    6427           0 :         WREG32_SOC15(GC, 0, mmCP_RB0_WPTR, lower_32_bits(ring->wptr));
    6428           0 :         WREG32_SOC15(GC, 0, mmCP_RB0_WPTR_HI, upper_32_bits(ring->wptr));
    6429             : 
    6430             :         /* set the wb address wether it's enabled or not */
    6431           0 :         rptr_addr = ring->rptr_gpu_addr;
    6432           0 :         WREG32_SOC15(GC, 0, mmCP_RB0_RPTR_ADDR, lower_32_bits(rptr_addr));
    6433           0 :         WREG32_SOC15(GC, 0, mmCP_RB0_RPTR_ADDR_HI, upper_32_bits(rptr_addr) &
    6434             :                      CP_RB_RPTR_ADDR_HI__RB_RPTR_ADDR_HI_MASK);
    6435             : 
    6436           0 :         wptr_gpu_addr = ring->wptr_gpu_addr;
    6437           0 :         WREG32_SOC15(GC, 0, mmCP_RB_WPTR_POLL_ADDR_LO,
    6438             :                      lower_32_bits(wptr_gpu_addr));
    6439           0 :         WREG32_SOC15(GC, 0, mmCP_RB_WPTR_POLL_ADDR_HI,
    6440             :                      upper_32_bits(wptr_gpu_addr));
    6441             : 
    6442           0 :         mdelay(1);
    6443           0 :         WREG32_SOC15(GC, 0, mmCP_RB0_CNTL, tmp);
    6444             : 
    6445           0 :         rb_addr = ring->gpu_addr >> 8;
    6446           0 :         WREG32_SOC15(GC, 0, mmCP_RB0_BASE, rb_addr);
    6447           0 :         WREG32_SOC15(GC, 0, mmCP_RB0_BASE_HI, upper_32_bits(rb_addr));
    6448             : 
    6449           0 :         WREG32_SOC15(GC, 0, mmCP_RB_ACTIVE, 1);
    6450             : 
    6451           0 :         gfx_v10_0_cp_gfx_set_doorbell(adev, ring);
    6452           0 :         mutex_unlock(&adev->srbm_mutex);
    6453             : 
    6454             :         /* Init gfx ring 1 for pipe 1 */
    6455           0 :         if (adev->gfx.num_gfx_rings > 1) {
    6456           0 :                 mutex_lock(&adev->srbm_mutex);
    6457           0 :                 gfx_v10_0_cp_gfx_switch_pipe(adev, PIPE_ID1);
    6458             :                 /* maximum supported gfx ring is 2 */
    6459           0 :                 ring = &adev->gfx.gfx_ring[1];
    6460           0 :                 rb_bufsz = order_base_2(ring->ring_size / 8);
    6461           0 :                 tmp = REG_SET_FIELD(0, CP_RB1_CNTL, RB_BUFSZ, rb_bufsz);
    6462           0 :                 tmp = REG_SET_FIELD(tmp, CP_RB1_CNTL, RB_BLKSZ, rb_bufsz - 2);
    6463           0 :                 WREG32_SOC15(GC, 0, mmCP_RB1_CNTL, tmp);
    6464             :                 /* Initialize the ring buffer's write pointers */
    6465           0 :                 ring->wptr = 0;
    6466           0 :                 WREG32_SOC15(GC, 0, mmCP_RB1_WPTR, lower_32_bits(ring->wptr));
    6467           0 :                 WREG32_SOC15(GC, 0, mmCP_RB1_WPTR_HI, upper_32_bits(ring->wptr));
    6468             :                 /* Set the wb address wether it's enabled or not */
    6469           0 :                 rptr_addr = ring->rptr_gpu_addr;
    6470           0 :                 WREG32_SOC15(GC, 0, mmCP_RB1_RPTR_ADDR, lower_32_bits(rptr_addr));
    6471           0 :                 WREG32_SOC15(GC, 0, mmCP_RB1_RPTR_ADDR_HI, upper_32_bits(rptr_addr) &
    6472             :                              CP_RB1_RPTR_ADDR_HI__RB_RPTR_ADDR_HI_MASK);
    6473           0 :                 wptr_gpu_addr = ring->wptr_gpu_addr;
    6474           0 :                 WREG32_SOC15(GC, 0, mmCP_RB_WPTR_POLL_ADDR_LO,
    6475             :                              lower_32_bits(wptr_gpu_addr));
    6476           0 :                 WREG32_SOC15(GC, 0, mmCP_RB_WPTR_POLL_ADDR_HI,
    6477             :                              upper_32_bits(wptr_gpu_addr));
    6478             : 
    6479           0 :                 mdelay(1);
    6480           0 :                 WREG32_SOC15(GC, 0, mmCP_RB1_CNTL, tmp);
    6481             : 
    6482           0 :                 rb_addr = ring->gpu_addr >> 8;
    6483           0 :                 WREG32_SOC15(GC, 0, mmCP_RB1_BASE, rb_addr);
    6484           0 :                 WREG32_SOC15(GC, 0, mmCP_RB1_BASE_HI, upper_32_bits(rb_addr));
    6485           0 :                 WREG32_SOC15(GC, 0, mmCP_RB1_ACTIVE, 1);
    6486             : 
    6487           0 :                 gfx_v10_0_cp_gfx_set_doorbell(adev, ring);
    6488           0 :                 mutex_unlock(&adev->srbm_mutex);
    6489             :         }
    6490             :         /* Switch to pipe 0 */
    6491           0 :         mutex_lock(&adev->srbm_mutex);
    6492           0 :         gfx_v10_0_cp_gfx_switch_pipe(adev, PIPE_ID0);
    6493           0 :         mutex_unlock(&adev->srbm_mutex);
    6494             : 
    6495             :         /* start the ring */
    6496           0 :         gfx_v10_0_cp_gfx_start(adev);
    6497             : 
    6498           0 :         for (i = 0; i < adev->gfx.num_gfx_rings; i++) {
    6499           0 :                 ring = &adev->gfx.gfx_ring[i];
    6500           0 :                 ring->sched.ready = true;
    6501             :         }
    6502             : 
    6503           0 :         return 0;
    6504             : }
    6505             : 
    6506           0 : static void gfx_v10_0_cp_compute_enable(struct amdgpu_device *adev, bool enable)
    6507             : {
    6508           0 :         if (enable) {
    6509           0 :                 switch (adev->ip_versions[GC_HWIP][0]) {
    6510             :                 case IP_VERSION(10, 3, 0):
    6511             :                 case IP_VERSION(10, 3, 2):
    6512             :                 case IP_VERSION(10, 3, 1):
    6513             :                 case IP_VERSION(10, 3, 4):
    6514             :                 case IP_VERSION(10, 3, 5):
    6515             :                 case IP_VERSION(10, 3, 6):
    6516             :                 case IP_VERSION(10, 3, 3):
    6517             :                 case IP_VERSION(10, 3, 7):
    6518           0 :                         WREG32_SOC15(GC, 0, mmCP_MEC_CNTL_Sienna_Cichlid, 0);
    6519             :                         break;
    6520             :                 default:
    6521           0 :                         WREG32_SOC15(GC, 0, mmCP_MEC_CNTL, 0);
    6522             :                         break;
    6523             :                 }
    6524             :         } else {
    6525           0 :                 switch (adev->ip_versions[GC_HWIP][0]) {
    6526             :                 case IP_VERSION(10, 3, 0):
    6527             :                 case IP_VERSION(10, 3, 2):
    6528             :                 case IP_VERSION(10, 3, 1):
    6529             :                 case IP_VERSION(10, 3, 4):
    6530             :                 case IP_VERSION(10, 3, 5):
    6531             :                 case IP_VERSION(10, 3, 6):
    6532             :                 case IP_VERSION(10, 3, 3):
    6533             :                 case IP_VERSION(10, 3, 7):
    6534           0 :                         WREG32_SOC15(GC, 0, mmCP_MEC_CNTL_Sienna_Cichlid,
    6535             :                                      (CP_MEC_CNTL__MEC_ME1_HALT_MASK |
    6536             :                                       CP_MEC_CNTL__MEC_ME2_HALT_MASK));
    6537             :                         break;
    6538             :                 default:
    6539           0 :                         WREG32_SOC15(GC, 0, mmCP_MEC_CNTL,
    6540             :                                      (CP_MEC_CNTL__MEC_ME1_HALT_MASK |
    6541             :                                       CP_MEC_CNTL__MEC_ME2_HALT_MASK));
    6542             :                         break;
    6543             :                 }
    6544           0 :                 adev->gfx.kiq.ring.sched.ready = false;
    6545             :         }
    6546           0 :         udelay(50);
    6547           0 : }
    6548             : 
    6549           0 : static int gfx_v10_0_cp_compute_load_microcode(struct amdgpu_device *adev)
    6550             : {
    6551             :         const struct gfx_firmware_header_v1_0 *mec_hdr;
    6552             :         const __le32 *fw_data;
    6553             :         unsigned i;
    6554             :         u32 tmp;
    6555           0 :         u32 usec_timeout = 50000; /* Wait for 50 ms */
    6556             : 
    6557           0 :         if (!adev->gfx.mec_fw)
    6558             :                 return -EINVAL;
    6559             : 
    6560           0 :         gfx_v10_0_cp_compute_enable(adev, false);
    6561             : 
    6562           0 :         mec_hdr = (const struct gfx_firmware_header_v1_0 *)adev->gfx.mec_fw->data;
    6563           0 :         amdgpu_ucode_print_gfx_hdr(&mec_hdr->header);
    6564             : 
    6565           0 :         fw_data = (const __le32 *)
    6566           0 :                 (adev->gfx.mec_fw->data +
    6567           0 :                  le32_to_cpu(mec_hdr->header.ucode_array_offset_bytes));
    6568             : 
    6569             :         /* Trigger an invalidation of the L1 instruction caches */
    6570           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_CPC_IC_OP_CNTL);
    6571           0 :         tmp = REG_SET_FIELD(tmp, CP_CPC_IC_OP_CNTL, INVALIDATE_CACHE, 1);
    6572           0 :         WREG32_SOC15(GC, 0, mmCP_CPC_IC_OP_CNTL, tmp);
    6573             : 
    6574             :         /* Wait for invalidation complete */
    6575           0 :         for (i = 0; i < usec_timeout; i++) {
    6576           0 :                 tmp = RREG32_SOC15(GC, 0, mmCP_CPC_IC_OP_CNTL);
    6577           0 :                 if (1 == REG_GET_FIELD(tmp, CP_CPC_IC_OP_CNTL,
    6578             :                                        INVALIDATE_CACHE_COMPLETE))
    6579             :                         break;
    6580           0 :                 udelay(1);
    6581             :         }
    6582             : 
    6583           0 :         if (i >= usec_timeout) {
    6584           0 :                 dev_err(adev->dev, "failed to invalidate instruction cache\n");
    6585           0 :                 return -EINVAL;
    6586             :         }
    6587             : 
    6588           0 :         if (amdgpu_emu_mode == 1)
    6589           0 :                 adev->hdp.funcs->flush_hdp(adev, NULL);
    6590             : 
    6591           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_CPC_IC_BASE_CNTL);
    6592           0 :         tmp = REG_SET_FIELD(tmp, CP_CPC_IC_BASE_CNTL, CACHE_POLICY, 0);
    6593           0 :         tmp = REG_SET_FIELD(tmp, CP_CPC_IC_BASE_CNTL, EXE_DISABLE, 0);
    6594           0 :         tmp = REG_SET_FIELD(tmp, CP_CPC_IC_BASE_CNTL, ADDRESS_CLAMP, 1);
    6595           0 :         WREG32_SOC15(GC, 0, mmCP_CPC_IC_BASE_CNTL, tmp);
    6596             : 
    6597           0 :         WREG32_SOC15(GC, 0, mmCP_CPC_IC_BASE_LO, adev->gfx.mec.mec_fw_gpu_addr &
    6598             :                      0xFFFFF000);
    6599           0 :         WREG32_SOC15(GC, 0, mmCP_CPC_IC_BASE_HI,
    6600             :                      upper_32_bits(adev->gfx.mec.mec_fw_gpu_addr));
    6601             : 
    6602             :         /* MEC1 */
    6603           0 :         WREG32_SOC15(GC, 0, mmCP_MEC_ME1_UCODE_ADDR, 0);
    6604             : 
    6605           0 :         for (i = 0; i < mec_hdr->jt_size; i++)
    6606           0 :                 WREG32_SOC15(GC, 0, mmCP_MEC_ME1_UCODE_DATA,
    6607             :                              le32_to_cpup(fw_data + mec_hdr->jt_offset + i));
    6608             : 
    6609           0 :         WREG32_SOC15(GC, 0, mmCP_MEC_ME1_UCODE_ADDR, adev->gfx.mec_fw_version);
    6610             : 
    6611             :         /*
    6612             :          * TODO: Loading MEC2 firmware is only necessary if MEC2 should run
    6613             :          * different microcode than MEC1.
    6614             :          */
    6615             : 
    6616             :         return 0;
    6617             : }
    6618             : 
    6619           0 : static void gfx_v10_0_kiq_setting(struct amdgpu_ring *ring)
    6620             : {
    6621             :         uint32_t tmp;
    6622           0 :         struct amdgpu_device *adev = ring->adev;
    6623             : 
    6624             :         /* tell RLC which is KIQ queue */
    6625           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    6626             :         case IP_VERSION(10, 3, 0):
    6627             :         case IP_VERSION(10, 3, 2):
    6628             :         case IP_VERSION(10, 3, 1):
    6629             :         case IP_VERSION(10, 3, 4):
    6630             :         case IP_VERSION(10, 3, 5):
    6631             :         case IP_VERSION(10, 3, 6):
    6632             :         case IP_VERSION(10, 3, 3):
    6633             :         case IP_VERSION(10, 3, 7):
    6634           0 :                 tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid);
    6635           0 :                 tmp &= 0xffffff00;
    6636           0 :                 tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
    6637           0 :                 WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid, tmp);
    6638           0 :                 tmp |= 0x80;
    6639           0 :                 WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid, tmp);
    6640             :                 break;
    6641             :         default:
    6642           0 :                 tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS);
    6643           0 :                 tmp &= 0xffffff00;
    6644           0 :                 tmp |= (ring->me << 5) | (ring->pipe << 3) | (ring->queue);
    6645           0 :                 WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
    6646           0 :                 tmp |= 0x80;
    6647           0 :                 WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
    6648             :                 break;
    6649             :         }
    6650           0 : }
    6651             : 
    6652           0 : static void gfx_v10_0_gfx_mqd_set_priority(struct amdgpu_device *adev,
    6653             :                                            struct v10_gfx_mqd *mqd,
    6654             :                                            struct amdgpu_mqd_prop *prop)
    6655             : {
    6656           0 :         bool priority = 0;
    6657             :         u32 tmp;
    6658             : 
    6659             :         /* set up default queue priority level
    6660             :          * 0x0 = low priority, 0x1 = high priority
    6661             :          */
    6662           0 :         if (prop->hqd_pipe_priority == AMDGPU_GFX_PIPE_PRIO_HIGH)
    6663           0 :                 priority = 1;
    6664             : 
    6665           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_GFX_HQD_QUEUE_PRIORITY);
    6666           0 :         tmp = REG_SET_FIELD(tmp, CP_GFX_HQD_QUEUE_PRIORITY, PRIORITY_LEVEL, priority);
    6667           0 :         mqd->cp_gfx_hqd_queue_priority = tmp;
    6668           0 : }
    6669             : 
    6670           0 : static int gfx_v10_0_gfx_mqd_init(struct amdgpu_device *adev, void *m,
    6671             :                                   struct amdgpu_mqd_prop *prop)
    6672             : {
    6673           0 :         struct v10_gfx_mqd *mqd = m;
    6674             :         uint64_t hqd_gpu_addr, wb_gpu_addr;
    6675             :         uint32_t tmp;
    6676             :         uint32_t rb_bufsz;
    6677             : 
    6678             :         /* set up gfx hqd wptr */
    6679           0 :         mqd->cp_gfx_hqd_wptr = 0;
    6680           0 :         mqd->cp_gfx_hqd_wptr_hi = 0;
    6681             : 
    6682             :         /* set the pointer to the MQD */
    6683           0 :         mqd->cp_mqd_base_addr = prop->mqd_gpu_addr & 0xfffffffc;
    6684           0 :         mqd->cp_mqd_base_addr_hi = upper_32_bits(prop->mqd_gpu_addr);
    6685             : 
    6686             :         /* set up mqd control */
    6687           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_GFX_MQD_CONTROL);
    6688           0 :         tmp = REG_SET_FIELD(tmp, CP_GFX_MQD_CONTROL, VMID, 0);
    6689           0 :         tmp = REG_SET_FIELD(tmp, CP_GFX_MQD_CONTROL, PRIV_STATE, 1);
    6690           0 :         tmp = REG_SET_FIELD(tmp, CP_GFX_MQD_CONTROL, CACHE_POLICY, 0);
    6691           0 :         mqd->cp_gfx_mqd_control = tmp;
    6692             : 
    6693             :         /* set up gfx_hqd_vimd with 0x0 to indicate the ring buffer's vmid */
    6694           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_GFX_HQD_VMID);
    6695           0 :         tmp = REG_SET_FIELD(tmp, CP_GFX_HQD_VMID, VMID, 0);
    6696           0 :         mqd->cp_gfx_hqd_vmid = 0;
    6697             : 
    6698             :         /* set up gfx queue priority */
    6699           0 :         gfx_v10_0_gfx_mqd_set_priority(adev, mqd, prop);
    6700             : 
    6701             :         /* set up time quantum */
    6702           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_GFX_HQD_QUANTUM);
    6703           0 :         tmp = REG_SET_FIELD(tmp, CP_GFX_HQD_QUANTUM, QUANTUM_EN, 1);
    6704           0 :         mqd->cp_gfx_hqd_quantum = tmp;
    6705             : 
    6706             :         /* set up gfx hqd base. this is similar as CP_RB_BASE */
    6707           0 :         hqd_gpu_addr = prop->hqd_base_gpu_addr >> 8;
    6708           0 :         mqd->cp_gfx_hqd_base = hqd_gpu_addr;
    6709           0 :         mqd->cp_gfx_hqd_base_hi = upper_32_bits(hqd_gpu_addr);
    6710             : 
    6711             :         /* set up hqd_rptr_addr/_hi, similar as CP_RB_RPTR */
    6712           0 :         wb_gpu_addr = prop->rptr_gpu_addr;
    6713           0 :         mqd->cp_gfx_hqd_rptr_addr = wb_gpu_addr & 0xfffffffc;
    6714           0 :         mqd->cp_gfx_hqd_rptr_addr_hi =
    6715           0 :                 upper_32_bits(wb_gpu_addr) & 0xffff;
    6716             : 
    6717             :         /* set up rb_wptr_poll addr */
    6718           0 :         wb_gpu_addr = prop->wptr_gpu_addr;
    6719           0 :         mqd->cp_rb_wptr_poll_addr_lo = wb_gpu_addr & 0xfffffffc;
    6720           0 :         mqd->cp_rb_wptr_poll_addr_hi = upper_32_bits(wb_gpu_addr) & 0xffff;
    6721             : 
    6722             :         /* set up the gfx_hqd_control, similar as CP_RB0_CNTL */
    6723           0 :         rb_bufsz = order_base_2(prop->queue_size / 4) - 1;
    6724           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_GFX_HQD_CNTL);
    6725           0 :         tmp = REG_SET_FIELD(tmp, CP_GFX_HQD_CNTL, RB_BUFSZ, rb_bufsz);
    6726           0 :         tmp = REG_SET_FIELD(tmp, CP_GFX_HQD_CNTL, RB_BLKSZ, rb_bufsz - 2);
    6727             : #ifdef __BIG_ENDIAN
    6728             :         tmp = REG_SET_FIELD(tmp, CP_GFX_HQD_CNTL, BUF_SWAP, 1);
    6729             : #endif
    6730           0 :         mqd->cp_gfx_hqd_cntl = tmp;
    6731             : 
    6732             :         /* set up cp_doorbell_control */
    6733           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_CONTROL);
    6734           0 :         if (prop->use_doorbell) {
    6735           0 :                 tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
    6736             :                                     DOORBELL_OFFSET, prop->doorbell_index);
    6737           0 :                 tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
    6738             :                                     DOORBELL_EN, 1);
    6739             :         } else
    6740           0 :                 tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
    6741             :                                     DOORBELL_EN, 0);
    6742           0 :         mqd->cp_rb_doorbell_control = tmp;
    6743             : 
    6744             :         /* reset read and write pointers, similar to CP_RB0_WPTR/_RPTR */
    6745           0 :         mqd->cp_gfx_hqd_rptr = RREG32_SOC15(GC, 0, mmCP_GFX_HQD_RPTR);
    6746             : 
    6747             :         /* active the queue */
    6748           0 :         mqd->cp_gfx_hqd_active = 1;
    6749             : 
    6750           0 :         return 0;
    6751             : }
    6752             : 
    6753             : #ifdef BRING_UP_DEBUG
    6754             : static int gfx_v10_0_gfx_queue_init_register(struct amdgpu_ring *ring)
    6755             : {
    6756             :         struct amdgpu_device *adev = ring->adev;
    6757             :         struct v10_gfx_mqd *mqd = ring->mqd_ptr;
    6758             : 
    6759             :         /* set mmCP_GFX_HQD_WPTR/_HI to 0 */
    6760             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_WPTR, mqd->cp_gfx_hqd_wptr);
    6761             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_WPTR_HI, mqd->cp_gfx_hqd_wptr_hi);
    6762             : 
    6763             :         /* set GFX_MQD_BASE */
    6764             :         WREG32_SOC15(GC, 0, mmCP_MQD_BASE_ADDR, mqd->cp_mqd_base_addr);
    6765             :         WREG32_SOC15(GC, 0, mmCP_MQD_BASE_ADDR_HI, mqd->cp_mqd_base_addr_hi);
    6766             : 
    6767             :         /* set GFX_MQD_CONTROL */
    6768             :         WREG32_SOC15(GC, 0, mmCP_GFX_MQD_CONTROL, mqd->cp_gfx_mqd_control);
    6769             : 
    6770             :         /* set GFX_HQD_VMID to 0 */
    6771             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_VMID, mqd->cp_gfx_hqd_vmid);
    6772             : 
    6773             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_QUEUE_PRIORITY,
    6774             :                         mqd->cp_gfx_hqd_queue_priority);
    6775             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_QUANTUM, mqd->cp_gfx_hqd_quantum);
    6776             : 
    6777             :         /* set GFX_HQD_BASE, similar as CP_RB_BASE */
    6778             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_BASE, mqd->cp_gfx_hqd_base);
    6779             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_BASE_HI, mqd->cp_gfx_hqd_base_hi);
    6780             : 
    6781             :         /* set GFX_HQD_RPTR_ADDR, similar as CP_RB_RPTR */
    6782             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_RPTR_ADDR, mqd->cp_gfx_hqd_rptr_addr);
    6783             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_RPTR_ADDR_HI, mqd->cp_gfx_hqd_rptr_addr_hi);
    6784             : 
    6785             :         /* set GFX_HQD_CNTL, similar as CP_RB_CNTL */
    6786             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_CNTL, mqd->cp_gfx_hqd_cntl);
    6787             : 
    6788             :         /* set RB_WPTR_POLL_ADDR */
    6789             :         WREG32_SOC15(GC, 0, mmCP_RB_WPTR_POLL_ADDR_LO, mqd->cp_rb_wptr_poll_addr_lo);
    6790             :         WREG32_SOC15(GC, 0, mmCP_RB_WPTR_POLL_ADDR_HI, mqd->cp_rb_wptr_poll_addr_hi);
    6791             : 
    6792             :         /* set RB_DOORBELL_CONTROL */
    6793             :         WREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_CONTROL, mqd->cp_rb_doorbell_control);
    6794             : 
    6795             :         /* active the queue */
    6796             :         WREG32_SOC15(GC, 0, mmCP_GFX_HQD_ACTIVE, mqd->cp_gfx_hqd_active);
    6797             : 
    6798             :         return 0;
    6799             : }
    6800             : #endif
    6801             : 
    6802           0 : static int gfx_v10_0_gfx_init_queue(struct amdgpu_ring *ring)
    6803             : {
    6804           0 :         struct amdgpu_device *adev = ring->adev;
    6805           0 :         struct v10_gfx_mqd *mqd = ring->mqd_ptr;
    6806           0 :         int mqd_idx = ring - &adev->gfx.gfx_ring[0];
    6807             : 
    6808           0 :         if (!amdgpu_in_reset(adev) && !adev->in_suspend) {
    6809           0 :                 memset((void *)mqd, 0, sizeof(*mqd));
    6810           0 :                 mutex_lock(&adev->srbm_mutex);
    6811           0 :                 nv_grbm_select(adev, ring->me, ring->pipe, ring->queue, 0);
    6812           0 :                 amdgpu_ring_init_mqd(ring);
    6813             : 
    6814             :                 /*
    6815             :                  * if there are 2 gfx rings, set the lower doorbell
    6816             :                  * range of the first ring, otherwise the range of
    6817             :                  * the second ring will override the first ring
    6818             :                  */
    6819           0 :                 if (ring->doorbell_index == adev->doorbell_index.gfx_ring0 << 1)
    6820           0 :                         gfx_v10_0_cp_gfx_set_doorbell(adev, ring);
    6821             : 
    6822             : #ifdef BRING_UP_DEBUG
    6823             :                 gfx_v10_0_gfx_queue_init_register(ring);
    6824             : #endif
    6825           0 :                 nv_grbm_select(adev, 0, 0, 0, 0);
    6826           0 :                 mutex_unlock(&adev->srbm_mutex);
    6827           0 :                 if (adev->gfx.me.mqd_backup[mqd_idx])
    6828           0 :                         memcpy(adev->gfx.me.mqd_backup[mqd_idx], mqd, sizeof(*mqd));
    6829           0 :         } else if (amdgpu_in_reset(adev)) {
    6830             :                 /* reset mqd with the backup copy */
    6831           0 :                 if (adev->gfx.me.mqd_backup[mqd_idx])
    6832           0 :                         memcpy(mqd, adev->gfx.me.mqd_backup[mqd_idx], sizeof(*mqd));
    6833             :                 /* reset the ring */
    6834           0 :                 ring->wptr = 0;
    6835           0 :                 *ring->wptr_cpu_addr = 0;
    6836             :                 amdgpu_ring_clear_ring(ring);
    6837             : #ifdef BRING_UP_DEBUG
    6838             :                 mutex_lock(&adev->srbm_mutex);
    6839             :                 nv_grbm_select(adev, ring->me, ring->pipe, ring->queue, 0);
    6840             :                 gfx_v10_0_gfx_queue_init_register(ring);
    6841             :                 nv_grbm_select(adev, 0, 0, 0, 0);
    6842             :                 mutex_unlock(&adev->srbm_mutex);
    6843             : #endif
    6844             :         } else {
    6845             :                 amdgpu_ring_clear_ring(ring);
    6846             :         }
    6847             : 
    6848           0 :         return 0;
    6849             : }
    6850             : 
    6851             : #ifndef BRING_UP_DEBUG
    6852           0 : static int gfx_v10_0_kiq_enable_kgq(struct amdgpu_device *adev)
    6853             : {
    6854           0 :         struct amdgpu_kiq *kiq = &adev->gfx.kiq;
    6855           0 :         struct amdgpu_ring *kiq_ring = &adev->gfx.kiq.ring;
    6856             :         int r, i;
    6857             : 
    6858           0 :         if (!kiq->pmf || !kiq->pmf->kiq_map_queues)
    6859             :                 return -EINVAL;
    6860             : 
    6861           0 :         r = amdgpu_ring_alloc(kiq_ring, kiq->pmf->map_queues_size *
    6862           0 :                                         adev->gfx.num_gfx_rings);
    6863           0 :         if (r) {
    6864           0 :                 DRM_ERROR("Failed to lock KIQ (%d).\n", r);
    6865           0 :                 return r;
    6866             :         }
    6867             : 
    6868           0 :         for (i = 0; i < adev->gfx.num_gfx_rings; i++)
    6869           0 :                 kiq->pmf->kiq_map_queues(kiq_ring, &adev->gfx.gfx_ring[i]);
    6870             : 
    6871           0 :         return amdgpu_ring_test_helper(kiq_ring);
    6872             : }
    6873             : #endif
    6874             : 
    6875           0 : static int gfx_v10_0_cp_async_gfx_ring_resume(struct amdgpu_device *adev)
    6876             : {
    6877             :         int r, i;
    6878             :         struct amdgpu_ring *ring;
    6879             : 
    6880           0 :         for (i = 0; i < adev->gfx.num_gfx_rings; i++) {
    6881           0 :                 ring = &adev->gfx.gfx_ring[i];
    6882             : 
    6883           0 :                 r = amdgpu_bo_reserve(ring->mqd_obj, false);
    6884           0 :                 if (unlikely(r != 0))
    6885             :                         goto done;
    6886             : 
    6887           0 :                 r = amdgpu_bo_kmap(ring->mqd_obj, (void **)&ring->mqd_ptr);
    6888           0 :                 if (!r) {
    6889           0 :                         r = gfx_v10_0_gfx_init_queue(ring);
    6890           0 :                         amdgpu_bo_kunmap(ring->mqd_obj);
    6891           0 :                         ring->mqd_ptr = NULL;
    6892             :                 }
    6893           0 :                 amdgpu_bo_unreserve(ring->mqd_obj);
    6894           0 :                 if (r)
    6895             :                         goto done;
    6896             :         }
    6897             : #ifndef BRING_UP_DEBUG
    6898           0 :         r = gfx_v10_0_kiq_enable_kgq(adev);
    6899           0 :         if (r)
    6900             :                 goto done;
    6901             : #endif
    6902           0 :         r = gfx_v10_0_cp_gfx_start(adev);
    6903           0 :         if (r)
    6904             :                 goto done;
    6905             : 
    6906           0 :         for (i = 0; i < adev->gfx.num_gfx_rings; i++) {
    6907           0 :                 ring = &adev->gfx.gfx_ring[i];
    6908           0 :                 ring->sched.ready = true;
    6909             :         }
    6910             : done:
    6911           0 :         return r;
    6912             : }
    6913             : 
    6914           0 : static int gfx_v10_0_compute_mqd_init(struct amdgpu_device *adev, void *m,
    6915             :                                       struct amdgpu_mqd_prop *prop)
    6916             : {
    6917           0 :         struct v10_compute_mqd *mqd = m;
    6918             :         uint64_t hqd_gpu_addr, wb_gpu_addr, eop_base_addr;
    6919             :         uint32_t tmp;
    6920             : 
    6921           0 :         mqd->header = 0xC0310800;
    6922           0 :         mqd->compute_pipelinestat_enable = 0x00000001;
    6923           0 :         mqd->compute_static_thread_mgmt_se0 = 0xffffffff;
    6924           0 :         mqd->compute_static_thread_mgmt_se1 = 0xffffffff;
    6925           0 :         mqd->compute_static_thread_mgmt_se2 = 0xffffffff;
    6926           0 :         mqd->compute_static_thread_mgmt_se3 = 0xffffffff;
    6927           0 :         mqd->compute_misc_reserved = 0x00000003;
    6928             : 
    6929           0 :         eop_base_addr = prop->eop_gpu_addr >> 8;
    6930           0 :         mqd->cp_hqd_eop_base_addr_lo = eop_base_addr;
    6931           0 :         mqd->cp_hqd_eop_base_addr_hi = upper_32_bits(eop_base_addr);
    6932             : 
    6933             :         /* set the EOP size, register value is 2^(EOP_SIZE+1) dwords */
    6934           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_HQD_EOP_CONTROL);
    6935           0 :         tmp = REG_SET_FIELD(tmp, CP_HQD_EOP_CONTROL, EOP_SIZE,
    6936             :                         (order_base_2(GFX10_MEC_HPD_SIZE / 4) - 1));
    6937             : 
    6938           0 :         mqd->cp_hqd_eop_control = tmp;
    6939             : 
    6940             :         /* enable doorbell? */
    6941           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_HQD_PQ_DOORBELL_CONTROL);
    6942             : 
    6943           0 :         if (prop->use_doorbell) {
    6944           0 :                 tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_DOORBELL_CONTROL,
    6945             :                                     DOORBELL_OFFSET, prop->doorbell_index);
    6946           0 :                 tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_DOORBELL_CONTROL,
    6947             :                                     DOORBELL_EN, 1);
    6948           0 :                 tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_DOORBELL_CONTROL,
    6949             :                                     DOORBELL_SOURCE, 0);
    6950           0 :                 tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_DOORBELL_CONTROL,
    6951             :                                     DOORBELL_HIT, 0);
    6952             :         } else {
    6953           0 :                 tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_DOORBELL_CONTROL,
    6954             :                                     DOORBELL_EN, 0);
    6955             :         }
    6956             : 
    6957           0 :         mqd->cp_hqd_pq_doorbell_control = tmp;
    6958             : 
    6959             :         /* disable the queue if it's active */
    6960           0 :         mqd->cp_hqd_dequeue_request = 0;
    6961           0 :         mqd->cp_hqd_pq_rptr = 0;
    6962           0 :         mqd->cp_hqd_pq_wptr_lo = 0;
    6963           0 :         mqd->cp_hqd_pq_wptr_hi = 0;
    6964             : 
    6965             :         /* set the pointer to the MQD */
    6966           0 :         mqd->cp_mqd_base_addr_lo = prop->mqd_gpu_addr & 0xfffffffc;
    6967           0 :         mqd->cp_mqd_base_addr_hi = upper_32_bits(prop->mqd_gpu_addr);
    6968             : 
    6969             :         /* set MQD vmid to 0 */
    6970           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_MQD_CONTROL);
    6971           0 :         tmp = REG_SET_FIELD(tmp, CP_MQD_CONTROL, VMID, 0);
    6972           0 :         mqd->cp_mqd_control = tmp;
    6973             : 
    6974             :         /* set the pointer to the HQD, this is similar CP_RB0_BASE/_HI */
    6975           0 :         hqd_gpu_addr = prop->hqd_base_gpu_addr >> 8;
    6976           0 :         mqd->cp_hqd_pq_base_lo = hqd_gpu_addr;
    6977           0 :         mqd->cp_hqd_pq_base_hi = upper_32_bits(hqd_gpu_addr);
    6978             : 
    6979             :         /* set up the HQD, this is similar to CP_RB0_CNTL */
    6980           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_HQD_PQ_CONTROL);
    6981           0 :         tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL, QUEUE_SIZE,
    6982             :                             (order_base_2(prop->queue_size / 4) - 1));
    6983           0 :         tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL, RPTR_BLOCK_SIZE,
    6984             :                             (order_base_2(AMDGPU_GPU_PAGE_SIZE / 4) - 1));
    6985             : #ifdef __BIG_ENDIAN
    6986             :         tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL, ENDIAN_SWAP, 1);
    6987             : #endif
    6988           0 :         tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL, UNORD_DISPATCH, 0);
    6989           0 :         tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL, TUNNEL_DISPATCH, 0);
    6990           0 :         tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL, PRIV_STATE, 1);
    6991           0 :         tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL, KMD_QUEUE, 1);
    6992           0 :         mqd->cp_hqd_pq_control = tmp;
    6993             : 
    6994             :         /* set the wb address whether it's enabled or not */
    6995           0 :         wb_gpu_addr = prop->rptr_gpu_addr;
    6996           0 :         mqd->cp_hqd_pq_rptr_report_addr_lo = wb_gpu_addr & 0xfffffffc;
    6997           0 :         mqd->cp_hqd_pq_rptr_report_addr_hi =
    6998           0 :                 upper_32_bits(wb_gpu_addr) & 0xffff;
    6999             : 
    7000             :         /* only used if CP_PQ_WPTR_POLL_CNTL.CP_PQ_WPTR_POLL_CNTL__EN_MASK=1 */
    7001           0 :         wb_gpu_addr = prop->wptr_gpu_addr;
    7002           0 :         mqd->cp_hqd_pq_wptr_poll_addr_lo = wb_gpu_addr & 0xfffffffc;
    7003           0 :         mqd->cp_hqd_pq_wptr_poll_addr_hi = upper_32_bits(wb_gpu_addr) & 0xffff;
    7004             : 
    7005             :         /* reset read and write pointers, similar to CP_RB0_WPTR/_RPTR */
    7006           0 :         mqd->cp_hqd_pq_rptr = RREG32_SOC15(GC, 0, mmCP_HQD_PQ_RPTR);
    7007             : 
    7008             :         /* set the vmid for the queue */
    7009           0 :         mqd->cp_hqd_vmid = 0;
    7010             : 
    7011           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_HQD_PERSISTENT_STATE);
    7012           0 :         tmp = REG_SET_FIELD(tmp, CP_HQD_PERSISTENT_STATE, PRELOAD_SIZE, 0x53);
    7013           0 :         mqd->cp_hqd_persistent_state = tmp;
    7014             : 
    7015             :         /* set MIN_IB_AVAIL_SIZE */
    7016           0 :         tmp = RREG32_SOC15(GC, 0, mmCP_HQD_IB_CONTROL);
    7017           0 :         tmp = REG_SET_FIELD(tmp, CP_HQD_IB_CONTROL, MIN_IB_AVAIL_SIZE, 3);
    7018           0 :         mqd->cp_hqd_ib_control = tmp;
    7019             : 
    7020             :         /* set static priority for a compute queue/ring */
    7021           0 :         mqd->cp_hqd_pipe_priority = prop->hqd_pipe_priority;
    7022           0 :         mqd->cp_hqd_queue_priority = prop->hqd_queue_priority;
    7023             : 
    7024           0 :         mqd->cp_hqd_active = prop->hqd_active;
    7025             : 
    7026           0 :         return 0;
    7027             : }
    7028             : 
    7029           0 : static int gfx_v10_0_kiq_init_register(struct amdgpu_ring *ring)
    7030             : {
    7031           0 :         struct amdgpu_device *adev = ring->adev;
    7032           0 :         struct v10_compute_mqd *mqd = ring->mqd_ptr;
    7033             :         int j;
    7034             : 
    7035             :         /* inactivate the queue */
    7036           0 :         if (amdgpu_sriov_vf(adev))
    7037           0 :                 WREG32_SOC15(GC, 0, mmCP_HQD_ACTIVE, 0);
    7038             : 
    7039             :         /* disable wptr polling */
    7040           0 :         WREG32_FIELD15(GC, 0, CP_PQ_WPTR_POLL_CNTL, EN, 0);
    7041             : 
    7042             :         /* disable the queue if it's active */
    7043           0 :         if (RREG32_SOC15(GC, 0, mmCP_HQD_ACTIVE) & 1) {
    7044           0 :                 WREG32_SOC15(GC, 0, mmCP_HQD_DEQUEUE_REQUEST, 1);
    7045           0 :                 for (j = 0; j < adev->usec_timeout; j++) {
    7046           0 :                         if (!(RREG32_SOC15(GC, 0, mmCP_HQD_ACTIVE) & 1))
    7047             :                                 break;
    7048           0 :                         udelay(1);
    7049             :                 }
    7050           0 :                 WREG32_SOC15(GC, 0, mmCP_HQD_DEQUEUE_REQUEST,
    7051             :                        mqd->cp_hqd_dequeue_request);
    7052           0 :                 WREG32_SOC15(GC, 0, mmCP_HQD_PQ_RPTR,
    7053             :                        mqd->cp_hqd_pq_rptr);
    7054           0 :                 WREG32_SOC15(GC, 0, mmCP_HQD_PQ_WPTR_LO,
    7055             :                        mqd->cp_hqd_pq_wptr_lo);
    7056           0 :                 WREG32_SOC15(GC, 0, mmCP_HQD_PQ_WPTR_HI,
    7057             :                        mqd->cp_hqd_pq_wptr_hi);
    7058             :         }
    7059             : 
    7060             :         /* disable doorbells */
    7061           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_DOORBELL_CONTROL, 0);
    7062             : 
    7063             :         /* write the EOP addr */
    7064           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_EOP_BASE_ADDR,
    7065             :                mqd->cp_hqd_eop_base_addr_lo);
    7066           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_EOP_BASE_ADDR_HI,
    7067             :                mqd->cp_hqd_eop_base_addr_hi);
    7068             : 
    7069             :         /* set the EOP size, register value is 2^(EOP_SIZE+1) dwords */
    7070           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_EOP_CONTROL,
    7071             :                mqd->cp_hqd_eop_control);
    7072             : 
    7073             :         /* set the pointer to the MQD */
    7074           0 :         WREG32_SOC15(GC, 0, mmCP_MQD_BASE_ADDR,
    7075             :                mqd->cp_mqd_base_addr_lo);
    7076           0 :         WREG32_SOC15(GC, 0, mmCP_MQD_BASE_ADDR_HI,
    7077             :                mqd->cp_mqd_base_addr_hi);
    7078             : 
    7079             :         /* set MQD vmid to 0 */
    7080           0 :         WREG32_SOC15(GC, 0, mmCP_MQD_CONTROL,
    7081             :                mqd->cp_mqd_control);
    7082             : 
    7083             :         /* set the pointer to the HQD, this is similar CP_RB0_BASE/_HI */
    7084           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_BASE,
    7085             :                mqd->cp_hqd_pq_base_lo);
    7086           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_BASE_HI,
    7087             :                mqd->cp_hqd_pq_base_hi);
    7088             : 
    7089             :         /* set up the HQD, this is similar to CP_RB0_CNTL */
    7090           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_CONTROL,
    7091             :                mqd->cp_hqd_pq_control);
    7092             : 
    7093             :         /* set the wb address whether it's enabled or not */
    7094           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_RPTR_REPORT_ADDR,
    7095             :                 mqd->cp_hqd_pq_rptr_report_addr_lo);
    7096           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_RPTR_REPORT_ADDR_HI,
    7097             :                 mqd->cp_hqd_pq_rptr_report_addr_hi);
    7098             : 
    7099             :         /* only used if CP_PQ_WPTR_POLL_CNTL.CP_PQ_WPTR_POLL_CNTL__EN_MASK=1 */
    7100           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_WPTR_POLL_ADDR,
    7101             :                mqd->cp_hqd_pq_wptr_poll_addr_lo);
    7102           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_WPTR_POLL_ADDR_HI,
    7103             :                mqd->cp_hqd_pq_wptr_poll_addr_hi);
    7104             : 
    7105             :         /* enable the doorbell if requested */
    7106           0 :         if (ring->use_doorbell) {
    7107           0 :                 WREG32_SOC15(GC, 0, mmCP_MEC_DOORBELL_RANGE_LOWER,
    7108             :                         (adev->doorbell_index.kiq * 2) << 2);
    7109           0 :                 WREG32_SOC15(GC, 0, mmCP_MEC_DOORBELL_RANGE_UPPER,
    7110             :                         (adev->doorbell_index.userqueue_end * 2) << 2);
    7111             :         }
    7112             : 
    7113           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_DOORBELL_CONTROL,
    7114             :                mqd->cp_hqd_pq_doorbell_control);
    7115             : 
    7116             :         /* reset read and write pointers, similar to CP_RB0_WPTR/_RPTR */
    7117           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_WPTR_LO,
    7118             :                mqd->cp_hqd_pq_wptr_lo);
    7119           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PQ_WPTR_HI,
    7120             :                mqd->cp_hqd_pq_wptr_hi);
    7121             : 
    7122             :         /* set the vmid for the queue */
    7123           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_VMID, mqd->cp_hqd_vmid);
    7124             : 
    7125           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_PERSISTENT_STATE,
    7126             :                mqd->cp_hqd_persistent_state);
    7127             : 
    7128             :         /* activate the queue */
    7129           0 :         WREG32_SOC15(GC, 0, mmCP_HQD_ACTIVE,
    7130             :                mqd->cp_hqd_active);
    7131             : 
    7132           0 :         if (ring->use_doorbell)
    7133           0 :                 WREG32_FIELD15(GC, 0, CP_PQ_STATUS, DOORBELL_ENABLE, 1);
    7134             : 
    7135           0 :         return 0;
    7136             : }
    7137             : 
    7138           0 : static int gfx_v10_0_kiq_init_queue(struct amdgpu_ring *ring)
    7139             : {
    7140           0 :         struct amdgpu_device *adev = ring->adev;
    7141           0 :         struct v10_compute_mqd *mqd = ring->mqd_ptr;
    7142           0 :         int mqd_idx = AMDGPU_MAX_COMPUTE_RINGS;
    7143             : 
    7144           0 :         gfx_v10_0_kiq_setting(ring);
    7145             : 
    7146           0 :         if (amdgpu_in_reset(adev)) { /* for GPU_RESET case */
    7147             :                 /* reset MQD to a clean status */
    7148           0 :                 if (adev->gfx.mec.mqd_backup[mqd_idx])
    7149           0 :                         memcpy(mqd, adev->gfx.mec.mqd_backup[mqd_idx], sizeof(*mqd));
    7150             : 
    7151             :                 /* reset ring buffer */
    7152           0 :                 ring->wptr = 0;
    7153           0 :                 amdgpu_ring_clear_ring(ring);
    7154             : 
    7155           0 :                 mutex_lock(&adev->srbm_mutex);
    7156           0 :                 nv_grbm_select(adev, ring->me, ring->pipe, ring->queue, 0);
    7157           0 :                 gfx_v10_0_kiq_init_register(ring);
    7158           0 :                 nv_grbm_select(adev, 0, 0, 0, 0);
    7159           0 :                 mutex_unlock(&adev->srbm_mutex);
    7160             :         } else {
    7161           0 :                 memset((void *)mqd, 0, sizeof(*mqd));
    7162           0 :                 mutex_lock(&adev->srbm_mutex);
    7163           0 :                 nv_grbm_select(adev, ring->me, ring->pipe, ring->queue, 0);
    7164           0 :                 amdgpu_ring_init_mqd(ring);
    7165           0 :                 gfx_v10_0_kiq_init_register(ring);
    7166           0 :                 nv_grbm_select(adev, 0, 0, 0, 0);
    7167           0 :                 mutex_unlock(&adev->srbm_mutex);
    7168             : 
    7169           0 :                 if (adev->gfx.mec.mqd_backup[mqd_idx])
    7170           0 :                         memcpy(adev->gfx.mec.mqd_backup[mqd_idx], mqd, sizeof(*mqd));
    7171             :         }
    7172             : 
    7173           0 :         return 0;
    7174             : }
    7175             : 
    7176           0 : static int gfx_v10_0_kcq_init_queue(struct amdgpu_ring *ring)
    7177             : {
    7178           0 :         struct amdgpu_device *adev = ring->adev;
    7179           0 :         struct v10_compute_mqd *mqd = ring->mqd_ptr;
    7180           0 :         int mqd_idx = ring - &adev->gfx.compute_ring[0];
    7181             : 
    7182           0 :         if (!amdgpu_in_reset(adev) && !adev->in_suspend) {
    7183           0 :                 memset((void *)mqd, 0, sizeof(*mqd));
    7184           0 :                 mutex_lock(&adev->srbm_mutex);
    7185           0 :                 nv_grbm_select(adev, ring->me, ring->pipe, ring->queue, 0);
    7186           0 :                 amdgpu_ring_init_mqd(ring);
    7187           0 :                 nv_grbm_select(adev, 0, 0, 0, 0);
    7188           0 :                 mutex_unlock(&adev->srbm_mutex);
    7189             : 
    7190           0 :                 if (adev->gfx.mec.mqd_backup[mqd_idx])
    7191           0 :                         memcpy(adev->gfx.mec.mqd_backup[mqd_idx], mqd, sizeof(*mqd));
    7192           0 :         } else if (amdgpu_in_reset(adev)) { /* for GPU_RESET case */
    7193             :                 /* reset MQD to a clean status */
    7194           0 :                 if (adev->gfx.mec.mqd_backup[mqd_idx])
    7195           0 :                         memcpy(mqd, adev->gfx.mec.mqd_backup[mqd_idx], sizeof(*mqd));
    7196             : 
    7197             :                 /* reset ring buffer */
    7198           0 :                 ring->wptr = 0;
    7199           0 :                 atomic64_set((atomic64_t *)ring->wptr_cpu_addr, 0);
    7200             :                 amdgpu_ring_clear_ring(ring);
    7201             :         } else {
    7202             :                 amdgpu_ring_clear_ring(ring);
    7203             :         }
    7204             : 
    7205           0 :         return 0;
    7206             : }
    7207             : 
    7208           0 : static int gfx_v10_0_kiq_resume(struct amdgpu_device *adev)
    7209             : {
    7210             :         struct amdgpu_ring *ring;
    7211             :         int r;
    7212             : 
    7213           0 :         ring = &adev->gfx.kiq.ring;
    7214             : 
    7215           0 :         r = amdgpu_bo_reserve(ring->mqd_obj, false);
    7216           0 :         if (unlikely(r != 0))
    7217             :                 return r;
    7218             : 
    7219           0 :         r = amdgpu_bo_kmap(ring->mqd_obj, (void **)&ring->mqd_ptr);
    7220           0 :         if (unlikely(r != 0))
    7221             :                 return r;
    7222             : 
    7223           0 :         gfx_v10_0_kiq_init_queue(ring);
    7224           0 :         amdgpu_bo_kunmap(ring->mqd_obj);
    7225           0 :         ring->mqd_ptr = NULL;
    7226           0 :         amdgpu_bo_unreserve(ring->mqd_obj);
    7227           0 :         ring->sched.ready = true;
    7228           0 :         return 0;
    7229             : }
    7230             : 
    7231           0 : static int gfx_v10_0_kcq_resume(struct amdgpu_device *adev)
    7232             : {
    7233           0 :         struct amdgpu_ring *ring = NULL;
    7234           0 :         int r = 0, i;
    7235             : 
    7236           0 :         gfx_v10_0_cp_compute_enable(adev, true);
    7237             : 
    7238           0 :         for (i = 0; i < adev->gfx.num_compute_rings; i++) {
    7239           0 :                 ring = &adev->gfx.compute_ring[i];
    7240             : 
    7241           0 :                 r = amdgpu_bo_reserve(ring->mqd_obj, false);
    7242           0 :                 if (unlikely(r != 0))
    7243             :                         goto done;
    7244           0 :                 r = amdgpu_bo_kmap(ring->mqd_obj, (void **)&ring->mqd_ptr);
    7245           0 :                 if (!r) {
    7246           0 :                         r = gfx_v10_0_kcq_init_queue(ring);
    7247           0 :                         amdgpu_bo_kunmap(ring->mqd_obj);
    7248           0 :                         ring->mqd_ptr = NULL;
    7249             :                 }
    7250           0 :                 amdgpu_bo_unreserve(ring->mqd_obj);
    7251           0 :                 if (r)
    7252             :                         goto done;
    7253             :         }
    7254             : 
    7255           0 :         r = amdgpu_gfx_enable_kcq(adev);
    7256             : done:
    7257           0 :         return r;
    7258             : }
    7259             : 
    7260           0 : static int gfx_v10_0_cp_resume(struct amdgpu_device *adev)
    7261             : {
    7262             :         int r, i;
    7263             :         struct amdgpu_ring *ring;
    7264             : 
    7265           0 :         if (!(adev->flags & AMD_IS_APU))
    7266           0 :                 gfx_v10_0_enable_gui_idle_interrupt(adev, false);
    7267             : 
    7268           0 :         if (adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT) {
    7269             :                 /* legacy firmware loading */
    7270           0 :                 r = gfx_v10_0_cp_gfx_load_microcode(adev);
    7271           0 :                 if (r)
    7272             :                         return r;
    7273             : 
    7274           0 :                 r = gfx_v10_0_cp_compute_load_microcode(adev);
    7275           0 :                 if (r)
    7276             :                         return r;
    7277             :         }
    7278             : 
    7279           0 :         if (adev->enable_mes_kiq && adev->mes.kiq_hw_init)
    7280           0 :                 r = amdgpu_mes_kiq_hw_init(adev);
    7281             :         else
    7282           0 :                 r = gfx_v10_0_kiq_resume(adev);
    7283           0 :         if (r)
    7284             :                 return r;
    7285             : 
    7286           0 :         r = gfx_v10_0_kcq_resume(adev);
    7287           0 :         if (r)
    7288             :                 return r;
    7289             : 
    7290           0 :         if (!amdgpu_async_gfx_ring) {
    7291           0 :                 r = gfx_v10_0_cp_gfx_resume(adev);
    7292           0 :                 if (r)
    7293             :                         return r;
    7294             :         } else {
    7295           0 :                 r = gfx_v10_0_cp_async_gfx_ring_resume(adev);
    7296           0 :                 if (r)
    7297             :                         return r;
    7298             :         }
    7299             : 
    7300           0 :         for (i = 0; i < adev->gfx.num_gfx_rings; i++) {
    7301           0 :                 ring = &adev->gfx.gfx_ring[i];
    7302           0 :                 r = amdgpu_ring_test_helper(ring);
    7303           0 :                 if (r)
    7304             :                         return r;
    7305             :         }
    7306             : 
    7307           0 :         for (i = 0; i < adev->gfx.num_compute_rings; i++) {
    7308           0 :                 ring = &adev->gfx.compute_ring[i];
    7309           0 :                 r = amdgpu_ring_test_helper(ring);
    7310           0 :                 if (r)
    7311             :                         return r;
    7312             :         }
    7313             : 
    7314             :         return 0;
    7315             : }
    7316             : 
    7317             : static void gfx_v10_0_cp_enable(struct amdgpu_device *adev, bool enable)
    7318             : {
    7319           0 :         gfx_v10_0_cp_gfx_enable(adev, enable);
    7320           0 :         gfx_v10_0_cp_compute_enable(adev, enable);
    7321             : }
    7322             : 
    7323           0 : static bool gfx_v10_0_check_grbm_cam_remapping(struct amdgpu_device *adev)
    7324             : {
    7325           0 :         uint32_t data, pattern = 0xDEADBEEF;
    7326             : 
    7327             :         /* check if mmVGT_ESGS_RING_SIZE_UMD
    7328             :          * has been remapped to mmVGT_ESGS_RING_SIZE */
    7329           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    7330             :         case IP_VERSION(10, 3, 0):
    7331             :         case IP_VERSION(10, 3, 2):
    7332             :         case IP_VERSION(10, 3, 4):
    7333             :         case IP_VERSION(10, 3, 5):
    7334           0 :                 data = RREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE_Sienna_Cichlid);
    7335           0 :                 WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE_Sienna_Cichlid, 0);
    7336           0 :                 WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE_UMD, pattern);
    7337             : 
    7338           0 :                 if (RREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE_Sienna_Cichlid) == pattern) {
    7339           0 :                         WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE_UMD , data);
    7340             :                         return true;
    7341             :                 } else {
    7342           0 :                         WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE_Sienna_Cichlid, data);
    7343             :                         return false;
    7344             :                 }
    7345             :                 break;
    7346             :         case IP_VERSION(10, 3, 1):
    7347             :         case IP_VERSION(10, 3, 3):
    7348             :         case IP_VERSION(10, 3, 6):
    7349             :         case IP_VERSION(10, 3, 7):
    7350             :                 return true;
    7351             :         default:
    7352           0 :                 data = RREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE);
    7353           0 :                 WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE, 0);
    7354           0 :                 WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE_UMD, pattern);
    7355             : 
    7356           0 :                 if (RREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE) == pattern) {
    7357           0 :                         WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE_UMD, data);
    7358             :                         return true;
    7359             :                 } else {
    7360           0 :                         WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE, data);
    7361             :                         return false;
    7362             :                 }
    7363             :                 break;
    7364             :         }
    7365             : }
    7366             : 
    7367           0 : static void gfx_v10_0_setup_grbm_cam_remapping(struct amdgpu_device *adev)
    7368             : {
    7369             :         uint32_t data;
    7370             : 
    7371           0 :         if (amdgpu_sriov_vf(adev))
    7372             :                 return;
    7373             : 
    7374             :         /* initialize cam_index to 0
    7375             :          * index will auto-inc after each data writting */
    7376           0 :         WREG32_SOC15(GC, 0, mmGRBM_CAM_INDEX, 0);
    7377             : 
    7378           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    7379             :         case IP_VERSION(10, 3, 0):
    7380             :         case IP_VERSION(10, 3, 2):
    7381             :         case IP_VERSION(10, 3, 1):
    7382             :         case IP_VERSION(10, 3, 4):
    7383             :         case IP_VERSION(10, 3, 5):
    7384             :         case IP_VERSION(10, 3, 6):
    7385             :         case IP_VERSION(10, 3, 3):
    7386             :         case IP_VERSION(10, 3, 7):
    7387             :                 /* mmVGT_TF_RING_SIZE_UMD -> mmVGT_TF_RING_SIZE */
    7388           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_RING_SIZE_UMD) <<
    7389             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7390           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_RING_SIZE_Sienna_Cichlid) <<
    7391             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7392           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7393           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7394             : 
    7395             :                 /* mmVGT_TF_MEMORY_BASE_UMD -> mmVGT_TF_MEMORY_BASE */
    7396           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_MEMORY_BASE_UMD) <<
    7397             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7398           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_MEMORY_BASE_Sienna_Cichlid) <<
    7399             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7400           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7401           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7402             : 
    7403             :                 /* mmVGT_TF_MEMORY_BASE_HI_UMD -> mmVGT_TF_MEMORY_BASE_HI */
    7404           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_MEMORY_BASE_HI_UMD) <<
    7405             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7406           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_MEMORY_BASE_HI_Sienna_Cichlid) <<
    7407             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7408           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7409           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7410             : 
    7411             :                 /* mmVGT_HS_OFFCHIP_PARAM_UMD -> mmVGT_HS_OFFCHIP_PARAM */
    7412           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_HS_OFFCHIP_PARAM_UMD) <<
    7413             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7414           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_HS_OFFCHIP_PARAM_Sienna_Cichlid) <<
    7415             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7416           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7417           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7418             : 
    7419             :                 /* mmVGT_ESGS_RING_SIZE_UMD -> mmVGT_ESGS_RING_SIZE */
    7420           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_ESGS_RING_SIZE_UMD) <<
    7421             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7422           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_ESGS_RING_SIZE_Sienna_Cichlid) <<
    7423             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7424           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7425           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7426             : 
    7427             :                 /* mmVGT_GSVS_RING_SIZE_UMD -> mmVGT_GSVS_RING_SIZE */
    7428           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_GSVS_RING_SIZE_UMD) <<
    7429             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7430           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_GSVS_RING_SIZE_Sienna_Cichlid) <<
    7431             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7432           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7433           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7434             : 
    7435             :                 /* mmSPI_CONFIG_CNTL_REMAP -> mmSPI_CONFIG_CNTL */
    7436           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmSPI_CONFIG_CNTL_REMAP) <<
    7437             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7438           0 :                        (SOC15_REG_OFFSET(GC, 0, mmSPI_CONFIG_CNTL_Sienna_Cichlid) <<
    7439             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7440           0 :                 break;
    7441             :         default:
    7442             :                 /* mmVGT_TF_RING_SIZE_UMD -> mmVGT_TF_RING_SIZE */
    7443           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_RING_SIZE_UMD) <<
    7444             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7445           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_RING_SIZE) <<
    7446             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7447           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7448           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7449             : 
    7450             :                 /* mmVGT_TF_MEMORY_BASE_UMD -> mmVGT_TF_MEMORY_BASE */
    7451           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_MEMORY_BASE_UMD) <<
    7452             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7453           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_MEMORY_BASE) <<
    7454             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7455           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7456           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7457             : 
    7458             :                 /* mmVGT_TF_MEMORY_BASE_HI_UMD -> mmVGT_TF_MEMORY_BASE_HI */
    7459           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_MEMORY_BASE_HI_UMD) <<
    7460             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7461           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_TF_MEMORY_BASE_HI) <<
    7462             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7463           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7464           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7465             : 
    7466             :                 /* mmVGT_HS_OFFCHIP_PARAM_UMD -> mmVGT_HS_OFFCHIP_PARAM */
    7467           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_HS_OFFCHIP_PARAM_UMD) <<
    7468             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7469           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_HS_OFFCHIP_PARAM) <<
    7470             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7471           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7472           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7473             : 
    7474             :                 /* mmVGT_ESGS_RING_SIZE_UMD -> mmVGT_ESGS_RING_SIZE */
    7475           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_ESGS_RING_SIZE_UMD) <<
    7476             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7477           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_ESGS_RING_SIZE) <<
    7478             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7479           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7480           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7481             : 
    7482             :                 /* mmVGT_GSVS_RING_SIZE_UMD -> mmVGT_GSVS_RING_SIZE */
    7483           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmVGT_GSVS_RING_SIZE_UMD) <<
    7484             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7485           0 :                        (SOC15_REG_OFFSET(GC, 0, mmVGT_GSVS_RING_SIZE) <<
    7486             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7487           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7488           0 :                 WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7489             : 
    7490             :                 /* mmSPI_CONFIG_CNTL_REMAP -> mmSPI_CONFIG_CNTL */
    7491           0 :                 data = (SOC15_REG_OFFSET(GC, 0, mmSPI_CONFIG_CNTL_REMAP) <<
    7492             :                         GRBM_CAM_DATA__CAM_ADDR__SHIFT) |
    7493           0 :                        (SOC15_REG_OFFSET(GC, 0, mmSPI_CONFIG_CNTL) <<
    7494             :                         GRBM_CAM_DATA__CAM_REMAPADDR__SHIFT);
    7495           0 :                 break;
    7496             :         }
    7497             : 
    7498           0 :         WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA_UPPER, 0);
    7499           0 :         WREG32_SOC15(GC, 0, mmGRBM_CAM_DATA, data);
    7500             : }
    7501             : 
    7502           0 : static void gfx_v10_0_disable_gpa_mode(struct amdgpu_device *adev)
    7503             : {
    7504             :         uint32_t data;
    7505           0 :         data = RREG32_SOC15(GC, 0, mmCPC_PSP_DEBUG);
    7506           0 :         data |= CPC_PSP_DEBUG__GPA_OVERRIDE_MASK;
    7507           0 :         WREG32_SOC15(GC, 0, mmCPC_PSP_DEBUG, data);
    7508             : 
    7509           0 :         data = RREG32_SOC15(GC, 0, mmCPG_PSP_DEBUG);
    7510           0 :         data |= CPG_PSP_DEBUG__GPA_OVERRIDE_MASK;
    7511           0 :         WREG32_SOC15(GC, 0, mmCPG_PSP_DEBUG, data);
    7512           0 : }
    7513             : 
    7514           0 : static int gfx_v10_0_hw_init(void *handle)
    7515             : {
    7516             :         int r;
    7517           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    7518             : 
    7519           0 :         if (!amdgpu_emu_mode)
    7520           0 :                 gfx_v10_0_init_golden_registers(adev);
    7521             : 
    7522           0 :         if (adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT) {
    7523             :                 /**
    7524             :                  * For gfx 10, rlc firmware loading relies on smu firmware is
    7525             :                  * loaded firstly, so in direct type, it has to load smc ucode
    7526             :                  * here before rlc.
    7527             :                  */
    7528           0 :                 if (!(adev->flags & AMD_IS_APU)) {
    7529           0 :                         r = amdgpu_pm_load_smu_firmware(adev, NULL);
    7530           0 :                         if (r)
    7531             :                                 return r;
    7532             :                 }
    7533           0 :                 gfx_v10_0_disable_gpa_mode(adev);
    7534             :         }
    7535             : 
    7536             :         /* if GRBM CAM not remapped, set up the remapping */
    7537           0 :         if (!gfx_v10_0_check_grbm_cam_remapping(adev))
    7538           0 :                 gfx_v10_0_setup_grbm_cam_remapping(adev);
    7539             : 
    7540           0 :         gfx_v10_0_constants_init(adev);
    7541             : 
    7542           0 :         r = gfx_v10_0_rlc_resume(adev);
    7543           0 :         if (r)
    7544             :                 return r;
    7545             : 
    7546             :         /*
    7547             :          * init golden registers and rlc resume may override some registers,
    7548             :          * reconfig them here
    7549             :          */
    7550           0 :         if (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 1, 10) ||
    7551           0 :             adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 1, 1) ||
    7552             :             adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 1, 2))
    7553           0 :                 gfx_v10_0_tcp_harvest(adev);
    7554             : 
    7555           0 :         r = gfx_v10_0_cp_resume(adev);
    7556           0 :         if (r)
    7557             :                 return r;
    7558             : 
    7559           0 :         if (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 0))
    7560           0 :                 gfx_v10_3_program_pbb_mode(adev);
    7561             : 
    7562           0 :         if (adev->ip_versions[GC_HWIP][0] >= IP_VERSION(10, 3, 0))
    7563           0 :                 gfx_v10_3_set_power_brake_sequence(adev);
    7564             : 
    7565             :         return r;
    7566             : }
    7567             : 
    7568             : #ifndef BRING_UP_DEBUG
    7569           0 : static int gfx_v10_0_kiq_disable_kgq(struct amdgpu_device *adev)
    7570             : {
    7571           0 :         struct amdgpu_kiq *kiq = &adev->gfx.kiq;
    7572           0 :         struct amdgpu_ring *kiq_ring = &kiq->ring;
    7573             :         int i;
    7574             : 
    7575           0 :         if (!kiq->pmf || !kiq->pmf->kiq_unmap_queues)
    7576             :                 return -EINVAL;
    7577             : 
    7578           0 :         if (amdgpu_ring_alloc(kiq_ring, kiq->pmf->unmap_queues_size *
    7579           0 :                                         adev->gfx.num_gfx_rings))
    7580             :                 return -ENOMEM;
    7581             : 
    7582           0 :         for (i = 0; i < adev->gfx.num_gfx_rings; i++)
    7583           0 :                 kiq->pmf->kiq_unmap_queues(kiq_ring, &adev->gfx.gfx_ring[i],
    7584             :                                            PREEMPT_QUEUES, 0, 0);
    7585           0 :         if (!adev->job_hang)
    7586           0 :                 return amdgpu_ring_test_helper(kiq_ring);
    7587             :         else
    7588             :                 return 0;
    7589             : }
    7590             : #endif
    7591             : 
    7592           0 : static int gfx_v10_0_hw_fini(void *handle)
    7593             : {
    7594           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    7595             :         int r;
    7596             :         uint32_t tmp;
    7597             : 
    7598           0 :         amdgpu_irq_put(adev, &adev->gfx.priv_reg_irq, 0);
    7599           0 :         amdgpu_irq_put(adev, &adev->gfx.priv_inst_irq, 0);
    7600             : 
    7601           0 :         if (!adev->no_hw_access) {
    7602             : #ifndef BRING_UP_DEBUG
    7603           0 :                 if (amdgpu_async_gfx_ring) {
    7604           0 :                         r = gfx_v10_0_kiq_disable_kgq(adev);
    7605           0 :                         if (r)
    7606           0 :                                 DRM_ERROR("KGQ disable failed\n");
    7607             :                 }
    7608             : #endif
    7609           0 :                 if (amdgpu_gfx_disable_kcq(adev))
    7610           0 :                         DRM_ERROR("KCQ disable failed\n");
    7611             :         }
    7612             : 
    7613           0 :         if (amdgpu_sriov_vf(adev)) {
    7614           0 :                 gfx_v10_0_cp_gfx_enable(adev, false);
    7615             :                 /* Program KIQ position of RLC_CP_SCHEDULERS during destroy */
    7616           0 :                 if (adev->ip_versions[GC_HWIP][0] >= IP_VERSION(10, 3, 0)) {
    7617           0 :                         tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid);
    7618           0 :                         tmp &= 0xffffff00;
    7619           0 :                         WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid, tmp);
    7620             :                 } else {
    7621           0 :                         tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS);
    7622           0 :                         tmp &= 0xffffff00;
    7623           0 :                         WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
    7624             :                 }
    7625             : 
    7626             :                 return 0;
    7627             :         }
    7628           0 :         gfx_v10_0_cp_enable(adev, false);
    7629           0 :         gfx_v10_0_enable_gui_idle_interrupt(adev, false);
    7630             : 
    7631           0 :         return 0;
    7632             : }
    7633             : 
    7634           0 : static int gfx_v10_0_suspend(void *handle)
    7635             : {
    7636           0 :         return gfx_v10_0_hw_fini(handle);
    7637             : }
    7638             : 
    7639           0 : static int gfx_v10_0_resume(void *handle)
    7640             : {
    7641           0 :         return gfx_v10_0_hw_init(handle);
    7642             : }
    7643             : 
    7644           0 : static bool gfx_v10_0_is_idle(void *handle)
    7645             : {
    7646           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    7647             : 
    7648           0 :         if (REG_GET_FIELD(RREG32_SOC15(GC, 0, mmGRBM_STATUS),
    7649             :                                 GRBM_STATUS, GUI_ACTIVE))
    7650             :                 return false;
    7651             :         else
    7652           0 :                 return true;
    7653             : }
    7654             : 
    7655           0 : static int gfx_v10_0_wait_for_idle(void *handle)
    7656             : {
    7657             :         unsigned i;
    7658             :         u32 tmp;
    7659           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    7660             : 
    7661           0 :         for (i = 0; i < adev->usec_timeout; i++) {
    7662             :                 /* read MC_STATUS */
    7663           0 :                 tmp = RREG32_SOC15(GC, 0, mmGRBM_STATUS) &
    7664             :                         GRBM_STATUS__GUI_ACTIVE_MASK;
    7665             : 
    7666           0 :                 if (!REG_GET_FIELD(tmp, GRBM_STATUS, GUI_ACTIVE))
    7667             :                         return 0;
    7668           0 :                 udelay(1);
    7669             :         }
    7670             :         return -ETIMEDOUT;
    7671             : }
    7672             : 
    7673           0 : static int gfx_v10_0_soft_reset(void *handle)
    7674             : {
    7675           0 :         u32 grbm_soft_reset = 0;
    7676             :         u32 tmp;
    7677           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    7678             : 
    7679             :         /* GRBM_STATUS */
    7680           0 :         tmp = RREG32_SOC15(GC, 0, mmGRBM_STATUS);
    7681           0 :         if (tmp & (GRBM_STATUS__PA_BUSY_MASK | GRBM_STATUS__SC_BUSY_MASK |
    7682             :                    GRBM_STATUS__BCI_BUSY_MASK | GRBM_STATUS__SX_BUSY_MASK |
    7683             :                    GRBM_STATUS__TA_BUSY_MASK | GRBM_STATUS__DB_BUSY_MASK |
    7684             :                    GRBM_STATUS__CB_BUSY_MASK | GRBM_STATUS__GDS_BUSY_MASK |
    7685             :                    GRBM_STATUS__SPI_BUSY_MASK | GRBM_STATUS__GE_BUSY_NO_DMA_MASK)) {
    7686           0 :                 grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset,
    7687             :                                                 GRBM_SOFT_RESET, SOFT_RESET_CP,
    7688             :                                                 1);
    7689           0 :                 grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset,
    7690             :                                                 GRBM_SOFT_RESET, SOFT_RESET_GFX,
    7691             :                                                 1);
    7692             :         }
    7693             : 
    7694           0 :         if (tmp & (GRBM_STATUS__CP_BUSY_MASK | GRBM_STATUS__CP_COHERENCY_BUSY_MASK)) {
    7695           0 :                 grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset,
    7696             :                                                 GRBM_SOFT_RESET, SOFT_RESET_CP,
    7697             :                                                 1);
    7698             :         }
    7699             : 
    7700             :         /* GRBM_STATUS2 */
    7701           0 :         tmp = RREG32_SOC15(GC, 0, mmGRBM_STATUS2);
    7702           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    7703             :         case IP_VERSION(10, 3, 0):
    7704             :         case IP_VERSION(10, 3, 2):
    7705             :         case IP_VERSION(10, 3, 1):
    7706             :         case IP_VERSION(10, 3, 4):
    7707             :         case IP_VERSION(10, 3, 5):
    7708             :         case IP_VERSION(10, 3, 6):
    7709             :         case IP_VERSION(10, 3, 3):
    7710           0 :                 if (REG_GET_FIELD(tmp, GRBM_STATUS2, RLC_BUSY_Sienna_Cichlid))
    7711           0 :                         grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset,
    7712             :                                                         GRBM_SOFT_RESET,
    7713             :                                                         SOFT_RESET_RLC,
    7714             :                                                         1);
    7715             :                 break;
    7716             :         default:
    7717           0 :                 if (REG_GET_FIELD(tmp, GRBM_STATUS2, RLC_BUSY))
    7718           0 :                         grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset,
    7719             :                                                         GRBM_SOFT_RESET,
    7720             :                                                         SOFT_RESET_RLC,
    7721             :                                                         1);
    7722             :                 break;
    7723             :         }
    7724             : 
    7725           0 :         if (grbm_soft_reset) {
    7726             :                 /* stop the rlc */
    7727           0 :                 gfx_v10_0_rlc_stop(adev);
    7728             : 
    7729             :                 /* Disable GFX parsing/prefetching */
    7730           0 :                 gfx_v10_0_cp_gfx_enable(adev, false);
    7731             : 
    7732             :                 /* Disable MEC parsing/prefetching */
    7733           0 :                 gfx_v10_0_cp_compute_enable(adev, false);
    7734             : 
    7735             :                 if (grbm_soft_reset) {
    7736           0 :                         tmp = RREG32_SOC15(GC, 0, mmGRBM_SOFT_RESET);
    7737           0 :                         tmp |= grbm_soft_reset;
    7738           0 :                         dev_info(adev->dev, "GRBM_SOFT_RESET=0x%08X\n", tmp);
    7739           0 :                         WREG32_SOC15(GC, 0, mmGRBM_SOFT_RESET, tmp);
    7740           0 :                         tmp = RREG32_SOC15(GC, 0, mmGRBM_SOFT_RESET);
    7741             : 
    7742           0 :                         udelay(50);
    7743             : 
    7744           0 :                         tmp &= ~grbm_soft_reset;
    7745           0 :                         WREG32_SOC15(GC, 0, mmGRBM_SOFT_RESET, tmp);
    7746           0 :                         tmp = RREG32_SOC15(GC, 0, mmGRBM_SOFT_RESET);
    7747             :                 }
    7748             : 
    7749             :                 /* Wait a little for things to settle down */
    7750             :                 udelay(50);
    7751             :         }
    7752           0 :         return 0;
    7753             : }
    7754             : 
    7755           0 : static uint64_t gfx_v10_0_get_gpu_clock_counter(struct amdgpu_device *adev)
    7756             : {
    7757             :         uint64_t clock, clock_lo, clock_hi, hi_check;
    7758             : 
    7759           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    7760             :         case IP_VERSION(10, 3, 1):
    7761             :         case IP_VERSION(10, 3, 3):
    7762             :         case IP_VERSION(10, 3, 7):
    7763           0 :                 preempt_disable();
    7764           0 :                 clock_hi = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_UPPER_Vangogh);
    7765           0 :                 clock_lo = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_LOWER_Vangogh);
    7766           0 :                 hi_check = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_UPPER_Vangogh);
    7767             :                 /* The SMUIO TSC clock frequency is 100MHz, which sets 32-bit carry over
    7768             :                  * roughly every 42 seconds.
    7769             :                  */
    7770           0 :                 if (hi_check != clock_hi) {
    7771           0 :                         clock_lo = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_LOWER_Vangogh);
    7772             :                         clock_hi = hi_check;
    7773             :                 }
    7774           0 :                 preempt_enable();
    7775           0 :                 clock = clock_lo | (clock_hi << 32ULL);
    7776           0 :                 break;
    7777             :         case IP_VERSION(10, 3, 6):
    7778           0 :                 preempt_disable();
    7779           0 :                 clock_hi = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_UPPER_GC_10_3_6);
    7780           0 :                 clock_lo = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_LOWER_GC_10_3_6);
    7781           0 :                 hi_check = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_UPPER_GC_10_3_6);
    7782             :                 /* The SMUIO TSC clock frequency is 100MHz, which sets 32-bit carry over
    7783             :                  * roughly every 42 seconds.
    7784             :                  */
    7785           0 :                 if (hi_check != clock_hi) {
    7786           0 :                         clock_lo = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_LOWER_GC_10_3_6);
    7787             :                         clock_hi = hi_check;
    7788             :                 }
    7789           0 :                 preempt_enable();
    7790           0 :                 clock = clock_lo | (clock_hi << 32ULL);
    7791           0 :                 break;
    7792             :         default:
    7793           0 :                 preempt_disable();
    7794           0 :                 clock_hi = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_UPPER);
    7795           0 :                 clock_lo = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_LOWER);
    7796           0 :                 hi_check = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_UPPER);
    7797             :                 /* The SMUIO TSC clock frequency is 100MHz, which sets 32-bit carry over
    7798             :                  * roughly every 42 seconds.
    7799             :                  */
    7800           0 :                 if (hi_check != clock_hi) {
    7801           0 :                         clock_lo = RREG32_SOC15_NO_KIQ(SMUIO, 0, mmGOLDEN_TSC_COUNT_LOWER);
    7802             :                         clock_hi = hi_check;
    7803             :                 }
    7804           0 :                 preempt_enable();
    7805           0 :                 clock = clock_lo | (clock_hi << 32ULL);
    7806           0 :                 break;
    7807             :         }
    7808           0 :         return clock;
    7809             : }
    7810             : 
    7811           0 : static void gfx_v10_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
    7812             :                                            uint32_t vmid,
    7813             :                                            uint32_t gds_base, uint32_t gds_size,
    7814             :                                            uint32_t gws_base, uint32_t gws_size,
    7815             :                                            uint32_t oa_base, uint32_t oa_size)
    7816             : {
    7817           0 :         struct amdgpu_device *adev = ring->adev;
    7818             : 
    7819             :         /* GDS Base */
    7820           0 :         gfx_v10_0_write_data_to_reg(ring, 0, false,
    7821           0 :                                     SOC15_REG_OFFSET(GC, 0, mmGDS_VMID0_BASE) + 2 * vmid,
    7822             :                                     gds_base);
    7823             : 
    7824             :         /* GDS Size */
    7825           0 :         gfx_v10_0_write_data_to_reg(ring, 0, false,
    7826           0 :                                     SOC15_REG_OFFSET(GC, 0, mmGDS_VMID0_SIZE) + 2 * vmid,
    7827             :                                     gds_size);
    7828             : 
    7829             :         /* GWS */
    7830           0 :         gfx_v10_0_write_data_to_reg(ring, 0, false,
    7831           0 :                                     SOC15_REG_OFFSET(GC, 0, mmGDS_GWS_VMID0) + vmid,
    7832           0 :                                     gws_size << GDS_GWS_VMID0__SIZE__SHIFT | gws_base);
    7833             : 
    7834             :         /* OA */
    7835           0 :         gfx_v10_0_write_data_to_reg(ring, 0, false,
    7836           0 :                                     SOC15_REG_OFFSET(GC, 0, mmGDS_OA_VMID0) + vmid,
    7837           0 :                                     (1 << (oa_size + oa_base)) - (1 << oa_base));
    7838           0 : }
    7839             : 
    7840           0 : static int gfx_v10_0_early_init(void *handle)
    7841             : {
    7842           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    7843             : 
    7844           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    7845             :         case IP_VERSION(10, 1, 10):
    7846             :         case IP_VERSION(10, 1, 1):
    7847             :         case IP_VERSION(10, 1, 2):
    7848             :         case IP_VERSION(10, 1, 3):
    7849             :         case IP_VERSION(10, 1, 4):
    7850           0 :                 adev->gfx.num_gfx_rings = GFX10_NUM_GFX_RINGS_NV1X;
    7851           0 :                 break;
    7852             :         case IP_VERSION(10, 3, 0):
    7853             :         case IP_VERSION(10, 3, 2):
    7854             :         case IP_VERSION(10, 3, 1):
    7855             :         case IP_VERSION(10, 3, 4):
    7856             :         case IP_VERSION(10, 3, 5):
    7857             :         case IP_VERSION(10, 3, 6):
    7858             :         case IP_VERSION(10, 3, 3):
    7859             :         case IP_VERSION(10, 3, 7):
    7860           0 :                 adev->gfx.num_gfx_rings = GFX10_NUM_GFX_RINGS_Sienna_Cichlid;
    7861           0 :                 break;
    7862             :         default:
    7863             :                 break;
    7864             :         }
    7865             : 
    7866           0 :         adev->gfx.num_compute_rings = min(amdgpu_gfx_get_num_kcq(adev),
    7867             :                                           AMDGPU_MAX_COMPUTE_RINGS);
    7868             : 
    7869           0 :         gfx_v10_0_set_kiq_pm4_funcs(adev);
    7870           0 :         gfx_v10_0_set_ring_funcs(adev);
    7871           0 :         gfx_v10_0_set_irq_funcs(adev);
    7872           0 :         gfx_v10_0_set_gds_init(adev);
    7873           0 :         gfx_v10_0_set_rlc_funcs(adev);
    7874           0 :         gfx_v10_0_set_mqd_funcs(adev);
    7875             : 
    7876             :         /* init rlcg reg access ctrl */
    7877           0 :         gfx_v10_0_init_rlcg_reg_access_ctrl(adev);
    7878             : 
    7879           0 :         return 0;
    7880             : }
    7881             : 
    7882           0 : static int gfx_v10_0_late_init(void *handle)
    7883             : {
    7884           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    7885             :         int r;
    7886             : 
    7887           0 :         r = amdgpu_irq_get(adev, &adev->gfx.priv_reg_irq, 0);
    7888           0 :         if (r)
    7889             :                 return r;
    7890             : 
    7891           0 :         r = amdgpu_irq_get(adev, &adev->gfx.priv_inst_irq, 0);
    7892           0 :         if (r)
    7893             :                 return r;
    7894             : 
    7895           0 :         return 0;
    7896             : }
    7897             : 
    7898           0 : static bool gfx_v10_0_is_rlc_enabled(struct amdgpu_device *adev)
    7899             : {
    7900             :         uint32_t rlc_cntl;
    7901             : 
    7902             :         /* if RLC is not enabled, do nothing */
    7903           0 :         rlc_cntl = RREG32_SOC15(GC, 0, mmRLC_CNTL);
    7904           0 :         return (REG_GET_FIELD(rlc_cntl, RLC_CNTL, RLC_ENABLE_F32)) ? true : false;
    7905             : }
    7906             : 
    7907           0 : static void gfx_v10_0_set_safe_mode(struct amdgpu_device *adev)
    7908             : {
    7909             :         uint32_t data;
    7910             :         unsigned i;
    7911             : 
    7912           0 :         data = RLC_SAFE_MODE__CMD_MASK;
    7913           0 :         data |= (1 << RLC_SAFE_MODE__MESSAGE__SHIFT);
    7914             : 
    7915           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    7916             :         case IP_VERSION(10, 3, 0):
    7917             :         case IP_VERSION(10, 3, 2):
    7918             :         case IP_VERSION(10, 3, 1):
    7919             :         case IP_VERSION(10, 3, 4):
    7920             :         case IP_VERSION(10, 3, 5):
    7921             :         case IP_VERSION(10, 3, 6):
    7922             :         case IP_VERSION(10, 3, 3):
    7923             :         case IP_VERSION(10, 3, 7):
    7924           0 :                 WREG32_SOC15(GC, 0, mmRLC_SAFE_MODE_Sienna_Cichlid, data);
    7925             : 
    7926             :                 /* wait for RLC_SAFE_MODE */
    7927           0 :                 for (i = 0; i < adev->usec_timeout; i++) {
    7928           0 :                         if (!REG_GET_FIELD(RREG32_SOC15(GC, 0, mmRLC_SAFE_MODE_Sienna_Cichlid),
    7929             :                                            RLC_SAFE_MODE, CMD))
    7930             :                                 break;
    7931           0 :                         udelay(1);
    7932             :                 }
    7933             :                 break;
    7934             :         default:
    7935           0 :                 WREG32_SOC15(GC, 0, mmRLC_SAFE_MODE, data);
    7936             : 
    7937             :                 /* wait for RLC_SAFE_MODE */
    7938           0 :                 for (i = 0; i < adev->usec_timeout; i++) {
    7939           0 :                         if (!REG_GET_FIELD(RREG32_SOC15(GC, 0, mmRLC_SAFE_MODE),
    7940             :                                            RLC_SAFE_MODE, CMD))
    7941             :                                 break;
    7942           0 :                         udelay(1);
    7943             :                 }
    7944             :                 break;
    7945             :         }
    7946           0 : }
    7947             : 
    7948           0 : static void gfx_v10_0_unset_safe_mode(struct amdgpu_device *adev)
    7949             : {
    7950             :         uint32_t data;
    7951             : 
    7952           0 :         data = RLC_SAFE_MODE__CMD_MASK;
    7953           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    7954             :         case IP_VERSION(10, 3, 0):
    7955             :         case IP_VERSION(10, 3, 2):
    7956             :         case IP_VERSION(10, 3, 1):
    7957             :         case IP_VERSION(10, 3, 4):
    7958             :         case IP_VERSION(10, 3, 5):
    7959             :         case IP_VERSION(10, 3, 6):
    7960             :         case IP_VERSION(10, 3, 3):
    7961             :         case IP_VERSION(10, 3, 7):
    7962           0 :                 WREG32_SOC15(GC, 0, mmRLC_SAFE_MODE_Sienna_Cichlid, data);
    7963             :                 break;
    7964             :         default:
    7965           0 :                 WREG32_SOC15(GC, 0, mmRLC_SAFE_MODE, data);
    7966             :                 break;
    7967             :         }
    7968           0 : }
    7969             : 
    7970           0 : static void gfx_v10_0_update_medium_grain_clock_gating(struct amdgpu_device *adev,
    7971             :                                                       bool enable)
    7972             : {
    7973             :         uint32_t data, def;
    7974             : 
    7975           0 :         if (!(adev->cg_flags & (AMD_CG_SUPPORT_GFX_MGCG | AMD_CG_SUPPORT_GFX_MGLS)))
    7976             :                 return;
    7977             : 
    7978             :         /* It is disabled by HW by default */
    7979           0 :         if (enable && (adev->cg_flags & AMD_CG_SUPPORT_GFX_MGCG)) {
    7980             :                 /* 0 - Disable some blocks' MGCG */
    7981           0 :                 WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, 0xe0000000);
    7982           0 :                 WREG32_SOC15(GC, 0, mmCGTT_WD_CLK_CTRL, 0xff000000);
    7983           0 :                 WREG32_SOC15(GC, 0, mmCGTT_VGT_CLK_CTRL, 0xff000000);
    7984           0 :                 WREG32_SOC15(GC, 0, mmCGTT_IA_CLK_CTRL, 0xff000000);
    7985             : 
    7986             :                 /* 1 - RLC_CGTT_MGCG_OVERRIDE */
    7987           0 :                 def = data = RREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE);
    7988           0 :                 data &= ~(RLC_CGTT_MGCG_OVERRIDE__GRBM_CGTT_SCLK_OVERRIDE_MASK |
    7989             :                           RLC_CGTT_MGCG_OVERRIDE__RLC_CGTT_SCLK_OVERRIDE_MASK |
    7990             :                           RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGCG_OVERRIDE_MASK |
    7991             :                           RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGLS_OVERRIDE_MASK |
    7992             :                           RLC_CGTT_MGCG_OVERRIDE__GFXIP_FGCG_OVERRIDE_MASK |
    7993             :                           RLC_CGTT_MGCG_OVERRIDE__ENABLE_CGTS_LEGACY_MASK);
    7994             : 
    7995           0 :                 if (def != data)
    7996           0 :                         WREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE, data);
    7997             : 
    7998             :                 /* MGLS is a global flag to control all MGLS in GFX */
    7999           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_MGLS) {
    8000             :                         /* 2 - RLC memory Light sleep */
    8001           0 :                         if (adev->cg_flags & AMD_CG_SUPPORT_GFX_RLC_LS) {
    8002           0 :                                 def = data = RREG32_SOC15(GC, 0, mmRLC_MEM_SLP_CNTL);
    8003           0 :                                 data |= RLC_MEM_SLP_CNTL__RLC_MEM_LS_EN_MASK;
    8004           0 :                                 if (def != data)
    8005           0 :                                         WREG32_SOC15(GC, 0, mmRLC_MEM_SLP_CNTL, data);
    8006             :                         }
    8007             :                         /* 3 - CP memory Light sleep */
    8008           0 :                         if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CP_LS) {
    8009           0 :                                 def = data = RREG32_SOC15(GC, 0, mmCP_MEM_SLP_CNTL);
    8010           0 :                                 data |= CP_MEM_SLP_CNTL__CP_MEM_LS_EN_MASK;
    8011           0 :                                 if (def != data)
    8012           0 :                                         WREG32_SOC15(GC, 0, mmCP_MEM_SLP_CNTL, data);
    8013             :                         }
    8014             :                 }
    8015           0 :         } else if (!enable || !(adev->cg_flags & AMD_CG_SUPPORT_GFX_MGCG)) {
    8016             :                 /* 1 - MGCG_OVERRIDE */
    8017           0 :                 def = data = RREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE);
    8018           0 :                 data |= (RLC_CGTT_MGCG_OVERRIDE__RLC_CGTT_SCLK_OVERRIDE_MASK |
    8019             :                          RLC_CGTT_MGCG_OVERRIDE__GRBM_CGTT_SCLK_OVERRIDE_MASK |
    8020             :                          RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGCG_OVERRIDE_MASK |
    8021             :                          RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGLS_OVERRIDE_MASK |
    8022             :                          RLC_CGTT_MGCG_OVERRIDE__GFXIP_FGCG_OVERRIDE_MASK |
    8023             :                          RLC_CGTT_MGCG_OVERRIDE__ENABLE_CGTS_LEGACY_MASK);
    8024           0 :                 if (def != data)
    8025           0 :                         WREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE, data);
    8026             : 
    8027             :                 /* 2 - disable MGLS in CP */
    8028           0 :                 data = RREG32_SOC15(GC, 0, mmCP_MEM_SLP_CNTL);
    8029           0 :                 if (data & CP_MEM_SLP_CNTL__CP_MEM_LS_EN_MASK) {
    8030           0 :                         data &= ~CP_MEM_SLP_CNTL__CP_MEM_LS_EN_MASK;
    8031           0 :                         WREG32_SOC15(GC, 0, mmCP_MEM_SLP_CNTL, data);
    8032             :                 }
    8033             : 
    8034             :                 /* 3 - disable MGLS in RLC */
    8035           0 :                 data = RREG32_SOC15(GC, 0, mmRLC_MEM_SLP_CNTL);
    8036           0 :                 if (data & RLC_MEM_SLP_CNTL__RLC_MEM_LS_EN_MASK) {
    8037           0 :                         data &= ~RLC_MEM_SLP_CNTL__RLC_MEM_LS_EN_MASK;
    8038           0 :                         WREG32_SOC15(GC, 0, mmRLC_MEM_SLP_CNTL, data);
    8039             :                 }
    8040             : 
    8041             :         }
    8042             : }
    8043             : 
    8044           0 : static void gfx_v10_0_update_3d_clock_gating(struct amdgpu_device *adev,
    8045             :                                            bool enable)
    8046             : {
    8047             :         uint32_t data, def;
    8048             : 
    8049           0 :         if (!(adev->cg_flags & (AMD_CG_SUPPORT_GFX_3D_CGCG | AMD_CG_SUPPORT_GFX_3D_CGLS)))
    8050             :                 return;
    8051             : 
    8052             :         /* Enable 3D CGCG/CGLS */
    8053           0 :         if (enable) {
    8054             :                 /* write cmd to clear cgcg/cgls ov */
    8055           0 :                 def = data = RREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE);
    8056             : 
    8057             :                 /* unset CGCG override */
    8058           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_3D_CGCG)
    8059           0 :                         data &= ~RLC_CGTT_MGCG_OVERRIDE__GFXIP_GFX3D_CG_OVERRIDE_MASK;
    8060             : 
    8061             :                 /* update CGCG and CGLS override bits */
    8062           0 :                 if (def != data)
    8063           0 :                         WREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE, data);
    8064             : 
    8065             :                 /* enable 3Dcgcg FSM(0x0000363f) */
    8066           0 :                 def = RREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL_3D);
    8067           0 :                 data = 0;
    8068             : 
    8069           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_3D_CGCG)
    8070           0 :                         data = (0x36 << RLC_CGCG_CGLS_CTRL_3D__CGCG_GFX_IDLE_THRESHOLD__SHIFT) |
    8071             :                                 RLC_CGCG_CGLS_CTRL_3D__CGCG_EN_MASK;
    8072             : 
    8073           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_3D_CGLS)
    8074           0 :                         data |= (0x000F << RLC_CGCG_CGLS_CTRL_3D__CGLS_REP_COMPANSAT_DELAY__SHIFT) |
    8075             :                                 RLC_CGCG_CGLS_CTRL_3D__CGLS_EN_MASK;
    8076             : 
    8077           0 :                 if (def != data)
    8078           0 :                         WREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL_3D, data);
    8079             : 
    8080             :                 /* set IDLE_POLL_COUNT(0x00900100) */
    8081           0 :                 def = RREG32_SOC15(GC, 0, mmCP_RB_WPTR_POLL_CNTL);
    8082           0 :                 data = (0x0100 << CP_RB_WPTR_POLL_CNTL__POLL_FREQUENCY__SHIFT) |
    8083             :                         (0x0090 << CP_RB_WPTR_POLL_CNTL__IDLE_POLL_COUNT__SHIFT);
    8084           0 :                 if (def != data)
    8085           0 :                         WREG32_SOC15(GC, 0, mmCP_RB_WPTR_POLL_CNTL, data);
    8086             :         } else {
    8087             :                 /* Disable CGCG/CGLS */
    8088           0 :                 def = data = RREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL_3D);
    8089             : 
    8090             :                 /* disable cgcg, cgls should be disabled */
    8091           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_3D_CGCG)
    8092           0 :                         data &= ~RLC_CGCG_CGLS_CTRL_3D__CGCG_EN_MASK;
    8093             : 
    8094           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_3D_CGLS)
    8095           0 :                         data &= ~RLC_CGCG_CGLS_CTRL_3D__CGLS_EN_MASK;
    8096             : 
    8097             :                 /* disable cgcg and cgls in FSM */
    8098           0 :                 if (def != data)
    8099           0 :                         WREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL_3D, data);
    8100             :         }
    8101             : }
    8102             : 
    8103           0 : static void gfx_v10_0_update_coarse_grain_clock_gating(struct amdgpu_device *adev,
    8104             :                                                       bool enable)
    8105             : {
    8106             :         uint32_t def, data;
    8107             : 
    8108           0 :         if (!(adev->cg_flags & (AMD_CG_SUPPORT_GFX_CGCG | AMD_CG_SUPPORT_GFX_CGLS)))
    8109             :                 return;
    8110             : 
    8111           0 :         if (enable) {
    8112           0 :                 def = data = RREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE);
    8113             : 
    8114             :                 /* unset CGCG override */
    8115           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CGCG)
    8116           0 :                         data &= ~RLC_CGTT_MGCG_OVERRIDE__GFXIP_CGCG_OVERRIDE_MASK;
    8117             : 
    8118           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CGLS)
    8119           0 :                         data &= ~RLC_CGTT_MGCG_OVERRIDE__GFXIP_CGLS_OVERRIDE_MASK;
    8120             : 
    8121             :                 /* update CGCG and CGLS override bits */
    8122           0 :                 if (def != data)
    8123           0 :                         WREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE, data);
    8124             : 
    8125             :                 /* enable cgcg FSM(0x0000363F) */
    8126           0 :                 def = RREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL);
    8127           0 :                 data = 0;
    8128             : 
    8129           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CGCG)
    8130           0 :                         data = (0x36 << RLC_CGCG_CGLS_CTRL__CGCG_GFX_IDLE_THRESHOLD__SHIFT) |
    8131             :                                 RLC_CGCG_CGLS_CTRL__CGCG_EN_MASK;
    8132             : 
    8133           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CGLS)
    8134           0 :                         data |= (0x000F << RLC_CGCG_CGLS_CTRL__CGLS_REP_COMPANSAT_DELAY__SHIFT) |
    8135             :                                 RLC_CGCG_CGLS_CTRL__CGLS_EN_MASK;
    8136             : 
    8137           0 :                 if (def != data)
    8138           0 :                         WREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL, data);
    8139             : 
    8140             :                 /* set IDLE_POLL_COUNT(0x00900100) */
    8141           0 :                 def = RREG32_SOC15(GC, 0, mmCP_RB_WPTR_POLL_CNTL);
    8142           0 :                 data = (0x0100 << CP_RB_WPTR_POLL_CNTL__POLL_FREQUENCY__SHIFT) |
    8143             :                         (0x0090 << CP_RB_WPTR_POLL_CNTL__IDLE_POLL_COUNT__SHIFT);
    8144           0 :                 if (def != data)
    8145           0 :                         WREG32_SOC15(GC, 0, mmCP_RB_WPTR_POLL_CNTL, data);
    8146             :         } else {
    8147           0 :                 def = data = RREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL);
    8148             : 
    8149             :                 /* reset CGCG/CGLS bits */
    8150           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CGCG)
    8151           0 :                         data &= ~RLC_CGCG_CGLS_CTRL__CGCG_EN_MASK;
    8152             : 
    8153           0 :                 if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CGLS)
    8154           0 :                         data &= ~RLC_CGCG_CGLS_CTRL__CGLS_EN_MASK;
    8155             : 
    8156             :                 /* disable cgcg and cgls in FSM */
    8157           0 :                 if (def != data)
    8158           0 :                         WREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL, data);
    8159             :         }
    8160             : }
    8161             : 
    8162           0 : static void gfx_v10_0_update_fine_grain_clock_gating(struct amdgpu_device *adev,
    8163             :                                                       bool enable)
    8164             : {
    8165             :         uint32_t def, data;
    8166             : 
    8167           0 :         if (!(adev->cg_flags & AMD_CG_SUPPORT_GFX_FGCG))
    8168             :                 return;
    8169             : 
    8170           0 :         if (enable) {
    8171           0 :                 def = data = RREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE);
    8172             :                 /* unset FGCG override */
    8173           0 :                 data &= ~RLC_CGTT_MGCG_OVERRIDE__GFXIP_FGCG_OVERRIDE_MASK;
    8174             :                 /* update FGCG override bits */
    8175           0 :                 if (def != data)
    8176           0 :                         WREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE, data);
    8177             : 
    8178           0 :                 def = data = RREG32_SOC15(GC, 0, mmRLC_CLK_CNTL);
    8179             :                 /* unset RLC SRAM CLK GATER override */
    8180           0 :                 data &= ~RLC_CLK_CNTL__RLC_SRAM_CLK_GATER_OVERRIDE_MASK;
    8181             :                 /* update RLC SRAM CLK GATER override bits */
    8182           0 :                 if (def != data)
    8183           0 :                         WREG32_SOC15(GC, 0, mmRLC_CLK_CNTL, data);
    8184             :         } else {
    8185           0 :                 def = data = RREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE);
    8186             :                 /* reset FGCG bits */
    8187           0 :                 data |= RLC_CGTT_MGCG_OVERRIDE__GFXIP_FGCG_OVERRIDE_MASK;
    8188             :                 /* disable FGCG*/
    8189           0 :                 if (def != data)
    8190           0 :                         WREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE, data);
    8191             : 
    8192           0 :                 def = data = RREG32_SOC15(GC, 0, mmRLC_CLK_CNTL);
    8193             :                 /* reset RLC SRAM CLK GATER bits */
    8194           0 :                 data |= RLC_CLK_CNTL__RLC_SRAM_CLK_GATER_OVERRIDE_MASK;
    8195             :                 /* disable RLC SRAM CLK*/
    8196           0 :                 if (def != data)
    8197           0 :                         WREG32_SOC15(GC, 0, mmRLC_CLK_CNTL, data);
    8198             :         }
    8199             : }
    8200             : 
    8201           0 : static void gfx_v10_0_apply_medium_grain_clock_gating_workaround(struct amdgpu_device *adev)
    8202             : {
    8203           0 :         uint32_t reg_data = 0;
    8204           0 :         uint32_t reg_idx = 0;
    8205             :         uint32_t i;
    8206             : 
    8207           0 :         const uint32_t tcp_ctrl_regs[] = {
    8208             :                 mmCGTS_SA0_WGP00_CU0_TCP_CTRL_REG,
    8209             :                 mmCGTS_SA0_WGP00_CU1_TCP_CTRL_REG,
    8210             :                 mmCGTS_SA0_WGP01_CU0_TCP_CTRL_REG,
    8211             :                 mmCGTS_SA0_WGP01_CU1_TCP_CTRL_REG,
    8212             :                 mmCGTS_SA0_WGP02_CU0_TCP_CTRL_REG,
    8213             :                 mmCGTS_SA0_WGP02_CU1_TCP_CTRL_REG,
    8214             :                 mmCGTS_SA0_WGP10_CU0_TCP_CTRL_REG,
    8215             :                 mmCGTS_SA0_WGP10_CU1_TCP_CTRL_REG,
    8216             :                 mmCGTS_SA0_WGP11_CU0_TCP_CTRL_REG,
    8217             :                 mmCGTS_SA0_WGP11_CU1_TCP_CTRL_REG,
    8218             :                 mmCGTS_SA0_WGP12_CU0_TCP_CTRL_REG,
    8219             :                 mmCGTS_SA0_WGP12_CU1_TCP_CTRL_REG,
    8220             :                 mmCGTS_SA1_WGP00_CU0_TCP_CTRL_REG,
    8221             :                 mmCGTS_SA1_WGP00_CU1_TCP_CTRL_REG,
    8222             :                 mmCGTS_SA1_WGP01_CU0_TCP_CTRL_REG,
    8223             :                 mmCGTS_SA1_WGP01_CU1_TCP_CTRL_REG,
    8224             :                 mmCGTS_SA1_WGP02_CU0_TCP_CTRL_REG,
    8225             :                 mmCGTS_SA1_WGP02_CU1_TCP_CTRL_REG,
    8226             :                 mmCGTS_SA1_WGP10_CU0_TCP_CTRL_REG,
    8227             :                 mmCGTS_SA1_WGP10_CU1_TCP_CTRL_REG,
    8228             :                 mmCGTS_SA1_WGP11_CU0_TCP_CTRL_REG,
    8229             :                 mmCGTS_SA1_WGP11_CU1_TCP_CTRL_REG,
    8230             :                 mmCGTS_SA1_WGP12_CU0_TCP_CTRL_REG,
    8231             :                 mmCGTS_SA1_WGP12_CU1_TCP_CTRL_REG
    8232             :         };
    8233             : 
    8234           0 :         const uint32_t tcp_ctrl_regs_nv12[] = {
    8235             :                 mmCGTS_SA0_WGP00_CU0_TCP_CTRL_REG,
    8236             :                 mmCGTS_SA0_WGP00_CU1_TCP_CTRL_REG,
    8237             :                 mmCGTS_SA0_WGP01_CU0_TCP_CTRL_REG,
    8238             :                 mmCGTS_SA0_WGP01_CU1_TCP_CTRL_REG,
    8239             :                 mmCGTS_SA0_WGP02_CU0_TCP_CTRL_REG,
    8240             :                 mmCGTS_SA0_WGP02_CU1_TCP_CTRL_REG,
    8241             :                 mmCGTS_SA0_WGP10_CU0_TCP_CTRL_REG,
    8242             :                 mmCGTS_SA0_WGP10_CU1_TCP_CTRL_REG,
    8243             :                 mmCGTS_SA0_WGP11_CU0_TCP_CTRL_REG,
    8244             :                 mmCGTS_SA0_WGP11_CU1_TCP_CTRL_REG,
    8245             :                 mmCGTS_SA1_WGP00_CU0_TCP_CTRL_REG,
    8246             :                 mmCGTS_SA1_WGP00_CU1_TCP_CTRL_REG,
    8247             :                 mmCGTS_SA1_WGP01_CU0_TCP_CTRL_REG,
    8248             :                 mmCGTS_SA1_WGP01_CU1_TCP_CTRL_REG,
    8249             :                 mmCGTS_SA1_WGP02_CU0_TCP_CTRL_REG,
    8250             :                 mmCGTS_SA1_WGP02_CU1_TCP_CTRL_REG,
    8251             :                 mmCGTS_SA1_WGP10_CU0_TCP_CTRL_REG,
    8252             :                 mmCGTS_SA1_WGP10_CU1_TCP_CTRL_REG,
    8253             :                 mmCGTS_SA1_WGP11_CU0_TCP_CTRL_REG,
    8254             :                 mmCGTS_SA1_WGP11_CU1_TCP_CTRL_REG,
    8255             :         };
    8256             : 
    8257           0 :         const uint32_t sm_ctlr_regs[] = {
    8258             :                 mmCGTS_SA0_QUAD0_SM_CTRL_REG,
    8259             :                 mmCGTS_SA0_QUAD1_SM_CTRL_REG,
    8260             :                 mmCGTS_SA1_QUAD0_SM_CTRL_REG,
    8261             :                 mmCGTS_SA1_QUAD1_SM_CTRL_REG
    8262             :         };
    8263             : 
    8264           0 :         if (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 1, 2)) {
    8265           0 :                 for (i = 0; i < ARRAY_SIZE(tcp_ctrl_regs_nv12); i++) {
    8266           0 :                         reg_idx = adev->reg_offset[GC_HWIP][0][mmCGTS_SA0_WGP00_CU0_TCP_CTRL_REG_BASE_IDX] +
    8267           0 :                                   tcp_ctrl_regs_nv12[i];
    8268           0 :                         reg_data = RREG32(reg_idx);
    8269           0 :                         reg_data |= CGTS_SA0_WGP00_CU0_TCP_CTRL_REG__TCPI_LS_OVERRIDE_MASK;
    8270           0 :                         WREG32(reg_idx, reg_data);
    8271             :                 }
    8272             :         } else {
    8273           0 :                 for (i = 0; i < ARRAY_SIZE(tcp_ctrl_regs); i++) {
    8274           0 :                         reg_idx = adev->reg_offset[GC_HWIP][0][mmCGTS_SA0_WGP00_CU0_TCP_CTRL_REG_BASE_IDX] +
    8275           0 :                                   tcp_ctrl_regs[i];
    8276           0 :                         reg_data = RREG32(reg_idx);
    8277           0 :                         reg_data |= CGTS_SA0_WGP00_CU0_TCP_CTRL_REG__TCPI_LS_OVERRIDE_MASK;
    8278           0 :                         WREG32(reg_idx, reg_data);
    8279             :                 }
    8280             :         }
    8281             : 
    8282           0 :         for (i = 0; i < ARRAY_SIZE(sm_ctlr_regs); i++) {
    8283           0 :                 reg_idx = adev->reg_offset[GC_HWIP][0][mmCGTS_SA0_QUAD0_SM_CTRL_REG_BASE_IDX] +
    8284           0 :                           sm_ctlr_regs[i];
    8285           0 :                 reg_data = RREG32(reg_idx);
    8286           0 :                 reg_data &= ~CGTS_SA0_QUAD0_SM_CTRL_REG__SM_MODE_MASK;
    8287           0 :                 reg_data |= 2 << CGTS_SA0_QUAD0_SM_CTRL_REG__SM_MODE__SHIFT;
    8288           0 :                 WREG32(reg_idx, reg_data);
    8289             :         }
    8290           0 : }
    8291             : 
    8292           0 : static int gfx_v10_0_update_gfx_clock_gating(struct amdgpu_device *adev,
    8293             :                                             bool enable)
    8294             : {
    8295           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
    8296             : 
    8297           0 :         if (enable) {
    8298             :                 /* enable FGCG firstly*/
    8299           0 :                 gfx_v10_0_update_fine_grain_clock_gating(adev, enable);
    8300             :                 /* CGCG/CGLS should be enabled after MGCG/MGLS
    8301             :                  * ===  MGCG + MGLS ===
    8302             :                  */
    8303           0 :                 gfx_v10_0_update_medium_grain_clock_gating(adev, enable);
    8304             :                 /* ===  CGCG /CGLS for GFX 3D Only === */
    8305           0 :                 gfx_v10_0_update_3d_clock_gating(adev, enable);
    8306             :                 /* ===  CGCG + CGLS === */
    8307           0 :                 gfx_v10_0_update_coarse_grain_clock_gating(adev, enable);
    8308             : 
    8309           0 :                 if ((adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 1, 10)) ||
    8310           0 :                     (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 1, 1)) ||
    8311             :                     (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 1, 2)))
    8312           0 :                         gfx_v10_0_apply_medium_grain_clock_gating_workaround(adev);
    8313             :         } else {
    8314             :                 /* CGCG/CGLS should be disabled before MGCG/MGLS
    8315             :                  * ===  CGCG + CGLS ===
    8316             :                  */
    8317           0 :                 gfx_v10_0_update_coarse_grain_clock_gating(adev, enable);
    8318             :                 /* ===  CGCG /CGLS for GFX 3D Only === */
    8319           0 :                 gfx_v10_0_update_3d_clock_gating(adev, enable);
    8320             :                 /* ===  MGCG + MGLS === */
    8321           0 :                 gfx_v10_0_update_medium_grain_clock_gating(adev, enable);
    8322             :                 /* disable fgcg at last*/
    8323           0 :                 gfx_v10_0_update_fine_grain_clock_gating(adev, enable);
    8324             :         }
    8325             : 
    8326           0 :         if (adev->cg_flags &
    8327             :             (AMD_CG_SUPPORT_GFX_MGCG |
    8328             :              AMD_CG_SUPPORT_GFX_CGLS |
    8329             :              AMD_CG_SUPPORT_GFX_CGCG |
    8330             :              AMD_CG_SUPPORT_GFX_3D_CGCG |
    8331             :              AMD_CG_SUPPORT_GFX_3D_CGLS))
    8332           0 :                 gfx_v10_0_enable_gui_idle_interrupt(adev, enable);
    8333             : 
    8334           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
    8335             : 
    8336           0 :         return 0;
    8337             : }
    8338             : 
    8339           0 : static void gfx_v10_0_update_spm_vmid(struct amdgpu_device *adev, unsigned vmid)
    8340             : {
    8341             :         u32 reg, data;
    8342             : 
    8343           0 :         amdgpu_gfx_off_ctrl(adev, false);
    8344             : 
    8345             :         /* not for *_SOC15 */
    8346           0 :         reg = SOC15_REG_OFFSET(GC, 0, mmRLC_SPM_MC_CNTL);
    8347           0 :         if (amdgpu_sriov_is_pp_one_vf(adev))
    8348           0 :                 data = RREG32_NO_KIQ(reg);
    8349             :         else
    8350           0 :                 data = RREG32_SOC15(GC, 0, mmRLC_SPM_MC_CNTL);
    8351             : 
    8352           0 :         data &= ~RLC_SPM_MC_CNTL__RLC_SPM_VMID_MASK;
    8353           0 :         data |= (vmid & RLC_SPM_MC_CNTL__RLC_SPM_VMID_MASK) << RLC_SPM_MC_CNTL__RLC_SPM_VMID__SHIFT;
    8354             : 
    8355           0 :         if (amdgpu_sriov_is_pp_one_vf(adev))
    8356           0 :                 WREG32_SOC15_NO_KIQ(GC, 0, mmRLC_SPM_MC_CNTL, data);
    8357             :         else
    8358           0 :                 WREG32_SOC15(GC, 0, mmRLC_SPM_MC_CNTL, data);
    8359             : 
    8360           0 :         amdgpu_gfx_off_ctrl(adev, true);
    8361           0 : }
    8362             : 
    8363             : static bool gfx_v10_0_check_rlcg_range(struct amdgpu_device *adev,
    8364             :                                         uint32_t offset,
    8365             :                                         struct soc15_reg_rlcg *entries, int arr_size)
    8366             : {
    8367             :         int i;
    8368             :         uint32_t reg;
    8369             : 
    8370             :         if (!entries)
    8371             :                 return false;
    8372             : 
    8373             :         for (i = 0; i < arr_size; i++) {
    8374             :                 const struct soc15_reg_rlcg *entry;
    8375             : 
    8376             :                 entry = &entries[i];
    8377             :                 reg = adev->reg_offset[entry->hwip][entry->instance][entry->segment] + entry->reg;
    8378             :                 if (offset == reg)
    8379             :                         return true;
    8380             :         }
    8381             : 
    8382             :         return false;
    8383             : }
    8384             : 
    8385           0 : static bool gfx_v10_0_is_rlcg_access_range(struct amdgpu_device *adev, u32 offset)
    8386             : {
    8387           0 :         return gfx_v10_0_check_rlcg_range(adev, offset, NULL, 0);
    8388             : }
    8389             : 
    8390           0 : static void gfx_v10_cntl_power_gating(struct amdgpu_device *adev, bool enable)
    8391             : {
    8392           0 :         u32 data = RREG32_SOC15(GC, 0, mmRLC_PG_CNTL);
    8393             : 
    8394           0 :         if (enable && (adev->pg_flags & AMD_PG_SUPPORT_GFX_PG))
    8395           0 :                 data |= RLC_PG_CNTL__GFX_POWER_GATING_ENABLE_MASK;
    8396             :         else
    8397           0 :                 data &= ~RLC_PG_CNTL__GFX_POWER_GATING_ENABLE_MASK;
    8398             : 
    8399           0 :         WREG32_SOC15(GC, 0, mmRLC_PG_CNTL, data);
    8400             : 
    8401             :         /*
    8402             :          * CGPG enablement required and the register to program the hysteresis value
    8403             :          * RLC_PG_DELAY_3.CGCG_ACTIVE_BEFORE_CGPG to the desired CGPG hysteresis value
    8404             :          * in refclk count. Note that RLC FW is modified to take 16 bits from
    8405             :          * RLC_PG_DELAY_3[15:0] as the hysteresis instead of just 8 bits.
    8406             :          *
    8407             :          * The recommendation from RLC team is setting RLC_PG_DELAY_3 to 200us as part)
    8408             :          * of CGPG enablement starting point.
    8409             :          * Power/performance team will optimize it and might give a new value later.
    8410             :          */
    8411           0 :         if (enable && (adev->pg_flags & AMD_PG_SUPPORT_GFX_PG)) {
    8412           0 :                 switch (adev->ip_versions[GC_HWIP][0]) {
    8413             :                 case IP_VERSION(10, 3, 1):
    8414             :                 case IP_VERSION(10, 3, 3):
    8415             :                 case IP_VERSION(10, 3, 6):
    8416             :                 case IP_VERSION(10, 3, 7):
    8417           0 :                         data = 0x4E20 & RLC_PG_DELAY_3__CGCG_ACTIVE_BEFORE_CGPG_MASK_Vangogh;
    8418           0 :                         WREG32_SOC15(GC, 0, mmRLC_PG_DELAY_3, data);
    8419             :                         break;
    8420             :                 default:
    8421             :                         break;
    8422             :                 }
    8423             :         }
    8424           0 : }
    8425             : 
    8426           0 : static void gfx_v10_cntl_pg(struct amdgpu_device *adev, bool enable)
    8427             : {
    8428           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
    8429             : 
    8430           0 :         gfx_v10_cntl_power_gating(adev, enable);
    8431             : 
    8432           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
    8433           0 : }
    8434             : 
    8435             : static const struct amdgpu_rlc_funcs gfx_v10_0_rlc_funcs = {
    8436             :         .is_rlc_enabled = gfx_v10_0_is_rlc_enabled,
    8437             :         .set_safe_mode = gfx_v10_0_set_safe_mode,
    8438             :         .unset_safe_mode = gfx_v10_0_unset_safe_mode,
    8439             :         .init = gfx_v10_0_rlc_init,
    8440             :         .get_csb_size = gfx_v10_0_get_csb_size,
    8441             :         .get_csb_buffer = gfx_v10_0_get_csb_buffer,
    8442             :         .resume = gfx_v10_0_rlc_resume,
    8443             :         .stop = gfx_v10_0_rlc_stop,
    8444             :         .reset = gfx_v10_0_rlc_reset,
    8445             :         .start = gfx_v10_0_rlc_start,
    8446             :         .update_spm_vmid = gfx_v10_0_update_spm_vmid,
    8447             : };
    8448             : 
    8449             : static const struct amdgpu_rlc_funcs gfx_v10_0_rlc_funcs_sriov = {
    8450             :         .is_rlc_enabled = gfx_v10_0_is_rlc_enabled,
    8451             :         .set_safe_mode = gfx_v10_0_set_safe_mode,
    8452             :         .unset_safe_mode = gfx_v10_0_unset_safe_mode,
    8453             :         .init = gfx_v10_0_rlc_init,
    8454             :         .get_csb_size = gfx_v10_0_get_csb_size,
    8455             :         .get_csb_buffer = gfx_v10_0_get_csb_buffer,
    8456             :         .resume = gfx_v10_0_rlc_resume,
    8457             :         .stop = gfx_v10_0_rlc_stop,
    8458             :         .reset = gfx_v10_0_rlc_reset,
    8459             :         .start = gfx_v10_0_rlc_start,
    8460             :         .update_spm_vmid = gfx_v10_0_update_spm_vmid,
    8461             :         .is_rlcg_access_range = gfx_v10_0_is_rlcg_access_range,
    8462             : };
    8463             : 
    8464           0 : static int gfx_v10_0_set_powergating_state(void *handle,
    8465             :                                           enum amd_powergating_state state)
    8466             : {
    8467           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    8468           0 :         bool enable = (state == AMD_PG_STATE_GATE);
    8469             : 
    8470           0 :         if (amdgpu_sriov_vf(adev))
    8471             :                 return 0;
    8472             : 
    8473           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    8474             :         case IP_VERSION(10, 1, 10):
    8475             :         case IP_VERSION(10, 1, 1):
    8476             :         case IP_VERSION(10, 1, 2):
    8477             :         case IP_VERSION(10, 3, 0):
    8478             :         case IP_VERSION(10, 3, 2):
    8479             :         case IP_VERSION(10, 3, 4):
    8480             :         case IP_VERSION(10, 3, 5):
    8481           0 :                 amdgpu_gfx_off_ctrl(adev, enable);
    8482           0 :                 break;
    8483             :         case IP_VERSION(10, 3, 1):
    8484             :         case IP_VERSION(10, 3, 3):
    8485             :         case IP_VERSION(10, 3, 6):
    8486             :         case IP_VERSION(10, 3, 7):
    8487           0 :                 gfx_v10_cntl_pg(adev, enable);
    8488           0 :                 amdgpu_gfx_off_ctrl(adev, enable);
    8489           0 :                 break;
    8490             :         default:
    8491             :                 break;
    8492             :         }
    8493             :         return 0;
    8494             : }
    8495             : 
    8496           0 : static int gfx_v10_0_set_clockgating_state(void *handle,
    8497             :                                           enum amd_clockgating_state state)
    8498             : {
    8499           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    8500             : 
    8501           0 :         if (amdgpu_sriov_vf(adev))
    8502             :                 return 0;
    8503             : 
    8504           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    8505             :         case IP_VERSION(10, 1, 10):
    8506             :         case IP_VERSION(10, 1, 1):
    8507             :         case IP_VERSION(10, 1, 2):
    8508             :         case IP_VERSION(10, 3, 0):
    8509             :         case IP_VERSION(10, 3, 2):
    8510             :         case IP_VERSION(10, 3, 1):
    8511             :         case IP_VERSION(10, 3, 4):
    8512             :         case IP_VERSION(10, 3, 5):
    8513             :         case IP_VERSION(10, 3, 6):
    8514             :         case IP_VERSION(10, 3, 3):
    8515             :         case IP_VERSION(10, 3, 7):
    8516           0 :                 gfx_v10_0_update_gfx_clock_gating(adev,
    8517             :                                                  state == AMD_CG_STATE_GATE);
    8518           0 :                 break;
    8519             :         default:
    8520             :                 break;
    8521             :         }
    8522             :         return 0;
    8523             : }
    8524             : 
    8525           0 : static void gfx_v10_0_get_clockgating_state(void *handle, u64 *flags)
    8526             : {
    8527           0 :         struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    8528             :         int data;
    8529             : 
    8530             :         /* AMD_CG_SUPPORT_GFX_FGCG */
    8531           0 :         data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE));
    8532           0 :         if (!(data & RLC_CGTT_MGCG_OVERRIDE__GFXIP_FGCG_OVERRIDE_MASK))
    8533           0 :                 *flags |= AMD_CG_SUPPORT_GFX_FGCG;
    8534             : 
    8535             :         /* AMD_CG_SUPPORT_GFX_MGCG */
    8536           0 :         data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE));
    8537           0 :         if (!(data & RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGCG_OVERRIDE_MASK))
    8538           0 :                 *flags |= AMD_CG_SUPPORT_GFX_MGCG;
    8539             : 
    8540             :         /* AMD_CG_SUPPORT_GFX_CGCG */
    8541           0 :         data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, mmRLC_CGCG_CGLS_CTRL));
    8542           0 :         if (data & RLC_CGCG_CGLS_CTRL__CGCG_EN_MASK)
    8543           0 :                 *flags |= AMD_CG_SUPPORT_GFX_CGCG;
    8544             : 
    8545             :         /* AMD_CG_SUPPORT_GFX_CGLS */
    8546           0 :         if (data & RLC_CGCG_CGLS_CTRL__CGLS_EN_MASK)
    8547           0 :                 *flags |= AMD_CG_SUPPORT_GFX_CGLS;
    8548             : 
    8549             :         /* AMD_CG_SUPPORT_GFX_RLC_LS */
    8550           0 :         data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, mmRLC_MEM_SLP_CNTL));
    8551           0 :         if (data & RLC_MEM_SLP_CNTL__RLC_MEM_LS_EN_MASK)
    8552           0 :                 *flags |= AMD_CG_SUPPORT_GFX_RLC_LS | AMD_CG_SUPPORT_GFX_MGLS;
    8553             : 
    8554             :         /* AMD_CG_SUPPORT_GFX_CP_LS */
    8555           0 :         data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, mmCP_MEM_SLP_CNTL));
    8556           0 :         if (data & CP_MEM_SLP_CNTL__CP_MEM_LS_EN_MASK)
    8557           0 :                 *flags |= AMD_CG_SUPPORT_GFX_CP_LS | AMD_CG_SUPPORT_GFX_MGLS;
    8558             : 
    8559             :         /* AMD_CG_SUPPORT_GFX_3D_CGCG */
    8560           0 :         data = RREG32_KIQ(SOC15_REG_OFFSET(GC, 0, mmRLC_CGCG_CGLS_CTRL_3D));
    8561           0 :         if (data & RLC_CGCG_CGLS_CTRL_3D__CGCG_EN_MASK)
    8562           0 :                 *flags |= AMD_CG_SUPPORT_GFX_3D_CGCG;
    8563             : 
    8564             :         /* AMD_CG_SUPPORT_GFX_3D_CGLS */
    8565           0 :         if (data & RLC_CGCG_CGLS_CTRL_3D__CGLS_EN_MASK)
    8566           0 :                 *flags |= AMD_CG_SUPPORT_GFX_3D_CGLS;
    8567           0 : }
    8568             : 
    8569           0 : static u64 gfx_v10_0_ring_get_rptr_gfx(struct amdgpu_ring *ring)
    8570             : {
    8571             :         /* gfx10 is 32bit rptr*/
    8572           0 :         return *(uint32_t *)ring->rptr_cpu_addr;
    8573             : }
    8574             : 
    8575           0 : static u64 gfx_v10_0_ring_get_wptr_gfx(struct amdgpu_ring *ring)
    8576             : {
    8577           0 :         struct amdgpu_device *adev = ring->adev;
    8578             :         u64 wptr;
    8579             : 
    8580             :         /* XXX check if swapping is necessary on BE */
    8581           0 :         if (ring->use_doorbell) {
    8582           0 :                 wptr = atomic64_read((atomic64_t *)ring->wptr_cpu_addr);
    8583             :         } else {
    8584           0 :                 wptr = RREG32_SOC15(GC, 0, mmCP_RB0_WPTR);
    8585           0 :                 wptr += (u64)RREG32_SOC15(GC, 0, mmCP_RB0_WPTR_HI) << 32;
    8586             :         }
    8587             : 
    8588           0 :         return wptr;
    8589             : }
    8590             : 
    8591           0 : static void gfx_v10_0_ring_set_wptr_gfx(struct amdgpu_ring *ring)
    8592             : {
    8593           0 :         struct amdgpu_device *adev = ring->adev;
    8594             :         uint32_t *wptr_saved;
    8595             :         uint32_t *is_queue_unmap;
    8596             :         uint64_t aggregated_db_index;
    8597           0 :         uint32_t mqd_size = adev->mqds[AMDGPU_HW_IP_GFX].mqd_size;
    8598             :         uint64_t wptr_tmp;
    8599             : 
    8600           0 :         if (ring->is_mes_queue) {
    8601           0 :                 wptr_saved = (uint32_t *)(ring->mqd_ptr + mqd_size);
    8602           0 :                 is_queue_unmap = (uint32_t *)(ring->mqd_ptr + mqd_size +
    8603             :                                               sizeof(uint32_t));
    8604           0 :                 aggregated_db_index =
    8605           0 :                         amdgpu_mes_get_aggregated_doorbell_index(adev,
    8606             :                         AMDGPU_MES_PRIORITY_LEVEL_NORMAL);
    8607             : 
    8608           0 :                 wptr_tmp = ring->wptr & ring->buf_mask;
    8609           0 :                 atomic64_set((atomic64_t *)ring->wptr_cpu_addr, wptr_tmp);
    8610           0 :                 *wptr_saved = wptr_tmp;
    8611             :                 /* assume doorbell always being used by mes mapped queue */
    8612           0 :                 if (*is_queue_unmap) {
    8613           0 :                         WDOORBELL64(aggregated_db_index, wptr_tmp);
    8614           0 :                         WDOORBELL64(ring->doorbell_index, wptr_tmp);
    8615             :                 } else {
    8616           0 :                         WDOORBELL64(ring->doorbell_index, wptr_tmp);
    8617             : 
    8618           0 :                         if (*is_queue_unmap)
    8619           0 :                                 WDOORBELL64(aggregated_db_index, wptr_tmp);
    8620             :                 }
    8621             :         } else {
    8622           0 :                 if (ring->use_doorbell) {
    8623             :                         /* XXX check if swapping is necessary on BE */
    8624           0 :                         atomic64_set((atomic64_t *)ring->wptr_cpu_addr,
    8625           0 :                                      ring->wptr);
    8626           0 :                         WDOORBELL64(ring->doorbell_index, ring->wptr);
    8627             :                 } else {
    8628           0 :                         WREG32_SOC15(GC, 0, mmCP_RB0_WPTR,
    8629             :                                      lower_32_bits(ring->wptr));
    8630           0 :                         WREG32_SOC15(GC, 0, mmCP_RB0_WPTR_HI,
    8631             :                                      upper_32_bits(ring->wptr));
    8632             :                 }
    8633             :         }
    8634           0 : }
    8635             : 
    8636           0 : static u64 gfx_v10_0_ring_get_rptr_compute(struct amdgpu_ring *ring)
    8637             : {
    8638             :         /* gfx10 hardware is 32bit rptr */
    8639           0 :         return *(uint32_t *)ring->rptr_cpu_addr;
    8640             : }
    8641             : 
    8642           0 : static u64 gfx_v10_0_ring_get_wptr_compute(struct amdgpu_ring *ring)
    8643             : {
    8644             :         u64 wptr;
    8645             : 
    8646             :         /* XXX check if swapping is necessary on BE */
    8647           0 :         if (ring->use_doorbell)
    8648           0 :                 wptr = atomic64_read((atomic64_t *)ring->wptr_cpu_addr);
    8649             :         else
    8650           0 :                 BUG();
    8651           0 :         return wptr;
    8652             : }
    8653             : 
    8654           0 : static void gfx_v10_0_ring_set_wptr_compute(struct amdgpu_ring *ring)
    8655             : {
    8656           0 :         struct amdgpu_device *adev = ring->adev;
    8657             :         uint32_t *wptr_saved;
    8658             :         uint32_t *is_queue_unmap;
    8659             :         uint64_t aggregated_db_index;
    8660           0 :         uint32_t mqd_size = adev->mqds[AMDGPU_HW_IP_COMPUTE].mqd_size;
    8661             :         uint64_t wptr_tmp;
    8662             : 
    8663           0 :         if (ring->is_mes_queue) {
    8664           0 :                 wptr_saved = (uint32_t *)(ring->mqd_ptr + mqd_size);
    8665           0 :                 is_queue_unmap = (uint32_t *)(ring->mqd_ptr + mqd_size +
    8666             :                                               sizeof(uint32_t));
    8667           0 :                 aggregated_db_index =
    8668           0 :                         amdgpu_mes_get_aggregated_doorbell_index(adev,
    8669             :                         AMDGPU_MES_PRIORITY_LEVEL_NORMAL);
    8670             : 
    8671           0 :                 wptr_tmp = ring->wptr & ring->buf_mask;
    8672           0 :                 atomic64_set((atomic64_t *)ring->wptr_cpu_addr, wptr_tmp);
    8673           0 :                 *wptr_saved = wptr_tmp;
    8674             :                 /* assume doorbell always used by mes mapped queue */
    8675           0 :                 if (*is_queue_unmap) {
    8676           0 :                         WDOORBELL64(aggregated_db_index, wptr_tmp);
    8677           0 :                         WDOORBELL64(ring->doorbell_index, wptr_tmp);
    8678             :                 } else {
    8679           0 :                         WDOORBELL64(ring->doorbell_index, wptr_tmp);
    8680             : 
    8681           0 :                         if (*is_queue_unmap)
    8682           0 :                                 WDOORBELL64(aggregated_db_index, wptr_tmp);
    8683             :                 }
    8684             :         } else {
    8685             :                 /* XXX check if swapping is necessary on BE */
    8686           0 :                 if (ring->use_doorbell) {
    8687           0 :                         atomic64_set((atomic64_t *)ring->wptr_cpu_addr,
    8688           0 :                                      ring->wptr);
    8689           0 :                         WDOORBELL64(ring->doorbell_index, ring->wptr);
    8690             :                 } else {
    8691           0 :                         BUG(); /* only DOORBELL method supported on gfx10 now */
    8692             :                 }
    8693             :         }
    8694           0 : }
    8695             : 
    8696           0 : static void gfx_v10_0_ring_emit_hdp_flush(struct amdgpu_ring *ring)
    8697             : {
    8698           0 :         struct amdgpu_device *adev = ring->adev;
    8699             :         u32 ref_and_mask, reg_mem_engine;
    8700           0 :         const struct nbio_hdp_flush_reg *nbio_hf_reg = adev->nbio.hdp_flush_reg;
    8701             : 
    8702           0 :         if (ring->funcs->type == AMDGPU_RING_TYPE_COMPUTE) {
    8703           0 :                 switch (ring->me) {
    8704             :                 case 1:
    8705           0 :                         ref_and_mask = nbio_hf_reg->ref_and_mask_cp2 << ring->pipe;
    8706           0 :                         break;
    8707             :                 case 2:
    8708           0 :                         ref_and_mask = nbio_hf_reg->ref_and_mask_cp6 << ring->pipe;
    8709           0 :                         break;
    8710             :                 default:
    8711             :                         return;
    8712             :                 }
    8713             :                 reg_mem_engine = 0;
    8714             :         } else {
    8715           0 :                 ref_and_mask = nbio_hf_reg->ref_and_mask_cp0;
    8716           0 :                 reg_mem_engine = 1; /* pfp */
    8717             :         }
    8718             : 
    8719           0 :         gfx_v10_0_wait_reg_mem(ring, reg_mem_engine, 0, 1,
    8720           0 :                                adev->nbio.funcs->get_hdp_flush_req_offset(adev),
    8721           0 :                                adev->nbio.funcs->get_hdp_flush_done_offset(adev),
    8722             :                                ref_and_mask, ref_and_mask, 0x20);
    8723             : }
    8724             : 
    8725           0 : static void gfx_v10_0_ring_emit_ib_gfx(struct amdgpu_ring *ring,
    8726             :                                        struct amdgpu_job *job,
    8727             :                                        struct amdgpu_ib *ib,
    8728             :                                        uint32_t flags)
    8729             : {
    8730           0 :         unsigned vmid = AMDGPU_JOB_GET_VMID(job);
    8731           0 :         u32 header, control = 0;
    8732             : 
    8733           0 :         if (ib->flags & AMDGPU_IB_FLAG_CE)
    8734             :                 header = PACKET3(PACKET3_INDIRECT_BUFFER_CNST, 2);
    8735             :         else
    8736           0 :                 header = PACKET3(PACKET3_INDIRECT_BUFFER, 2);
    8737             : 
    8738           0 :         control |= ib->length_dw | (vmid << 24);
    8739             : 
    8740           0 :         if ((amdgpu_sriov_vf(ring->adev) || amdgpu_mcbp) && (ib->flags & AMDGPU_IB_FLAG_PREEMPT)) {
    8741           0 :                 control |= INDIRECT_BUFFER_PRE_ENB(1);
    8742             : 
    8743           0 :                 if (flags & AMDGPU_IB_PREEMPTED)
    8744           0 :                         control |= INDIRECT_BUFFER_PRE_RESUME(1);
    8745             : 
    8746           0 :                 if (!(ib->flags & AMDGPU_IB_FLAG_CE) && vmid)
    8747           0 :                         gfx_v10_0_ring_emit_de_meta(ring,
    8748           0 :                                     (!amdgpu_sriov_vf(ring->adev) && flags & AMDGPU_IB_PREEMPTED) ? true : false);
    8749             :         }
    8750             : 
    8751           0 :         if (ring->is_mes_queue)
    8752             :                 /* inherit vmid from mqd */
    8753           0 :                 control |= 0x400000;
    8754             : 
    8755           0 :         amdgpu_ring_write(ring, header);
    8756           0 :         BUG_ON(ib->gpu_addr & 0x3); /* Dword align */
    8757           0 :         amdgpu_ring_write(ring,
    8758             : #ifdef __BIG_ENDIAN
    8759             :                 (2 << 0) |
    8760             : #endif
    8761             :                 lower_32_bits(ib->gpu_addr));
    8762           0 :         amdgpu_ring_write(ring, upper_32_bits(ib->gpu_addr));
    8763           0 :         amdgpu_ring_write(ring, control);
    8764           0 : }
    8765             : 
    8766           0 : static void gfx_v10_0_ring_emit_ib_compute(struct amdgpu_ring *ring,
    8767             :                                            struct amdgpu_job *job,
    8768             :                                            struct amdgpu_ib *ib,
    8769             :                                            uint32_t flags)
    8770             : {
    8771           0 :         unsigned vmid = AMDGPU_JOB_GET_VMID(job);
    8772           0 :         u32 control = INDIRECT_BUFFER_VALID | ib->length_dw | (vmid << 24);
    8773             : 
    8774           0 :         if (ring->is_mes_queue)
    8775             :                 /* inherit vmid from mqd */
    8776           0 :                 control |= 0x40000000;
    8777             : 
    8778             :         /* Currently, there is a high possibility to get wave ID mismatch
    8779             :          * between ME and GDS, leading to a hw deadlock, because ME generates
    8780             :          * different wave IDs than the GDS expects. This situation happens
    8781             :          * randomly when at least 5 compute pipes use GDS ordered append.
    8782             :          * The wave IDs generated by ME are also wrong after suspend/resume.
    8783             :          * Those are probably bugs somewhere else in the kernel driver.
    8784             :          *
    8785             :          * Writing GDS_COMPUTE_MAX_WAVE_ID resets wave ID counters in ME and
    8786             :          * GDS to 0 for this ring (me/pipe).
    8787             :          */
    8788           0 :         if (ib->flags & AMDGPU_IB_FLAG_RESET_GDS_MAX_WAVE_ID) {
    8789           0 :                 amdgpu_ring_write(ring, PACKET3(PACKET3_SET_CONFIG_REG, 1));
    8790           0 :                 amdgpu_ring_write(ring, mmGDS_COMPUTE_MAX_WAVE_ID);
    8791           0 :                 amdgpu_ring_write(ring, ring->adev->gds.gds_compute_max_wave_id);
    8792             :         }
    8793             : 
    8794           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_INDIRECT_BUFFER, 2));
    8795           0 :         BUG_ON(ib->gpu_addr & 0x3); /* Dword align */
    8796           0 :         amdgpu_ring_write(ring,
    8797             : #ifdef __BIG_ENDIAN
    8798             :                                 (2 << 0) |
    8799             : #endif
    8800             :                                 lower_32_bits(ib->gpu_addr));
    8801           0 :         amdgpu_ring_write(ring, upper_32_bits(ib->gpu_addr));
    8802           0 :         amdgpu_ring_write(ring, control);
    8803           0 : }
    8804             : 
    8805           0 : static void gfx_v10_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr,
    8806             :                                      u64 seq, unsigned flags)
    8807             : {
    8808           0 :         bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT;
    8809           0 :         bool int_sel = flags & AMDGPU_FENCE_FLAG_INT;
    8810             : 
    8811             :         /* RELEASE_MEM - flush caches, send int */
    8812           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_RELEASE_MEM, 6));
    8813           0 :         amdgpu_ring_write(ring, (PACKET3_RELEASE_MEM_GCR_SEQ |
    8814             :                                  PACKET3_RELEASE_MEM_GCR_GL2_WB |
    8815             :                                  PACKET3_RELEASE_MEM_GCR_GLM_INV | /* must be set with GLM_WB */
    8816             :                                  PACKET3_RELEASE_MEM_GCR_GLM_WB |
    8817             :                                  PACKET3_RELEASE_MEM_CACHE_POLICY(3) |
    8818             :                                  PACKET3_RELEASE_MEM_EVENT_TYPE(CACHE_FLUSH_AND_INV_TS_EVENT) |
    8819             :                                  PACKET3_RELEASE_MEM_EVENT_INDEX(5)));
    8820           0 :         amdgpu_ring_write(ring, (PACKET3_RELEASE_MEM_DATA_SEL(write64bit ? 2 : 1) |
    8821           0 :                                  PACKET3_RELEASE_MEM_INT_SEL(int_sel ? 2 : 0)));
    8822             : 
    8823             :         /*
    8824             :          * the address should be Qword aligned if 64bit write, Dword
    8825             :          * aligned if only send 32bit data low (discard data high)
    8826             :          */
    8827           0 :         if (write64bit)
    8828           0 :                 BUG_ON(addr & 0x7);
    8829             :         else
    8830           0 :                 BUG_ON(addr & 0x3);
    8831           0 :         amdgpu_ring_write(ring, lower_32_bits(addr));
    8832           0 :         amdgpu_ring_write(ring, upper_32_bits(addr));
    8833           0 :         amdgpu_ring_write(ring, lower_32_bits(seq));
    8834           0 :         amdgpu_ring_write(ring, upper_32_bits(seq));
    8835           0 :         amdgpu_ring_write(ring, ring->is_mes_queue ?
    8836           0 :                          (ring->hw_queue_id | AMDGPU_FENCE_MES_QUEUE_FLAG) : 0);
    8837           0 : }
    8838             : 
    8839           0 : static void gfx_v10_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
    8840             : {
    8841           0 :         int usepfp = (ring->funcs->type == AMDGPU_RING_TYPE_GFX);
    8842           0 :         uint32_t seq = ring->fence_drv.sync_seq;
    8843           0 :         uint64_t addr = ring->fence_drv.gpu_addr;
    8844             : 
    8845           0 :         gfx_v10_0_wait_reg_mem(ring, usepfp, 1, 0, lower_32_bits(addr),
    8846           0 :                                upper_32_bits(addr), seq, 0xffffffff, 4);
    8847           0 : }
    8848             : 
    8849           0 : static void gfx_v10_0_ring_invalidate_tlbs(struct amdgpu_ring *ring,
    8850             :                                    uint16_t pasid, uint32_t flush_type,
    8851             :                                    bool all_hub, uint8_t dst_sel)
    8852             : {
    8853           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_INVALIDATE_TLBS, 0));
    8854           0 :         amdgpu_ring_write(ring,
    8855           0 :                           PACKET3_INVALIDATE_TLBS_DST_SEL(dst_sel) |
    8856           0 :                           PACKET3_INVALIDATE_TLBS_ALL_HUB(all_hub) |
    8857           0 :                           PACKET3_INVALIDATE_TLBS_PASID(pasid) |
    8858           0 :                           PACKET3_INVALIDATE_TLBS_FLUSH_TYPE(flush_type));
    8859           0 : }
    8860             : 
    8861           0 : static void gfx_v10_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
    8862             :                                          unsigned vmid, uint64_t pd_addr)
    8863             : {
    8864           0 :         if (ring->is_mes_queue)
    8865             :                 gfx_v10_0_ring_invalidate_tlbs(ring, 0, 0, false, 0);
    8866             :         else
    8867           0 :                 amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
    8868             : 
    8869             :         /* compute doesn't have PFP */
    8870           0 :         if (ring->funcs->type == AMDGPU_RING_TYPE_GFX) {
    8871             :                 /* sync PFP to ME, otherwise we might get invalid PFP reads */
    8872           0 :                 amdgpu_ring_write(ring, PACKET3(PACKET3_PFP_SYNC_ME, 0));
    8873           0 :                 amdgpu_ring_write(ring, 0x0);
    8874             :         }
    8875           0 : }
    8876             : 
    8877           0 : static void gfx_v10_0_ring_emit_fence_kiq(struct amdgpu_ring *ring, u64 addr,
    8878             :                                           u64 seq, unsigned int flags)
    8879             : {
    8880           0 :         struct amdgpu_device *adev = ring->adev;
    8881             : 
    8882             :         /* we only allocate 32bit for each seq wb address */
    8883           0 :         BUG_ON(flags & AMDGPU_FENCE_FLAG_64BIT);
    8884             : 
    8885             :         /* write fence seq to the "addr" */
    8886           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
    8887           0 :         amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
    8888             :                                  WRITE_DATA_DST_SEL(5) | WR_CONFIRM));
    8889           0 :         amdgpu_ring_write(ring, lower_32_bits(addr));
    8890           0 :         amdgpu_ring_write(ring, upper_32_bits(addr));
    8891           0 :         amdgpu_ring_write(ring, lower_32_bits(seq));
    8892             : 
    8893           0 :         if (flags & AMDGPU_FENCE_FLAG_INT) {
    8894             :                 /* set register to trigger INT */
    8895           0 :                 amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
    8896           0 :                 amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
    8897             :                                          WRITE_DATA_DST_SEL(0) | WR_CONFIRM));
    8898           0 :                 amdgpu_ring_write(ring, SOC15_REG_OFFSET(GC, 0, mmCPC_INT_STATUS));
    8899           0 :                 amdgpu_ring_write(ring, 0);
    8900           0 :                 amdgpu_ring_write(ring, 0x20000000); /* src_id is 178 */
    8901             :         }
    8902           0 : }
    8903             : 
    8904           0 : static void gfx_v10_0_ring_emit_sb(struct amdgpu_ring *ring)
    8905             : {
    8906           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_SWITCH_BUFFER, 0));
    8907           0 :         amdgpu_ring_write(ring, 0);
    8908           0 : }
    8909             : 
    8910           0 : static void gfx_v10_0_ring_emit_cntxcntl(struct amdgpu_ring *ring,
    8911             :                                          uint32_t flags)
    8912             : {
    8913           0 :         uint32_t dw2 = 0;
    8914             : 
    8915           0 :         if (amdgpu_mcbp || amdgpu_sriov_vf(ring->adev))
    8916           0 :                 gfx_v10_0_ring_emit_ce_meta(ring,
    8917           0 :                                     (!amdgpu_sriov_vf(ring->adev) && flags & AMDGPU_IB_PREEMPTED) ? true : false);
    8918             : 
    8919           0 :         dw2 |= 0x80000000; /* set load_enable otherwise this package is just NOPs */
    8920           0 :         if (flags & AMDGPU_HAVE_CTX_SWITCH) {
    8921             :                 /* set load_global_config & load_global_uconfig */
    8922           0 :                 dw2 |= 0x8001;
    8923             :                 /* set load_cs_sh_regs */
    8924           0 :                 dw2 |= 0x01000000;
    8925             :                 /* set load_per_context_state & load_gfx_sh_regs for GFX */
    8926           0 :                 dw2 |= 0x10002;
    8927             : 
    8928             :                 /* set load_ce_ram if preamble presented */
    8929           0 :                 if (AMDGPU_PREAMBLE_IB_PRESENT & flags)
    8930           0 :                         dw2 |= 0x10000000;
    8931             :         } else {
    8932             :                 /* still load_ce_ram if this is the first time preamble presented
    8933             :                  * although there is no context switch happens.
    8934             :                  */
    8935           0 :                 if (AMDGPU_PREAMBLE_IB_PRESENT_FIRST & flags)
    8936           0 :                         dw2 |= 0x10000000;
    8937             :         }
    8938             : 
    8939           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_CONTEXT_CONTROL, 1));
    8940           0 :         amdgpu_ring_write(ring, dw2);
    8941           0 :         amdgpu_ring_write(ring, 0);
    8942           0 : }
    8943             : 
    8944           0 : static unsigned gfx_v10_0_ring_emit_init_cond_exec(struct amdgpu_ring *ring)
    8945             : {
    8946             :         unsigned ret;
    8947             : 
    8948           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_COND_EXEC, 3));
    8949           0 :         amdgpu_ring_write(ring, lower_32_bits(ring->cond_exe_gpu_addr));
    8950           0 :         amdgpu_ring_write(ring, upper_32_bits(ring->cond_exe_gpu_addr));
    8951           0 :         amdgpu_ring_write(ring, 0); /* discard following DWs if *cond_exec_gpu_addr==0 */
    8952           0 :         ret = ring->wptr & ring->buf_mask;
    8953           0 :         amdgpu_ring_write(ring, 0x55aa55aa); /* patch dummy value later */
    8954             : 
    8955           0 :         return ret;
    8956             : }
    8957             : 
    8958           0 : static void gfx_v10_0_ring_emit_patch_cond_exec(struct amdgpu_ring *ring, unsigned offset)
    8959             : {
    8960             :         unsigned cur;
    8961           0 :         BUG_ON(offset > ring->buf_mask);
    8962           0 :         BUG_ON(ring->ring[offset] != 0x55aa55aa);
    8963             : 
    8964           0 :         cur = (ring->wptr - 1) & ring->buf_mask;
    8965           0 :         if (likely(cur > offset))
    8966           0 :                 ring->ring[offset] = cur - offset;
    8967             :         else
    8968           0 :                 ring->ring[offset] = (ring->buf_mask + 1) - offset + cur;
    8969           0 : }
    8970             : 
    8971           0 : static int gfx_v10_0_ring_preempt_ib(struct amdgpu_ring *ring)
    8972             : {
    8973           0 :         int i, r = 0;
    8974           0 :         struct amdgpu_device *adev = ring->adev;
    8975           0 :         struct amdgpu_kiq *kiq = &adev->gfx.kiq;
    8976           0 :         struct amdgpu_ring *kiq_ring = &kiq->ring;
    8977             :         unsigned long flags;
    8978             : 
    8979           0 :         if (!kiq->pmf || !kiq->pmf->kiq_unmap_queues)
    8980             :                 return -EINVAL;
    8981             : 
    8982           0 :         spin_lock_irqsave(&kiq->ring_lock, flags);
    8983             : 
    8984           0 :         if (amdgpu_ring_alloc(kiq_ring, kiq->pmf->unmap_queues_size)) {
    8985           0 :                 spin_unlock_irqrestore(&kiq->ring_lock, flags);
    8986           0 :                 return -ENOMEM;
    8987             :         }
    8988             : 
    8989             :         /* assert preemption condition */
    8990           0 :         amdgpu_ring_set_preempt_cond_exec(ring, false);
    8991             : 
    8992             :         /* assert IB preemption, emit the trailing fence */
    8993           0 :         kiq->pmf->kiq_unmap_queues(kiq_ring, ring, PREEMPT_QUEUES_NO_UNMAP,
    8994             :                                    ring->trail_fence_gpu_addr,
    8995           0 :                                    ++ring->trail_seq);
    8996           0 :         amdgpu_ring_commit(kiq_ring);
    8997             : 
    8998           0 :         spin_unlock_irqrestore(&kiq->ring_lock, flags);
    8999             : 
    9000             :         /* poll the trailing fence */
    9001           0 :         for (i = 0; i < adev->usec_timeout; i++) {
    9002           0 :                 if (ring->trail_seq ==
    9003           0 :                     le32_to_cpu(*(ring->trail_fence_cpu_addr)))
    9004             :                         break;
    9005           0 :                 udelay(1);
    9006             :         }
    9007             : 
    9008           0 :         if (i >= adev->usec_timeout) {
    9009           0 :                 r = -EINVAL;
    9010           0 :                 DRM_ERROR("ring %d failed to preempt ib\n", ring->idx);
    9011             :         }
    9012             : 
    9013             :         /* deassert preemption condition */
    9014           0 :         amdgpu_ring_set_preempt_cond_exec(ring, true);
    9015           0 :         return r;
    9016             : }
    9017             : 
    9018           0 : static void gfx_v10_0_ring_emit_ce_meta(struct amdgpu_ring *ring, bool resume)
    9019             : {
    9020           0 :         struct amdgpu_device *adev = ring->adev;
    9021           0 :         struct v10_ce_ib_state ce_payload = {0};
    9022             :         uint64_t offset, ce_payload_gpu_addr;
    9023             :         void *ce_payload_cpu_addr;
    9024             :         int cnt;
    9025             : 
    9026           0 :         cnt = (sizeof(ce_payload) >> 2) + 4 - 2;
    9027             : 
    9028           0 :         if (ring->is_mes_queue) {
    9029           0 :                 offset = offsetof(struct amdgpu_mes_ctx_meta_data,
    9030             :                                   gfx[0].gfx_meta_data) +
    9031             :                         offsetof(struct v10_gfx_meta_data, ce_payload);
    9032           0 :                 ce_payload_gpu_addr =
    9033           0 :                         amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset);
    9034             :                 ce_payload_cpu_addr =
    9035           0 :                         amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset);
    9036             :         } else {
    9037           0 :                 offset = offsetof(struct v10_gfx_meta_data, ce_payload);
    9038           0 :                 ce_payload_gpu_addr = amdgpu_csa_vaddr(ring->adev) + offset;
    9039           0 :                 ce_payload_cpu_addr = adev->virt.csa_cpu_addr + offset;
    9040             :         }
    9041             : 
    9042           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, cnt));
    9043           0 :         amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(2) |
    9044             :                                  WRITE_DATA_DST_SEL(8) |
    9045             :                                  WR_CONFIRM) |
    9046             :                                  WRITE_DATA_CACHE_POLICY(0));
    9047           0 :         amdgpu_ring_write(ring, lower_32_bits(ce_payload_gpu_addr));
    9048           0 :         amdgpu_ring_write(ring, upper_32_bits(ce_payload_gpu_addr));
    9049             : 
    9050           0 :         if (resume)
    9051           0 :                 amdgpu_ring_write_multiple(ring, ce_payload_cpu_addr,
    9052             :                                            sizeof(ce_payload) >> 2);
    9053             :         else
    9054           0 :                 amdgpu_ring_write_multiple(ring, (void *)&ce_payload,
    9055             :                                            sizeof(ce_payload) >> 2);
    9056           0 : }
    9057             : 
    9058           0 : static void gfx_v10_0_ring_emit_de_meta(struct amdgpu_ring *ring, bool resume)
    9059             : {
    9060           0 :         struct amdgpu_device *adev = ring->adev;
    9061           0 :         struct v10_de_ib_state de_payload = {0};
    9062             :         uint64_t offset, gds_addr, de_payload_gpu_addr;
    9063             :         void *de_payload_cpu_addr;
    9064             :         int cnt;
    9065             : 
    9066           0 :         if (ring->is_mes_queue) {
    9067           0 :                 offset = offsetof(struct amdgpu_mes_ctx_meta_data,
    9068             :                                   gfx[0].gfx_meta_data) +
    9069             :                         offsetof(struct v10_gfx_meta_data, de_payload);
    9070           0 :                 de_payload_gpu_addr =
    9071           0 :                         amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset);
    9072           0 :                 de_payload_cpu_addr =
    9073           0 :                         amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset);
    9074             : 
    9075           0 :                 offset = offsetof(struct amdgpu_mes_ctx_meta_data,
    9076             :                                   gfx[0].gds_backup) +
    9077             :                         offsetof(struct v10_gfx_meta_data, de_payload);
    9078           0 :                 gds_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset);
    9079             :         } else {
    9080           0 :                 offset = offsetof(struct v10_gfx_meta_data, de_payload);
    9081           0 :                 de_payload_gpu_addr = amdgpu_csa_vaddr(ring->adev) + offset;
    9082           0 :                 de_payload_cpu_addr = adev->virt.csa_cpu_addr + offset;
    9083             : 
    9084           0 :                 gds_addr = ALIGN(amdgpu_csa_vaddr(ring->adev) +
    9085             :                                  AMDGPU_CSA_SIZE - adev->gds.gds_size,
    9086             :                                  PAGE_SIZE);
    9087             :         }
    9088             : 
    9089           0 :         de_payload.gds_backup_addrlo = lower_32_bits(gds_addr);
    9090           0 :         de_payload.gds_backup_addrhi = upper_32_bits(gds_addr);
    9091             : 
    9092           0 :         cnt = (sizeof(de_payload) >> 2) + 4 - 2;
    9093           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, cnt));
    9094           0 :         amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(1) |
    9095             :                                  WRITE_DATA_DST_SEL(8) |
    9096             :                                  WR_CONFIRM) |
    9097             :                                  WRITE_DATA_CACHE_POLICY(0));
    9098           0 :         amdgpu_ring_write(ring, lower_32_bits(de_payload_gpu_addr));
    9099           0 :         amdgpu_ring_write(ring, upper_32_bits(de_payload_gpu_addr));
    9100             : 
    9101           0 :         if (resume)
    9102           0 :                 amdgpu_ring_write_multiple(ring, de_payload_cpu_addr,
    9103             :                                            sizeof(de_payload) >> 2);
    9104             :         else
    9105           0 :                 amdgpu_ring_write_multiple(ring, (void *)&de_payload,
    9106             :                                            sizeof(de_payload) >> 2);
    9107           0 : }
    9108             : 
    9109           0 : static void gfx_v10_0_ring_emit_frame_cntl(struct amdgpu_ring *ring, bool start,
    9110             :                                     bool secure)
    9111             : {
    9112           0 :         uint32_t v = secure ? FRAME_TMZ : 0;
    9113             : 
    9114           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_FRAME_CONTROL, 0));
    9115           0 :         amdgpu_ring_write(ring, v | FRAME_CMD(start ? 0 : 1));
    9116           0 : }
    9117             : 
    9118           0 : static void gfx_v10_0_ring_emit_rreg(struct amdgpu_ring *ring, uint32_t reg,
    9119             :                                      uint32_t reg_val_offs)
    9120             : {
    9121           0 :         struct amdgpu_device *adev = ring->adev;
    9122             : 
    9123           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_COPY_DATA, 4));
    9124           0 :         amdgpu_ring_write(ring, 0 |     /* src: register*/
    9125             :                                 (5 << 8) |        /* dst: memory */
    9126             :                                 (1 << 20));       /* write confirm */
    9127           0 :         amdgpu_ring_write(ring, reg);
    9128           0 :         amdgpu_ring_write(ring, 0);
    9129           0 :         amdgpu_ring_write(ring, lower_32_bits(adev->wb.gpu_addr +
    9130             :                                 reg_val_offs * 4));
    9131           0 :         amdgpu_ring_write(ring, upper_32_bits(adev->wb.gpu_addr +
    9132             :                                 reg_val_offs * 4));
    9133           0 : }
    9134             : 
    9135           0 : static void gfx_v10_0_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg,
    9136             :                                    uint32_t val)
    9137             : {
    9138           0 :         uint32_t cmd = 0;
    9139             : 
    9140           0 :         switch (ring->funcs->type) {
    9141             :         case AMDGPU_RING_TYPE_GFX:
    9142             :                 cmd = WRITE_DATA_ENGINE_SEL(1) | WR_CONFIRM;
    9143             :                 break;
    9144             :         case AMDGPU_RING_TYPE_KIQ:
    9145           0 :                 cmd = (1 << 16); /* no inc addr */
    9146           0 :                 break;
    9147             :         default:
    9148           0 :                 cmd = WR_CONFIRM;
    9149           0 :                 break;
    9150             :         }
    9151           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
    9152           0 :         amdgpu_ring_write(ring, cmd);
    9153           0 :         amdgpu_ring_write(ring, reg);
    9154           0 :         amdgpu_ring_write(ring, 0);
    9155           0 :         amdgpu_ring_write(ring, val);
    9156           0 : }
    9157             : 
    9158           0 : static void gfx_v10_0_ring_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg,
    9159             :                                         uint32_t val, uint32_t mask)
    9160             : {
    9161           0 :         gfx_v10_0_wait_reg_mem(ring, 0, 0, 0, reg, 0, val, mask, 0x20);
    9162           0 : }
    9163             : 
    9164           0 : static void gfx_v10_0_ring_emit_reg_write_reg_wait(struct amdgpu_ring *ring,
    9165             :                                                    uint32_t reg0, uint32_t reg1,
    9166             :                                                    uint32_t ref, uint32_t mask)
    9167             : {
    9168           0 :         int usepfp = (ring->funcs->type == AMDGPU_RING_TYPE_GFX);
    9169           0 :         struct amdgpu_device *adev = ring->adev;
    9170           0 :         bool fw_version_ok = false;
    9171             : 
    9172           0 :         fw_version_ok = adev->gfx.cp_fw_write_wait;
    9173             : 
    9174           0 :         if (fw_version_ok)
    9175           0 :                 gfx_v10_0_wait_reg_mem(ring, usepfp, 0, 1, reg0, reg1,
    9176             :                                        ref, mask, 0x20);
    9177             :         else
    9178           0 :                 amdgpu_ring_emit_reg_write_reg_wait_helper(ring, reg0, reg1,
    9179             :                                                            ref, mask);
    9180           0 : }
    9181             : 
    9182           0 : static void gfx_v10_0_ring_soft_recovery(struct amdgpu_ring *ring,
    9183             :                                          unsigned vmid)
    9184             : {
    9185           0 :         struct amdgpu_device *adev = ring->adev;
    9186           0 :         uint32_t value = 0;
    9187             : 
    9188           0 :         value = REG_SET_FIELD(value, SQ_CMD, CMD, 0x03);
    9189           0 :         value = REG_SET_FIELD(value, SQ_CMD, MODE, 0x01);
    9190           0 :         value = REG_SET_FIELD(value, SQ_CMD, CHECK_VMID, 1);
    9191           0 :         value = REG_SET_FIELD(value, SQ_CMD, VM_ID, vmid);
    9192           0 :         WREG32_SOC15(GC, 0, mmSQ_CMD, value);
    9193           0 : }
    9194             : 
    9195             : static void
    9196           0 : gfx_v10_0_set_gfx_eop_interrupt_state(struct amdgpu_device *adev,
    9197             :                                       uint32_t me, uint32_t pipe,
    9198             :                                       enum amdgpu_interrupt_state state)
    9199             : {
    9200             :         uint32_t cp_int_cntl, cp_int_cntl_reg;
    9201             : 
    9202           0 :         if (!me) {
    9203           0 :                 switch (pipe) {
    9204             :                 case 0:
    9205           0 :                         cp_int_cntl_reg = SOC15_REG_OFFSET(GC, 0, mmCP_INT_CNTL_RING0);
    9206           0 :                         break;
    9207             :                 case 1:
    9208           0 :                         cp_int_cntl_reg = SOC15_REG_OFFSET(GC, 0, mmCP_INT_CNTL_RING1);
    9209           0 :                         break;
    9210             :                 default:
    9211           0 :                         DRM_DEBUG("invalid pipe %d\n", pipe);
    9212           0 :                         return;
    9213             :                 }
    9214             :         } else {
    9215           0 :                 DRM_DEBUG("invalid me %d\n", me);
    9216           0 :                 return;
    9217             :         }
    9218             : 
    9219           0 :         switch (state) {
    9220             :         case AMDGPU_IRQ_STATE_DISABLE:
    9221           0 :                 cp_int_cntl = RREG32_SOC15_IP(GC, cp_int_cntl_reg);
    9222           0 :                 cp_int_cntl = REG_SET_FIELD(cp_int_cntl, CP_INT_CNTL_RING0,
    9223             :                                             TIME_STAMP_INT_ENABLE, 0);
    9224           0 :                 WREG32_SOC15_IP(GC, cp_int_cntl_reg, cp_int_cntl);
    9225             :                 break;
    9226             :         case AMDGPU_IRQ_STATE_ENABLE:
    9227           0 :                 cp_int_cntl = RREG32_SOC15_IP(GC, cp_int_cntl_reg);
    9228           0 :                 cp_int_cntl = REG_SET_FIELD(cp_int_cntl, CP_INT_CNTL_RING0,
    9229             :                                             TIME_STAMP_INT_ENABLE, 1);
    9230           0 :                 WREG32_SOC15_IP(GC, cp_int_cntl_reg, cp_int_cntl);
    9231             :                 break;
    9232             :         default:
    9233             :                 break;
    9234             :         }
    9235             : }
    9236             : 
    9237           0 : static void gfx_v10_0_set_compute_eop_interrupt_state(struct amdgpu_device *adev,
    9238             :                                                      int me, int pipe,
    9239             :                                                      enum amdgpu_interrupt_state state)
    9240             : {
    9241             :         u32 mec_int_cntl, mec_int_cntl_reg;
    9242             : 
    9243             :         /*
    9244             :          * amdgpu controls only the first MEC. That's why this function only
    9245             :          * handles the setting of interrupts for this specific MEC. All other
    9246             :          * pipes' interrupts are set by amdkfd.
    9247             :          */
    9248             : 
    9249           0 :         if (me == 1) {
    9250           0 :                 switch (pipe) {
    9251             :                 case 0:
    9252           0 :                         mec_int_cntl_reg = SOC15_REG_OFFSET(GC, 0, mmCP_ME1_PIPE0_INT_CNTL);
    9253           0 :                         break;
    9254             :                 case 1:
    9255           0 :                         mec_int_cntl_reg = SOC15_REG_OFFSET(GC, 0, mmCP_ME1_PIPE1_INT_CNTL);
    9256           0 :                         break;
    9257             :                 case 2:
    9258           0 :                         mec_int_cntl_reg = SOC15_REG_OFFSET(GC, 0, mmCP_ME1_PIPE2_INT_CNTL);
    9259           0 :                         break;
    9260             :                 case 3:
    9261           0 :                         mec_int_cntl_reg = SOC15_REG_OFFSET(GC, 0, mmCP_ME1_PIPE3_INT_CNTL);
    9262           0 :                         break;
    9263             :                 default:
    9264           0 :                         DRM_DEBUG("invalid pipe %d\n", pipe);
    9265           0 :                         return;
    9266             :                 }
    9267             :         } else {
    9268           0 :                 DRM_DEBUG("invalid me %d\n", me);
    9269           0 :                 return;
    9270             :         }
    9271             : 
    9272           0 :         switch (state) {
    9273             :         case AMDGPU_IRQ_STATE_DISABLE:
    9274           0 :                 mec_int_cntl = RREG32_SOC15_IP(GC, mec_int_cntl_reg);
    9275           0 :                 mec_int_cntl = REG_SET_FIELD(mec_int_cntl, CP_ME1_PIPE0_INT_CNTL,
    9276             :                                              TIME_STAMP_INT_ENABLE, 0);
    9277           0 :                 WREG32_SOC15_IP(GC, mec_int_cntl_reg, mec_int_cntl);
    9278             :                 break;
    9279             :         case AMDGPU_IRQ_STATE_ENABLE:
    9280           0 :                 mec_int_cntl = RREG32_SOC15_IP(GC, mec_int_cntl_reg);
    9281           0 :                 mec_int_cntl = REG_SET_FIELD(mec_int_cntl, CP_ME1_PIPE0_INT_CNTL,
    9282             :                                              TIME_STAMP_INT_ENABLE, 1);
    9283           0 :                 WREG32_SOC15_IP(GC, mec_int_cntl_reg, mec_int_cntl);
    9284             :                 break;
    9285             :         default:
    9286             :                 break;
    9287             :         }
    9288             : }
    9289             : 
    9290           0 : static int gfx_v10_0_set_eop_interrupt_state(struct amdgpu_device *adev,
    9291             :                                             struct amdgpu_irq_src *src,
    9292             :                                             unsigned type,
    9293             :                                             enum amdgpu_interrupt_state state)
    9294             : {
    9295           0 :         switch (type) {
    9296             :         case AMDGPU_CP_IRQ_GFX_ME0_PIPE0_EOP:
    9297           0 :                 gfx_v10_0_set_gfx_eop_interrupt_state(adev, 0, 0, state);
    9298           0 :                 break;
    9299             :         case AMDGPU_CP_IRQ_GFX_ME0_PIPE1_EOP:
    9300           0 :                 gfx_v10_0_set_gfx_eop_interrupt_state(adev, 0, 1, state);
    9301           0 :                 break;
    9302             :         case AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP:
    9303           0 :                 gfx_v10_0_set_compute_eop_interrupt_state(adev, 1, 0, state);
    9304           0 :                 break;
    9305             :         case AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE1_EOP:
    9306           0 :                 gfx_v10_0_set_compute_eop_interrupt_state(adev, 1, 1, state);
    9307           0 :                 break;
    9308             :         case AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE2_EOP:
    9309           0 :                 gfx_v10_0_set_compute_eop_interrupt_state(adev, 1, 2, state);
    9310           0 :                 break;
    9311             :         case AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE3_EOP:
    9312           0 :                 gfx_v10_0_set_compute_eop_interrupt_state(adev, 1, 3, state);
    9313           0 :                 break;
    9314             :         case AMDGPU_CP_IRQ_COMPUTE_MEC2_PIPE0_EOP:
    9315             :                 gfx_v10_0_set_compute_eop_interrupt_state(adev, 2, 0, state);
    9316             :                 break;
    9317             :         case AMDGPU_CP_IRQ_COMPUTE_MEC2_PIPE1_EOP:
    9318             :                 gfx_v10_0_set_compute_eop_interrupt_state(adev, 2, 1, state);
    9319             :                 break;
    9320             :         case AMDGPU_CP_IRQ_COMPUTE_MEC2_PIPE2_EOP:
    9321             :                 gfx_v10_0_set_compute_eop_interrupt_state(adev, 2, 2, state);
    9322             :                 break;
    9323             :         case AMDGPU_CP_IRQ_COMPUTE_MEC2_PIPE3_EOP:
    9324             :                 gfx_v10_0_set_compute_eop_interrupt_state(adev, 2, 3, state);
    9325             :                 break;
    9326             :         default:
    9327             :                 break;
    9328             :         }
    9329           0 :         return 0;
    9330             : }
    9331             : 
    9332           0 : static int gfx_v10_0_eop_irq(struct amdgpu_device *adev,
    9333             :                              struct amdgpu_irq_src *source,
    9334             :                              struct amdgpu_iv_entry *entry)
    9335             : {
    9336             :         int i;
    9337             :         u8 me_id, pipe_id, queue_id;
    9338             :         struct amdgpu_ring *ring;
    9339           0 :         uint32_t mes_queue_id = entry->src_data[0];
    9340             : 
    9341           0 :         DRM_DEBUG("IH: CP EOP\n");
    9342             : 
    9343           0 :         if (adev->enable_mes && (mes_queue_id & AMDGPU_FENCE_MES_QUEUE_FLAG)) {
    9344             :                 struct amdgpu_mes_queue *queue;
    9345             : 
    9346           0 :                 mes_queue_id &= AMDGPU_FENCE_MES_QUEUE_ID_MASK;
    9347             : 
    9348           0 :                 spin_lock(&adev->mes.queue_id_lock);
    9349           0 :                 queue = idr_find(&adev->mes.queue_id_idr, mes_queue_id);
    9350           0 :                 if (queue) {
    9351           0 :                         DRM_DEBUG("process mes queue id = %d\n", mes_queue_id);
    9352           0 :                         amdgpu_fence_process(queue->ring);
    9353             :                 }
    9354           0 :                 spin_unlock(&adev->mes.queue_id_lock);
    9355             :         } else {
    9356           0 :                 me_id = (entry->ring_id & 0x0c) >> 2;
    9357           0 :                 pipe_id = (entry->ring_id & 0x03) >> 0;
    9358           0 :                 queue_id = (entry->ring_id & 0x70) >> 4;
    9359             : 
    9360           0 :                 switch (me_id) {
    9361             :                 case 0:
    9362           0 :                         if (pipe_id == 0)
    9363           0 :                                 amdgpu_fence_process(&adev->gfx.gfx_ring[0]);
    9364             :                         else
    9365           0 :                                 amdgpu_fence_process(&adev->gfx.gfx_ring[1]);
    9366             :                         break;
    9367             :                 case 1:
    9368             :                 case 2:
    9369           0 :                         for (i = 0; i < adev->gfx.num_compute_rings; i++) {
    9370           0 :                                 ring = &adev->gfx.compute_ring[i];
    9371             :                                 /* Per-queue interrupt is supported for MEC starting from VI.
    9372             :                                  * The interrupt can only be enabled/disabled per pipe instead
    9373             :                                  * of per queue.
    9374             :                                  */
    9375           0 :                                 if ((ring->me == me_id) &&
    9376           0 :                                     (ring->pipe == pipe_id) &&
    9377           0 :                                     (ring->queue == queue_id))
    9378           0 :                                         amdgpu_fence_process(ring);
    9379             :                         }
    9380             :                         break;
    9381             :                 }
    9382             :         }
    9383             : 
    9384           0 :         return 0;
    9385             : }
    9386             : 
    9387           0 : static int gfx_v10_0_set_priv_reg_fault_state(struct amdgpu_device *adev,
    9388             :                                               struct amdgpu_irq_src *source,
    9389             :                                               unsigned type,
    9390             :                                               enum amdgpu_interrupt_state state)
    9391             : {
    9392           0 :         switch (state) {
    9393             :         case AMDGPU_IRQ_STATE_DISABLE:
    9394             :         case AMDGPU_IRQ_STATE_ENABLE:
    9395           0 :                 WREG32_FIELD15(GC, 0, CP_INT_CNTL_RING0,
    9396             :                                PRIV_REG_INT_ENABLE,
    9397             :                                state == AMDGPU_IRQ_STATE_ENABLE ? 1 : 0);
    9398             :                 break;
    9399             :         default:
    9400             :                 break;
    9401             :         }
    9402             : 
    9403           0 :         return 0;
    9404             : }
    9405             : 
    9406           0 : static int gfx_v10_0_set_priv_inst_fault_state(struct amdgpu_device *adev,
    9407             :                                                struct amdgpu_irq_src *source,
    9408             :                                                unsigned type,
    9409             :                                                enum amdgpu_interrupt_state state)
    9410             : {
    9411           0 :         switch (state) {
    9412             :         case AMDGPU_IRQ_STATE_DISABLE:
    9413             :         case AMDGPU_IRQ_STATE_ENABLE:
    9414           0 :                 WREG32_FIELD15(GC, 0, CP_INT_CNTL_RING0,
    9415             :                                PRIV_INSTR_INT_ENABLE,
    9416             :                                state == AMDGPU_IRQ_STATE_ENABLE ? 1 : 0);
    9417             :                 break;
    9418             :         default:
    9419             :                 break;
    9420             :         }
    9421             : 
    9422           0 :         return 0;
    9423             : }
    9424             : 
    9425           0 : static void gfx_v10_0_handle_priv_fault(struct amdgpu_device *adev,
    9426             :                                         struct amdgpu_iv_entry *entry)
    9427             : {
    9428             :         u8 me_id, pipe_id, queue_id;
    9429             :         struct amdgpu_ring *ring;
    9430             :         int i;
    9431             : 
    9432           0 :         me_id = (entry->ring_id & 0x0c) >> 2;
    9433           0 :         pipe_id = (entry->ring_id & 0x03) >> 0;
    9434           0 :         queue_id = (entry->ring_id & 0x70) >> 4;
    9435             : 
    9436           0 :         switch (me_id) {
    9437             :         case 0:
    9438           0 :                 for (i = 0; i < adev->gfx.num_gfx_rings; i++) {
    9439           0 :                         ring = &adev->gfx.gfx_ring[i];
    9440             :                         /* we only enabled 1 gfx queue per pipe for now */
    9441           0 :                         if (ring->me == me_id && ring->pipe == pipe_id)
    9442           0 :                                 drm_sched_fault(&ring->sched);
    9443             :                 }
    9444             :                 break;
    9445             :         case 1:
    9446             :         case 2:
    9447           0 :                 for (i = 0; i < adev->gfx.num_compute_rings; i++) {
    9448           0 :                         ring = &adev->gfx.compute_ring[i];
    9449           0 :                         if (ring->me == me_id && ring->pipe == pipe_id &&
    9450           0 :                             ring->queue == queue_id)
    9451           0 :                                 drm_sched_fault(&ring->sched);
    9452             :                 }
    9453             :                 break;
    9454             :         default:
    9455           0 :                 BUG();
    9456             :         }
    9457           0 : }
    9458             : 
    9459           0 : static int gfx_v10_0_priv_reg_irq(struct amdgpu_device *adev,
    9460             :                                   struct amdgpu_irq_src *source,
    9461             :                                   struct amdgpu_iv_entry *entry)
    9462             : {
    9463           0 :         DRM_ERROR("Illegal register access in command stream\n");
    9464           0 :         gfx_v10_0_handle_priv_fault(adev, entry);
    9465           0 :         return 0;
    9466             : }
    9467             : 
    9468           0 : static int gfx_v10_0_priv_inst_irq(struct amdgpu_device *adev,
    9469             :                                    struct amdgpu_irq_src *source,
    9470             :                                    struct amdgpu_iv_entry *entry)
    9471             : {
    9472           0 :         DRM_ERROR("Illegal instruction in command stream\n");
    9473           0 :         gfx_v10_0_handle_priv_fault(adev, entry);
    9474           0 :         return 0;
    9475             : }
    9476             : 
    9477           0 : static int gfx_v10_0_kiq_set_interrupt_state(struct amdgpu_device *adev,
    9478             :                                              struct amdgpu_irq_src *src,
    9479             :                                              unsigned int type,
    9480             :                                              enum amdgpu_interrupt_state state)
    9481             : {
    9482             :         uint32_t tmp, target;
    9483           0 :         struct amdgpu_ring *ring = &(adev->gfx.kiq.ring);
    9484             : 
    9485           0 :         if (ring->me == 1)
    9486           0 :                 target = SOC15_REG_OFFSET(GC, 0, mmCP_ME1_PIPE0_INT_CNTL);
    9487             :         else
    9488           0 :                 target = SOC15_REG_OFFSET(GC, 0, mmCP_ME2_PIPE0_INT_CNTL);
    9489           0 :         target += ring->pipe;
    9490             : 
    9491           0 :         switch (type) {
    9492             :         case AMDGPU_CP_KIQ_IRQ_DRIVER0:
    9493           0 :                 if (state == AMDGPU_IRQ_STATE_DISABLE) {
    9494           0 :                         tmp = RREG32_SOC15(GC, 0, mmCPC_INT_CNTL);
    9495           0 :                         tmp = REG_SET_FIELD(tmp, CPC_INT_CNTL,
    9496             :                                             GENERIC2_INT_ENABLE, 0);
    9497           0 :                         WREG32_SOC15(GC, 0, mmCPC_INT_CNTL, tmp);
    9498             : 
    9499           0 :                         tmp = RREG32_SOC15_IP(GC, target);
    9500           0 :                         tmp = REG_SET_FIELD(tmp, CP_ME2_PIPE0_INT_CNTL,
    9501             :                                             GENERIC2_INT_ENABLE, 0);
    9502           0 :                         WREG32_SOC15_IP(GC, target, tmp);
    9503             :                 } else {
    9504           0 :                         tmp = RREG32_SOC15(GC, 0, mmCPC_INT_CNTL);
    9505           0 :                         tmp = REG_SET_FIELD(tmp, CPC_INT_CNTL,
    9506             :                                             GENERIC2_INT_ENABLE, 1);
    9507           0 :                         WREG32_SOC15(GC, 0, mmCPC_INT_CNTL, tmp);
    9508             : 
    9509           0 :                         tmp = RREG32_SOC15_IP(GC, target);
    9510           0 :                         tmp = REG_SET_FIELD(tmp, CP_ME2_PIPE0_INT_CNTL,
    9511             :                                             GENERIC2_INT_ENABLE, 1);
    9512           0 :                         WREG32_SOC15_IP(GC, target, tmp);
    9513             :                 }
    9514             :                 break;
    9515             :         default:
    9516           0 :                 BUG(); /* kiq only support GENERIC2_INT now */
    9517             :                 break;
    9518             :         }
    9519           0 :         return 0;
    9520             : }
    9521             : 
    9522           0 : static int gfx_v10_0_kiq_irq(struct amdgpu_device *adev,
    9523             :                              struct amdgpu_irq_src *source,
    9524             :                              struct amdgpu_iv_entry *entry)
    9525             : {
    9526             :         u8 me_id, pipe_id, queue_id;
    9527           0 :         struct amdgpu_ring *ring = &(adev->gfx.kiq.ring);
    9528             : 
    9529           0 :         me_id = (entry->ring_id & 0x0c) >> 2;
    9530           0 :         pipe_id = (entry->ring_id & 0x03) >> 0;
    9531           0 :         queue_id = (entry->ring_id & 0x70) >> 4;
    9532           0 :         DRM_DEBUG("IH: CPC GENERIC2_INT, me:%d, pipe:%d, queue:%d\n",
    9533             :                    me_id, pipe_id, queue_id);
    9534             : 
    9535           0 :         amdgpu_fence_process(ring);
    9536           0 :         return 0;
    9537             : }
    9538             : 
    9539           0 : static void gfx_v10_0_emit_mem_sync(struct amdgpu_ring *ring)
    9540             : {
    9541           0 :         const unsigned int gcr_cntl =
    9542             :                         PACKET3_ACQUIRE_MEM_GCR_CNTL_GL2_INV(1) |
    9543             :                         PACKET3_ACQUIRE_MEM_GCR_CNTL_GL2_WB(1) |
    9544             :                         PACKET3_ACQUIRE_MEM_GCR_CNTL_GLM_INV(1) |
    9545             :                         PACKET3_ACQUIRE_MEM_GCR_CNTL_GLM_WB(1) |
    9546             :                         PACKET3_ACQUIRE_MEM_GCR_CNTL_GL1_INV(1) |
    9547             :                         PACKET3_ACQUIRE_MEM_GCR_CNTL_GLV_INV(1) |
    9548             :                         PACKET3_ACQUIRE_MEM_GCR_CNTL_GLK_INV(1) |
    9549             :                         PACKET3_ACQUIRE_MEM_GCR_CNTL_GLI_INV(1);
    9550             : 
    9551             :         /* ACQUIRE_MEM - make one or more surfaces valid for use by the subsequent operations */
    9552           0 :         amdgpu_ring_write(ring, PACKET3(PACKET3_ACQUIRE_MEM, 6));
    9553           0 :         amdgpu_ring_write(ring, 0); /* CP_COHER_CNTL */
    9554           0 :         amdgpu_ring_write(ring, 0xffffffff);  /* CP_COHER_SIZE */
    9555           0 :         amdgpu_ring_write(ring, 0xffffff);  /* CP_COHER_SIZE_HI */
    9556           0 :         amdgpu_ring_write(ring, 0); /* CP_COHER_BASE */
    9557           0 :         amdgpu_ring_write(ring, 0);  /* CP_COHER_BASE_HI */
    9558           0 :         amdgpu_ring_write(ring, 0x0000000A); /* POLL_INTERVAL */
    9559           0 :         amdgpu_ring_write(ring, gcr_cntl); /* GCR_CNTL */
    9560           0 : }
    9561             : 
    9562             : static const struct amd_ip_funcs gfx_v10_0_ip_funcs = {
    9563             :         .name = "gfx_v10_0",
    9564             :         .early_init = gfx_v10_0_early_init,
    9565             :         .late_init = gfx_v10_0_late_init,
    9566             :         .sw_init = gfx_v10_0_sw_init,
    9567             :         .sw_fini = gfx_v10_0_sw_fini,
    9568             :         .hw_init = gfx_v10_0_hw_init,
    9569             :         .hw_fini = gfx_v10_0_hw_fini,
    9570             :         .suspend = gfx_v10_0_suspend,
    9571             :         .resume = gfx_v10_0_resume,
    9572             :         .is_idle = gfx_v10_0_is_idle,
    9573             :         .wait_for_idle = gfx_v10_0_wait_for_idle,
    9574             :         .soft_reset = gfx_v10_0_soft_reset,
    9575             :         .set_clockgating_state = gfx_v10_0_set_clockgating_state,
    9576             :         .set_powergating_state = gfx_v10_0_set_powergating_state,
    9577             :         .get_clockgating_state = gfx_v10_0_get_clockgating_state,
    9578             : };
    9579             : 
    9580             : static const struct amdgpu_ring_funcs gfx_v10_0_ring_funcs_gfx = {
    9581             :         .type = AMDGPU_RING_TYPE_GFX,
    9582             :         .align_mask = 0xff,
    9583             :         .nop = PACKET3(PACKET3_NOP, 0x3FFF),
    9584             :         .support_64bit_ptrs = true,
    9585             :         .secure_submission_supported = true,
    9586             :         .vmhub = AMDGPU_GFXHUB_0,
    9587             :         .get_rptr = gfx_v10_0_ring_get_rptr_gfx,
    9588             :         .get_wptr = gfx_v10_0_ring_get_wptr_gfx,
    9589             :         .set_wptr = gfx_v10_0_ring_set_wptr_gfx,
    9590             :         .emit_frame_size = /* totally 242 maximum if 16 IBs */
    9591             :                 5 + /* COND_EXEC */
    9592             :                 7 + /* PIPELINE_SYNC */
    9593             :                 SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 +
    9594             :                 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
    9595             :                 2 + /* VM_FLUSH */
    9596             :                 8 + /* FENCE for VM_FLUSH */
    9597             :                 20 + /* GDS switch */
    9598             :                 4 + /* double SWITCH_BUFFER,
    9599             :                      * the first COND_EXEC jump to the place
    9600             :                      * just prior to this double SWITCH_BUFFER
    9601             :                      */
    9602             :                 5 + /* COND_EXEC */
    9603             :                 7 + /* HDP_flush */
    9604             :                 4 + /* VGT_flush */
    9605             :                 14 + /* CE_META */
    9606             :                 31 + /* DE_META */
    9607             :                 3 + /* CNTX_CTRL */
    9608             :                 5 + /* HDP_INVL */
    9609             :                 8 + 8 + /* FENCE x2 */
    9610             :                 2 + /* SWITCH_BUFFER */
    9611             :                 8, /* gfx_v10_0_emit_mem_sync */
    9612             :         .emit_ib_size = 4, /* gfx_v10_0_ring_emit_ib_gfx */
    9613             :         .emit_ib = gfx_v10_0_ring_emit_ib_gfx,
    9614             :         .emit_fence = gfx_v10_0_ring_emit_fence,
    9615             :         .emit_pipeline_sync = gfx_v10_0_ring_emit_pipeline_sync,
    9616             :         .emit_vm_flush = gfx_v10_0_ring_emit_vm_flush,
    9617             :         .emit_gds_switch = gfx_v10_0_ring_emit_gds_switch,
    9618             :         .emit_hdp_flush = gfx_v10_0_ring_emit_hdp_flush,
    9619             :         .test_ring = gfx_v10_0_ring_test_ring,
    9620             :         .test_ib = gfx_v10_0_ring_test_ib,
    9621             :         .insert_nop = amdgpu_ring_insert_nop,
    9622             :         .pad_ib = amdgpu_ring_generic_pad_ib,
    9623             :         .emit_switch_buffer = gfx_v10_0_ring_emit_sb,
    9624             :         .emit_cntxcntl = gfx_v10_0_ring_emit_cntxcntl,
    9625             :         .init_cond_exec = gfx_v10_0_ring_emit_init_cond_exec,
    9626             :         .patch_cond_exec = gfx_v10_0_ring_emit_patch_cond_exec,
    9627             :         .preempt_ib = gfx_v10_0_ring_preempt_ib,
    9628             :         .emit_frame_cntl = gfx_v10_0_ring_emit_frame_cntl,
    9629             :         .emit_wreg = gfx_v10_0_ring_emit_wreg,
    9630             :         .emit_reg_wait = gfx_v10_0_ring_emit_reg_wait,
    9631             :         .emit_reg_write_reg_wait = gfx_v10_0_ring_emit_reg_write_reg_wait,
    9632             :         .soft_recovery = gfx_v10_0_ring_soft_recovery,
    9633             :         .emit_mem_sync = gfx_v10_0_emit_mem_sync,
    9634             : };
    9635             : 
    9636             : static const struct amdgpu_ring_funcs gfx_v10_0_ring_funcs_compute = {
    9637             :         .type = AMDGPU_RING_TYPE_COMPUTE,
    9638             :         .align_mask = 0xff,
    9639             :         .nop = PACKET3(PACKET3_NOP, 0x3FFF),
    9640             :         .support_64bit_ptrs = true,
    9641             :         .vmhub = AMDGPU_GFXHUB_0,
    9642             :         .get_rptr = gfx_v10_0_ring_get_rptr_compute,
    9643             :         .get_wptr = gfx_v10_0_ring_get_wptr_compute,
    9644             :         .set_wptr = gfx_v10_0_ring_set_wptr_compute,
    9645             :         .emit_frame_size =
    9646             :                 20 + /* gfx_v10_0_ring_emit_gds_switch */
    9647             :                 7 + /* gfx_v10_0_ring_emit_hdp_flush */
    9648             :                 5 + /* hdp invalidate */
    9649             :                 7 + /* gfx_v10_0_ring_emit_pipeline_sync */
    9650             :                 SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 +
    9651             :                 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
    9652             :                 2 + /* gfx_v10_0_ring_emit_vm_flush */
    9653             :                 8 + 8 + 8 + /* gfx_v10_0_ring_emit_fence x3 for user fence, vm fence */
    9654             :                 8, /* gfx_v10_0_emit_mem_sync */
    9655             :         .emit_ib_size = 7, /* gfx_v10_0_ring_emit_ib_compute */
    9656             :         .emit_ib = gfx_v10_0_ring_emit_ib_compute,
    9657             :         .emit_fence = gfx_v10_0_ring_emit_fence,
    9658             :         .emit_pipeline_sync = gfx_v10_0_ring_emit_pipeline_sync,
    9659             :         .emit_vm_flush = gfx_v10_0_ring_emit_vm_flush,
    9660             :         .emit_gds_switch = gfx_v10_0_ring_emit_gds_switch,
    9661             :         .emit_hdp_flush = gfx_v10_0_ring_emit_hdp_flush,
    9662             :         .test_ring = gfx_v10_0_ring_test_ring,
    9663             :         .test_ib = gfx_v10_0_ring_test_ib,
    9664             :         .insert_nop = amdgpu_ring_insert_nop,
    9665             :         .pad_ib = amdgpu_ring_generic_pad_ib,
    9666             :         .emit_wreg = gfx_v10_0_ring_emit_wreg,
    9667             :         .emit_reg_wait = gfx_v10_0_ring_emit_reg_wait,
    9668             :         .emit_reg_write_reg_wait = gfx_v10_0_ring_emit_reg_write_reg_wait,
    9669             :         .emit_mem_sync = gfx_v10_0_emit_mem_sync,
    9670             : };
    9671             : 
    9672             : static const struct amdgpu_ring_funcs gfx_v10_0_ring_funcs_kiq = {
    9673             :         .type = AMDGPU_RING_TYPE_KIQ,
    9674             :         .align_mask = 0xff,
    9675             :         .nop = PACKET3(PACKET3_NOP, 0x3FFF),
    9676             :         .support_64bit_ptrs = true,
    9677             :         .vmhub = AMDGPU_GFXHUB_0,
    9678             :         .get_rptr = gfx_v10_0_ring_get_rptr_compute,
    9679             :         .get_wptr = gfx_v10_0_ring_get_wptr_compute,
    9680             :         .set_wptr = gfx_v10_0_ring_set_wptr_compute,
    9681             :         .emit_frame_size =
    9682             :                 20 + /* gfx_v10_0_ring_emit_gds_switch */
    9683             :                 7 + /* gfx_v10_0_ring_emit_hdp_flush */
    9684             :                 5 + /*hdp invalidate */
    9685             :                 7 + /* gfx_v10_0_ring_emit_pipeline_sync */
    9686             :                 SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 +
    9687             :                 SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
    9688             :                 2 + /* gfx_v10_0_ring_emit_vm_flush */
    9689             :                 8 + 8 + 8, /* gfx_v10_0_ring_emit_fence_kiq x3 for user fence, vm fence */
    9690             :         .emit_ib_size = 7, /* gfx_v10_0_ring_emit_ib_compute */
    9691             :         .emit_ib = gfx_v10_0_ring_emit_ib_compute,
    9692             :         .emit_fence = gfx_v10_0_ring_emit_fence_kiq,
    9693             :         .test_ring = gfx_v10_0_ring_test_ring,
    9694             :         .test_ib = gfx_v10_0_ring_test_ib,
    9695             :         .insert_nop = amdgpu_ring_insert_nop,
    9696             :         .pad_ib = amdgpu_ring_generic_pad_ib,
    9697             :         .emit_rreg = gfx_v10_0_ring_emit_rreg,
    9698             :         .emit_wreg = gfx_v10_0_ring_emit_wreg,
    9699             :         .emit_reg_wait = gfx_v10_0_ring_emit_reg_wait,
    9700             :         .emit_reg_write_reg_wait = gfx_v10_0_ring_emit_reg_write_reg_wait,
    9701             : };
    9702             : 
    9703             : static void gfx_v10_0_set_ring_funcs(struct amdgpu_device *adev)
    9704             : {
    9705             :         int i;
    9706             : 
    9707           0 :         adev->gfx.kiq.ring.funcs = &gfx_v10_0_ring_funcs_kiq;
    9708             : 
    9709           0 :         for (i = 0; i < adev->gfx.num_gfx_rings; i++)
    9710           0 :                 adev->gfx.gfx_ring[i].funcs = &gfx_v10_0_ring_funcs_gfx;
    9711             : 
    9712           0 :         for (i = 0; i < adev->gfx.num_compute_rings; i++)
    9713           0 :                 adev->gfx.compute_ring[i].funcs = &gfx_v10_0_ring_funcs_compute;
    9714             : }
    9715             : 
    9716             : static const struct amdgpu_irq_src_funcs gfx_v10_0_eop_irq_funcs = {
    9717             :         .set = gfx_v10_0_set_eop_interrupt_state,
    9718             :         .process = gfx_v10_0_eop_irq,
    9719             : };
    9720             : 
    9721             : static const struct amdgpu_irq_src_funcs gfx_v10_0_priv_reg_irq_funcs = {
    9722             :         .set = gfx_v10_0_set_priv_reg_fault_state,
    9723             :         .process = gfx_v10_0_priv_reg_irq,
    9724             : };
    9725             : 
    9726             : static const struct amdgpu_irq_src_funcs gfx_v10_0_priv_inst_irq_funcs = {
    9727             :         .set = gfx_v10_0_set_priv_inst_fault_state,
    9728             :         .process = gfx_v10_0_priv_inst_irq,
    9729             : };
    9730             : 
    9731             : static const struct amdgpu_irq_src_funcs gfx_v10_0_kiq_irq_funcs = {
    9732             :         .set = gfx_v10_0_kiq_set_interrupt_state,
    9733             :         .process = gfx_v10_0_kiq_irq,
    9734             : };
    9735             : 
    9736             : static void gfx_v10_0_set_irq_funcs(struct amdgpu_device *adev)
    9737             : {
    9738           0 :         adev->gfx.eop_irq.num_types = AMDGPU_CP_IRQ_LAST;
    9739           0 :         adev->gfx.eop_irq.funcs = &gfx_v10_0_eop_irq_funcs;
    9740             : 
    9741           0 :         adev->gfx.kiq.irq.num_types = AMDGPU_CP_KIQ_IRQ_LAST;
    9742           0 :         adev->gfx.kiq.irq.funcs = &gfx_v10_0_kiq_irq_funcs;
    9743             : 
    9744           0 :         adev->gfx.priv_reg_irq.num_types = 1;
    9745           0 :         adev->gfx.priv_reg_irq.funcs = &gfx_v10_0_priv_reg_irq_funcs;
    9746             : 
    9747           0 :         adev->gfx.priv_inst_irq.num_types = 1;
    9748           0 :         adev->gfx.priv_inst_irq.funcs = &gfx_v10_0_priv_inst_irq_funcs;
    9749             : }
    9750             : 
    9751             : static void gfx_v10_0_set_rlc_funcs(struct amdgpu_device *adev)
    9752             : {
    9753           0 :         switch (adev->ip_versions[GC_HWIP][0]) {
    9754             :         case IP_VERSION(10, 1, 10):
    9755             :         case IP_VERSION(10, 1, 1):
    9756             :         case IP_VERSION(10, 1, 3):
    9757             :         case IP_VERSION(10, 1, 4):
    9758             :         case IP_VERSION(10, 3, 2):
    9759             :         case IP_VERSION(10, 3, 1):
    9760             :         case IP_VERSION(10, 3, 4):
    9761             :         case IP_VERSION(10, 3, 5):
    9762             :         case IP_VERSION(10, 3, 6):
    9763             :         case IP_VERSION(10, 3, 3):
    9764             :         case IP_VERSION(10, 3, 7):
    9765           0 :                 adev->gfx.rlc.funcs = &gfx_v10_0_rlc_funcs;
    9766             :                 break;
    9767             :         case IP_VERSION(10, 1, 2):
    9768             :         case IP_VERSION(10, 3, 0):
    9769           0 :                 adev->gfx.rlc.funcs = &gfx_v10_0_rlc_funcs_sriov;
    9770             :                 break;
    9771             :         default:
    9772             :                 break;
    9773             :         }
    9774             : }
    9775             : 
    9776             : static void gfx_v10_0_set_gds_init(struct amdgpu_device *adev)
    9777             : {
    9778           0 :         unsigned total_cu = adev->gfx.config.max_cu_per_sh *
    9779           0 :                             adev->gfx.config.max_sh_per_se *
    9780           0 :                             adev->gfx.config.max_shader_engines;
    9781             : 
    9782           0 :         adev->gds.gds_size = 0x10000;
    9783           0 :         adev->gds.gds_compute_max_wave_id = total_cu * 32 - 1;
    9784           0 :         adev->gds.gws_size = 64;
    9785           0 :         adev->gds.oa_size = 16;
    9786             : }
    9787             : 
    9788             : static void gfx_v10_0_set_mqd_funcs(struct amdgpu_device *adev)
    9789             : {
    9790             :         /* set gfx eng mqd */
    9791           0 :         adev->mqds[AMDGPU_HW_IP_GFX].mqd_size =
    9792             :                 sizeof(struct v10_gfx_mqd);
    9793           0 :         adev->mqds[AMDGPU_HW_IP_GFX].init_mqd =
    9794             :                 gfx_v10_0_gfx_mqd_init;
    9795             :         /* set compute eng mqd */
    9796           0 :         adev->mqds[AMDGPU_HW_IP_COMPUTE].mqd_size =
    9797             :                 sizeof(struct v10_compute_mqd);
    9798           0 :         adev->mqds[AMDGPU_HW_IP_COMPUTE].init_mqd =
    9799             :                 gfx_v10_0_compute_mqd_init;
    9800             : }
    9801             : 
    9802           0 : static void gfx_v10_0_set_user_wgp_inactive_bitmap_per_sh(struct amdgpu_device *adev,
    9803             :                                                           u32 bitmap)
    9804             : {
    9805             :         u32 data;
    9806             : 
    9807           0 :         if (!bitmap)
    9808             :                 return;
    9809             : 
    9810           0 :         data = bitmap << GC_USER_SHADER_ARRAY_CONFIG__INACTIVE_WGPS__SHIFT;
    9811           0 :         data &= GC_USER_SHADER_ARRAY_CONFIG__INACTIVE_WGPS_MASK;
    9812             : 
    9813           0 :         WREG32_SOC15(GC, 0, mmGC_USER_SHADER_ARRAY_CONFIG, data);
    9814             : }
    9815             : 
    9816           0 : static u32 gfx_v10_0_get_wgp_active_bitmap_per_sh(struct amdgpu_device *adev)
    9817             : {
    9818           0 :         u32 disabled_mask =
    9819           0 :                 ~amdgpu_gfx_create_bitmask(adev->gfx.config.max_cu_per_sh >> 1);
    9820           0 :         u32 efuse_setting = 0;
    9821           0 :         u32 vbios_setting = 0;
    9822             : 
    9823           0 :         efuse_setting = RREG32_SOC15(GC, 0, mmCC_GC_SHADER_ARRAY_CONFIG);
    9824           0 :         efuse_setting &= CC_GC_SHADER_ARRAY_CONFIG__INACTIVE_WGPS_MASK;
    9825           0 :         efuse_setting >>= CC_GC_SHADER_ARRAY_CONFIG__INACTIVE_WGPS__SHIFT;
    9826             : 
    9827           0 :         vbios_setting = RREG32_SOC15(GC, 0, mmGC_USER_SHADER_ARRAY_CONFIG);
    9828           0 :         vbios_setting &= GC_USER_SHADER_ARRAY_CONFIG__INACTIVE_WGPS_MASK;
    9829           0 :         vbios_setting >>= GC_USER_SHADER_ARRAY_CONFIG__INACTIVE_WGPS__SHIFT;
    9830             : 
    9831           0 :         disabled_mask |= efuse_setting | vbios_setting;
    9832             : 
    9833           0 :         return (~disabled_mask);
    9834             : }
    9835             : 
    9836           0 : static u32 gfx_v10_0_get_cu_active_bitmap_per_sh(struct amdgpu_device *adev)
    9837             : {
    9838             :         u32 wgp_idx, wgp_active_bitmap;
    9839             :         u32 cu_bitmap_per_wgp, cu_active_bitmap;
    9840             : 
    9841           0 :         wgp_active_bitmap = gfx_v10_0_get_wgp_active_bitmap_per_sh(adev);
    9842           0 :         cu_active_bitmap = 0;
    9843             : 
    9844           0 :         for (wgp_idx = 0; wgp_idx < 16; wgp_idx++) {
    9845             :                 /* if there is one WGP enabled, it means 2 CUs will be enabled */
    9846           0 :                 cu_bitmap_per_wgp = 3 << (2 * wgp_idx);
    9847           0 :                 if (wgp_active_bitmap & (1 << wgp_idx))
    9848           0 :                         cu_active_bitmap |= cu_bitmap_per_wgp;
    9849             :         }
    9850             : 
    9851           0 :         return cu_active_bitmap;
    9852             : }
    9853             : 
    9854           0 : static int gfx_v10_0_get_cu_info(struct amdgpu_device *adev,
    9855             :                                  struct amdgpu_cu_info *cu_info)
    9856             : {
    9857           0 :         int i, j, k, counter, active_cu_number = 0;
    9858           0 :         u32 mask, bitmap, ao_bitmap, ao_cu_mask = 0;
    9859             :         unsigned disable_masks[4 * 2];
    9860             : 
    9861           0 :         if (!adev || !cu_info)
    9862             :                 return -EINVAL;
    9863             : 
    9864           0 :         amdgpu_gfx_parse_disable_cu(disable_masks, 4, 2);
    9865             : 
    9866           0 :         mutex_lock(&adev->grbm_idx_mutex);
    9867           0 :         for (i = 0; i < adev->gfx.config.max_shader_engines; i++) {
    9868           0 :                 for (j = 0; j < adev->gfx.config.max_sh_per_se; j++) {
    9869           0 :                         bitmap = i * adev->gfx.config.max_sh_per_se + j;
    9870           0 :                         if (((adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 0)) ||
    9871           0 :                              (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 3)) ||
    9872           0 :                              (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 6)) ||
    9873           0 :                              (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 7))) &&
    9874           0 :                             ((gfx_v10_3_get_disabled_sa(adev) >> bitmap) & 1))
    9875           0 :                                 continue;
    9876           0 :                         mask = 1;
    9877           0 :                         ao_bitmap = 0;
    9878           0 :                         counter = 0;
    9879           0 :                         gfx_v10_0_select_se_sh(adev, i, j, 0xffffffff);
    9880           0 :                         if (i < 4 && j < 2)
    9881           0 :                                 gfx_v10_0_set_user_wgp_inactive_bitmap_per_sh(
    9882           0 :                                         adev, disable_masks[i * 2 + j]);
    9883           0 :                         bitmap = gfx_v10_0_get_cu_active_bitmap_per_sh(adev);
    9884           0 :                         cu_info->bitmap[i][j] = bitmap;
    9885             : 
    9886           0 :                         for (k = 0; k < adev->gfx.config.max_cu_per_sh; k++) {
    9887           0 :                                 if (bitmap & mask) {
    9888           0 :                                         if (counter < adev->gfx.config.max_cu_per_sh)
    9889           0 :                                                 ao_bitmap |= mask;
    9890           0 :                                         counter++;
    9891             :                                 }
    9892           0 :                                 mask <<= 1;
    9893             :                         }
    9894           0 :                         active_cu_number += counter;
    9895           0 :                         if (i < 2 && j < 2)
    9896           0 :                                 ao_cu_mask |= (ao_bitmap << (i * 16 + j * 8));
    9897           0 :                         cu_info->ao_cu_bitmap[i][j] = ao_bitmap;
    9898             :                 }
    9899             :         }
    9900           0 :         gfx_v10_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff);
    9901           0 :         mutex_unlock(&adev->grbm_idx_mutex);
    9902             : 
    9903           0 :         cu_info->number = active_cu_number;
    9904           0 :         cu_info->ao_cu_mask = ao_cu_mask;
    9905           0 :         cu_info->simd_per_cu = NUM_SIMD_PER_CU;
    9906             : 
    9907           0 :         return 0;
    9908             : }
    9909             : 
    9910           0 : static u32 gfx_v10_3_get_disabled_sa(struct amdgpu_device *adev)
    9911             : {
    9912             :         uint32_t efuse_setting, vbios_setting, disabled_sa, max_sa_mask;
    9913             : 
    9914           0 :         efuse_setting = RREG32_SOC15(GC, 0, mmCC_GC_SA_UNIT_DISABLE);
    9915           0 :         efuse_setting &= CC_GC_SA_UNIT_DISABLE__SA_DISABLE_MASK;
    9916           0 :         efuse_setting >>= CC_GC_SA_UNIT_DISABLE__SA_DISABLE__SHIFT;
    9917             : 
    9918           0 :         vbios_setting = RREG32_SOC15(GC, 0, mmGC_USER_SA_UNIT_DISABLE);
    9919           0 :         vbios_setting &= GC_USER_SA_UNIT_DISABLE__SA_DISABLE_MASK;
    9920           0 :         vbios_setting >>= GC_USER_SA_UNIT_DISABLE__SA_DISABLE__SHIFT;
    9921             : 
    9922           0 :         max_sa_mask = amdgpu_gfx_create_bitmask(adev->gfx.config.max_sh_per_se *
    9923           0 :                                                 adev->gfx.config.max_shader_engines);
    9924           0 :         disabled_sa = efuse_setting | vbios_setting;
    9925           0 :         disabled_sa &= max_sa_mask;
    9926             : 
    9927           0 :         return disabled_sa;
    9928             : }
    9929             : 
    9930           0 : static void gfx_v10_3_program_pbb_mode(struct amdgpu_device *adev)
    9931             : {
    9932             :         uint32_t max_sa_per_se, max_sa_per_se_mask, max_shader_engines;
    9933             :         uint32_t disabled_sa_mask, se_index, disabled_sa_per_se;
    9934             : 
    9935           0 :         disabled_sa_mask = gfx_v10_3_get_disabled_sa(adev);
    9936             : 
    9937           0 :         max_sa_per_se = adev->gfx.config.max_sh_per_se;
    9938           0 :         max_sa_per_se_mask = (1 << max_sa_per_se) - 1;
    9939           0 :         max_shader_engines = adev->gfx.config.max_shader_engines;
    9940             : 
    9941           0 :         for (se_index = 0; max_shader_engines > se_index; se_index++) {
    9942           0 :                 disabled_sa_per_se = disabled_sa_mask >> (se_index * max_sa_per_se);
    9943           0 :                 disabled_sa_per_se &= max_sa_per_se_mask;
    9944           0 :                 if (disabled_sa_per_se == max_sa_per_se_mask) {
    9945           0 :                         WREG32_FIELD15(GC, 0, PA_SC_ENHANCE_3, FORCE_PBB_WORKLOAD_MODE_TO_ZERO, 1);
    9946             :                         break;
    9947             :                 }
    9948             :         }
    9949           0 : }
    9950             : 
    9951           0 : static void gfx_v10_3_set_power_brake_sequence(struct amdgpu_device *adev)
    9952             : {
    9953           0 :         WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX,
    9954             :                      (0x1 << GRBM_GFX_INDEX__SA_BROADCAST_WRITES__SHIFT) |
    9955             :                      (0x1 << GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES__SHIFT) |
    9956             :                      (0x1 << GRBM_GFX_INDEX__SE_BROADCAST_WRITES__SHIFT));
    9957             : 
    9958           0 :         WREG32_SOC15(GC, 0, mmGC_CAC_IND_INDEX, ixPWRBRK_STALL_PATTERN_CTRL);
    9959           0 :         WREG32_SOC15(GC, 0, mmGC_CAC_IND_DATA,
    9960             :                      (0x1 << PWRBRK_STALL_PATTERN_CTRL__PWRBRK_STEP_INTERVAL__SHIFT) |
    9961             :                      (0x12 << PWRBRK_STALL_PATTERN_CTRL__PWRBRK_BEGIN_STEP__SHIFT) |
    9962             :                      (0x13 << PWRBRK_STALL_PATTERN_CTRL__PWRBRK_END_STEP__SHIFT) |
    9963             :                      (0xf << PWRBRK_STALL_PATTERN_CTRL__PWRBRK_THROTTLE_PATTERN_BIT_NUMS__SHIFT));
    9964             : 
    9965           0 :         WREG32_SOC15(GC, 0, mmGC_THROTTLE_CTRL_Sienna_Cichlid,
    9966             :                      (0x1 << GC_THROTTLE_CTRL__PWRBRK_STALL_EN__SHIFT) |
    9967             :                      (0x1 << GC_THROTTLE_CTRL__PATTERN_MODE__SHIFT) |
    9968             :                      (0x5 << GC_THROTTLE_CTRL__RELEASE_STEP_INTERVAL__SHIFT));
    9969             : 
    9970           0 :         WREG32_SOC15(GC, 0, mmDIDT_IND_INDEX, ixDIDT_SQ_THROTTLE_CTRL);
    9971             : 
    9972           0 :         WREG32_SOC15(GC, 0, mmDIDT_IND_DATA,
    9973             :                      (0x1 << DIDT_SQ_THROTTLE_CTRL__PWRBRK_STALL_EN__SHIFT));
    9974           0 : }
    9975             : 
    9976             : const struct amdgpu_ip_block_version gfx_v10_0_ip_block =
    9977             : {
    9978             :         .type = AMD_IP_BLOCK_TYPE_GFX,
    9979             :         .major = 10,
    9980             :         .minor = 0,
    9981             :         .rev = 0,
    9982             :         .funcs = &gfx_v10_0_ip_funcs,
    9983             : };

Generated by: LCOV version 1.14