Commit ed7ecb88 authored by Sudeep Holla's avatar Sudeep Holla
Browse files

firmware: arm_scpi: Add compatibility checks for shmem node

The shared memory node used for communication between the firmware and
the OS should be compatible with one of the following:
	- amlogic,meson-gxbb-scp-shmem
	- amlogic,meson-axg-scp-shmem
	- arm,juno-scp-shmem
	- arm,scp-shmem
Add the check for the same while parsing the node before fetching the memory
regions.

Link: https://lore.kernel.org/r/20210602073851.1005607-1-sudeep.holla@arm.com


Cc: Rob Herring <robh+dt@kernel.org>
Cc: Kevin Hilman <khilman@baylibre.com>
Cc: Neil Armstrong <narmstrong@baylibre.com>
Cc: Jerome Brunet <jbrunet@baylibre.com>
Reviewed-by: default avatarCristian Marussi <cristian.marussi@arm.com>
Tested-by: default avatarCristian Marussi <cristian.marussi@arm.com>
Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
parent ab7766b7
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -897,6 +897,14 @@ static const struct of_device_id legacy_scpi_of_match[] = {
	{},
};

static const struct of_device_id shmem_of_match[] __maybe_unused = {
	{ .compatible = "amlogic,meson-gxbb-scp-shmem", },
	{ .compatible = "amlogic,meson-axg-scp-shmem", },
	{ .compatible = "arm,juno-scp-shmem", },
	{ .compatible = "arm,scp-shmem", },
	{ }
};

static int scpi_probe(struct platform_device *pdev)
{
	int count, idx, ret;
@@ -933,6 +941,9 @@ static int scpi_probe(struct platform_device *pdev)
		struct mbox_client *cl = &pchan->cl;
		struct device_node *shmem = of_parse_phandle(np, "shmem", idx);

		if (!of_match_node(shmem_of_match, shmem))
			return -ENXIO;

		ret = of_address_to_resource(shmem, 0, &res);
		of_node_put(shmem);
		if (ret) {