Lines Matching full:rproc
94 static int imx_rproc_xtr_mbox_init(struct rproc *rproc, bool tx_block);
95 static void imx_rproc_free_mbox(struct rproc *rproc);
101 struct rproc *rproc; member
366 static int imx_rproc_start(struct rproc *rproc) in imx_rproc_start() argument
368 struct imx_rproc *priv = rproc->priv; in imx_rproc_start()
374 ret = imx_rproc_xtr_mbox_init(rproc, true); in imx_rproc_start()
406 static int imx_rproc_stop(struct rproc *rproc) in imx_rproc_stop() argument
408 struct imx_rproc *priv = rproc->priv; in imx_rproc_stop()
445 imx_rproc_free_mbox(rproc); in imx_rproc_stop()
486 static void *imx_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem) in imx_rproc_da_to_va() argument
488 struct imx_rproc *priv = rproc->priv; in imx_rproc_da_to_va()
513 dev_dbg(&rproc->dev, "da = 0x%llx len = 0x%zx va = 0x%p\n", in imx_rproc_da_to_va()
519 static int imx_rproc_mem_alloc(struct rproc *rproc, in imx_rproc_mem_alloc() argument
522 struct device *dev = rproc->dev.parent; in imx_rproc_mem_alloc()
539 static int imx_rproc_mem_release(struct rproc *rproc, in imx_rproc_mem_release() argument
542 dev_dbg(rproc->dev.parent, "unmap memory: %pa\n", &mem->dma); in imx_rproc_mem_release()
548 static int imx_rproc_prepare(struct rproc *rproc) in imx_rproc_prepare() argument
550 struct imx_rproc *priv = rproc->priv; in imx_rproc_prepare()
586 rproc_coredump_add_segment(rproc, da, rmem->size); in imx_rproc_prepare()
592 rproc_add_carveout(rproc, mem); in imx_rproc_prepare()
598 static int imx_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw) in imx_rproc_parse_fw() argument
602 ret = rproc_elf_load_rsc_table(rproc, fw); in imx_rproc_parse_fw()
604 dev_info(&rproc->dev, "No resource table in elf\n"); in imx_rproc_parse_fw()
609 static void imx_rproc_kick(struct rproc *rproc, int vqid) in imx_rproc_kick() argument
611 struct imx_rproc *priv = rproc->priv; in imx_rproc_kick()
632 static int imx_rproc_attach(struct rproc *rproc) in imx_rproc_attach() argument
634 return imx_rproc_xtr_mbox_init(rproc, true); in imx_rproc_attach()
637 static int imx_rproc_detach(struct rproc *rproc) in imx_rproc_detach() argument
639 struct imx_rproc *priv = rproc->priv; in imx_rproc_detach()
648 imx_rproc_free_mbox(rproc); in imx_rproc_detach()
653 static struct resource_table *imx_rproc_get_loaded_rsc_table(struct rproc *rproc, size_t *table_sz) in imx_rproc_get_loaded_rsc_table() argument
655 struct imx_rproc *priv = rproc->priv; in imx_rproc_get_loaded_rsc_table()
666 imx_rproc_elf_find_loaded_rsc_table(struct rproc *rproc, const struct firmware *fw) in imx_rproc_elf_find_loaded_rsc_table() argument
668 struct imx_rproc *priv = rproc->priv; in imx_rproc_elf_find_loaded_rsc_table()
673 return rproc_elf_find_loaded_rsc_table(rproc, fw); in imx_rproc_elf_find_loaded_rsc_table()
775 struct rproc *rproc = data; in imx_rproc_notified_idr_cb() local
777 rproc_vq_interrupt(rproc, id); in imx_rproc_notified_idr_cb()
786 struct rproc *rproc = priv->rproc; in imx_rproc_vq_work() local
788 idr_for_each(&rproc->notifyids, imx_rproc_notified_idr_cb, rproc); in imx_rproc_vq_work()
793 struct rproc *rproc = dev_get_drvdata(cl->dev); in imx_rproc_rx_callback() local
794 struct imx_rproc *priv = rproc->priv; in imx_rproc_rx_callback()
799 static int imx_rproc_xtr_mbox_init(struct rproc *rproc, bool tx_block) in imx_rproc_xtr_mbox_init() argument
801 struct imx_rproc *priv = rproc->priv; in imx_rproc_xtr_mbox_init()
842 static void imx_rproc_free_mbox(struct rproc *rproc) in imx_rproc_free_mbox() argument
844 struct imx_rproc *priv = rproc->priv; in imx_rproc_free_mbox()
857 static void imx_rproc_put_scu(struct rproc *rproc) in imx_rproc_put_scu() argument
859 struct imx_rproc *priv = rproc->priv; in imx_rproc_put_scu()
883 rproc_report_crash(priv->rproc, RPROC_WATCHDOG); in imx_rproc_partition_notify()
911 struct regmap_config config = { .name = "imx-rproc" }; in imx_rproc_detect_mode()
922 priv->rproc->state = RPROC_DETACHED; in imx_rproc_detect_mode()
927 priv->rproc->state = RPROC_DETACHED; in imx_rproc_detect_mode()
955 priv->rproc->state = RPROC_DETACHED; in imx_rproc_detect_mode()
956 priv->rproc->recovery_disabled = false; in imx_rproc_detect_mode()
957 rproc_set_feature(priv->rproc, RPROC_FEAT_ATTACH_ON_RECOVERY); in imx_rproc_detect_mode()
1009 imx_rproc_stop(priv->rproc); in imx_rproc_detect_mode()
1021 priv->rproc->state = RPROC_DETACHED; in imx_rproc_detect_mode()
1057 struct rproc *rproc = data->cb_data; in imx_rproc_sys_off_handler() local
1060 imx_rproc_free_mbox(rproc); in imx_rproc_sys_off_handler()
1062 ret = imx_rproc_xtr_mbox_init(rproc, false); in imx_rproc_sys_off_handler()
1064 dev_err(&rproc->dev, "Failed to request non-blocking mbox\n"); in imx_rproc_sys_off_handler()
1076 struct rproc *rproc; in imx_rproc_probe() local
1081 rproc = devm_rproc_alloc(dev, "imx-rproc", &imx_rproc_ops, in imx_rproc_probe()
1083 if (!rproc) in imx_rproc_probe()
1090 priv = rproc->priv; in imx_rproc_probe()
1091 priv->rproc = rproc; in imx_rproc_probe()
1095 dev_set_drvdata(dev, rproc); in imx_rproc_probe()
1104 ret = imx_rproc_xtr_mbox_init(rproc, true); in imx_rproc_probe()
1122 if (rproc->state != RPROC_DETACHED) in imx_rproc_probe()
1123 rproc->auto_boot = of_property_read_bool(np, "fsl,auto-boot"); in imx_rproc_probe()
1134 imx_rproc_sys_off_handler, rproc); in imx_rproc_probe()
1142 imx_rproc_sys_off_handler, rproc); in imx_rproc_probe()
1149 ret = rproc_add(rproc); in imx_rproc_probe()
1160 imx_rproc_put_scu(rproc); in imx_rproc_probe()
1162 imx_rproc_free_mbox(rproc); in imx_rproc_probe()
1171 struct rproc *rproc = platform_get_drvdata(pdev); in imx_rproc_remove() local
1172 struct imx_rproc *priv = rproc->priv; in imx_rproc_remove()
1175 rproc_del(rproc); in imx_rproc_remove()
1176 imx_rproc_put_scu(rproc); in imx_rproc_remove()
1177 imx_rproc_free_mbox(rproc); in imx_rproc_remove()
1203 .name = "imx-rproc",