remoteproc/omap: Fix DSP recovery issues with EDMA
authorStephen Molfetta <sjmolfetta@ti.com>
Wed, 9 Dec 2015 21:41:54 +0000 (15:41 -0600)
committerVishal Mahaveer <vishalm@ti.com>
Fri, 11 Mar 2016 19:47:19 +0000 (13:47 -0600)
commit8a63605bbd55b6781667d722e0f92c62a358593e
tree543d064001600becd7ce086722d5fe25c3b1733c
parentcb0be57bb221063a21ec56c99888dc27c1da5872
remoteproc/omap: Fix DSP recovery issues with EDMA

Resetting the DSP subsystem while there are pending DSP EDMA transfers
or while the DSP EDMA is receiving DMA events from various peripherals
(e.g. McASP) can cause various issues in the recovery process:

- L3 errors which create a complete system lockup
- DSPSS does not reset properly and put TPTCs into an unusable state

Prior to shutdown of a DSP core, two cleanup/checks are required in
order to mitigate these issues:

1. Clear DSP EDMA crossbar routings

  Upon remoteproc reset of the DSP, DMA events may continue to
  arrive to the DSPs EDMA instance after the reset sequence has completed.
  Clearing the crossbar ensures that no unexpected events arrive to the
  DSP's EDMA after reset

2. Wait for DSP EDMA traffic completion

  After clearing DSP EDMA crossbar routings, we disable all future
  events and poll the various active bits of the TPCC and both TPTCs
  of the DSP's EDMA and wait for any pending transfers to complete
  prior to issuing the reset.

Change-Id: I4ba7c414c8f38f95cc2a4a60f63bd7095f73788c
Signed-off-by: Stephen Molfetta <sjmolfetta@ti.com>
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
arch/arm/mach-omap2/pdata-quirks.c
arch/arm/mach-omap2/remoteproc.c
arch/arm/mach-omap2/remoteproc.h
drivers/remoteproc/omap_remoteproc.c
include/linux/platform_data/remoteproc-omap.h