grph_object_defs.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. /*
  2. * Copyright 2012-15 Advanced Micro Devices, Inc.
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a
  5. * copy of this software and associated documentation files (the "Software"),
  6. * to deal in the Software without restriction, including without limitation
  7. * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  8. * and/or sell copies of the Software, and to permit persons to whom the
  9. * Software is furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in
  12. * all copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  17. * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
  18. * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  19. * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  20. * OTHER DEALINGS IN THE SOFTWARE.
  21. *
  22. * Authors: AMD
  23. *
  24. */
  25. #ifndef __DAL_GRPH_OBJECT_DEFS_H__
  26. #define __DAL_GRPH_OBJECT_DEFS_H__
  27. #include "grph_object_id.h"
  28. /* ********************************************************************
  29. * ********************************************************************
  30. *
  31. * These defines shared between All Graphics Objects
  32. *
  33. * ********************************************************************
  34. * ********************************************************************
  35. */
  36. #define MAX_CONNECTOR_NUMBER_PER_SLOT (16)
  37. #define MAX_BOARD_SLOTS (4)
  38. #define INVALID_CONNECTOR_INDEX ((unsigned int)(-1))
  39. /* HPD unit id - HW direct translation */
  40. enum hpd_source_id {
  41. HPD_SOURCEID1 = 0,
  42. HPD_SOURCEID2,
  43. HPD_SOURCEID3,
  44. HPD_SOURCEID4,
  45. HPD_SOURCEID5,
  46. HPD_SOURCEID6,
  47. HPD_SOURCEID_COUNT,
  48. HPD_SOURCEID_UNKNOWN
  49. };
  50. /* DDC unit id - HW direct translation */
  51. enum channel_id {
  52. CHANNEL_ID_UNKNOWN = 0,
  53. CHANNEL_ID_DDC1,
  54. CHANNEL_ID_DDC2,
  55. CHANNEL_ID_DDC3,
  56. CHANNEL_ID_DDC4,
  57. CHANNEL_ID_DDC5,
  58. CHANNEL_ID_DDC6,
  59. CHANNEL_ID_DDC_VGA,
  60. CHANNEL_ID_I2C_PAD,
  61. CHANNEL_ID_COUNT
  62. };
  63. #define DECODE_CHANNEL_ID(ch_id) \
  64. (ch_id) == CHANNEL_ID_DDC1 ? "CHANNEL_ID_DDC1" : \
  65. (ch_id) == CHANNEL_ID_DDC2 ? "CHANNEL_ID_DDC2" : \
  66. (ch_id) == CHANNEL_ID_DDC3 ? "CHANNEL_ID_DDC3" : \
  67. (ch_id) == CHANNEL_ID_DDC4 ? "CHANNEL_ID_DDC4" : \
  68. (ch_id) == CHANNEL_ID_DDC5 ? "CHANNEL_ID_DDC5" : \
  69. (ch_id) == CHANNEL_ID_DDC6 ? "CHANNEL_ID_DDC6" : \
  70. (ch_id) == CHANNEL_ID_DDC_VGA ? "CHANNEL_ID_DDC_VGA" : \
  71. (ch_id) == CHANNEL_ID_I2C_PAD ? "CHANNEL_ID_I2C_PAD" : "Invalid"
  72. enum transmitter {
  73. TRANSMITTER_UNKNOWN = (-1L),
  74. TRANSMITTER_UNIPHY_A,
  75. TRANSMITTER_UNIPHY_B,
  76. TRANSMITTER_UNIPHY_C,
  77. TRANSMITTER_UNIPHY_D,
  78. TRANSMITTER_UNIPHY_E,
  79. TRANSMITTER_UNIPHY_F,
  80. TRANSMITTER_NUTMEG_CRT,
  81. TRANSMITTER_TRAVIS_CRT,
  82. TRANSMITTER_TRAVIS_LCD,
  83. TRANSMITTER_UNIPHY_G,
  84. TRANSMITTER_COUNT
  85. };
  86. /* Generic source of the synchronisation input/output signal */
  87. /* Can be used for flow control, stereo sync, timing sync, frame sync, etc */
  88. enum sync_source {
  89. SYNC_SOURCE_NONE = 0,
  90. /* Source based on controllers */
  91. SYNC_SOURCE_CONTROLLER0,
  92. SYNC_SOURCE_CONTROLLER1,
  93. SYNC_SOURCE_CONTROLLER2,
  94. SYNC_SOURCE_CONTROLLER3,
  95. SYNC_SOURCE_CONTROLLER4,
  96. SYNC_SOURCE_CONTROLLER5,
  97. /* Source based on GSL group */
  98. SYNC_SOURCE_GSL_GROUP0,
  99. SYNC_SOURCE_GSL_GROUP1,
  100. SYNC_SOURCE_GSL_GROUP2,
  101. /* Source based on GSL IOs */
  102. /* These IOs normally used as GSL input/output */
  103. SYNC_SOURCE_GSL_IO_FIRST,
  104. SYNC_SOURCE_GSL_IO_GENLOCK_CLOCK = SYNC_SOURCE_GSL_IO_FIRST,
  105. SYNC_SOURCE_GSL_IO_GENLOCK_VSYNC,
  106. SYNC_SOURCE_GSL_IO_SWAPLOCK_A,
  107. SYNC_SOURCE_GSL_IO_SWAPLOCK_B,
  108. SYNC_SOURCE_GSL_IO_LAST = SYNC_SOURCE_GSL_IO_SWAPLOCK_B,
  109. /* Source based on regular IOs */
  110. SYNC_SOURCE_IO_FIRST,
  111. SYNC_SOURCE_IO_GENERIC_A = SYNC_SOURCE_IO_FIRST,
  112. SYNC_SOURCE_IO_GENERIC_B,
  113. SYNC_SOURCE_IO_GENERIC_C,
  114. SYNC_SOURCE_IO_GENERIC_D,
  115. SYNC_SOURCE_IO_GENERIC_E,
  116. SYNC_SOURCE_IO_GENERIC_F,
  117. SYNC_SOURCE_IO_HPD1,
  118. SYNC_SOURCE_IO_HPD2,
  119. SYNC_SOURCE_IO_HSYNC_A,
  120. SYNC_SOURCE_IO_VSYNC_A,
  121. SYNC_SOURCE_IO_HSYNC_B,
  122. SYNC_SOURCE_IO_VSYNC_B,
  123. SYNC_SOURCE_IO_LAST = SYNC_SOURCE_IO_VSYNC_B,
  124. /* Misc. flow control sources */
  125. SYNC_SOURCE_DUAL_GPU_PIN
  126. };
  127. /* connector sizes in millimeters - from BiosParserTypes.hpp */
  128. #define CONNECTOR_SIZE_DVI 40
  129. #define CONNECTOR_SIZE_VGA 32
  130. #define CONNECTOR_SIZE_HDMI 16
  131. #define CONNECTOR_SIZE_DP 16
  132. #define CONNECTOR_SIZE_MINI_DP 9
  133. #define CONNECTOR_SIZE_UNKNOWN 30
  134. enum connector_layout_type {
  135. CONNECTOR_LAYOUT_TYPE_UNKNOWN,
  136. CONNECTOR_LAYOUT_TYPE_DVI_D,
  137. CONNECTOR_LAYOUT_TYPE_DVI_I,
  138. CONNECTOR_LAYOUT_TYPE_VGA,
  139. CONNECTOR_LAYOUT_TYPE_HDMI,
  140. CONNECTOR_LAYOUT_TYPE_DP,
  141. CONNECTOR_LAYOUT_TYPE_MINI_DP,
  142. };
  143. struct connector_layout_info {
  144. struct graphics_object_id connector_id;
  145. enum connector_layout_type connector_type;
  146. unsigned int length;
  147. unsigned int position; /* offset in mm from right side of the board */
  148. };
  149. /* length and width in mm */
  150. struct slot_layout_info {
  151. unsigned int length;
  152. unsigned int width;
  153. unsigned int num_of_connectors;
  154. struct connector_layout_info connectors[MAX_CONNECTOR_NUMBER_PER_SLOT];
  155. };
  156. struct board_layout_info {
  157. unsigned int num_of_slots;
  158. /* indicates valid information in bracket layout structure. */
  159. unsigned int is_number_of_slots_valid : 1;
  160. unsigned int is_slots_size_valid : 1;
  161. unsigned int is_connector_offsets_valid : 1;
  162. unsigned int is_connector_lengths_valid : 1;
  163. struct slot_layout_info slots[MAX_BOARD_SLOTS];
  164. };
  165. #endif