@@ -283,7 +283,9 @@ impl ServerImpl {
283
283
for i in 0 ..SECTOR_SIZE_BYTES / HF_PERSISTENT_DATA_STRIDE {
284
284
let addr = ( i * HF_PERSISTENT_DATA_STRIDE ) as u32 ;
285
285
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) ?;
287
289
if data. is_valid ( ) && best. map ( |b| data > b) . unwrap_or ( true ) {
288
290
best = Some ( data) ;
289
291
}
@@ -433,15 +435,18 @@ impl ServerImpl {
433
435
}
434
436
435
437
/// 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 (
438
441
& mut self ,
439
442
address : usize ,
440
- data : & mut [ u8 ] ,
441
- ) -> Result < ( ) , AuxFlashError > {
443
+ size : usize ,
444
+ ) -> Result < & [ u8 ] , HfError > {
445
+ let slice = & mut self . block [ ..size] ;
442
446
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)
445
450
}
446
451
}
447
452
@@ -540,9 +545,9 @@ impl idl::InOrderHostFlashImpl for ServerImpl {
540
545
dest : LenLimit < Leased < W , [ u8 ] > , PAGE_SIZE_BYTES > ,
541
546
) -> Result < ( ) , RequestError < HfError > > {
542
547
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 ( ) ) ?;
544
549
545
- dest. write_range ( 0 ..dest. len ( ) , & self . block [ ..dest . len ( ) ] )
550
+ dest. write_range ( 0 ..dest. len ( ) , data )
546
551
. map_err ( |_| RequestError :: Fail ( ClientError :: WentAway ) ) ?;
547
552
548
553
Ok ( ( ) )
@@ -671,11 +676,8 @@ impl idl::InOrderHostFlashImpl for ServerImpl {
671
676
} else {
672
677
end - addr
673
678
} ;
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 ( ) {
679
681
return Err ( HfError :: HashError . into ( ) ) ;
680
682
}
681
683
}
0 commit comments