Home
last modified time | relevance | path

Searched refs:rproc (Results 1 – 25 of 72) sorted by relevance

123

/linux/drivers/remoteproc/
H A Dremoteproc_core.c47 typedef int (*rproc_handle_resource_t)(struct rproc *rproc,
50 static int rproc_alloc_carveout(struct rproc *rproc,
52 static int rproc_release_carveout(struct rproc *rproc,
84 struct rproc *rproc = token; in rproc_iommu_fault() local
88 rproc_report_crash(rproc, RPROC_MMUFAULT); in rproc_iommu_fault()
97 static int rproc_enable_iommu(struct rproc *rproc) in rproc_enable_iommu() argument
100 struct device *dev = rproc->dev.parent; in rproc_enable_iommu()
103 if (!rproc->has_iommu) { in rproc_enable_iommu()
114 iommu_set_fault_handler(domain, rproc_iommu_fault, rproc); in rproc_enable_iommu()
122 rproc->domain = domain; in rproc_enable_iommu()
[all …]
H A Dremoteproc_internal.h18 struct rproc;
21 struct rproc *rproc; member
42 static inline bool rproc_has_feature(struct rproc *rproc, unsigned int feature) in rproc_has_feature() argument
44 return test_bit(feature, rproc->features); in rproc_has_feature()
47 static inline int rproc_set_feature(struct rproc *rproc, unsigned int feature) in rproc_set_feature() argument
52 set_bit(feature, rproc->features); in rproc_set_feature()
63 irqreturn_t rproc_vq_interrupt(struct rproc *rproc, int vq_id);
67 struct dentry *rproc_create_trace_file(const char *name, struct rproc *rproc,
69 void rproc_delete_debug_dir(struct rproc *rproc);
70 void rproc_create_debug_dir(struct rproc *rproc);
[all …]
H A Dremoteproc_cdev.c23 struct rproc *rproc = container_of(filp->f_inode->i_cdev, struct rproc, cdev); in rproc_cdev_write() local
35 ret = rproc_boot(rproc); in rproc_cdev_write()
37 ret = rproc_shutdown(rproc); in rproc_cdev_write()
39 ret = rproc_detach(rproc); in rproc_cdev_write()
41 dev_err(&rproc->dev, "Unrecognized option\n"); in rproc_cdev_write()
50 struct rproc *rproc = container_of(filp->f_inode->i_cdev, struct rproc, cdev); in rproc_device_ioctl() local
59 rproc->cdev_put_on_release = !!param; in rproc_device_ioctl()
62 param = (s32)rproc->cdev_put_on_release; in rproc_device_ioctl()
68 dev_err(&rproc->dev, "Unsupported ioctl\n"); in rproc_device_ioctl()
77 struct rproc *rproc = container_of(inode->i_cdev, struct rproc, cdev); in rproc_cdev_release() local
[all …]
H A Dremoteproc_sysfs.c11 #define to_rproc(d) container_of(d, struct rproc, dev)
16 struct rproc *rproc = to_rproc(dev); in recovery_show() local
18 return sysfs_emit(buf, "%s", rproc->recovery_disabled ? "disabled\n" : "enabled\n"); in recovery_show()
49 struct rproc *rproc = to_rproc(dev); in recovery_store() local
53 rproc->recovery_disabled = false; in recovery_store()
54 rproc_trigger_recovery(rproc); in recovery_store()
56 rproc->recovery_disabled = true; in recovery_store()
59 rproc_trigger_recovery(rproc); in recovery_store()
83 struct rproc *rproc = to_rproc(dev); in coredump_show() local
85 return sysfs_emit(buf, "%s\n", rproc_coredump_str[rproc->dump_conf]); in coredump_show()
[all …]
H A Dimx_dsp_rproc.c130 struct rproc *rproc; member
264 static int imx_dsp_rproc_ready(struct rproc *rproc) in imx_dsp_rproc_ready() argument
266 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_ready()
295 static int imx_dsp_rproc_handle_rsc(struct rproc *rproc, u32 rsc_type, in imx_dsp_rproc_handle_rsc() argument
298 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_handle_rsc()
300 struct device *dev = rproc->dev.parent; in imx_dsp_rproc_handle_rsc()
341 static int imx_dsp_rproc_mmio_start(struct rproc *rproc) in imx_dsp_rproc_mmio_start() argument
343 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_mmio_start()
349 static int imx_dsp_rproc_reset_ctrl_start(struct rproc *rproc) in imx_dsp_rproc_reset_ctrl_start() argument
351 struct imx_dsp_rproc *priv = rproc->priv; in imx_dsp_rproc_reset_ctrl_start()
[all …]
H A Dstm32_rproc.c96 static int stm32_rproc_pa_to_da(struct rproc *rproc, phys_addr_t pa, u64 *da) in stm32_rproc_pa_to_da() argument
99 struct stm32_rproc *ddata = rproc->priv; in stm32_rproc_pa_to_da()
109 dev_dbg(rproc->dev.parent, "pa %pa to da %llx\n", &pa, *da); in stm32_rproc_pa_to_da()
116 static int stm32_rproc_mem_alloc(struct rproc *rproc, in stm32_rproc_mem_alloc() argument
119 struct device *dev = rproc->dev.parent; in stm32_rproc_mem_alloc()
136 static int stm32_rproc_mem_release(struct rproc *rproc, in stm32_rproc_mem_release() argument
139 dev_dbg(rproc->dev.parent, "unmap memory: %pa\n", &mem->dma); in stm32_rproc_mem_release()
198 static int stm32_rproc_mbox_idx(struct rproc *rproc, const unsigned char *name) in stm32_rproc_mbox_idx() argument
200 struct stm32_rproc *ddata = rproc->priv; in stm32_rproc_mbox_idx()
207 dev_err(&rproc->dev, "mailbox %s not found\n", name); in stm32_rproc_mbox_idx()
[all …]
H A Dimx_rproc.c100 static int imx_rproc_xtr_mbox_init(struct rproc *rproc, bool tx_block);
111 struct rproc *rproc; member
315 static int imx_rproc_arm_smc_start(struct rproc *rproc) in imx_rproc_arm_smc_start() argument
324 static int imx_rproc_mmio_start(struct rproc *rproc) in imx_rproc_mmio_start() argument
326 struct imx_rproc *priv = rproc->priv; in imx_rproc_mmio_start()
335 static int imx_rproc_scu_api_start(struct rproc *rproc) in imx_rproc_scu_api_start() argument
337 struct imx_rproc *priv = rproc->priv; in imx_rproc_scu_api_start()
342 static int imx_rproc_sm_cpu_start(struct rproc *rproc) in imx_rproc_sm_cpu_start() argument
344 struct imx_rproc *priv = rproc->priv; in imx_rproc_sm_cpu_start()
357 static int imx_rproc_sm_lmm_start(struct rproc *rproc) in imx_rproc_sm_lmm_start() argument
[all …]
H A Dqcom_common.h44 void qcom_minidump(struct rproc *rproc, unsigned int minidump_id,
45 void (*rproc_dumpfn_t)(struct rproc *rproc,
49 void qcom_add_glink_subdev(struct rproc *rproc, struct qcom_rproc_glink *glink,
51 void qcom_remove_glink_subdev(struct rproc *rproc, struct qcom_rproc_glink *glink);
53 int qcom_register_dump_segments(struct rproc *rproc, const struct firmware *fw);
55 void qcom_add_smd_subdev(struct rproc *rproc, struct qcom_rproc_subdev *smd);
56 void qcom_remove_smd_subdev(struct rproc *rproc, struct qcom_rproc_subdev *smd);
58 void qcom_add_ssr_subdev(struct rproc *rproc, struct qcom_rproc_ssr *ssr,
60 void qcom_remove_ssr_subdev(struct rproc *rproc, struct qcom_rproc_ssr *ssr);
62 void qcom_add_pdm_subdev(struct rproc *rproc, struct qcom_rproc_pdm *pdm);
[all …]
H A Domap_remoteproc.c118 struct rproc *rproc; member
278 struct rproc *rproc = data; in omap_rproc_watchdog_isr() local
279 struct omap_rproc *oproc = rproc->priv; in omap_rproc_watchdog_isr()
280 struct device *dev = rproc->dev.parent; in omap_rproc_watchdog_isr()
300 rproc_report_crash(rproc, RPROC_WATCHDOG); in omap_rproc_watchdog_isr()
317 static int omap_rproc_enable_timers(struct rproc *rproc, bool configure) in omap_rproc_enable_timers() argument
324 struct omap_rproc *oproc = rproc->priv; in omap_rproc_enable_timers()
326 struct device *dev = rproc->dev.parent; in omap_rproc_enable_timers()
398 "rproc-wdt", rproc); in omap_rproc_enable_timers()
435 free_irq(timers[i].irq, rproc); in omap_rproc_enable_timers()
[all …]
H A Drcar_rproc.c22 static int rcar_rproc_mem_alloc(struct rproc *rproc, in rcar_rproc_mem_alloc() argument
25 struct device *dev = &rproc->dev; in rcar_rproc_mem_alloc()
42 static int rcar_rproc_mem_release(struct rproc *rproc, in rcar_rproc_mem_release() argument
45 dev_dbg(&rproc->dev, "unmap memory: %pa\n", &mem->dma); in rcar_rproc_mem_release()
51 static int rcar_rproc_prepare(struct rproc *rproc) in rcar_rproc_prepare() argument
53 struct device *dev = rproc->dev.parent; in rcar_rproc_prepare()
83 rproc_add_carveout(rproc, mem); in rcar_rproc_prepare()
87 static int rcar_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw) in rcar_rproc_parse_fw() argument
91 ret = rproc_elf_load_rsc_table(rproc, fw); in rcar_rproc_parse_fw()
93 dev_info(&rproc->dev, "No resource table in elf\n"); in rcar_rproc_parse_fw()
[all …]
H A Dst_remoteproc.c57 struct rproc *rproc = dev_get_drvdata(dev); in st_rproc_mbox_callback() local
59 if (rproc_vq_interrupt(rproc, msg) == IRQ_NONE) in st_rproc_mbox_callback()
75 static void st_rproc_kick(struct rproc *rproc, int vqid) in st_rproc_kick() argument
77 struct st_rproc *ddata = rproc->priv; in st_rproc_kick()
78 struct device *dev = rproc->dev.parent; in st_rproc_kick()
91 static int st_rproc_mem_alloc(struct rproc *rproc, in st_rproc_mem_alloc() argument
94 struct device *dev = rproc->dev.parent; in st_rproc_mem_alloc()
110 static int st_rproc_mem_release(struct rproc *rproc, in st_rproc_mem_release() argument
118 static int st_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw) in st_rproc_parse_fw() argument
120 struct device *dev = rproc->dev.parent; in st_rproc_parse_fw()
[all …]
H A Dremoteproc_debugfs.c45 struct rproc *rproc = filp->private_data; in rproc_coredump_read() local
50 rproc_coredump_str[rproc->dump_conf]); in rproc_coredump_read()
75 struct rproc *rproc = filp->private_data; in rproc_coredump_write() local
90 if (rproc->state == RPROC_CRASHED) { in rproc_coredump_write()
91 dev_err(&rproc->dev, "can't change coredump configuration\n"); in rproc_coredump_write()
97 rproc->dump_conf = RPROC_COREDUMP_DISABLED; in rproc_coredump_write()
99 rproc->dump_conf = RPROC_COREDUMP_ENABLED; in rproc_coredump_write()
101 rproc->dump_conf = RPROC_COREDUMP_INLINE; in rproc_coredump_write()
103 dev_err(&rproc->dev, "Invalid coredump configuration\n"); in rproc_coredump_write()
135 va = rproc_da_to_va(data->rproc, trace->da, trace->len, NULL); in rproc_trace_read()
[all …]
H A Dpru_rproc.c119 struct rproc *rproc; member
170 static int pru_rproc_set_firmware(struct rproc *rproc, const char *fw_name) in pru_rproc_set_firmware() argument
172 struct pru_rproc *pru = rproc->priv; in pru_rproc_set_firmware()
177 return rproc_set_firmware(rproc, fw_name); in pru_rproc_set_firmware()
180 static struct rproc *__pru_rproc_get(struct device_node *np, int index) in __pru_rproc_get()
182 struct rproc *rproc; in __pru_rproc_get() local
190 rproc = rproc_get_by_phandle(rproc_phandle); in __pru_rproc_get()
191 if (!rproc) { in __pru_rproc_get()
197 if (!is_pru_rproc(rproc->dev.parent)) { in __pru_rproc_get()
198 rproc_put(rproc); in __pru_rproc_get()
[all …]
H A Dremoteproc_coredump.c17 struct rproc *rproc; member
26 void rproc_coredump_cleanup(struct rproc *rproc) in rproc_coredump_cleanup() argument
30 list_for_each_entry_safe(entry, tmp, &rproc->dump_segments, node) { in rproc_coredump_cleanup()
48 int rproc_coredump_add_segment(struct rproc *rproc, dma_addr_t da, size_t size) in rproc_coredump_add_segment() argument
59 list_add_tail(&segment->node, &rproc->dump_segments); in rproc_coredump_add_segment()
79 int rproc_coredump_add_custom_segment(struct rproc *rproc, in rproc_coredump_add_custom_segment() argument
81 void (*dumpfn)(struct rproc *rproc, in rproc_coredump_add_custom_segment() argument
98 list_add_tail(&segment->node, &rproc->dump_segments); in rproc_coredump_add_custom_segment()
114 int rproc_coredump_set_elf_info(struct rproc *rproc, u8 class, u16 machine) in rproc_coredump_set_elf_info() argument
119 rproc->elf_class = class; in rproc_coredump_set_elf_info()
[all …]
H A Dti_k3_common.h83 struct rproc *rproc; member
99 void k3_rproc_kick(struct rproc *rproc, int vqid);
102 int k3_rproc_request_mbox(struct rproc *rproc);
103 int k3_rproc_prepare(struct rproc *rproc);
104 int k3_rproc_unprepare(struct rproc *rproc);
105 int k3_rproc_start(struct rproc *rproc);
106 int k3_rproc_stop(struct rproc *rproc);
107 int k3_rproc_attach(struct rproc *rproc);
108 int k3_rproc_detach(struct rproc *rproc);
109 struct resource_table *k3_get_loaded_rsc_table(struct rproc *rproc,
[all …]
H A Dqcom_common.c95 static void qcom_minidump_cleanup(struct rproc *rproc) in qcom_minidump_cleanup() argument
99 list_for_each_entry_safe(entry, tmp, &rproc->dump_segments, node) { in qcom_minidump_cleanup()
106 static int qcom_add_minidump_segments(struct rproc *rproc, struct minidump_subsystem *subsystem, in qcom_add_minidump_segments() argument
107 void (*rproc_dumpfn_t)(struct rproc *rproc, struct rproc_dump_segment *segment, in qcom_add_minidump_segments() argument
117 if (WARN_ON(!list_empty(&rproc->dump_segments))) { in qcom_add_minidump_segments()
118 dev_err(&rproc->dev, "dump segment list already populated\n"); in qcom_add_minidump_segments()
138 rproc_coredump_add_custom_segment(rproc, da, size, rproc_dumpfn_t, name); in qcom_add_minidump_segments()
146 void qcom_minidump(struct rproc *rproc, unsigned int minidump_id, in qcom_minidump() argument
147 void (*rproc_dumpfn_t)(struct rproc *rproc, in qcom_minidump() argument
160 dev_err(&rproc->dev, "Minidump TOC not found in SMEM\n"); in qcom_minidump()
[all …]
H A Dingenic_rproc.c69 static int ingenic_rproc_prepare(struct rproc *rproc) in ingenic_rproc_prepare() argument
71 struct vpu *vpu = rproc->priv; in ingenic_rproc_prepare()
82 static int ingenic_rproc_unprepare(struct rproc *rproc) in ingenic_rproc_unprepare() argument
84 struct vpu *vpu = rproc->priv; in ingenic_rproc_unprepare()
91 static int ingenic_rproc_start(struct rproc *rproc) in ingenic_rproc_start() argument
93 struct vpu *vpu = rproc->priv; in ingenic_rproc_start()
105 static int ingenic_rproc_stop(struct rproc *rproc) in ingenic_rproc_stop() argument
107 struct vpu *vpu = rproc->priv; in ingenic_rproc_stop()
117 static void ingenic_rproc_kick(struct rproc *rproc, int vqid) in ingenic_rproc_kick() argument
119 struct vpu *vpu = rproc->priv; in ingenic_rproc_kick()
[all …]
H A Dxlnx_r5_remoteproc.c153 struct rproc *rproc; member
187 struct rproc *rproc = data; in event_notified_idr_cb() local
189 if (rproc_vq_interrupt(rproc, id) == IRQ_NONE) in event_notified_idr_cb()
190 dev_dbg(&rproc->dev, "data not found for vqid=%d\n", id); in event_notified_idr_cb()
204 struct rproc *rproc; in handle_event_notified() local
207 rproc = ipi->r5_core->rproc; in handle_event_notified()
216 idr_for_each(&rproc->notifyids, event_notified_idr_cb, rproc); in handle_event_notified()
326 static void zynqmp_r5_rproc_kick(struct rproc *rproc, int vqid) in zynqmp_r5_rproc_kick() argument
328 struct zynqmp_r5_core *r5_core = rproc->priv; in zynqmp_r5_rproc_kick()
354 static int zynqmp_r5_rproc_start(struct rproc *rproc) in zynqmp_r5_rproc_start() argument
[all …]
H A Dda8xx_remoteproc.c67 struct rproc *rproc; member
87 struct rproc *rproc = p; in handle_event() local
90 rproc_vq_interrupt(rproc, 0); in handle_event()
91 rproc_vq_interrupt(rproc, 1); in handle_event()
107 struct rproc *rproc = p; in da8xx_rproc_callback() local
108 struct da8xx_rproc *drproc = rproc->priv; in da8xx_rproc_callback()
133 static int da8xx_rproc_start(struct rproc *rproc) in da8xx_rproc_start() argument
135 struct device *dev = rproc->dev.parent; in da8xx_rproc_start()
136 struct da8xx_rproc *drproc = rproc->priv; in da8xx_rproc_start()
142 if (rproc->bootaddr & 0x3ff) { in da8xx_rproc_start()
[all …]
H A Dremoteproc_virtio.c57 static struct rproc *vdev_to_rproc(struct virtio_device *vdev) in vdev_to_rproc()
61 return rvdev->rproc; in vdev_to_rproc()
68 struct rproc *rproc = rvring->rvdev->rproc; in rproc_virtio_notify() local
71 dev_dbg(&rproc->dev, "kicking vq index: %d\n", notifyid); in rproc_virtio_notify()
73 rproc->ops->kick(rproc, notifyid); in rproc_virtio_notify()
89 irqreturn_t rproc_vq_interrupt(struct rproc *rproc, int notifyid) in rproc_vq_interrupt() argument
93 dev_dbg(&rproc->dev, "vq index %d is interrupted\n", notifyid); in rproc_vq_interrupt()
95 rvring = idr_find(&rproc->notifyids, notifyid); in rproc_vq_interrupt()
109 struct rproc *rproc = vdev_to_rproc(vdev); in rp_find_vq() local
110 struct device *dev = &rproc->dev; in rp_find_vq()
[all …]
H A Dqcom_q6v5_adsp.c82 struct rproc *rproc; member
315 static int adsp_load(struct rproc *rproc, const struct firmware *fw) in adsp_load() argument
317 struct qcom_adsp *adsp = rproc->priv; in adsp_load()
320 ret = qcom_mdt_load_no_init(adsp->dev, fw, rproc->firmware, in adsp_load()
331 static void adsp_unmap_carveout(struct rproc *rproc) in adsp_unmap_carveout() argument
333 struct qcom_adsp *adsp = rproc->priv; in adsp_unmap_carveout()
336 iommu_unmap(rproc->domain, adsp->mem_phys, adsp->mem_size); in adsp_unmap_carveout()
339 static int adsp_map_carveout(struct rproc *rproc) in adsp_map_carveout() argument
341 struct qcom_adsp *adsp = rproc->priv; in adsp_map_carveout()
350 if (!rproc->domain) in adsp_map_carveout()
[all …]
H A Dti_k3_dsp_remoteproc.c32 static int k3_dsp_rproc_start(struct rproc *rproc) in k3_dsp_rproc_start() argument
34 struct k3_rproc *kproc = rproc->priv; in k3_dsp_rproc_start()
39 boot_addr = rproc->bootaddr; in k3_dsp_rproc_start()
52 ret = k3_rproc_start(rproc); in k3_dsp_rproc_start()
75 struct rproc *rproc; in k3_dsp_rproc_probe() local
88 rproc = devm_rproc_alloc(dev, dev_name(dev), &k3_dsp_rproc_ops, in k3_dsp_rproc_probe()
90 if (!rproc) in k3_dsp_rproc_probe()
93 rproc->has_iommu = false; in k3_dsp_rproc_probe()
94 rproc->recovery_disabled = true; in k3_dsp_rproc_probe()
96 rproc->ops->prepare = k3_rproc_prepare; in k3_dsp_rproc_probe()
[all …]
H A Dti_k3_common.c55 struct device *dev = kproc->rproc->dev.parent; in k3_rproc_mbox_callback()
56 struct rproc *rproc = kproc->rproc; in k3_rproc_mbox_callback() local
67 dev_err(dev, "K3 rproc %s crashed\n", rproc->name); in k3_rproc_mbox_callback()
70 dev_info(dev, "received echo reply from %s\n", rproc->name); in k3_rproc_mbox_callback()
76 if (msg > rproc->max_notifyid) { in k3_rproc_mbox_callback()
81 if (rproc_vq_interrupt(rproc, msg) == IRQ_NONE) in k3_rproc_mbox_callback()
93 void k3_rproc_kick(struct rproc *rproc, int vqid) in k3_rproc_kick() argument
95 struct k3_rproc *kproc = rproc->priv; in k3_rproc_kick()
165 int k3_rproc_request_mbox(struct rproc *rproc) in k3_rproc_request_mbox() argument
167 struct k3_rproc *kproc = rproc->priv; in k3_rproc_request_mbox()
[all …]
H A Dqcom_q6v5_pas.c67 struct rproc *rproc; member
125 static void qcom_pas_segment_dump(struct rproc *rproc, in qcom_pas_segment_dump() argument
129 struct qcom_pas *pas = rproc->priv; in qcom_pas_segment_dump()
144 static void qcom_pas_minidump(struct rproc *rproc) in qcom_pas_minidump() argument
146 struct qcom_pas *pas = rproc->priv; in qcom_pas_minidump()
148 if (rproc->dump_conf == RPROC_COREDUMP_DISABLED) in qcom_pas_minidump()
151 qcom_minidump(rproc, pas->minidump_id, qcom_pas_segment_dump); in qcom_pas_minidump()
205 static int qcom_pas_unprepare(struct rproc *rproc) in qcom_pas_unprepare() argument
207 struct qcom_pas *pas = rproc->priv; in qcom_pas_unprepare()
222 static int qcom_pas_load(struct rproc *rproc, const struct firmware *fw) in qcom_pas_load() argument
[all …]
/linux/include/linux/
H A Dremoteproc.h314 struct rproc;
344 int (*alloc)(struct rproc *rproc, struct rproc_mem_entry *mem);
345 int (*release)(struct rproc *rproc, struct rproc_mem_entry *mem);
386 int (*prepare)(struct rproc *rproc);
387 int (*unprepare)(struct rproc *rproc);
388 int (*start)(struct rproc *rproc);
389 int (*stop)(struct rproc *rproc);
390 int (*attach)(struct rproc *rproc);
391 int (*detach)(struct rproc *rproc);
392 void (*kick)(struct rproc *rproc, int vqid);
[all …]

123