File tree Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Original file line number Diff line number Diff line change @@ -1092,8 +1092,11 @@ static void udma_check_tx_completion(struct work_struct *work)
10921092 u32 residue_diff ;
10931093 ktime_t time_diff ;
10941094 unsigned long delay ;
1095+ unsigned long flags ;
10951096
10961097 while (1 ) {
1098+ spin_lock_irqsave (& uc -> vc .lock , flags );
1099+
10971100 if (uc -> desc ) {
10981101 /* Get previous residue and time stamp */
10991102 residue_diff = uc -> tx_drain .residue ;
@@ -1128,6 +1131,8 @@ static void udma_check_tx_completion(struct work_struct *work)
11281131 break ;
11291132 }
11301133
1134+ spin_unlock_irqrestore (& uc -> vc .lock , flags );
1135+
11311136 usleep_range (ktime_to_us (delay ),
11321137 ktime_to_us (delay ) + 10 );
11331138 continue ;
@@ -1144,6 +1149,8 @@ static void udma_check_tx_completion(struct work_struct *work)
11441149
11451150 break ;
11461151 }
1152+
1153+ spin_unlock_irqrestore (& uc -> vc .lock , flags );
11471154}
11481155
11491156static irqreturn_t udma_ring_irq_handler (int irq , void * data )
You can’t perform that action at this time.
0 commit comments