Merge tag 'rpmsg-v4.14' of git://github.com/andersson/remoteproc
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 9 Sep 2017 21:34:38 +0000 (14:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 9 Sep 2017 21:34:38 +0000 (14:34 -0700)
Pull rpmsg updates from Bjorn Andersson:
 "This extends the Qualcomm GLINK implementation to support the
  additional features used for communicating with modem and DSP
  coprocessors in modern Qualcomm platforms.

  In addition to this there's support for placing virtio RPMSG buffers
  in non-System RAM"

* tag 'rpmsg-v4.14' of git://github.com/andersson/remoteproc: (29 commits)
  rpmsg: glink: initialize ret to zero to ensure error status check is correct
  rpmsg: glink: fix null pointer dereference on a null intent
  dt-bindings: soc: qcom: Extend GLINK to cover SMEM
  remoteproc: qcom: adsp: Allow defining GLINK edge
  rpmsg: glink: Export symbols from common code
  rpmsg: glink: Release idr lock before returning on error
  rpmsg: glink: Handle remote rx done command
  rpmsg: glink: Request for intents when unavailable
  rpmsg: glink: Use the intents passed by remote
  rpmsg: glink: Receive and store the remote intent buffers
  rpmsg: glink: Add announce_create ops and preallocate intents
  rpmsg: glink: Add rx done command
  rpmsg: glink: Make RX FIFO peak accessor to take an offset
  rpmsg: glink: Use the local intents when receiving data
  rpmsg: glink: Add support for TX intents
  rpmsg: glink: Fix idr_lock from mutex to spinlock
  rpmsg: glink: Add support for transport version negotiation
  rpmsg: glink: Introduce glink smem based transport
  rpmsg: glink: Do a mbox_free_channel in remove
  rpmsg: glink: Return -EAGAIN when there is no FIFO space
  ...

1  2 
drivers/remoteproc/Kconfig
drivers/remoteproc/qcom_adsp_pil.c
drivers/remoteproc/qcom_common.c
drivers/remoteproc/qcom_common.h

Simple merge
@@@ -72,8 -71,8 +72,9 @@@ struct qcom_adsp 
        void *mem_region;
        size_t mem_size;
  
+       struct qcom_rproc_glink glink_subdev;
        struct qcom_rproc_subdev smd_subdev;
 +      struct qcom_rproc_ssr ssr_subdev;
  };
  
  static int adsp_load(struct rproc *rproc, const struct firmware *fw)
@@@ -400,8 -402,8 +401,9 @@@ static int adsp_probe(struct platform_d
                goto free_rproc;
        }
  
+       qcom_add_glink_subdev(rproc, &adsp->glink_subdev);
        qcom_add_smd_subdev(rproc, &adsp->smd_subdev);
 +      qcom_add_ssr_subdev(rproc, &adsp->ssr_subdev, desc->ssr_name);
  
        ret = rproc_add(rproc);
        if (ret)
@@@ -422,8 -424,8 +424,9 @@@ static int adsp_remove(struct platform_
        qcom_smem_state_put(adsp->state);
        rproc_del(adsp->rproc);
  
+       qcom_remove_glink_subdev(adsp->rproc, &adsp->glink_subdev);
        qcom_remove_smd_subdev(adsp->rproc, &adsp->smd_subdev);
 +      qcom_remove_ssr_subdev(adsp->rproc, &adsp->ssr_subdev);
        rproc_free(adsp->rproc);
  
        return 0;
  #include <linux/firmware.h>
  #include <linux/kernel.h>
  #include <linux/module.h>
 +#include <linux/notifier.h>
  #include <linux/remoteproc.h>
+ #include <linux/rpmsg/qcom_glink.h>
  #include <linux/rpmsg/qcom_smd.h>
  
  #include "remoteproc_internal.h"
  #include "qcom_common.h"
  
+ #define to_glink_subdev(d) container_of(d, struct qcom_rproc_glink, subdev)
  #define to_smd_subdev(d) container_of(d, struct qcom_rproc_subdev, subdev)
 +#define to_ssr_subdev(d) container_of(d, struct qcom_rproc_ssr, subdev)
 +
 +static BLOCKING_NOTIFIER_HEAD(ssr_notifiers);
  
  /**
   * qcom_mdt_find_rsc_table() - provide dummy resource table for remoteproc
Simple merge