d0538f66491267879b7418b21ad78e3dcc2dcc83cg/*
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * CDDL HEADER START
d0538f66491267879b7418b21ad78e3dcc2dcc83cg *
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * The contents of this file are subject to the terms of the
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * Common Development and Distribution License (the "License").
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * You may not use this file except in compliance with the License.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg *
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * or http://www.opensolaris.org/os/licensing.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * See the License for the specific language governing permissions
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * and limitations under the License.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg *
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * When distributing Covered Code, include this CDDL HEADER in each
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * If applicable, add the following below this CDDL HEADER, with the
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * fields enclosed by brackets "[]" replaced with your own identifying
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * information: Portions Copyright [yyyy] [name of copyright owner]
d0538f66491267879b7418b21ad78e3dcc2dcc83cg *
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * CDDL HEADER END
d0538f66491267879b7418b21ad78e3dcc2dcc83cg */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg/*
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * Use is subject to license terms.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#ifndef _DRM_IO32_H_
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#define _DRM_IO32_H_
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#ifdef _MULTI_DATAMODEL
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_version_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int version_major; /* Major version */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int version_minor; /* Minor version */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int version_patchlevel; /* Patch level */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t name_len; /* Length of name buffer */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg caddr32_t name; /* Name of driver */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t date_len; /* Length of date buffer */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg caddr32_t date; /* User-space buffer to hold date */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t desc_len; /* Length of desc buffer */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg caddr32_t desc; /* User-space buffer to hold desc */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_version_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_unique_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t unique_len; /* Length of unique */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg caddr32_t unique; /* Unique name for driver instantiation */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_unique_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_ctx_priv_map_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg unsigned int ctx_id; /* Context requesting private mapping */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg caddr32_t handle; /* Handle of map */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_ctx_priv_map_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_map_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg unsigned long long offset;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg unsigned long long handle;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t size;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg drm_map_type_t type;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg drm_map_flags_t flags;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int mtrr;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_map_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_client_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int idx; /* Which client desired? */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int auth; /* Is client authenticated? */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t pid; /* Process ID */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t uid; /* User ID */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t magic; /* Magic */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t iocs; /* Ioctl count */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_client_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_stats_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t count;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg struct {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t value;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg drm_stat_type_t type;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg } data[15];
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_stats_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_buf_desc_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int count; /* Number of buffers of this size */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int size; /* Size in bytes */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int low_mark; /* Low water mark */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int high_mark; /* High water mark */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg drm_buf_flag flags;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg /*
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * Start address of where the AGP buffers are
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * in the AGP aperture
d0538f66491267879b7418b21ad78e3dcc2dcc83cg */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t agp_start;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg}drm_buf_desc_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_buf_free_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int count;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t list;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_buf_free_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg/*
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * Used by DRM_IOCTL_MAP_BUFS_32
d0538f66491267879b7418b21ad78e3dcc2dcc83cg */
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_buf_pub_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int idx; /* Index into the master buffer list */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int total; /* Buffer size */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int used; /* Amount of buffer in use (for DMA) */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t address; /* Address of buffer */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_buf_pub_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_buf_map_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int count; /* Length of the buffer list */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#if defined(__cplusplus)
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t c_virtual;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#else
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t virtual; /* Mmap'd area in user-virtual */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#endif
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t list; /* Buffer information */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int fd;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_buf_map_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_agp_mode_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t mode; /* AGP mode */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_agp_mode_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_agp_buffer32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t size; /* In bytes -- will round to page boundary */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t handle; /* Used for binding / unbinding */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t type; /* Type of memory to allocate */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t physical; /* Physical used by i810 */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_agp_buffer_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_agp_binding_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t handle; /* From drm_agp_buffer */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t offset; /* In bytes -- will round to page boundary */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_agp_binding_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_agp_info_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int agp_version_major;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int agp_version_minor;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t mode;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t aperture_base;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t aperture_size;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t memory_allowed;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t memory_used;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg unsigned short id_vendor;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg unsigned short id_device;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_agp_info_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_scatter_gather_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t size; /* In bytes -- will round to page boundary */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg uint32_t handle; /* Used for mapping/unmapping */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_scatter_gather_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_ctx_res_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int count;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg caddr32_t contexts;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_ctx_res_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cgstruct drm_wait_vblank_request_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg drm_vblank_seq_type_t type;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China uint32_t sequence;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China uint32_t signal;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg};
d0538f66491267879b7418b21ad78e3dcc2dcc83cgstruct drm_wait_vblank_reply_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg drm_vblank_seq_type_t type;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China uint32_t sequence;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China int32_t tval_sec;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China int32_t tval_usec;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg};
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg/*
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * DRM_IOCTL_WAIT_VBLANK ioctl argument type.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg *
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * \sa drmWaitVBlank().
d0538f66491267879b7418b21ad78e3dcc2dcc83cg */
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef union drm_wait_vblank_32 {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg struct drm_wait_vblank_request_32 request;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg struct drm_wait_vblank_reply_32 reply;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg} drm_wait_vblank_32_t;
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#endif /* _MULTI_DATAMODEL */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#endif /* _DRM_IO32_H_ */