Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) Rockchip Electronics Co., Ltd.
 *
 * Author: Huang Lee <Putin.li@rock-chips.com>
 */

#ifndef __LINUX_RKRVE_JOB_H_
#define __LINUX_RKRVE_JOB_H_

#include <linux/spinlock.h>
#include <linux/dma-fence.h>

#include "rve_drv.h"

enum job_flags {
	RVE_JOB_DONE			= 1 << 0,
	RVE_ASYNC			= 1 << 1,
	RVE_SYNC			= 1 << 2,
	RVE_JOB_USE_HANDLE		= 1 << 3,
	RVE_JOB_UNSUPPORT_RVE2		= 1 << 4,
};

struct rve_scheduler_t *rve_job_get_scheduler(struct rve_job *job);
struct rve_internal_ctx_t *rve_job_get_internal_ctx(struct rve_job *job);

void rve_job_done(struct rve_scheduler_t *rve_scheduler, int ret);
int rve_job_commit(struct rve_internal_ctx_t *ctx);

int rve_job_config_by_user_ctx(struct rve_user_ctx_t *user_ctx);
int rve_job_commit_by_user_ctx(struct rve_user_ctx_t *user_ctx);
int rve_job_cancel_by_user_ctx(uint32_t ctx_id);

void rve_job_session_destroy(struct rve_session *session);

int rve_ctx_manager_init(struct rve_pending_ctx_manager **ctx_manager_session);
int rve_ctx_manager_remove(struct rve_pending_ctx_manager **ctx_manager_session);

int rve_internal_ctx_alloc_to_get_idr_id(struct rve_session *session);
void rve_internal_ctx_kref_release(struct kref *ref);

int rve_internal_ctx_signal(struct rve_job *job);

struct rve_internal_ctx_t *
rve_internal_ctx_lookup(struct rve_pending_ctx_manager *ctx_manager, uint32_t id);

struct rve_job *
rve_scheduler_get_pending_job_list(struct rve_scheduler_t *scheduler);

struct rve_job *
rve_scheduler_get_running_job(struct rve_scheduler_t *scheduler);

#endif /* __LINUX_RKRVE_JOB_H_ */