Skip to content

Commit

Permalink
fiq_fsm: clear hcintmsk for aborted transactions
Browse files Browse the repository at this point in the history
Prevents the FIQ from erroneously handling interrupts
on a timed out channel.
  • Loading branch information
P33M authored and popcornmix committed Apr 24, 2014
1 parent e570fc8 commit 526dd19
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
Original file line number Diff line number Diff line change
Expand Up @@ -580,8 +580,10 @@ static int notrace noinline fiq_fsm_do_sof(struct fiq_state *state, int num_chan
fiq_fsm_restart_channel(state, n, 0);
state->channel[n].fsm = FIQ_PER_SSPLIT_STARTED;
} else {
/* Transaction cannot be started without risking a device babble error */
state->channel[n].fsm = FIQ_PER_SPLIT_TIMEOUT;
state->haintmsk_saved.b2.chint &= ~(1 << n);
FIQ_WRITE(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCINTMSK, 0);
kick_irq |= 1;
}
}
Expand Down Expand Up @@ -629,6 +631,7 @@ static int notrace noinline fiq_fsm_do_sof(struct fiq_state *state, int num_chan
* that's OK.
*/
state->haintmsk_saved.b2.chint &= ~(1 << n);
FIQ_WRITE(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCINTMSK, 0);
kick_irq |= 1;
break;

Expand Down

0 comments on commit 526dd19

Please sign in to comment.