diff options
| author | Alex Deucher <alexander.deucher@amd.com> | 2017-07-05 15:26:48 -0400 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2017-07-14 11:06:18 -0400 | 
| commit | 21f6bcb6d449d24b63dd1d5d030d34d88baa6a0f (patch) | |
| tree | c68c13b906cfe8628405f4480b6c38e5b369915a /drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | |
| parent | 6c8855541492b3d812d55c9fe5a2ed17ddf022b8 (diff) | |
drm/amdgpu/atomfirmware: implement vram_width for APUs
Implement support using the new atomfirmware system info table.
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Acked-by: Christian König <christian.koenig@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 | 33 | 
1 files changed, 33 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c index 9ddfe34d12af..a7d65f033883 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c @@ -95,3 +95,36 @@ int amdgpu_atomfirmware_allocate_fb_scratch(struct amdgpu_device *adev)  	ctx->scratch_size_bytes = usage_bytes;  	return 0;  } + +union igp_info { +	struct atom_integrated_system_info_v1_11 v11; +}; + +/* + * Return vram width from integrated system info table, if available, + * or 0 if not. + */ +int amdgpu_atomfirmware_get_vram_width(struct amdgpu_device *adev) +{ +	struct amdgpu_mode_info *mode_info = &adev->mode_info; +	int index = get_index_into_master_table(atom_master_list_of_data_tables_v2_1, +						integratedsysteminfo); +	u16 data_offset, size; +	union igp_info *igp_info; +	u8 frev, crev; + +	/* get any igp specific overrides */ +	if (amdgpu_atom_parse_data_header(mode_info->atom_context, index, &size, +				   &frev, &crev, &data_offset)) { +		igp_info = (union igp_info *) +			(mode_info->atom_context->bios + data_offset); +		switch (crev) { +		case 11: +			return igp_info->v11.umachannelnumber * 64; +		default: +			return 0; +		} +	} + +	return 0; +} | 
