From 2795341aaa7a30a32b02843638f1ecb9363ce6a6 Mon Sep 17 00:00:00 2001 From: Ye Li Date: Wed, 30 Jan 2019 22:37:25 -0800 Subject: [PATCH] MLK-20886-10 imx8-power-domain: Check resource partition in probing the PD If the resource is not owned by current partition, we can't power on/off it, so we'd better return probe failure. Signed-off-by: Ye Li (cherry picked from commit 327115c1d490d35afd94ae416ad91bebd595cfe2) --- drivers/power/domain/imx8-power-domain.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/power/domain/imx8-power-domain.c b/drivers/power/domain/imx8-power-domain.c index 692ed4fd45..c30be1d4d7 100644 --- a/drivers/power/domain/imx8-power-domain.c +++ b/drivers/power/domain/imx8-power-domain.c @@ -1,5 +1,5 @@ /* - * Copyright 2017 NXP + * Copyright 2017-2019 NXP * * SPDX-License-Identifier: GPL-2.0 */ @@ -262,6 +262,7 @@ static int imx8_power_domain_ofdata_to_platdata(struct udevice *dev) { int reg; struct imx8_power_domain_platdata *pdata = dev_get_platdata(dev); + sc_ipc_t ipcHndl = gd->arch.ipc_channel_handle; reg = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev), "reg", -1); if (reg == -1) { @@ -272,6 +273,13 @@ static int imx8_power_domain_ofdata_to_platdata(struct udevice *dev) debug("%s resource_id %d\n", __func__, pdata->resource_id); + if (pdata->resource_id != SC_R_LAST) { + if (!sc_rm_is_resource_owned(ipcHndl, pdata->resource_id)) { + debug("%s [%d] not owned by curr partition\n", dev->name, pdata->resource_id); + return -EINVAL; + } + } + return 0; }