merge in sgx-util.h from n900 tree
[sgx.git] / pvr / pvr_events.h
index 4f6f2d4..11cfc11 100644 (file)
@@ -23,6 +23,8 @@ struct pvr_event {
 };
 
 #define PVR_EVENT_SYNC 0x01
+#define PVR_EVENT_FLIP 0x02
+#define PVR_EVENT_UPDATE 0x03 /* also uses struct pvr_event_flip */
 
 /*
  * Every buffer used as a render target has a 'PVRSRV_KERNEL_SYNC_INFO'
@@ -43,16 +45,26 @@ 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;
        struct list_head link;
        struct PVRSRV_FILE_PRIVATE_DATA *file_priv;
        void (*destroy)(struct pvr_pending_event *event);
+       u32 write_ops_pending;
 };
 
 struct pvr_pending_sync_event {
@@ -60,10 +72,23 @@ 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;
+       unsigned int dss_event;
+};
+
+enum pvr_sync_wait_seq_type;
+
 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,
+                        enum pvr_sync_wait_seq_type type, 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);