xref: /aosp_15_r20/external/libdrm/exynos/exynos_drmif.h (revision 7688df22e49036ff52a766b7101da3a49edadb8c)
1*7688df22SAndroid Build Coastguard Worker /*
2*7688df22SAndroid Build Coastguard Worker  * Copyright (C) 2012 Samsung Electronics Co., Ltd.
3*7688df22SAndroid Build Coastguard Worker  *
4*7688df22SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
5*7688df22SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Software"),
6*7688df22SAndroid Build Coastguard Worker  * to deal in the Software without restriction, including without limitation
7*7688df22SAndroid Build Coastguard Worker  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*7688df22SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
9*7688df22SAndroid Build Coastguard Worker  * Software is furnished to do so, subject to the following conditions:
10*7688df22SAndroid Build Coastguard Worker  *
11*7688df22SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the next
12*7688df22SAndroid Build Coastguard Worker  * paragraph) shall be included in all copies or substantial portions of the
13*7688df22SAndroid Build Coastguard Worker  * Software.
14*7688df22SAndroid Build Coastguard Worker  *
15*7688df22SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16*7688df22SAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*7688df22SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18*7688df22SAndroid Build Coastguard Worker  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19*7688df22SAndroid Build Coastguard Worker  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20*7688df22SAndroid Build Coastguard Worker  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21*7688df22SAndroid Build Coastguard Worker  * SOFTWARE.
22*7688df22SAndroid Build Coastguard Worker  *
23*7688df22SAndroid Build Coastguard Worker  * Authors:
24*7688df22SAndroid Build Coastguard Worker  *    Inki Dae <[email protected]>
25*7688df22SAndroid Build Coastguard Worker  */
26*7688df22SAndroid Build Coastguard Worker 
27*7688df22SAndroid Build Coastguard Worker #ifndef EXYNOS_DRMIF_H_
28*7688df22SAndroid Build Coastguard Worker #define EXYNOS_DRMIF_H_
29*7688df22SAndroid Build Coastguard Worker 
30*7688df22SAndroid Build Coastguard Worker #include <xf86drm.h>
31*7688df22SAndroid Build Coastguard Worker #include <stdint.h>
32*7688df22SAndroid Build Coastguard Worker #include "exynos_drm.h"
33*7688df22SAndroid Build Coastguard Worker 
34*7688df22SAndroid Build Coastguard Worker #if defined(__cplusplus)
35*7688df22SAndroid Build Coastguard Worker extern "C" {
36*7688df22SAndroid Build Coastguard Worker #endif
37*7688df22SAndroid Build Coastguard Worker 
38*7688df22SAndroid Build Coastguard Worker struct exynos_device {
39*7688df22SAndroid Build Coastguard Worker 	int fd;
40*7688df22SAndroid Build Coastguard Worker };
41*7688df22SAndroid Build Coastguard Worker 
42*7688df22SAndroid Build Coastguard Worker /*
43*7688df22SAndroid Build Coastguard Worker  * Exynos Buffer Object structure.
44*7688df22SAndroid Build Coastguard Worker  *
45*7688df22SAndroid Build Coastguard Worker  * @dev: exynos device object allocated.
46*7688df22SAndroid Build Coastguard Worker  * @handle: a gem handle to gem object created.
47*7688df22SAndroid Build Coastguard Worker  * @flags: indicate memory allocation and cache attribute types.
48*7688df22SAndroid Build Coastguard Worker  * @size: size to the buffer created.
49*7688df22SAndroid Build Coastguard Worker  * @vaddr: user space address to a gem buffer mmapped.
50*7688df22SAndroid Build Coastguard Worker  * @name: a gem global handle from flink request.
51*7688df22SAndroid Build Coastguard Worker  */
52*7688df22SAndroid Build Coastguard Worker struct exynos_bo {
53*7688df22SAndroid Build Coastguard Worker 	struct exynos_device	*dev;
54*7688df22SAndroid Build Coastguard Worker 	uint32_t		handle;
55*7688df22SAndroid Build Coastguard Worker 	uint32_t		flags;
56*7688df22SAndroid Build Coastguard Worker 	size_t			size;
57*7688df22SAndroid Build Coastguard Worker 	void			*vaddr;
58*7688df22SAndroid Build Coastguard Worker 	uint32_t		name;
59*7688df22SAndroid Build Coastguard Worker };
60*7688df22SAndroid Build Coastguard Worker 
61*7688df22SAndroid Build Coastguard Worker #define EXYNOS_EVENT_CONTEXT_VERSION 1
62*7688df22SAndroid Build Coastguard Worker 
63*7688df22SAndroid Build Coastguard Worker /*
64*7688df22SAndroid Build Coastguard Worker  * Exynos Event Context structure.
65*7688df22SAndroid Build Coastguard Worker  *
66*7688df22SAndroid Build Coastguard Worker  * @base: base context (for core events).
67*7688df22SAndroid Build Coastguard Worker  * @version: version info similar to the one in 'drmEventContext'.
68*7688df22SAndroid Build Coastguard Worker  * @g2d_event_handler: handler for G2D events.
69*7688df22SAndroid Build Coastguard Worker  */
70*7688df22SAndroid Build Coastguard Worker struct exynos_event_context {
71*7688df22SAndroid Build Coastguard Worker 	drmEventContext base;
72*7688df22SAndroid Build Coastguard Worker 
73*7688df22SAndroid Build Coastguard Worker 	int version;
74*7688df22SAndroid Build Coastguard Worker 
75*7688df22SAndroid Build Coastguard Worker 	void (*g2d_event_handler)(int fd, unsigned int cmdlist_no,
76*7688df22SAndroid Build Coastguard Worker 							  unsigned int tv_sec, unsigned int tv_usec,
77*7688df22SAndroid Build Coastguard Worker 							  void *user_data);
78*7688df22SAndroid Build Coastguard Worker };
79*7688df22SAndroid Build Coastguard Worker 
80*7688df22SAndroid Build Coastguard Worker /*
81*7688df22SAndroid Build Coastguard Worker  * device related functions:
82*7688df22SAndroid Build Coastguard Worker  */
83*7688df22SAndroid Build Coastguard Worker struct exynos_device * exynos_device_create(int fd);
84*7688df22SAndroid Build Coastguard Worker void exynos_device_destroy(struct exynos_device *dev);
85*7688df22SAndroid Build Coastguard Worker 
86*7688df22SAndroid Build Coastguard Worker /*
87*7688df22SAndroid Build Coastguard Worker  * buffer-object related functions:
88*7688df22SAndroid Build Coastguard Worker  */
89*7688df22SAndroid Build Coastguard Worker struct exynos_bo * exynos_bo_create(struct exynos_device *dev,
90*7688df22SAndroid Build Coastguard Worker 		size_t size, uint32_t flags);
91*7688df22SAndroid Build Coastguard Worker int exynos_bo_get_info(struct exynos_device *dev, uint32_t handle,
92*7688df22SAndroid Build Coastguard Worker 			size_t *size, uint32_t *flags);
93*7688df22SAndroid Build Coastguard Worker void exynos_bo_destroy(struct exynos_bo *bo);
94*7688df22SAndroid Build Coastguard Worker struct exynos_bo * exynos_bo_from_name(struct exynos_device *dev, uint32_t name);
95*7688df22SAndroid Build Coastguard Worker int exynos_bo_get_name(struct exynos_bo *bo, uint32_t *name);
96*7688df22SAndroid Build Coastguard Worker uint32_t exynos_bo_handle(struct exynos_bo *bo);
97*7688df22SAndroid Build Coastguard Worker void * exynos_bo_map(struct exynos_bo *bo);
98*7688df22SAndroid Build Coastguard Worker int exynos_prime_handle_to_fd(struct exynos_device *dev, uint32_t handle,
99*7688df22SAndroid Build Coastguard Worker 					int *fd);
100*7688df22SAndroid Build Coastguard Worker int exynos_prime_fd_to_handle(struct exynos_device *dev, int fd,
101*7688df22SAndroid Build Coastguard Worker 					uint32_t *handle);
102*7688df22SAndroid Build Coastguard Worker 
103*7688df22SAndroid Build Coastguard Worker /*
104*7688df22SAndroid Build Coastguard Worker  * Virtual Display related functions:
105*7688df22SAndroid Build Coastguard Worker  */
106*7688df22SAndroid Build Coastguard Worker int exynos_vidi_connection(struct exynos_device *dev, uint32_t connect,
107*7688df22SAndroid Build Coastguard Worker 				uint32_t ext, void *edid);
108*7688df22SAndroid Build Coastguard Worker 
109*7688df22SAndroid Build Coastguard Worker /*
110*7688df22SAndroid Build Coastguard Worker  * event handling related functions:
111*7688df22SAndroid Build Coastguard Worker  */
112*7688df22SAndroid Build Coastguard Worker int exynos_handle_event(struct exynos_device *dev,
113*7688df22SAndroid Build Coastguard Worker 				struct exynos_event_context *ctx);
114*7688df22SAndroid Build Coastguard Worker 
115*7688df22SAndroid Build Coastguard Worker 
116*7688df22SAndroid Build Coastguard Worker #if defined(__cplusplus)
117*7688df22SAndroid Build Coastguard Worker }
118*7688df22SAndroid Build Coastguard Worker #endif
119*7688df22SAndroid Build Coastguard Worker 
120*7688df22SAndroid Build Coastguard Worker #endif /* EXYNOS_DRMIF_H_ */
121