Commit 24f60ddc authored by Lijo Lazar's avatar Lijo Lazar Committed by Alex Deucher
Browse files

drm/amdgpu: Fix vbios version string search



Search for vbios version string in STRING_OFFSET-ATOM_ROM_HEADER region
first. If those offsets are not populated, use the hardcoded region.

Signed-off-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 2af351d6
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -1444,10 +1444,27 @@ static void atom_get_vbios_pn(struct atom_context *ctx)

static void atom_get_vbios_version(struct atom_context *ctx)
{
	unsigned short start = 3, end;
	unsigned char *vbios_ver;
	unsigned char *p_rom;

	p_rom = ctx->bios;
	/* Search from strings offset if it's present */
	start = *(unsigned short *)(p_rom +
				    OFFSET_TO_GET_ATOMBIOS_STRING_START);

	/* Search till atom rom header start point */
	end = *(unsigned short *)(p_rom + OFFSET_TO_ATOM_ROM_HEADER_POINTER);

	/* Use hardcoded offsets, if the offsets are not populated */
	if (end <= start) {
		start = 3;
		end = 1024;
	}

	/* find anchor ATOMBIOSBK-AMD */
	vbios_ver = atom_find_str_in_rom(ctx, BIOS_VERSION_PREFIX, 3, 1024, 64);
	vbios_ver =
		atom_find_str_in_rom(ctx, BIOS_VERSION_PREFIX, start, end, 64);
	if (vbios_ver != NULL) {
		/* skip ATOMBIOSBK-AMD VER */
		vbios_ver += 18;