@@ -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