BoardFeatureD05.c 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. /** @file
  2. *
  3. * Copyright (c) 2016, Hisilicon Limited. All rights reserved.
  4. * Copyright (c) 2016, Linaro Limited. All rights reserved.
  5. *
  6. * SPDX-License-Identifier: BSD-2-Clause-Patent
  7. *
  8. **/
  9. #include <PlatformArch.h>
  10. #include <Uefi.h>
  11. #include <IndustryStandard/SmBios.h>
  12. #include <Library/BaseMemoryLib.h>
  13. #include <Library/DebugLib.h>
  14. #include <Library/HiiLib.h>
  15. #include <Library/I2CLib.h>
  16. #include <Library/IoLib.h>
  17. #include <Library/OemMiscLib.h>
  18. #include <Protocol/Smbios.h>
  19. I2C_DEVICE gRtcDevice = {
  20. .Socket = 0,
  21. .Port = 4,
  22. .DeviceType = DEVICE_TYPE_SPD,
  23. .SlaveDeviceAddress = 0x68
  24. };
  25. SERDES_POLARITY_INVERT gSerdesPolarityTxDesc[] = {
  26. {SERDES_INVALID_MACRO_ID, SERDES_INVALID_LANE_NUM}
  27. };
  28. SERDES_POLARITY_INVERT gSerdesPolarityRxDesc[] = {
  29. {SERDES_INVALID_MACRO_ID, SERDES_INVALID_LANE_NUM}
  30. };
  31. SERDES_PARAM gSerdesParamNA = {
  32. .Hilink0Mode = EmHilink0Hccs1X8Width16,
  33. .Hilink1Mode = EmHilink1Hccs0X8Width16,
  34. .Hilink2Mode = EmHilink2Pcie2X8,
  35. .Hilink3Mode = 0x0,
  36. .Hilink4Mode = 0xF,
  37. .Hilink5Mode = EmHilink5Sas1X4,
  38. .Hilink6Mode = 0x0,
  39. .UseSsc = 0,
  40. };
  41. SERDES_PARAM gSerdesParamNB = {
  42. .Hilink0Mode = EmHilink0Pcie1X8,
  43. .Hilink1Mode = EmHilink1Pcie0X8,
  44. .Hilink2Mode = EmHilink2Sas0X8,
  45. .Hilink3Mode = 0x0,
  46. .Hilink4Mode = 0xF,
  47. .Hilink5Mode = EmHilink5Pcie2X2Pcie3X2,
  48. .Hilink6Mode = 0xF,
  49. .UseSsc = 0,
  50. };
  51. SERDES_PARAM gSerdesParamS1NA = {
  52. .Hilink0Mode = EmHilink0Hccs1X8Width16,
  53. .Hilink1Mode = EmHilink1Hccs0X8Width16,
  54. .Hilink2Mode = EmHilink2Pcie2X8,
  55. .Hilink3Mode = 0x0,
  56. .Hilink4Mode = 0xF,
  57. .Hilink5Mode = EmHilink5Sas1X4,
  58. .Hilink6Mode = 0x0,
  59. .UseSsc = 0,
  60. };
  61. SERDES_PARAM gSerdesParamS1NB = {
  62. .Hilink0Mode = EmHilink0Pcie1X8,
  63. .Hilink1Mode = EmHilink1Pcie0X8,
  64. .Hilink2Mode = EmHilink2Sas0X8,
  65. .Hilink3Mode = 0x0,
  66. .Hilink4Mode = 0xF,
  67. .Hilink5Mode = EmHilink5Pcie2X2Pcie3X2,
  68. .Hilink6Mode = 0xF,
  69. .UseSsc = 0,
  70. };
  71. EFI_STATUS
  72. OemGetSerdesParam (
  73. OUT SERDES_PARAM *ParamA,
  74. OUT SERDES_PARAM *ParamB,
  75. IN UINT32 SocketId
  76. )
  77. {
  78. if (ParamA == NULL || ParamB == NULL) {
  79. DEBUG((DEBUG_ERROR, "[%a]:[%dL] Param == NULL!\n", __FUNCTION__, __LINE__));
  80. return EFI_INVALID_PARAMETER;
  81. }
  82. if (SocketId == 0) {
  83. (VOID) CopyMem(ParamA, &gSerdesParamNA, sizeof(*ParamA));
  84. (VOID) CopyMem(ParamB, &gSerdesParamNB, sizeof(*ParamB));
  85. } else {
  86. (VOID) CopyMem(ParamA, &gSerdesParamS1NA, sizeof(*ParamA));
  87. (VOID) CopyMem(ParamB, &gSerdesParamS1NB, sizeof(*ParamB));
  88. }
  89. return EFI_SUCCESS;
  90. }
  91. VOID
  92. OemPcieResetAndOffReset (
  93. VOID
  94. )
  95. {
  96. return;
  97. }
  98. SMBIOS_TABLE_TYPE9 gPcieSlotInfo[] = {
  99. // PCIe0 Slot 1
  100. {
  101. { // Hdr
  102. EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type,
  103. 0, // Length,
  104. 0 // Handle
  105. },
  106. 1, // SlotDesignation
  107. SlotTypePciExpressX8, // SlotType
  108. SlotDataBusWidth8X, // SlotDataBusWidth
  109. SlotUsageAvailable, // SlotUsage
  110. SlotLengthOther, // SlotLength
  111. 0x0001, // SlotId
  112. { // SlotCharacteristics1
  113. 0, // CharacteristicsUnknown :1;
  114. 0, // Provides50Volts :1;
  115. 0, // Provides33Volts :1;
  116. 0, // SharedSlot :1;
  117. 0, // PcCard16Supported :1;
  118. 0, // CardBusSupported :1;
  119. 0, // ZoomVideoSupported :1;
  120. 0 // ModemRingResumeSupported:1;
  121. },
  122. { // SlotCharacteristics2
  123. 0, // PmeSignalSupported :1;
  124. 0, // HotPlugDevicesSupported :1;
  125. 0, // SmbusSignalSupported :1;
  126. 0 // Reserved :5;
  127. },
  128. 0x00, // SegmentGroupNum
  129. 0x00, // BusNum
  130. 0 // DevFuncNum
  131. },
  132. // PCIe0 Slot 4
  133. {
  134. { // Hdr
  135. EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type,
  136. 0, // Length,
  137. 0 // Handle
  138. },
  139. 1, // SlotDesignation
  140. SlotTypePciExpressX8, // SlotType
  141. SlotDataBusWidth8X, // SlotDataBusWidth
  142. SlotUsageAvailable, // SlotUsage
  143. SlotLengthOther, // SlotLength
  144. 0x0004, // SlotId
  145. { // SlotCharacteristics1
  146. 0, // CharacteristicsUnknown :1;
  147. 0, // Provides50Volts :1;
  148. 0, // Provides33Volts :1;
  149. 0, // SharedSlot :1;
  150. 0, // PcCard16Supported :1;
  151. 0, // CardBusSupported :1;
  152. 0, // ZoomVideoSupported :1;
  153. 0 // ModemRingResumeSupported:1;
  154. },
  155. { // SlotCharacteristics2
  156. 0, // PmeSignalSupported :1;
  157. 0, // HotPlugDevicesSupported :1;
  158. 0, // SmbusSignalSupported :1;
  159. 0 // Reserved :5;
  160. },
  161. 0x00, // SegmentGroupNum
  162. 0x00, // BusNum
  163. 0 // DevFuncNum
  164. }
  165. };
  166. UINT8
  167. OemGetPcieSlotNumber (
  168. VOID
  169. )
  170. {
  171. return sizeof (gPcieSlotInfo) / sizeof (SMBIOS_TABLE_TYPE9);
  172. }
  173. EFI_STRING_ID gDimmToDevLocator[MAX_SOCKET][MAX_CHANNEL][MAX_DIMM] = {
  174. {{STRING_TOKEN(STR_LEMON_C10_DIMM_000), STRING_TOKEN(STR_LEMON_C10_DIMM_001), STRING_TOKEN(STR_LEMON_C10_DIMM_002)},
  175. {STRING_TOKEN(STR_LEMON_C10_DIMM_010), STRING_TOKEN(STR_LEMON_C10_DIMM_011), STRING_TOKEN(STR_LEMON_C10_DIMM_012)},
  176. {STRING_TOKEN(STR_LEMON_C10_DIMM_020), STRING_TOKEN(STR_LEMON_C10_DIMM_021), STRING_TOKEN(STR_LEMON_C10_DIMM_022)},
  177. {STRING_TOKEN(STR_LEMON_C10_DIMM_030), STRING_TOKEN(STR_LEMON_C10_DIMM_031), STRING_TOKEN(STR_LEMON_C10_DIMM_032)}},
  178. {{STRING_TOKEN(STR_LEMON_C10_DIMM_100), STRING_TOKEN(STR_LEMON_C10_DIMM_101), STRING_TOKEN(STR_LEMON_C10_DIMM_102)},
  179. {STRING_TOKEN(STR_LEMON_C10_DIMM_110), STRING_TOKEN(STR_LEMON_C10_DIMM_111), STRING_TOKEN(STR_LEMON_C10_DIMM_112)},
  180. {STRING_TOKEN(STR_LEMON_C10_DIMM_120), STRING_TOKEN(STR_LEMON_C10_DIMM_121), STRING_TOKEN(STR_LEMON_C10_DIMM_122)},
  181. {STRING_TOKEN(STR_LEMON_C10_DIMM_130), STRING_TOKEN(STR_LEMON_C10_DIMM_131), STRING_TOKEN(STR_LEMON_C10_DIMM_132)}}
  182. };
  183. EFI_HII_HANDLE
  184. EFIAPI
  185. OemGetPackages (
  186. )
  187. {
  188. return HiiAddPackages (
  189. &gEfiCallerIdGuid,
  190. NULL,
  191. OemMiscLibHi1616EvbStrings,
  192. NULL,
  193. NULL
  194. );
  195. }