1976 lines · 62.7 KB · C
RawDownload
/* * Copyright 2015 Advanced Micro Devices, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * */ #include <linux/firmware.h>#include <linux/slab.h>#include <linux/module.h>#include <drm/drmP.h>#include "amdgpu.h"#include "amdgpu_atombios.h"#include "amdgpu_ih.h"#include "amdgpu_uvd.h"#include "amdgpu_vce.h"#include "atom.h"#include "amdgpu_powerplay.h"#include "sid.h"#include "si_ih.h"#include "gfx_v6_0.h"#include "gmc_v6_0.h"#include "si_dma.h"#include "dce_v6_0.h"#include "si.h"#include "dce_virtual.h"#include "gca/gfx_6_0_d.h"#include "oss/oss_1_0_d.h"#include "gmc/gmc_6_0_d.h"#include "dce/dce_6_0_d.h"#include "uvd/uvd_4_0_d.h"#include "bif/bif_3_0_d.h" static const u32 tahiti_golden_registers[] ={	mmAZALIA_SCLK_CONTROL, 0x00000030, 0x00000011,	mmCB_HW_CONTROL, 0x00010000, 0x00018208,	mmDB_DEBUG, 0xffffffff, 0x00000000,	mmDB_DEBUG2, 0xf00fffff, 0x00000400,	mmDB_DEBUG3, 0x0002021c, 0x00020200,	mmDCI_CLK_CNTL, 0x00000080, 0x00000000,	0x340c, 0x000000c0, 0x00800040,	0x360c, 0x000000c0, 0x00800040,	mmFBC_DEBUG_COMP, 0x000000f0, 0x00000070,	mmFBC_MISC, 0x00200000, 0x50100000,	mmDIG0_HDMI_CONTROL, 0x31000311, 0x00000011,	mmMC_ARB_WTM_CNTL_RD, 0x00000003, 0x000007ff,	mmMC_XPB_P2P_BAR_CFG, 0x000007ff, 0x00000000,	mmPA_CL_ENHANCE, 0xf000001f, 0x00000007,	mmPA_SC_FORCE_EOV_MAX_CNTS, 0xffffffff, 0x00ffffff,	mmPA_SC_LINE_STIPPLE_STATE, 0x0000ff0f, 0x00000000,	mmPA_SC_MODE_CNTL_1, 0x07ffffff, 0x4e000000,	mmPA_SC_RASTER_CONFIG, 0x3f3f3fff, 0x2a00126a,	0x000c, 0xffffffff, 0x0040,	0x000d, 0x00000040, 0x00004040,	mmSPI_CONFIG_CNTL, 0x07ffffff, 0x03000000,	mmSQ_DED_CNT, 0x01ff1f3f, 0x00000000,	mmSQ_SEC_CNT, 0x01ff1f3f, 0x00000000,	mmSX_DEBUG_1, 0x0000007f, 0x00000020,	mmTA_CNTL_AUX, 0x00010000, 0x00010000,	mmTCP_ADDR_CONFIG, 0x00000200, 0x000002fb,	mmTCP_CHAN_STEER_HI, 0xffffffff, 0x0000543b,	mmTCP_CHAN_STEER_LO, 0xffffffff, 0xa9210876,	mmVGT_FIFO_DEPTHS, 0xffffffff, 0x000fff40,	mmVGT_GS_VERTEX_REUSE, 0x0000001f, 0x00000010,	mmVM_CONTEXT0_CNTL, 0x20000000, 0x20fffed8,	mmVM_L2_CG, 0x000c0fc0, 0x000c0400,	mmVM_PRT_APERTURE0_LOW_ADDR, 0x0fffffff, 0xffffffff,	mmVM_PRT_APERTURE1_LOW_ADDR, 0x0fffffff, 0x0fffffff,	mmVM_PRT_APERTURE2_LOW_ADDR, 0x0fffffff, 0x0fffffff,	mmVM_PRT_APERTURE3_LOW_ADDR, 0x0fffffff, 0x0fffffff,}; static const u32 tahiti_golden_registers2[] ={	mmMCIF_MEM_CONTROL, 0x00000001, 0x00000001,}; static const u32 tahiti_golden_rlc_registers[] ={	mmGB_ADDR_CONFIG, 0xffffffff, 0x12011003,	mmRLC_LB_PARAMS, 0xffffffff, 0x00601005,	0x311f, 0xffffffff, 0x10104040,	0x3122, 0xffffffff, 0x0100000a,	mmRLC_LB_CNTR_MAX, 0xffffffff, 0x00000800,	mmRLC_LB_CNTL, 0xffffffff, 0x800000f4,	mmUVD_CGC_GATE, 0x00000008, 0x00000000,}; static const u32 pitcairn_golden_registers[] ={	mmAZALIA_SCLK_CONTROL, 0x00000030, 0x00000011,	mmCB_HW_CONTROL, 0x00010000, 0x00018208,	mmDB_DEBUG, 0xffffffff, 0x00000000,	mmDB_DEBUG2, 0xf00fffff, 0x00000400,	mmDB_DEBUG3, 0x0002021c, 0x00020200,	mmDCI_CLK_CNTL, 0x00000080, 0x00000000,	0x340c, 0x000300c0, 0x00800040,	0x360c, 0x000300c0, 0x00800040,	mmFBC_DEBUG_COMP, 0x000000f0, 0x00000070,	mmFBC_MISC, 0x00200000, 0x50100000,	mmDIG0_HDMI_CONTROL, 0x31000311, 0x00000011,	mmMC_SEQ_PMG_PG_HWCNTL, 0x00073ffe, 0x000022a2,	mmMC_XPB_P2P_BAR_CFG, 0x000007ff, 0x00000000,	mmPA_CL_ENHANCE, 0xf000001f, 0x00000007,	mmPA_SC_FORCE_EOV_MAX_CNTS, 0xffffffff, 0x00ffffff,	mmPA_SC_LINE_STIPPLE_STATE, 0x0000ff0f, 0x00000000,	mmPA_SC_MODE_CNTL_1, 0x07ffffff, 0x4e000000,	mmPA_SC_RASTER_CONFIG, 0x3f3f3fff, 0x2a00126a,	0x000c, 0xffffffff, 0x0040,	0x000d, 0x00000040, 0x00004040,	mmSPI_CONFIG_CNTL, 0x07ffffff, 0x03000000,	mmSX_DEBUG_1, 0x0000007f, 0x00000020,	mmTA_CNTL_AUX, 0x00010000, 0x00010000,	mmTCP_ADDR_CONFIG, 0x000003ff, 0x000000f7,	mmTCP_CHAN_STEER_HI, 0xffffffff, 0x00000000,	mmTCP_CHAN_STEER_LO, 0xffffffff, 0x32761054,	mmVGT_GS_VERTEX_REUSE, 0x0000001f, 0x00000010,	mmVM_L2_CG, 0x000c0fc0, 0x000c0400,	mmVM_PRT_APERTURE0_LOW_ADDR, 0x0fffffff, 0xffffffff,	mmVM_PRT_APERTURE1_LOW_ADDR, 0x0fffffff, 0x0fffffff,	mmVM_PRT_APERTURE2_LOW_ADDR, 0x0fffffff, 0x0fffffff,	mmVM_PRT_APERTURE3_LOW_ADDR, 0x0fffffff, 0x0fffffff,}; static const u32 pitcairn_golden_rlc_registers[] ={	mmGB_ADDR_CONFIG, 0xffffffff, 0x12011003,	mmRLC_LB_PARAMS, 0xffffffff, 0x00601004,	0x311f, 0xffffffff, 0x10102020,	0x3122, 0xffffffff, 0x01000020,	mmRLC_LB_CNTR_MAX, 0xffffffff, 0x00000800,	mmRLC_LB_CNTL, 0xffffffff, 0x800000a4,}; static const u32 verde_pg_init[] ={	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x40000,	mmGMCON_PGFSM_CONFIG, 0xffffffff, 0x200010ff,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x7007,	mmGMCON_PGFSM_CONFIG, 0xffffffff, 0x300010ff,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x400000,	mmGMCON_PGFSM_CONFIG, 0xffffffff, 0x100010ff,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x120200,	mmGMCON_PGFSM_CONFIG, 0xffffffff, 0x500010ff,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x1e1e16,	mmGMCON_PGFSM_CONFIG, 0xffffffff, 0x600010ff,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x171f1e,	mmGMCON_PGFSM_CONFIG, 0xffffffff, 0x700010ff,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_WRITE, 0xffffffff, 0x0,	mmGMCON_PGFSM_CONFIG, 0xffffffff, 0x9ff,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x0,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x10000800,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0xf,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0xf,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x4,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x1000051e,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0xffff,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0xffff,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x8,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x80500,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x12,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x9050c,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x1d,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0xb052c,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x2a,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x1053e,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x2d,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x10546,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x30,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0xa054e,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x3c,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x1055f,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x3f,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x10567,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x42,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x1056f,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x45,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x10572,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x48,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x20575,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x4c,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x190801,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x67,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x1082a,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x6a,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x1b082d,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x87,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x310851,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0xba,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x891,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0xbc,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x893,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0xbe,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x20895,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0xc2,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x20899,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0xc6,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x2089d,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0xca,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x8a1,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0xcc,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x8a3,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0xce,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x308a5,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0xd3,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x6d08cd,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x142,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x2000095a,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x1,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x144,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x301f095b,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x165,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0xc094d,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x173,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0xf096d,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x184,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x15097f,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x19b,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0xc0998,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x1a9,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x409a7,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x1af,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0xcdc,	mmGMCON_RENG_RAM_INDEX, 0xffffffff, 0x1b1,	mmGMCON_RENG_RAM_DATA, 0xffffffff, 0x800,	mmGMCON_RENG_EXECUTE, 0xffffffff, 0x6c9b2000,	mmGMCON_MISC2, 0xfc00, 0x2000,	mmGMCON_MISC3, 0xffffffff, 0xfc0,	mmMC_PMG_AUTO_CFG, 0x00000100, 0x100,}; static const u32 verde_golden_rlc_registers[] ={	mmGB_ADDR_CONFIG, 0xffffffff, 0x02010002,	mmRLC_LB_PARAMS, 0xffffffff, 0x033f1005,	0x311f, 0xffffffff, 0x10808020,	0x3122, 0xffffffff, 0x00800008,	mmRLC_LB_CNTR_MAX, 0xffffffff, 0x00001000,	mmRLC_LB_CNTL, 0xffffffff, 0x80010014,}; static const u32 verde_golden_registers[] ={	mmAZALIA_SCLK_CONTROL, 0x00000030, 0x00000011,	mmCB_HW_CONTROL, 0x00010000, 0x00018208,	mmDB_DEBUG, 0xffffffff, 0x00000000,	mmDB_DEBUG2, 0xf00fffff, 0x00000400,	mmDB_DEBUG3, 0x0002021c, 0x00020200,	mmDCI_CLK_CNTL, 0x00000080, 0x00000000,	0x340c, 0x000300c0, 0x00800040,	0x360c, 0x000300c0, 0x00800040,	mmFBC_DEBUG_COMP, 0x000000f0, 0x00000070,	mmFBC_MISC, 0x00200000, 0x50100000,	mmDIG0_HDMI_CONTROL, 0x31000311, 0x00000011,	mmMC_SEQ_PMG_PG_HWCNTL, 0x00073ffe, 0x000022a2,	mmMC_XPB_P2P_BAR_CFG, 0x000007ff, 0x00000000,	mmPA_CL_ENHANCE, 0xf000001f, 0x00000007,	mmPA_SC_FORCE_EOV_MAX_CNTS, 0xffffffff, 0x00ffffff,	mmPA_SC_LINE_STIPPLE_STATE, 0x0000ff0f, 0x00000000,	mmPA_SC_MODE_CNTL_1, 0x07ffffff, 0x4e000000,	mmPA_SC_RASTER_CONFIG, 0x3f3f3fff, 0x0000124a,	0x000c, 0xffffffff, 0x0040,	0x000d, 0x00000040, 0x00004040,	mmSPI_CONFIG_CNTL, 0x07ffffff, 0x03000000,	mmSQ_DED_CNT, 0x01ff1f3f, 0x00000000,	mmSQ_SEC_CNT, 0x01ff1f3f, 0x00000000,	mmSX_DEBUG_1, 0x0000007f, 0x00000020,	mmTA_CNTL_AUX, 0x00010000, 0x00010000,	mmTCP_ADDR_CONFIG, 0x000003ff, 0x00000003,	mmTCP_CHAN_STEER_HI, 0xffffffff, 0x00000000,	mmTCP_CHAN_STEER_LO, 0xffffffff, 0x00001032,	mmVGT_GS_VERTEX_REUSE, 0x0000001f, 0x00000010,	mmVM_L2_CG, 0x000c0fc0, 0x000c0400,	mmVM_PRT_APERTURE0_LOW_ADDR, 0x0fffffff, 0xffffffff,	mmVM_PRT_APERTURE1_LOW_ADDR, 0x0fffffff, 0x0fffffff,	mmVM_PRT_APERTURE2_LOW_ADDR, 0x0fffffff, 0x0fffffff,	mmVM_PRT_APERTURE3_LOW_ADDR, 0x0fffffff, 0x0fffffff,}; static const u32 oland_golden_registers[] ={	mmAZALIA_SCLK_CONTROL, 0x00000030, 0x00000011,	mmCB_HW_CONTROL, 0x00010000, 0x00018208,	mmDB_DEBUG, 0xffffffff, 0x00000000,	mmDB_DEBUG2, 0xf00fffff, 0x00000400,	mmDB_DEBUG3, 0x0002021c, 0x00020200,	mmDCI_CLK_CNTL, 0x00000080, 0x00000000,	0x340c, 0x000300c0, 0x00800040,	0x360c, 0x000300c0, 0x00800040,	mmFBC_DEBUG_COMP, 0x000000f0, 0x00000070,	mmFBC_MISC, 0x00200000, 0x50100000,	mmDIG0_HDMI_CONTROL, 0x31000311, 0x00000011,	mmMC_SEQ_PMG_PG_HWCNTL, 0x00073ffe, 0x000022a2,	mmMC_XPB_P2P_BAR_CFG, 0x000007ff, 0x00000000,	mmPA_CL_ENHANCE, 0xf000001f, 0x00000007,	mmPA_SC_FORCE_EOV_MAX_CNTS, 0xffffffff, 0x00ffffff,	mmPA_SC_LINE_STIPPLE_STATE, 0x0000ff0f, 0x00000000,	mmPA_SC_MODE_CNTL_1, 0x07ffffff, 0x4e000000,	mmPA_SC_RASTER_CONFIG, 0x3f3f3fff, 0x00000082,	0x000c, 0xffffffff, 0x0040,	0x000d, 0x00000040, 0x00004040,	mmSPI_CONFIG_CNTL, 0x07ffffff, 0x03000000,	mmSX_DEBUG_1, 0x0000007f, 0x00000020,	mmTA_CNTL_AUX, 0x00010000, 0x00010000,	mmTCP_ADDR_CONFIG, 0x000003ff, 0x000000f3,	mmTCP_CHAN_STEER_HI, 0xffffffff, 0x00000000,	mmTCP_CHAN_STEER_LO, 0xffffffff, 0x00003210,	mmVGT_GS_VERTEX_REUSE, 0x0000001f, 0x00000010,	mmVM_L2_CG, 0x000c0fc0, 0x000c0400,	mmVM_PRT_APERTURE0_LOW_ADDR, 0x0fffffff, 0xffffffff,	mmVM_PRT_APERTURE1_LOW_ADDR, 0x0fffffff, 0x0fffffff,	mmVM_PRT_APERTURE2_LOW_ADDR, 0x0fffffff, 0x0fffffff,	mmVM_PRT_APERTURE3_LOW_ADDR, 0x0fffffff, 0x0fffffff, }; static const u32 oland_golden_rlc_registers[] ={	mmGB_ADDR_CONFIG, 0xffffffff, 0x02010002,	mmRLC_LB_PARAMS, 0xffffffff, 0x00601005,	0x311f, 0xffffffff, 0x10104040,	0x3122, 0xffffffff, 0x0100000a,	mmRLC_LB_CNTR_MAX, 0xffffffff, 0x00000800,	mmRLC_LB_CNTL, 0xffffffff, 0x800000f4,}; static const u32 hainan_golden_registers[] ={	0x17bc, 0x00000030, 0x00000011,	mmCB_HW_CONTROL, 0x00010000, 0x00018208,	mmDB_DEBUG, 0xffffffff, 0x00000000,	mmDB_DEBUG2, 0xf00fffff, 0x00000400,	mmDB_DEBUG3, 0x0002021c, 0x00020200,	0x031e, 0x00000080, 0x00000000,	0x3430, 0xff000fff, 0x00000100,	0x340c, 0x000300c0, 0x00800040,	0x3630, 0xff000fff, 0x00000100,	0x360c, 0x000300c0, 0x00800040,	0x16ec, 0x000000f0, 0x00000070,	0x16f0, 0x00200000, 0x50100000,	0x1c0c, 0x31000311, 0x00000011,	mmMC_SEQ_PMG_PG_HWCNTL, 0x00073ffe, 0x000022a2,	mmMC_XPB_P2P_BAR_CFG, 0x000007ff, 0x00000000,	mmPA_CL_ENHANCE, 0xf000001f, 0x00000007,	mmPA_SC_FORCE_EOV_MAX_CNTS, 0xffffffff, 0x00ffffff,	mmPA_SC_LINE_STIPPLE_STATE, 0x0000ff0f, 0x00000000,	mmPA_SC_MODE_CNTL_1, 0x07ffffff, 0x4e000000,	mmPA_SC_RASTER_CONFIG, 0x3f3f3fff, 0x00000000,	0x000c, 0xffffffff, 0x0040,	0x000d, 0x00000040, 0x00004040,	mmSPI_CONFIG_CNTL, 0x03e00000, 0x03600000,	mmSX_DEBUG_1, 0x0000007f, 0x00000020,	mmTA_CNTL_AUX, 0x00010000, 0x00010000,	mmTCP_ADDR_CONFIG, 0x000003ff, 0x000000f1,	mmTCP_CHAN_STEER_HI, 0xffffffff, 0x00000000,	mmTCP_CHAN_STEER_LO, 0xffffffff, 0x00003210,	mmVGT_GS_VERTEX_REUSE, 0x0000001f, 0x00000010,	mmVM_L2_CG, 0x000c0fc0, 0x000c0400,	mmVM_PRT_APERTURE0_LOW_ADDR, 0x0fffffff, 0xffffffff,	mmVM_PRT_APERTURE1_LOW_ADDR, 0x0fffffff, 0x0fffffff,	mmVM_PRT_APERTURE2_LOW_ADDR, 0x0fffffff, 0x0fffffff,	mmVM_PRT_APERTURE3_LOW_ADDR, 0x0fffffff, 0x0fffffff,}; static const u32 hainan_golden_registers2[] ={	mmGB_ADDR_CONFIG, 0xffffffff, 0x2011003,}; static const u32 tahiti_mgcg_cgcg_init[] ={	mmRLC_CGTT_MGCG_OVERRIDE, 0xffffffff, 0xfffffffc,	mmGRBM_GFX_INDEX, 0xffffffff, 0xe0000000,	mmCB_CGTT_SCLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_BCI_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_CP_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_GDS_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_IA_CLK_CTRL, 0xffffffff, 0x06000100,	mmCGTT_PA_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_PC_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_RLC_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_SC_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_SPI_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_SQ_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_SQG_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_SX_CLK_CTRL0, 0xffffffff, 0x00000100,	mmCGTT_SX_CLK_CTRL1, 0xffffffff, 0x00000100,	mmCGTT_SX_CLK_CTRL2, 0xffffffff, 0x00000100,	mmCGTT_SX_CLK_CTRL3, 0xffffffff, 0x00000100,	mmCGTT_TCI_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_TCP_CLK_CTRL, 0xffffffff, 0x00000100,	mmCGTT_VGT_CLK_CTRL, 0xffffffff, 0x06000100,	mmDB_CGTT_CLK_CTRL_0, 0xffffffff, 0x00000100,	mmTA_CGTT_CTRL, 0xffffffff, 0x00000100,	mmTCA_CGTT_SCLK_CTRL, 0xffffffff, 0x00000100,	mmTCC_CGTT_SCLK_CTRL, 0xffffffff, 0x00000100,	mmTD_CGTT_CTRL, 0xffffffff, 0x00000100,	mmGRBM_GFX_INDEX, 0xffffffff, 0xe0000000,	0x2458, 0xffffffff, 0x00010000,	0x2459, 0xffffffff, 0x00030002,	0x245a, 0xffffffff, 0x00040007,	0x245b, 0xffffffff, 0x00060005,	0x245c, 0xffffffff, 0x00090008,	0x245d, 0xffffffff, 0x00020001,	0x245e, 0xffffffff, 0x00040003,	0x245f, 0xffffffff, 0x00000007,	0x2460, 0xffffffff, 0x00060005,	0x2461, 0xffffffff, 0x00090008,	0x2462, 0xffffffff, 0x00030002,	0x2463, 0xffffffff, 0x00050004,	0x2464, 0xffffffff, 0x00000008,	0x2465, 0xffffffff, 0x00070006,	0x2466, 0xffffffff, 0x000a0009,	0x2467, 0xffffffff, 0x00040003,	0x2468, 0xffffffff, 0x00060005,	0x2469, 0xffffffff, 0x00000009,	0x246a, 0xffffffff, 0x00080007,	0x246b, 0xffffffff, 0x000b000a,	0x246c, 0xffffffff, 0x00050004,	0x246d, 0xffffffff, 0x00070006,	0x246e, 0xffffffff, 0x0008000b,	0x246f, 0xffffffff, 0x000a0009,	0x2470, 0xffffffff, 0x000d000c,	0x2471, 0xffffffff, 0x00060005,	0x2472, 0xffffffff, 0x00080007,	0x2473, 0xffffffff, 0x0000000b,	0x2474, 0xffffffff, 0x000a0009,	0x2475, 0xffffffff, 0x000d000c,	0x2476, 0xffffffff, 0x00070006,	0x2477, 0xffffffff, 0x00090008,	0x2478, 0xffffffff, 0x0000000c,	0x2479, 0xffffffff, 0x000b000a,	0x247a, 0xffffffff, 0x000e000d,	0x247b, 0xffffffff, 0x00080007,	0x247c, 0xffffffff, 0x000a0009,	0x247d, 0xffffffff, 0x0000000d,	0x247e, 0xffffffff, 0x000c000b,	0x247f, 0xffffffff, 0x000f000e,	0x2480, 0xffffffff, 0x00090008,	0x2481, 0xffffffff, 0x000b000a,	0x2482, 0xffffffff, 0x000c000f,	0x2483, 0xffffffff, 0x000e000d,	0x2484, 0xffffffff, 0x00110010,	0x2485, 0xffffffff, 0x000a0009,	0x2486, 0xffffffff, 0x000c000b,	0x2487, 0xffffffff, 0x0000000f,	0x2488, 0xffffffff, 0x000e000d,	0x2489, 0xffffffff, 0x00110010,	0x248a, 0xffffffff, 0x000b000a,	0x248b, 0xffffffff, 0x000d000c,	0x248c, 0xffffffff, 0x00000010,	0x248d, 0xffffffff, 0x000f000e,	0x248e, 0xffffffff, 0x00120011,

Lines 1–500 of 1976.