/* * 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. Load more
/* * 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,