When a remote processor crashes there is no indication in SMD, so we
need to inform the SMD driver that it should reset all open channels
associated with the remote processor.
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
struct completion stop_done;
struct qcom_smem_item crash_reason;
struct completion stop_done;
struct qcom_smem_item crash_reason;
+ struct device_node *smd_edge_node;
};
static int pas_supported(int id)
};
static int pas_supported(int id)
+extern void qcom_smd_reset_edge(struct device_node *node);
+
static int qproc_stop(struct rproc *rproc)
{
struct qproc *qproc = (struct qproc *)rproc->priv;
static int qproc_stop(struct rproc *rproc)
{
struct qproc *qproc = (struct qproc *)rproc->priv;
ret = pas_shutdown(qproc->pas_id);
if (ret)
dev_err(qproc->dev, "failed to shutdown: %d\n", ret);
ret = pas_shutdown(qproc->pas_id);
if (ret)
dev_err(qproc->dev, "failed to shutdown: %d\n", ret);
+
+ qcom_smd_reset_edge(qproc->smd_edge_node);
+
+ qproc->smd_edge_node = of_parse_phandle(pdev->dev.of_node, "qcom,smd-edges", 0);
+
ret = qproc_init_pas(qproc);
if (ret)
goto free_rproc;
ret = qproc_init_pas(qproc);
if (ret)
goto free_rproc;