aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/remoteproc
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/remoteproc')
-rw-r--r--drivers/remoteproc/omap_remoteproc.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/remoteproc/omap_remoteproc.c b/drivers/remoteproc/omap_remoteproc.c
index 5279293b92e..3f24db84fa8 100644
--- a/drivers/remoteproc/omap_remoteproc.c
+++ b/drivers/remoteproc/omap_remoteproc.c
@@ -437,6 +437,16 @@ static irqreturn_t omap_rproc_watchdog_isr(int irq, void *p)
return IRQ_HANDLED;
}
#endif
+
+static inline void _load_boot_addr(struct rproc *rproc, u64 bootaddr)
+{
+ struct omap_rproc_pdata *pdata = rproc->dev->platform_data;
+
+ if (pdata->boot_reg)
+ omap_writel(bootaddr, pdata->boot_reg);
+ return;
+}
+
static inline int omap_rproc_start(struct rproc *rproc, u64 bootaddr)
{
struct device *dev = rproc->dev;
@@ -457,8 +467,11 @@ static inline int omap_rproc_start(struct rproc *rproc, u64 bootaddr)
}
#ifdef CONFIG_REMOTE_PROC_AUTOSUSPEND
- _init_pm_flags(rproc);
+ ret = _init_pm_flags(rproc);
+ if (ret)
+ return ret;
#endif
+
for (i = 0; i < pdata->timers_cnt; i++) {
timers[i].odt = omap_dm_timer_request_specific(timers[i].id);
if (!timers[i].odt) {
@@ -478,6 +491,7 @@ static inline int omap_rproc_start(struct rproc *rproc, u64 bootaddr)
#endif
}
+ _load_boot_addr(rproc, bootaddr);
ret = omap_device_enable(pdev);
out:
if (ret) {