| /linux/drivers/remoteproc/ |
| H A D | remoteproc_core.c | 47 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 D | remoteproc_cdev.c | 23 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 D | stm32_rproc.c | 96 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 D | imx_dsp_rproc.c | 130 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 D | qcom_common.h | 44 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 D | imx_rproc.c | 95 static int imx_rproc_xtr_mbox_init(struct rproc *rproc, bool tx_block); 102 struct rproc *rproc; member 288 static int imx_rproc_arm_smc_start(struct rproc *rproc) in imx_rproc_arm_smc_start() argument 297 static int imx_rproc_mmio_start(struct rproc *rproc) in imx_rproc_mmio_start() argument 299 struct imx_rproc *priv = rproc->priv; in imx_rproc_mmio_start() 308 static int imx_rproc_scu_api_start(struct rproc *rproc) in imx_rproc_scu_api_start() argument 310 struct imx_rproc *priv = rproc->priv; in imx_rproc_scu_api_start() 315 static int imx_rproc_start(struct rproc *rproc) in imx_rproc_start() argument 317 struct imx_rproc *priv = rproc->priv; in imx_rproc_start() 322 ret = imx_rproc_xtr_mbox_init(rproc, true); in imx_rproc_start() [all …]
|
| H A D | omap_remoteproc.c | 118 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 D | rcar_rproc.c | 22 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 D | remoteproc_debugfs.c | 45 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 D | st_remoteproc.c | 57 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 D | remoteproc_coredump.c | 17 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 D | qcom_common.c | 95 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 D | ingenic_rproc.c | 69 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 D | xlnx_r5_remoteproc.c | 153 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 D | remoteproc_virtio.c | 57 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 D | qcom_q6v5_adsp.c | 82 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 D | ti_k3_common.c | 55 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 D | st_slim_rproc.c | 111 static int slim_rproc_start(struct rproc *rproc) in slim_rproc_start() argument 113 struct device *dev = &rproc->dev; in slim_rproc_start() 114 struct st_slim_rproc *slim_rproc = rproc->priv; in slim_rproc_start() 153 static int slim_rproc_stop(struct rproc *rproc) in slim_rproc_stop() argument 155 struct st_slim_rproc *slim_rproc = rproc->priv; in slim_rproc_stop() 169 dev_warn(&rproc->dev, "Failed to disable SLIM"); in slim_rproc_stop() 171 dev_dbg(&rproc->dev, "slim stopped\n"); in slim_rproc_stop() 176 static void *slim_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem) in slim_rproc_da_to_va() argument 178 struct st_slim_rproc *slim_rproc = rproc->priv; in slim_rproc_da_to_va() 193 dev_dbg(&rproc->dev, "da = 0x%llx len = 0x%zx va = 0x%p\n", in slim_rproc_da_to_va() [all …]
|
| H A D | remoteproc_elf_loader.c | 37 int rproc_elf_sanity_check(struct rproc *rproc, const struct firmware *fw) argument 39 const char *name = rproc->firmware; 40 struct device *dev = &rproc->dev; 128 u64 rproc_elf_get_boot_addr(struct rproc *rproc, const struct firmware *fw) argument 160 int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw) argument 162 struct device *dev = &rproc->dev; 212 ptr = rproc_da_to_va(rproc, da, memsz, &is_iomem); 326 int rproc_elf_load_rsc_table(struct rproc *rproc, const struct firmware *fw) argument 329 struct device *dev = &rproc->dev; 350 rproc->cached_table = kmemdup(table, tablesz, GFP_KERNEL); [all …]
|
| H A D | imx_rproc.h | 23 int (*start)(struct rproc *rproc); 24 int (*stop)(struct rproc *rproc); 25 int (*detach)(struct rproc *rproc); 26 int (*detect_mode)(struct rproc *rproc);
|
| H A D | qcom_wcnss.c | 68 struct rproc *rproc; member 155 static int wcnss_load(struct rproc *rproc, const struct firmware *fw) in wcnss_load() argument 157 struct qcom_wcnss *wcnss = rproc->priv; in wcnss_load() 160 ret = qcom_mdt_load(wcnss->dev, fw, rproc->firmware, WCNSS_PAS_ID, in wcnss_load() 228 static int wcnss_start(struct rproc *rproc) in wcnss_start() argument 230 struct qcom_wcnss *wcnss = rproc->priv; in wcnss_start() 294 static int wcnss_stop(struct rproc *rproc) in wcnss_stop() argument 296 struct qcom_wcnss *wcnss = rproc->priv; in wcnss_stop() 321 static void *wcnss_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem) in wcnss_da_to_va() argument 323 struct qcom_wcnss *wcnss = rproc->priv; in wcnss_da_to_va() [all …]
|
| H A D | qcom_q6v5_pas.c | 66 struct rproc *rproc; member 124 static void qcom_pas_segment_dump(struct rproc *rproc, in qcom_pas_segment_dump() argument 128 struct qcom_pas *pas = rproc->priv; in qcom_pas_segment_dump() 143 static void qcom_pas_minidump(struct rproc *rproc) in qcom_pas_minidump() argument 145 struct qcom_pas *pas = rproc->priv; in qcom_pas_minidump() 147 if (rproc->dump_conf == RPROC_COREDUMP_DISABLED) in qcom_pas_minidump() 150 qcom_minidump(rproc, pas->minidump_id, qcom_pas_segment_dump); in qcom_pas_minidump() 204 static int qcom_pas_unprepare(struct rproc *rproc) in qcom_pas_unprepare() argument 206 struct qcom_pas *pas = rproc->priv; in qcom_pas_unprepare() 221 static int qcom_pas_load(struct rproc *rproc, const struct firmware *fw) in qcom_pas_load() argument [all …]
|
| H A D | qcom_q6v5_wcss.c | 239 static int q6v5_wcss_start(struct rproc *rproc) in q6v5_wcss_start() argument 241 struct q6v5_wcss *wcss = rproc->priv; in q6v5_wcss_start() 274 writel(rproc->bootaddr >> 4, wcss->reg_base + Q6SS_RST_EVB); in q6v5_wcss_start() 456 static int q6v5_qcs404_wcss_start(struct rproc *rproc) in q6v5_qcs404_wcss_start() argument 458 struct q6v5_wcss *wcss = rproc->priv; in q6v5_qcs404_wcss_start() 477 writel(rproc->bootaddr >> 4, wcss->reg_base + Q6SS_RST_EVB); in q6v5_qcs404_wcss_start() 708 static int q6v5_wcss_stop(struct rproc *rproc) in q6v5_wcss_stop() argument 710 struct q6v5_wcss *wcss = rproc->priv; in q6v5_wcss_stop() 742 static void *q6v5_wcss_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem) in q6v5_wcss_da_to_va() argument 744 struct q6v5_wcss *wcss = rproc->priv; in q6v5_wcss_da_to_va() [all …]
|
| /linux/include/linux/ |
| H A D | remoteproc.h | 314 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 …]
|
| /linux/include/linux/remoteproc/ |
| H A D | pruss.h | 46 struct rproc; 50 struct rproc *pru_rproc_get(struct device_node *np, int index, 52 void pru_rproc_put(struct rproc *rproc); 53 int pru_rproc_set_ctable(struct rproc *rproc, enum pru_ctable_idx c, u32 addr); 57 static inline struct rproc * 63 static inline void pru_rproc_put(struct rproc *rproc) { } in pru_rproc_put() argument 65 static inline int pru_rproc_set_ctable(struct rproc *rproc, in pru_rproc_set_ctable() argument
|