gpu: pvr: fix locking on the HW recovery reset error path
[sgx.git] / pvr / pvr_events.h
index 4f6f2d4..5183ed3 100644 (file)
@@ -23,6 +23,7 @@ struct pvr_event {
 };
 
 #define PVR_EVENT_SYNC 0x01
+#define PVR_EVENT_FLIP 0x02
 
 /*
  * Every buffer used as a render target has a 'PVRSRV_KERNEL_SYNC_INFO'
@@ -43,10 +44,19 @@ struct pvr_event {
 struct pvr_event_sync {
        struct pvr_event base;
        const struct PVRSRV_KERNEL_SYNC_INFO *sync_info;
+       __u64 user_data;
        __u32 tv_sec;
        __u32 tv_usec;
 };
 
+struct pvr_event_flip {
+       struct pvr_event base;
+       __u64 user_data;
+       __u32 tv_sec;
+       __u32 tv_usec;
+       __u32 overlay;
+};
+
 /* Event queued up for userspace to read */
 struct pvr_pending_event {
        struct pvr_event *event;
@@ -60,10 +70,19 @@ struct pvr_pending_sync_event {
        struct pvr_event_sync event;
 };
 
+struct pvr_pending_flip_event {
+       struct pvr_pending_event base;
+       struct pvr_event_flip event;
+};
+
 void pvr_init_events(void);
+void pvr_exit_events(void);
 
 int pvr_sync_event_req(struct PVRSRV_FILE_PRIVATE_DATA *priv,
-                       const struct PVRSRV_KERNEL_SYNC_INFO *sync_info);
+                       const struct PVRSRV_KERNEL_SYNC_INFO *sync_info,
+                       u64 user_data);
+int pvr_flip_event_req(struct PVRSRV_FILE_PRIVATE_DATA *priv,
+                        unsigned int overlay, u64 user_data);
 ssize_t pvr_read(struct file *filp, char __user *buf, size_t count,
                loff_t *off);
 unsigned int pvr_poll(struct file *filp, struct poll_table_struct *wait);