diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c index f52b1bf3d3d9..ad4329922f79 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | |||
@@ -754,6 +754,35 @@ union igp_info { | |||
754 | struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_9 info_9; | 754 | struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_9 info_9; |
755 | }; | 755 | }; |
756 | 756 | ||
757 | /* | ||
758 | * Return vram width from integrated system info table, if available, | ||
759 | * or 0 if not. | ||
760 | */ | ||
761 | int amdgpu_atombios_get_vram_width(struct amdgpu_device *adev) | ||
762 | { | ||
763 | struct amdgpu_mode_info *mode_info = &adev->mode_info; | ||
764 | int index = GetIndexIntoMasterTable(DATA, IntegratedSystemInfo); | ||
765 | u16 data_offset, size; | ||
766 | union igp_info *igp_info; | ||
767 | u8 frev, crev; | ||
768 | |||
769 | /* get any igp specific overrides */ | ||
770 | if (amdgpu_atom_parse_data_header(mode_info->atom_context, index, &size, | ||
771 | &frev, &crev, &data_offset)) { | ||
772 | igp_info = (union igp_info *) | ||
773 | (mode_info->atom_context->bios + data_offset); | ||
774 | switch (crev) { | ||
775 | case 8: | ||
776 | case 9: | ||
777 | return igp_info->info_8.ucUMAChannelNumber * 64; | ||
778 | default: | ||
779 | return 0; | ||
780 | } | ||
781 | } | ||
782 | |||
783 | return 0; | ||
784 | } | ||
785 | |||
757 | static void amdgpu_atombios_get_igp_ss_overrides(struct amdgpu_device *adev, | 786 | static void amdgpu_atombios_get_igp_ss_overrides(struct amdgpu_device *adev, |
758 | struct amdgpu_atom_ss *ss, | 787 | struct amdgpu_atom_ss *ss, |
759 | int id) | 788 | int id) |