xref: /titanic_50/usr/src/uts/common/io/drm/drm_io32.h (revision c9a6ea2e938727c95af7108c5e00eee4c890c7ae)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 
22 /*
23  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #ifndef	_DRM_IO32_H_
28 #define	_DRM_IO32_H_
29 
30 #ifdef _MULTI_DATAMODEL
31 
32 typedef struct drm_version_32 {
33 	int version_major;		/* Major version */
34 	int version_minor;		/* Minor version */
35 	int version_patchlevel;	/* Patch level */
36 	uint32_t name_len;		/* Length of name buffer */
37 	caddr32_t name;			/* Name of driver */
38 	uint32_t date_len;		/* Length of date buffer */
39 	caddr32_t date;			/* User-space buffer to hold date */
40 	uint32_t desc_len;		/* Length of desc buffer */
41 	caddr32_t desc;			/* User-space buffer to hold desc */
42 } drm_version_32_t;
43 
44 typedef struct drm_unique_32 {
45 	uint32_t unique_len;    /* Length of unique */
46 	caddr32_t unique;   /* Unique name for driver instantiation */
47 } drm_unique_32_t;
48 
49 typedef struct drm_ctx_priv_map_32 {
50 	unsigned int ctx_id;	/* Context requesting private mapping */
51 	caddr32_t handle;		/* Handle of map */
52 } drm_ctx_priv_map_32_t;
53 
54 typedef struct drm_map_32 {
55 	unsigned long long offset;
56 	unsigned long long handle;
57 	uint32_t size;
58 	drm_map_type_t type;
59 	drm_map_flags_t flags;
60 	int mtrr;
61 } drm_map_32_t;
62 
63 
64 typedef struct drm_client_32 {
65 	int idx;		/* Which client desired? */
66 	int auth;		/* Is client authenticated? */
67 	uint32_t pid;	/* Process ID */
68 	uint32_t uid;	/* User ID */
69 	uint32_t magic;	/* Magic */
70 	uint32_t iocs;	/* Ioctl count */
71 } drm_client_32_t;
72 
73 
74 typedef struct drm_stats_32 {
75 	uint32_t count;
76 	struct {
77 		uint32_t value;
78 		drm_stat_type_t type;
79 	} data[15];
80 } drm_stats_32_t;
81 
82 
83 typedef struct drm_buf_desc_32 {
84 	int		count;		/* Number of buffers of this size */
85 	int		size;		/* Size in bytes */
86 	int		low_mark;	/* Low water mark */
87 	int		high_mark;	/* High water mark */
88 	drm_buf_flag flags;
89 
90 	/*
91 	 * Start address of where the AGP buffers are
92 	 * in the AGP aperture
93 	 */
94 	uint32_t agp_start;
95 
96 }drm_buf_desc_32_t;
97 
98 typedef struct drm_buf_free_32 {
99 	int count;
100 	uint32_t list;
101 } drm_buf_free_32_t;
102 
103 /*
104  * Used by DRM_IOCTL_MAP_BUFS_32
105  */
106 typedef struct drm_buf_pub_32 {
107 	int idx;		/* Index into the master buffer list */
108 	int total;		/* Buffer size */
109 	int used;		/* Amount of buffer in use (for DMA) */
110 	uint32_t address;	/* Address of buffer */
111 } drm_buf_pub_32_t;
112 
113 typedef struct drm_buf_map_32 {
114 	int		count;	/* Length of the buffer list */
115 #if defined(__cplusplus)
116 	uint32_t c_virtual;
117 #else
118 	uint32_t virtual;	/* Mmap'd area in user-virtual */
119 #endif
120 	uint32_t	list; /* Buffer information */
121 	int    fd;
122 } drm_buf_map_32_t;
123 
124 typedef struct drm_agp_mode_32 {
125     uint32_t mode;  /* AGP mode */
126 } drm_agp_mode_32_t;
127 
128 typedef struct drm_agp_buffer32 {
129 	uint32_t size;		/* In bytes -- will round to page boundary */
130 	uint32_t handle;	/* Used for binding / unbinding */
131 	uint32_t type;		/* Type of memory to allocate */
132 	uint32_t physical;	/* Physical used by i810 */
133 } drm_agp_buffer_32_t;
134 
135 typedef struct drm_agp_binding_32 {
136 	uint32_t handle;	/* From drm_agp_buffer */
137 	uint32_t offset;	/* In bytes -- will round to page boundary */
138 } drm_agp_binding_32_t;
139 
140 typedef struct drm_agp_info_32 {
141 	int agp_version_major;
142 	int agp_version_minor;
143 	uint32_t mode;
144 	uint32_t aperture_base;
145 	uint32_t aperture_size;
146 	uint32_t memory_allowed;
147 	uint32_t memory_used;
148 	unsigned short id_vendor;
149 	unsigned short id_device;
150 } drm_agp_info_32_t;
151 
152 typedef struct drm_scatter_gather_32 {
153 	uint32_t	size;	/* In bytes -- will round to page boundary */
154 	uint32_t	handle;	/* Used for mapping/unmapping */
155 } drm_scatter_gather_32_t;
156 
157 typedef struct drm_ctx_res_32 {
158 	int count;
159 	caddr32_t contexts;
160 } drm_ctx_res_32_t;
161 
162 struct drm_wait_vblank_request_32 {
163 	drm_vblank_seq_type_t type;
164 	uint32_t sequence;
165 	uint32_t signal;
166 };
167 struct drm_wait_vblank_reply_32 {
168 	drm_vblank_seq_type_t type;
169 	uint32_t sequence;
170 	int32_t tval_sec;
171 	int32_t tval_usec;
172 };
173 
174 /*
175  * DRM_IOCTL_WAIT_VBLANK ioctl argument type.
176  *
177  * \sa drmWaitVBlank().
178  */
179 typedef union drm_wait_vblank_32 {
180 	struct drm_wait_vblank_request_32 request;
181 	struct drm_wait_vblank_reply_32 reply;
182 } drm_wait_vblank_32_t;
183 
184 
185 #endif  /* _MULTI_DATAMODEL */
186 
187 #endif	/* _DRM_IO32_H_ */
188