/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
https://gitlab.com/sunny256/linux · C · 5337 lines · 4318 code · 571 blank · 448 comment · 469 complexity · dc27c900df68462b7f5d7e405e2ffaf8 MD5 · raw file
Large files are truncated click here to view the full file
- /*
- * Copyright 2014 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 <drm/drmP.h>
- #include "amdgpu.h"
- #include "amdgpu_ih.h"
- #include "amdgpu_gfx.h"
- #include "cikd.h"
- #include "cik.h"
- #include "cik_structs.h"
- #include "atom.h"
- #include "amdgpu_ucode.h"
- #include "clearstate_ci.h"
- #include "dce/dce_8_0_d.h"
- #include "dce/dce_8_0_sh_mask.h"
- #include "bif/bif_4_1_d.h"
- #include "bif/bif_4_1_sh_mask.h"
- #include "gca/gfx_7_0_d.h"
- #include "gca/gfx_7_2_enum.h"
- #include "gca/gfx_7_2_sh_mask.h"
- #include "gmc/gmc_7_0_d.h"
- #include "gmc/gmc_7_0_sh_mask.h"
- #include "oss/oss_2_0_d.h"
- #include "oss/oss_2_0_sh_mask.h"
- #define GFX7_NUM_GFX_RINGS 1
- #define GFX7_MEC_HPD_SIZE 2048
- static void gfx_v7_0_set_ring_funcs(struct amdgpu_device *adev);
- static void gfx_v7_0_set_irq_funcs(struct amdgpu_device *adev);
- static void gfx_v7_0_set_gds_init(struct amdgpu_device *adev);
- MODULE_FIRMWARE("radeon/bonaire_pfp.bin");
- MODULE_FIRMWARE("radeon/bonaire_me.bin");
- MODULE_FIRMWARE("radeon/bonaire_ce.bin");
- MODULE_FIRMWARE("radeon/bonaire_rlc.bin");
- MODULE_FIRMWARE("radeon/bonaire_mec.bin");
- MODULE_FIRMWARE("radeon/hawaii_pfp.bin");
- MODULE_FIRMWARE("radeon/hawaii_me.bin");
- MODULE_FIRMWARE("radeon/hawaii_ce.bin");
- MODULE_FIRMWARE("radeon/hawaii_rlc.bin");
- MODULE_FIRMWARE("radeon/hawaii_mec.bin");
- MODULE_FIRMWARE("radeon/kaveri_pfp.bin");
- MODULE_FIRMWARE("radeon/kaveri_me.bin");
- MODULE_FIRMWARE("radeon/kaveri_ce.bin");
- MODULE_FIRMWARE("radeon/kaveri_rlc.bin");
- MODULE_FIRMWARE("radeon/kaveri_mec.bin");
- MODULE_FIRMWARE("radeon/kaveri_mec2.bin");
- MODULE_FIRMWARE("radeon/kabini_pfp.bin");
- MODULE_FIRMWARE("radeon/kabini_me.bin");
- MODULE_FIRMWARE("radeon/kabini_ce.bin");
- MODULE_FIRMWARE("radeon/kabini_rlc.bin");
- MODULE_FIRMWARE("radeon/kabini_mec.bin");
- MODULE_FIRMWARE("radeon/mullins_pfp.bin");
- MODULE_FIRMWARE("radeon/mullins_me.bin");
- MODULE_FIRMWARE("radeon/mullins_ce.bin");
- MODULE_FIRMWARE("radeon/mullins_rlc.bin");
- MODULE_FIRMWARE("radeon/mullins_mec.bin");
- static const struct amdgpu_gds_reg_offset amdgpu_gds_reg_offset[] =
- {
- {mmGDS_VMID0_BASE, mmGDS_VMID0_SIZE, mmGDS_GWS_VMID0, mmGDS_OA_VMID0},
- {mmGDS_VMID1_BASE, mmGDS_VMID1_SIZE, mmGDS_GWS_VMID1, mmGDS_OA_VMID1},
- {mmGDS_VMID2_BASE, mmGDS_VMID2_SIZE, mmGDS_GWS_VMID2, mmGDS_OA_VMID2},
- {mmGDS_VMID3_BASE, mmGDS_VMID3_SIZE, mmGDS_GWS_VMID3, mmGDS_OA_VMID3},
- {mmGDS_VMID4_BASE, mmGDS_VMID4_SIZE, mmGDS_GWS_VMID4, mmGDS_OA_VMID4},
- {mmGDS_VMID5_BASE, mmGDS_VMID5_SIZE, mmGDS_GWS_VMID5, mmGDS_OA_VMID5},
- {mmGDS_VMID6_BASE, mmGDS_VMID6_SIZE, mmGDS_GWS_VMID6, mmGDS_OA_VMID6},
- {mmGDS_VMID7_BASE, mmGDS_VMID7_SIZE, mmGDS_GWS_VMID7, mmGDS_OA_VMID7},
- {mmGDS_VMID8_BASE, mmGDS_VMID8_SIZE, mmGDS_GWS_VMID8, mmGDS_OA_VMID8},
- {mmGDS_VMID9_BASE, mmGDS_VMID9_SIZE, mmGDS_GWS_VMID9, mmGDS_OA_VMID9},
- {mmGDS_VMID10_BASE, mmGDS_VMID10_SIZE, mmGDS_GWS_VMID10, mmGDS_OA_VMID10},
- {mmGDS_VMID11_BASE, mmGDS_VMID11_SIZE, mmGDS_GWS_VMID11, mmGDS_OA_VMID11},
- {mmGDS_VMID12_BASE, mmGDS_VMID12_SIZE, mmGDS_GWS_VMID12, mmGDS_OA_VMID12},
- {mmGDS_VMID13_BASE, mmGDS_VMID13_SIZE, mmGDS_GWS_VMID13, mmGDS_OA_VMID13},
- {mmGDS_VMID14_BASE, mmGDS_VMID14_SIZE, mmGDS_GWS_VMID14, mmGDS_OA_VMID14},
- {mmGDS_VMID15_BASE, mmGDS_VMID15_SIZE, mmGDS_GWS_VMID15, mmGDS_OA_VMID15}
- };
- static const u32 spectre_rlc_save_restore_register_list[] =
- {
- (0x0e00 << 16) | (0xc12c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc140 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc150 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc15c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc168 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc170 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc178 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc204 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2b4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2b8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2bc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2c0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8228 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x829c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x869c >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x98f4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x98f8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9900 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc260 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x90e8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c000 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c00c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c1c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9700 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x8e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x9e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0xae00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0xbe00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x89bc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8900 >> 2),
- 0x00000000,
- 0x3,
- (0x0e00 << 16) | (0xc130 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc134 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc1fc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc208 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc264 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc268 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc26c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc270 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc274 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc278 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc27c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc280 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc284 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc288 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc28c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc290 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc294 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc298 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc29c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2a0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2a4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2a8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2ac >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2b0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x301d0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30238 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30250 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30254 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30258 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3025c >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0x8e00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0x9e00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0xae00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0xbe00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0x8e00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0x9e00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0xae00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0xbe00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0x8e00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0x9e00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0xae00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0xbe00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0x8e00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0x9e00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0xae00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0xbe00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0x8e00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0x9e00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0xae00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0xbe00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc99c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9834 >> 2),
- 0x00000000,
- (0x0000 << 16) | (0x30f00 >> 2),
- 0x00000000,
- (0x0001 << 16) | (0x30f00 >> 2),
- 0x00000000,
- (0x0000 << 16) | (0x30f04 >> 2),
- 0x00000000,
- (0x0001 << 16) | (0x30f04 >> 2),
- 0x00000000,
- (0x0000 << 16) | (0x30f08 >> 2),
- 0x00000000,
- (0x0001 << 16) | (0x30f08 >> 2),
- 0x00000000,
- (0x0000 << 16) | (0x30f0c >> 2),
- 0x00000000,
- (0x0001 << 16) | (0x30f0c >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x9b7c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8a14 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8a18 >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x30a00 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8bf0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8bcc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8b24 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30a04 >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x30a10 >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x30a14 >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x30a18 >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x30a2c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc700 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc704 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc708 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc768 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc770 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc774 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc778 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc77c >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc780 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc784 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc788 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc78c >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc798 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc79c >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc7a0 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc7a4 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc7a8 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc7ac >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc7b0 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc7b4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9100 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c010 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x92a8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x92ac >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x92b4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x92b8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x92bc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x92c0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x92c4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x92c8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x92cc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x92d0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c00 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c04 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c20 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c38 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c3c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xae00 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9604 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac08 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac0c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac10 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac14 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac58 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac68 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac6c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac70 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac74 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac78 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac7c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac80 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac84 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac88 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac8c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x970c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9714 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9718 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x971c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x8e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x9e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0xae00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0xbe00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xcd10 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xcd14 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88b0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88b4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88b8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88bc >> 2),
- 0x00000000,
- (0x0400 << 16) | (0x89c0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88c4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88c8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88d0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88d4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88d8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8980 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30938 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3093c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30940 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x89a0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30900 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30904 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x89b4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c210 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c214 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c218 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8904 >> 2),
- 0x00000000,
- 0x5,
- (0x0e00 << 16) | (0x8c28 >> 2),
- (0x0e00 << 16) | (0x8c2c >> 2),
- (0x0e00 << 16) | (0x8c30 >> 2),
- (0x0e00 << 16) | (0x8c34 >> 2),
- (0x0e00 << 16) | (0x9600 >> 2),
- };
- static const u32 kalindi_rlc_save_restore_register_list[] =
- {
- (0x0e00 << 16) | (0xc12c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc140 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc150 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc15c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc168 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc170 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc204 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2b4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2b8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2bc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2c0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8228 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x829c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x869c >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x98f4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x98f8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9900 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc260 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x90e8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c000 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c00c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c1c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9700 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xcd20 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x89bc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8900 >> 2),
- 0x00000000,
- 0x3,
- (0x0e00 << 16) | (0xc130 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc134 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc1fc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc208 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc264 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc268 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc26c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc270 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc274 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc28c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc290 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc294 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc298 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2a0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2a4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2a8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc2ac >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x301d0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30238 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30250 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30254 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30258 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3025c >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xc900 >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xc904 >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xc908 >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xc90c >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0xc910 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc99c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9834 >> 2),
- 0x00000000,
- (0x0000 << 16) | (0x30f00 >> 2),
- 0x00000000,
- (0x0000 << 16) | (0x30f04 >> 2),
- 0x00000000,
- (0x0000 << 16) | (0x30f08 >> 2),
- 0x00000000,
- (0x0000 << 16) | (0x30f0c >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x9b7c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8a14 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8a18 >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x30a00 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8bf0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8bcc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8b24 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30a04 >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x30a10 >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x30a14 >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x30a18 >> 2),
- 0x00000000,
- (0x0600 << 16) | (0x30a2c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc700 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc704 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc708 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xc768 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc770 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc774 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc798 >> 2),
- 0x00000000,
- (0x0400 << 16) | (0xc79c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9100 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c010 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c00 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c04 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c20 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c38 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8c3c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xae00 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9604 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac08 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac0c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac10 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac14 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac58 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac68 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac6c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac70 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac74 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac78 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac7c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac80 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac84 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac88 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xac8c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x970c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9714 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x9718 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x971c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x4e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x5e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x6e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x7e00 << 16) | (0x31068 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xcd10 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0xcd14 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88b0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88b4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88b8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88bc >> 2),
- 0x00000000,
- (0x0400 << 16) | (0x89c0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88c4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88c8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88d0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88d4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x88d8 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8980 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30938 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3093c >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30940 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x89a0 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30900 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x30904 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x89b4 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3e1fc >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c210 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c214 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x3c218 >> 2),
- 0x00000000,
- (0x0e00 << 16) | (0x8904 >> 2),
- 0x00000000,
- 0x5,
- (0x0e00 << 16) | (0x8c28 >> 2),
- (0x0e00 << 16) | (0x8c2c >> 2),
- (0x0e00 << 16) | (0x8c30 >> 2),
- (0x0e00 << 16) | (0x8c34 >> 2),
- (0x0e00 << 16) | (0x9600 >> 2),
- };
- static u32 gfx_v7_0_get_csb_size(struct amdgpu_device *adev);
- static void gfx_v7_0_get_csb_buffer(struct amdgpu_device *adev, volatile u32 *buffer);
- static void gfx_v7_0_init_cp_pg_table(struct amdgpu_device *adev);
- static void gfx_v7_0_init_pg(struct amdgpu_device *adev);
- static void gfx_v7_0_get_cu_info(struct amdgpu_device *adev);
- /*
- * Core functions
- */
- /**
- * gfx_v7_0_init_microcode - load ucode images from disk
- *
- * @adev: amdgpu_device pointer
- *
- * Use the firmware interface to load the ucode images into
- * the driver (not loaded into hw).
- * Returns 0 on success, error on failure.
- */
- static int gfx_v7_0_init_microcode(struct amdgpu_device *adev)
- {
- const char *chip_name;
- char fw_name[30];
- int err;
- DRM_DEBUG("\n");
- switch (adev->asic_type) {
- case CHIP_BONAIRE:
- chip_name = "bonaire";
- break;
- case CHIP_HAWAII:
- chip_name = "hawaii";
- break;
- case CHIP_KAVERI:
- chip_name = "kaveri";
- break;
- case CHIP_KABINI:
- chip_name = "kabini";
- break;
- case CHIP_MULLINS:
- chip_name = "mullins";
- break;
- default: BUG();
- }
- snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name);
- err = request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev);
- if (err)
- goto out;
- err = amdgpu_ucode_validate(adev->gfx.pfp_fw);
- if (err)
- goto out;
- snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name);
- err = request_firmware(&adev->gfx.me_fw, fw_name, adev->dev);
- if (err)
- goto out;
- err = amdgpu_ucode_validate(adev->gfx.me_fw);
- if (err)
- goto out;
- snprintf(fw_name, sizeof(fw_name), "radeon/%s_ce.bin", chip_name);
- err = request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev);
- if (err)
- goto out;
- err = amdgpu_ucode_validate(adev->gfx.ce_fw);
- if (err)
- goto out;
- snprintf(fw_name, sizeof(fw_name), "radeon/%s_mec.bin", chip_name);
- err = request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev);
- if (err)
- goto out;
- err = amdgpu_ucode_validate(adev->gfx.mec_fw);
- if (err)
- goto out;
- if (adev->asic_type == CHIP_KAVERI) {
- snprintf(fw_name, sizeof(fw_name), "radeon/%s_mec2.bin", chip_name);
- err = request_firmware(&adev->gfx.mec2_fw, fw_name, adev->dev);
- if (err)
- goto out;
- err = amdgpu_ucode_validate(adev->gfx.mec2_fw);
- if (err)
- goto out;
- }
- snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", chip_name);
- err = request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev);
- if (err)
- goto out;
- err = amdgpu_ucode_validate(adev->gfx.rlc_fw);
- out:
- if (err) {
- pr_err("gfx7: Failed to load firmware \"%s\"\n", fw_name);
- release_firmware(adev->gfx.pfp_fw);
- adev->gfx.pfp_fw = NULL;
- release_firmware(adev->gfx.me_fw);
- adev->gfx.me_fw = NULL;
- release_firmware(adev->gfx.ce_fw);
- adev->gfx.ce_fw = NULL;
- release_firmware(adev->gfx.mec_fw);
- adev->gfx.mec_fw = NULL;
- release_firmware(adev->gfx.mec2_fw);
- adev->gfx.mec2_fw = NULL;
- release_firmware(adev->gfx.rlc_fw);
- adev->gfx.rlc_fw = NULL;
- }
- return err;
- }
- static void gfx_v7_0_free_microcode(struct amdgpu_device *adev)
- {
- release_firmware(adev->gfx.pfp_fw);
- adev->gfx.pfp_fw = NULL;
- release_firmware(adev->gfx.me_fw);
- adev->gfx.me_fw = NULL;
- release_firmware(adev->gfx.ce_fw);
- adev->gfx.ce_fw = NULL;
- release_firmware(adev->gfx.mec_fw);
- adev->gfx.mec_fw = NULL;
- release_firmware(adev->gfx.mec2_fw);
- adev->gfx.mec2_fw = NULL;
- release_firmware(adev->gfx.rlc_fw);
- adev->gfx.rlc_fw = NULL;
- }
- /**
- * gfx_v7_0_tiling_mode_table_init - init the hw tiling table
- *
- * @adev: amdgpu_device pointer
- *
- * Starting with SI, the tiling setup is done globally in a
- * set of 32 tiling modes. Rather than selecting each set of
- * parameters per surface as on older asics, we just select
- * which index in the tiling table we want to use, and the
- * surface uses those parameters (CIK).
- */
- static void gfx_v7_0_tiling_mode_table_init(struct amdgpu_device *adev)
- {
- const u32 num_tile_mode_states =
- ARRAY_SIZE(adev->gfx.config.tile_mode_array);
- const u32 num_secondary_tile_mode_states =
- ARRAY_SIZE(adev->gfx.config.macrotile_mode_array);
- u32 reg_offset, split_equal_to_row_size;
- uint32_t *tile, *macrotile;
- tile = adev->gfx.config.tile_mode_array;
- macrotile = adev->gfx.config.macrotile_mode_array;
- switch (adev->gfx.config.mem_row_size_in_kb) {
- case 1:
- split_equal_to_row_size = ADDR_SURF_TILE_SPLIT_1KB;
- break;
- case 2:
- default:
- split_equal_to_row_size = ADDR_SURF_TILE_SPLIT_2KB;
- break;
- case 4:
- split_equal_to_row_size = ADDR_SURF_TILE_SPLIT_4KB;
- break;
- }
- for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++)
- tile[reg_offset] = 0;
- for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++)
- macrotile[reg_offset] = 0;
- switch (adev->asic_type) {
- case CHIP_BONAIRE:
- tile[0] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[1] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[2] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[3] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[4] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
- TILE_SPLIT(split_equal_to_row_size));
- tile[5] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[6] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
- TILE_SPLIT(split_equal_to_row_size));
- tile[7] = (TILE_SPLIT(split_equal_to_row_size));
- tile[8] = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16));
- tile[9] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
- tile[10] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[11] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[12] = (TILE_SPLIT(split_equal_to_row_size));
- tile[13] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
- tile[14] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[15] = (ARRAY_MODE(ARRAY_3D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[16] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[17] = (TILE_SPLIT(split_equal_to_row_size));
- tile[18] = (ARRAY_MODE(ARRAY_1D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[19] = (ARRAY_MODE(ARRAY_1D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
- tile[20] = (ARRAY_MODE(ARRAY_2D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[21] = (ARRAY_MODE(ARRAY_3D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[22] = (ARRAY_MODE(ARRAY_PRT_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[23] = (TILE_SPLIT(split_equal_to_row_size));
- tile[24] = (ARRAY_MODE(ARRAY_2D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[25] = (ARRAY_MODE(ARRAY_2D_TILED_XTHICK) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[26] = (ARRAY_MODE(ARRAY_3D_TILED_XTHICK) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[27] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
- tile[28] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[29] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[30] = (TILE_SPLIT(split_equal_to_row_size));
- macrotile[0] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[1] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[2] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[3] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[4] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[5] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[6] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
- NUM_BANKS(ADDR_SURF_4_BANK));
- macrotile[8] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[9] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[10] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[11] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[12] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[13] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[14] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
- NUM_BANKS(ADDR_SURF_4_BANK));
- for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++)
- WREG32(mmGB_TILE_MODE0 + reg_offset, tile[reg_offset]);
- for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++)
- if (reg_offset != 7)
- WREG32(mmGB_MACROTILE_MODE0 + reg_offset, macrotile[reg_offset]);
- break;
- case CHIP_HAWAII:
- tile[0] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[1] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[2] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[3] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[4] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
- TILE_SPLIT(split_equal_to_row_size));
- tile[5] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
- TILE_SPLIT(split_equal_to_row_size));
- tile[6] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
- TILE_SPLIT(split_equal_to_row_size));
- tile[7] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
- TILE_SPLIT(split_equal_to_row_size));
- tile[8] = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16));
- tile[9] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
- tile[10] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[11] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[12] = (ARRAY_MODE(ARRAY_PRT_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[13] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
- tile[14] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[15] = (ARRAY_MODE(ARRAY_3D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[16] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[17] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[18] = (ARRAY_MODE(ARRAY_1D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[19] = (ARRAY_MODE(ARRAY_1D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING));
- tile[20] = (ARRAY_MODE(ARRAY_2D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[21] = (ARRAY_MODE(ARRAY_3D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[22] = (ARRAY_MODE(ARRAY_PRT_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[23] = (ARRAY_MODE(ARRAY_PRT_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[24] = (ARRAY_MODE(ARRAY_2D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[25] = (ARRAY_MODE(ARRAY_2D_TILED_XTHICK) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[26] = (ARRAY_MODE(ARRAY_3D_TILED_XTHICK) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[27] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
- tile[28] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[29] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P16_32x32_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[30] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P4_16x16) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- macrotile[0] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[1] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[2] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[3] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[4] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[5] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
- NUM_BANKS(ADDR_SURF_4_BANK));
- macrotile[6] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
- NUM_BANKS(ADDR_SURF_4_BANK));
- macrotile[8] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[9] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[10] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[11] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[12] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[13] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[14] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) |
- NUM_BANKS(ADDR_SURF_4_BANK));
- for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++)
- WREG32(mmGB_TILE_MODE0 + reg_offset, tile[reg_offset]);
- for (reg_offset = 0; reg_offset < num_secondary_tile_mode_states; reg_offset++)
- if (reg_offset != 7)
- WREG32(mmGB_MACROTILE_MODE0 + reg_offset, macrotile[reg_offset]);
- break;
- case CHIP_KABINI:
- case CHIP_KAVERI:
- case CHIP_MULLINS:
- default:
- tile[0] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[1] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[2] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[3] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[4] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
- TILE_SPLIT(split_equal_to_row_size));
- tile[5] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING));
- tile[6] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DEPTH_MICRO_TILING) |
- TILE_SPLIT(split_equal_to_row_size));
- tile[7] = (TILE_SPLIT(split_equal_to_row_size));
- tile[8] = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
- PIPE_CONFIG(ADDR_SURF_P2));
- tile[9] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING));
- tile[10] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[11] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_DISPLAY_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[12] = (TILE_SPLIT(split_equal_to_row_size));
- tile[13] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING));
- tile[14] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[15] = (ARRAY_MODE(ARRAY_3D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[16] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[17] = (TILE_SPLIT(split_equal_to_row_size));
- tile[18] = (ARRAY_MODE(ARRAY_1D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[19] = (ARRAY_MODE(ARRAY_1D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING));
- tile[20] = (ARRAY_MODE(ARRAY_2D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[21] = (ARRAY_MODE(ARRAY_3D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[22] = (ARRAY_MODE(ARRAY_PRT_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[23] = (TILE_SPLIT(split_equal_to_row_size));
- tile[24] = (ARRAY_MODE(ARRAY_2D_TILED_THICK) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THIN_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[25] = (ARRAY_MODE(ARRAY_2D_TILED_XTHICK) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[26] = (ARRAY_MODE(ARRAY_3D_TILED_XTHICK) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_THICK_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_1));
- tile[27] = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING));
- tile[28] = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_2));
- tile[29] = (ARRAY_MODE(ARRAY_PRT_TILED_THIN1) |
- PIPE_CONFIG(ADDR_SURF_P2) |
- MICRO_TILE_MODE_NEW(ADDR_SURF_ROTATED_MICRO_TILING) |
- SAMPLE_SPLIT(ADDR_SURF_SAMPLE_SPLIT_8));
- tile[30] = (TILE_SPLIT(split_equal_to_row_size));
- macrotile[0] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[1] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[2] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[3] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[4] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[5] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[6] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) |
- NUM_BANKS(ADDR_SURF_8_BANK));
- macrotile[8] = (BANK_WIDTH(ADDR_SURF_BANK_WIDTH_4) |
- BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) |
- MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) |
- NUM_BANKS(ADDR_SURF_16_BANK));
- macrotile[9] = (BANK_WIDTH(ADDR_SURF_…