/** @file * * Copyright (c) 2018, Hisilicon Limited. All rights reserved. * Copyright (c) 2018, Linaro Limited. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * **/ #include #include #include #include #include #include #include #include #include #include I2C_DEVICE gRtcDevice = { .Socket = 0, .Port = 5, .DeviceType = DEVICE_TYPE_SPD, .SlaveDeviceAddress = 0x68 }; SERDES_POLARITY_INVERT gSerdesPolarityTxDesc[] = { {SERDES_INVALID_MACRO_ID, SERDES_INVALID_LANE_NUM} }; SERDES_POLARITY_INVERT gSerdesPolarityRxDesc[] = { {SERDES_INVALID_MACRO_ID, SERDES_INVALID_LANE_NUM} }; SERDES_PARAM gSerdesParamNA = { .Hilink0Mode = EmHilink0Hccs1X8Width16, .Hilink1Mode = EmHilink1Hccs0X8Width16, .Hilink2Mode = EmHilink2Pcie2X8, .Hilink3Mode = 0x0, .Hilink4Mode = 0xF, .Hilink5Mode = EmHilink5Sas1X4, .Hilink6Mode = 0x0, .UseSsc = 0, }; SERDES_PARAM gSerdesParamNB = { .Hilink0Mode = EmHilink0Pcie1X8, .Hilink1Mode = EmHilink1Pcie0X8, .Hilink2Mode = EmHilink2Sas0X8, .Hilink3Mode = 0x0, .Hilink4Mode = 0xF, .Hilink5Mode = EmHilink5Pcie2X2Pcie3X2, .Hilink6Mode = 0xF, .UseSsc = 0, }; SERDES_PARAM gSerdesParamS1NA = { .Hilink0Mode = EmHilink0Hccs1X8Width16, .Hilink1Mode = EmHilink1Hccs0X8Width16, .Hilink2Mode = EmHilink2Pcie2X8, .Hilink3Mode = 0x0, .Hilink4Mode = 0xF, .Hilink5Mode = EmHilink5Sas1X4, .Hilink6Mode = 0x0, .UseSsc = 0, }; SERDES_PARAM gSerdesParamS1NB = { .Hilink0Mode = EmHilink0Pcie1X8, .Hilink1Mode = EmHilink1Pcie0X8, .Hilink2Mode = EmHilink2Sas0X8, .Hilink3Mode = 0x0, .Hilink4Mode = 0xF, .Hilink5Mode = EmHilink5Pcie2X2Pcie3X2, .Hilink6Mode = 0xF, .UseSsc = 0, }; EFI_STATUS OemGetSerdesParam ( OUT SERDES_PARAM *ParamA, OUT SERDES_PARAM *ParamB, IN UINT32 SocketId ) { if (NULL == ParamA) { DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Param == NULL!\n", __FUNCTION__, __LINE__)); return EFI_INVALID_PARAMETER; } if (NULL == ParamB) { DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Param == NULL!\n", __FUNCTION__, __LINE__)); return EFI_INVALID_PARAMETER; } if (0 == SocketId) { (VOID) CopyMem (ParamA, &gSerdesParamNA, sizeof (*ParamA)); (VOID) CopyMem (ParamB, &gSerdesParamNB, sizeof (*ParamB)); } else { (VOID) CopyMem (ParamA, &gSerdesParamS1NA, sizeof (*ParamA)); (VOID) CopyMem (ParamB, &gSerdesParamS1NB, sizeof (*ParamB)); } return EFI_SUCCESS; } VOID OemPcieResetAndOffReset ( VOID ) { return; } SMBIOS_TABLE_TYPE9 gPcieSlotInfo[] = { // PCIe0 Slot 1 { { // Hdr EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, 0, // Length, 0 // Handle }, 1, // SlotDesignation SlotTypePciExpressX16, // SlotType SlotDataBusWidth16X, // SlotDataBusWidth SlotUsageAvailable, // SlotUsage SlotLengthOther, // SlotLength 0x0001, // SlotId { // SlotCharacteristics1 0, // CharacteristicsUnknown :1; 0, // Provides50Volts :1; 0, // Provides33Volts :1; 0, // SharedSlot :1; 0, // PcCard16Supported :1; 0, // CardBusSupported :1; 0, // ZoomVideoSupported :1; 0 // ModemRingResumeSupported:1; }, { // SlotCharacteristics2 0, // PmeSignalSupported :1; 0, // HotPlugDevicesSupported :1; 0, // SmbusSignalSupported :1; 0 // Reserved :5; }, 0x00, // SegmentGroupNum 0x00, // BusNum 0 // DevFuncNum }, { { // Hdr EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, 0, // Length, 0 // Handle }, 1, // SlotDesignation SlotTypePciExpressX8, // SlotType SlotDataBusWidth8X, // SlotDataBusWidth SlotUsageAvailable, // SlotUsage SlotLengthOther, // SlotLength 0x0002, // SlotId { // SlotCharacteristics1 0, // CharacteristicsUnknown :1; 0, // Provides50Volts :1; 0, // Provides33Volts :1; 0, // SharedSlot :1; 0, // PcCard16Supported :1; 0, // CardBusSupported :1; 0, // ZoomVideoSupported :1; 0 // ModemRingResumeSupported:1; }, { // SlotCharacteristics2 0, // PmeSignalSupported :1; 0, // HotPlugDevicesSupported :1; 0, // SmbusSignalSupported :1; 0 // Reserved :5; }, 0x00, // SegmentGroupNum 0x00, // BusNum 0 // DevFuncNum }, { { // Hdr EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, 0, // Length, 0 // Handle }, 1, // SlotDesignation SlotTypePciExpressX8, // SlotType SlotDataBusWidth8X, // SlotDataBusWidth SlotUsageAvailable, // SlotUsage SlotLengthOther, // SlotLength 0x0003, // SlotId { // SlotCharacteristics1 0, // CharacteristicsUnknown :1; 0, // Provides50Volts :1; 0, // Provides33Volts :1; 0, // SharedSlot :1; 0, // PcCard16Supported :1; 0, // CardBusSupported :1; 0, // ZoomVideoSupported :1; 0 // ModemRingResumeSupported:1; }, { // SlotCharacteristics2 0, // PmeSignalSupported :1; 0, // HotPlugDevicesSupported :1; 0, // SmbusSignalSupported :1; 0 // Reserved :5; }, 0x00, // SegmentGroupNum 0x00, // BusNum 0 // DevFuncNum }, { { // Hdr EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, 0, // Length, 0 // Handle }, 1, // SlotDesignation SlotTypePciExpressX8, // SlotType SlotDataBusWidth8X, // SlotDataBusWidth SlotUsageAvailable, // SlotUsage SlotLengthOther, // SlotLength 0x0004, // SlotId { // SlotCharacteristics1 0, // CharacteristicsUnknown :1; 0, // Provides50Volts :1; 0, // Provides33Volts :1; 0, // SharedSlot :1; 0, // PcCard16Supported :1; 0, // CardBusSupported :1; 0, // ZoomVideoSupported :1; 0 // ModemRingResumeSupported:1; }, { // SlotCharacteristics2 0, // PmeSignalSupported :1; 0, // HotPlugDevicesSupported :1; 0, // SmbusSignalSupported :1; 0 // Reserved :5; }, 0x00, // SegmentGroupNum 0x00, // BusNum 0 // DevFuncNum }, { { // Hdr EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, 0, // Length, 0 // Handle }, 1, // SlotDesignation SlotTypePciExpressX16, // SlotType SlotDataBusWidth16X, // SlotDataBusWidth SlotUsageAvailable, // SlotUsage SlotLengthOther, // SlotLength 0x0005, // SlotId { // SlotCharacteristics1 0, // CharacteristicsUnknown :1; 0, // Provides50Volts :1; 0, // Provides33Volts :1; 0, // SharedSlot :1; 0, // PcCard16Supported :1; 0, // CardBusSupported :1; 0, // ZoomVideoSupported :1; 0 // ModemRingResumeSupported:1; }, { // SlotCharacteristics2 0, // PmeSignalSupported :1; 0, // HotPlugDevicesSupported :1; 0, // SmbusSignalSupported :1; 0 // Reserved :5; }, 0x00, // SegmentGroupNum 0x00, // BusNum 0 // DevFuncNum }, { { // Hdr EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, 0, // Length, 0 // Handle }, 1, // SlotDesignation SlotTypePciExpressX8, // SlotType SlotDataBusWidth8X, // SlotDataBusWidth SlotUsageAvailable, // SlotUsage SlotLengthOther, // SlotLength 0x0006, // SlotId { // SlotCharacteristics1 0, // CharacteristicsUnknown :1; 0, // Provides50Volts :1; 0, // Provides33Volts :1; 0, // SharedSlot :1; 0, // PcCard16Supported :1; 0, // CardBusSupported :1; 0, // ZoomVideoSupported :1; 0 // ModemRingResumeSupported:1; }, { // SlotCharacteristics2 0, // PmeSignalSupported :1; 0, // HotPlugDevicesSupported :1; 0, // SmbusSignalSupported :1; 0 // Reserved :5; }, 0x00, // SegmentGroupNum 0x00, // BusNum 0 // DevFuncNum }, { { // Hdr EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, 0, // Length, 0 // Handle }, 1, // SlotDesignation SlotTypePciExpressX8, // SlotType SlotDataBusWidth8X, // SlotDataBusWidth SlotUsageAvailable, // SlotUsage SlotLengthOther, // SlotLength 0x0007, // SlotId { // SlotCharacteristics1 0, // CharacteristicsUnknown :1; 0, // Provides50Volts :1; 0, // Provides33Volts :1; 0, // SharedSlot :1; 0, // PcCard16Supported :1; 0, // CardBusSupported :1; 0, // ZoomVideoSupported :1; 0 // ModemRingResumeSupported:1; }, { // SlotCharacteristics2 0, // PmeSignalSupported :1; 0, // HotPlugDevicesSupported :1; 0, // SmbusSignalSupported :1; 0 // Reserved :5; }, 0x00, // SegmentGroupNum 0x00, // BusNum 0 // DevFuncNum }, { { // Hdr EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, 0, // Length, 0 // Handle }, 1, // SlotDesignation SlotTypePciExpressX8, // SlotType SlotDataBusWidth8X, // SlotDataBusWidth SlotUsageAvailable, // SlotUsage SlotLengthOther, // SlotLength 0x0008, // SlotId { // SlotCharacteristics1 0, // CharacteristicsUnknown :1; 0, // Provides50Volts :1; 0, // Provides33Volts :1; 0, // SharedSlot :1; 0, // PcCard16Supported :1; 0, // CardBusSupported :1; 0, // ZoomVideoSupported :1; 0 // ModemRingResumeSupported:1; }, { // SlotCharacteristics2 0, // PmeSignalSupported :1; 0, // HotPlugDevicesSupported :1; 0, // SmbusSignalSupported :1; 0 // Reserved :5; }, 0x00, // SegmentGroupNum 0x00, // BusNum 0 // DevFuncNum }, }; UINT8 OemGetPcieSlotNumber ( VOID ) { return sizeof (gPcieSlotInfo) / sizeof (SMBIOS_TABLE_TYPE9); } EFI_STRING_ID gDimmToDevLocator[MAX_SOCKET][MAX_CHANNEL][MAX_DIMM] = { {{STRING_TOKEN(STR_LEMON_C10_DIMM_000), STRING_TOKEN(STR_LEMON_C10_DIMM_001)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_010), STRING_TOKEN(STR_LEMON_C10_DIMM_011)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_020), STRING_TOKEN(STR_LEMON_C10_DIMM_021)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_030), STRING_TOKEN(STR_LEMON_C10_DIMM_031)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_040), STRING_TOKEN(STR_LEMON_C10_DIMM_041)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_050), STRING_TOKEN(STR_LEMON_C10_DIMM_051)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_060), STRING_TOKEN(STR_LEMON_C10_DIMM_061)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_070), STRING_TOKEN(STR_LEMON_C10_DIMM_071)}}, {{STRING_TOKEN(STR_LEMON_C10_DIMM_100), STRING_TOKEN(STR_LEMON_C10_DIMM_101)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_110), STRING_TOKEN(STR_LEMON_C10_DIMM_111)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_120), STRING_TOKEN(STR_LEMON_C10_DIMM_121)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_130), STRING_TOKEN(STR_LEMON_C10_DIMM_131)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_140), STRING_TOKEN(STR_LEMON_C10_DIMM_141)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_150), STRING_TOKEN(STR_LEMON_C10_DIMM_151)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_160), STRING_TOKEN(STR_LEMON_C10_DIMM_161)}, {STRING_TOKEN(STR_LEMON_C10_DIMM_170), STRING_TOKEN(STR_LEMON_C10_DIMM_171)}} }; EFI_HII_HANDLE EFIAPI OemGetPackages ( VOID ) { return HiiAddPackages ( &gEfiCallerIdGuid, NULL, OemMiscLibStrings, NULL, NULL ); }