aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c29
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 */
761int 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
757static void amdgpu_atombios_get_igp_ss_overrides(struct amdgpu_device *adev, 786static 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)