]> git.proxmox.com Git - mirror_edk2.git/blame - Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscChassisManufacturerFunction.c
Vlv2TbltDevicePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Vlv2TbltDevicePkg / SmBiosMiscDxe / MiscChassisManufacturerFunction.c
CommitLineData
3cbfba02
DW
1/*++\r
2\r
3Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
4 \r\r
9dc8036d
MK
5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
3cbfba02
DW
7 \r\r
8\r
9\r
10Module Name:\r
11\r
12 MiscChassisManufacturerFunction.c\r
13\r
14Abstract:\r
15\r
16 Chassis manufacturer information boot time changes.\r
17 SMBIOS type 3.\r
18\r
19--*/\r
20\r
21\r
22#include "CommonHeader.h"\r
3cbfba02 23#include "MiscSubclassDriver.h"\r
6f2ef18e
TH
24#include <Guid/PlatformInfo.h>\r
25\r
26\r
27extern EFI_PLATFORM_INFO_HOB *mPlatformInfo;\r
3cbfba02
DW
28\r
29/**\r
30 This function makes boot time changes to the contents of the\r
31 MiscChassisManufacturer (Type 3).\r
32\r
33 @param RecordData Pointer to copy of RecordData from the Data Table.\r
34\r
35 @retval EFI_SUCCESS All parameters were valid.\r
36 @retval EFI_UNSUPPORTED Unexpected RecordType value.\r
37 @retval EFI_INVALID_PARAMETER Invalid parameter was found.\r
38\r
39**/\r
40MISC_SMBIOS_TABLE_FUNCTION(MiscChassisManufacturer)\r
41{\r
42 CHAR8 *OptionalStrStart;\r
43 UINTN ManuStrLen;\r
44 UINTN VerStrLen;\r
45 UINTN AssertTagStrLen;\r
46 UINTN SerialNumStrLen;\r
47 EFI_STATUS Status;\r
48 EFI_STRING Manufacturer;\r
49 EFI_STRING Version;\r
50 EFI_STRING SerialNumber;\r
51 EFI_STRING AssertTag;\r
52 STRING_REF TokenToGet;\r
53 EFI_SMBIOS_HANDLE SmbiosHandle;\r
54 SMBIOS_TABLE_TYPE3 *SmbiosRecord;\r
55 EFI_MISC_CHASSIS_MANUFACTURER *ForType3InputData;\r
6f2ef18e 56 CHAR16 Buffer[40];\r
3cbfba02
DW
57\r
58 ForType3InputData = (EFI_MISC_CHASSIS_MANUFACTURER *)RecordData;\r
59\r
60 //\r
61 // First check for invalid parameters.\r
62 //\r
6f2ef18e 63 if (RecordData == NULL || mPlatformInfo == NULL) {\r
3cbfba02
DW
64 return EFI_INVALID_PARAMETER;\r
65 }\r
66\r
8b7a63e7
TH
67 if (BOARD_ID_MINNOW2_TURBOT == mPlatformInfo->BoardId) {\r
68 UnicodeSPrint (Buffer, sizeof (Buffer),L"ADI");\r
6f2ef18e
TH
69 HiiSetString(mHiiHandle,STRING_TOKEN(STR_MISC_CHASSIS_MANUFACTURER), Buffer, NULL);\r
70 } \r
3cbfba02
DW
71 TokenToGet = STRING_TOKEN (STR_MISC_CHASSIS_MANUFACTURER);\r
72 Manufacturer = SmbiosMiscGetString (TokenToGet);\r
73 ManuStrLen = StrLen(Manufacturer);\r
74 if (ManuStrLen > SMBIOS_STRING_MAX_LENGTH) {\r
75 return EFI_UNSUPPORTED;\r
76 }\r
77\r
78 TokenToGet = STRING_TOKEN (STR_MISC_CHASSIS_VERSION);\r
79 Version = SmbiosMiscGetString (TokenToGet);\r
80 VerStrLen = StrLen(Version);\r
81 if (VerStrLen > SMBIOS_STRING_MAX_LENGTH) {\r
82 return EFI_UNSUPPORTED;\r
83 }\r
84\r
85 TokenToGet = STRING_TOKEN (STR_MISC_CHASSIS_SERIAL_NUMBER);\r
86 SerialNumber = SmbiosMiscGetString (TokenToGet);\r
87 SerialNumStrLen = StrLen(SerialNumber);\r
88 if (SerialNumStrLen > SMBIOS_STRING_MAX_LENGTH) {\r
89 return EFI_UNSUPPORTED;\r
90 }\r
91\r
92 TokenToGet = STRING_TOKEN (STR_MISC_CHASSIS_ASSET_TAG);\r
93 AssertTag = SmbiosMiscGetString (TokenToGet);\r
94 AssertTagStrLen = StrLen(AssertTag);\r
95 if (AssertTagStrLen > SMBIOS_STRING_MAX_LENGTH) {\r
96 return EFI_UNSUPPORTED;\r
97 }\r
98\r
99 //\r
100 // Two zeros following the last string.\r
101 //\r
102 SmbiosRecord = AllocatePool(sizeof (SMBIOS_TABLE_TYPE3) + ManuStrLen + 1 + VerStrLen + 1 + SerialNumStrLen + 1 + AssertTagStrLen + 1 + 1);\r
103 ZeroMem(SmbiosRecord, sizeof (SMBIOS_TABLE_TYPE3) + ManuStrLen + 1 + VerStrLen + 1 + SerialNumStrLen + 1 + AssertTagStrLen + 1 + 1);\r
104\r
105 SmbiosRecord->Hdr.Type = EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE;\r
106 SmbiosRecord->Hdr.Length = sizeof (SMBIOS_TABLE_TYPE3);\r
107\r
108 //\r
109 // Make handle chosen by smbios protocol.add automatically.\r
110 //\r
111 SmbiosRecord->Hdr.Handle = 0;\r
112\r
113 //\r
114 // Manu will be the 1st optional string following the formatted structure.\r
115 //\r
116 SmbiosRecord->Manufacturer = 1;\r
117 SmbiosRecord->Type = (UINT8)ForType3InputData->ChassisType.ChassisType;\r
118\r
119 //\r
120 // Version will be the 2nd optional string following the formatted structure.\r
121 //\r
122 SmbiosRecord->Version = 2;\r
123\r
124 //\r
125 // SerialNumber will be the 3rd optional string following the formatted structure.\r
126 //\r
127 SmbiosRecord->SerialNumber = 3;\r
128\r
129 //\r
130 // AssertTag will be the 4th optional string following the formatted structure.\r
131 //\r
132 SmbiosRecord->AssetTag = 4;\r
133 SmbiosRecord->BootupState = (UINT8)ForType3InputData->ChassisBootupState;\r
134 SmbiosRecord->PowerSupplyState = (UINT8)ForType3InputData->ChassisPowerSupplyState;\r
135 SmbiosRecord->ThermalState = (UINT8)ForType3InputData->ChassisThermalState;\r
136 SmbiosRecord->SecurityStatus = (UINT8)ForType3InputData->ChassisSecurityState;\r
137 CopyMem (SmbiosRecord->OemDefined,(UINT8*)&ForType3InputData->ChassisOemDefined, 4);\r
138\r
139 OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1);\r
140 UnicodeStrToAsciiStr(Manufacturer, OptionalStrStart);\r
141 UnicodeStrToAsciiStr(Version, OptionalStrStart + ManuStrLen + 1);\r
142 UnicodeStrToAsciiStr(SerialNumber, OptionalStrStart + ManuStrLen + 1 + VerStrLen + 1);\r
143 UnicodeStrToAsciiStr(AssertTag, OptionalStrStart + ManuStrLen + 1 + VerStrLen + 1 + SerialNumStrLen + 1);\r
144\r
145 //\r
146 // Now we have got the full smbios record, call smbios protocol to add this record.\r
147 //\r
148 SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;\r
149 Status = Smbios-> Add(\r
150 Smbios,\r
151 NULL,\r
152 &SmbiosHandle,\r
153 (EFI_SMBIOS_TABLE_HEADER *) SmbiosRecord\r
154 );\r
155\r
156 FreePool(SmbiosRecord);\r
157 return Status;\r
158}\r