gma.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. /*
  2. * From Coreboot file of the same name
  3. *
  4. * Copyright (C) 2012 Chromium OS Authors
  5. *
  6. * SPDX-License-Identifier: GPL-2.0
  7. */
  8. /* mailbox 0: header */
  9. __packed struct opregion_header {
  10. u8 signature[16];
  11. u32 size;
  12. u32 version;
  13. u8 sbios_version[32];
  14. u8 vbios_version[16];
  15. u8 driver_version[16];
  16. u32 mailboxes;
  17. u8 reserved[164];
  18. };
  19. #define IGD_OPREGION_SIGNATURE "IntelGraphicsMem"
  20. #define IGD_OPREGION_VERSION 2
  21. #define IGD_MBOX1 (1 << 0)
  22. #define IGD_MBOX2 (1 << 1)
  23. #define IGD_MBOX3 (1 << 2)
  24. #define IGD_MBOX4 (1 << 3)
  25. #define IGD_MBOX5 (1 << 4)
  26. #define MAILBOXES_MOBILE (IGD_MBOX1 | IGD_MBOX2 | IGD_MBOX3 | \
  27. IGD_MBOX4 | IGD_MBOX5)
  28. #define MAILBOXES_DESKTOP (IGD_MBOX2 | IGD_MBOX4)
  29. #define SBIOS_VERSION_SIZE 32
  30. /* mailbox 1: public acpi methods */
  31. __packed struct opregion_mailbox1 {
  32. u32 drdy;
  33. u32 csts;
  34. u32 cevt;
  35. u8 reserved1[20];
  36. u32 didl[8];
  37. u32 cpdl[8];
  38. u32 cadl[8];
  39. u32 nadl[8];
  40. u32 aslp;
  41. u32 tidx;
  42. u32 chpd;
  43. u32 clid;
  44. u32 cdck;
  45. u32 sxsw;
  46. u32 evts;
  47. u32 cnot;
  48. u32 nrdy;
  49. u8 reserved2[60];
  50. };
  51. /* mailbox 2: software sci interface */
  52. __packed struct opregion_mailbox2 {
  53. u32 scic;
  54. u32 parm;
  55. u32 dslp;
  56. u8 reserved[244];
  57. };
  58. /* mailbox 3: power conservation */
  59. __packed struct opregion_mailbox3 {
  60. u32 ardy;
  61. u32 aslc;
  62. u32 tche;
  63. u32 alsi;
  64. u32 bclp;
  65. u32 pfit;
  66. u32 cblv;
  67. u16 bclm[20];
  68. u32 cpfm;
  69. u32 epfm;
  70. u8 plut[74];
  71. u32 pfmb;
  72. u32 ccdv;
  73. u32 pcft;
  74. u8 reserved[94];
  75. };
  76. #define IGD_BACKLIGHT_BRIGHTNESS 0xff
  77. #define IGD_INITIAL_BRIGHTNESS 0x64
  78. #define IGD_FIELD_VALID (1 << 31)
  79. #define IGD_WORD_FIELD_VALID (1 << 15)
  80. #define IGD_PFIT_STRETCH 6
  81. /* mailbox 4: vbt */
  82. __packed struct {
  83. u8 gvd1[7168];
  84. } opregion_vbt_t;
  85. /* IGD OpRegion */
  86. __packed struct igd_opregion {
  87. opregion_header_t header;
  88. opregion_mailbox1_t mailbox1;
  89. opregion_mailbox2_t mailbox2;
  90. opregion_mailbox3_t mailbox3;
  91. opregion_vbt_t vbt;
  92. };
  93. /* Intel Video BIOS (Option ROM) */
  94. __packed struct optionrom_header {
  95. u16 signature;
  96. u8 size;
  97. u8 reserved[21];
  98. u16 pcir_offset;
  99. u16 vbt_offset;
  100. };
  101. #define OPROM_SIGNATURE 0xaa55
  102. __packed struct optionrom_pcir {
  103. u32 signature;
  104. u16 vendor;
  105. u16 device;
  106. u16 reserved1;
  107. u16 length;
  108. u8 revision;
  109. u8 classcode[3];
  110. u16 imagelength;
  111. u16 coderevision;
  112. u8 codetype;
  113. u8 indicator;
  114. u16 reserved2;
  115. };
  116. __packed struct optionrom_vbt {
  117. u8 hdr_signature[20];
  118. u16 hdr_version;
  119. u16 hdr_size;
  120. u16 hdr_vbt_size;
  121. u8 hdr_vbt_checksum;
  122. u8 hdr_reserved;
  123. u32 hdr_vbt_datablock;
  124. u32 hdr_aim[4];
  125. u8 datahdr_signature[16];
  126. u16 datahdr_version;
  127. u16 datahdr_size;
  128. u16 datahdr_datablocksize;
  129. u8 coreblock_id;
  130. u16 coreblock_size;
  131. u16 coreblock_biossize;
  132. u8 coreblock_biostype;
  133. u8 coreblock_releasestatus;
  134. u8 coreblock_hwsupported;
  135. u8 coreblock_integratedhw;
  136. u8 coreblock_biosbuild[4];
  137. u8 coreblock_biossignon[155];
  138. };
  139. #define VBT_SIGNATURE 0x54425624