diff options
author | David Zhang <david1.zhang@amd.com> | 2015-07-07 13:05:16 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-08-17 16:50:23 -0400 |
commit | 48299f95f75b695329c53a33dd6673ccf1b5a03f (patch) | |
tree | c3a31d3a40fd716eae255eb13af7afcae5f49caf /drivers/gpu/drm/amd/amdgpu/vi.c | |
parent | 41548ef78bbf26994546ea5225ad4b4c1bf96d1f (diff) |
drm/amdgpu: Add Fiji DID 0x7300 common support
Signed-off-by: David Zhang <david1.zhang@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vi.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vi.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c index 2095f57c27e1..7d1ae2437309 100644 --- a/drivers/gpu/drm/amd/amdgpu/vi.c +++ b/drivers/gpu/drm/amd/amdgpu/vi.c | |||
@@ -203,6 +203,17 @@ static const u32 tonga_mgcg_cgcg_init[] = | |||
203 | mmHDP_XDP_CGTT_BLK_CTRL, 0xc0000fff, 0x00000104, | 203 | mmHDP_XDP_CGTT_BLK_CTRL, 0xc0000fff, 0x00000104, |
204 | }; | 204 | }; |
205 | 205 | ||
206 | static const u32 fiji_mgcg_cgcg_init[] = | ||
207 | { | ||
208 | mmCGTT_DRM_CLK_CTRL0, 0xffffffff, 0x00600100, | ||
209 | mmPCIE_INDEX, 0xffffffff, 0x0140001c, | ||
210 | mmPCIE_DATA, 0x000f0000, 0x00000000, | ||
211 | mmSMC_IND_INDEX_4, 0xffffffff, 0xC060000C, | ||
212 | mmSMC_IND_DATA_4, 0xc0000fff, 0x00000100, | ||
213 | mmCGTT_DRM_CLK_CTRL0, 0xff000fff, 0x00000100, | ||
214 | mmHDP_XDP_CGTT_BLK_CTRL, 0xc0000fff, 0x00000104, | ||
215 | }; | ||
216 | |||
206 | static const u32 iceland_mgcg_cgcg_init[] = | 217 | static const u32 iceland_mgcg_cgcg_init[] = |
207 | { | 218 | { |
208 | mmPCIE_INDEX, 0xffffffff, ixPCIE_CNTL2, | 219 | mmPCIE_INDEX, 0xffffffff, ixPCIE_CNTL2, |
@@ -232,6 +243,11 @@ static void vi_init_golden_registers(struct amdgpu_device *adev) | |||
232 | iceland_mgcg_cgcg_init, | 243 | iceland_mgcg_cgcg_init, |
233 | (const u32)ARRAY_SIZE(iceland_mgcg_cgcg_init)); | 244 | (const u32)ARRAY_SIZE(iceland_mgcg_cgcg_init)); |
234 | break; | 245 | break; |
246 | case CHIP_FIJI: | ||
247 | amdgpu_program_register_sequence(adev, | ||
248 | fiji_mgcg_cgcg_init, | ||
249 | (const u32)ARRAY_SIZE(fiji_mgcg_cgcg_init)); | ||
250 | break; | ||
235 | case CHIP_TONGA: | 251 | case CHIP_TONGA: |
236 | amdgpu_program_register_sequence(adev, | 252 | amdgpu_program_register_sequence(adev, |
237 | tonga_mgcg_cgcg_init, | 253 | tonga_mgcg_cgcg_init, |
@@ -469,6 +485,7 @@ static int vi_read_register(struct amdgpu_device *adev, u32 se_num, | |||
469 | asic_register_table = tonga_allowed_read_registers; | 485 | asic_register_table = tonga_allowed_read_registers; |
470 | size = ARRAY_SIZE(tonga_allowed_read_registers); | 486 | size = ARRAY_SIZE(tonga_allowed_read_registers); |
471 | break; | 487 | break; |
488 | case CHIP_FIJI: | ||
472 | case CHIP_TONGA: | 489 | case CHIP_TONGA: |
473 | case CHIP_CARRIZO: | 490 | case CHIP_CARRIZO: |
474 | asic_register_table = cz_allowed_read_registers; | 491 | asic_register_table = cz_allowed_read_registers; |
@@ -1147,6 +1164,18 @@ static const struct amdgpu_ip_block_version tonga_ip_blocks[] = | |||
1147 | }, | 1164 | }, |
1148 | }; | 1165 | }; |
1149 | 1166 | ||
1167 | static const struct amdgpu_ip_block_version fiji_ip_blocks[] = | ||
1168 | { | ||
1169 | /* ORDER MATTERS! */ | ||
1170 | { | ||
1171 | .type = AMD_IP_BLOCK_TYPE_COMMON, | ||
1172 | .major = 2, | ||
1173 | .minor = 0, | ||
1174 | .rev = 0, | ||
1175 | .funcs = &vi_common_ip_funcs, | ||
1176 | } | ||
1177 | }; | ||
1178 | |||
1150 | static const struct amdgpu_ip_block_version cz_ip_blocks[] = | 1179 | static const struct amdgpu_ip_block_version cz_ip_blocks[] = |
1151 | { | 1180 | { |
1152 | /* ORDER MATTERS! */ | 1181 | /* ORDER MATTERS! */ |
@@ -1222,6 +1251,10 @@ int vi_set_ip_blocks(struct amdgpu_device *adev) | |||
1222 | adev->ip_blocks = topaz_ip_blocks; | 1251 | adev->ip_blocks = topaz_ip_blocks; |
1223 | adev->num_ip_blocks = ARRAY_SIZE(topaz_ip_blocks); | 1252 | adev->num_ip_blocks = ARRAY_SIZE(topaz_ip_blocks); |
1224 | break; | 1253 | break; |
1254 | case CHIP_FIJI: | ||
1255 | adev->ip_blocks = fiji_ip_blocks; | ||
1256 | adev->num_ip_blocks = ARRAY_SIZE(fiji_ip_blocks); | ||
1257 | break; | ||
1225 | case CHIP_TONGA: | 1258 | case CHIP_TONGA: |
1226 | adev->ip_blocks = tonga_ip_blocks; | 1259 | adev->ip_blocks = tonga_ip_blocks; |
1227 | adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks); | 1260 | adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks); |
@@ -1299,6 +1332,7 @@ static int vi_common_early_init(void *handle) | |||
1299 | if (amdgpu_smc_load_fw && smc_enabled) | 1332 | if (amdgpu_smc_load_fw && smc_enabled) |
1300 | adev->firmware.smu_load = true; | 1333 | adev->firmware.smu_load = true; |
1301 | break; | 1334 | break; |
1335 | case CHIP_FIJI: | ||
1302 | case CHIP_TONGA: | 1336 | case CHIP_TONGA: |
1303 | adev->has_uvd = true; | 1337 | adev->has_uvd = true; |
1304 | adev->cg_flags = 0; | 1338 | adev->cg_flags = 0; |