Example #1
0
int remoteproc_resource_deinit(struct remote_proc *rproc) {
    int i = 0;
    struct proc_vring *vring_hw = 0;
    if (rproc) {
        if (rproc->rdev) {
            /* disable IPC interrupts */
            if (rproc->proc->ops->reg_ipi_after_deinit) {
                for(i = 0; i < 2; i++) {
                    vring_hw = &rproc->proc->vdev.vring_info[i];
                    rproc->proc->ops->reg_ipi_after_deinit(vring_hw);
                }
            }
            rpmsg_deinit(rproc->rdev);
        }
        if (rproc->proc) {
            hil_delete_proc(rproc->proc);
        }

        env_free_memory(rproc);
    }

    env_deinit();

    /* Disable the caches - This is required if master boots firmwares
     * multiple times without hard reset on same core. If caches are
     * not invalidated at this point in time then subsequent firmware
     * boots on the same core may experience cache inconsistencies.
     *
     */
    env_disable_cache();

    return RPROC_SUCCESS;
}
Example #2
0
void lib_deinit(void)
{
	lib_atexit_run();
	ipwd_deinit();
	hostpid_deinit();
	data_stack_deinit();
	env_deinit();
	failures_deinit();
	process_title_deinit();
}
Example #3
0
/**
 * remoteproc_deinit
 *
 * Uninitializes resources for remoteproc "master" configuration.
 *
 * @param rproc - pointer to remote proc instance
 *
 * @param returns - status of function execution
 *
 */
int remoteproc_deinit(struct remote_proc *rproc) {

    if (rproc) {
        if (rproc->loader) {
            (void) remoteproc_loader_delete(rproc->loader);
            rproc->loader = RPROC_NULL;
        }
        if (rproc->proc) {
            hil_delete_proc(rproc->proc);
            rproc->proc = RPROC_NULL;
        }
        env_free_memory(rproc);
    }

    env_deinit();

    return RPROC_SUCCESS;
}
Example #4
0
void rpmsg_deinit(struct remote_device *rdev) {
    if (rdev) {
        rpmsg_rdev_deinit(rdev);
        env_deinit();
    }
}