Skip to content

Commit 2d36dd5

Browse files
committed
Validate EEPROM after writing it
Signed-off-by: Daniel Schaefer <dhs@frame.work>
1 parent 74211d5 commit 2d36dd5

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

framework_lib/src/chromium_ec/mod.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1526,6 +1526,17 @@ impl CrosEc {
15261526
return_val
15271527
}
15281528

1529+
pub fn validate_gpu_descriptor(&self, reference_desc: &[u8]) -> EcResult<bool> {
1530+
let header = self.read_gpu_desc_header()?;
1531+
if header.magic != [0x32, 0xAC, 0x00, 0x00] {
1532+
return Err(EcError::DeviceError(
1533+
"Invalid descriptor hdr magic".to_string(),
1534+
));
1535+
}
1536+
let current_desc = self.read_ec_gpu_chunk(0x00, header.descriptor_length as u16)?;
1537+
Ok(current_desc == reference_desc)
1538+
}
1539+
15291540
pub fn read_gpu_descriptor(&self) -> EcResult<Vec<u8>> {
15301541
let header = self.read_gpu_desc_header()?;
15311542
if header.magic != [0x32, 0xAC, 0x00, 0x00] {

framework_lib/src/commandline/mod.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1807,7 +1807,13 @@ pub fn run_with_args(args: &Cli, _allupdate: bool) -> i32 {
18071807
println!(" Size: {:>20} KB", data.len() / 1024);
18081808
let res = ec.set_gpu_descriptor(&data, args.dry_run);
18091809
match res {
1810-
Ok(()) => println!("GPU Descriptor successfully written"),
1810+
Ok(()) => {
1811+
println!("GPU Descriptor successfully written");
1812+
println!("Reading Back GPU Descriptor");
1813+
let valid = ec.validate_gpu_descriptor(&data);
1814+
println!(" Read returns same bytes: {:?}", valid);
1815+
1816+
},
18111817
Err(err) => println!("GPU Descriptor write failed with error: {:?}", err),
18121818
}
18131819
}

0 commit comments

Comments
 (0)