@@ -949,6 +949,19 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
if (of_property_read_u32(dev->of_node, "fsl,entry-address", &priv->entry))
return -EINVAL;
+ /*
+ * If remote core is already running (e.g. kicked by
+ * the bootloader), attach to it.
+ */
+ ret = imx_sc_pm_get_resource_power_mode(priv->ipc_handle,
+ priv->rsrc_id);
+ if (ret < 0)
+ dev_err(dev, "failed to get power resource %d mode, ret %d\n",
+ priv->rsrc_id, ret);
+
+ if (ret == IMX_SC_PM_PW_MODE_ON)
+ priv->rproc->state = RPROC_DETACHED;
+
return imx_rproc_attach_pd(priv);
}