Lines Matching +full:gfx +full:- +full:mem
48 struct amdgpu_mode_info *mode_info = &adev->mode_info; in amdgpu_atomfirmware_query_firmware_capability()
58 if (amdgpu_atom_parse_data_header(adev->mode_info.atom_context, in amdgpu_atomfirmware_query_firmware_capability()
63 (mode_info->atom_context->bios + data_offset); in amdgpu_atomfirmware_query_firmware_capability()
64 fw_cap = le32_to_cpu(firmware_info->v31.firmware_capability); in amdgpu_atomfirmware_query_firmware_capability()
82 fw_cap = adev->mode_info.firmware_flags; in amdgpu_atomfirmware_gpu_virtualization_supported()
93 if (amdgpu_atom_parse_data_header(adev->mode_info.atom_context, index, NULL, in amdgpu_atomfirmware_scratch_regs_init()
96 (struct atom_firmware_info_v3_1 *)(adev->mode_info.atom_context->bios + in amdgpu_atomfirmware_scratch_regs_init()
99 adev->bios_scratch_reg_offset = in amdgpu_atomfirmware_scratch_regs_init()
100 le32_to_cpu(firmware_info->bios_scratch_reg_startaddr); in amdgpu_atomfirmware_scratch_regs_init()
109 start_addr = le32_to_cpu(fw_usage->start_address_in_kb); in amdgpu_atomfirmware_allocate_fb_v2_1()
110 fw_size = le16_to_cpu(fw_usage->used_by_firmware_in_kb); in amdgpu_atomfirmware_allocate_fb_v2_1()
111 drv_size = le16_to_cpu(fw_usage->used_by_driver_in_kb); in amdgpu_atomfirmware_allocate_fb_v2_1()
121 /* Firmware request VRAM reservation for SR-IOV */ in amdgpu_atomfirmware_allocate_fb_v2_1()
122 adev->mman.fw_vram_usage_start_offset = (start_addr & in amdgpu_atomfirmware_allocate_fb_v2_1()
124 adev->mman.fw_vram_usage_size = fw_size << 10; in amdgpu_atomfirmware_allocate_fb_v2_1()
138 fw_start_addr = le32_to_cpu(fw_usage->fw_region_start_address_in_kb); in amdgpu_atomfirmware_allocate_fb_v2_2()
139 fw_size = le16_to_cpu(fw_usage->used_by_firmware_in_kb); in amdgpu_atomfirmware_allocate_fb_v2_2()
141 drv_start_addr = le32_to_cpu(fw_usage->driver_region0_start_address_in_kb); in amdgpu_atomfirmware_allocate_fb_v2_2()
142 drv_size = le32_to_cpu(fw_usage->used_by_driver_region0_in_kb); in amdgpu_atomfirmware_allocate_fb_v2_2()
153 /* Firmware request VRAM reservation for SR-IOV */ in amdgpu_atomfirmware_allocate_fb_v2_2()
154 adev->mman.fw_vram_usage_start_offset = (fw_start_addr & in amdgpu_atomfirmware_allocate_fb_v2_2()
156 adev->mman.fw_vram_usage_size = fw_size << 10; in amdgpu_atomfirmware_allocate_fb_v2_2()
162 /* driver request VRAM reservation for SR-IOV */ in amdgpu_atomfirmware_allocate_fb_v2_2()
163 adev->mman.drv_vram_usage_start_offset = (drv_start_addr & in amdgpu_atomfirmware_allocate_fb_v2_2()
165 adev->mman.drv_vram_usage_size = drv_size << 10; in amdgpu_atomfirmware_allocate_fb_v2_2()
174 struct atom_context *ctx = adev->mode_info.atom_context; in amdgpu_atomfirmware_allocate_fb_scratch()
186 (struct vram_usagebyfirmware_v2_1 *)(ctx->bios + data_offset); in amdgpu_atomfirmware_allocate_fb_scratch()
192 (struct vram_usagebyfirmware_v2_2 *)(ctx->bios + data_offset); in amdgpu_atomfirmware_allocate_fb_scratch()
199 ctx->scratch_size_bytes = 0; in amdgpu_atomfirmware_allocate_fb_scratch()
203 ctx->scratch = kzalloc(usage_bytes, GFP_KERNEL); in amdgpu_atomfirmware_allocate_fb_scratch()
204 if (!ctx->scratch) in amdgpu_atomfirmware_allocate_fb_scratch()
205 return -ENOMEM; in amdgpu_atomfirmware_allocate_fb_scratch()
206 ctx->scratch_size_bytes = usage_bytes; in amdgpu_atomfirmware_allocate_fb_scratch()
243 if (adev->flags & AMD_IS_APU) { in convert_atom_mem_type_to_vram_type()
297 struct amdgpu_mode_info *mode_info = &adev->mode_info; in amdgpu_atomfirmware_get_vram_info()
310 if (adev->flags & AMD_IS_APU) in amdgpu_atomfirmware_get_vram_info()
317 if (amdgpu_atom_parse_data_header(mode_info->atom_context, in amdgpu_atomfirmware_get_vram_info()
320 if (adev->flags & AMD_IS_APU) { in amdgpu_atomfirmware_get_vram_info()
322 (mode_info->atom_context->bios + data_offset); in amdgpu_atomfirmware_get_vram_info()
328 mem_channel_number = igp_info->v11.umachannelnumber; in amdgpu_atomfirmware_get_vram_info()
331 mem_type = igp_info->v11.memorytype; in amdgpu_atomfirmware_get_vram_info()
342 return -EINVAL; in amdgpu_atomfirmware_get_vram_info()
349 mem_channel_number = igp_info->v21.umachannelnumber; in amdgpu_atomfirmware_get_vram_info()
352 mem_type = igp_info->v21.memorytype; in amdgpu_atomfirmware_get_vram_info()
363 return -EINVAL; in amdgpu_atomfirmware_get_vram_info()
367 return -EINVAL; in amdgpu_atomfirmware_get_vram_info()
371 (mode_info->atom_context->bios + data_offset); in amdgpu_atomfirmware_get_vram_info()
372 module_id = (RREG32(adev->bios_scratch_reg_offset + 4) & 0x00ff0000) >> 16; in amdgpu_atomfirmware_get_vram_info()
377 vram_module = (union vram_module *)vram_info->v30.vram_module; in amdgpu_atomfirmware_get_vram_info()
378 mem_vendor = (vram_module->v30.dram_vendor_id) & 0xF; in amdgpu_atomfirmware_get_vram_info()
381 mem_type = vram_info->v30.memory_type; in amdgpu_atomfirmware_get_vram_info()
384 mem_channel_number = vram_info->v30.channel_num; in amdgpu_atomfirmware_get_vram_info()
385 mem_channel_width = vram_info->v30.channel_width; in amdgpu_atomfirmware_get_vram_info()
390 return -EINVAL; in amdgpu_atomfirmware_get_vram_info()
396 if (module_id > vram_info->v23.vram_module_num) in amdgpu_atomfirmware_get_vram_info()
398 vram_module = (union vram_module *)vram_info->v23.vram_module; in amdgpu_atomfirmware_get_vram_info()
401 ((u8 *)vram_module + vram_module->v9.vram_module_size); in amdgpu_atomfirmware_get_vram_info()
404 mem_type = vram_module->v9.memory_type; in amdgpu_atomfirmware_get_vram_info()
407 mem_channel_number = vram_module->v9.channel_num; in amdgpu_atomfirmware_get_vram_info()
408 mem_channel_width = vram_module->v9.channel_width; in amdgpu_atomfirmware_get_vram_info()
411 mem_vendor = (vram_module->v9.vender_rev_id) & 0xF; in amdgpu_atomfirmware_get_vram_info()
417 if (module_id > vram_info->v24.vram_module_num) in amdgpu_atomfirmware_get_vram_info()
419 vram_module = (union vram_module *)vram_info->v24.vram_module; in amdgpu_atomfirmware_get_vram_info()
422 ((u8 *)vram_module + vram_module->v10.vram_module_size); in amdgpu_atomfirmware_get_vram_info()
425 mem_type = vram_module->v10.memory_type; in amdgpu_atomfirmware_get_vram_info()
428 mem_channel_number = vram_module->v10.channel_num; in amdgpu_atomfirmware_get_vram_info()
429 mem_channel_width = vram_module->v10.channel_width; in amdgpu_atomfirmware_get_vram_info()
432 mem_vendor = (vram_module->v10.vender_rev_id) & 0xF; in amdgpu_atomfirmware_get_vram_info()
438 if (module_id > vram_info->v25.vram_module_num) in amdgpu_atomfirmware_get_vram_info()
440 vram_module = (union vram_module *)vram_info->v25.vram_module; in amdgpu_atomfirmware_get_vram_info()
443 ((u8 *)vram_module + vram_module->v11.vram_module_size); in amdgpu_atomfirmware_get_vram_info()
446 mem_type = vram_module->v11.memory_type; in amdgpu_atomfirmware_get_vram_info()
449 mem_channel_number = vram_module->v11.channel_num; in amdgpu_atomfirmware_get_vram_info()
450 mem_channel_width = vram_module->v11.channel_width; in amdgpu_atomfirmware_get_vram_info()
453 mem_vendor = (vram_module->v11.vender_rev_id) & 0xF; in amdgpu_atomfirmware_get_vram_info()
459 if (module_id > vram_info->v26.vram_module_num) in amdgpu_atomfirmware_get_vram_info()
461 vram_module = (union vram_module *)vram_info->v26.vram_module; in amdgpu_atomfirmware_get_vram_info()
464 ((u8 *)vram_module + vram_module->v9.vram_module_size); in amdgpu_atomfirmware_get_vram_info()
467 mem_type = vram_module->v9.memory_type; in amdgpu_atomfirmware_get_vram_info()
470 mem_channel_number = vram_module->v9.channel_num; in amdgpu_atomfirmware_get_vram_info()
471 mem_channel_width = vram_module->v9.channel_width; in amdgpu_atomfirmware_get_vram_info()
474 mem_vendor = (vram_module->v9.vender_rev_id) & 0xF; in amdgpu_atomfirmware_get_vram_info()
479 return -EINVAL; in amdgpu_atomfirmware_get_vram_info()
483 return -EINVAL; in amdgpu_atomfirmware_get_vram_info()
498 struct amdgpu_mode_info *mode_info = &adev->mode_info; in amdgpu_atomfirmware_mem_ecc_supported()
510 if (amdgpu_atom_parse_data_header(mode_info->atom_context, in amdgpu_atomfirmware_mem_ecc_supported()
512 umc_info = (union umc_info *)(mode_info->atom_context->bios + data_offset); in amdgpu_atomfirmware_mem_ecc_supported()
516 umc_config = le32_to_cpu(umc_info->v31.umc_config); in amdgpu_atomfirmware_mem_ecc_supported()
521 umc_config = le32_to_cpu(umc_info->v32.umc_config); in amdgpu_atomfirmware_mem_ecc_supported()
526 umc_config = le32_to_cpu(umc_info->v33.umc_config); in amdgpu_atomfirmware_mem_ecc_supported()
527 umc_config1 = le32_to_cpu(umc_info->v33.umc_config1); in amdgpu_atomfirmware_mem_ecc_supported()
539 umc_config1 = le32_to_cpu(umc_info->v40.umc_config1); in amdgpu_atomfirmware_mem_ecc_supported()
567 fw_cap = adev->mode_info.firmware_flags; in amdgpu_atomfirmware_sram_ecc_supported()
583 fw_cap = adev->mode_info.firmware_flags; in amdgpu_atomfirmware_dynamic_boot_config_supported()
589 * amdgpu_atomfirmware_ras_rom_addr -- Get the RAS EEPROM addr from VBIOS
601 struct amdgpu_mode_info *mode_info = &adev->mode_info; in amdgpu_atomfirmware_ras_rom_addr()
610 if (amdgpu_atom_parse_data_header(adev->mode_info.atom_context, in amdgpu_atomfirmware_ras_rom_addr()
616 (mode_info->atom_context->bios + data_offset); in amdgpu_atomfirmware_ras_rom_addr()
618 * be a 19-bit EEPROM address, which would be in amdgpu_atomfirmware_ras_rom_addr()
632 if (firmware_info->v34.ras_rom_i2c_slave_addr) { in amdgpu_atomfirmware_ras_rom_addr()
634 *i2c_address = firmware_info->v34.ras_rom_i2c_slave_addr; in amdgpu_atomfirmware_ras_rom_addr()
658 struct amdgpu_mode_info *mode_info = &adev->mode_info; in amdgpu_atomfirmware_get_clock_info()
659 struct amdgpu_pll *spll = &adev->clock.spll; in amdgpu_atomfirmware_get_clock_info()
660 struct amdgpu_pll *mpll = &adev->clock.mpll; in amdgpu_atomfirmware_get_clock_info()
663 int ret = -EINVAL, index; in amdgpu_atomfirmware_get_clock_info()
667 if (amdgpu_atom_parse_data_header(mode_info->atom_context, index, NULL, in amdgpu_atomfirmware_get_clock_info()
670 (union firmware_info *)(mode_info->atom_context->bios + in amdgpu_atomfirmware_get_clock_info()
673 adev->clock.default_sclk = in amdgpu_atomfirmware_get_clock_info()
674 le32_to_cpu(firmware_info->v31.bootup_sclk_in10khz); in amdgpu_atomfirmware_get_clock_info()
675 adev->clock.default_mclk = in amdgpu_atomfirmware_get_clock_info()
676 le32_to_cpu(firmware_info->v31.bootup_mclk_in10khz); in amdgpu_atomfirmware_get_clock_info()
678 adev->pm.current_sclk = adev->clock.default_sclk; in amdgpu_atomfirmware_get_clock_info()
679 adev->pm.current_mclk = adev->clock.default_mclk; in amdgpu_atomfirmware_get_clock_info()
686 if (amdgpu_atom_parse_data_header(mode_info->atom_context, index, NULL, in amdgpu_atomfirmware_get_clock_info()
689 (union smu_info *)(mode_info->atom_context->bios + in amdgpu_atomfirmware_get_clock_info()
694 spll->reference_freq = le32_to_cpu(smu_info->v31.core_refclk_10khz); in amdgpu_atomfirmware_get_clock_info()
696 spll->reference_freq = le32_to_cpu(smu_info->v40.core_refclk_10khz); in amdgpu_atomfirmware_get_clock_info()
698 spll->reference_div = 0; in amdgpu_atomfirmware_get_clock_info()
699 spll->min_post_div = 1; in amdgpu_atomfirmware_get_clock_info()
700 spll->max_post_div = 1; in amdgpu_atomfirmware_get_clock_info()
701 spll->min_ref_div = 2; in amdgpu_atomfirmware_get_clock_info()
702 spll->max_ref_div = 0xff; in amdgpu_atomfirmware_get_clock_info()
703 spll->min_feedback_div = 4; in amdgpu_atomfirmware_get_clock_info()
704 spll->max_feedback_div = 0xff; in amdgpu_atomfirmware_get_clock_info()
705 spll->best_vco = 0; in amdgpu_atomfirmware_get_clock_info()
712 if (amdgpu_atom_parse_data_header(mode_info->atom_context, index, NULL, in amdgpu_atomfirmware_get_clock_info()
715 (union umc_info *)(mode_info->atom_context->bios + in amdgpu_atomfirmware_get_clock_info()
719 mpll->reference_freq = le32_to_cpu(umc_info->v31.mem_refclk_10khz); in amdgpu_atomfirmware_get_clock_info()
721 mpll->reference_div = 0; in amdgpu_atomfirmware_get_clock_info()
722 mpll->min_post_div = 1; in amdgpu_atomfirmware_get_clock_info()
723 mpll->max_post_div = 1; in amdgpu_atomfirmware_get_clock_info()
724 mpll->min_ref_div = 2; in amdgpu_atomfirmware_get_clock_info()
725 mpll->max_ref_div = 0xff; in amdgpu_atomfirmware_get_clock_info()
726 mpll->min_feedback_div = 4; in amdgpu_atomfirmware_get_clock_info()
727 mpll->max_feedback_div = 0xff; in amdgpu_atomfirmware_get_clock_info()
728 mpll->best_vco = 0; in amdgpu_atomfirmware_get_clock_info()
735 if (adev->asic_type >= CHIP_NAVI10) { in amdgpu_atomfirmware_get_clock_info()
738 if (amdgpu_atom_parse_data_header(mode_info->atom_context, index, NULL, in amdgpu_atomfirmware_get_clock_info()
741 (mode_info->atom_context->bios + data_offset); in amdgpu_atomfirmware_get_clock_info()
744 spll->reference_freq = le32_to_cpu(gfx_info->v30.golden_tsc_count_lower_refclk); in amdgpu_atomfirmware_get_clock_info()
749 spll->reference_freq = le32_to_cpu(gfx_info->v22.rlc_gpu_timer_refclk); in amdgpu_atomfirmware_get_clock_info()
762 struct amdgpu_mode_info *mode_info = &adev->mode_info; in amdgpu_atomfirmware_get_gfx_info()
769 if (amdgpu_atom_parse_data_header(mode_info->atom_context, index, NULL, in amdgpu_atomfirmware_get_gfx_info()
772 (mode_info->atom_context->bios + data_offset); in amdgpu_atomfirmware_get_gfx_info()
776 adev->gfx.config.max_shader_engines = gfx_info->v24.max_shader_engines; in amdgpu_atomfirmware_get_gfx_info()
777 adev->gfx.config.max_cu_per_sh = gfx_info->v24.max_cu_per_sh; in amdgpu_atomfirmware_get_gfx_info()
778 adev->gfx.config.max_sh_per_se = gfx_info->v24.max_sh_per_se; in amdgpu_atomfirmware_get_gfx_info()
779 adev->gfx.config.max_backends_per_se = gfx_info->v24.max_backends_per_se; in amdgpu_atomfirmware_get_gfx_info()
780 adev->gfx.config.max_texture_channel_caches = gfx_info->v24.max_texture_channel_caches; in amdgpu_atomfirmware_get_gfx_info()
781 adev->gfx.config.max_gprs = le16_to_cpu(gfx_info->v24.gc_num_gprs); in amdgpu_atomfirmware_get_gfx_info()
782 adev->gfx.config.max_gs_threads = gfx_info->v24.gc_num_max_gs_thds; in amdgpu_atomfirmware_get_gfx_info()
783 adev->gfx.config.gs_vgt_table_depth = gfx_info->v24.gc_gs_table_depth; in amdgpu_atomfirmware_get_gfx_info()
784 adev->gfx.config.gs_prim_buffer_depth = in amdgpu_atomfirmware_get_gfx_info()
785 le16_to_cpu(gfx_info->v24.gc_gsprim_buff_depth); in amdgpu_atomfirmware_get_gfx_info()
786 adev->gfx.config.double_offchip_lds_buf = in amdgpu_atomfirmware_get_gfx_info()
787 gfx_info->v24.gc_double_offchip_lds_buffer; in amdgpu_atomfirmware_get_gfx_info()
788 adev->gfx.cu_info.wave_front_size = le16_to_cpu(gfx_info->v24.gc_wave_size); in amdgpu_atomfirmware_get_gfx_info()
789 adev->gfx.cu_info.max_waves_per_simd = le16_to_cpu(gfx_info->v24.gc_max_waves_per_simd); in amdgpu_atomfirmware_get_gfx_info()
790 adev->gfx.cu_info.max_scratch_slots_per_cu = gfx_info->v24.gc_max_scratch_slots_per_cu; in amdgpu_atomfirmware_get_gfx_info()
791 adev->gfx.cu_info.lds_size = le16_to_cpu(gfx_info->v24.gc_lds_size); in amdgpu_atomfirmware_get_gfx_info()
794 adev->gfx.config.max_shader_engines = gfx_info->v27.max_shader_engines; in amdgpu_atomfirmware_get_gfx_info()
795 adev->gfx.config.max_cu_per_sh = gfx_info->v27.max_cu_per_sh; in amdgpu_atomfirmware_get_gfx_info()
796 adev->gfx.config.max_sh_per_se = gfx_info->v27.max_sh_per_se; in amdgpu_atomfirmware_get_gfx_info()
797 adev->gfx.config.max_backends_per_se = gfx_info->v27.max_backends_per_se; in amdgpu_atomfirmware_get_gfx_info()
798 adev->gfx.config.max_texture_channel_caches = gfx_info->v27.max_texture_channel_caches; in amdgpu_atomfirmware_get_gfx_info()
799 adev->gfx.config.max_gprs = le16_to_cpu(gfx_info->v27.gc_num_gprs); in amdgpu_atomfirmware_get_gfx_info()
800 adev->gfx.config.max_gs_threads = gfx_info->v27.gc_num_max_gs_thds; in amdgpu_atomfirmware_get_gfx_info()
801 adev->gfx.config.gs_vgt_table_depth = gfx_info->v27.gc_gs_table_depth; in amdgpu_atomfirmware_get_gfx_info()
802 adev->gfx.config.gs_prim_buffer_depth = le16_to_cpu(gfx_info->v27.gc_gsprim_buff_depth); in amdgpu_atomfirmware_get_gfx_info()
803 adev->gfx.config.double_offchip_lds_buf = gfx_info->v27.gc_double_offchip_lds_buffer; in amdgpu_atomfirmware_get_gfx_info()
804 adev->gfx.cu_info.wave_front_size = le16_to_cpu(gfx_info->v27.gc_wave_size); in amdgpu_atomfirmware_get_gfx_info()
805 adev->gfx.cu_info.max_waves_per_simd = le16_to_cpu(gfx_info->v27.gc_max_waves_per_simd); in amdgpu_atomfirmware_get_gfx_info()
806 adev->gfx.cu_info.max_scratch_slots_per_cu = gfx_info->v27.gc_max_scratch_slots_per_cu; in amdgpu_atomfirmware_get_gfx_info()
807 adev->gfx.cu_info.lds_size = le16_to_cpu(gfx_info->v27.gc_lds_size); in amdgpu_atomfirmware_get_gfx_info()
810 return -EINVAL; in amdgpu_atomfirmware_get_gfx_info()
815 adev->gfx.config.max_shader_engines = gfx_info->v30.max_shader_engines; in amdgpu_atomfirmware_get_gfx_info()
816 adev->gfx.config.max_cu_per_sh = gfx_info->v30.max_cu_per_sh; in amdgpu_atomfirmware_get_gfx_info()
817 adev->gfx.config.max_sh_per_se = gfx_info->v30.max_sh_per_se; in amdgpu_atomfirmware_get_gfx_info()
818 adev->gfx.config.max_backends_per_se = gfx_info->v30.max_backends_per_se; in amdgpu_atomfirmware_get_gfx_info()
819 adev->gfx.config.max_texture_channel_caches = gfx_info->v30.max_texture_channel_caches; in amdgpu_atomfirmware_get_gfx_info()
822 return -EINVAL; in amdgpu_atomfirmware_get_gfx_info()
825 return -EINVAL; in amdgpu_atomfirmware_get_gfx_info()
829 return -EINVAL; in amdgpu_atomfirmware_get_gfx_info()
833 * Helper function to query two stage mem training capability
837 * Return true if two stage mem training is supported or false if not
843 fw_cap = adev->mode_info.firmware_flags; in amdgpu_atomfirmware_mem_training_supported()
850 struct atom_context *ctx = adev->mode_info.atom_context; in amdgpu_atomfirmware_get_fw_reserved_fb_size()
865 firmware_info = (union firmware_info *)(ctx->bios + data_offset); in amdgpu_atomfirmware_get_fw_reserved_fb_size()
868 return -EINVAL; in amdgpu_atomfirmware_get_fw_reserved_fb_size()
873 (firmware_info->v34.fw_reserved_size_in_kb << 10); in amdgpu_atomfirmware_get_fw_reserved_fb_size()
893 struct amdgpu_mode_info *mode_info = &adev->mode_info; in amdgpu_atomfirmware_asic_init()
902 return -EINVAL; in amdgpu_atomfirmware_asic_init()
904 ctx = mode_info->atom_context; in amdgpu_atomfirmware_asic_init()
906 return -EINVAL; in amdgpu_atomfirmware_asic_init()
914 (union firmware_info *)(ctx->bios + in amdgpu_atomfirmware_asic_init()
918 le32_to_cpu(firmware_info->v31.bootup_sclk_in10khz); in amdgpu_atomfirmware_asic_init()
920 le32_to_cpu(firmware_info->v31.bootup_mclk_in10khz); in amdgpu_atomfirmware_asic_init()
922 return -EINVAL; in amdgpu_atomfirmware_asic_init()
927 if (amdgpu_atom_parse_cmd_header(mode_info->atom_context, index, &frev, &crev)) { in amdgpu_atomfirmware_asic_init()
938 return -EINVAL; in amdgpu_atomfirmware_asic_init()
941 return -EINVAL; in amdgpu_atomfirmware_asic_init()