cl0080.h 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __NVIF_CL0080_H__
  3. #define __NVIF_CL0080_H__
  4. struct nv_device_v0 {
  5. __u8 version;
  6. __u8 pad01[7];
  7. __u64 device; /* device identifier, ~0 for client default */
  8. };
  9. #define NV_DEVICE_V0_INFO 0x00
  10. #define NV_DEVICE_V0_TIME 0x01
  11. struct nv_device_info_v0 {
  12. __u8 version;
  13. #define NV_DEVICE_INFO_V0_IGP 0x00
  14. #define NV_DEVICE_INFO_V0_PCI 0x01
  15. #define NV_DEVICE_INFO_V0_AGP 0x02
  16. #define NV_DEVICE_INFO_V0_PCIE 0x03
  17. #define NV_DEVICE_INFO_V0_SOC 0x04
  18. __u8 platform;
  19. __u16 chipset; /* from NV_PMC_BOOT_0 */
  20. __u8 revision; /* from NV_PMC_BOOT_0 */
  21. #define NV_DEVICE_INFO_V0_TNT 0x01
  22. #define NV_DEVICE_INFO_V0_CELSIUS 0x02
  23. #define NV_DEVICE_INFO_V0_KELVIN 0x03
  24. #define NV_DEVICE_INFO_V0_RANKINE 0x04
  25. #define NV_DEVICE_INFO_V0_CURIE 0x05
  26. #define NV_DEVICE_INFO_V0_TESLA 0x06
  27. #define NV_DEVICE_INFO_V0_FERMI 0x07
  28. #define NV_DEVICE_INFO_V0_KEPLER 0x08
  29. #define NV_DEVICE_INFO_V0_MAXWELL 0x09
  30. #define NV_DEVICE_INFO_V0_PASCAL 0x0a
  31. #define NV_DEVICE_INFO_V0_VOLTA 0x0b
  32. __u8 family;
  33. __u8 pad06[2];
  34. __u64 ram_size;
  35. __u64 ram_user;
  36. char chip[16];
  37. char name[64];
  38. };
  39. struct nv_device_info_v1 {
  40. __u8 version;
  41. __u8 count;
  42. __u8 pad02[6];
  43. struct nv_device_info_v1_data {
  44. __u64 mthd; /* NV_DEVICE_INFO_* (see below). */
  45. __u64 data;
  46. } data[];
  47. };
  48. struct nv_device_time_v0 {
  49. __u8 version;
  50. __u8 pad01[7];
  51. __u64 time;
  52. };
  53. #define NV_DEVICE_INFO_UNIT (0xffffffffULL << 32)
  54. #define NV_DEVICE_INFO(n) ((n) | (0x00000000ULL << 32))
  55. #define NV_DEVICE_FIFO(n) ((n) | (0x00000001ULL << 32))
  56. /* This will be returned for unsupported queries. */
  57. #define NV_DEVICE_INFO_INVALID ~0ULL
  58. /* These return a mask of available engines of particular type. */
  59. #define NV_DEVICE_INFO_ENGINE_SW NV_DEVICE_INFO(0x00000000)
  60. #define NV_DEVICE_INFO_ENGINE_GR NV_DEVICE_INFO(0x00000001)
  61. #define NV_DEVICE_INFO_ENGINE_MPEG NV_DEVICE_INFO(0x00000002)
  62. #define NV_DEVICE_INFO_ENGINE_ME NV_DEVICE_INFO(0x00000003)
  63. #define NV_DEVICE_INFO_ENGINE_CIPHER NV_DEVICE_INFO(0x00000004)
  64. #define NV_DEVICE_INFO_ENGINE_BSP NV_DEVICE_INFO(0x00000005)
  65. #define NV_DEVICE_INFO_ENGINE_VP NV_DEVICE_INFO(0x00000006)
  66. #define NV_DEVICE_INFO_ENGINE_CE NV_DEVICE_INFO(0x00000007)
  67. #define NV_DEVICE_INFO_ENGINE_SEC NV_DEVICE_INFO(0x00000008)
  68. #define NV_DEVICE_INFO_ENGINE_MSVLD NV_DEVICE_INFO(0x00000009)
  69. #define NV_DEVICE_INFO_ENGINE_MSPDEC NV_DEVICE_INFO(0x0000000a)
  70. #define NV_DEVICE_INFO_ENGINE_MSPPP NV_DEVICE_INFO(0x0000000b)
  71. #define NV_DEVICE_INFO_ENGINE_MSENC NV_DEVICE_INFO(0x0000000c)
  72. #define NV_DEVICE_INFO_ENGINE_VIC NV_DEVICE_INFO(0x0000000d)
  73. #define NV_DEVICE_INFO_ENGINE_SEC2 NV_DEVICE_INFO(0x0000000e)
  74. #define NV_DEVICE_INFO_ENGINE_NVDEC NV_DEVICE_INFO(0x0000000f)
  75. #define NV_DEVICE_INFO_ENGINE_NVENC NV_DEVICE_INFO(0x00000010)
  76. /* Returns the number of available channels. */
  77. #define NV_DEVICE_FIFO_CHANNELS NV_DEVICE_FIFO(0x00000000)
  78. /* Returns a mask of available runlists. */
  79. #define NV_DEVICE_FIFO_RUNLISTS NV_DEVICE_FIFO(0x00000001)
  80. /* These return a mask of engines available on a particular runlist. */
  81. #define NV_DEVICE_FIFO_RUNLIST_ENGINES(n) ((n) + NV_DEVICE_FIFO(0x00000010))
  82. #define NV_DEVICE_FIFO_RUNLIST_ENGINES__SIZE 64
  83. #endif