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

Commit d93b29d2 authored by Chris Lew's avatar Chris Lew
Browse files

soc: qcom: smem: Read version by using the smem header



The SMEM header structure includes the version information.
Read the version directly from the header instead of getting
an item from the global heap.

Change-Id: I74ce62b52c41b8f8a1705b9dd5e25a587236fa12
Signed-off-by: default avatarChris Lew <clew@codeaurora.org>
parent 95343254
Loading
Loading
Loading
Loading
+8 −17
Original line number Diff line number Diff line
@@ -63,11 +63,10 @@
 */

/*
 * Item 3 of the global heap contains an array of versions for the various
 * software components in the SoC. We verify that the boot loader version is
 * what the expected version (SMEM_EXPECTED_VERSION) as a sanity check.
 * The version member of the smem header contains an array of versions for the
 * various software components in the SoC. We verify that the boot loader
 * version is a valid version as a sanity check.
 */
#define SMEM_ITEM_VERSION	3
#define SMEM_MASTER_SBL_VERSION_INDEX	7
#define SMEM_EXPECTED_VERSION		11

@@ -604,19 +603,11 @@ EXPORT_SYMBOL(qcom_smem_get_free_space);

static int qcom_smem_get_sbl_version(struct qcom_smem *smem)
{
	struct smem_header *header;
	__le32 *versions;
	size_t size;

	versions = qcom_smem_get_global(smem, SMEM_ITEM_VERSION, &size);
	if (IS_ERR(versions)) {
		dev_err(smem->dev, "Unable to read the version item\n");
		return -ENOENT;
	}

	if (size < sizeof(unsigned) * SMEM_MASTER_SBL_VERSION_INDEX) {
		dev_err(smem->dev, "Version item is too small\n");
		return -EINVAL;
	}
	header = smem->regions[0].virt_base;
	versions = header->version;

	return le32_to_cpu(versions[SMEM_MASTER_SBL_VERSION_INDEX]);
}