drmP.h revision 0f7bfed6285b1bd6a65b05cc5f6ab4687ca999e6
60405de4d8688d96dd05157c28db3ade5c9bc234kz * drmP.h -- Private header for Direct Rendering Manager -*- linux-c -*-
60405de4d8688d96dd05157c28db3ade5c9bc234kz * Created: Mon Jan 4 10:05:05 1999 by faith@precisioninsight.com
60405de4d8688d96dd05157c28db3ade5c9bc234kz * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
60405de4d8688d96dd05157c28db3ade5c9bc234kz * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
60405de4d8688d96dd05157c28db3ade5c9bc234kz * All rights reserved.
60405de4d8688d96dd05157c28db3ade5c9bc234kz * Permission is hereby granted, free of charge, to any person obtaining a
60405de4d8688d96dd05157c28db3ade5c9bc234kz * copy of this software and associated documentation files (the "Software"),
60405de4d8688d96dd05157c28db3ade5c9bc234kz * to deal in the Software without restriction, including without limitation
60405de4d8688d96dd05157c28db3ade5c9bc234kz * the rights to use, copy, modify, merge, publish, distribute, sublicense,
60405de4d8688d96dd05157c28db3ade5c9bc234kz * and/or sell copies of the Software, and to permit persons to whom the
60405de4d8688d96dd05157c28db3ade5c9bc234kz * Software is furnished to do so, subject to the following conditions:
60405de4d8688d96dd05157c28db3ade5c9bc234kz * The above copyright notice and this permission notice (including the next
60405de4d8688d96dd05157c28db3ade5c9bc234kz * paragraph) shall be included in all copies or substantial portions of the
60405de4d8688d96dd05157c28db3ade5c9bc234kz * Software.
60405de4d8688d96dd05157c28db3ade5c9bc234kz * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
60405de4d8688d96dd05157c28db3ade5c9bc234kz * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
60405de4d8688d96dd05157c28db3ade5c9bc234kz * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
60405de4d8688d96dd05157c28db3ade5c9bc234kz * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
60405de4d8688d96dd05157c28db3ade5c9bc234kz * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
60405de4d8688d96dd05157c28db3ade5c9bc234kz * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
60405de4d8688d96dd05157c28db3ade5c9bc234kz * OTHER DEALINGS IN THE SOFTWARE.
60405de4d8688d96dd05157c28db3ade5c9bc234kz * Authors:
60405de4d8688d96dd05157c28db3ade5c9bc234kz * Rickard E. (Rik) Faith <faith@valinux.com>
60405de4d8688d96dd05157c28db3ade5c9bc234kz * Gareth Hughes <gareth@valinux.com>
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
e92e3a8694f157faf8a9e44096a70ada86c556bfzw * Use is subject to license terms.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#define __inline__ inline
a6f90f126e631443fabe3aab254ed6cb624c5d3cmc#if !defined(__FUNCTION__)
a6f90f126e631443fabe3aab254ed6cb624c5d3cmc#if defined(C99)
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* DRM space units */
60405de4d8688d96dd05157c28db3ade5c9bc234kz#define DRM_ALIGNED(offset) (((offset) & DRM_PAGE_OFFSET) == 0)
60405de4d8688d96dd05157c28db3ade5c9bc234kz#define DRM_KERNEL_CONTEXT 0 /* Change drm_resctx if changed */
60405de4d8688d96dd05157c28db3ade5c9bc234kz#define DRM_RESERVED_CONTEXTS 1 /* Change drm_resctx if changed */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#define DRM_FILE_PAGE_OFFSET_START ((0xFFFFFFFFUL >> PAGE_SHIFT) + 1)
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#define DRM_FILE_PAGE_OFFSET_SIZE ((0xFFFFFFFFUL >> PAGE_SHIFT) * 16)
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Internal types and structures */
60405de4d8688d96dd05157c28db3ade5c9bc234kz#define DRM_ARRAY_SIZE(x) (sizeof (x) / sizeof (x[0]))
60405de4d8688d96dd05157c28db3ade5c9bc234kz#define DRM_MIN(a, b) ((a) < (b) ? (a) : (b))
60405de4d8688d96dd05157c28db3ade5c9bc234kz#define DRM_MAX(a, b) ((a) > (b) ? (a) : (b))
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#define DRM_LOCK_OWNED() ASSERT(mutex_owned(&dev->dev_lock))
d0538f66491267879b7418b21ad78e3dcc2dcc83cg drm_device_t *dev1, intptr_t data, drm_file_t *fpriv, int mode
d0538f66491267879b7418b21ad78e3dcc2dcc83cg ddi_copyout((src), (dest), (size), 0) /* flags for dest */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg *(uint8_t *)((uintptr_t)((map)->dev_addr) + (offset)) = (val)
d0538f66491267879b7418b21ad78e3dcc2dcc83cg *(uint16_t *)((uintptr_t)((map)->dev_addr) + (offset)) = (val)
d0538f66491267879b7418b21ad78e3dcc2dcc83cg *(uint32_t *)((uintptr_t)((map)->dev_addr) + (offset)) = (val)
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_wait_queue {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#define DRM_WAKEUP(q) \
d0538f66491267879b7418b21ad78e3dcc2dcc83cgwhile (!(condition)) { \
d0538f66491267879b7418b21ad78e3dcc2dcc83cg ret = cv_timedwait_sig(&(q)->cv, &(q)->lock, jiffies + timeout); \
d0538f66491267879b7418b21ad78e3dcc2dcc83cg } else if (ret == 0) { \
d0538f66491267879b7418b21ad78e3dcc2dcc83cg } else { \
60405de4d8688d96dd05157c28db3ade5c9bc234kz return (EINVAL); \
60405de4d8688d96dd05157c28db3ade5c9bc234kz#define PAGE_ALIGN(addr) (((addr) + DRM_PAGE_SIZE - 1) & DRM_PAGE_MASK)
60405de4d8688d96dd05157c28db3ade5c9bc234kz#define DRM_SUSER(p) (crgetgid(p) == 0 || crgetuid(p) == 0)
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * wait for 400 milliseconds
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef unsigned long dma_addr_t;
60405de4d8688d96dd05157c28db3ade5c9bc234kz#define __offsetof(type, field) ((size_t)(&((type *)0)->field))
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_pci_id_list
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_ioctl_desc {
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_magic_entry {
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_magic_head {
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_buf {
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned long offset; /* Byte offset (used internally) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz struct drm_buf *next; /* Kernel-only: used for free list */
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* Uniq. identifier of holding process */
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_freelist {
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_buf_entry {
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned long *seglist_bus;
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef TAILQ_HEAD(drm_file_list, drm_file) drm_file_list_t;
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned long ioctl_count;
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_lock_data {
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* Uniq. identifier of holding process */
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned long lock_time; /* Time of last lock in jiffies */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * This structure, in drm_device_t, is always initialized while the device
60405de4d8688d96dd05157c28db3ade5c9bc234kz * is open. dev->dma_lock protects the incrementing of dev->buf_use, which
60405de4d8688d96dd05157c28db3ade5c9bc234kz * when set marks that no further bufs may be allocated until device teardown
60405de4d8688d96dd05157c28db3ade5c9bc234kz * occurs (when the last open of the device has closed). The high/low
60405de4d8688d96dd05157c28db3ade5c9bc234kz * watermarks of bufs are only touched by the X Server, and thus not
60405de4d8688d96dd05157c28db3ade5c9bc234kz * concurrently accessed, so no locking is needed.
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_device_dma {
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned long *pagelist;
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned long byte_count;
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_agp_mem {
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_agp_head {
60405de4d8688d96dd05157c28db3ade5c9bc234kz const char *chipset;
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned long mode;
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned long base;
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned long page_mask;
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_dma_handle {
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct drm_sg_mem {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg unsigned long handle;
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef TAILQ_HEAD(drm_map_list, drm_local_map) drm_map_list_t;
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* BEGIN CSTYLED */
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_local_map {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg unsigned long offset; /* Physical address (0 for SAREA) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* Kernel-space: kernel-virtual address */
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* Private data */
60405de4d8688d96dd05157c28db3ade5c9bc234kz int kernel_owned; /* Boolean: 1= initmapped, 0= addmapped */
60405de4d8688d96dd05157c28db3ade5c9bc234kz ddi_acc_handle_t dev_handle; /* The data access handle */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg ddi_umem_cookie_t drm_umem_cookie; /* For SAREA alloc and free */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* END CSTYLED */
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef TAILQ_HEAD(drm_vbl_sig_list, drm_vbl_sig) drm_vbl_sig_list_t;
60405de4d8688d96dd05157c28db3ade5c9bc234kztypedef struct drm_vbl_sig {
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned int sequence;
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* used for clone device */
fca314aae8ba1403ba891f2b0e7a172bcdc055c8cgtypedef TAILQ_HEAD(drm_cminor_list, drm_cminor) drm_cminor_list_t;
fca314aae8ba1403ba891f2b0e7a172bcdc055c8cgtypedef struct drm_cminor {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg/* location of GART table */
d0538f66491267879b7418b21ad78e3dcc2dcc83cgtypedef struct ati_pcigart_info {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg/* DRM device structure */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg void (*reclaim_buffers_locked)(struct drm_device *, drm_file_t *);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg void (*free_filp_priv)(struct drm_device *, drm_file_t *);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int (*kernel_context_switch)(struct drm_device *, int, int);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int (*kernel_context_switch_unlock)(struct drm_device *);
0f7bfed6285b1bd6a65b05cc5f6ab4687ca999e6miao chen - Sun Microsystems - Beijing China int (*irq_preinstall)(struct drm_device *);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg int (*vblank_wait2)(struct drm_device *, unsigned int *);
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* added for intel minimized vblank */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China u32 (*get_vblank_counter)(struct drm_device *dev, int crtc);
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China int (*enable_vblank)(struct drm_device *dev, int crtc);
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China void (*disable_vblank)(struct drm_device *dev, int crtc);
60405de4d8688d96dd05157c28db3ade5c9bc234kz const char *driver_date; /* Date of last major changes. */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * hardware-specific code needs to initialize mutexes which
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * can be used in interrupt context, so they need to know
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * the interrupt priority. Interrupt cookie in drm_device
d0538f66491267879b7418b21ad78e3dcc2dcc83cg * structure is the intr_block field.
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* Locks */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China kmutex_t vbl_lock; /* protects vblank operations */
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* Usage Counters */
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* Performance counters */
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned long counters;
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* Authentication */
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* Linked list of mappable regions. Protected by dev_lock */
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* DMA queues (contexts) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz drm_device_dma_t *dma; /* Optional pointer for DMA support */
60405de4d8688d96dd05157c28db3ade5c9bc234kz /* Context support */
60405de4d8688d96dd05157c28db3ade5c9bc234kz int irq_enabled; /* True if the irq handler is enabled */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* Only used for Radeon */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China wait_queue_head_t vbl_queue; /* vbl wait channel */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* vbl wait channel array */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China wait_queue_head_t *vbl_queues;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* number of VBLANK interrupts */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* (driver must alloc the right number of counters) */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China atomic_t *_vblank_count;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* signal list to send on VBLANK */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China struct drm_vbl_sig_list *vbl_sigs;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* number of signals pending on all crtcs */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China atomic_t vbl_signal_pending;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* number of users of vblank interrupts per crtc */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China atomic_t *vblank_refcount;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* protected by dev->vbl_lock, used for wraparound handling */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China u32 *last_vblank;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* so we don't call enable more than */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China atomic_t *vblank_enabled;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* for compensation of spurious wraparounds */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China u32 *vblank_premodeset;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* Don't wait while crtc is likely disabled */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China int *vblank_suspend;
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China /* size of vblank counter register */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China u32 max_vblank_count;
60405de4d8688d96dd05157c28db3ade5c9bc234kz unsigned int agp_buffer_token;
e92e3a8694f157faf8a9e44096a70ada86c556bfzw /* name Drawable information */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg unsigned int drw_info_length;
31c83a1b44505db718ee9088db1ce16bd9205d86ms * Saving S3 context
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Memory management support (drm_memory.c) */
d0538f66491267879b7418b21ad78e3dcc2dcc83cgvoid drm_core_ioremap(struct drm_local_map *, struct drm_device *);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgvoid drm_core_ioremapfree(struct drm_local_map *, struct drm_device *);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgvoid *drm_pci_alloc(drm_device_t *, size_t, size_t, dma_addr_t, int);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgstruct drm_local_map *drm_core_findmap(struct drm_device *, unsigned long);
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Locking IOCTL support (drm_lock.c) */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China drm_lock_data_t *, unsigned int);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg volatile unsigned int *, unsigned int);
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Buffer management support (drm_bufs.c) */
d0538f66491267879b7418b21ad78e3dcc2dcc83cgunsigned long drm_get_resource_start(drm_device_t *, unsigned int);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgunsigned long drm_get_resource_len(drm_device_t *, unsigned int);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgint drm_initmap(drm_device_t *, unsigned long, unsigned long,
d0538f66491267879b7418b21ad78e3dcc2dcc83cg unsigned int, int, int);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgint drm_addmap(drm_device_t *, unsigned long, unsigned long,
d0538f66491267879b7418b21ad78e3dcc2dcc83cgint drm_order(unsigned long);
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* DMA support (drm_dma.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* IRQ support (drm_irq.c) */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing Chinavoid drm_handle_vblank(struct drm_device *dev, int crtc);
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing Chinau32 drm_vblank_count(struct drm_device *dev, int crtc);
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing Chinaint drm_vblank_get(struct drm_device *dev, int crtc);
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing Chinavoid drm_vblank_put(struct drm_device *dev, int crtc);
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing Chinaint drm_vblank_init(struct drm_device *dev, int num_crtcs);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgvoid drm_locked_tasklet(drm_device_t *, void(*func)(drm_device_t *));
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* AGP/GART support (drm_agpsupport.c) */
d0538f66491267879b7418b21ad78e3dcc2dcc83cgint drm_agp_bind_memory(unsigned int, uint32_t, drm_device_t *);
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* kstat support (drm_kstats.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Scatter Gather Support (drm_scatter.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* ATI PCIGART support (ati_pcigart.c) */
d0538f66491267879b7418b21ad78e3dcc2dcc83cgint drm_ati_pcigart_init(drm_device_t *, drm_ati_pcigart_info *);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgint drm_ati_pcigart_cleanup(drm_device_t *, drm_ati_pcigart_info *);
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Locking IOCTL support (drm_drv.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Misc. IOCTL support (drm_ioctl.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Context IOCTL support (drm_context.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Drawable IOCTL support (drm_drawable.c) */
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing Chinaint drm_update_draw(DRM_IOCTL_ARGS);
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Authentication IOCTL support (drm_auth.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Buffer management support (drm_bufs.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* DMA support (drm_dma.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* IRQ support (drm_irq.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* AGP/GART support (drm_agpsupport.c) */
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* Scatter Gather Support (drm_scatter.c) */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg/* We add function to support DRM_DEBUG,DRM_ERROR,DRM_INFO */
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#define DRM_DEBUG(...)
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#define DRM_INFO(...)
d0538f66491267879b7418b21ad78e3dcc2dcc83cgextern void *drm_supp_register(dev_info_t *, drm_device_t *);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgextern int drm_supp_unregister(void *);
fca314aae8ba1403ba891f2b0e7a172bcdc055c8cgextern int drm_open(drm_device_t *, drm_cminor_t *, int, int, cred_t *);
fca314aae8ba1403ba891f2b0e7a172bcdc055c8cgextern int drm_close(drm_device_t *, int, int, int, cred_t *);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgextern int drm_probe(drm_device_t *, drm_pci_id_list_t *);
d0538f66491267879b7418b21ad78e3dcc2dcc83cgextern int pci_get_info(drm_device_t *, int *, int *, int *);
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing Chinaextern struct drm_drawable_info *drm_get_drawable_info(drm_device_t *,
d02310705313ee2fcefee164a4b26d1fa85e9d22miao chen - Sun Microsystems - Beijing China drm_drawable_t);
60405de4d8688d96dd05157c28db3ade5c9bc234kz/* File Operations helpers (drm_fops.c) */
d0538f66491267879b7418b21ad78e3dcc2dcc83cgextern drm_file_t *drm_find_file_by_proc(drm_device_t *, cred_t *);
fca314aae8ba1403ba891f2b0e7a172bcdc055c8cgextern drm_cminor_t *drm_find_file_by_minor(drm_device_t *, int);
fca314aae8ba1403ba891f2b0e7a172bcdc055c8cgextern int drm_open_helper(drm_device_t *, drm_cminor_t *, int, int,
d0538f66491267879b7418b21ad78e3dcc2dcc83cg#endif /* _DRMP_H */