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