aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/drm/drmP.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/drm/drmP.h')
-rw-r--r--drivers/char/drm/drmP.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/char/drm/drmP.h b/drivers/char/drm/drmP.h
index 7690a59ace04..0bbb04f2390f 100644
--- a/drivers/char/drm/drmP.h
+++ b/drivers/char/drm/drmP.h
@@ -97,6 +97,7 @@
97#define DRIVER_IRQ_VBL 0x100 97#define DRIVER_IRQ_VBL 0x100
98#define DRIVER_DMA_QUEUE 0x200 98#define DRIVER_DMA_QUEUE 0x200
99#define DRIVER_FB_DMA 0x400 99#define DRIVER_FB_DMA 0x400
100#define DRIVER_IRQ_VBL2 0x800
100 101
101/***********************************************************************/ 102/***********************************************************************/
102/** \name Begin the DRM... */ 103/** \name Begin the DRM... */
@@ -430,7 +431,8 @@ typedef struct drm_device_dma {
430 enum { 431 enum {
431 _DRM_DMA_USE_AGP = 0x01, 432 _DRM_DMA_USE_AGP = 0x01,
432 _DRM_DMA_USE_SG = 0x02, 433 _DRM_DMA_USE_SG = 0x02,
433 _DRM_DMA_USE_FB = 0x04 434 _DRM_DMA_USE_FB = 0x04,
435 _DRM_DMA_USE_PCI_RO = 0x08
434 } flags; 436 } flags;
435 437
436} drm_device_dma_t; 438} drm_device_dma_t;
@@ -562,6 +564,7 @@ struct drm_driver {
562 void (*kernel_context_switch_unlock) (struct drm_device * dev, 564 void (*kernel_context_switch_unlock) (struct drm_device * dev,
563 drm_lock_t *lock); 565 drm_lock_t *lock);
564 int (*vblank_wait) (struct drm_device * dev, unsigned int *sequence); 566 int (*vblank_wait) (struct drm_device * dev, unsigned int *sequence);
567 int (*vblank_wait2) (struct drm_device * dev, unsigned int *sequence);
565 int (*dri_library_name) (struct drm_device *dev, char *buf); 568 int (*dri_library_name) (struct drm_device *dev, char *buf);
566 569
567 /** 570 /**
@@ -708,9 +711,13 @@ typedef struct drm_device {
708 711
709 wait_queue_head_t vbl_queue; /**< VBLANK wait queue */ 712 wait_queue_head_t vbl_queue; /**< VBLANK wait queue */
710 atomic_t vbl_received; 713 atomic_t vbl_received;
714 atomic_t vbl_received2; /**< number of secondary VBLANK interrupts */
711 spinlock_t vbl_lock; 715 spinlock_t vbl_lock;
712 drm_vbl_sig_t vbl_sigs; /**< signal list to send on VBLANK */ 716 drm_vbl_sig_t vbl_sigs; /**< signal list to send on VBLANK */
717 drm_vbl_sig_t vbl_sigs2; /**< signals to send on secondary VBLANK */
713 unsigned int vbl_pending; 718 unsigned int vbl_pending;
719 spinlock_t tasklet_lock; /**< For drm_locked_tasklet */
720 void (*locked_tasklet_func)(struct drm_device *dev);
714 721
715 /*@} */ 722 /*@} */
716 cycles_t ctx_start; 723 cycles_t ctx_start;
@@ -738,6 +745,15 @@ typedef struct drm_device {
738 drm_local_map_t *agp_buffer_map; 745 drm_local_map_t *agp_buffer_map;
739 unsigned int agp_buffer_token; 746 unsigned int agp_buffer_token;
740 drm_head_t primary; /**< primary screen head */ 747 drm_head_t primary; /**< primary screen head */
748
749 /** \name Drawable information */
750 /*@{ */
751 spinlock_t drw_lock;
752 unsigned int drw_bitfield_length;
753 u32 *drw_bitfield;
754 unsigned int drw_info_length;
755 drm_drawable_info_t **drw_info;
756 /*@} */
741} drm_device_t; 757} drm_device_t;
742 758
743static __inline__ int drm_core_check_feature(struct drm_device *dev, 759static __inline__ int drm_core_check_feature(struct drm_device *dev,
@@ -885,6 +901,10 @@ extern int drm_adddraw(struct inode *inode, struct file *filp,
885 unsigned int cmd, unsigned long arg); 901 unsigned int cmd, unsigned long arg);
886extern int drm_rmdraw(struct inode *inode, struct file *filp, 902extern int drm_rmdraw(struct inode *inode, struct file *filp,
887 unsigned int cmd, unsigned long arg); 903 unsigned int cmd, unsigned long arg);
904extern int drm_update_drawable_info(struct inode *inode, struct file *filp,
905 unsigned int cmd, unsigned long arg);
906extern drm_drawable_info_t *drm_get_drawable_info(drm_device_t *dev,
907 drm_drawable_t id);
888 908
889 /* Authentication IOCTL support (drm_auth.h) */ 909 /* Authentication IOCTL support (drm_auth.h) */
890extern int drm_getmagic(struct inode *inode, struct file *filp, 910extern int drm_getmagic(struct inode *inode, struct file *filp,
@@ -949,6 +969,7 @@ extern int drm_wait_vblank(struct inode *inode, struct file *filp,
949 unsigned int cmd, unsigned long arg); 969 unsigned int cmd, unsigned long arg);
950extern int drm_vblank_wait(drm_device_t * dev, unsigned int *vbl_seq); 970extern int drm_vblank_wait(drm_device_t * dev, unsigned int *vbl_seq);
951extern void drm_vbl_send_signals(drm_device_t * dev); 971extern void drm_vbl_send_signals(drm_device_t * dev);
972extern void drm_locked_tasklet(drm_device_t *dev, void(*func)(drm_device_t*));
952 973
953 /* AGP/GART support (drm_agpsupport.h) */ 974 /* AGP/GART support (drm_agpsupport.h) */
954extern drm_agp_head_t *drm_agp_init(drm_device_t * dev); 975extern drm_agp_head_t *drm_agp_init(drm_device_t * dev);