SlotTable.c 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. /** @file
  2. Slot Table Update.
  3. @copyright
  4. Copyright 2018 - 2021 Intel Corporation. <BR>
  5. Copyright (c) 2021, American Megatrends International LLC. <BR>
  6. SPDX-License-Identifier: BSD-2-Clause-Patent
  7. **/
  8. #include "PeiBoardInit.h"
  9. #include <Library/UbaSlotUpdateLib.h>
  10. #include <IioPlatformData.h>
  11. #define PCI_DEVICE_ON_BOARD_TRUE 0
  12. #define PCI_DEVICE_ON_BOARD_FALSE 1
  13. typedef enum {
  14. Iio_Socket0 = 0,
  15. Iio_Socket1,
  16. Iio_Socket2,
  17. Iio_Socket3,
  18. Iio_Socket4,
  19. Iio_Socket5,
  20. Iio_Socket6,
  21. Iio_Socket7
  22. } IIO_SOCKETS;
  23. typedef enum {
  24. Iio_Iou0 =0,
  25. Iio_Iou1,
  26. Iio_Iou2,
  27. Iio_Iou3,
  28. Iio_Iou4,
  29. Iio_IouMax
  30. } IIO_IOUS;
  31. typedef enum {
  32. Bw5_Addr_0 = 0,
  33. Bw5_Addr_1,
  34. Bw5_Addr_2,
  35. Bw5_Addr_3,
  36. Bw5_Addr_Max
  37. } BW5_ADDRESS;
  38. static UINT8 TypeJunctionCityPchPciSlotImpementedTableData[] = {
  39. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 0
  40. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 1
  41. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 2
  42. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 3
  43. PCI_DEVICE_ON_BOARD_TRUE, // Root Port 4
  44. PCI_DEVICE_ON_BOARD_TRUE, // Root Port 5
  45. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 6
  46. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 7
  47. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 8
  48. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 9
  49. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 10
  50. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 11
  51. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 12
  52. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 13
  53. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 14
  54. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 15
  55. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 16
  56. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 17
  57. PCI_DEVICE_ON_BOARD_FALSE, // Root Port 18
  58. PCI_DEVICE_ON_BOARD_FALSE // Root Port 19
  59. };
  60. UINT8
  61. GetTypeJunctionCityIOU0Setting (
  62. UINT8 IOU0Data
  63. )
  64. {
  65. //
  66. // Change bifurcation of Port1A-1B as xxx8 when QATGpio enabled.
  67. //
  68. IOU0Data = IIO_BIFURCATE_xxx8xxx8;
  69. return IOU0Data;
  70. }
  71. UINT8
  72. GetTypeJunctionCityIOU2Setting (
  73. UINT8 SkuPersonalityType,
  74. UINT8 IOU2Data
  75. )
  76. {
  77. return IOU2Data;
  78. }
  79. static IIO_BROADWAY_ADDRESS_DATA_ENTRY SlotTypeJunctionCityBroadwayTable[] = {
  80. {Iio_Socket0, Iio_Iou2, Bw5_Addr_0 },
  81. {Iio_Socket1, Iio_Iou1, Bw5_Addr_2},
  82. {Iio_Socket1, Iio_Iou0, Bw5_Addr_1 },
  83. };
  84. PLATFORM_SLOT_UPDATE_TABLE TypeJunctionCitySlotTable =
  85. {
  86. PLATFORM_SLOT_UPDATE_SIGNATURE,
  87. PLATFORM_SLOT_UPDATE_VERSION,
  88. SlotTypeJunctionCityBroadwayTable,
  89. GetTypeJunctionCityIOU0Setting,
  90. 0
  91. };
  92. PLATFORM_SLOT_UPDATE_TABLE2 TypeJunctionCitySlotTable2 =
  93. {
  94. PLATFORM_SLOT_UPDATE_SIGNATURE,
  95. PLATFORM_SLOT_UPDATE_VERSION,
  96. SlotTypeJunctionCityBroadwayTable,
  97. GetTypeJunctionCityIOU0Setting,
  98. 0,
  99. GetTypeJunctionCityIOU2Setting
  100. };
  101. PLATFORM_PCH_PCI_SLOT_IMPLEMENTED_UPDATE_TABLE TypeJunctionCityPchPciSlotImplementedTable = {
  102. PLATFORM_SLOT_UPDATE_SIGNATURE,
  103. PLATFORM_SLOT_UPDATE_VERSION,
  104. TypeJunctionCityPchPciSlotImpementedTableData
  105. };
  106. /**
  107. Entry point function for the PEIM
  108. @param FileHandle Handle of the file being invoked.
  109. @param PeiServices Describes the list of possible PEI Services.
  110. @return EFI_SUCCESS If we installed our PPI
  111. **/
  112. EFI_STATUS
  113. TypeJunctionCityInstallSlotTableData (
  114. IN UBA_CONFIG_DATABASE_PPI *UbaConfigPpi
  115. )
  116. {
  117. EFI_STATUS Status;
  118. Status = UbaConfigPpi->AddData (
  119. UbaConfigPpi,
  120. &gPlatformSlotDataGuid,
  121. &TypeJunctionCitySlotTable,
  122. sizeof(TypeJunctionCitySlotTable)
  123. );
  124. if (EFI_ERROR(Status)) {
  125. return Status;
  126. }
  127. Status = UbaConfigPpi->AddData (
  128. UbaConfigPpi,
  129. &gPlatformSlotDataGuid2,
  130. &TypeJunctionCitySlotTable2,
  131. sizeof(TypeJunctionCitySlotTable2)
  132. );
  133. if (EFI_ERROR(Status)) {
  134. return Status;
  135. }
  136. Status = UbaConfigPpi->AddData (
  137. UbaConfigPpi,
  138. &gPlatformPciSlotImplementedGuid,
  139. &TypeJunctionCityPchPciSlotImplementedTable,
  140. sizeof(TypeJunctionCityPchPciSlotImplementedTable)
  141. );
  142. if (EFI_ERROR(Status)) {
  143. return Status;
  144. }
  145. return Status;
  146. }