Lines Matching refs:adev
201 static int amdgpu_discovery_read_binary_from_vram(struct amdgpu_device *adev, uint8_t *binary) in amdgpu_discovery_read_binary_from_vram() argument
206 amdgpu_device_vram_access(adev, pos, (uint32_t *)binary, in amdgpu_discovery_read_binary_from_vram()
207 adev->mman.discovery_tmr_size, false); in amdgpu_discovery_read_binary_from_vram()
211 static int amdgpu_discovery_read_binary_from_file(struct amdgpu_device *adev, uint8_t *binary) in amdgpu_discovery_read_binary_from_file() argument
222 dev_warn(adev->dev, "amdgpu_discovery is not set properly\n"); in amdgpu_discovery_read_binary_from_file()
226 r = request_firmware(&fw, fw_name, adev->dev); in amdgpu_discovery_read_binary_from_file()
228 dev_err(adev->dev, "can't load firmware \"%s\"\n", in amdgpu_discovery_read_binary_from_file()
264 static void amdgpu_discovery_harvest_config_quirk(struct amdgpu_device *adev) in amdgpu_discovery_harvest_config_quirk() argument
270 if ((adev->ip_versions[UVD_HWIP][1] == IP_VERSION(3, 0, 1)) && in amdgpu_discovery_harvest_config_quirk()
271 (adev->ip_versions[GC_HWIP][0] == IP_VERSION(10, 3, 2))) { in amdgpu_discovery_harvest_config_quirk()
272 switch (adev->pdev->revision) { in amdgpu_discovery_harvest_config_quirk()
280 adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN1; in amdgpu_discovery_harvest_config_quirk()
288 static int amdgpu_discovery_init(struct amdgpu_device *adev) in amdgpu_discovery_init() argument
297 adev->mman.discovery_tmr_size = DISCOVERY_TMR_SIZE; in amdgpu_discovery_init()
298 adev->mman.discovery_bin = kzalloc(adev->mman.discovery_tmr_size, GFP_KERNEL); in amdgpu_discovery_init()
299 if (!adev->mman.discovery_bin) in amdgpu_discovery_init()
302 r = amdgpu_discovery_read_binary_from_vram(adev, adev->mman.discovery_bin); in amdgpu_discovery_init()
304 dev_err(adev->dev, "failed to read ip discovery binary from vram\n"); in amdgpu_discovery_init()
309 if (!amdgpu_discovery_verify_binary_signature(adev->mman.discovery_bin) || amdgpu_discovery == 2) { in amdgpu_discovery_init()
312 dev_info(adev->dev,"force read ip discovery binary from file"); in amdgpu_discovery_init()
314 dev_warn(adev->dev, "get invalid ip discovery binary signature from vram\n"); in amdgpu_discovery_init()
317 r = amdgpu_discovery_read_binary_from_file(adev, adev->mman.discovery_bin); in amdgpu_discovery_init()
319 dev_err(adev->dev, "failed to read ip discovery binary from file\n"); in amdgpu_discovery_init()
324 if(!amdgpu_discovery_verify_binary_signature(adev->mman.discovery_bin)) { in amdgpu_discovery_init()
325 dev_warn(adev->dev, "get invalid ip discovery binary signature from file\n"); in amdgpu_discovery_init()
331 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_init()
338 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
340 dev_err(adev->dev, "invalid ip discovery binary checksum\n"); in amdgpu_discovery_init()
351 (struct ip_discovery_header *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_init()
353 dev_err(adev->dev, "invalid ip discovery data table signature\n"); in amdgpu_discovery_init()
358 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
360 dev_err(adev->dev, "invalid ip discovery data table checksum\n"); in amdgpu_discovery_init()
372 (struct gpu_info_header *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_init()
375 dev_err(adev->dev, "invalid ip discovery gc table id\n"); in amdgpu_discovery_init()
380 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
382 dev_err(adev->dev, "invalid gc data table checksum\n"); in amdgpu_discovery_init()
394 (struct harvest_info_header *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_init()
397 dev_err(adev->dev, "invalid ip discovery harvest table signature\n"); in amdgpu_discovery_init()
402 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
404 dev_err(adev->dev, "invalid harvest data table checksum\n"); in amdgpu_discovery_init()
416 (struct vcn_info_header *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_init()
419 dev_err(adev->dev, "invalid ip discovery vcn table id\n"); in amdgpu_discovery_init()
424 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
426 dev_err(adev->dev, "invalid vcn data table checksum\n"); in amdgpu_discovery_init()
438 (struct mall_info_header *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_init()
441 dev_err(adev->dev, "invalid ip discovery mall table id\n"); in amdgpu_discovery_init()
446 if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset, in amdgpu_discovery_init()
448 dev_err(adev->dev, "invalid mall data table checksum\n"); in amdgpu_discovery_init()
457 kfree(adev->mman.discovery_bin); in amdgpu_discovery_init()
458 adev->mman.discovery_bin = NULL; in amdgpu_discovery_init()
463 static void amdgpu_discovery_sysfs_fini(struct amdgpu_device *adev);
465 void amdgpu_discovery_fini(struct amdgpu_device *adev) in amdgpu_discovery_fini() argument
467 amdgpu_discovery_sysfs_fini(adev); in amdgpu_discovery_fini()
468 kfree(adev->mman.discovery_bin); in amdgpu_discovery_fini()
469 adev->mman.discovery_bin = NULL; in amdgpu_discovery_fini()
488 static void amdgpu_discovery_read_harvest_bit_per_ip(struct amdgpu_device *adev, in amdgpu_discovery_read_harvest_bit_per_ip() argument
498 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_read_harvest_bit_per_ip()
499 ihdr = (struct ip_discovery_header *)(adev->mman.discovery_bin + in amdgpu_discovery_read_harvest_bit_per_ip()
506 dhdr = (struct die_header *)(adev->mman.discovery_bin + die_offset); in amdgpu_discovery_read_harvest_bit_per_ip()
511 ip = (struct ip *)(adev->mman.discovery_bin + ip_offset); in amdgpu_discovery_read_harvest_bit_per_ip()
521 adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN0; in amdgpu_discovery_read_harvest_bit_per_ip()
523 adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN1; in amdgpu_discovery_read_harvest_bit_per_ip()
526 adev->harvest_ip_mask |= AMD_HARVEST_IP_DMU_MASK; in amdgpu_discovery_read_harvest_bit_per_ip()
538 static void amdgpu_discovery_read_from_harvest_table(struct amdgpu_device *adev, in amdgpu_discovery_read_from_harvest_table() argument
548 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_read_from_harvest_table()
552 dev_err(adev->dev, "invalid harvest table offset\n"); in amdgpu_discovery_read_from_harvest_table()
556 harvest_info = (struct harvest_table *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_read_from_harvest_table()
566 adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN0; in amdgpu_discovery_read_from_harvest_table()
568 adev->vcn.harvest_config |= AMDGPU_VCN_HARVEST_VCN1; in amdgpu_discovery_read_from_harvest_table()
571 adev->harvest_ip_mask |= AMD_HARVEST_IP_DMU_MASK; in amdgpu_discovery_read_from_harvest_table()
583 adev->umc.active_mask = ((1 << adev->umc.node_inst_num) - 1) & in amdgpu_discovery_read_from_harvest_table()
815 struct amdgpu_device *adev; member
831 struct amdgpu_device *adev = ip_top->adev; in ip_disc_release() local
833 adev->ip_top = NULL; in ip_disc_release()
837 static int amdgpu_discovery_sysfs_ips(struct amdgpu_device *adev, in amdgpu_discovery_sysfs_ips() argument
856 ip = (struct ip *)(adev->mman.discovery_bin + ip_offset); in amdgpu_discovery_sysfs_ips()
926 static int amdgpu_discovery_sysfs_recurse(struct amdgpu_device *adev) in amdgpu_discovery_sysfs_recurse() argument
931 struct kset *die_kset = &adev->ip_top->die_kset; in amdgpu_discovery_sysfs_recurse()
936 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_sysfs_recurse()
937 ihdr = (struct ip_discovery_header *)(adev->mman.discovery_bin + in amdgpu_discovery_sysfs_recurse()
947 dhdr = (struct die_header *)(adev->mman.discovery_bin + die_offset); in amdgpu_discovery_sysfs_recurse()
973 amdgpu_discovery_sysfs_ips(adev, ip_die_entry, ip_offset, num_ips); in amdgpu_discovery_sysfs_recurse()
979 static int amdgpu_discovery_sysfs_init(struct amdgpu_device *adev) in amdgpu_discovery_sysfs_init() argument
984 adev->ip_top = kzalloc(sizeof(*adev->ip_top), GFP_KERNEL); in amdgpu_discovery_sysfs_init()
985 if (!adev->ip_top) in amdgpu_discovery_sysfs_init()
988 adev->ip_top->adev = adev; in amdgpu_discovery_sysfs_init()
990 res = kobject_init_and_add(&adev->ip_top->kobj, &ip_discovery_ktype, in amdgpu_discovery_sysfs_init()
991 &adev->dev->kobj, "ip_discovery"); in amdgpu_discovery_sysfs_init()
997 die_kset = &adev->ip_top->die_kset; in amdgpu_discovery_sysfs_init()
999 die_kset->kobj.parent = &adev->ip_top->kobj; in amdgpu_discovery_sysfs_init()
1001 res = kset_register(&adev->ip_top->die_kset); in amdgpu_discovery_sysfs_init()
1011 res = amdgpu_discovery_sysfs_recurse(adev); in amdgpu_discovery_sysfs_init()
1015 kobject_put(&adev->ip_top->kobj); in amdgpu_discovery_sysfs_init()
1058 static void amdgpu_discovery_sysfs_fini(struct amdgpu_device *adev) in amdgpu_discovery_sysfs_fini() argument
1063 die_kset = &adev->ip_top->die_kset; in amdgpu_discovery_sysfs_fini()
1072 kobject_put(&adev->ip_top->die_kset.kobj); in amdgpu_discovery_sysfs_fini()
1073 kobject_put(&adev->ip_top->kobj); in amdgpu_discovery_sysfs_fini()
1078 static int amdgpu_discovery_reg_base_init(struct amdgpu_device *adev) in amdgpu_discovery_reg_base_init() argument
1093 r = amdgpu_discovery_init(adev); in amdgpu_discovery_reg_base_init()
1099 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_reg_base_init()
1100 ihdr = (struct ip_discovery_header *)(adev->mman.discovery_bin + in amdgpu_discovery_reg_base_init()
1108 dhdr = (struct die_header *)(adev->mman.discovery_bin + die_offset); in amdgpu_discovery_reg_base_init()
1122 ip = (struct ip *)(adev->mman.discovery_bin + ip_offset); in amdgpu_discovery_reg_base_init()
1143 adev->vcn.vcn_config[adev->vcn.num_vcn_inst] = in amdgpu_discovery_reg_base_init()
1146 if (adev->vcn.num_vcn_inst < AMDGPU_MAX_VCN_INSTANCES) in amdgpu_discovery_reg_base_init()
1147 adev->vcn.num_vcn_inst++; in amdgpu_discovery_reg_base_init()
1149 dev_err(adev->dev, "Too many VCN instances: %d vs %d\n", in amdgpu_discovery_reg_base_init()
1150 adev->vcn.num_vcn_inst + 1, in amdgpu_discovery_reg_base_init()
1157 if (adev->sdma.num_instances < AMDGPU_MAX_SDMA_INSTANCES) in amdgpu_discovery_reg_base_init()
1158 adev->sdma.num_instances++; in amdgpu_discovery_reg_base_init()
1160 dev_err(adev->dev, "Too many SDMA instances: %d vs %d\n", in amdgpu_discovery_reg_base_init()
1161 adev->sdma.num_instances + 1, in amdgpu_discovery_reg_base_init()
1166 adev->gmc.num_umc++; in amdgpu_discovery_reg_base_init()
1167 adev->umc.node_inst_num++; in amdgpu_discovery_reg_base_init()
1183 adev->reg_offset[hw_ip][ip->number_instance] = in amdgpu_discovery_reg_base_init()
1194 adev->ip_versions[hw_ip][ip->number_instance] = in amdgpu_discovery_reg_base_init()
1204 amdgpu_discovery_sysfs_init(adev); in amdgpu_discovery_reg_base_init()
1209 int amdgpu_discovery_get_ip_version(struct amdgpu_device *adev, int hw_id, int number_instance, in amdgpu_discovery_get_ip_version() argument
1222 if (!adev->mman.discovery_bin) { in amdgpu_discovery_get_ip_version()
1227 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_get_ip_version()
1228 ihdr = (struct ip_discovery_header *)(adev->mman.discovery_bin + in amdgpu_discovery_get_ip_version()
1234 dhdr = (struct die_header *)(adev->mman.discovery_bin + die_offset); in amdgpu_discovery_get_ip_version()
1239 ip = (struct ip *)(adev->mman.discovery_bin + ip_offset); in amdgpu_discovery_get_ip_version()
1257 static void amdgpu_discovery_harvest_ip(struct amdgpu_device *adev) in amdgpu_discovery_harvest_ip() argument
1267 if (adev->ip_versions[GC_HWIP][0] < IP_VERSION(10, 2, 0)) { in amdgpu_discovery_harvest_ip()
1268 if ((adev->pdev->device == 0x731E && in amdgpu_discovery_harvest_ip()
1269 (adev->pdev->revision == 0xC6 || in amdgpu_discovery_harvest_ip()
1270 adev->pdev->revision == 0xC7)) || in amdgpu_discovery_harvest_ip()
1271 (adev->pdev->device == 0x7340 && in amdgpu_discovery_harvest_ip()
1272 adev->pdev->revision == 0xC9) || in amdgpu_discovery_harvest_ip()
1273 (adev->pdev->device == 0x7360 && in amdgpu_discovery_harvest_ip()
1274 adev->pdev->revision == 0xC7)) in amdgpu_discovery_harvest_ip()
1275 amdgpu_discovery_read_harvest_bit_per_ip(adev, in amdgpu_discovery_harvest_ip()
1278 amdgpu_discovery_read_from_harvest_table(adev, in amdgpu_discovery_harvest_ip()
1283 amdgpu_discovery_harvest_config_quirk(adev); in amdgpu_discovery_harvest_ip()
1285 if (vcn_harvest_count == adev->vcn.num_vcn_inst) { in amdgpu_discovery_harvest_ip()
1286 adev->harvest_ip_mask |= AMD_HARVEST_IP_VCN_MASK; in amdgpu_discovery_harvest_ip()
1287 adev->harvest_ip_mask |= AMD_HARVEST_IP_JPEG_MASK; in amdgpu_discovery_harvest_ip()
1290 if (umc_harvest_count < adev->gmc.num_umc) { in amdgpu_discovery_harvest_ip()
1291 adev->gmc.num_umc -= umc_harvest_count; in amdgpu_discovery_harvest_ip()
1302 static int amdgpu_discovery_get_gfx_info(struct amdgpu_device *adev) in amdgpu_discovery_get_gfx_info() argument
1308 if (!adev->mman.discovery_bin) { in amdgpu_discovery_get_gfx_info()
1313 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_get_gfx_info()
1319 gc_info = (union gc_info *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_get_gfx_info()
1323 adev->gfx.config.max_shader_engines = le32_to_cpu(gc_info->v1.gc_num_se); in amdgpu_discovery_get_gfx_info()
1324 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()
1326 adev->gfx.config.max_sh_per_se = le32_to_cpu(gc_info->v1.gc_num_sa_per_se); in amdgpu_discovery_get_gfx_info()
1327 adev->gfx.config.max_backends_per_se = le32_to_cpu(gc_info->v1.gc_num_rb_per_se); in amdgpu_discovery_get_gfx_info()
1328 adev->gfx.config.max_texture_channel_caches = le32_to_cpu(gc_info->v1.gc_num_gl2c); in amdgpu_discovery_get_gfx_info()
1329 adev->gfx.config.max_gprs = le32_to_cpu(gc_info->v1.gc_num_gprs); in amdgpu_discovery_get_gfx_info()
1330 adev->gfx.config.max_gs_threads = le32_to_cpu(gc_info->v1.gc_num_max_gs_thds); in amdgpu_discovery_get_gfx_info()
1331 adev->gfx.config.gs_vgt_table_depth = le32_to_cpu(gc_info->v1.gc_gs_table_depth); in amdgpu_discovery_get_gfx_info()
1332 adev->gfx.config.gs_prim_buffer_depth = le32_to_cpu(gc_info->v1.gc_gsprim_buff_depth); in amdgpu_discovery_get_gfx_info()
1333 adev->gfx.config.double_offchip_lds_buf = le32_to_cpu(gc_info->v1.gc_double_offchip_lds_buffer); in amdgpu_discovery_get_gfx_info()
1334 adev->gfx.cu_info.wave_front_size = le32_to_cpu(gc_info->v1.gc_wave_size); in amdgpu_discovery_get_gfx_info()
1335 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()
1336 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()
1337 adev->gfx.cu_info.lds_size = le32_to_cpu(gc_info->v1.gc_lds_size); in amdgpu_discovery_get_gfx_info()
1338 adev->gfx.config.num_sc_per_sh = le32_to_cpu(gc_info->v1.gc_num_sc_per_se) / in amdgpu_discovery_get_gfx_info()
1340 adev->gfx.config.num_packer_per_sc = le32_to_cpu(gc_info->v1.gc_num_packer_per_sc); in amdgpu_discovery_get_gfx_info()
1342 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()
1343 adev->gfx.config.gc_num_sdp_interface = le32_to_cpu(gc_info->v1_1.gc_num_sdp_interface); in amdgpu_discovery_get_gfx_info()
1344 adev->gfx.config.gc_num_tcps = le32_to_cpu(gc_info->v1_1.gc_num_tcps); in amdgpu_discovery_get_gfx_info()
1347 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()
1348 adev->gfx.config.gc_tcp_l1_size = le32_to_cpu(gc_info->v1_2.gc_tcp_l1_size); in amdgpu_discovery_get_gfx_info()
1349 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()
1350 …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()
1351 …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()
1352 adev->gfx.config.gc_gl1c_per_sa = le32_to_cpu(gc_info->v1_2.gc_gl1c_per_sa); in amdgpu_discovery_get_gfx_info()
1353 … 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()
1354 adev->gfx.config.gc_gl2c_per_gpu = le32_to_cpu(gc_info->v1_2.gc_gl2c_per_gpu); in amdgpu_discovery_get_gfx_info()
1358 adev->gfx.config.max_shader_engines = le32_to_cpu(gc_info->v2.gc_num_se); in amdgpu_discovery_get_gfx_info()
1359 adev->gfx.config.max_cu_per_sh = le32_to_cpu(gc_info->v2.gc_num_cu_per_sh); in amdgpu_discovery_get_gfx_info()
1360 adev->gfx.config.max_sh_per_se = le32_to_cpu(gc_info->v2.gc_num_sh_per_se); in amdgpu_discovery_get_gfx_info()
1361 adev->gfx.config.max_backends_per_se = le32_to_cpu(gc_info->v2.gc_num_rb_per_se); in amdgpu_discovery_get_gfx_info()
1362 adev->gfx.config.max_texture_channel_caches = le32_to_cpu(gc_info->v2.gc_num_tccs); in amdgpu_discovery_get_gfx_info()
1363 adev->gfx.config.max_gprs = le32_to_cpu(gc_info->v2.gc_num_gprs); in amdgpu_discovery_get_gfx_info()
1364 adev->gfx.config.max_gs_threads = le32_to_cpu(gc_info->v2.gc_num_max_gs_thds); in amdgpu_discovery_get_gfx_info()
1365 adev->gfx.config.gs_vgt_table_depth = le32_to_cpu(gc_info->v2.gc_gs_table_depth); in amdgpu_discovery_get_gfx_info()
1366 adev->gfx.config.gs_prim_buffer_depth = le32_to_cpu(gc_info->v2.gc_gsprim_buff_depth); in amdgpu_discovery_get_gfx_info()
1367 adev->gfx.config.double_offchip_lds_buf = le32_to_cpu(gc_info->v2.gc_double_offchip_lds_buffer); in amdgpu_discovery_get_gfx_info()
1368 adev->gfx.cu_info.wave_front_size = le32_to_cpu(gc_info->v2.gc_wave_size); in amdgpu_discovery_get_gfx_info()
1369 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()
1370 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()
1371 adev->gfx.cu_info.lds_size = le32_to_cpu(gc_info->v2.gc_lds_size); in amdgpu_discovery_get_gfx_info()
1372 adev->gfx.config.num_sc_per_sh = le32_to_cpu(gc_info->v2.gc_num_sc_per_se) / in amdgpu_discovery_get_gfx_info()
1374 adev->gfx.config.num_packer_per_sc = le32_to_cpu(gc_info->v2.gc_num_packer_per_sc); in amdgpu_discovery_get_gfx_info()
1377 dev_err(adev->dev, in amdgpu_discovery_get_gfx_info()
1390 static int amdgpu_discovery_get_mall_info(struct amdgpu_device *adev) in amdgpu_discovery_get_mall_info() argument
1398 if (!adev->mman.discovery_bin) { in amdgpu_discovery_get_mall_info()
1403 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_get_mall_info()
1409 mall_info = (union mall_info *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_get_mall_info()
1417 for (u = 0; u < adev->gmc.num_umc; u++) { in amdgpu_discovery_get_mall_info()
1425 adev->gmc.mall_size = mall_size; in amdgpu_discovery_get_mall_info()
1428 dev_err(adev->dev, in amdgpu_discovery_get_mall_info()
1441 static int amdgpu_discovery_get_vcn_info(struct amdgpu_device *adev) in amdgpu_discovery_get_vcn_info() argument
1448 if (!adev->mman.discovery_bin) { in amdgpu_discovery_get_vcn_info()
1458 if (adev->vcn.num_vcn_inst > VCN_INFO_TABLE_MAX_NUM_INSTANCES) { in amdgpu_discovery_get_vcn_info()
1459 dev_err(adev->dev, "invalid vcn instances\n"); in amdgpu_discovery_get_vcn_info()
1463 bhdr = (struct binary_header *)adev->mman.discovery_bin; in amdgpu_discovery_get_vcn_info()
1469 vcn_info = (union vcn_info *)(adev->mman.discovery_bin + offset); in amdgpu_discovery_get_vcn_info()
1476 for (v = 0; v < adev->vcn.num_vcn_inst; v++) { in amdgpu_discovery_get_vcn_info()
1477 adev->vcn.vcn_codec_disable_mask[v] = in amdgpu_discovery_get_vcn_info()
1482 dev_err(adev->dev, in amdgpu_discovery_get_vcn_info()
1491 static int amdgpu_discovery_set_common_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_common_ip_blocks() argument
1494 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_common_ip_blocks()
1503 amdgpu_device_ip_block_add(adev, &vega10_common_ip_block); in amdgpu_discovery_set_common_ip_blocks()
1518 amdgpu_device_ip_block_add(adev, &nv_common_ip_block); in amdgpu_discovery_set_common_ip_blocks()
1525 amdgpu_device_ip_block_add(adev, &soc21_common_ip_block); in amdgpu_discovery_set_common_ip_blocks()
1528 dev_err(adev->dev, in amdgpu_discovery_set_common_ip_blocks()
1530 adev->ip_versions[GC_HWIP][0]); in amdgpu_discovery_set_common_ip_blocks()
1536 static int amdgpu_discovery_set_gmc_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_gmc_ip_blocks() argument
1539 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_gmc_ip_blocks()
1548 amdgpu_device_ip_block_add(adev, &gmc_v9_0_ip_block); in amdgpu_discovery_set_gmc_ip_blocks()
1563 amdgpu_device_ip_block_add(adev, &gmc_v10_0_ip_block); in amdgpu_discovery_set_gmc_ip_blocks()
1570 amdgpu_device_ip_block_add(adev, &gmc_v11_0_ip_block); in amdgpu_discovery_set_gmc_ip_blocks()
1573 dev_err(adev->dev, in amdgpu_discovery_set_gmc_ip_blocks()
1575 adev->ip_versions[GC_HWIP][0]); in amdgpu_discovery_set_gmc_ip_blocks()
1581 static int amdgpu_discovery_set_ih_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_ih_ip_blocks() argument
1583 switch (adev->ip_versions[OSSSYS_HWIP][0]) { in amdgpu_discovery_set_ih_ip_blocks()
1589 amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block); in amdgpu_discovery_set_ih_ip_blocks()
1594 amdgpu_device_ip_block_add(adev, &vega20_ih_ip_block); in amdgpu_discovery_set_ih_ip_blocks()
1602 amdgpu_device_ip_block_add(adev, &navi10_ih_ip_block); in amdgpu_discovery_set_ih_ip_blocks()
1607 amdgpu_device_ip_block_add(adev, &ih_v6_0_ip_block); in amdgpu_discovery_set_ih_ip_blocks()
1610 dev_err(adev->dev, in amdgpu_discovery_set_ih_ip_blocks()
1612 adev->ip_versions[OSSSYS_HWIP][0]); in amdgpu_discovery_set_ih_ip_blocks()
1618 static int amdgpu_discovery_set_psp_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_psp_ip_blocks() argument
1620 switch (adev->ip_versions[MP0_HWIP][0]) { in amdgpu_discovery_set_psp_ip_blocks()
1622 amdgpu_device_ip_block_add(adev, &psp_v3_1_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1626 amdgpu_device_ip_block_add(adev, &psp_v10_0_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1638 amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1641 amdgpu_device_ip_block_add(adev, &psp_v11_0_8_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1645 amdgpu_device_ip_block_add(adev, &psp_v12_0_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1656 amdgpu_device_ip_block_add(adev, &psp_v13_0_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1659 amdgpu_device_ip_block_add(adev, &psp_v13_0_4_ip_block); in amdgpu_discovery_set_psp_ip_blocks()
1662 dev_err(adev->dev, in amdgpu_discovery_set_psp_ip_blocks()
1664 adev->ip_versions[MP0_HWIP][0]); in amdgpu_discovery_set_psp_ip_blocks()
1670 static int amdgpu_discovery_set_smu_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_smu_ip_blocks() argument
1672 switch (adev->ip_versions[MP1_HWIP][0]) { in amdgpu_discovery_set_smu_ip_blocks()
1677 if (adev->asic_type == CHIP_ARCTURUS) in amdgpu_discovery_set_smu_ip_blocks()
1678 amdgpu_device_ip_block_add(adev, &smu_v11_0_ip_block); in amdgpu_discovery_set_smu_ip_blocks()
1680 amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); in amdgpu_discovery_set_smu_ip_blocks()
1691 amdgpu_device_ip_block_add(adev, &smu_v11_0_ip_block); in amdgpu_discovery_set_smu_ip_blocks()
1695 amdgpu_device_ip_block_add(adev, &smu_v12_0_ip_block); in amdgpu_discovery_set_smu_ip_blocks()
1707 amdgpu_device_ip_block_add(adev, &smu_v13_0_ip_block); in amdgpu_discovery_set_smu_ip_blocks()
1710 dev_err(adev->dev, in amdgpu_discovery_set_smu_ip_blocks()
1712 adev->ip_versions[MP1_HWIP][0]); in amdgpu_discovery_set_smu_ip_blocks()
1719 static void amdgpu_discovery_set_sriov_display(struct amdgpu_device *adev) in amdgpu_discovery_set_sriov_display() argument
1721 amdgpu_device_set_sriov_virtual_display(adev); in amdgpu_discovery_set_sriov_display()
1722 amdgpu_device_ip_block_add(adev, &amdgpu_vkms_ip_block); in amdgpu_discovery_set_sriov_display()
1726 static int amdgpu_discovery_set_display_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_display_ip_blocks() argument
1728 if (adev->enable_virtual_display) { in amdgpu_discovery_set_display_ip_blocks()
1729 amdgpu_device_ip_block_add(adev, &amdgpu_vkms_ip_block); in amdgpu_discovery_set_display_ip_blocks()
1733 if (!amdgpu_device_has_dc_support(adev)) in amdgpu_discovery_set_display_ip_blocks()
1737 if (adev->ip_versions[DCE_HWIP][0]) { in amdgpu_discovery_set_display_ip_blocks()
1738 switch (adev->ip_versions[DCE_HWIP][0]) { in amdgpu_discovery_set_display_ip_blocks()
1756 if (amdgpu_sriov_vf(adev)) in amdgpu_discovery_set_display_ip_blocks()
1757 amdgpu_discovery_set_sriov_display(adev); in amdgpu_discovery_set_display_ip_blocks()
1759 amdgpu_device_ip_block_add(adev, &dm_ip_block); in amdgpu_discovery_set_display_ip_blocks()
1762 dev_err(adev->dev, in amdgpu_discovery_set_display_ip_blocks()
1764 adev->ip_versions[DCE_HWIP][0]); in amdgpu_discovery_set_display_ip_blocks()
1767 } else if (adev->ip_versions[DCI_HWIP][0]) { in amdgpu_discovery_set_display_ip_blocks()
1768 switch (adev->ip_versions[DCI_HWIP][0]) { in amdgpu_discovery_set_display_ip_blocks()
1772 if (amdgpu_sriov_vf(adev)) in amdgpu_discovery_set_display_ip_blocks()
1773 amdgpu_discovery_set_sriov_display(adev); in amdgpu_discovery_set_display_ip_blocks()
1775 amdgpu_device_ip_block_add(adev, &dm_ip_block); in amdgpu_discovery_set_display_ip_blocks()
1778 dev_err(adev->dev, in amdgpu_discovery_set_display_ip_blocks()
1780 adev->ip_versions[DCI_HWIP][0]); in amdgpu_discovery_set_display_ip_blocks()
1788 static int amdgpu_discovery_set_gc_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_gc_ip_blocks() argument
1790 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_gc_ip_blocks()
1799 amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block); in amdgpu_discovery_set_gc_ip_blocks()
1814 amdgpu_device_ip_block_add(adev, &gfx_v10_0_ip_block); in amdgpu_discovery_set_gc_ip_blocks()
1821 amdgpu_device_ip_block_add(adev, &gfx_v11_0_ip_block); in amdgpu_discovery_set_gc_ip_blocks()
1824 dev_err(adev->dev, in amdgpu_discovery_set_gc_ip_blocks()
1826 adev->ip_versions[GC_HWIP][0]); in amdgpu_discovery_set_gc_ip_blocks()
1832 static int amdgpu_discovery_set_sdma_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_sdma_ip_blocks() argument
1834 switch (adev->ip_versions[SDMA0_HWIP][0]) { in amdgpu_discovery_set_sdma_ip_blocks()
1843 amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block); in amdgpu_discovery_set_sdma_ip_blocks()
1849 amdgpu_device_ip_block_add(adev, &sdma_v5_0_ip_block); in amdgpu_discovery_set_sdma_ip_blocks()
1859 amdgpu_device_ip_block_add(adev, &sdma_v5_2_ip_block); in amdgpu_discovery_set_sdma_ip_blocks()
1865 amdgpu_device_ip_block_add(adev, &sdma_v6_0_ip_block); in amdgpu_discovery_set_sdma_ip_blocks()
1868 dev_err(adev->dev, in amdgpu_discovery_set_sdma_ip_blocks()
1870 adev->ip_versions[SDMA0_HWIP][0]); in amdgpu_discovery_set_sdma_ip_blocks()
1876 static int amdgpu_discovery_set_mm_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_mm_ip_blocks() argument
1878 if (adev->ip_versions[VCE_HWIP][0]) { in amdgpu_discovery_set_mm_ip_blocks()
1879 switch (adev->ip_versions[UVD_HWIP][0]) { in amdgpu_discovery_set_mm_ip_blocks()
1883 if (!(adev->asic_type == CHIP_VEGA20 && amdgpu_sriov_vf(adev))) in amdgpu_discovery_set_mm_ip_blocks()
1884 amdgpu_device_ip_block_add(adev, &uvd_v7_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1887 dev_err(adev->dev, in amdgpu_discovery_set_mm_ip_blocks()
1889 adev->ip_versions[UVD_HWIP][0]); in amdgpu_discovery_set_mm_ip_blocks()
1892 switch (adev->ip_versions[VCE_HWIP][0]) { in amdgpu_discovery_set_mm_ip_blocks()
1896 if (!(adev->asic_type == CHIP_VEGA20 && amdgpu_sriov_vf(adev))) in amdgpu_discovery_set_mm_ip_blocks()
1897 amdgpu_device_ip_block_add(adev, &vce_v4_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1900 dev_err(adev->dev, in amdgpu_discovery_set_mm_ip_blocks()
1902 adev->ip_versions[VCE_HWIP][0]); in amdgpu_discovery_set_mm_ip_blocks()
1906 switch (adev->ip_versions[UVD_HWIP][0]) { in amdgpu_discovery_set_mm_ip_blocks()
1909 amdgpu_device_ip_block_add(adev, &vcn_v1_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1914 amdgpu_device_ip_block_add(adev, &vcn_v2_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1915 if (!amdgpu_sriov_vf(adev)) in amdgpu_discovery_set_mm_ip_blocks()
1916 amdgpu_device_ip_block_add(adev, &jpeg_v2_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1921 amdgpu_device_ip_block_add(adev, &vcn_v2_5_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1922 amdgpu_device_ip_block_add(adev, &jpeg_v2_5_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1925 amdgpu_device_ip_block_add(adev, &vcn_v2_6_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1926 amdgpu_device_ip_block_add(adev, &jpeg_v2_6_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1934 amdgpu_device_ip_block_add(adev, &vcn_v3_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1935 if (!amdgpu_sriov_vf(adev)) in amdgpu_discovery_set_mm_ip_blocks()
1936 amdgpu_device_ip_block_add(adev, &jpeg_v3_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1939 amdgpu_device_ip_block_add(adev, &vcn_v3_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1944 amdgpu_device_ip_block_add(adev, &vcn_v4_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1945 if (!amdgpu_sriov_vf(adev)) in amdgpu_discovery_set_mm_ip_blocks()
1946 amdgpu_device_ip_block_add(adev, &jpeg_v4_0_ip_block); in amdgpu_discovery_set_mm_ip_blocks()
1949 dev_err(adev->dev, in amdgpu_discovery_set_mm_ip_blocks()
1951 adev->ip_versions[UVD_HWIP][0]); in amdgpu_discovery_set_mm_ip_blocks()
1958 static int amdgpu_discovery_set_mes_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_mes_ip_blocks() argument
1960 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_mes_ip_blocks()
1974 amdgpu_device_ip_block_add(adev, &mes_v10_1_ip_block); in amdgpu_discovery_set_mes_ip_blocks()
1975 adev->enable_mes = true; in amdgpu_discovery_set_mes_ip_blocks()
1977 adev->enable_mes_kiq = true; in amdgpu_discovery_set_mes_ip_blocks()
1985 amdgpu_device_ip_block_add(adev, &mes_v11_0_ip_block); in amdgpu_discovery_set_mes_ip_blocks()
1986 adev->enable_mes = true; in amdgpu_discovery_set_mes_ip_blocks()
1987 adev->enable_mes_kiq = true; in amdgpu_discovery_set_mes_ip_blocks()
1995 int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev) in amdgpu_discovery_set_ip_blocks() argument
1999 switch (adev->asic_type) { in amdgpu_discovery_set_ip_blocks()
2001 vega10_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2002 adev->sdma.num_instances = 2; in amdgpu_discovery_set_ip_blocks()
2003 adev->gmc.num_umc = 4; in amdgpu_discovery_set_ip_blocks()
2004 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2005 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2006 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
2007 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
2008 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
2009 adev->ip_versions[SDMA1_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
2010 adev->ip_versions[DF_HWIP][0] = IP_VERSION(2, 1, 0); in amdgpu_discovery_set_ip_blocks()
2011 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(6, 1, 0); in amdgpu_discovery_set_ip_blocks()
2012 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(6, 0, 0); in amdgpu_discovery_set_ip_blocks()
2013 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2014 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2015 adev->ip_versions[THM_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2016 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2017 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 0, 1); in amdgpu_discovery_set_ip_blocks()
2018 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(7, 0, 0); in amdgpu_discovery_set_ip_blocks()
2019 adev->ip_versions[VCE_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
2020 adev->ip_versions[DCI_HWIP][0] = IP_VERSION(12, 0, 0); in amdgpu_discovery_set_ip_blocks()
2023 vega10_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2024 adev->sdma.num_instances = 2; in amdgpu_discovery_set_ip_blocks()
2025 adev->gmc.num_umc = 4; in amdgpu_discovery_set_ip_blocks()
2026 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 3, 0); in amdgpu_discovery_set_ip_blocks()
2027 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 3, 0); in amdgpu_discovery_set_ip_blocks()
2028 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 0, 1); in amdgpu_discovery_set_ip_blocks()
2029 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 0, 1); in amdgpu_discovery_set_ip_blocks()
2030 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 0, 1); in amdgpu_discovery_set_ip_blocks()
2031 adev->ip_versions[SDMA1_HWIP][0] = IP_VERSION(4, 0, 1); in amdgpu_discovery_set_ip_blocks()
2032 adev->ip_versions[DF_HWIP][0] = IP_VERSION(2, 5, 0); in amdgpu_discovery_set_ip_blocks()
2033 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(6, 2, 0); in amdgpu_discovery_set_ip_blocks()
2034 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(6, 1, 0); in amdgpu_discovery_set_ip_blocks()
2035 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2036 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2037 adev->ip_versions[THM_HWIP][0] = IP_VERSION(9, 0, 0); in amdgpu_discovery_set_ip_blocks()
2038 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(9, 0, 1); in amdgpu_discovery_set_ip_blocks()
2039 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 2, 1); in amdgpu_discovery_set_ip_blocks()
2040 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(7, 0, 0); in amdgpu_discovery_set_ip_blocks()
2041 adev->ip_versions[VCE_HWIP][0] = IP_VERSION(4, 0, 0); in amdgpu_discovery_set_ip_blocks()
2042 adev->ip_versions[DCI_HWIP][0] = IP_VERSION(12, 0, 1); in amdgpu_discovery_set_ip_blocks()
2045 vega10_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2046 adev->sdma.num_instances = 1; in amdgpu_discovery_set_ip_blocks()
2047 adev->vcn.num_vcn_inst = 1; in amdgpu_discovery_set_ip_blocks()
2048 adev->gmc.num_umc = 2; in amdgpu_discovery_set_ip_blocks()
2049 if (adev->apu_flags & AMD_APU_IS_RAVEN2) { in amdgpu_discovery_set_ip_blocks()
2050 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 2, 0); in amdgpu_discovery_set_ip_blocks()
2051 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 2, 0); in amdgpu_discovery_set_ip_blocks()
2052 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 1, 1); in amdgpu_discovery_set_ip_blocks()
2053 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 1, 1); in amdgpu_discovery_set_ip_blocks()
2054 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 1, 1); in amdgpu_discovery_set_ip_blocks()
2055 adev->ip_versions[DF_HWIP][0] = IP_VERSION(2, 1, 1); in amdgpu_discovery_set_ip_blocks()
2056 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(7, 0, 1); in amdgpu_discovery_set_ip_blocks()
2057 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(7, 5, 0); in amdgpu_discovery_set_ip_blocks()
2058 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(10, 0, 1); in amdgpu_discovery_set_ip_blocks()
2059 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(10, 0, 1); in amdgpu_discovery_set_ip_blocks()
2060 adev->ip_versions[THM_HWIP][0] = IP_VERSION(10, 1, 0); in amdgpu_discovery_set_ip_blocks()
2061 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(10, 0, 1); in amdgpu_discovery_set_ip_blocks()
2062 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 2, 2); in amdgpu_discovery_set_ip_blocks()
2063 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(1, 0, 1); in amdgpu_discovery_set_ip_blocks()
2064 adev->ip_versions[DCE_HWIP][0] = IP_VERSION(1, 0, 1); in amdgpu_discovery_set_ip_blocks()
2066 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 1, 0); in amdgpu_discovery_set_ip_blocks()
2067 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 1, 0); in amdgpu_discovery_set_ip_blocks()
2068 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 1, 0); in amdgpu_discovery_set_ip_blocks()
2069 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 1, 0); in amdgpu_discovery_set_ip_blocks()
2070 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 1, 0); in amdgpu_discovery_set_ip_blocks()
2071 adev->ip_versions[DF_HWIP][0] = IP_VERSION(2, 1, 0); in amdgpu_discovery_set_ip_blocks()
2072 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(7, 0, 0); in amdgpu_discovery_set_ip_blocks()
2073 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(7, 0, 0); in amdgpu_discovery_set_ip_blocks()
2074 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(10, 0, 0); in amdgpu_discovery_set_ip_blocks()
2075 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(10, 0, 0); in amdgpu_discovery_set_ip_blocks()
2076 adev->ip_versions[THM_HWIP][0] = IP_VERSION(10, 0, 0); in amdgpu_discovery_set_ip_blocks()
2077 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(10, 0, 0); in amdgpu_discovery_set_ip_blocks()
2078 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 1, 0); in amdgpu_discovery_set_ip_blocks()
2079 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(1, 0, 0); in amdgpu_discovery_set_ip_blocks()
2080 adev->ip_versions[DCE_HWIP][0] = IP_VERSION(1, 0, 0); in amdgpu_discovery_set_ip_blocks()
2084 vega20_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2085 adev->sdma.num_instances = 2; in amdgpu_discovery_set_ip_blocks()
2086 adev->gmc.num_umc = 8; in amdgpu_discovery_set_ip_blocks()
2087 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 4, 0); in amdgpu_discovery_set_ip_blocks()
2088 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 4, 0); in amdgpu_discovery_set_ip_blocks()
2089 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 2, 0); in amdgpu_discovery_set_ip_blocks()
2090 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 2, 0); in amdgpu_discovery_set_ip_blocks()
2091 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 2, 0); in amdgpu_discovery_set_ip_blocks()
2092 adev->ip_versions[SDMA1_HWIP][0] = IP_VERSION(4, 2, 0); in amdgpu_discovery_set_ip_blocks()
2093 adev->ip_versions[DF_HWIP][0] = IP_VERSION(3, 6, 0); in amdgpu_discovery_set_ip_blocks()
2094 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(7, 4, 0); in amdgpu_discovery_set_ip_blocks()
2095 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(6, 1, 1); in amdgpu_discovery_set_ip_blocks()
2096 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(11, 0, 2); in amdgpu_discovery_set_ip_blocks()
2097 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(11, 0, 2); in amdgpu_discovery_set_ip_blocks()
2098 adev->ip_versions[THM_HWIP][0] = IP_VERSION(11, 0, 2); in amdgpu_discovery_set_ip_blocks()
2099 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(11, 0, 2); in amdgpu_discovery_set_ip_blocks()
2100 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 4, 0); in amdgpu_discovery_set_ip_blocks()
2101 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(7, 2, 0); in amdgpu_discovery_set_ip_blocks()
2102 adev->ip_versions[UVD_HWIP][1] = IP_VERSION(7, 2, 0); in amdgpu_discovery_set_ip_blocks()
2103 adev->ip_versions[VCE_HWIP][0] = IP_VERSION(4, 1, 0); in amdgpu_discovery_set_ip_blocks()
2104 adev->ip_versions[DCI_HWIP][0] = IP_VERSION(12, 1, 0); in amdgpu_discovery_set_ip_blocks()
2107 arct_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2108 adev->sdma.num_instances = 8; in amdgpu_discovery_set_ip_blocks()
2109 adev->vcn.num_vcn_inst = 2; in amdgpu_discovery_set_ip_blocks()
2110 adev->gmc.num_umc = 8; in amdgpu_discovery_set_ip_blocks()
2111 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 4, 1); in amdgpu_discovery_set_ip_blocks()
2112 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 4, 1); in amdgpu_discovery_set_ip_blocks()
2113 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 2, 1); in amdgpu_discovery_set_ip_blocks()
2114 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 2, 1); in amdgpu_discovery_set_ip_blocks()
2115 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2116 adev->ip_versions[SDMA1_HWIP][0] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2117 adev->ip_versions[SDMA1_HWIP][1] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2118 adev->ip_versions[SDMA1_HWIP][2] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2119 adev->ip_versions[SDMA1_HWIP][3] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2120 adev->ip_versions[SDMA1_HWIP][4] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2121 adev->ip_versions[SDMA1_HWIP][5] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2122 adev->ip_versions[SDMA1_HWIP][6] = IP_VERSION(4, 2, 2); in amdgpu_discovery_set_ip_blocks()
2123 adev->ip_versions[DF_HWIP][0] = IP_VERSION(3, 6, 1); in amdgpu_discovery_set_ip_blocks()
2124 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(7, 4, 1); in amdgpu_discovery_set_ip_blocks()
2125 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(6, 1, 2); in amdgpu_discovery_set_ip_blocks()
2126 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(11, 0, 4); in amdgpu_discovery_set_ip_blocks()
2127 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(11, 0, 2); in amdgpu_discovery_set_ip_blocks()
2128 adev->ip_versions[THM_HWIP][0] = IP_VERSION(11, 0, 3); in amdgpu_discovery_set_ip_blocks()
2129 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(11, 0, 3); in amdgpu_discovery_set_ip_blocks()
2130 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 4, 1); in amdgpu_discovery_set_ip_blocks()
2131 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(2, 5, 0); in amdgpu_discovery_set_ip_blocks()
2132 adev->ip_versions[UVD_HWIP][1] = IP_VERSION(2, 5, 0); in amdgpu_discovery_set_ip_blocks()
2135 aldebaran_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2136 adev->sdma.num_instances = 5; in amdgpu_discovery_set_ip_blocks()
2137 adev->vcn.num_vcn_inst = 2; in amdgpu_discovery_set_ip_blocks()
2138 adev->gmc.num_umc = 4; in amdgpu_discovery_set_ip_blocks()
2139 adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 4, 2); in amdgpu_discovery_set_ip_blocks()
2140 adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 4, 2); in amdgpu_discovery_set_ip_blocks()
2141 adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2142 adev->ip_versions[HDP_HWIP][0] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2143 adev->ip_versions[SDMA0_HWIP][0] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2144 adev->ip_versions[SDMA0_HWIP][1] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2145 adev->ip_versions[SDMA0_HWIP][2] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2146 adev->ip_versions[SDMA0_HWIP][3] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2147 adev->ip_versions[SDMA0_HWIP][4] = IP_VERSION(4, 4, 0); in amdgpu_discovery_set_ip_blocks()
2148 adev->ip_versions[DF_HWIP][0] = IP_VERSION(3, 6, 2); in amdgpu_discovery_set_ip_blocks()
2149 adev->ip_versions[NBIO_HWIP][0] = IP_VERSION(7, 4, 4); in amdgpu_discovery_set_ip_blocks()
2150 adev->ip_versions[UMC_HWIP][0] = IP_VERSION(6, 7, 0); in amdgpu_discovery_set_ip_blocks()
2151 adev->ip_versions[MP0_HWIP][0] = IP_VERSION(13, 0, 2); in amdgpu_discovery_set_ip_blocks()
2152 adev->ip_versions[MP1_HWIP][0] = IP_VERSION(13, 0, 2); in amdgpu_discovery_set_ip_blocks()
2153 adev->ip_versions[THM_HWIP][0] = IP_VERSION(13, 0, 2); in amdgpu_discovery_set_ip_blocks()
2154 adev->ip_versions[SMUIO_HWIP][0] = IP_VERSION(13, 0, 2); in amdgpu_discovery_set_ip_blocks()
2155 adev->ip_versions[GC_HWIP][0] = IP_VERSION(9, 4, 2); in amdgpu_discovery_set_ip_blocks()
2156 adev->ip_versions[UVD_HWIP][0] = IP_VERSION(2, 6, 0); in amdgpu_discovery_set_ip_blocks()
2157 adev->ip_versions[UVD_HWIP][1] = IP_VERSION(2, 6, 0); in amdgpu_discovery_set_ip_blocks()
2158 adev->ip_versions[XGMI_HWIP][0] = IP_VERSION(6, 1, 0); in amdgpu_discovery_set_ip_blocks()
2161 r = amdgpu_discovery_reg_base_init(adev); in amdgpu_discovery_set_ip_blocks()
2165 amdgpu_discovery_harvest_ip(adev); in amdgpu_discovery_set_ip_blocks()
2166 amdgpu_discovery_get_gfx_info(adev); in amdgpu_discovery_set_ip_blocks()
2167 amdgpu_discovery_get_mall_info(adev); in amdgpu_discovery_set_ip_blocks()
2168 amdgpu_discovery_get_vcn_info(adev); in amdgpu_discovery_set_ip_blocks()
2172 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2178 adev->family = AMDGPU_FAMILY_AI; in amdgpu_discovery_set_ip_blocks()
2183 adev->family = AMDGPU_FAMILY_RV; in amdgpu_discovery_set_ip_blocks()
2194 adev->family = AMDGPU_FAMILY_NV; in amdgpu_discovery_set_ip_blocks()
2197 adev->family = AMDGPU_FAMILY_VGH; in amdgpu_discovery_set_ip_blocks()
2198 adev->apu_flags |= AMD_APU_IS_VANGOGH; in amdgpu_discovery_set_ip_blocks()
2201 adev->family = AMDGPU_FAMILY_YC; in amdgpu_discovery_set_ip_blocks()
2204 adev->family = AMDGPU_FAMILY_GC_10_3_6; in amdgpu_discovery_set_ip_blocks()
2207 adev->family = AMDGPU_FAMILY_GC_10_3_7; in amdgpu_discovery_set_ip_blocks()
2212 adev->family = AMDGPU_FAMILY_GC_11_0_0; in amdgpu_discovery_set_ip_blocks()
2216 adev->family = AMDGPU_FAMILY_GC_11_0_1; in amdgpu_discovery_set_ip_blocks()
2222 switch (adev->ip_versions[GC_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2234 adev->flags |= AMD_IS_APU; in amdgpu_discovery_set_ip_blocks()
2240 if (adev->ip_versions[XGMI_HWIP][0] == IP_VERSION(4, 8, 0)) in amdgpu_discovery_set_ip_blocks()
2241 adev->gmc.xgmi.supported = true; in amdgpu_discovery_set_ip_blocks()
2244 switch (adev->ip_versions[NBIO_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2247 adev->nbio.funcs = &nbio_v6_1_funcs; in amdgpu_discovery_set_ip_blocks()
2248 adev->nbio.hdp_flush_reg = &nbio_v6_1_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2253 adev->nbio.funcs = &nbio_v7_0_funcs; in amdgpu_discovery_set_ip_blocks()
2254 adev->nbio.hdp_flush_reg = &nbio_v7_0_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2259 adev->nbio.funcs = &nbio_v7_4_funcs; in amdgpu_discovery_set_ip_blocks()
2260 adev->nbio.hdp_flush_reg = &nbio_v7_4_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2267 adev->nbio.funcs = &nbio_v7_2_funcs; in amdgpu_discovery_set_ip_blocks()
2268 adev->nbio.hdp_flush_reg = &nbio_v7_2_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2278 adev->nbio.funcs = &nbio_v2_3_funcs; in amdgpu_discovery_set_ip_blocks()
2279 adev->nbio.hdp_flush_reg = &nbio_v2_3_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2283 if (amdgpu_sriov_vf(adev)) in amdgpu_discovery_set_ip_blocks()
2284 adev->nbio.funcs = &nbio_v4_3_sriov_funcs; in amdgpu_discovery_set_ip_blocks()
2286 adev->nbio.funcs = &nbio_v4_3_funcs; in amdgpu_discovery_set_ip_blocks()
2287 adev->nbio.hdp_flush_reg = &nbio_v4_3_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2291 adev->nbio.funcs = &nbio_v7_7_funcs; in amdgpu_discovery_set_ip_blocks()
2292 adev->nbio.hdp_flush_reg = &nbio_v7_7_hdp_flush_reg; in amdgpu_discovery_set_ip_blocks()
2298 switch (adev->ip_versions[HDP_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2307 adev->hdp.funcs = &hdp_v4_0_funcs; in amdgpu_discovery_set_ip_blocks()
2315 adev->hdp.funcs = &hdp_v5_0_funcs; in amdgpu_discovery_set_ip_blocks()
2318 adev->hdp.funcs = &hdp_v5_2_funcs; in amdgpu_discovery_set_ip_blocks()
2322 adev->hdp.funcs = &hdp_v6_0_funcs; in amdgpu_discovery_set_ip_blocks()
2328 switch (adev->ip_versions[DF_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2332 adev->df.funcs = &df_v3_6_funcs; in amdgpu_discovery_set_ip_blocks()
2339 adev->df.funcs = &df_v1_7_funcs; in amdgpu_discovery_set_ip_blocks()
2342 adev->df.funcs = &df_v4_3_funcs; in amdgpu_discovery_set_ip_blocks()
2348 switch (adev->ip_versions[SMUIO_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2354 adev->smuio.funcs = &smuio_v9_0_funcs; in amdgpu_discovery_set_ip_blocks()
2362 adev->smuio.funcs = &smuio_v11_0_funcs; in amdgpu_discovery_set_ip_blocks()
2371 adev->smuio.funcs = &smuio_v11_0_6_funcs; in amdgpu_discovery_set_ip_blocks()
2374 adev->smuio.funcs = &smuio_v13_0_funcs; in amdgpu_discovery_set_ip_blocks()
2378 adev->smuio.funcs = &smuio_v13_0_6_funcs; in amdgpu_discovery_set_ip_blocks()
2384 switch (adev->ip_versions[LSDMA_HWIP][0]) { in amdgpu_discovery_set_ip_blocks()
2389 adev->lsdma.funcs = &lsdma_v6_0_funcs; in amdgpu_discovery_set_ip_blocks()
2395 r = amdgpu_discovery_set_common_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2399 r = amdgpu_discovery_set_gmc_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2404 if (amdgpu_sriov_vf(adev)) { in amdgpu_discovery_set_ip_blocks()
2405 r = amdgpu_discovery_set_psp_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2408 r = amdgpu_discovery_set_ih_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2412 r = amdgpu_discovery_set_ih_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2416 if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) { in amdgpu_discovery_set_ip_blocks()
2417 r = amdgpu_discovery_set_psp_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2423 if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) { in amdgpu_discovery_set_ip_blocks()
2424 r = amdgpu_discovery_set_smu_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2429 r = amdgpu_discovery_set_display_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2433 r = amdgpu_discovery_set_gc_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2437 r = amdgpu_discovery_set_sdma_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2441 if ((adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT && in amdgpu_discovery_set_ip_blocks()
2442 !amdgpu_sriov_vf(adev)) || in amdgpu_discovery_set_ip_blocks()
2443 (adev->firmware.load_type == AMDGPU_FW_LOAD_RLC_BACKDOOR_AUTO && amdgpu_dpm == 1)) { in amdgpu_discovery_set_ip_blocks()
2444 r = amdgpu_discovery_set_smu_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2449 r = amdgpu_discovery_set_mm_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()
2453 r = amdgpu_discovery_set_mes_ip_blocks(adev); in amdgpu_discovery_set_ip_blocks()