1 /* SPDX-License-Identifier: GPL-2.0 OR MIT */ 2 /* Copyright 2018-2019 Qiang Yu <yuq825@gmail.com> */ 3 4 #ifndef __LIMA_CTX_H__ 5 #define __LIMA_CTX_H__ 6 7 #include <linux/xarray.h> 8 #include <linux/sched.h> 9 10 #include "lima_device.h" 11 12 struct lima_ctx { 13 struct kref refcnt; 14 struct lima_device *dev; 15 struct lima_sched_context context[lima_pipe_num]; 16 17 /* debug info */ 18 char pname[TASK_COMM_LEN]; 19 pid_t pid; 20 }; 21 22 struct lima_ctx_mgr { 23 struct mutex lock; 24 struct xarray handles; 25 }; 26 27 int lima_ctx_create(struct lima_device *dev, struct lima_ctx_mgr *mgr, u32 *id); 28 int lima_ctx_free(struct lima_ctx_mgr *mgr, u32 id); 29 struct lima_ctx *lima_ctx_get(struct lima_ctx_mgr *mgr, u32 id); 30 void lima_ctx_put(struct lima_ctx *ctx); 31 void lima_ctx_mgr_init(struct lima_ctx_mgr *mgr); 32 void lima_ctx_mgr_fini(struct lima_ctx_mgr *mgr); 33 34 #endif 35