Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
OpenCorePKG_MOD
提交
b5ec1ec8
O
OpenCorePKG_MOD
项目概览
btwise
/
OpenCorePKG_MOD
通知
26
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
OpenCorePKG_MOD
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b5ec1ec8
编写于
4月 07, 2019
作者:
V
vit9696
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
OpenCorePlatform: Implement updating SMBIOS
上级
64f72e89
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
149 addition
and
1 deletion
+149
-1
Platform/OpenCore/OpenCorePlatform.c
Platform/OpenCore/OpenCorePlatform.c
+149
-1
未找到文件。
Platform/OpenCore/OpenCorePlatform.c
浏览文件 @
b5ec1ec8
...
...
@@ -32,6 +32,7 @@ OcPlatformUpdateDataHub (
IN
OC_CPU_INFO
*
CpuInfo
)
{
EFI_STATUS
Status
;
OC_DATA_HUB_DATA
Data
;
EFI_GUID
Uuid
;
...
...
@@ -105,7 +106,132 @@ OcPlatformUpdateDataHub (
Data
.
SmcPlatform
=
&
Config
->
PlatformInfo
.
DataHub
.
SmcPlatform
[
0
];
}
UpdateDataHub
(
&
Data
,
CpuInfo
);
Status
=
UpdateDataHub
(
&
Data
,
CpuInfo
);
if
(
EFI_ERROR
(
Status
))
{
DEBUG
((
DEBUG_WARN
,
"OC: Failed to update Data Hub - %r
\n
"
,
Status
));
}
}
STATIC
VOID
OcPlatformUpdateSmbios
(
IN
OC_GLOBAL_CONFIG
*
Config
,
IN
OC_CPU_INFO
*
CpuInfo
,
IN
OC_SMBIOS_UPDATE_MODE
UpdateMode
)
{
EFI_STATUS
Status
;
OC_SMBIOS_DATA
Data
;
EFI_GUID
Uuid
;
ZeroMem
(
&
Data
,
sizeof
(
Data
));
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BIOSVendor
)[
0
]
!=
'\0'
)
{
Data
.
BIOSVendor
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BIOSVendor
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BIOSVersion
)[
0
]
!=
'\0'
)
{
Data
.
BIOSVersion
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BIOSVersion
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BIOSReleaseDate
)[
0
]
!=
'\0'
)
{
Data
.
BIOSReleaseDate
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BIOSReleaseDate
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemManufacturer
)[
0
]
!=
'\0'
)
{
Data
.
SystemManufacturer
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemManufacturer
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemProductName
)[
0
]
!=
'\0'
)
{
Data
.
SystemProductName
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemProductName
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemVersion
)[
0
]
!=
'\0'
)
{
Data
.
SystemVersion
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemVersion
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemSerialNumber
)[
0
]
!=
'\0'
)
{
Data
.
SystemSerialNumber
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemSerialNumber
);
}
if
(
Config
->
PlatformInfo
.
DataHub
.
SystemUuid
.
Size
==
GUID_STRING_LENGTH
&&
!
EFI_ERROR
(
AsciiStrToGuid
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
DataHub
.
SystemUuid
),
&
Uuid
)))
{
Data
.
SystemUUID
=
&
Uuid
;
}
if
(
Config
->
PlatformInfo
.
Smbios
.
BoardType
!=
0
)
{
Data
.
BoardType
=
&
Config
->
PlatformInfo
.
Smbios
.
BoardType
;
}
if
(
Config
->
PlatformInfo
.
Smbios
.
ChassisType
!=
0
)
{
Data
.
ChassisType
=
&
Config
->
PlatformInfo
.
Smbios
.
ChassisType
;
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemSKUNumber
)[
0
]
!=
'\0'
)
{
Data
.
SystemSKUNumber
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemSKUNumber
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemFamily
)[
0
]
!=
'\0'
)
{
Data
.
SystemFamily
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
SystemFamily
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardManufacturer
)[
0
]
!=
'\0'
)
{
Data
.
BoardManufacturer
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardManufacturer
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardProduct
)[
0
]
!=
'\0'
)
{
Data
.
BoardProduct
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardProduct
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardVersion
)[
0
]
!=
'\0'
)
{
Data
.
BoardVersion
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardVersion
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardSerialNumber
)[
0
]
!=
'\0'
)
{
Data
.
BoardSerialNumber
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardSerialNumber
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardAssetTag
)[
0
]
!=
'\0'
)
{
Data
.
BoardAssetTag
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardAssetTag
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardLocationInChassis
)[
0
]
!=
'\0'
)
{
Data
.
BoardLocationInChassis
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
BoardLocationInChassis
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
ChassisManufacturer
)[
0
]
!=
'\0'
)
{
Data
.
ChassisManufacturer
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
ChassisManufacturer
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
ChassisVersion
)[
0
]
!=
'\0'
)
{
Data
.
ChassisVersion
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
ChassisVersion
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
ChassisSerialNumber
)[
0
]
!=
'\0'
)
{
Data
.
ChassisSerialNumber
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
ChassisSerialNumber
);
}
if
(
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
ChassisAssetTag
)[
0
]
!=
'\0'
)
{
Data
.
ChassisAssetTag
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
Smbios
.
ChassisAssetTag
);
}
if
(
Config
->
PlatformInfo
.
Smbios
.
MemoryFormFactor
!=
0
)
{
Data
.
MemoryFormFactor
=
&
Config
->
PlatformInfo
.
Smbios
.
MemoryFormFactor
;
}
Data
.
FirmwareFeatures
=
Config
->
PlatformInfo
.
Smbios
.
FirmwareFeatures
;
Data
.
FirmwareFeaturesMask
=
Config
->
PlatformInfo
.
Smbios
.
FirmwareFeaturesMask
;
if
(
Config
->
PlatformInfo
.
Smbios
.
ProcessorType
!=
0
)
{
Data
.
ProcessorType
=
&
Config
->
PlatformInfo
.
Smbios
.
ProcessorType
;
}
Data
.
PlatformFeature
=
Config
->
PlatformInfo
.
Smbios
.
PlatformFeature
;
Status
=
CreateSmbios
(
&
Data
,
UpdateMode
,
CpuInfo
);
if
(
EFI_ERROR
(
Status
))
{
DEBUG
((
DEBUG_WARN
,
"OC: Failed to update SMBIOS - %r
\n
"
,
Status
));
}
}
VOID
...
...
@@ -114,6 +240,9 @@ OcLoadPlatformSupport (
IN
OC_CPU_INFO
*
CpuInfo
)
{
CONST
CHAR8
*
SmbiosUpdateStr
;
OC_SMBIOS_UPDATE_MODE
SmbiosUpdateMode
;
//
// TODO: implement
//
...
...
@@ -125,4 +254,23 @@ OcLoadPlatformSupport (
if
(
Config
->
PlatformInfo
.
UpdateDataHub
)
{
OcPlatformUpdateDataHub
(
Config
,
CpuInfo
);
}
if
(
Config
->
PlatformInfo
.
UpdateSmbios
)
{
SmbiosUpdateStr
=
OC_BLOB_GET
(
&
Config
->
PlatformInfo
.
UpdateSmbiosMode
);
if
(
AsciiStrCmp
(
SmbiosUpdateStr
,
"Auto"
)
==
0
)
{
SmbiosUpdateMode
=
OcSmbiosUpdateAuto
;
}
else
if
(
AsciiStrCmp
(
SmbiosUpdateStr
,
"Create"
)
==
0
)
{
SmbiosUpdateMode
=
OcSmbiosUpdateCreate
;
}
else
if
(
AsciiStrCmp
(
SmbiosUpdateStr
,
"Overwrite"
)
==
0
)
{
SmbiosUpdateMode
=
OcSmbiosUpdateOverwrite
;
}
else
if
(
AsciiStrCmp
(
SmbiosUpdateStr
,
"Custom"
)
==
0
)
{
SmbiosUpdateMode
=
OcSmbiosUpdateCustom
;
}
else
{
DEBUG
((
DEBUG_WARN
,
"OC: Invalid SMBIOS update mode %a
\n
"
,
SmbiosUpdateStr
));
SmbiosUpdateMode
=
OcSmbiosUpdateAuto
;
}
OcPlatformUpdateSmbios
(
Config
,
CpuInfo
,
SmbiosUpdateMode
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录