xref: /aosp_15_r20/external/libdrm/exynos/exynos_drm.h (revision 7688df22e49036ff52a766b7101da3a49edadb8c)
1*7688df22SAndroid Build Coastguard Worker /* exynos_drm.h
2*7688df22SAndroid Build Coastguard Worker  *
3*7688df22SAndroid Build Coastguard Worker  * Copyright (c) 2011 Samsung Electronics Co., Ltd.
4*7688df22SAndroid Build Coastguard Worker  * Authors:
5*7688df22SAndroid Build Coastguard Worker  *	Inki Dae <[email protected]>
6*7688df22SAndroid Build Coastguard Worker  *	Joonyoung Shim <[email protected]>
7*7688df22SAndroid Build Coastguard Worker  *	Seung-Woo Kim <[email protected]>
8*7688df22SAndroid Build Coastguard Worker  *
9*7688df22SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
10*7688df22SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Software"),
11*7688df22SAndroid Build Coastguard Worker  * to deal in the Software without restriction, including without limitation
12*7688df22SAndroid Build Coastguard Worker  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13*7688df22SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
14*7688df22SAndroid Build Coastguard Worker  * Software is furnished to do so, subject to the following conditions:
15*7688df22SAndroid Build Coastguard Worker  *
16*7688df22SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the next
17*7688df22SAndroid Build Coastguard Worker  * paragraph) shall be included in all copies or substantial portions of the
18*7688df22SAndroid Build Coastguard Worker  * Software.
19*7688df22SAndroid Build Coastguard Worker  *
20*7688df22SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21*7688df22SAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22*7688df22SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
23*7688df22SAndroid Build Coastguard Worker  * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
24*7688df22SAndroid Build Coastguard Worker  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25*7688df22SAndroid Build Coastguard Worker  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26*7688df22SAndroid Build Coastguard Worker  * OTHER DEALINGS IN THE SOFTWARE.
27*7688df22SAndroid Build Coastguard Worker  */
28*7688df22SAndroid Build Coastguard Worker 
29*7688df22SAndroid Build Coastguard Worker #ifndef _EXYNOS_DRM_H_
30*7688df22SAndroid Build Coastguard Worker #define _EXYNOS_DRM_H_
31*7688df22SAndroid Build Coastguard Worker 
32*7688df22SAndroid Build Coastguard Worker #include "drm.h"
33*7688df22SAndroid Build Coastguard Worker 
34*7688df22SAndroid Build Coastguard Worker /**
35*7688df22SAndroid Build Coastguard Worker  * User-desired buffer creation information structure.
36*7688df22SAndroid Build Coastguard Worker  *
37*7688df22SAndroid Build Coastguard Worker  * @size: user-desired memory allocation size.
38*7688df22SAndroid Build Coastguard Worker  *	- this size value would be page-aligned internally.
39*7688df22SAndroid Build Coastguard Worker  * @flags: user request for setting memory type or cache attributes.
40*7688df22SAndroid Build Coastguard Worker  * @handle: returned a handle to created gem object.
41*7688df22SAndroid Build Coastguard Worker  *	- this handle will be set by gem module of kernel side.
42*7688df22SAndroid Build Coastguard Worker  */
43*7688df22SAndroid Build Coastguard Worker struct drm_exynos_gem_create {
44*7688df22SAndroid Build Coastguard Worker 	uint64_t size;
45*7688df22SAndroid Build Coastguard Worker 	unsigned int flags;
46*7688df22SAndroid Build Coastguard Worker 	unsigned int handle;
47*7688df22SAndroid Build Coastguard Worker };
48*7688df22SAndroid Build Coastguard Worker 
49*7688df22SAndroid Build Coastguard Worker /**
50*7688df22SAndroid Build Coastguard Worker  * A structure to gem information.
51*7688df22SAndroid Build Coastguard Worker  *
52*7688df22SAndroid Build Coastguard Worker  * @handle: a handle to gem object created.
53*7688df22SAndroid Build Coastguard Worker  * @flags: flag value including memory type and cache attribute and
54*7688df22SAndroid Build Coastguard Worker  *	this value would be set by driver.
55*7688df22SAndroid Build Coastguard Worker  * @size: size to memory region allocated by gem and this size would
56*7688df22SAndroid Build Coastguard Worker  *	be set by driver.
57*7688df22SAndroid Build Coastguard Worker  */
58*7688df22SAndroid Build Coastguard Worker struct drm_exynos_gem_info {
59*7688df22SAndroid Build Coastguard Worker 	unsigned int handle;
60*7688df22SAndroid Build Coastguard Worker 	unsigned int flags;
61*7688df22SAndroid Build Coastguard Worker 	uint64_t size;
62*7688df22SAndroid Build Coastguard Worker };
63*7688df22SAndroid Build Coastguard Worker 
64*7688df22SAndroid Build Coastguard Worker /**
65*7688df22SAndroid Build Coastguard Worker  * A structure for user connection request of virtual display.
66*7688df22SAndroid Build Coastguard Worker  *
67*7688df22SAndroid Build Coastguard Worker  * @connection: indicate whether doing connection or not by user.
68*7688df22SAndroid Build Coastguard Worker  * @extensions: if this value is 1 then the vidi driver would need additional
69*7688df22SAndroid Build Coastguard Worker  *	128bytes edid data.
70*7688df22SAndroid Build Coastguard Worker  * @edid: the edid data pointer from user side.
71*7688df22SAndroid Build Coastguard Worker  */
72*7688df22SAndroid Build Coastguard Worker struct drm_exynos_vidi_connection {
73*7688df22SAndroid Build Coastguard Worker 	unsigned int connection;
74*7688df22SAndroid Build Coastguard Worker 	unsigned int extensions;
75*7688df22SAndroid Build Coastguard Worker 	uint64_t edid;
76*7688df22SAndroid Build Coastguard Worker };
77*7688df22SAndroid Build Coastguard Worker 
78*7688df22SAndroid Build Coastguard Worker /* memory type definitions. */
79*7688df22SAndroid Build Coastguard Worker enum e_drm_exynos_gem_mem_type {
80*7688df22SAndroid Build Coastguard Worker 	/* Physically Continuous memory and used as default. */
81*7688df22SAndroid Build Coastguard Worker 	EXYNOS_BO_CONTIG	= 0 << 0,
82*7688df22SAndroid Build Coastguard Worker 	/* Physically Non-Continuous memory. */
83*7688df22SAndroid Build Coastguard Worker 	EXYNOS_BO_NONCONTIG	= 1 << 0,
84*7688df22SAndroid Build Coastguard Worker 	/* non-cachable mapping and used as default. */
85*7688df22SAndroid Build Coastguard Worker 	EXYNOS_BO_NONCACHABLE	= 0 << 1,
86*7688df22SAndroid Build Coastguard Worker 	/* cachable mapping. */
87*7688df22SAndroid Build Coastguard Worker 	EXYNOS_BO_CACHABLE	= 1 << 1,
88*7688df22SAndroid Build Coastguard Worker 	/* write-combine mapping. */
89*7688df22SAndroid Build Coastguard Worker 	EXYNOS_BO_WC		= 1 << 2,
90*7688df22SAndroid Build Coastguard Worker 	EXYNOS_BO_MASK		= EXYNOS_BO_NONCONTIG | EXYNOS_BO_CACHABLE |
91*7688df22SAndroid Build Coastguard Worker 					EXYNOS_BO_WC
92*7688df22SAndroid Build Coastguard Worker };
93*7688df22SAndroid Build Coastguard Worker 
94*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_get_ver {
95*7688df22SAndroid Build Coastguard Worker 	__u32	major;
96*7688df22SAndroid Build Coastguard Worker 	__u32	minor;
97*7688df22SAndroid Build Coastguard Worker };
98*7688df22SAndroid Build Coastguard Worker 
99*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_cmd {
100*7688df22SAndroid Build Coastguard Worker 	__u32	offset;
101*7688df22SAndroid Build Coastguard Worker 	__u32	data;
102*7688df22SAndroid Build Coastguard Worker };
103*7688df22SAndroid Build Coastguard Worker 
104*7688df22SAndroid Build Coastguard Worker enum drm_exynos_g2d_buf_type {
105*7688df22SAndroid Build Coastguard Worker 	G2D_BUF_USERPTR = 1 << 31,
106*7688df22SAndroid Build Coastguard Worker };
107*7688df22SAndroid Build Coastguard Worker 
108*7688df22SAndroid Build Coastguard Worker enum drm_exynos_g2d_event_type {
109*7688df22SAndroid Build Coastguard Worker 	G2D_EVENT_NOT,
110*7688df22SAndroid Build Coastguard Worker 	G2D_EVENT_NONSTOP,
111*7688df22SAndroid Build Coastguard Worker 	G2D_EVENT_STOP,		/* not yet */
112*7688df22SAndroid Build Coastguard Worker };
113*7688df22SAndroid Build Coastguard Worker 
114*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_userptr {
115*7688df22SAndroid Build Coastguard Worker 	unsigned long userptr;
116*7688df22SAndroid Build Coastguard Worker 	unsigned long size;
117*7688df22SAndroid Build Coastguard Worker };
118*7688df22SAndroid Build Coastguard Worker 
119*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_set_cmdlist {
120*7688df22SAndroid Build Coastguard Worker 	__u64					cmd;
121*7688df22SAndroid Build Coastguard Worker 	__u64					cmd_buf;
122*7688df22SAndroid Build Coastguard Worker 	__u32					cmd_nr;
123*7688df22SAndroid Build Coastguard Worker 	__u32					cmd_buf_nr;
124*7688df22SAndroid Build Coastguard Worker 
125*7688df22SAndroid Build Coastguard Worker 	/* for g2d event */
126*7688df22SAndroid Build Coastguard Worker 	__u64					event_type;
127*7688df22SAndroid Build Coastguard Worker 	__u64					user_data;
128*7688df22SAndroid Build Coastguard Worker };
129*7688df22SAndroid Build Coastguard Worker 
130*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_exec {
131*7688df22SAndroid Build Coastguard Worker 	__u64					async;
132*7688df22SAndroid Build Coastguard Worker };
133*7688df22SAndroid Build Coastguard Worker 
134*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_GEM_CREATE		0x00
135*7688df22SAndroid Build Coastguard Worker /* Reserved 0x04 ~ 0x05 for exynos specific gem ioctl */
136*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_GEM_GET		0x04
137*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_VIDI_CONNECTION	0x07
138*7688df22SAndroid Build Coastguard Worker 
139*7688df22SAndroid Build Coastguard Worker /* G2D */
140*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_G2D_GET_VER		0x20
141*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_G2D_SET_CMDLIST	0x21
142*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_G2D_EXEC		0x22
143*7688df22SAndroid Build Coastguard Worker 
144*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_GEM_CREATE		DRM_IOWR(DRM_COMMAND_BASE + \
145*7688df22SAndroid Build Coastguard Worker 		DRM_EXYNOS_GEM_CREATE, struct drm_exynos_gem_create)
146*7688df22SAndroid Build Coastguard Worker 
147*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_GEM_GET	DRM_IOWR(DRM_COMMAND_BASE + \
148*7688df22SAndroid Build Coastguard Worker 		DRM_EXYNOS_GEM_GET,	struct drm_exynos_gem_info)
149*7688df22SAndroid Build Coastguard Worker 
150*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_VIDI_CONNECTION	DRM_IOWR(DRM_COMMAND_BASE + \
151*7688df22SAndroid Build Coastguard Worker 		DRM_EXYNOS_VIDI_CONNECTION, struct drm_exynos_vidi_connection)
152*7688df22SAndroid Build Coastguard Worker 
153*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_G2D_GET_VER		DRM_IOWR(DRM_COMMAND_BASE + \
154*7688df22SAndroid Build Coastguard Worker 		DRM_EXYNOS_G2D_GET_VER, struct drm_exynos_g2d_get_ver)
155*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST	DRM_IOWR(DRM_COMMAND_BASE + \
156*7688df22SAndroid Build Coastguard Worker 		DRM_EXYNOS_G2D_SET_CMDLIST, struct drm_exynos_g2d_set_cmdlist)
157*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_G2D_EXEC		DRM_IOWR(DRM_COMMAND_BASE + \
158*7688df22SAndroid Build Coastguard Worker 		DRM_EXYNOS_G2D_EXEC, struct drm_exynos_g2d_exec)
159*7688df22SAndroid Build Coastguard Worker 
160*7688df22SAndroid Build Coastguard Worker /* EXYNOS specific events */
161*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_G2D_EVENT		0x80000000
162*7688df22SAndroid Build Coastguard Worker 
163*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_event {
164*7688df22SAndroid Build Coastguard Worker 	struct drm_event	base;
165*7688df22SAndroid Build Coastguard Worker 	__u64				user_data;
166*7688df22SAndroid Build Coastguard Worker 	__u32				tv_sec;
167*7688df22SAndroid Build Coastguard Worker 	__u32				tv_usec;
168*7688df22SAndroid Build Coastguard Worker 	__u32				cmdlist_no;
169*7688df22SAndroid Build Coastguard Worker 	__u32				reserved;
170*7688df22SAndroid Build Coastguard Worker };
171*7688df22SAndroid Build Coastguard Worker 
172*7688df22SAndroid Build Coastguard Worker #endif
173