ioctl.h 3.3 KB

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