PeiAspireVn7Dash572GDetect.c 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /** @file
  2. Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR>
  3. SPDX-License-Identifier: BSD-2-Clause-Patent
  4. **/
  5. #include <PiPei.h>
  6. #include "PeiAspireVn7Dash572GInitLib.h"
  7. #include <Library/BoardEcLib.h>
  8. #include <Library/DebugLib.h>
  9. #define ADC_3V_10BIT_GRANULARITY_MAX (3005/1023)
  10. #define PCB_VER_AD 1
  11. #define MODEL_ID_AD 3
  12. /**
  13. Get Aspire V Nitro (Skylake) board ID.
  14. There are 2 different boards having different ID.
  15. This function will return board ID to caller.
  16. @param[out] DataBuffer
  17. @retval EFI_SUCCESS Command success
  18. @retval EFI_DEVICE_ERROR Command error
  19. **/
  20. VOID
  21. GetAspireVn7Dash572GBoardId (
  22. OUT UINT8 *BoardId
  23. )
  24. {
  25. UINT16 DataBuffer;
  26. ReadEcAdcConverter (MODEL_ID_AD, &DataBuffer);
  27. DEBUG ((DEBUG_INFO, "BoardId (raw) = 0x%X\n", DataBuffer));
  28. // Board by max millivoltage range (of 10-bit, 3.005 V ADC)
  29. if (DataBuffer <= (1374/ADC_3V_10BIT_GRANULARITY_MAX)) {
  30. // Consider returning an error
  31. DEBUG ((DEBUG_ERROR, "BoardId is reserved?\n"));
  32. } else if (DataBuffer <= (2017/ADC_3V_10BIT_GRANULARITY_MAX)) {
  33. *BoardId = BoardIdNewgateSLx_dGPU;
  34. } else {
  35. *BoardId = BoardIdRayleighSLx_dGPU;
  36. }
  37. DEBUG ((DEBUG_INFO, "BoardId = 0x%X\n", *BoardId));
  38. ReadEcAdcConverter (PCB_VER_AD, &DataBuffer);
  39. DEBUG ((DEBUG_INFO, "PCB version (raw) = 0x%X\n", DataBuffer));
  40. DEBUG ((DEBUG_INFO, "PCB version: "));
  41. // PCB by max millivoltage range (of 10-bit, 3.005 V ADC)
  42. if (DataBuffer <= (2017/ADC_3V_10BIT_GRANULARITY_MAX)) {
  43. // Consider returning an error
  44. DEBUG ((DEBUG_ERROR, "Reserved?\n"));
  45. } else if (DataBuffer <= (2259/ADC_3V_10BIT_GRANULARITY_MAX)) {
  46. DEBUG ((DEBUG_ERROR, "-1\n"));
  47. } else if (DataBuffer <= (2493/ADC_3V_10BIT_GRANULARITY_MAX)) {
  48. DEBUG ((DEBUG_ERROR, "SC\n"));
  49. } else if (DataBuffer <= (2759/ADC_3V_10BIT_GRANULARITY_MAX)) {
  50. DEBUG ((DEBUG_ERROR, "SB\n"));
  51. } else {
  52. DEBUG ((DEBUG_ERROR, "SA\n"));
  53. }
  54. }
  55. EFI_STATUS
  56. EFIAPI
  57. AspireVn7Dash572GBoardDetect (
  58. VOID
  59. )
  60. {
  61. UINT8 BoardId;
  62. if (LibPcdGetSku () != 0) {
  63. return EFI_SUCCESS;
  64. }
  65. DEBUG ((DEBUG_INFO, "AspireVn7Dash572GDetectionCallback\n"));
  66. GetAspireVn7Dash572GBoardId (&BoardId);
  67. if (BoardId == BoardIdNewgateSLx_dGPU || BoardId == BoardIdRayleighSLx_dGPU) {
  68. LibPcdSetSku (BoardId);
  69. ASSERT (LibPcdGetSku() == BoardId);
  70. } else {
  71. DEBUG ((DEBUG_INFO, "BoardId not returned or valid!\n"));
  72. return EFI_DEVICE_ERROR;
  73. }
  74. DEBUG ((DEBUG_INFO, "SKU_ID: 0x%x\n", LibPcdGetSku()));
  75. return EFI_SUCCESS;
  76. }