UsbOC.c 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /** @file
  2. @copyright
  3. Copyright 2018 - 2021 Intel Corporation. <BR>
  4. Copyright (c) 2021, American Megatrends International LLC. <BR>
  5. SPDX-License-Identifier: BSD-2-Clause-Patent
  6. **/
  7. #include "PeiBoardInit.h"
  8. #include <Library/PcdLib.h>
  9. #include <Library/UbaUsbOcUpdateLib.h>
  10. #include <PchLimits.h>
  11. #include <ConfigBlock/UsbConfig.h>
  12. #include <ConfigBlock/Usb2PhyConfig.h>
  13. USB_OVERCURRENT_PIN TypeJunctionCityUsb20OverCurrentMappings[PCH_MAX_USB2_PORTS] = {
  14. UsbOverCurrentPin0,
  15. UsbOverCurrentPin1,
  16. UsbOverCurrentPin1,
  17. UsbOverCurrentPin2,
  18. UsbOverCurrentPin3,
  19. UsbOverCurrentPin3,
  20. UsbOverCurrentPin7,
  21. UsbOverCurrentPin7,
  22. UsbOverCurrentPin6,
  23. UsbOverCurrentPin4,
  24. UsbOverCurrentPin6,
  25. UsbOverCurrentPin4,
  26. UsbOverCurrentPin5,
  27. UsbOverCurrentPin4,
  28. UsbOverCurrentPinSkip,
  29. UsbOverCurrentPinSkip
  30. };
  31. USB_OVERCURRENT_PIN TypeJunctionCityUsb30OverCurrentMappings[PCH_MAX_USB3_PORTS] = {
  32. UsbOverCurrentPin0,
  33. UsbOverCurrentPin1,
  34. UsbOverCurrentPin1,
  35. UsbOverCurrentPin2,
  36. UsbOverCurrentPin3,
  37. UsbOverCurrentPin3,
  38. UsbOverCurrentPinSkip,
  39. UsbOverCurrentPinSkip,
  40. UsbOverCurrentPinSkip,
  41. UsbOverCurrentPinSkip
  42. };
  43. USB2_PHY_PARAMETERS TypeJunctionCityUsb20AfeParams[PCH_H_XHCI_MAX_USB2_PHYSICAL_PORTS] = {
  44. {3, 0, 3, 1}, // PP0
  45. {5, 0, 3, 1}, // PP1
  46. {3, 0, 3, 1}, // PP2
  47. {0, 5, 1, 1}, // PP3
  48. {3, 0, 3, 1}, // PP4
  49. {3, 0, 3, 1}, // PP5
  50. {3, 0, 3, 1}, // PP6
  51. {3, 0, 3, 1}, // PP7
  52. {2, 2, 1, 0}, // PP8
  53. {6, 0, 2, 1}, // PP9
  54. {2, 2, 1, 0}, // PP10
  55. {6, 0, 2, 1}, // PP11
  56. {0, 5, 1, 1}, // PP12
  57. {7, 0, 2, 1}, // PP13
  58. };
  59. EFI_STATUS
  60. TypeJunctionCityPlatformUsbOcUpdateCallback (
  61. IN OUT USB_OVERCURRENT_PIN **Usb20OverCurrentMappings,
  62. IN OUT USB_OVERCURRENT_PIN **Usb30OverCurrentMappings,
  63. IN OUT USB2_PHY_PARAMETERS **Usb20AfeParams
  64. )
  65. {
  66. *Usb20OverCurrentMappings = &TypeJunctionCityUsb20OverCurrentMappings[0];
  67. *Usb30OverCurrentMappings = &TypeJunctionCityUsb30OverCurrentMappings[0];
  68. *Usb20AfeParams = TypeJunctionCityUsb20AfeParams;
  69. return EFI_SUCCESS;
  70. }
  71. PLATFORM_USBOC_UPDATE_TABLE TypeJunctionCityUsbOcUpdate =
  72. {
  73. PLATFORM_USBOC_UPDATE_SIGNATURE,
  74. PLATFORM_USBOC_UPDATE_VERSION,
  75. TypeJunctionCityPlatformUsbOcUpdateCallback
  76. };
  77. EFI_STATUS
  78. TypeJunctionCityPlatformUpdateUsbOcMappings (
  79. IN UBA_CONFIG_DATABASE_PPI *UbaConfigPpi
  80. )
  81. {
  82. //#
  83. //# USB, see PG 104 in GZP SCH
  84. //#
  85. // USB2 USB3 Port OC
  86. //
  87. //Port00: PORT5 Back Panel ,OC0#
  88. //Port01: PORT2 Back Panel ,OC0#
  89. //Port02: PORT3 Back Panel ,OC1#
  90. //Port03: PORT0 NOT USED ,NA
  91. //Port04: BMC1.0 ,NA
  92. //Port05: INTERNAL_2X5_A ,OC2#
  93. //Port06: INTERNAL_2X5_A ,OC2#
  94. //Port07: NOT USED ,NA
  95. //Port08: EUSB (AKA SSD) ,NA
  96. //Port09: INTERNAL_TYPEA ,OC6#
  97. //Port10: PORT1 Front Panel ,OC5#
  98. //Port11: NOT USED ,NA
  99. //Port12: BMC2.0 ,NA
  100. //Port13: PORT4 Front Panel ,OC5#
  101. EFI_STATUS Status;
  102. Status = UbaConfigPpi->AddData (
  103. UbaConfigPpi,
  104. &gPeiPlatformUbaOcConfigDataGuid,
  105. &TypeJunctionCityUsbOcUpdate,
  106. sizeof(TypeJunctionCityUsbOcUpdate)
  107. );
  108. return Status;
  109. }