diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c index 236915849cfe..b61e1dc61b4c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | |||
| @@ -117,6 +117,10 @@ union igp_info { | |||
| 117 | union umc_info { | 117 | union umc_info { |
| 118 | struct atom_umc_info_v3_1 v31; | 118 | struct atom_umc_info_v3_1 v31; |
| 119 | }; | 119 | }; |
| 120 | |||
| 121 | union vram_info { | ||
| 122 | struct atom_vram_info_header_v2_3 v23; | ||
| 123 | }; | ||
| 120 | /* | 124 | /* |
| 121 | * Return vram width from integrated system info table, if available, | 125 | * Return vram width from integrated system info table, if available, |
| 122 | * or 0 if not. | 126 | * or 0 if not. |
| @@ -174,7 +178,7 @@ static int convert_atom_mem_type_to_vram_type (struct amdgpu_device *adev, | |||
| 174 | case ATOM_DGPU_VRAM_TYPE_GDDR5: | 178 | case ATOM_DGPU_VRAM_TYPE_GDDR5: |
| 175 | vram_type = AMDGPU_VRAM_TYPE_GDDR5; | 179 | vram_type = AMDGPU_VRAM_TYPE_GDDR5; |
| 176 | break; | 180 | break; |
| 177 | case ATOM_DGPU_VRAM_TYPE_HBM: | 181 | case ATOM_DGPU_VRAM_TYPE_HBM2: |
| 178 | vram_type = AMDGPU_VRAM_TYPE_HBM; | 182 | vram_type = AMDGPU_VRAM_TYPE_HBM; |
| 179 | break; | 183 | break; |
| 180 | default: | 184 | default: |
| @@ -195,7 +199,7 @@ int amdgpu_atomfirmware_get_vram_type(struct amdgpu_device *adev) | |||
| 195 | int index; | 199 | int index; |
| 196 | u16 data_offset, size; | 200 | u16 data_offset, size; |
| 197 | union igp_info *igp_info; | 201 | union igp_info *igp_info; |
| 198 | union umc_info *umc_info; | 202 | union vram_info *vram_info; |
| 199 | u8 frev, crev; | 203 | u8 frev, crev; |
| 200 | u8 mem_type; | 204 | u8 mem_type; |
| 201 | 205 | ||
| @@ -204,7 +208,7 @@ int amdgpu_atomfirmware_get_vram_type(struct amdgpu_device *adev) | |||
| 204 | integratedsysteminfo); | 208 | integratedsysteminfo); |
| 205 | else | 209 | else |
| 206 | index = get_index_into_master_table(atom_master_list_of_data_tables_v2_1, | 210 | index = get_index_into_master_table(atom_master_list_of_data_tables_v2_1, |
| 207 | umc_info); | 211 | vram_info); |
| 208 | if (amdgpu_atom_parse_data_header(mode_info->atom_context, | 212 | if (amdgpu_atom_parse_data_header(mode_info->atom_context, |
| 209 | index, &size, | 213 | index, &size, |
| 210 | &frev, &crev, &data_offset)) { | 214 | &frev, &crev, &data_offset)) { |
| @@ -219,11 +223,11 @@ int amdgpu_atomfirmware_get_vram_type(struct amdgpu_device *adev) | |||
| 219 | return 0; | 223 | return 0; |
| 220 | } | 224 | } |
| 221 | } else { | 225 | } else { |
| 222 | umc_info = (union umc_info *) | 226 | vram_info = (union vram_info *) |
| 223 | (mode_info->atom_context->bios + data_offset); | 227 | (mode_info->atom_context->bios + data_offset); |
| 224 | switch (crev) { | 228 | switch (crev) { |
| 225 | case 1: | 229 | case 3: |
| 226 | mem_type = umc_info->v31.vram_type; | 230 | mem_type = vram_info->v23.vram_module[0].memory_type; |
| 227 | return convert_atom_mem_type_to_vram_type(adev, mem_type); | 231 | return convert_atom_mem_type_to_vram_type(adev, mem_type); |
| 228 | default: | 232 | default: |
| 229 | return 0; | 233 | return 0; |
