Merge tag 'remoteproc-for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Oct 2012 16:11:57 +0000 (09:11 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Oct 2012 16:11:57 +0000 (09:11 -0700)
Pull remoteproc update from Ohad Ben-Cohen:

 - Remoteproc Recovery - by Fernando Guzman Lugo

   When a remote processor crash is detected, this mechanism will remove
   all virtio children devices, wait until their drivers let go, hard
   reset the remote processor and reload the firmware (resulting in the
   relevant virtio children devices re-added).  Essentially the entire
   software stack is reset, together with the relevant hardware, so
   users don't have to reset the entire phone.

 - STE Modem driver is added - by Sjur Brændeland

 - OMAP DSP boot address support is added - by Juan Gutierrez

 - A handful of fixes/cleanups - Sjur Brændeland, Dan Carpenter, Emil
   Goode

* tag 'remoteproc-for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc:
  remoteproc: Fix use of format specifyer
  remoteproc: fix a potential NULL-dereference on cleanup
  remoteproc: select VIRTIO to avoid build breakage
  remoteproc: return -EFAULT on copy_from_user failure
  remoteproc: snprintf() can return more than was printed
  remoteproc: Add STE modem driver
  remtoteproc: maintain max notifyid
  remoteproc: create a 'recovery' debugfs entry
  remoteproc: add actual recovery implementation
  remoteproc: add rproc_report_crash function to notify rproc crashes
  remoteproc: Add dependency to HAS_DMA
  remoteproc/omap: set bootaddr support

1  2 
drivers/remoteproc/omap_remoteproc.c
include/linux/platform_data/remoteproc-omap.h

@@@ -29,7 -29,7 +29,7 @@@
  #include <linux/remoteproc.h>
  
  #include <plat/mailbox.h>
 -#include <plat/remoteproc.h>
 +#include <linux/platform_data/remoteproc-omap.h>
  
  #include "omap_remoteproc.h"
  #include "remoteproc_internal.h"
@@@ -116,6 -116,9 +116,9 @@@ static int omap_rproc_start(struct rpro
        struct omap_rproc_pdata *pdata = pdev->dev.platform_data;
        int ret;
  
+       if (pdata->set_bootaddr)
+               pdata->set_bootaddr(rproc->bootaddr);
        oproc->nb.notifier_call = omap_rproc_mbox_callback;
  
        /* every omap rproc is assigned a mailbox instance for messaging */
@@@ -30,6 -30,7 +30,7 @@@ struct platform_device
   * @ops: start/stop rproc handlers
   * @device_enable: omap-specific handler for enabling a device
   * @device_shutdown: omap-specific handler for shutting down a device
+  * @set_bootaddr: omap-specific handler for setting the rproc boot address
   */
  struct omap_rproc_pdata {
        const char *name;
@@@ -40,6 -41,7 +41,7 @@@
        const struct rproc_ops *ops;
        int (*device_enable) (struct platform_device *pdev);
        int (*device_shutdown) (struct platform_device *pdev);
+       void(*set_bootaddr)(u32);
  };
  
  #if defined(CONFIG_OMAP_REMOTEPROC) || defined(CONFIG_OMAP_REMOTEPROC_MODULE)