Lines Matching full:rproc
98 * @rproc: rproc handler
116 struct rproc *rproc; member
290 static int imx_dsp_rproc_ready(struct rproc *rproc) in imx_dsp_rproc_ready() argument
292 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_ready()
315 static int imx_dsp_rproc_start(struct rproc *rproc) in imx_dsp_rproc_start() argument
317 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_start()
320 struct device *dev = rproc->dev.parent; in imx_dsp_rproc_start()
334 rproc->bootaddr); in imx_dsp_rproc_start()
343 ret = imx_dsp_rproc_ready(rproc); in imx_dsp_rproc_start()
352 static int imx_dsp_rproc_stop(struct rproc *rproc) in imx_dsp_rproc_stop() argument
354 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_stop()
357 struct device *dev = rproc->dev.parent; in imx_dsp_rproc_stop()
360 if (rproc->state == RPROC_CRASHED) { in imx_dsp_rproc_stop()
374 rproc->bootaddr); in imx_dsp_rproc_stop()
442 struct rproc *rproc = priv->rproc; in imx_dsp_rproc_vq_work() local
444 mutex_lock(&rproc->lock); in imx_dsp_rproc_vq_work()
446 if (rproc->state != RPROC_RUNNING) in imx_dsp_rproc_vq_work()
449 rproc_vq_interrupt(priv->rproc, 0); in imx_dsp_rproc_vq_work()
450 rproc_vq_interrupt(priv->rproc, 1); in imx_dsp_rproc_vq_work()
453 mutex_unlock(&rproc->lock); in imx_dsp_rproc_vq_work()
467 struct rproc *rproc = dev_get_drvdata(cl->dev); in imx_dsp_rproc_rx_tx_callback() local
468 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_rx_tx_callback()
469 struct device *dev = rproc->dev.parent; in imx_dsp_rproc_rx_tx_callback()
497 struct rproc *rproc = dev_get_drvdata(cl->dev); in imx_dsp_rproc_rxdb_callback() local
498 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_rxdb_callback()
512 struct device *dev = priv->rproc->dev.parent; in imx_dsp_rproc_mbox_alloc()
592 * This function registers specified memory entry in @rproc carveouts list
599 struct rproc *rproc = priv->rproc; in imx_dsp_rproc_add_carveout() local
600 struct device *dev = rproc->dev.parent; in imx_dsp_rproc_add_carveout()
630 rproc_coredump_add_segment(rproc, da, att->size); in imx_dsp_rproc_add_carveout()
634 rproc_add_carveout(rproc, mem); in imx_dsp_rproc_add_carveout()
670 rproc_coredump_add_segment(rproc, da, rmem->size); in imx_dsp_rproc_add_carveout()
676 rproc_add_carveout(rproc, mem); in imx_dsp_rproc_add_carveout()
683 static int imx_dsp_rproc_prepare(struct rproc *rproc) in imx_dsp_rproc_prepare() argument
685 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_prepare()
686 struct device *dev = rproc->dev.parent; in imx_dsp_rproc_prepare()
702 list_for_each_entry(carveout, &rproc->carveouts, node) { in imx_dsp_rproc_prepare()
711 static int imx_dsp_rproc_unprepare(struct rproc *rproc) in imx_dsp_rproc_unprepare() argument
713 pm_runtime_put_sync(rproc->dev.parent); in imx_dsp_rproc_unprepare()
719 static void imx_dsp_rproc_kick(struct rproc *rproc, int vqid) in imx_dsp_rproc_kick() argument
721 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_kick()
722 struct device *dev = rproc->dev.parent; in imx_dsp_rproc_kick()
836 * @rproc: remote processor which will be booted using these fw segments
844 static int imx_dsp_rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw) in imx_dsp_rproc_elf_load_segments() argument
846 struct device *dev = &rproc->dev; in imx_dsp_rproc_elf_load_segments()
895 ptr = rproc_da_to_va(rproc, da, memsz, NULL); in imx_dsp_rproc_elf_load_segments()
927 static int imx_dsp_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw) in imx_dsp_rproc_parse_fw() argument
929 if (rproc_elf_load_rsc_table(rproc, fw)) in imx_dsp_rproc_parse_fw()
930 dev_warn(&rproc->dev, "no resource table found for this firmware\n"); in imx_dsp_rproc_parse_fw()
957 struct device *dev = priv->rproc->dev.parent; in imx_dsp_attach_pm_domains()
1043 struct device *dev = priv->rproc->dev.parent; in imx_dsp_rproc_detect_mode()
1077 struct device *dev = priv->rproc->dev.parent; in imx_dsp_rproc_clk_get()
1092 struct rproc *rproc; in imx_dsp_rproc_probe() local
1107 rproc = rproc_alloc(dev, "imx-dsp-rproc", &imx_dsp_rproc_ops, fw_name, in imx_dsp_rproc_probe()
1109 if (!rproc) in imx_dsp_rproc_probe()
1112 priv = rproc->priv; in imx_dsp_rproc_probe()
1113 priv->rproc = rproc; in imx_dsp_rproc_probe()
1121 dev_set_drvdata(dev, rproc); in imx_dsp_rproc_probe()
1145 rproc->auto_boot = false; in imx_dsp_rproc_probe()
1146 ret = rproc_add(rproc); in imx_dsp_rproc_probe()
1159 rproc_free(rproc); in imx_dsp_rproc_probe()
1166 struct rproc *rproc = platform_get_drvdata(pdev); in imx_dsp_rproc_remove() local
1167 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_remove()
1170 rproc_del(rproc); in imx_dsp_rproc_remove()
1172 rproc_free(rproc); in imx_dsp_rproc_remove()
1178 struct rproc *rproc = dev_get_drvdata(dev); in imx_dsp_runtime_resume() local
1179 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_runtime_resume()
1210 struct rproc *rproc = dev_get_drvdata(dev); in imx_dsp_runtime_suspend() local
1211 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_runtime_suspend()
1222 struct rproc *rproc = context; in imx_dsp_load_firmware() local
1229 ret = rproc_load_segments(rproc, fw); in imx_dsp_load_firmware()
1234 ret = rproc->ops->start(rproc); in imx_dsp_load_firmware()
1238 rproc->ops->kick(rproc, 0); in imx_dsp_load_firmware()
1246 struct rproc *rproc = dev_get_drvdata(dev); in imx_dsp_suspend() local
1247 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_suspend()
1251 if (rproc->state != RPROC_RUNNING) in imx_dsp_suspend()
1281 struct rproc *rproc = dev_get_drvdata(dev); in imx_dsp_resume() local
1288 if (rproc->state != RPROC_RUNNING) in imx_dsp_resume()
1297 rproc->firmware, dev, GFP_KERNEL, in imx_dsp_resume()
1298 rproc, imx_dsp_load_firmware); in imx_dsp_resume()
1330 .name = "imx-dsp-rproc",