Lines Matching refs:adev
200 static int amdgpu_discovery_read_binary_from_vram(struct amdgpu_device *adev, uint8_t *binary) in amdgpu_discovery_read_binary_from_vram() argument
205 amdgpu_device_vram_access(adev, pos, (uint32_t *)binary, in amdgpu_discovery_read_binary_from_vram()
206 adev->mman.discovery_tmr_size, false); in amdgpu_discovery_read_binary_from_vram()
210 static int amdgpu_discovery_read_binary_from_file(struct amdgpu_device *adev, uint8_t *binary) in amdgpu_discovery_read_binary_from_file() argument
221 dev_warn(adev->dev, "amdgpu_discovery is not set properly\n"); in amdgpu_discovery_read_binary_from_file()
225 r = request_firmware(&fw, fw_name, adev->dev); in amdgpu_discovery_read_binary_from_file()
227 dev_err(adev->dev, "can't load firmware \"%s\"\n", in amdgpu_discovery_read_binary_from_file()
263 static void amdgpu_discovery_harvest_config_quirk(struct amdgpu_device *adev) in amdgpu_discovery_harvest_config_quirk() argument
269 if ((adev->ip_versions[UVD_HWIP][1] == IP_VERSION(3, 0, 1)) && in amdgpu_discovery_harvest_config_quirk()
270 (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 2))) { in amdgpu_discovery_harvest_config_quirk()
271 switch (adev->pdev->revision) { in amdgpu_discovery_harvest_config_quirk()
279 adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN1; in amdgpu_discovery_harvest_config_quirk()
287 static int amdgpu_discovery_init(struct amdgpu_device *adev) in amdgpu_discovery_init() argument
296 adev->mman.discovery_tmr_size = DISCOVERY_TMR_SIZE; in amdgpu_discovery_init()
297 adev->mman.discovery_bin = kzalloc(adev->mman.discovery_tmr_size, GFP_KERNEL); in amdgpu_discovery_init()
298 if (!adev->mman.discovery_bin) in amdgpu_discovery_init()
301 r = amdgpu_discovery_read_binary_from_vram(adev, adev->mman.discovery_bin); in amdgpu_discovery_init()
303 dev_err(adev->dev, "failed to read ip discovery binary from vram\n"); in amdgpu_discovery_init()
308 if (!amdgpu_discovery_verify_binary_signature(adev->mman.discovery_bin)) { in amdgpu_discovery_init()
309 dev_warn(adev->dev, "get invalid ip discovery binary signature from vram\n"); in amdgpu_discovery_init()
311 r = amdgpu_discovery_read_binary_from_file(adev, adev->mman.discovery_bin); in amdgpu_discovery_init()
313 dev_err(adev->dev, "failed to read ip discovery binary from file\n"); in amdgpu_discovery_init()
318 if(!amdgpu_discovery_verify_binary_signature(adev->mman.discovery_bin)) { in amdgpu_discovery_init()
319 dev_warn(adev->dev, "get invalid ip discovery binary signature from file\n"); in amdgpu_discovery_init()
325 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_init()
332 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
334 dev_err(adev->dev, "invalid ip discovery binary checksum\n"); in amdgpu_discovery_init()
345 (struct ip_discovery_header *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_init()
347 dev_err(adev->dev, "invalid ip discovery data table signature\n"); in amdgpu_discovery_init()
352 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
354 dev_err(adev->dev, "invalid ip discovery data table checksum\n"); in amdgpu_discovery_init()
366 (struct gpu_info_header *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_init()
369 dev_err(adev->dev, "invalid ip discovery gc table id\n"); in amdgpu_discovery_init()
374 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
376 dev_err(adev->dev, "invalid gc data table checksum\n"); in amdgpu_discovery_init()
388 (struct harvest_info_header *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_init()
391 dev_err(adev->dev, "invalid ip discovery harvest table signature\n"); in amdgpu_discovery_init()
396 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
398 dev_err(adev->dev, "invalid harvest data table checksum\n"); in amdgpu_discovery_init()
410 (struct vcn_info_header *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_init()
413 dev_err(adev->dev, "invalid ip discovery vcn table id\n"); in amdgpu_discovery_init()
418 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
420 dev_err(adev->dev, "invalid vcn data table checksum\n"); in amdgpu_discovery_init()
432 (struct mall_info_header *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_init()
435 dev_err(adev->dev, "invalid ip discovery mall table id\n"); in amdgpu_discovery_init()
440 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
442 dev_err(adev->dev, "invalid mall data table checksum\n"); in amdgpu_discovery_init()
451 kfree(adev->mman.discovery_bin); in amdgpu_discovery_init()
452 adev->mman.discovery_bin = NULL; in amdgpu_discovery_init()
457 static void amdgpu_discovery_sysfs_fini(struct amdgpu_device *adev);
459 void amdgpu_discovery_fini(struct amdgpu_device *adev) in amdgpu_discovery_fini() argument
461 amdgpu_discovery_sysfs_fini(adev); in amdgpu_discovery_fini()
462 kfree(adev->mman.discovery_bin); in amdgpu_discovery_fini()
463 adev->mman.discovery_bin = NULL; in amdgpu_discovery_fini()
482 static void amdgpu_discovery_read_harvest_bit_per_ip(struct amdgpu_device *adev, in amdgpu_discovery_read_harvest_bit_per_ip() argument
492 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_read_harvest_bit_per_ip()
493 ihdr = (struct ip_discovery_header *)(adev->mman.discovery_bin + in amdgpu_discovery_read_harvest_bit_per_ip()
500 dhdr = (struct die_header *)(adev->mman.discovery_bin + die_offset); in amdgpu_discovery_read_harvest_bit_per_ip()
505 ip = (struct ip *)(adev->mman.discovery_bin + ip_offset); in amdgpu_discovery_read_harvest_bit_per_ip()
515 adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN0; in amdgpu_discovery_read_harvest_bit_per_ip()
517 adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN1; in amdgpu_discovery_read_harvest_bit_per_ip()
520 adev->harvest_ip_mask |= AMD_HARVEST_IP_DMU_MASK; in amdgpu_discovery_read_harvest_bit_per_ip()
532 static void amdgpu_discovery_read_from_harvest_table(struct amdgpu_device *adev, in amdgpu_discovery_read_from_harvest_table() argument
541 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_read_from_harvest_table()
545 dev_err(adev->dev, "invalid harvest table offset\n"); in amdgpu_discovery_read_from_harvest_table()
549 harvest_info = (struct harvest_table *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_read_from_harvest_table()
559 adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN0; in amdgpu_discovery_read_from_harvest_table()
561 adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN1; in amdgpu_discovery_read_from_harvest_table()
564 adev->harvest_ip_mask |= AMD_HARVEST_IP_DMU_MASK; in amdgpu_discovery_read_from_harvest_table()
803 struct amdgpu_device *adev; member
819 struct amdgpu_device *adev = ip_top->adev; in ip_disc_release() local
821 adev->ip_top = NULL; in ip_disc_release()
825 static int amdgpu_discovery_sysfs_ips(struct amdgpu_device *adev, in amdgpu_discovery_sysfs_ips() argument
844 ip = (struct ip *)(adev->mman.discovery_bin + ip_offset); in amdgpu_discovery_sysfs_ips()
914 static int amdgpu_discovery_sysfs_recurse(struct amdgpu_device *adev) in amdgpu_discovery_sysfs_recurse() argument
919 struct kset *die_kset = &adev->ip_top->die_kset; in amdgpu_discovery_sysfs_recurse()
924 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_sysfs_recurse()
925 ihdr = (struct ip_discovery_header *)(adev->mman.discovery_bin + in amdgpu_discovery_sysfs_recurse()
935 dhdr = (struct die_header *)(adev->mman.discovery_bin + die_offset); in amdgpu_discovery_sysfs_recurse()
961 amdgpu_discovery_sysfs_ips(adev, ip_die_entry, ip_offset, num_ips); in amdgpu_discovery_sysfs_recurse()
967 static int amdgpu_discovery_sysfs_init(struct amdgpu_device *adev) in amdgpu_discovery_sysfs_init() argument
972 adev->ip_top = kzalloc(sizeof(*adev->ip_top), GFP_KERNEL); in amdgpu_discovery_sysfs_init()
973 if (!adev->ip_top) in amdgpu_discovery_sysfs_init()
976 adev->ip_top->adev = adev; in amdgpu_discovery_sysfs_init()
978 res = kobject_init_and_add(&adev->ip_top->kobj, &ip_discovery_ktype, in amdgpu_discovery_sysfs_init()
979 &adev->dev->kobj, "ip_discovery"); in amdgpu_discovery_sysfs_init()
985 die_kset = &adev->ip_top->die_kset; in amdgpu_discovery_sysfs_init()
987 die_kset->kobj.parent = &adev->ip_top->kobj; in amdgpu_discovery_sysfs_init()
989 res = kset_register(&adev->ip_top->die_kset); in amdgpu_discovery_sysfs_init()
999 res = amdgpu_discovery_sysfs_recurse(adev); in amdgpu_discovery_sysfs_init()
1003 kobject_put(&adev->ip_top->kobj); in amdgpu_discovery_sysfs_init()
1046 static void amdgpu_discovery_sysfs_fini(struct amdgpu_device *adev) in amdgpu_discovery_sysfs_fini() argument
1051 die_kset = &adev->ip_top->die_kset; in amdgpu_discovery_sysfs_fini()
1060 kobject_put(&adev->ip_top->die_kset.kobj); in amdgpu_discovery_sysfs_fini()
1061 kobject_put(&adev->ip_top->kobj); in amdgpu_discovery_sysfs_fini()
1066 static int amdgpu_discovery_reg_base_init(struct amdgpu_device *adev) in amdgpu_discovery_reg_base_init() argument
1081 r = amdgpu_discovery_init(adev); in amdgpu_discovery_reg_base_init()
1087 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_reg_base_init()
1088 ihdr = (struct ip_discovery_header *)(adev->mman.discovery_bin + in amdgpu_discovery_reg_base_init()
1096 dhdr = (struct die_header *)(adev->mman.discovery_bin + die_offset); in amdgpu_discovery_reg_base_init()
1110 ip = (struct ip *)(adev->mman.discovery_bin + ip_offset); in amdgpu_discovery_reg_base_init()
1131 adev->vcn.vcn_config[adev->vcn.num_vcn_inst] = in amdgpu_discovery_reg_base_init()
1134 if (adev->vcn.num_vcn_inst < AMDGPU_MAX_VCN_INSTANCES) in amdgpu_discovery_reg_base_init()
1135 adev->vcn.num_vcn_inst++; in amdgpu_discovery_reg_base_init()
1137 dev_err(adev->dev, "Too many VCN instances: %d vs %d\n", in amdgpu_discovery_reg_base_init()
1138 adev->vcn.num_vcn_inst + 1, in amdgpu_discovery_reg_base_init()
1145 if (adev->sdma.num_instances < AMDGPU_MAX_SDMA_INSTANCES) in amdgpu_discovery_reg_base_init()
1146 adev->sdma.num_instances++; in amdgpu_discovery_reg_base_init()
1148 dev_err(adev->dev, "Too many SDMA instances: %d vs %d\n", in amdgpu_discovery_reg_base_init()
1149 adev->sdma.num_instances + 1, in amdgpu_discovery_reg_base_init()
1154 adev->gmc.num_umc++; in amdgpu_discovery_reg_base_init()
1169 adev->reg_offset[hw_ip][ip->number_instance] = in amdgpu_discovery_reg_base_init()
1180 adev->ip_versions[hw_ip][ip->number_instance] = in amdgpu_discovery_reg_base_init()
1190 amdgpu_discovery_sysfs_init(adev); in amdgpu_discovery_reg_base_init()
1195 int amdgpu_discovery_get_ip_version(struct amdgpu_device *adev, int hw_id, int number_instance, in amdgpu_discovery_get_ip_version() argument
1208 if (!adev->mman.discovery_bin) { in amdgpu_discovery_get_ip_version()
1213 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_get_ip_version()
1214 ihdr = (struct ip_discovery_header *)(adev->mman.discovery_bin + in amdgpu_discovery_get_ip_version()
1220 dhdr = (struct die_header *)(adev->mman.discovery_bin + die_offset); in amdgpu_discovery_get_ip_version()
1225 ip = (struct ip *)(adev->mman.discovery_bin + ip_offset); in amdgpu_discovery_get_ip_version()
1243 static void amdgpu_discovery_harvest_ip(struct amdgpu_device *adev) in amdgpu_discovery_harvest_ip() argument
1253 if (adev->ip_versions[GC_HWIP][0] < IP_VERSION(10, 2, 0)) { in amdgpu_discovery_harvest_ip()
1254 if ((adev->pdev->device == 0x731E && in amdgpu_discovery_harvest_ip()
1255 (adev->pdev->revision == 0xC6 || in amdgpu_discovery_harvest_ip()
1256 adev->pdev->revision == 0xC7)) || in amdgpu_discovery_harvest_ip()
1257 (adev->pdev->device == 0x7340 && in amdgpu_discovery_harvest_ip()
1258 adev->pdev->revision == 0xC9) || in amdgpu_discovery_harvest_ip()
1259 (adev->pdev->device == 0x7360 && in amdgpu_discovery_harvest_ip()
1260 adev->pdev->revision == 0xC7)) in amdgpu_discovery_harvest_ip()
1261 amdgpu_discovery_read_harvest_bit_per_ip(adev, in amdgpu_discovery_harvest_ip()
1264 amdgpu_discovery_read_from_harvest_table(adev, in amdgpu_discovery_harvest_ip()
1269 amdgpu_discovery_harvest_config_quirk(adev); in amdgpu_discovery_harvest_ip()
1271 if (vcn_harvest_count == adev->vcn.num_vcn_inst) { in amdgpu_discovery_harvest_ip()
1272 adev->harvest_ip_mask |= AMD_HARVEST_IP_VCN_MASK; in amdgpu_discovery_harvest_ip()
1273 adev->harvest_ip_mask |= AMD_HARVEST_IP_JPEG_MASK; in amdgpu_discovery_harvest_ip()
1276 if (umc_harvest_count < adev->gmc.num_umc) { in amdgpu_discovery_harvest_ip()
1277 adev->gmc.num_umc -= umc_harvest_count; in amdgpu_discovery_harvest_ip()
1288 static int amdgpu_discovery_get_gfx_info(struct amdgpu_device *adev) in amdgpu_discovery_get_gfx_info() argument
1294 if (!adev->mman.discovery_bin) { in amdgpu_discovery_get_gfx_info()
1299 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_get_gfx_info()
1305 gc_info = (union gc_info *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_get_gfx_info()
1309 adev->gfx.config.max_shader_engines = le32_to_cpu(gc_info->v1.gc_num_se); in amdgpu_discovery_get_gfx_info()
1310 adev->gfx.config.max_cu_per_sh = 2 * (le32_to_cpu(gc_info->v1.gc_num_wgp0_per_sa) + in amdgpu_discovery_get_gfx_info()
1312 adev->gfx.config.max_sh_per_se = le32_to_cpu(gc_info->v1.gc_num_sa_per_se); in amdgpu_discovery_get_gfx_info()
1313 adev->gfx.config.max_backends_per_se = le32_to_cpu(gc_info->v1.gc_num_rb_per_se); in amdgpu_discovery_get_gfx_info()
1314 adev->gfx.config.max_texture_channel_caches = le32_to_cpu(gc_info->v1.gc_num_gl2c); in amdgpu_discovery_get_gfx_info()
1315 adev->gfx.config.max_gprs = le32_to_cpu(gc_info->v1.gc_num_gprs); in amdgpu_discovery_get_gfx_info()
1316 adev->gfx.config.max_gs_threads = le32_to_cpu(gc_info->v1.gc_num_max_gs_thds); in amdgpu_discovery_get_gfx_info()
1317 adev->gfx.config.gs_vgt_table_depth = le32_to_cpu(gc_info->v1.gc_gs_table_depth); in amdgpu_discovery_get_gfx_info()
1318 adev->gfx.config.gs_prim_buffer_depth = le32_to_cpu(gc_info->v1.gc_gsprim_buff_depth); in amdgpu_discovery_get_gfx_info()
1319 adev->gfx.config.double_offchip_lds_buf = le32_to_cpu(gc_info->v1.gc_double_offchip_lds_buffer); in amdgpu_discovery_get_gfx_info()
1320 adev->gfx.cu_info.wave_front_size = le32_to_cpu(gc_info->v1.gc_wave_size); in amdgpu_discovery_get_gfx_info()
1321 adev->gfx.cu_info.max_waves_per_simd = le32_to_cpu(gc_info->v1.gc_max_waves_per_simd); in amdgpu_discovery_get_gfx_info()
1322 adev->gfx.cu_info.max_scratch_slots_per_cu = le32_to_cpu(gc_info->v1.gc_max_scratch_slots_per_cu); in amdgpu_discovery_get_gfx_info()
1323 adev->gfx.cu_info.lds_size = le32_to_cpu(gc_info->v1.gc_lds_size); in amdgpu_discovery_get_gfx_info()
1324 adev->gfx.config.num_sc_per_sh = le32_to_cpu(gc_info->v1.gc_num_sc_per_se) / in amdgpu_discovery_get_gfx_info()
1326 adev->gfx.config.num_packer_per_sc = le32_to_cpu(gc_info->v1.gc_num_packer_per_sc); in amdgpu_discovery_get_gfx_info()
1328 adev->gfx.config.gc_num_tcp_per_sa = le32_to_cpu(gc_info->v1_1.gc_num_tcp_per_sa); in amdgpu_discovery_get_gfx_info()
1329 adev->gfx.config.gc_num_sdp_interface = le32_to_cpu(gc_info->v1_1.gc_num_sdp_interface); in amdgpu_discovery_get_gfx_info()
1330 adev->gfx.config.gc_num_tcps = le32_to_cpu(gc_info->v1_1.gc_num_tcps); in amdgpu_discovery_get_gfx_info()
1333 adev->gfx.config.gc_num_tcp_per_wpg = le32_to_cpu(gc_info->v1_2.gc_num_tcp_per_wpg); in amdgpu_discovery_get_gfx_info()
1334 adev->gfx.config.gc_tcp_l1_size = le32_to_cpu(gc_info->v1_2.gc_tcp_l1_size); in amdgpu_discovery_get_gfx_info()
1335 adev->gfx.config.gc_num_sqc_per_wgp = le32_to_cpu(gc_info->v1_2.gc_num_sqc_per_wgp); in amdgpu_discovery_get_gfx_info()
1336 …adev->gfx.config.gc_l1_instruction_cache_size_per_sqc = le32_to_cpu(gc_info->v1_2.gc_l1_instructio… in amdgpu_discovery_get_gfx_info()
1337 …adev->gfx.config.gc_l1_data_cache_size_per_sqc = le32_to_cpu(gc_info->v1_2.gc_l1_data_cache_size_p… in amdgpu_discovery_get_gfx_info()
1338 adev->gfx.config.gc_gl1c_per_sa = le32_to_cpu(gc_info->v1_2.gc_gl1c_per_sa); in amdgpu_discovery_get_gfx_info()
1339 … adev->gfx.config.gc_gl1c_size_per_instance = le32_to_cpu(gc_info->v1_2.gc_gl1c_size_per_instance); in amdgpu_discovery_get_gfx_info()
1340 adev->gfx.config.gc_gl2c_per_gpu = le32_to_cpu(gc_info->v1_2.gc_gl2c_per_gpu); in amdgpu_discovery_get_gfx_info()
1344 adev->gfx.config.max_shader_engines = le32_to_cpu(gc_info->v2.gc_num_se); in amdgpu_discovery_get_gfx_info()
1345 adev->gfx.config.max_cu_per_sh = le32_to_cpu(gc_info->v2.gc_num_cu_per_sh); in amdgpu_discovery_get_gfx_info()
1346 adev->gfx.config.max_sh_per_se = le32_to_cpu(gc_info->v2.gc_num_sh_per_se); in amdgpu_discovery_get_gfx_info()
1347 adev->gfx.config.max_backends_per_se = le32_to_cpu(gc_info->v2.gc_num_rb_per_se); in amdgpu_discovery_get_gfx_info()
1348 adev->gfx.config.max_texture_channel_caches = le32_to_cpu(gc_info->v2.gc_num_tccs); in amdgpu_discovery_get_gfx_info()
1349 adev->gfx.config.max_gprs = le32_to_cpu(gc_info->v2.gc_num_gprs); in amdgpu_discovery_get_gfx_info()
1350 adev->gfx.config.max_gs_threads = le32_to_cpu(gc_info->v2.gc_num_max_gs_thds); in amdgpu_discovery_get_gfx_info()
1351 adev->gfx.config.gs_vgt_table_depth = le32_to_cpu(gc_info->v2.gc_gs_table_depth); in amdgpu_discovery_get_gfx_info()
1352 adev->gfx.config.gs_prim_buffer_depth = le32_to_cpu(gc_info->v2.gc_gsprim_buff_depth); in amdgpu_discovery_get_gfx_info()
1353 adev->gfx.config.double_offchip_lds_buf = le32_to_cpu(gc_info->v2.gc_double_offchip_lds_buffer); in amdgpu_discovery_get_gfx_info()
1354 adev->gfx.cu_info.wave_front_size = le32_to_cpu(gc_info->v2.gc_wave_size); in amdgpu_discovery_get_gfx_info()
1355 adev->gfx.cu_info.max_waves_per_simd = le32_to_cpu(gc_info->v2.gc_max_waves_per_simd); in amdgpu_discovery_get_gfx_info()
1356 adev->gfx.cu_info.max_scratch_slots_per_cu = le32_to_cpu(gc_info->v2.gc_max_scratch_slots_per_cu); in amdgpu_discovery_get_gfx_info()
1357 adev->gfx.cu_info.lds_size = le32_to_cpu(gc_info->v2.gc_lds_size); in amdgpu_discovery_get_gfx_info()
1358 adev->gfx.config.num_sc_per_sh = le32_to_cpu(gc_info->v2.gc_num_sc_per_se) / in amdgpu_discovery_get_gfx_info()
1360 adev->gfx.config.num_packer_per_sc = le32_to_cpu(gc_info->v2.gc_num_packer_per_sc); in amdgpu_discovery_get_gfx_info()
1363 dev_err(adev->dev, in amdgpu_discovery_get_gfx_info()
1376 static int amdgpu_discovery_get_mall_info(struct amdgpu_device *adev) in amdgpu_discovery_get_mall_info() argument
1384 if (!adev->mman.discovery_bin) { in amdgpu_discovery_get_mall_info()
1389 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_get_mall_info()
1395 mall_info = (union mall_info *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_get_mall_info()
1403 for (u = 0; u < adev->gmc.num_umc; u++) { in amdgpu_discovery_get_mall_info()
1411 adev->gmc.mall_size = mall_size; in amdgpu_discovery_get_mall_info()
1414 dev_err(adev->dev, in amdgpu_discovery_get_mall_info()
1427 static int amdgpu_discovery_get_vcn_info(struct amdgpu_device *adev) in amdgpu_discovery_get_vcn_info() argument
1434 if (!adev->mman.discovery_bin) { in amdgpu_discovery_get_vcn_info()
1444 if (adev->vcn.num_vcn_inst > VCN_INFO_TABLE_MAX_NUM_INSTANCES) { in amdgpu_discovery_get_vcn_info()
1445 dev_err(adev->dev, "invalid vcn instances\n"); in amdgpu_discovery_get_vcn_info()
1449 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_get_vcn_info()
1455 vcn_info = (union vcn_info *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_get_vcn_info()
1462 for (v = 0; v < adev->vcn.num_vcn_inst; v++) { in amdgpu_discovery_get_vcn_info()
1463 adev->vcn.vcn_codec_disable_mask[v] = in amdgpu_discovery_get_vcn_info()
1468 dev_err(adev->dev, in amdgpu_discovery_get_vcn_info()
1477 static int amdgpu_discovery_set_common_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_common_ip_blocks() argument
1480 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_common_ip_blocks()
1489 amdgpu_device_ip_block_add(adev, &vega10_common_ip_block); in amdgpu_discovery_set_common_ip_blocks()
1504 amdgpu_device_ip_block_add(adev, &nv_common_ip_block); in amdgpu_discovery_set_common_ip_blocks()
1510 amdgpu_device_ip_block_add(adev, &soc21_common_ip_block); in amdgpu_discovery_set_common_ip_blocks()
1513 dev_err(adev->dev, in amdgpu_discovery_set_common_ip_blocks()
1515 adev->ip_versions[GC_HWIP][0]); in amdgpu_discovery_set_common_ip_blocks()
1521 static int amdgpu_discovery_set_gmc_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_gmc_ip_blocks() argument
1524 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_gmc_ip_blocks()
1533 amdgpu_device_ip_block_add(adev, &gmc_v9_0_ip_block); in amdgpu_discovery_set_gmc_ip_blocks()
1548 amdgpu_device_ip_block_add(adev, &gmc_v10_0_ip_block); in amdgpu_discovery_set_gmc_ip_blocks()
1554 amdgpu_device_ip_block_add(adev, &gmc_v11_0_ip_block); in amdgpu_discovery_set_gmc_ip_blocks()
1557 dev_err(adev->dev, in amdgpu_discovery_set_gmc_ip_blocks()
1559 adev->ip_versions[GC_HWIP][0]); in amdgpu_discovery_set_gmc_ip_blocks()
1565 static int amdgpu_discovery_set_ih_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_ih_ip_blocks() argument
1567 switch (adev->ip_versions[OSSSYS_HWIP][0]) { in amdgpu_discovery_set_ih_ip_blocks()
1573 amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block); in amdgpu_discovery_set_ih_ip_blocks()
1578 amdgpu_device_ip_block_add(adev, &vega20_ih_ip_block); in amdgpu_discovery_set_ih_ip_blocks()
1586 amdgpu_device_ip_block_add(adev, &navi10_ih_ip_block); in amdgpu_discovery_set_ih_ip_blocks()
1591 amdgpu_device_ip_block_add(adev, &ih_v6_0_ip_block); in amdgpu_discovery_set_ih_ip_blocks()
1594 dev_err(adev->dev, in amdgpu_discovery_set_ih_ip_blocks()
1596 adev->ip_versions[OSSSYS_HWIP][0]); in amdgpu_discovery_set_ih_ip_blocks()
1602 static int amdgpu_discovery_set_psp_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_psp_ip_blocks() argument
1604 switch (adev->ip_versions[MP0_HWIP][0]) { in amdgpu_discovery_set_psp_ip_blocks()
1606 amdgpu_device_ip_block_add(adev, &psp_v3_1_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1610 amdgpu_device_ip_block_add(adev, &psp_v10_0_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1622 amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1625 amdgpu_device_ip_block_add(adev, &psp_v11_0_8_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1629 amdgpu_device_ip_block_add(adev, &psp_v12_0_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1639 amdgpu_device_ip_block_add(adev, &psp_v13_0_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1642 amdgpu_device_ip_block_add(adev, &psp_v13_0_4_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1645 dev_err(adev->dev, in amdgpu_discovery_set_psp_ip_blocks()
1647 adev->ip_versions[MP0_HWIP][0]); in amdgpu_discovery_set_psp_ip_blocks()
1653 static int amdgpu_discovery_set_smu_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_smu_ip_blocks() argument
1655 switch (adev->ip_versions[MP1_HWIP][0]) { in amdgpu_discovery_set_smu_ip_blocks()
1660 if (adev->asic_type == CHIP_ARCTURUS) in amdgpu_discovery_set_smu_ip_blocks()
1661 amdgpu_device_ip_block_add(adev, &smu_v11_0_ip_block); in amdgpu_discovery_set_smu_ip_blocks()
1663 amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); in amdgpu_discovery_set_smu_ip_blocks()
1674 amdgpu_device_ip_block_add(adev, &smu_v11_0_ip_block); in amdgpu_discovery_set_smu_ip_blocks()
1678 amdgpu_device_ip_block_add(adev, &smu_v12_0_ip_block); in amdgpu_discovery_set_smu_ip_blocks()
1689 amdgpu_device_ip_block_add(adev, &smu_v13_0_ip_block); in amdgpu_discovery_set_smu_ip_blocks()
1692 dev_err(adev->dev, in amdgpu_discovery_set_smu_ip_blocks()
1694 adev->ip_versions[MP1_HWIP][0]); in amdgpu_discovery_set_smu_ip_blocks()
1700 static int amdgpu_discovery_set_display_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_display_ip_blocks() argument
1702 if (adev->enable_virtual_display || amdgpu_sriov_vf(adev)) { in amdgpu_discovery_set_display_ip_blocks()
1703 amdgpu_device_ip_block_add(adev, &amdgpu_vkms_ip_block); in amdgpu_discovery_set_display_ip_blocks()
1707 if (!amdgpu_device_has_dc_support(adev)) in amdgpu_discovery_set_display_ip_blocks()
1711 if (adev->ip_versions[DCE_HWIP][0]) { in amdgpu_discovery_set_display_ip_blocks()
1712 switch (adev->ip_versions[DCE_HWIP][0]) { in amdgpu_discovery_set_display_ip_blocks()
1730 amdgpu_device_ip_block_add(adev, &dm_ip_block); in amdgpu_discovery_set_display_ip_blocks()
1733 dev_err(adev->dev, in amdgpu_discovery_set_display_ip_blocks()
1735 adev->ip_versions[DCE_HWIP][0]); in amdgpu_discovery_set_display_ip_blocks()
1738 } else if (adev->ip_versions[DCI_HWIP][0]) { in amdgpu_discovery_set_display_ip_blocks()
1739 switch (adev->ip_versions[DCI_HWIP][0]) { in amdgpu_discovery_set_display_ip_blocks()
1743 amdgpu_device_ip_block_add(adev, &dm_ip_block); in amdgpu_discovery_set_display_ip_blocks()
1746 dev_err(adev->dev, in amdgpu_discovery_set_display_ip_blocks()
1748 adev->ip_versions[DCI_HWIP][0]); in amdgpu_discovery_set_display_ip_blocks()
1756 static int amdgpu_discovery_set_gc_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_gc_ip_blocks() argument
1758 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_gc_ip_blocks()
1767 amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block); in amdgpu_discovery_set_gc_ip_blocks()
1782 amdgpu_device_ip_block_add(adev, &gfx_v10_0_ip_block); in amdgpu_discovery_set_gc_ip_blocks()
1788 amdgpu_device_ip_block_add(adev, &gfx_v11_0_ip_block); in amdgpu_discovery_set_gc_ip_blocks()
1791 dev_err(adev->dev, in amdgpu_discovery_set_gc_ip_blocks()
1793 adev->ip_versions[GC_HWIP][0]); in amdgpu_discovery_set_gc_ip_blocks()
1799 static int amdgpu_discovery_set_sdma_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_sdma_ip_blocks() argument
1801 switch (adev->ip_versions[SDMA0_HWIP][0]) { in amdgpu_discovery_set_sdma_ip_blocks()
1810 amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block); in amdgpu_discovery_set_sdma_ip_blocks()
1816 amdgpu_device_ip_block_add(adev, &sdma_v5_0_ip_block); in amdgpu_discovery_set_sdma_ip_blocks()
1826 amdgpu_device_ip_block_add(adev, &sdma_v5_2_ip_block); in amdgpu_discovery_set_sdma_ip_blocks()
1832 amdgpu_device_ip_block_add(adev, &sdma_v6_0_ip_block); in amdgpu_discovery_set_sdma_ip_blocks()
1835 dev_err(adev->dev, in amdgpu_discovery_set_sdma_ip_blocks()
1837 adev->ip_versions[SDMA0_HWIP][0]); in amdgpu_discovery_set_sdma_ip_blocks()
1843 static int amdgpu_discovery_set_mm_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_mm_ip_blocks() argument
1845 if (adev->ip_versions[VCE_HWIP][0]) { in amdgpu_discovery_set_mm_ip_blocks()
1846 switch (adev->ip_versions[UVD_HWIP][0]) { in amdgpu_discovery_set_mm_ip_blocks()
1850 if (!(adev->asic_type == CHIP_VEGA20 && amdgpu_sriov_vf(adev))) in amdgpu_discovery_set_mm_ip_blocks()
1851 amdgpu_device_ip_block_add(adev, &uvd_v7_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1854 dev_err(adev->dev, in amdgpu_discovery_set_mm_ip_blocks()
1856 adev->ip_versions[UVD_HWIP][0]); in amdgpu_discovery_set_mm_ip_blocks()
1859 switch (adev->ip_versions[VCE_HWIP][0]) { in amdgpu_discovery_set_mm_ip_blocks()
1863 if (!(adev->asic_type == CHIP_VEGA20 && amdgpu_sriov_vf(adev))) in amdgpu_discovery_set_mm_ip_blocks()
1864 amdgpu_device_ip_block_add(adev, &vce_v4_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1867 dev_err(adev->dev, in amdgpu_discovery_set_mm_ip_blocks()
1869 adev->ip_versions[VCE_HWIP][0]); in amdgpu_discovery_set_mm_ip_blocks()
1873 switch (adev->ip_versions[UVD_HWIP][0]) { in amdgpu_discovery_set_mm_ip_blocks()
1876 amdgpu_device_ip_block_add(adev, &vcn_v1_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1881 amdgpu_device_ip_block_add(adev, &vcn_v2_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1882 if (!amdgpu_sriov_vf(adev)) in amdgpu_discovery_set_mm_ip_blocks()
1883 amdgpu_device_ip_block_add(adev, &jpeg_v2_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1888 amdgpu_device_ip_block_add(adev, &vcn_v2_5_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1889 amdgpu_device_ip_block_add(adev, &jpeg_v2_5_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1892 amdgpu_device_ip_block_add(adev, &vcn_v2_6_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1893 amdgpu_device_ip_block_add(adev, &jpeg_v2_6_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1901 amdgpu_device_ip_block_add(adev, &vcn_v3_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1902 if (!amdgpu_sriov_vf(adev)) in amdgpu_discovery_set_mm_ip_blocks()
1903 amdgpu_device_ip_block_add(adev, &jpeg_v3_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1906 amdgpu_device_ip_block_add(adev, &vcn_v3_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1911 amdgpu_device_ip_block_add(adev, &vcn_v4_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1912 if (!amdgpu_sriov_vf(adev)) in amdgpu_discovery_set_mm_ip_blocks()
1913 amdgpu_device_ip_block_add(adev, &jpeg_v4_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1916 dev_err(adev->dev, in amdgpu_discovery_set_mm_ip_blocks()
1918 adev->ip_versions[UVD_HWIP][0]); in amdgpu_discovery_set_mm_ip_blocks()
1925 static int amdgpu_discovery_set_mes_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_mes_ip_blocks() argument
1927 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_mes_ip_blocks()
1941 amdgpu_device_ip_block_add(adev, &mes_v10_1_ip_block); in amdgpu_discovery_set_mes_ip_blocks()
1942 adev->enable_mes = true; in amdgpu_discovery_set_mes_ip_blocks()
1944 adev->enable_mes_kiq = true; in amdgpu_discovery_set_mes_ip_blocks()
1951 amdgpu_device_ip_block_add(adev, &mes_v11_0_ip_block); in amdgpu_discovery_set_mes_ip_blocks()
1952 adev->enable_mes = true; in amdgpu_discovery_set_mes_ip_blocks()
1953 adev->enable_mes_kiq = true; in amdgpu_discovery_set_mes_ip_blocks()
1961 int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_ip_blocks() argument
1965 switch (adev->asic_type) { in amdgpu_discovery_set_ip_blocks()
1967 vega10_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
1968 adev->sdma.num_instances = 2; in amdgpu_discovery_set_ip_blocks()
1969 adev->gmc.num_umc = 4; in amdgpu_discovery_set_ip_blocks()
1970 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
1971 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
1972 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
1973 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
1974 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
1975 adev->ip_versions[SDMA1_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
1976 adev->ip_versions[DF_HWIP][0] = IP_VERSION(2, 1, 0); in amdgpu_discovery_set_ip_blocks()
1977 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(6, 1, 0); in amdgpu_discovery_set_ip_blocks()
1978 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(6, 0, 0); in amdgpu_discovery_set_ip_blocks()
1979 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
1980 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
1981 adev->ip_versions[THM_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
1982 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
1983 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 0, 1); in amdgpu_discovery_set_ip_blocks()
1984 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(7, 0, 0); in amdgpu_discovery_set_ip_blocks()
1985 adev->ip_versions[VCE_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
1986 adev->ip_versions[DCI_HWIP][0] = IP_VERSION(12, 0, 0); in amdgpu_discovery_set_ip_blocks()
1989 vega10_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
1990 adev->sdma.num_instances = 2; in amdgpu_discovery_set_ip_blocks()
1991 adev->gmc.num_umc = 4; in amdgpu_discovery_set_ip_blocks()
1992 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 3, 0); in amdgpu_discovery_set_ip_blocks()
1993 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 3, 0); in amdgpu_discovery_set_ip_blocks()
1994 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 0, 1); in amdgpu_discovery_set_ip_blocks()
1995 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 0, 1); in amdgpu_discovery_set_ip_blocks()
1996 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 0, 1); in amdgpu_discovery_set_ip_blocks()
1997 adev->ip_versions[SDMA1_HWIP][0] = IP_VERSION(4, 0, 1); in amdgpu_discovery_set_ip_blocks()
1998 adev->ip_versions[DF_HWIP][0] = IP_VERSION(2, 5, 0); in amdgpu_discovery_set_ip_blocks()
1999 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(6, 2, 0); in amdgpu_discovery_set_ip_blocks()
2000 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(6, 1, 0); in amdgpu_discovery_set_ip_blocks()
2001 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2002 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2003 adev->ip_versions[THM_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2004 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(9, 0, 1); in amdgpu_discovery_set_ip_blocks()
2005 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 2, 1); in amdgpu_discovery_set_ip_blocks()
2006 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(7, 0, 0); in amdgpu_discovery_set_ip_blocks()
2007 adev->ip_versions[VCE_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
2008 adev->ip_versions[DCI_HWIP][0] = IP_VERSION(12, 0, 1); in amdgpu_discovery_set_ip_blocks()
2011 vega10_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2012 adev->sdma.num_instances = 1; in amdgpu_discovery_set_ip_blocks()
2013 adev->vcn.num_vcn_inst = 1; in amdgpu_discovery_set_ip_blocks()
2014 adev->gmc.num_umc = 2; in amdgpu_discovery_set_ip_blocks()
2015 if (adev->apu_flags & AMD_APU_IS_RAVEN2) { in amdgpu_discovery_set_ip_blocks()
2016 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 2, 0); in amdgpu_discovery_set_ip_blocks()
2017 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 2, 0); in amdgpu_discovery_set_ip_blocks()
2018 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 1, 1); in amdgpu_discovery_set_ip_blocks()
2019 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 1, 1); in amdgpu_discovery_set_ip_blocks()
2020 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 1, 1); in amdgpu_discovery_set_ip_blocks()
2021 adev->ip_versions[DF_HWIP][0] = IP_VERSION(2, 1, 1); in amdgpu_discovery_set_ip_blocks()
2022 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(7, 0, 1); in amdgpu_discovery_set_ip_blocks()
2023 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(7, 5, 0); in amdgpu_discovery_set_ip_blocks()
2024 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(10, 0, 1); in amdgpu_discovery_set_ip_blocks()
2025 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(10, 0, 1); in amdgpu_discovery_set_ip_blocks()
2026 adev->ip_versions[THM_HWIP][0] = IP_VERSION(10, 1, 0); in amdgpu_discovery_set_ip_blocks()
2027 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(10, 0, 1); in amdgpu_discovery_set_ip_blocks()
2028 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 2, 2); in amdgpu_discovery_set_ip_blocks()
2029 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(1, 0, 1); in amdgpu_discovery_set_ip_blocks()
2030 adev->ip_versions[DCE_HWIP][0] = IP_VERSION(1, 0, 1); in amdgpu_discovery_set_ip_blocks()
2032 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 1, 0); in amdgpu_discovery_set_ip_blocks()
2033 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 1, 0); in amdgpu_discovery_set_ip_blocks()
2034 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 1, 0); in amdgpu_discovery_set_ip_blocks()
2035 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 1, 0); in amdgpu_discovery_set_ip_blocks()
2036 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 1, 0); in amdgpu_discovery_set_ip_blocks()
2037 adev->ip_versions[DF_HWIP][0] = IP_VERSION(2, 1, 0); in amdgpu_discovery_set_ip_blocks()
2038 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(7, 0, 0); in amdgpu_discovery_set_ip_blocks()
2039 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(7, 0, 0); in amdgpu_discovery_set_ip_blocks()
2040 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(10, 0, 0); in amdgpu_discovery_set_ip_blocks()
2041 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(10, 0, 0); in amdgpu_discovery_set_ip_blocks()
2042 adev->ip_versions[THM_HWIP][0] = IP_VERSION(10, 0, 0); in amdgpu_discovery_set_ip_blocks()
2043 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(10, 0, 0); in amdgpu_discovery_set_ip_blocks()
2044 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 1, 0); in amdgpu_discovery_set_ip_blocks()
2045 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(1, 0, 0); in amdgpu_discovery_set_ip_blocks()
2046 adev->ip_versions[DCE_HWIP][0] = IP_VERSION(1, 0, 0); in amdgpu_discovery_set_ip_blocks()
2050 vega20_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2051 adev->sdma.num_instances = 2; in amdgpu_discovery_set_ip_blocks()
2052 adev->gmc.num_umc = 8; in amdgpu_discovery_set_ip_blocks()
2053 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 4, 0); in amdgpu_discovery_set_ip_blocks()
2054 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 4, 0); in amdgpu_discovery_set_ip_blocks()
2055 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 2, 0); in amdgpu_discovery_set_ip_blocks()
2056 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 2, 0); in amdgpu_discovery_set_ip_blocks()
2057 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 2, 0); in amdgpu_discovery_set_ip_blocks()
2058 adev->ip_versions[SDMA1_HWIP][0] = IP_VERSION(4, 2, 0); in amdgpu_discovery_set_ip_blocks()
2059 adev->ip_versions[DF_HWIP][0] = IP_VERSION(3, 6, 0); in amdgpu_discovery_set_ip_blocks()
2060 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(7, 4, 0); in amdgpu_discovery_set_ip_blocks()
2061 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(6, 1, 1); in amdgpu_discovery_set_ip_blocks()
2062 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(11, 0, 2); in amdgpu_discovery_set_ip_blocks()
2063 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(11, 0, 2); in amdgpu_discovery_set_ip_blocks()
2064 adev->ip_versions[THM_HWIP][0] = IP_VERSION(11, 0, 2); in amdgpu_discovery_set_ip_blocks()
2065 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(11, 0, 2); in amdgpu_discovery_set_ip_blocks()
2066 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 4, 0); in amdgpu_discovery_set_ip_blocks()
2067 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(7, 2, 0); in amdgpu_discovery_set_ip_blocks()
2068 adev->ip_versions[UVD_HWIP][1] = IP_VERSION(7, 2, 0); in amdgpu_discovery_set_ip_blocks()
2069 adev->ip_versions[VCE_HWIP][0] = IP_VERSION(4, 1, 0); in amdgpu_discovery_set_ip_blocks()
2070 adev->ip_versions[DCI_HWIP][0] = IP_VERSION(12, 1, 0); in amdgpu_discovery_set_ip_blocks()
2073 arct_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2074 adev->sdma.num_instances = 8; in amdgpu_discovery_set_ip_blocks()
2075 adev->vcn.num_vcn_inst = 2; in amdgpu_discovery_set_ip_blocks()
2076 adev->gmc.num_umc = 8; in amdgpu_discovery_set_ip_blocks()
2077 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 4, 1); in amdgpu_discovery_set_ip_blocks()
2078 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 4, 1); in amdgpu_discovery_set_ip_blocks()
2079 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 2, 1); in amdgpu_discovery_set_ip_blocks()
2080 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 2, 1); in amdgpu_discovery_set_ip_blocks()
2081 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2082 adev->ip_versions[SDMA1_HWIP][0] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2083 adev->ip_versions[SDMA1_HWIP][1] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2084 adev->ip_versions[SDMA1_HWIP][2] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2085 adev->ip_versions[SDMA1_HWIP][3] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2086 adev->ip_versions[SDMA1_HWIP][4] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2087 adev->ip_versions[SDMA1_HWIP][5] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2088 adev->ip_versions[SDMA1_HWIP][6] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2089 adev->ip_versions[DF_HWIP][0] = IP_VERSION(3, 6, 1); in amdgpu_discovery_set_ip_blocks()
2090 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(7, 4, 1); in amdgpu_discovery_set_ip_blocks()
2091 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(6, 1, 2); in amdgpu_discovery_set_ip_blocks()
2092 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(11, 0, 4); in amdgpu_discovery_set_ip_blocks()
2093 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(11, 0, 2); in amdgpu_discovery_set_ip_blocks()
2094 adev->ip_versions[THM_HWIP][0] = IP_VERSION(11, 0, 3); in amdgpu_discovery_set_ip_blocks()
2095 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(11, 0, 3); in amdgpu_discovery_set_ip_blocks()
2096 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 4, 1); in amdgpu_discovery_set_ip_blocks()
2097 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(2, 5, 0); in amdgpu_discovery_set_ip_blocks()
2098 adev->ip_versions[UVD_HWIP][1] = IP_VERSION(2, 5, 0); in amdgpu_discovery_set_ip_blocks()
2101 aldebaran_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2102 adev->sdma.num_instances = 5; in amdgpu_discovery_set_ip_blocks()
2103 adev->vcn.num_vcn_inst = 2; in amdgpu_discovery_set_ip_blocks()
2104 adev->gmc.num_umc = 4; in amdgpu_discovery_set_ip_blocks()
2105 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 4, 2); in amdgpu_discovery_set_ip_blocks()
2106 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 4, 2); in amdgpu_discovery_set_ip_blocks()
2107 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2108 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2109 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2110 adev->ip_versions[SDMA0_HWIP][1] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2111 adev->ip_versions[SDMA0_HWIP][2] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2112 adev->ip_versions[SDMA0_HWIP][3] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2113 adev->ip_versions[SDMA0_HWIP][4] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2114 adev->ip_versions[DF_HWIP][0] = IP_VERSION(3, 6, 2); in amdgpu_discovery_set_ip_blocks()
2115 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(7, 4, 4); in amdgpu_discovery_set_ip_blocks()
2116 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(6, 7, 0); in amdgpu_discovery_set_ip_blocks()
2117 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(13, 0, 2); in amdgpu_discovery_set_ip_blocks()
2118 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(13, 0, 2); in amdgpu_discovery_set_ip_blocks()
2119 adev->ip_versions[THM_HWIP][0] = IP_VERSION(13, 0, 2); in amdgpu_discovery_set_ip_blocks()
2120 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(13, 0, 2); in amdgpu_discovery_set_ip_blocks()
2121 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 4, 2); in amdgpu_discovery_set_ip_blocks()
2122 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(2, 6, 0); in amdgpu_discovery_set_ip_blocks()
2123 adev->ip_versions[UVD_HWIP][1] = IP_VERSION(2, 6, 0); in amdgpu_discovery_set_ip_blocks()
2124 adev->ip_versions[XGMI_HWIP][0] = IP_VERSION(6, 1, 0); in amdgpu_discovery_set_ip_blocks()
2127 r = amdgpu_discovery_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2131 amdgpu_discovery_harvest_ip(adev); in amdgpu_discovery_set_ip_blocks()
2132 amdgpu_discovery_get_gfx_info(adev); in amdgpu_discovery_set_ip_blocks()
2133 amdgpu_discovery_get_mall_info(adev); in amdgpu_discovery_set_ip_blocks()
2134 amdgpu_discovery_get_vcn_info(adev); in amdgpu_discovery_set_ip_blocks()
2138 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2144 adev->family = AMDGPU_FAMILY_AI; in amdgpu_discovery_set_ip_blocks()
2149 adev->family = AMDGPU_FAMILY_RV; in amdgpu_discovery_set_ip_blocks()
2160 adev->family = AMDGPU_FAMILY_NV; in amdgpu_discovery_set_ip_blocks()
2163 adev->family = AMDGPU_FAMILY_VGH; in amdgpu_discovery_set_ip_blocks()
2166 adev->family = AMDGPU_FAMILY_YC; in amdgpu_discovery_set_ip_blocks()
2169 adev->family = AMDGPU_FAMILY_GC_10_3_6; in amdgpu_discovery_set_ip_blocks()
2172 adev->family = AMDGPU_FAMILY_GC_10_3_7; in amdgpu_discovery_set_ip_blocks()
2177 adev->family = AMDGPU_FAMILY_GC_11_0_0; in amdgpu_discovery_set_ip_blocks()
2180 adev->family = AMDGPU_FAMILY_GC_11_0_1; in amdgpu_discovery_set_ip_blocks()
2186 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2197 adev->flags |= AMD_IS_APU; in amdgpu_discovery_set_ip_blocks()
2203 if (adev->ip_versions[XGMI_HWIP][0] == IP_VERSION(4, 8, 0)) in amdgpu_discovery_set_ip_blocks()
2204 adev->gmc.xgmi.supported = true; in amdgpu_discovery_set_ip_blocks()
2207 switch (adev->ip_versions[NBIO_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2210 adev->nbio.funcs = &nbio_v6_1_funcs; in amdgpu_discovery_set_ip_blocks()
2211 adev->nbio.hdp_flush_reg = &nbio_v6_1_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2216 adev->nbio.funcs = &nbio_v7_0_funcs; in amdgpu_discovery_set_ip_blocks()
2217 adev->nbio.hdp_flush_reg = &nbio_v7_0_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2222 adev->nbio.funcs = &nbio_v7_4_funcs; in amdgpu_discovery_set_ip_blocks()
2223 adev->nbio.hdp_flush_reg = &nbio_v7_4_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2230 adev->nbio.funcs = &nbio_v7_2_funcs; in amdgpu_discovery_set_ip_blocks()
2231 adev->nbio.hdp_flush_reg = &nbio_v7_2_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2241 adev->nbio.funcs = &nbio_v2_3_funcs; in amdgpu_discovery_set_ip_blocks()
2242 adev->nbio.hdp_flush_reg = &nbio_v2_3_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2246 if (amdgpu_sriov_vf(adev)) in amdgpu_discovery_set_ip_blocks()
2247 adev->nbio.funcs = &nbio_v4_3_sriov_funcs; in amdgpu_discovery_set_ip_blocks()
2249 adev->nbio.funcs = &nbio_v4_3_funcs; in amdgpu_discovery_set_ip_blocks()
2250 adev->nbio.hdp_flush_reg = &nbio_v4_3_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2253 adev->nbio.funcs = &nbio_v7_7_funcs; in amdgpu_discovery_set_ip_blocks()
2254 adev->nbio.hdp_flush_reg = &nbio_v7_7_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2260 switch (adev->ip_versions[HDP_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2269 adev->hdp.funcs = &hdp_v4_0_funcs; in amdgpu_discovery_set_ip_blocks()
2277 adev->hdp.funcs = &hdp_v5_0_funcs; in amdgpu_discovery_set_ip_blocks()
2280 adev->hdp.funcs = &hdp_v5_2_funcs; in amdgpu_discovery_set_ip_blocks()
2284 adev->hdp.funcs = &hdp_v6_0_funcs; in amdgpu_discovery_set_ip_blocks()
2290 switch (adev->ip_versions[DF_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2294 adev->df.funcs = &df_v3_6_funcs; in amdgpu_discovery_set_ip_blocks()
2301 adev->df.funcs = &df_v1_7_funcs; in amdgpu_discovery_set_ip_blocks()
2307 switch (adev->ip_versions[SMUIO_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2313 adev->smuio.funcs = &smuio_v9_0_funcs; in amdgpu_discovery_set_ip_blocks()
2321 adev->smuio.funcs = &smuio_v11_0_funcs; in amdgpu_discovery_set_ip_blocks()
2330 adev->smuio.funcs = &smuio_v11_0_6_funcs; in amdgpu_discovery_set_ip_blocks()
2333 adev->smuio.funcs = &smuio_v13_0_funcs; in amdgpu_discovery_set_ip_blocks()
2337 adev->smuio.funcs = &smuio_v13_0_6_funcs; in amdgpu_discovery_set_ip_blocks()
2343 switch (adev->ip_versions[LSDMA_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2348 adev->lsdma.funcs = &lsdma_v6_0_funcs; in amdgpu_discovery_set_ip_blocks()
2354 r = amdgpu_discovery_set_common_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2358 r = amdgpu_discovery_set_gmc_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2363 if (amdgpu_sriov_vf(adev)) { in amdgpu_discovery_set_ip_blocks()
2364 r = amdgpu_discovery_set_psp_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2367 r = amdgpu_discovery_set_ih_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2371 r = amdgpu_discovery_set_ih_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2375 if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) { in amdgpu_discovery_set_ip_blocks()
2376 r = amdgpu_discovery_set_psp_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2382 if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) { in amdgpu_discovery_set_ip_blocks()
2383 r = amdgpu_discovery_set_smu_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2388 r = amdgpu_discovery_set_display_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2392 r = amdgpu_discovery_set_gc_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2396 r = amdgpu_discovery_set_sdma_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2400 if ((adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT && in amdgpu_discovery_set_ip_blocks()
2401 !amdgpu_sriov_vf(adev)) || in amdgpu_discovery_set_ip_blocks()
2402 (adev->firmware.load_type == AMDGPU_FW_LOAD_RLC_BACKDOOR_AUTO && amdgpu_dpm == 1)) { in amdgpu_discovery_set_ip_blocks()
2403 r = amdgpu_discovery_set_smu_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2408 r = amdgpu_discovery_set_mm_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2412 r = amdgpu_discovery_set_mes_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()