diff options
author | Juan Gutierrez <jgutierrez@ti.com> | 2012-03-01 12:09:32 -0600 |
---|---|---|
committer | Ziyann <jaraidaniel@gmail.com> | 2014-10-01 12:57:10 +0200 |
commit | 22be0a11a591a5c567a4b91732cf5a6804dd161d (patch) | |
tree | 958a775fe900dd4bf3bd2c03916c84fb92daaf13 /drivers/remoteproc | |
parent | a33cd14c91c1b86d8b78460880d1d7d72018bb25 (diff) | |
download | kernel_samsung_tuna-22be0a11a591a5c567a4b91732cf5a6804dd161d.tar.gz kernel_samsung_tuna-22be0a11a591a5c567a4b91732cf5a6804dd161d.tar.bz2 kernel_samsung_tuna-22be0a11a591a5c567a4b91732cf5a6804dd161d.zip |
omap: remoteproc: add watchdog timer support for dsp
Use GPTimer 6 as the watchdog timer for dsp. This is used
specifically instead of the WDT3, as the latter is not
capable of generating an interrupt to the DSP core. The
former is used to generate an interrupt and thereby
gather some watchdog context data.
Change-Id: I7f8d6e7070cc14f4339e79e42a6affe169270bb2
Signed-off-by: Juan Gutierrez <jgutierrez@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
Diffstat (limited to 'drivers/remoteproc')
-rw-r--r-- | drivers/remoteproc/omap_remoteproc.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/remoteproc/omap_remoteproc.c b/drivers/remoteproc/omap_remoteproc.c index 7bb5dc65dcb..71a3e5584f4 100644 --- a/drivers/remoteproc/omap_remoteproc.c +++ b/drivers/remoteproc/omap_remoteproc.c @@ -447,8 +447,10 @@ static inline int omap_rproc_start(struct rproc *rproc, u64 bootaddr) } omap_dm_timer_set_source(timers[i].odt, OMAP_TIMER_SRC_SYS_CLK); #ifdef CONFIG_REMOTEPROC_WATCHDOG - /* GPT 9 and 11 are using as WDT */ - if (timers[i].id == 9 || timers[i].id == 11) { + /* GPT 9 & 11 (ipu); GPT 6 (dsp) are used as watchdog timers */ + if ((!strcmp(rproc->name, "dsp") && timers[i].id == 6) || + (!strcmp(rproc->name, "ipu") && + (timers[i].id == 9 || timers[i].id == 11))) { ret = request_irq(omap_dm_timer_get_irq(timers[i].odt), omap_rproc_watchdog_isr, IRQF_DISABLED, "rproc-wdt", rproc); @@ -513,8 +515,10 @@ static inline int omap_rproc_stop(struct rproc *rproc) for (i = 0; i < pdata->timers_cnt; i++) { #ifdef CONFIG_REMOTEPROC_WATCHDOG - /* GPT 9 and 11 are used as WDT */ - if (timers[i].id == 9 || timers[i].id == 11) + /* GPT 9 & 11 (ipu); GPT 6 (dsp) are used as watchdog timers */ + if ((!strcmp(rproc->name, "dsp") && timers[i].id == 6) || + (!strcmp(rproc->name, "ipu") && + (timers[i].id == 9 || timers[i].id == 11))) free_irq(omap_dm_timer_get_irq(timers[i].odt), rproc); #endif omap_dm_timer_free(timers[i].odt); |