Skip to content

Commit cc981a4

Browse files
committed
fix(gimlet-hf-server): change read_qspi_memory to take size and return slice of self.block
1 parent 5534966 commit cc981a4

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

drv/gimlet-hf-server/src/main.rs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,9 @@ impl ServerImpl {
283283
for i in 0..SECTOR_SIZE_BYTES / HF_PERSISTENT_DATA_STRIDE {
284284
let addr = (i * HF_PERSISTENT_DATA_STRIDE) as u32;
285285
let mut data = HfRawPersistentData::new_zeroed();
286-
self.read_qspi_memory(addr, data.as_mut_bytes())?;
286+
self.qspi
287+
.read_memory(addr, data.as_mut_bytes())
288+
.map_err(qspi_to_hf)?;
287289
if data.is_valid() && best.map(|b| data > b).unwrap_or(true) {
288290
best = Some(data);
289291
}
@@ -433,15 +435,18 @@ impl ServerImpl {
433435
}
434436

435437
/// Reads from flash storage starting at `address` and continuing for
436-
/// `data.len()` bytes, depositing the bytes into `data`.
437-
fn read_qspi_memory(
438+
/// `size` bytes, depositing the bytes into `self.block` and returning the
439+
/// read data as a slice.
440+
fn read_qspi_memory_to_block(
438441
&mut self,
439442
address: usize,
440-
data: &mut [u8],
441-
) -> Result<(), AuxFlashError> {
443+
size: usize,
444+
) -> Result<&[u8], HfError> {
445+
let slice = &mut self.block[..size];
442446
self.qspi
443-
.read_memory(address, data)
444-
.map_err(qspi_to_auxflash)
447+
.read_memory(address as u32, slice)
448+
.map_err(qspi_to_hf)?;
449+
Ok(slice)
445450
}
446451
}
447452

@@ -540,9 +545,9 @@ impl idl::InOrderHostFlashImpl for ServerImpl {
540545
dest: LenLimit<Leased<W, [u8]>, PAGE_SIZE_BYTES>,
541546
) -> Result<(), RequestError<HfError>> {
542547
self.check_muxed_to_sp()?;
543-
self.read_qspi_memory(addr as usize, &mut self.block[..dest.len()])?;
548+
let data = self.read_qspi_memory_to_block(addr as usize, dest.len())?;
544549

545-
dest.write_range(0..dest.len(), &self.block[..dest.len()])
550+
dest.write_range(0..dest.len(), data)
546551
.map_err(|_| RequestError::Fail(ClientError::WentAway))?;
547552

548553
Ok(())
@@ -671,11 +676,8 @@ impl idl::InOrderHostFlashImpl for ServerImpl {
671676
} else {
672677
end - addr
673678
};
674-
self.read_qspi_memory(addr, &mut self.block[..size])?;
675-
if hash_driver
676-
.update(size as u32, &self.block[..size])
677-
.is_err()
678-
{
679+
let data = self.read_qspi_memory_to_block(addr, size)?;
680+
if hash_driver.update(size as u32, data).is_err() {
679681
return Err(HfError::HashError.into());
680682
}
681683
}

0 commit comments

Comments
 (0)