Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d2f4767 authored by Ilia Mirkin's avatar Ilia Mirkin Committed by Ben Skeggs
Browse files

drm/nouveau/bios: fix offset calculation for BMPv1 bioses

The only BIOS on record that needs the 14 offset has a bios major
version 2 but BMP version 1.01. Another bunch of BIOSes that need the 18
offset have BMP version 2.01 or 5.01 or higher. So instead of looking at the
bios major version, look at the BMP version. BIOSes with BMP version 0
do not contain a detectable script, so always return 0 for them.

See https://bugs.freedesktop.org/show_bug.cgi?id=68835



Reported-by: default avatarMauro Molinari <mauromol@tiscali.it>
Signed-off-by: default avatarIlia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent c1ccaa64
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -365,13 +365,13 @@ static u16
init_script(struct nouveau_bios *bios, int index)
{
	struct nvbios_init init = { .bios = bios };
	u16 data;
	u16 bmp_ver = bmp_version(bios), data;

	if (bmp_version(bios) && bmp_version(bios) < 0x0510) {
		if (index > 1)
	if (bmp_ver && bmp_ver < 0x0510) {
		if (index > 1 || bmp_ver < 0x0100)
			return 0x0000;

		data = bios->bmp_offset + (bios->version.major < 2 ? 14 : 18);
		data = bios->bmp_offset + (bmp_ver < 0x0200 ? 14 : 18);
		return nv_ro16(bios, data + (index * 2));
	}