1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) Rockchip Electronics Co., Ltd. 4 * 5 * Author: Huang Lee <Putin.li@rock-chips.com> 6 */ 7 8 #ifndef __LINUX_RKRGA_JOB_H_ 9 #define __LINUX_RKRGA_JOB_H_ 10 11 #include <linux/spinlock.h> 12 #include <linux/dma-fence.h> 13 14 #include "rga_drv.h" 15 16 enum job_flags { 17 RGA_JOB_DONE = 1 << 0, 18 RGA_JOB_ASYNC = 1 << 1, 19 RGA_JOB_SYNC = 1 << 2, 20 RGA_JOB_USE_HANDLE = 1 << 3, 21 RGA_JOB_UNSUPPORT_RGA_MMU = 1 << 4, 22 }; 23 24 void rga_job_scheduler_dump_info(struct rga_scheduler_t *scheduler); 25 void rga_job_next(struct rga_scheduler_t *scheduler); 26 struct rga_job *rga_job_done(struct rga_scheduler_t *scheduler); 27 struct rga_job *rga_job_commit(struct rga_req *rga_command_base, struct rga_request *request); 28 int rga_job_mpi_commit(struct rga_req *rga_command_base, struct rga_request *request); 29 30 int rga_job_assign(struct rga_job *job); 31 32 33 int rga_request_check(struct rga_user_request *req); 34 struct rga_request *rga_request_lookup(struct rga_pending_request_manager *request_manager, 35 uint32_t id); 36 37 int rga_request_commit(struct rga_request *user_request); 38 void rga_request_session_destroy_abort(struct rga_session *session); 39 int rga_request_put(struct rga_request *request); 40 void rga_request_get(struct rga_request *request); 41 int rga_request_free(struct rga_request *request); 42 int rga_request_alloc(uint32_t flags, struct rga_session *session); 43 44 struct rga_request *rga_request_config(struct rga_user_request *user_request); 45 struct rga_request *rga_request_kernel_config(struct rga_user_request *user_request); 46 int rga_request_submit(struct rga_request *request); 47 int rga_request_mpi_submit(struct rga_req *req, struct rga_request *request); 48 int rga_request_release_signal(struct rga_scheduler_t *scheduler, struct rga_job *job); 49 50 int rga_request_manager_init(struct rga_pending_request_manager **request_manager_session); 51 int rga_request_manager_remove(struct rga_pending_request_manager **request_manager_session); 52 53 #endif /* __LINUX_RKRGA_JOB_H_ */ 54