/linux/drivers/remoteproc/ |
H A D | remoteproc_core.c | 51 typedef int (*rproc_handle_resource_t)(struct rproc *rproc, 54 static int rproc_alloc_carveout(struct rproc *rproc, 56 static int rproc_release_carveout(struct rproc *rproc, 88 struct rproc *rproc = token; in rproc_iommu_fault() local 92 rproc_report_crash(rproc, RPROC_MMUFAULT); in rproc_iommu_fault() 101 static int rproc_enable_iommu(struct rproc *rproc) in rproc_enable_iommu() argument 104 struct device *dev = rproc->dev.parent; in rproc_enable_iommu() 107 if (!rproc->has_iommu) { in rproc_enable_iommu() 118 iommu_set_fault_handler(domain, rproc_iommu_fault, rproc); in rproc_enable_iommu() 126 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 | 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 | 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 | remoteproc_coredump.c | 17 struct rproc *rproc; member 24 * @rproc: the remote processor handle 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() 39 * @rproc: handle of a remote processor 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() 67 * @rproc: handle of a remote processor 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 [all …]
|
H A D | omap_remoteproc.c | 78 * struct omap_rproc_timer - data structure for a timer used by a omap rproc 96 * @num_timers: number of rproc timer(s) 97 * @num_wd_timers: number of rproc watchdog timers 98 * @timers: timer(s) info used by rproc 101 * @rproc: rproc handle 118 struct rproc *rproc; member 186 * @timer: handle to a OMAP rproc timer 202 * @timer: handle to a OMAP rproc timer 219 * @timer: handle to a OMAP rproc timer 234 * @timer: handle to a OMAP rproc timer [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() 122 * We will most probably improve the rproc tracing facilities later on, [all …]
|
H A D | xlnx_r5_remoteproc.c | 140 * @rproc: rproc handle 153 struct rproc *rproc; member 176 * @id: rproc->notify id 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() 323 * @rproc: r5 core's corresponding rproc structure [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() 79 * @rproc: handle to the remote processor 80 * @notifyid: index of the signalled virtqueue (unique per this @rproc) 82 * This function should be called by the platform-specific rproc driver, 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() [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 | st_slim_rproc.c | 3 * SLIM core rproc driver 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() [all …]
|
H A D | remoteproc_elf_loader.c | 30 * @rproc: the remote processor handle 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; 118 * rproc_elf_get_boot_addr() - Get rproc's boot address. 119 * @rproc: the remote processor handle 128 u64 rproc_elf_get_boot_addr(struct rproc *rproc, const struct firmware *fw) argument 136 * @rproc: remote processor which will be booted using these fw segments 160 int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw) argument 162 struct device *dev = &rproc->dev; [all …]
|
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.h | 11 struct rproc; 17 struct rproc *rproc; member 46 struct rproc *rproc, int crash_reason, const char *load_state,
|
/linux/include/linux/ |
H A D | remoteproc.h | 146 * needed to map it (in case @rproc is using an IOMMU). Reducing the TLB 246 * @notifyid: a unique rproc-wide notify index for this vring. This notify 269 * @notifyid: a unique rproc-wide notify index for this vdev. This notify 287 * to statically allocate a vdev upon registration of the rproc (dynamic vdev 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); [all …]
|
H A D | pruss_driver.h | 108 struct pruss *pruss_get(struct rproc *rproc); 124 static inline struct pruss *pruss_get(struct rproc *rproc) in pruss_get() argument
|
/linux/include/linux/remoteproc/ |
H A D | pruss.h | 15 #define PRU_RPROC_DRVNAME "pru-rproc" 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
|
H A D | st_slim_rproc.h | 3 * SLIM core rproc driver header 34 * @rproc: rproc handle 41 struct rproc *rproc; member
|
/linux/Documentation/devicetree/bindings/bus/ |
H A D | xlnx,versal-net-cdx.yaml | 29 rproc property (xlnx,rproc) is used to identify the remote processor 45 xlnx,rproc: 48 phandle to the remoteproc_r5 rproc node using which APU interacts 63 - xlnx,rproc 80 xlnx,rproc = <&remoteproc_r5>;
|
/linux/Documentation/devicetree/bindings/memory-controllers/ |
H A D | xlnx,versal-net-ddrmc5.yaml | 23 amd,rproc: 26 phandle to the remoteproc_r5 rproc node using which APU interacts 32 - amd,rproc 40 amd,rproc = <&remoteproc_r5>;
|
/linux/Documentation/devicetree/bindings/remoteproc/ |
H A D | st-rproc.txt | 12 "st,st231-rproc" 13 "st,st40-rproc" 27 audio_reserved: rproc@42000000 { 34 compatible = "st,st231-rproc";
|
/linux/Documentation/devicetree/bindings/dma/ |
H A D | st_fdma.txt | 11 - st,stih407-fdma-mpe31-11, "st,slim-rproc"; 12 - st,stih407-fdma-mpe31-12, "st,slim-rproc"; 13 - st,stih407-fdma-mpe31-13, "st,slim-rproc"; 26 compatible = "st,stih407-fdma-mpe31-11", "st,slim-rproc";
|
/linux/drivers/soc/ti/ |
H A D | wkup_m3_ipc.c | 103 aux_data_addr = rproc_da_to_va(m3_ipc->rproc, in wkup_m3_copy_aux_data() 600 ret = rproc_boot(m3_ipc->rproc); in wkup_m3_rproc_boot_thread() 614 struct rproc *m3_rproc; in wkup_m3_ipc_probe() 651 if (of_property_read_u32(dev->of_node, "ti,rproc", &rproc_phandle)) { in wkup_m3_ipc_probe() 652 dev_err(&pdev->dev, "could not get rproc phandle\n"); in wkup_m3_ipc_probe() 659 dev_err(&pdev->dev, "could not get rproc handle\n"); in wkup_m3_ipc_probe() 664 m3_ipc->rproc = m3_rproc; in wkup_m3_ipc_probe() 717 rproc_shutdown(m3_ipc_state->rproc); in wkup_m3_ipc_remove() 718 rproc_put(m3_ipc_state->rproc); in wkup_m3_ipc_remove() 734 rproc_shutdown(m3_ipc_state->rproc); in wkup_m3_ipc_resume() [all …]
|
/linux/Documentation/devicetree/bindings/soc/ti/ |
H A D | wkup-m3-ipc.yaml | 64 ti,rproc: 67 phandle to the wkup_m3 rproc node so the IPC driver can boot it 107 - ti,rproc 127 ti,rproc = <&wkup_m3>; 168 ti,rproc = <&wkup_m3>;
|
/linux/drivers/net/ethernet/ti/icssg/ |
H A D | icssg_prueth.h | 274 * @pru: rproc instances of PRUs 275 * @rtu: rproc instances of RTUs 276 * @txpru: rproc instances of TX_PRUs 315 struct rproc *pru[PRUSS_NUM_PRUS]; 316 struct rproc *rtu[PRUSS_NUM_PRUS]; 317 struct rproc *txpru[PRUSS_NUM_PRUS];
|