Lines Matching refs:rproc
132 struct rproc *rproc; member
182 static int pru_rproc_set_firmware(struct rproc *rproc, const char *fw_name) in pru_rproc_set_firmware() argument
184 struct pru_rproc *pru = rproc->priv; in pru_rproc_set_firmware()
189 return rproc_set_firmware(rproc, fw_name); in pru_rproc_set_firmware()
192 static struct rproc *__pru_rproc_get(struct device_node *np, int index) in __pru_rproc_get()
194 struct rproc *rproc; in __pru_rproc_get() local
202 rproc = rproc_get_by_phandle(rproc_phandle); in __pru_rproc_get()
203 if (!rproc) { in __pru_rproc_get()
209 if (!is_pru_rproc(rproc->dev.parent)) { in __pru_rproc_get()
210 rproc_put(rproc); in __pru_rproc_get()
214 return rproc; in __pru_rproc_get()
238 struct rproc *pru_rproc_get(struct device_node *np, int index, in pru_rproc_get()
241 struct rproc *rproc; in pru_rproc_get() local
247 rproc = __pru_rproc_get(np, index); in pru_rproc_get()
248 if (IS_ERR(rproc)) in pru_rproc_get()
249 return rproc; in pru_rproc_get()
251 pru = rproc->priv; in pru_rproc_get()
252 dev = &rproc->dev; in pru_rproc_get()
263 rproc->sysfs_read_only = true; in pru_rproc_get()
273 ret = pru_rproc_set_firmware(rproc, fw_name); in pru_rproc_get()
280 return rproc; in pru_rproc_get()
283 rproc_put(rproc); in pru_rproc_get()
287 pru_rproc_put(rproc); in pru_rproc_get()
299 void pru_rproc_put(struct rproc *rproc) in pru_rproc_put() argument
303 if (IS_ERR_OR_NULL(rproc) || !is_pru_rproc(rproc->dev.parent)) in pru_rproc_put()
306 pru = rproc->priv; in pru_rproc_put()
308 pru_rproc_set_firmware(rproc, NULL); in pru_rproc_put()
318 rproc->sysfs_read_only = false; in pru_rproc_put()
321 rproc_put(rproc); in pru_rproc_put()
333 int pru_rproc_set_ctable(struct rproc *rproc, enum pru_ctable_idx c, u32 addr) in pru_rproc_set_ctable() argument
335 struct pru_rproc *pru = rproc->priv; in pru_rproc_set_ctable()
341 if (IS_ERR_OR_NULL(rproc)) in pru_rproc_set_ctable()
344 if (!rproc->dev.parent || !is_pru_rproc(rproc->dev.parent)) in pru_rproc_set_ctable()
371 struct rproc *rproc = s->private; in regs_show() local
372 struct pru_rproc *pru = rproc->priv; in regs_show()
429 struct rproc *rproc = data; in pru_rproc_debug_ss_set() local
430 struct pru_rproc *pru = rproc->priv; in pru_rproc_debug_ss_set()
455 struct rproc *rproc = data; in pru_rproc_debug_ss_get() local
456 struct pru_rproc *pru = rproc->priv; in pru_rproc_debug_ss_get()
471 static void pru_rproc_create_debug_entries(struct rproc *rproc) in pru_rproc_create_debug_entries() argument
473 if (!rproc->dbg_dir) in pru_rproc_create_debug_entries()
476 debugfs_create_file("regs", 0400, rproc->dbg_dir, in pru_rproc_create_debug_entries()
477 rproc, ®s_fops); in pru_rproc_create_debug_entries()
478 debugfs_create_file("single_step", 0600, rproc->dbg_dir, in pru_rproc_create_debug_entries()
479 rproc, &pru_rproc_debug_ss_fops); in pru_rproc_create_debug_entries()
501 static int pru_handle_intrmap(struct rproc *rproc) in pru_handle_intrmap() argument
503 struct device *dev = rproc->dev.parent; in pru_handle_intrmap()
504 struct pru_rproc *pru = rproc->priv; in pru_handle_intrmap()
588 static int pru_rproc_start(struct rproc *rproc) in pru_rproc_start() argument
590 struct device *dev = &rproc->dev; in pru_rproc_start()
591 struct pru_rproc *pru = rproc->priv; in pru_rproc_start()
597 names[pru->data->type], pru->id, (rproc->bootaddr >> 2)); in pru_rproc_start()
599 ret = pru_handle_intrmap(rproc); in pru_rproc_start()
609 val = CTRL_CTRL_EN | ((rproc->bootaddr >> 2) << 16); in pru_rproc_start()
615 static int pru_rproc_stop(struct rproc *rproc) in pru_rproc_stop() argument
617 struct device *dev = &rproc->dev; in pru_rproc_stop()
618 struct pru_rproc *pru = rproc->priv; in pru_rproc_stop()
724 static void *pru_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem) in pru_rproc_da_to_va() argument
726 struct pru_rproc *pru = rproc->priv; in pru_rproc_da_to_va()
732 static void *pru_da_to_va(struct rproc *rproc, u64 da, size_t len, bool is_iram) in pru_da_to_va() argument
734 struct pru_rproc *pru = rproc->priv; in pru_da_to_va()
794 pru_rproc_load_elf_segments(struct rproc *rproc, const struct firmware *fw) in pru_rproc_load_elf_segments() argument
796 struct pru_rproc *pru = rproc->priv; in pru_rproc_load_elf_segments()
797 struct device *dev = &rproc->dev; in pru_rproc_load_elf_segments()
837 ptr = pru_da_to_va(rproc, da, memsz, is_iram); in pru_rproc_load_elf_segments()
918 static int pru_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw) in pru_rproc_parse_fw() argument
920 struct device *dev = &rproc->dev; in pru_rproc_parse_fw()
921 struct pru_rproc *pru = rproc->priv; in pru_rproc_parse_fw()
929 ret = rproc_elf_load_rsc_table(rproc, fw); in pru_rproc_parse_fw()
931 dev_dbg(&rproc->dev, "no resource table found for this fw\n"); in pru_rproc_parse_fw()
988 struct rproc *rproc = NULL; in pru_rproc_probe() local
1004 rproc = devm_rproc_alloc(dev, pdev->name, &pru_rproc_ops, fw_name, in pru_rproc_probe()
1006 if (!rproc) { in pru_rproc_probe()
1011 rproc->ops->load = pru_rproc_load_elf_segments; in pru_rproc_probe()
1014 rproc->ops->parse_fw = pru_rproc_parse_fw; in pru_rproc_probe()
1017 rproc->recovery_disabled = true; in pru_rproc_probe()
1026 rproc->auto_boot = false; in pru_rproc_probe()
1028 pru = rproc->priv; in pru_rproc_probe()
1032 pru->rproc = rproc; in pru_rproc_probe()
1060 platform_set_drvdata(pdev, rproc); in pru_rproc_probe()
1062 ret = devm_rproc_add(dev, pru->rproc); in pru_rproc_probe()
1068 pru_rproc_create_debug_entries(rproc); in pru_rproc_probe()
1078 struct rproc *rproc = platform_get_drvdata(pdev); in pru_rproc_remove() local
1080 dev_dbg(dev, "%s: removing rproc %s\n", __func__, rproc->name); in pru_rproc_remove()