diff options
Diffstat (limited to 'drivers/char/drm/drmP.h')
-rw-r--r-- | drivers/char/drm/drmP.h | 23 |
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 | ||
743 | static __inline__ int drm_core_check_feature(struct drm_device *dev, | 759 | static __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); |
886 | extern int drm_rmdraw(struct inode *inode, struct file *filp, | 902 | extern int drm_rmdraw(struct inode *inode, struct file *filp, |
887 | unsigned int cmd, unsigned long arg); | 903 | unsigned int cmd, unsigned long arg); |
904 | extern int drm_update_drawable_info(struct inode *inode, struct file *filp, | ||
905 | unsigned int cmd, unsigned long arg); | ||
906 | extern 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) */ |
890 | extern int drm_getmagic(struct inode *inode, struct file *filp, | 910 | extern 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); |
950 | extern int drm_vblank_wait(drm_device_t * dev, unsigned int *vbl_seq); | 970 | extern int drm_vblank_wait(drm_device_t * dev, unsigned int *vbl_seq); |
951 | extern void drm_vbl_send_signals(drm_device_t * dev); | 971 | extern void drm_vbl_send_signals(drm_device_t * dev); |
972 | extern 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) */ |
954 | extern drm_agp_head_t *drm_agp_init(drm_device_t * dev); | 975 | extern drm_agp_head_t *drm_agp_init(drm_device_t * dev); |