ioctl.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #ifndef __NVIF_IOCTL_H__
  2. #define __NVIF_IOCTL_H__
  3. struct nvif_ioctl_v0 {
  4. __u8 version;
  5. #define NVIF_IOCTL_V0_OWNER_NVIF 0x00
  6. #define NVIF_IOCTL_V0_OWNER_ANY 0xff
  7. __u8 owner;
  8. #define NVIF_IOCTL_V0_NOP 0x00
  9. #define NVIF_IOCTL_V0_SCLASS 0x01
  10. #define NVIF_IOCTL_V0_NEW 0x02
  11. #define NVIF_IOCTL_V0_DEL 0x03
  12. #define NVIF_IOCTL_V0_MTHD 0x04
  13. #define NVIF_IOCTL_V0_RD 0x05
  14. #define NVIF_IOCTL_V0_WR 0x06
  15. #define NVIF_IOCTL_V0_MAP 0x07
  16. #define NVIF_IOCTL_V0_UNMAP 0x08
  17. #define NVIF_IOCTL_V0_NTFY_NEW 0x09
  18. #define NVIF_IOCTL_V0_NTFY_DEL 0x0a
  19. #define NVIF_IOCTL_V0_NTFY_GET 0x0b
  20. #define NVIF_IOCTL_V0_NTFY_PUT 0x0c
  21. __u8 type;
  22. __u8 path_nr;
  23. #define NVIF_IOCTL_V0_ROUTE_NVIF 0x00
  24. #define NVIF_IOCTL_V0_ROUTE_HIDDEN 0xff
  25. __u8 pad04[3];
  26. __u8 route;
  27. __u64 token;
  28. __u32 path[8]; /* in reverse */
  29. __u8 data[]; /* ioctl data (below) */
  30. };
  31. struct nvif_ioctl_nop {
  32. };
  33. struct nvif_ioctl_sclass_v0 {
  34. /* nvif_ioctl ... */
  35. __u8 version;
  36. __u8 count;
  37. __u8 pad02[6];
  38. __u32 oclass[];
  39. };
  40. struct nvif_ioctl_new_v0 {
  41. /* nvif_ioctl ... */
  42. __u8 version;
  43. __u8 pad01[6];
  44. __u8 route;
  45. __u64 token;
  46. __u32 handle;
  47. /* these class numbers are made up by us, and not nvidia-assigned */
  48. #define NVIF_IOCTL_NEW_V0_PERFCTR 0x0000ffff
  49. #define NVIF_IOCTL_NEW_V0_CONTROL 0x0000fffe
  50. __u32 oclass;
  51. __u8 data[]; /* class data (class.h) */
  52. };
  53. struct nvif_ioctl_del {
  54. };
  55. struct nvif_ioctl_rd_v0 {
  56. /* nvif_ioctl ... */
  57. __u8 version;
  58. __u8 size;
  59. __u8 pad02[2];
  60. __u32 data;
  61. __u64 addr;
  62. };
  63. struct nvif_ioctl_wr_v0 {
  64. /* nvif_ioctl ... */
  65. __u8 version;
  66. __u8 size;
  67. __u8 pad02[2];
  68. __u32 data;
  69. __u64 addr;
  70. };
  71. struct nvif_ioctl_map_v0 {
  72. /* nvif_ioctl ... */
  73. __u8 version;
  74. __u8 pad01[3];
  75. __u32 length;
  76. __u64 handle;
  77. };
  78. struct nvif_ioctl_unmap {
  79. };
  80. struct nvif_ioctl_ntfy_new_v0 {
  81. /* nvif_ioctl ... */
  82. __u8 version;
  83. __u8 event;
  84. __u8 index;
  85. __u8 pad03[5];
  86. __u8 data[]; /* event request data (event.h) */
  87. };
  88. struct nvif_ioctl_ntfy_del_v0 {
  89. /* nvif_ioctl ... */
  90. __u8 version;
  91. __u8 index;
  92. __u8 pad02[6];
  93. };
  94. struct nvif_ioctl_ntfy_get_v0 {
  95. /* nvif_ioctl ... */
  96. __u8 version;
  97. __u8 index;
  98. __u8 pad02[6];
  99. };
  100. struct nvif_ioctl_ntfy_put_v0 {
  101. /* nvif_ioctl ... */
  102. __u8 version;
  103. __u8 index;
  104. __u8 pad02[6];
  105. };
  106. struct nvif_ioctl_mthd_v0 {
  107. /* nvif_ioctl ... */
  108. __u8 version;
  109. __u8 method;
  110. __u8 pad02[6];
  111. __u8 data[]; /* method data (class.h) */
  112. };
  113. #endif