Commit 0b6c3bc8 authored by Peng Fan's avatar Peng Fan Committed by Bjorn Andersson
Browse files

remoteproc: imx_rproc: iterate all notifiyids in rx callback



The current code only supports one vdev and a single callback,
but there are cases need more vdevs. So iterate all notifyids to
support more vdevs with the single callback.

Signed-off-by: default avatarPeng Fan <peng.fan@nxp.com>
Link: https://lore.kernel.org/r/20230629093327.3376308-1-peng.fan@oss.nxp.com


Signed-off-by: default avatarBjorn Andersson <andersson@kernel.org>
parent 3aacc3b2
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -725,13 +725,22 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
	return 0;
}

static int imx_rproc_notified_idr_cb(int id, void *ptr, void *data)
{
	struct rproc *rproc = data;

	rproc_vq_interrupt(rproc, id);

	return 0;
}

static void imx_rproc_vq_work(struct work_struct *work)
{
	struct imx_rproc *priv = container_of(work, struct imx_rproc,
					      rproc_work);
	struct rproc *rproc = priv->rproc;

	rproc_vq_interrupt(priv->rproc, 0);
	rproc_vq_interrupt(priv->rproc, 1);
	idr_for_each(&rproc->notifyids, imx_rproc_notified_idr_cb, rproc);
}

static void imx_rproc_rx_callback(struct mbox_client *cl, void *msg)