Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: add gfx ip block for sienna_cichlid (v3)

Add support for GC 10.3.

v2: Squash in gb_addr_config fix (Alex)
v3: Add num_pkrs support (Alex)

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Likun Gao and committed by
Alex Deucher
933c8a93 757b3af8

+17
+1
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
··· 134 134 uint8_t num_banks; 135 135 uint8_t num_se; 136 136 uint8_t num_rb_per_se; 137 + uint8_t num_pkrs; 137 138 }; 138 139 139 140 struct amdgpu_gfx_config {
+15
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
··· 63 63 #define mmCGTT_GS_NGG_CLK_CTRL 0x5087 64 64 #define mmCGTT_GS_NGG_CLK_CTRL_BASE_IDX 1 65 65 66 + #define GB_ADDR_CONFIG__NUM_PKRS__SHIFT 0x8 67 + #define GB_ADDR_CONFIG__NUM_PKRS_MASK 0x00000700L 68 + 66 69 MODULE_FIRMWARE("amdgpu/navi10_ce.bin"); 67 70 MODULE_FIRMWARE("amdgpu/navi10_pfp.bin"); 68 71 MODULE_FIRMWARE("amdgpu/navi10_me.bin"); ··· 4005 4002 adev->gfx.config.sc_earlyz_tile_fifo_size = 0x4C0; 4006 4003 gb_addr_config = RREG32_SOC15(GC, 0, mmGB_ADDR_CONFIG); 4007 4004 break; 4005 + case CHIP_SIENNA_CICHLID: 4006 + adev->gfx.config.max_hw_contexts = 8; 4007 + adev->gfx.config.sc_prim_fifo_size_frontend = 0x20; 4008 + adev->gfx.config.sc_prim_fifo_size_backend = 0x100; 4009 + adev->gfx.config.sc_hiz_tile_fifo_size = 0; 4010 + adev->gfx.config.sc_earlyz_tile_fifo_size = 0x4C0; 4011 + gb_addr_config = RREG32_SOC15(GC, 0, mmGB_ADDR_CONFIG); 4012 + adev->gfx.config.gb_addr_config_fields.num_pkrs = 4013 + 1 << REG_GET_FIELD(gb_addr_config, GB_ADDR_CONFIG, NUM_PKRS); 4014 + break; 4008 4015 default: 4009 4016 BUG(); 4010 4017 break; ··· 4120 4107 case CHIP_NAVI10: 4121 4108 case CHIP_NAVI14: 4122 4109 case CHIP_NAVI12: 4110 + case CHIP_SIENNA_CICHLID: 4123 4111 adev->gfx.me.num_me = 1; 4124 4112 adev->gfx.me.num_pipe_per_me = 1; 4125 4113 adev->gfx.me.num_queue_per_pipe = 1; ··· 8267 8253 switch (adev->asic_type) { 8268 8254 case CHIP_NAVI10: 8269 8255 case CHIP_NAVI14: 8256 + case CHIP_SIENNA_CICHLID: 8270 8257 adev->gfx.rlc.funcs = &gfx_v10_0_rlc_funcs; 8271 8258 break; 8272 8259 case CHIP_NAVI12:
+1
drivers/gpu/drm/amd/amdgpu/nv.c
··· 487 487 amdgpu_device_ip_block_add(adev, &nv_common_ip_block); 488 488 amdgpu_device_ip_block_add(adev, &gmc_v10_0_ip_block); 489 489 amdgpu_device_ip_block_add(adev, &navi10_ih_ip_block); 490 + amdgpu_device_ip_block_add(adev, &gfx_v10_0_ip_block); 490 491 break; 491 492 default: 492 493 return -EINVAL;