Lines Matching defs:rproc

94 static int stm32_rproc_pa_to_da(struct rproc *rproc, phys_addr_t pa, u64 *da)
97 struct stm32_rproc *ddata = rproc->priv;
107 dev_dbg(rproc->dev.parent, "pa %pa to da %llx\n", &pa, *da);
114 static int stm32_rproc_mem_alloc(struct rproc *rproc,
117 struct device *dev = rproc->dev.parent;
134 static int stm32_rproc_mem_release(struct rproc *rproc,
137 dev_dbg(rproc->dev.parent, "unmap memory: %pa\n", &mem->dma);
196 static int stm32_rproc_mbox_idx(struct rproc *rproc, const unsigned char *name)
198 struct stm32_rproc *ddata = rproc->priv;
205 dev_err(&rproc->dev, "mailbox %s not found\n", name);
210 static int stm32_rproc_elf_load_rsc_table(struct rproc *rproc,
213 if (rproc_elf_load_rsc_table(rproc, fw))
214 dev_warn(&rproc->dev, "no resource table found for this firmware\n");
219 static int stm32_rproc_parse_memory_regions(struct rproc *rproc)
221 struct device *dev = rproc->dev.parent;
239 if (stm32_rproc_pa_to_da(rproc, rmem->base, &da) < 0) {
257 rproc_coredump_add_segment(rproc, da,
272 rproc_add_carveout(rproc, mem);
279 static int stm32_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw)
281 int ret = stm32_rproc_parse_memory_regions(rproc);
286 return stm32_rproc_elf_load_rsc_table(rproc, fw);
292 struct rproc *rproc = platform_get_drvdata(pdev);
294 rproc_report_crash(rproc, RPROC_WATCHDOG);
302 struct rproc *rproc = dev_get_drvdata(mb->client.dev);
304 mutex_lock(&rproc->lock);
306 if (rproc->state != RPROC_RUNNING)
309 if (rproc_vq_interrupt(rproc, mb->vq_id) == IRQ_NONE)
310 dev_dbg(&rproc->dev, "no message found in vq%d\n", mb->vq_id);
313 mutex_unlock(&rproc->lock);
318 struct rproc *rproc = dev_get_drvdata(cl->dev);
320 struct stm32_rproc *ddata = rproc->priv;
325 static void stm32_rproc_free_mbox(struct rproc *rproc)
327 struct stm32_rproc *ddata = rproc->priv;
365 static int stm32_rproc_request_mbox(struct rproc *rproc)
367 struct stm32_rproc *ddata = rproc->priv;
368 struct device *dev = &rproc->dev;
405 static int stm32_rproc_set_hold_boot(struct rproc *rproc, bool hold)
407 struct stm32_rproc *ddata = rproc->priv;
424 dev_err(&rproc->dev, "failed to set hold boot\n");
429 static void stm32_rproc_add_coredump_trace(struct rproc *rproc)
435 list_for_each_entry(trace, &rproc->traces, node) {
438 list_for_each_entry(segment, &rproc->dump_segments, node) {
446 rproc_coredump_add_segment(rproc, trace->trace_mem.da,
451 static int stm32_rproc_start(struct rproc *rproc)
453 struct stm32_rproc *ddata = rproc->priv;
456 stm32_rproc_add_coredump_trace(rproc);
463 dev_err(&rproc->dev, "failed to clear pdds\n");
468 err = stm32_rproc_set_hold_boot(rproc, false);
472 return stm32_rproc_set_hold_boot(rproc, true);
475 static int stm32_rproc_attach(struct rproc *rproc)
477 stm32_rproc_add_coredump_trace(rproc);
479 return stm32_rproc_set_hold_boot(rproc, true);
482 static int stm32_rproc_stop(struct rproc *rproc)
484 struct stm32_rproc *ddata = rproc->priv;
488 if (rproc->state != RPROC_OFFLINE) {
489 idx = stm32_rproc_mbox_idx(rproc, STM32_MBX_SHUTDOWN);
495 dev_warn(&rproc->dev, "warning: remote FW shutdown without ack\n");
499 err = stm32_rproc_set_hold_boot(rproc, true);
505 dev_err(&rproc->dev, "failed to assert the reset\n");
514 dev_err(&rproc->dev, "failed to set pdds\n");
526 dev_err(&rproc->dev, "failed to set copro state\n");
534 static void stm32_rproc_kick(struct rproc *rproc, int vqid)
536 struct stm32_rproc *ddata = rproc->priv;
550 dev_err(&rproc->dev, "%s: failed (%s, err:%d)\n",
734 struct rproc *rproc,
768 rproc->cached_table = NULL;
770 rproc->table_sz = RSC_TBL_SIZE;
771 rproc->table_ptr = (struct resource_table *)ddata->rsc_va;
781 struct rproc *rproc;
789 rproc = rproc_alloc(dev, np->name, &st_rproc_ops, NULL, sizeof(*ddata));
790 if (!rproc)
793 ddata = rproc->priv;
795 rproc_coredump_set_elf_info(rproc, ELFCLASS32, EM_NONE);
797 ret = stm32_rproc_parse_dt(pdev, ddata, &rproc->auto_boot);
810 rproc->state = RPROC_DETACHED;
812 ret = stm32_rproc_parse_memory_regions(rproc);
816 ret = stm32_rproc_get_loaded_rsc_table(pdev, rproc, ddata);
821 rproc->has_iommu = false;
829 platform_set_drvdata(pdev, rproc);
831 ret = stm32_rproc_request_mbox(rproc);
835 ret = rproc_add(rproc);
842 stm32_rproc_free_mbox(rproc);
846 rproc_resource_cleanup(rproc);
852 rproc_free(rproc);
858 struct rproc *rproc = platform_get_drvdata(pdev);
859 struct stm32_rproc *ddata = rproc->priv;
862 if (atomic_read(&rproc->power) > 0)
863 rproc_shutdown(rproc);
865 rproc_del(rproc);
866 stm32_rproc_free_mbox(rproc);
873 rproc_free(rproc);
880 struct rproc *rproc = dev_get_drvdata(dev);
881 struct stm32_rproc *ddata = rproc->priv;
891 struct rproc *rproc = dev_get_drvdata(dev);
892 struct stm32_rproc *ddata = rproc->priv;
907 .name = "stm32-rproc",