diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/atom.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/atom.c | 22 | 
1 files changed, 22 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/atom.c b/drivers/gpu/drm/amd/amdgpu/atom.c index 427b073de2fc..1c994d0cc50b 100644 --- a/drivers/gpu/drm/amd/amdgpu/atom.c +++ b/drivers/gpu/drm/amd/amdgpu/atom.c @@ -1494,6 +1494,27 @@ static void atom_get_vbios_version(struct atom_context *ctx)  	}  } +static void atom_get_vbios_build(struct atom_context *ctx) +{ +	unsigned char *atom_rom_hdr; +	unsigned char *str; +	uint16_t base; + +	base = CU16(ATOM_ROM_TABLE_PTR); +	atom_rom_hdr = CSTR(base); + +	str = CSTR(CU16(base + ATOM_ROM_CFG_PTR)); +	/* Skip config string */ +	while (str < atom_rom_hdr && *str++) +		; +	/* Skip change list string */ +	while (str < atom_rom_hdr && *str++) +		; + +	if ((str + STRLEN_NORMAL) < atom_rom_hdr) +		strscpy(ctx->build_num, str, STRLEN_NORMAL); +} +  struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios)  {  	int base; @@ -1554,6 +1575,7 @@ struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios)  	atom_get_vbios_pn(ctx);  	atom_get_vbios_date(ctx);  	atom_get_vbios_version(ctx); +	atom_get_vbios_build(ctx);  	return ctx;  } | 
