@@ -233,9 +233,9 @@ where
233233
234234impl < ' d , TX : Tx , P : TxPins > DmaSupport for I8080 < ' d , TX , P > {
235235 fn peripheral_wait_dma ( & mut self , _is_tx : bool , _is_rx : bool ) {
236- let dma_int_raw = self . lcd_cam . lc_dma_int_raw ( ) ;
237- // Wait until LCD_TRANS_DONE is set .
238- while dma_int_raw . read ( ) . lcd_trans_done_int_raw ( ) . bit_is_clear ( ) { }
236+ let lcd_user = self . lcd_cam . lcd_user ( ) ;
237+ // Wait until LCD_START is cleared by hardware .
238+ while lcd_user . read ( ) . lcd_start ( ) . bit_is_set ( ) { }
239239 self . tear_down_send ( ) ;
240240 }
241241
@@ -310,9 +310,9 @@ where
310310 self . start_write_bytes_dma ( data. as_ptr ( ) as _ , core:: mem:: size_of_val ( data) ) ?;
311311 self . start_send ( ) ;
312312
313- let dma_int_raw = self . lcd_cam . lc_dma_int_raw ( ) ;
314- // Wait until LCD_TRANS_DONE is set .
315- while dma_int_raw . read ( ) . lcd_trans_done_int_raw ( ) . bit_is_clear ( ) { }
313+ let lcd_user = self . lcd_cam . lcd_user ( ) ;
314+ // Wait until LCD_START is cleared by hardware .
315+ while lcd_user . read ( ) . lcd_start ( ) . bit_is_set ( ) { }
316316
317317 self . tear_down_send ( ) ;
318318
@@ -405,13 +405,15 @@ impl<'d, TX: Tx, P> I8080<'d, TX, P> {
405405 }
406406
407407 fn tear_down_send ( & mut self ) {
408+ // This will already be cleared unless the user is trying to cancel,
409+ // which is why this is still here.
408410 self . lcd_cam
409411 . lcd_user ( )
410412 . modify ( |_, w| w. lcd_start ( ) . clear_bit ( ) ) ;
411413
412414 self . lcd_cam
413415 . lc_dma_int_clr ( )
414- . write ( |w| w. lcd_trans_done_int_clr ( ) . clear_bit ( ) ) ;
416+ . write ( |w| w. lcd_trans_done_int_clr ( ) . set_bit ( ) ) ;
415417 }
416418
417419 fn start_write_bytes_dma ( & mut self , ptr : * const u8 , len : usize ) -> Result < ( ) , DmaError > {
0 commit comments