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

Commit b34a991a authored by Jani Nikula's avatar Jani Nikula Committed by Daniel Vetter
Browse files

drm/i915/bios: abstract finding VBT in BIOS to a separate function



Improve clarity. No functional changes.

Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 4d70f38a
Loading
Loading
Loading
Loading
+18 −11
Original line number Diff line number Diff line
@@ -1235,6 +1235,22 @@ static const struct bdb_header *validate_vbt(const void *base, size_t size,
	return bdb;
}

static const struct bdb_header *find_vbt(void *bios, size_t size)
{
	const struct bdb_header *bdb = NULL;
	size_t i;

	/* Scour memory looking for the VBT signature. */
	for (i = 0; i + 4 < size; i++) {
		if (memcmp(bios + i, "$VBT", 4) == 0) {
			bdb = validate_vbt(bios, size, bios + i, "PCI ROM");
			break;
		}
	}

	return bdb;
}

/**
 * intel_parse_bios - find VBT and initialize settings from the BIOS
 * @dev: DRM device
@@ -1263,22 +1279,13 @@ intel_parse_bios(struct drm_device *dev)
				   dev_priv->opregion.vbt, "OpRegion");

	if (bdb == NULL) {
		size_t i, size;
		size_t size;

		bios = pci_map_rom(pdev, &size);
		if (!bios)
			return -1;

		/* Scour memory looking for the VBT signature */
		for (i = 0; i + 4 < size; i++) {
			if (memcmp(bios + i, "$VBT", 4) == 0) {
				bdb = validate_vbt(bios, size,
						   bios + i,
						   "PCI ROM");
				break;
			}
		}

		bdb = find_vbt(bios, size);
		if (!bdb) {
			pci_unmap_rom(pdev, bios);
			return -1;