summaryrefslogtreecommitdiff
path: root/arch/arm/mach-imx/imx8/cpu.c
diff options
context:
space:
mode:
authorYe Li <ye.li@nxp.com>2018-04-16 00:30:29 -0700
committerYe Li <ye.li@nxp.com>2018-04-27 02:32:23 -0700
commit75cdc9b6a476f3cef9e49d02873b9244ceb447c8 (patch)
treebdac2cc0c801991df8cfe2ff41ee56e400a88722 /arch/arm/mach-imx/imx8/cpu.c
parent3caa05e6dc973b8710642f27f834bf022fbb65b4 (diff)
MLK-16560-2: imx8: Use fsl,sc_rsrc_id binding to map device to rsrc
Using the SMMU for some devices (like dpu) requires a streamid to be assigned to multiple resources. Determining the resource ids for a device is a problem that occurs in multiple contexts. So far uboot deals with this by parsing the power-domain node which is insufficient here. Add a new devicetree property called fsl,sc_rsrc_id which lists the resource ids associated by a certain device. Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> Reviewed-by: Ye Li <ye.li@nxp.com> Acked-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'arch/arm/mach-imx/imx8/cpu.c')
-rw-r--r--arch/arm/mach-imx/imx8/cpu.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/imx8/cpu.c b/arch/arm/mach-imx/imx8/cpu.c
index cff138a2d3..6b374caad1 100644
--- a/arch/arm/mach-imx/imx8/cpu.c
+++ b/arch/arm/mach-imx/imx8/cpu.c
@@ -856,8 +856,23 @@ static int config_smmu_resource_sid(int rsrc, int sid)
static int config_smmu_fdt_device_sid(void *blob, int device_offset, int sid)
{
int rsrc;
+ int proplen;
+ const fdt32_t *prop;
const char *name = fdt_get_name(blob, device_offset, NULL);
+ prop = fdt_getprop(blob, device_offset, "fsl,sc_rsrc_id", &proplen);
+ if (prop) {
+ int i;
+
+ debug("configure node %s sid 0x%x for %d resources\n",
+ name, sid, (int)(proplen / sizeof(fdt32_t)));
+ for (i = 0; i < proplen / sizeof(fdt32_t); ++i) {
+ config_smmu_resource_sid(fdt32_to_cpu(prop[i]), sid);
+ }
+
+ return 0;
+ }
+
rsrc = get_srsc_from_fdt_node_power_domain(blob, device_offset);
debug("configure node %s sid 0x%x rsrc=%d\n", name, sid, rsrc);
if (rsrc < 0) {