summaryrefslogtreecommitdiff
path: root/nvif
diff options
context:
space:
mode:
Diffstat (limited to 'nvif')
-rw-r--r--nvif/event.h28
-rw-r--r--nvif/unpack.h24
2 files changed, 52 insertions, 0 deletions
diff --git a/nvif/event.h b/nvif/event.h
new file mode 100644
index 000000000..6daced098
--- /dev/null
+++ b/nvif/event.h
@@ -0,0 +1,28 @@
+#ifndef __NVIF_EVENT_H__
+#define __NVIF_EVENT_H__
+
+struct nvif_notify_head_req_v0 {
+ __u8 version;
+ __u8 head;
+};
+
+struct nvif_notify_head_rep_v0 {
+ __u8 version;
+};
+
+struct nvif_notify_conn_req_v0 {
+ __u8 version;
+#define NVIF_NOTIFY_CONN_V0_PLUG 0x01
+#define NVIF_NOTIFY_CONN_V0_UNPLUG 0x02
+#define NVIF_NOTIFY_CONN_V0_IRQ 0x04
+#define NVIF_NOTIFY_CONN_V0_ANY 0x07
+ __u8 mask;
+ __u8 conn;
+};
+
+struct nvif_notify_conn_rep_v0 {
+ __u8 version;
+ __u8 mask;
+};
+
+#endif
diff --git a/nvif/unpack.h b/nvif/unpack.h
new file mode 100644
index 000000000..5933188b4
--- /dev/null
+++ b/nvif/unpack.h
@@ -0,0 +1,24 @@
+#ifndef __NVIF_UNPACK_H__
+#define __NVIF_UNPACK_H__
+
+#define nvif_unvers(d) ({ \
+ ret = (size == sizeof(d)) ? 0 : -ENOSYS; \
+ (ret == 0); \
+})
+
+#define nvif_unpack(d,vl,vh,m) ({ \
+ if ((vl) == 0 || ret == -ENOSYS) { \
+ int _size = sizeof(d); \
+ if (_size <= size && (d).version >= (vl) && \
+ (d).version <= (vh)) { \
+ data = (u8 *)data + _size; \
+ size = size - _size; \
+ ret = ((m) || !size) ? 0 : -E2BIG; \
+ } else { \
+ ret = -ENOSYS; \
+ } \
+ } \
+ (ret == 0); \
+})
+
+#endif