class.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672
  1. #ifndef __NVIF_CLASS_H__
  2. #define __NVIF_CLASS_H__
  3. /*******************************************************************************
  4. * class identifiers
  5. ******************************************************************************/
  6. /* the below match nvidia-assigned (either in hw, or sw) class numbers */
  7. #define NV_DEVICE 0x00000080
  8. #define NV_DMA_FROM_MEMORY 0x00000002
  9. #define NV_DMA_TO_MEMORY 0x00000003
  10. #define NV_DMA_IN_MEMORY 0x0000003d
  11. #define FERMI_TWOD_A 0x0000902d
  12. #define FERMI_MEMORY_TO_MEMORY_FORMAT_A 0x00009039
  13. #define KEPLER_INLINE_TO_MEMORY_A 0x0000a040
  14. #define KEPLER_INLINE_TO_MEMORY_B 0x0000a140
  15. #define NV04_DISP 0x00000046
  16. #define NV03_CHANNEL_DMA 0x0000006b
  17. #define NV10_CHANNEL_DMA 0x0000006e
  18. #define NV17_CHANNEL_DMA 0x0000176e
  19. #define NV40_CHANNEL_DMA 0x0000406e
  20. #define NV50_CHANNEL_DMA 0x0000506e
  21. #define G82_CHANNEL_DMA 0x0000826e
  22. #define NV50_CHANNEL_GPFIFO 0x0000506f
  23. #define G82_CHANNEL_GPFIFO 0x0000826f
  24. #define FERMI_CHANNEL_GPFIFO 0x0000906f
  25. #define KEPLER_CHANNEL_GPFIFO_A 0x0000a06f
  26. #define MAXWELL_CHANNEL_GPFIFO_A 0x0000b06f
  27. #define NV50_DISP 0x00005070
  28. #define G82_DISP 0x00008270
  29. #define GT200_DISP 0x00008370
  30. #define GT214_DISP 0x00008570
  31. #define GT206_DISP 0x00008870
  32. #define GF110_DISP 0x00009070
  33. #define GK104_DISP 0x00009170
  34. #define GK110_DISP 0x00009270
  35. #define GM107_DISP 0x00009470
  36. #define GM204_DISP 0x00009570
  37. #define NV31_MPEG 0x00003174
  38. #define G82_MPEG 0x00008274
  39. #define NV74_VP2 0x00007476
  40. #define NV50_DISP_CURSOR 0x0000507a
  41. #define G82_DISP_CURSOR 0x0000827a
  42. #define GT214_DISP_CURSOR 0x0000857a
  43. #define GF110_DISP_CURSOR 0x0000907a
  44. #define GK104_DISP_CURSOR 0x0000917a
  45. #define NV50_DISP_OVERLAY 0x0000507b
  46. #define G82_DISP_OVERLAY 0x0000827b
  47. #define GT214_DISP_OVERLAY 0x0000857b
  48. #define GF110_DISP_OVERLAY 0x0000907b
  49. #define GK104_DISP_OVERLAY 0x0000917b
  50. #define NV50_DISP_BASE_CHANNEL_DMA 0x0000507c
  51. #define G82_DISP_BASE_CHANNEL_DMA 0x0000827c
  52. #define GT200_DISP_BASE_CHANNEL_DMA 0x0000837c
  53. #define GT214_DISP_BASE_CHANNEL_DMA 0x0000857c
  54. #define GF110_DISP_BASE_CHANNEL_DMA 0x0000907c
  55. #define GK104_DISP_BASE_CHANNEL_DMA 0x0000917c
  56. #define GK110_DISP_BASE_CHANNEL_DMA 0x0000927c
  57. #define NV50_DISP_CORE_CHANNEL_DMA 0x0000507d
  58. #define G82_DISP_CORE_CHANNEL_DMA 0x0000827d
  59. #define GT200_DISP_CORE_CHANNEL_DMA 0x0000837d
  60. #define GT214_DISP_CORE_CHANNEL_DMA 0x0000857d
  61. #define GT206_DISP_CORE_CHANNEL_DMA 0x0000887d
  62. #define GF110_DISP_CORE_CHANNEL_DMA 0x0000907d
  63. #define GK104_DISP_CORE_CHANNEL_DMA 0x0000917d
  64. #define GK110_DISP_CORE_CHANNEL_DMA 0x0000927d
  65. #define GM107_DISP_CORE_CHANNEL_DMA 0x0000947d
  66. #define GM204_DISP_CORE_CHANNEL_DMA 0x0000957d
  67. #define NV50_DISP_OVERLAY_CHANNEL_DMA 0x0000507e
  68. #define G82_DISP_OVERLAY_CHANNEL_DMA 0x0000827e
  69. #define GT200_DISP_OVERLAY_CHANNEL_DMA 0x0000837e
  70. #define GT214_DISP_OVERLAY_CHANNEL_DMA 0x0000857e
  71. #define GF110_DISP_OVERLAY_CONTROL_DMA 0x0000907e
  72. #define GK104_DISP_OVERLAY_CONTROL_DMA 0x0000917e
  73. #define FERMI_A 0x00009097
  74. #define FERMI_B 0x00009197
  75. #define FERMI_C 0x00009297
  76. #define KEPLER_A 0x0000a097
  77. #define KEPLER_B 0x0000a197
  78. #define KEPLER_C 0x0000a297
  79. #define MAXWELL_A 0x0000b097
  80. #define MAXWELL_B 0x0000b197
  81. #define NV74_BSP 0x000074b0
  82. #define GT212_MSVLD 0x000085b1
  83. #define IGT21A_MSVLD 0x000086b1
  84. #define G98_MSVLD 0x000088b1
  85. #define GF100_MSVLD 0x000090b1
  86. #define GK104_MSVLD 0x000095b1
  87. #define GT212_MSPDEC 0x000085b2
  88. #define G98_MSPDEC 0x000088b2
  89. #define GF100_MSPDEC 0x000090b2
  90. #define GK104_MSPDEC 0x000095b2
  91. #define GT212_MSPPP 0x000085b3
  92. #define G98_MSPPP 0x000088b3
  93. #define GF100_MSPPP 0x000090b3
  94. #define G98_SEC 0x000088b4
  95. #define GT212_DMA 0x000085b5
  96. #define FERMI_DMA 0x000090b5
  97. #define KEPLER_DMA_COPY_A 0x0000a0b5
  98. #define MAXWELL_DMA_COPY_A 0x0000b0b5
  99. #define FERMI_DECOMPRESS 0x000090b8
  100. #define FERMI_COMPUTE_A 0x000090c0
  101. #define FERMI_COMPUTE_B 0x000091c0
  102. #define KEPLER_COMPUTE_A 0x0000a0c0
  103. #define KEPLER_COMPUTE_B 0x0000a1c0
  104. #define MAXWELL_COMPUTE_A 0x0000b0c0
  105. #define MAXWELL_COMPUTE_B 0x0000b1c0
  106. #define NV74_CIPHER 0x000074c1
  107. /*******************************************************************************
  108. * client
  109. ******************************************************************************/
  110. #define NV_CLIENT_DEVLIST 0x00
  111. struct nv_client_devlist_v0 {
  112. __u8 version;
  113. __u8 count;
  114. __u8 pad02[6];
  115. __u64 device[];
  116. };
  117. /*******************************************************************************
  118. * device
  119. ******************************************************************************/
  120. struct nv_device_v0 {
  121. __u8 version;
  122. __u8 pad01[7];
  123. __u64 device; /* device identifier, ~0 for client default */
  124. };
  125. #define NV_DEVICE_V0_INFO 0x00
  126. #define NV_DEVICE_V0_TIME 0x01
  127. struct nv_device_info_v0 {
  128. __u8 version;
  129. #define NV_DEVICE_INFO_V0_IGP 0x00
  130. #define NV_DEVICE_INFO_V0_PCI 0x01
  131. #define NV_DEVICE_INFO_V0_AGP 0x02
  132. #define NV_DEVICE_INFO_V0_PCIE 0x03
  133. #define NV_DEVICE_INFO_V0_SOC 0x04
  134. __u8 platform;
  135. __u16 chipset; /* from NV_PMC_BOOT_0 */
  136. __u8 revision; /* from NV_PMC_BOOT_0 */
  137. #define NV_DEVICE_INFO_V0_TNT 0x01
  138. #define NV_DEVICE_INFO_V0_CELSIUS 0x02
  139. #define NV_DEVICE_INFO_V0_KELVIN 0x03
  140. #define NV_DEVICE_INFO_V0_RANKINE 0x04
  141. #define NV_DEVICE_INFO_V0_CURIE 0x05
  142. #define NV_DEVICE_INFO_V0_TESLA 0x06
  143. #define NV_DEVICE_INFO_V0_FERMI 0x07
  144. #define NV_DEVICE_INFO_V0_KEPLER 0x08
  145. #define NV_DEVICE_INFO_V0_MAXWELL 0x09
  146. __u8 family;
  147. __u8 pad06[2];
  148. __u64 ram_size;
  149. __u64 ram_user;
  150. char chip[16];
  151. char name[64];
  152. };
  153. struct nv_device_time_v0 {
  154. __u8 version;
  155. __u8 pad01[7];
  156. __u64 time;
  157. };
  158. /*******************************************************************************
  159. * context dma
  160. ******************************************************************************/
  161. struct nv_dma_v0 {
  162. __u8 version;
  163. #define NV_DMA_V0_TARGET_VM 0x00
  164. #define NV_DMA_V0_TARGET_VRAM 0x01
  165. #define NV_DMA_V0_TARGET_PCI 0x02
  166. #define NV_DMA_V0_TARGET_PCI_US 0x03
  167. #define NV_DMA_V0_TARGET_AGP 0x04
  168. __u8 target;
  169. #define NV_DMA_V0_ACCESS_VM 0x00
  170. #define NV_DMA_V0_ACCESS_RD 0x01
  171. #define NV_DMA_V0_ACCESS_WR 0x02
  172. #define NV_DMA_V0_ACCESS_RDWR (NV_DMA_V0_ACCESS_RD | NV_DMA_V0_ACCESS_WR)
  173. __u8 access;
  174. __u8 pad03[5];
  175. __u64 start;
  176. __u64 limit;
  177. /* ... chipset-specific class data */
  178. };
  179. struct nv50_dma_v0 {
  180. __u8 version;
  181. #define NV50_DMA_V0_PRIV_VM 0x00
  182. #define NV50_DMA_V0_PRIV_US 0x01
  183. #define NV50_DMA_V0_PRIV__S 0x02
  184. __u8 priv;
  185. #define NV50_DMA_V0_PART_VM 0x00
  186. #define NV50_DMA_V0_PART_256 0x01
  187. #define NV50_DMA_V0_PART_1KB 0x02
  188. __u8 part;
  189. #define NV50_DMA_V0_COMP_NONE 0x00
  190. #define NV50_DMA_V0_COMP_1 0x01
  191. #define NV50_DMA_V0_COMP_2 0x02
  192. #define NV50_DMA_V0_COMP_VM 0x03
  193. __u8 comp;
  194. #define NV50_DMA_V0_KIND_PITCH 0x00
  195. #define NV50_DMA_V0_KIND_VM 0x7f
  196. __u8 kind;
  197. __u8 pad05[3];
  198. };
  199. struct gf100_dma_v0 {
  200. __u8 version;
  201. #define GF100_DMA_V0_PRIV_VM 0x00
  202. #define GF100_DMA_V0_PRIV_US 0x01
  203. #define GF100_DMA_V0_PRIV__S 0x02
  204. __u8 priv;
  205. #define GF100_DMA_V0_KIND_PITCH 0x00
  206. #define GF100_DMA_V0_KIND_VM 0xff
  207. __u8 kind;
  208. __u8 pad03[5];
  209. };
  210. struct gf119_dma_v0 {
  211. __u8 version;
  212. #define GF119_DMA_V0_PAGE_LP 0x00
  213. #define GF119_DMA_V0_PAGE_SP 0x01
  214. __u8 page;
  215. #define GF119_DMA_V0_KIND_PITCH 0x00
  216. #define GF119_DMA_V0_KIND_VM 0xff
  217. __u8 kind;
  218. __u8 pad03[5];
  219. };
  220. /*******************************************************************************
  221. * perfmon
  222. ******************************************************************************/
  223. #define NVIF_PERFMON_V0_QUERY_DOMAIN 0x00
  224. #define NVIF_PERFMON_V0_QUERY_SIGNAL 0x01
  225. #define NVIF_PERFMON_V0_QUERY_SOURCE 0x02
  226. struct nvif_perfmon_query_domain_v0 {
  227. __u8 version;
  228. __u8 id;
  229. __u8 counter_nr;
  230. __u8 iter;
  231. __u16 signal_nr;
  232. __u8 pad05[2];
  233. char name[64];
  234. };
  235. struct nvif_perfmon_query_signal_v0 {
  236. __u8 version;
  237. __u8 domain;
  238. __u16 iter;
  239. __u8 signal;
  240. __u8 source_nr;
  241. __u8 pad05[2];
  242. char name[64];
  243. };
  244. struct nvif_perfmon_query_source_v0 {
  245. __u8 version;
  246. __u8 domain;
  247. __u8 signal;
  248. __u8 iter;
  249. __u8 pad04[4];
  250. __u32 source;
  251. __u32 mask;
  252. char name[64];
  253. };
  254. /*******************************************************************************
  255. * perfdom
  256. ******************************************************************************/
  257. struct nvif_perfdom_v0 {
  258. __u8 version;
  259. __u8 domain;
  260. __u8 mode;
  261. __u8 pad03[1];
  262. struct {
  263. __u8 signal[4];
  264. __u64 source[4][8];
  265. __u16 logic_op;
  266. } ctr[4];
  267. };
  268. #define NVIF_PERFDOM_V0_INIT 0x00
  269. #define NVIF_PERFDOM_V0_SAMPLE 0x01
  270. #define NVIF_PERFDOM_V0_READ 0x02
  271. struct nvif_perfdom_init {
  272. };
  273. struct nvif_perfdom_sample {
  274. };
  275. struct nvif_perfdom_read_v0 {
  276. __u8 version;
  277. __u8 pad01[7];
  278. __u32 ctr[4];
  279. __u32 clk;
  280. __u8 pad04[4];
  281. };
  282. /*******************************************************************************
  283. * device control
  284. ******************************************************************************/
  285. #define NVIF_CONTROL_PSTATE_INFO 0x00
  286. #define NVIF_CONTROL_PSTATE_ATTR 0x01
  287. #define NVIF_CONTROL_PSTATE_USER 0x02
  288. struct nvif_control_pstate_info_v0 {
  289. __u8 version;
  290. __u8 count; /* out: number of power states */
  291. #define NVIF_CONTROL_PSTATE_INFO_V0_USTATE_DISABLE (-1)
  292. #define NVIF_CONTROL_PSTATE_INFO_V0_USTATE_PERFMON (-2)
  293. __s8 ustate_ac; /* out: target pstate index */
  294. __s8 ustate_dc; /* out: target pstate index */
  295. __s8 pwrsrc; /* out: current power source */
  296. #define NVIF_CONTROL_PSTATE_INFO_V0_PSTATE_UNKNOWN (-1)
  297. #define NVIF_CONTROL_PSTATE_INFO_V0_PSTATE_PERFMON (-2)
  298. __s8 pstate; /* out: current pstate index */
  299. __u8 pad06[2];
  300. };
  301. struct nvif_control_pstate_attr_v0 {
  302. __u8 version;
  303. #define NVIF_CONTROL_PSTATE_ATTR_V0_STATE_CURRENT (-1)
  304. __s8 state; /* in: index of pstate to query
  305. * out: pstate identifier
  306. */
  307. __u8 index; /* in: index of attribute to query
  308. * out: index of next attribute, or 0 if no more
  309. */
  310. __u8 pad03[5];
  311. __u32 min;
  312. __u32 max;
  313. char name[32];
  314. char unit[16];
  315. };
  316. struct nvif_control_pstate_user_v0 {
  317. __u8 version;
  318. #define NVIF_CONTROL_PSTATE_USER_V0_STATE_UNKNOWN (-1)
  319. #define NVIF_CONTROL_PSTATE_USER_V0_STATE_PERFMON (-2)
  320. __s8 ustate; /* in: pstate identifier */
  321. __s8 pwrsrc; /* in: target power source */
  322. __u8 pad03[5];
  323. };
  324. /*******************************************************************************
  325. * DMA FIFO channels
  326. ******************************************************************************/
  327. struct nv03_channel_dma_v0 {
  328. __u8 version;
  329. __u8 chid;
  330. __u8 pad02[2];
  331. __u32 offset;
  332. __u64 pushbuf;
  333. };
  334. struct nv50_channel_dma_v0 {
  335. __u8 version;
  336. __u8 chid;
  337. __u8 pad02[6];
  338. __u64 vm;
  339. __u64 pushbuf;
  340. __u64 offset;
  341. };
  342. #define G82_CHANNEL_DMA_V0_NTFY_UEVENT 0x00
  343. /*******************************************************************************
  344. * GPFIFO channels
  345. ******************************************************************************/
  346. struct nv50_channel_gpfifo_v0 {
  347. __u8 version;
  348. __u8 chid;
  349. __u8 pad02[2];
  350. __u32 ilength;
  351. __u64 ioffset;
  352. __u64 pushbuf;
  353. __u64 vm;
  354. };
  355. struct fermi_channel_gpfifo_v0 {
  356. __u8 version;
  357. __u8 chid;
  358. __u8 pad02[2];
  359. __u32 ilength;
  360. __u64 ioffset;
  361. __u64 vm;
  362. };
  363. struct kepler_channel_gpfifo_a_v0 {
  364. __u8 version;
  365. #define KEPLER_CHANNEL_GPFIFO_A_V0_ENGINE_GR 0x01
  366. #define KEPLER_CHANNEL_GPFIFO_A_V0_ENGINE_MSPDEC 0x02
  367. #define KEPLER_CHANNEL_GPFIFO_A_V0_ENGINE_MSPPP 0x04
  368. #define KEPLER_CHANNEL_GPFIFO_A_V0_ENGINE_MSVLD 0x08
  369. #define KEPLER_CHANNEL_GPFIFO_A_V0_ENGINE_CE0 0x10
  370. #define KEPLER_CHANNEL_GPFIFO_A_V0_ENGINE_CE1 0x20
  371. #define KEPLER_CHANNEL_GPFIFO_A_V0_ENGINE_ENC 0x40
  372. __u8 engine;
  373. __u16 chid;
  374. __u32 ilength;
  375. __u64 ioffset;
  376. __u64 vm;
  377. };
  378. /*******************************************************************************
  379. * legacy display
  380. ******************************************************************************/
  381. #define NV04_DISP_NTFY_VBLANK 0x00
  382. #define NV04_DISP_NTFY_CONN 0x01
  383. struct nv04_disp_mthd_v0 {
  384. __u8 version;
  385. #define NV04_DISP_SCANOUTPOS 0x00
  386. __u8 method;
  387. __u8 head;
  388. __u8 pad03[5];
  389. };
  390. struct nv04_disp_scanoutpos_v0 {
  391. __u8 version;
  392. __u8 pad01[7];
  393. __s64 time[2];
  394. __u16 vblanks;
  395. __u16 vblanke;
  396. __u16 vtotal;
  397. __u16 vline;
  398. __u16 hblanks;
  399. __u16 hblanke;
  400. __u16 htotal;
  401. __u16 hline;
  402. };
  403. /*******************************************************************************
  404. * display
  405. ******************************************************************************/
  406. #define NV50_DISP_MTHD 0x00
  407. struct nv50_disp_mthd_v0 {
  408. __u8 version;
  409. #define NV50_DISP_SCANOUTPOS 0x00
  410. __u8 method;
  411. __u8 head;
  412. __u8 pad03[5];
  413. };
  414. struct nv50_disp_mthd_v1 {
  415. __u8 version;
  416. #define NV50_DISP_MTHD_V1_DAC_PWR 0x10
  417. #define NV50_DISP_MTHD_V1_DAC_LOAD 0x11
  418. #define NV50_DISP_MTHD_V1_SOR_PWR 0x20
  419. #define NV50_DISP_MTHD_V1_SOR_HDA_ELD 0x21
  420. #define NV50_DISP_MTHD_V1_SOR_HDMI_PWR 0x22
  421. #define NV50_DISP_MTHD_V1_SOR_LVDS_SCRIPT 0x23
  422. #define NV50_DISP_MTHD_V1_SOR_DP_PWR 0x24
  423. #define NV50_DISP_MTHD_V1_PIOR_PWR 0x30
  424. __u8 method;
  425. __u16 hasht;
  426. __u16 hashm;
  427. __u8 pad06[2];
  428. };
  429. struct nv50_disp_dac_pwr_v0 {
  430. __u8 version;
  431. __u8 state;
  432. __u8 data;
  433. __u8 vsync;
  434. __u8 hsync;
  435. __u8 pad05[3];
  436. };
  437. struct nv50_disp_dac_load_v0 {
  438. __u8 version;
  439. __u8 load;
  440. __u8 pad02[2];
  441. __u32 data;
  442. };
  443. struct nv50_disp_sor_pwr_v0 {
  444. __u8 version;
  445. __u8 state;
  446. __u8 pad02[6];
  447. };
  448. struct nv50_disp_sor_hda_eld_v0 {
  449. __u8 version;
  450. __u8 pad01[7];
  451. __u8 data[];
  452. };
  453. struct nv50_disp_sor_hdmi_pwr_v0 {
  454. __u8 version;
  455. __u8 state;
  456. __u8 max_ac_packet;
  457. __u8 rekey;
  458. __u8 pad04[4];
  459. };
  460. struct nv50_disp_sor_lvds_script_v0 {
  461. __u8 version;
  462. __u8 pad01[1];
  463. __u16 script;
  464. __u8 pad04[4];
  465. };
  466. struct nv50_disp_sor_dp_pwr_v0 {
  467. __u8 version;
  468. __u8 state;
  469. __u8 pad02[6];
  470. };
  471. struct nv50_disp_pior_pwr_v0 {
  472. __u8 version;
  473. __u8 state;
  474. __u8 type;
  475. __u8 pad03[5];
  476. };
  477. /* core */
  478. struct nv50_disp_core_channel_dma_v0 {
  479. __u8 version;
  480. __u8 pad01[7];
  481. __u64 pushbuf;
  482. };
  483. #define NV50_DISP_CORE_CHANNEL_DMA_V0_NTFY_UEVENT 0x00
  484. /* cursor immediate */
  485. struct nv50_disp_cursor_v0 {
  486. __u8 version;
  487. __u8 head;
  488. __u8 pad02[6];
  489. };
  490. #define NV50_DISP_CURSOR_V0_NTFY_UEVENT 0x00
  491. /* base */
  492. struct nv50_disp_base_channel_dma_v0 {
  493. __u8 version;
  494. __u8 head;
  495. __u8 pad02[6];
  496. __u64 pushbuf;
  497. };
  498. #define NV50_DISP_BASE_CHANNEL_DMA_V0_NTFY_UEVENT 0x00
  499. /* overlay */
  500. struct nv50_disp_overlay_channel_dma_v0 {
  501. __u8 version;
  502. __u8 head;
  503. __u8 pad02[6];
  504. __u64 pushbuf;
  505. };
  506. #define NV50_DISP_OVERLAY_CHANNEL_DMA_V0_NTFY_UEVENT 0x00
  507. /* overlay immediate */
  508. struct nv50_disp_overlay_v0 {
  509. __u8 version;
  510. __u8 head;
  511. __u8 pad02[6];
  512. };
  513. #define NV50_DISP_OVERLAY_V0_NTFY_UEVENT 0x00
  514. /*******************************************************************************
  515. * software
  516. ******************************************************************************/
  517. #define NVSW_NTFY_UEVENT 0x00
  518. #define NV04_NVSW_GET_REF 0x00
  519. struct nv04_nvsw_get_ref_v0 {
  520. __u8 version;
  521. __u8 pad01[3];
  522. __u32 ref;
  523. };
  524. /*******************************************************************************
  525. * fermi
  526. ******************************************************************************/
  527. #define FERMI_A_ZBC_COLOR 0x00
  528. #define FERMI_A_ZBC_DEPTH 0x01
  529. struct fermi_a_zbc_color_v0 {
  530. __u8 version;
  531. #define FERMI_A_ZBC_COLOR_V0_FMT_ZERO 0x01
  532. #define FERMI_A_ZBC_COLOR_V0_FMT_UNORM_ONE 0x02
  533. #define FERMI_A_ZBC_COLOR_V0_FMT_RF32_GF32_BF32_AF32 0x04
  534. #define FERMI_A_ZBC_COLOR_V0_FMT_R16_G16_B16_A16 0x08
  535. #define FERMI_A_ZBC_COLOR_V0_FMT_RN16_GN16_BN16_AN16 0x0c
  536. #define FERMI_A_ZBC_COLOR_V0_FMT_RS16_GS16_BS16_AS16 0x10
  537. #define FERMI_A_ZBC_COLOR_V0_FMT_RU16_GU16_BU16_AU16 0x14
  538. #define FERMI_A_ZBC_COLOR_V0_FMT_RF16_GF16_BF16_AF16 0x16
  539. #define FERMI_A_ZBC_COLOR_V0_FMT_A8R8G8B8 0x18
  540. #define FERMI_A_ZBC_COLOR_V0_FMT_A8RL8GL8BL8 0x1c
  541. #define FERMI_A_ZBC_COLOR_V0_FMT_A2B10G10R10 0x20
  542. #define FERMI_A_ZBC_COLOR_V0_FMT_AU2BU10GU10RU10 0x24
  543. #define FERMI_A_ZBC_COLOR_V0_FMT_A8B8G8R8 0x28
  544. #define FERMI_A_ZBC_COLOR_V0_FMT_A8BL8GL8RL8 0x2c
  545. #define FERMI_A_ZBC_COLOR_V0_FMT_AN8BN8GN8RN8 0x30
  546. #define FERMI_A_ZBC_COLOR_V0_FMT_AS8BS8GS8RS8 0x34
  547. #define FERMI_A_ZBC_COLOR_V0_FMT_AU8BU8GU8RU8 0x38
  548. #define FERMI_A_ZBC_COLOR_V0_FMT_A2R10G10B10 0x3c
  549. #define FERMI_A_ZBC_COLOR_V0_FMT_BF10GF11RF11 0x40
  550. __u8 format;
  551. __u8 index;
  552. __u8 pad03[5];
  553. __u32 ds[4];
  554. __u32 l2[4];
  555. };
  556. struct fermi_a_zbc_depth_v0 {
  557. __u8 version;
  558. #define FERMI_A_ZBC_DEPTH_V0_FMT_FP32 0x01
  559. __u8 format;
  560. __u8 index;
  561. __u8 pad03[5];
  562. __u32 ds;
  563. __u32 l2;
  564. };
  565. #endif