@@ -656,8 +656,10 @@ static int svc_i3c_master_readb(struct svc_i3c_master *master, u8 *dst,
656
656
u32 reg ;
657
657
658
658
for (i = 0 ; i < len ; i ++ ) {
659
- ret = readl_poll_timeout (master -> regs + SVC_I3C_MSTATUS , reg ,
660
- SVC_I3C_MSTATUS_RXPEND (reg ), 0 , 1000 );
659
+ ret = readl_poll_timeout_atomic (master -> regs + SVC_I3C_MSTATUS ,
660
+ reg ,
661
+ SVC_I3C_MSTATUS_RXPEND (reg ),
662
+ 0 , 1000 );
661
663
if (ret )
662
664
return ret ;
663
665
@@ -687,10 +689,11 @@ static int svc_i3c_master_do_daa_locked(struct svc_i3c_master *master,
687
689
* Either one slave will send its ID, or the assignment process
688
690
* is done.
689
691
*/
690
- ret = readl_poll_timeout (master -> regs + SVC_I3C_MSTATUS , reg ,
691
- SVC_I3C_MSTATUS_RXPEND (reg ) |
692
- SVC_I3C_MSTATUS_MCTRLDONE (reg ),
693
- 1 , 1000 );
692
+ ret = readl_poll_timeout_atomic (master -> regs + SVC_I3C_MSTATUS ,
693
+ reg ,
694
+ SVC_I3C_MSTATUS_RXPEND (reg ) |
695
+ SVC_I3C_MSTATUS_MCTRLDONE (reg ),
696
+ 1 , 1000 );
694
697
if (ret )
695
698
return ret ;
696
699
@@ -744,11 +747,12 @@ static int svc_i3c_master_do_daa_locked(struct svc_i3c_master *master,
744
747
}
745
748
746
749
/* Wait for the slave to be ready to receive its address */
747
- ret = readl_poll_timeout (master -> regs + SVC_I3C_MSTATUS , reg ,
748
- SVC_I3C_MSTATUS_MCTRLDONE (reg ) &&
749
- SVC_I3C_MSTATUS_STATE_DAA (reg ) &&
750
- SVC_I3C_MSTATUS_BETWEEN (reg ),
751
- 0 , 1000 );
750
+ ret = readl_poll_timeout_atomic (master -> regs + SVC_I3C_MSTATUS ,
751
+ reg ,
752
+ SVC_I3C_MSTATUS_MCTRLDONE (reg ) &&
753
+ SVC_I3C_MSTATUS_STATE_DAA (reg ) &&
754
+ SVC_I3C_MSTATUS_BETWEEN (reg ),
755
+ 0 , 1000 );
752
756
if (ret )
753
757
return ret ;
754
758
0 commit comments