diff options
author | Hawking Zhang <Hawking.Zhang@amd.com> | 2020-01-23 04:13:01 +0800 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2020-07-01 01:59:10 -0400 |
commit | 9a244ebe8128063ca1eaa6597da128b5c1689e3c (patch) | |
tree | 27bb2b71d6e3fce9e4644c2459b42eabb7ab6aa7 /drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | |
parent | 718715e6a484c882a74f9f0e08b3d4c477cd70dd (diff) | |
download | linux-9a244ebe8128063ca1eaa6597da128b5c1689e3c.tar.bz2 |
drm/amdgpu: add atomfirmware helper funciton to query reserved fb size
fw_reserved_size_in_kb is introduced for driver to query
the TMR region reserved by PSP BL in Sienna_Cichlid and onwards
Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c index 659d845dbebe..a9adccfda4c0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c @@ -325,6 +325,9 @@ bool amdgpu_atomfirmware_mem_ecc_supported(struct amdgpu_device *adev) union firmware_info { struct atom_firmware_info_v3_1 v31; + struct atom_firmware_info_v3_2 v32; + struct atom_firmware_info_v3_3 v33; + struct atom_firmware_info_v3_4 v34; }; /* @@ -590,3 +593,38 @@ int amdgpu_atomfirmware_get_mem_train_info(struct amdgpu_device *adev) adev->fw_vram_usage.mem_train_support = true; return 0; } + +int amdgpu_atomfirmware_get_fw_reserved_fb_size(struct amdgpu_device *adev) +{ + struct atom_context *ctx = adev->mode_info.atom_context; + union firmware_info *firmware_info; + int index; + u16 data_offset, size; + u8 frev, crev; + int fw_reserved_fb_size; + + index = get_index_into_master_table(atom_master_list_of_data_tables_v2_1, + firmwareinfo); + + if (!amdgpu_atom_parse_data_header(ctx, index, &size, + &frev, &crev, &data_offset)) + /* fail to parse data_header */ + return 0; + + firmware_info = (union firmware_info *)(ctx->bios + data_offset); + + if (frev !=3) + return -EINVAL; + + switch (crev) { + case 4: + fw_reserved_fb_size = + (firmware_info->v34.fw_reserved_size_in_kb << 10); + break; + default: + fw_reserved_fb_size = 0; + break; + } + + return fw_reserved_fb_size; +} |