HiKey.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /** @file
  2. *
  3. * Copyright (c) 2014-2017, Linaro Limited. All rights reserved.
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause-Patent
  6. *
  7. **/
  8. #include <Library/ArmPlatformLib.h>
  9. #include <Library/DebugLib.h>
  10. #include <Library/IoLib.h>
  11. #include <Library/PcdLib.h>
  12. #include <Ppi/ArmMpCoreInfo.h>
  13. #include <Hi6220.h>
  14. ARM_CORE_INFO mHiKeyInfoTable[] = {
  15. {
  16. // Cluster 0, Core 0
  17. 0x0, 0x0,
  18. // MP Core MailBox Set/Get/Clear Addresses and Clear Value
  19. (UINT64)0xFFFFFFFF
  20. },
  21. {
  22. // Cluster 0, Core 1
  23. 0x0, 0x1,
  24. // MP Core MailBox Set/Get/Clear Addresses and Clear Value
  25. (UINT64)0xFFFFFFFF
  26. },
  27. {
  28. // Cluster 0, Core 2
  29. 0x0, 0x2,
  30. // MP Core MailBox Set/Get/Clear Addresses and Clear Value
  31. (UINT64)0xFFFFFFFF
  32. },
  33. {
  34. // Cluster 0, Core 3
  35. 0x0, 0x3,
  36. // MP Core MailBox Set/Get/Clear Addresses and Clear Value
  37. (UINT64)0xFFFFFFFF
  38. },
  39. {
  40. // Cluster 1, Core 0
  41. 0x1, 0x0,
  42. // MP Core MailBox Set/Get/Clear Addresses and Clear Value
  43. (UINT64)0xFFFFFFFF
  44. },
  45. {
  46. // Cluster 1, Core 1
  47. 0x1, 0x1,
  48. // MP Core MailBox Set/Get/Clear Addresses and Clear Value
  49. (UINT64)0xFFFFFFFF
  50. },
  51. {
  52. // Cluster 1, Core 2
  53. 0x1, 0x2,
  54. // MP Core MailBox Set/Get/Clear Addresses and Clear Value
  55. (UINT64)0xFFFFFFFF
  56. },
  57. {
  58. // Cluster 1, Core 3
  59. 0x1, 0x3,
  60. // MP Core MailBox Set/Get/Clear Addresses and Clear Value
  61. (UINT64)0xFFFFFFFF
  62. }
  63. };
  64. /**
  65. Return the current Boot Mode
  66. This function returns the boot reason on the platform
  67. @return Return the current Boot Mode of the platform
  68. **/
  69. EFI_BOOT_MODE
  70. ArmPlatformGetBootMode (
  71. VOID
  72. )
  73. {
  74. return BOOT_WITH_FULL_CONFIGURATION;
  75. }
  76. /**
  77. Initialize controllers that must setup in the normal world
  78. This function is called by the ArmPlatformPkg/Pei or ArmPlatformPkg/Pei/PlatformPeim
  79. in the PEI phase.
  80. **/
  81. RETURN_STATUS
  82. ArmPlatformInitialize (
  83. IN UINTN MpId
  84. )
  85. {
  86. return RETURN_SUCCESS;
  87. }
  88. EFI_STATUS
  89. PrePeiCoreGetMpCoreInfo (
  90. OUT UINTN *CoreCount,
  91. OUT ARM_CORE_INFO **ArmCoreTable
  92. )
  93. {
  94. // Only support one cluster
  95. *CoreCount = sizeof(mHiKeyInfoTable) / sizeof(ARM_CORE_INFO);
  96. *ArmCoreTable = mHiKeyInfoTable;
  97. return EFI_SUCCESS;
  98. }
  99. // Needs to be declared in the file. Otherwise gArmMpCoreInfoPpiGuid is undefined in the contect of PrePeiCore
  100. EFI_GUID mArmMpCoreInfoPpiGuid = ARM_MP_CORE_INFO_PPI_GUID;
  101. ARM_MP_CORE_INFO_PPI mMpCoreInfoPpi = { PrePeiCoreGetMpCoreInfo };
  102. EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = {
  103. {
  104. EFI_PEI_PPI_DESCRIPTOR_PPI,
  105. &mArmMpCoreInfoPpiGuid,
  106. &mMpCoreInfoPpi
  107. }
  108. };
  109. VOID
  110. ArmPlatformGetPlatformPpiList (
  111. OUT UINTN *PpiListSize,
  112. OUT EFI_PEI_PPI_DESCRIPTOR **PpiList
  113. )
  114. {
  115. *PpiListSize = sizeof(gPlatformPpiTable);
  116. *PpiList = gPlatformPpiTable;
  117. }