Skip to content

Commit 28fb73a

Browse files
committed
--capsule: Show embedded FW versions if not H2O Capsule
Previously it would only work on H2O style capsules. Signed-off-by: Daniel Schaefer <dhs@frame.work>
1 parent d725642 commit 28fb73a

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

  • framework_lib/src/commandline

framework_lib/src/commandline/mod.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2495,6 +2495,40 @@ pub fn analyze_capsule(data: &[u8]) -> Option<capsule::EfiCapsuleHeader> {
24952495
_ => {}
24962496
}
24972497

2498+
// Extract embedded firmware versions for BIOS capsules
2499+
match guid_kind {
2500+
esrt::FrameworkGuidKind::TglBios
2501+
| esrt::FrameworkGuidKind::AdlBios
2502+
| esrt::FrameworkGuidKind::RplBios
2503+
| esrt::FrameworkGuidKind::MtlBios
2504+
| esrt::FrameworkGuidKind::Fw12RplBios
2505+
| esrt::FrameworkGuidKind::Fl16Bios
2506+
| esrt::FrameworkGuidKind::Amd16Ai300Bios
2507+
| esrt::FrameworkGuidKind::Amd13Ryzen7040Bios
2508+
| esrt::FrameworkGuidKind::Amd13Ai300Bios
2509+
| esrt::FrameworkGuidKind::DesktopAmdAi300Bios => {
2510+
if let Some(cap) = find_bios_version(data) {
2511+
println!("BIOS");
2512+
println!(" Platform: {:>18}", cap.platform);
2513+
println!(" Version: {:>18}", cap.version);
2514+
}
2515+
if let Some(ec_bin) = find_ec_in_bios_cap(data) {
2516+
println!("Embedded EC");
2517+
if let Some(ver) = ec_binary::read_ec_version(ec_bin, true) {
2518+
println!(" RO Version: {:>18}", ver.version);
2519+
}
2520+
if let Some(ver) = ec_binary::read_ec_version(ec_bin, false) {
2521+
println!(" RW Version: {:>18}", ver.version);
2522+
}
2523+
}
2524+
if let Some(pd_bin) = find_pd_in_bios_cap(data) {
2525+
println!("Embedded PD");
2526+
analyze_ccgx_pd_fw(pd_bin);
2527+
}
2528+
}
2529+
_ => {}
2530+
}
2531+
24982532
Some(header)
24992533
}
25002534

0 commit comments

Comments
 (0)