diff options
Diffstat (limited to 'sound/firewire/amdtp-stream.c')
| -rw-r--r-- | sound/firewire/amdtp-stream.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sound/firewire/amdtp-stream.c b/sound/firewire/amdtp-stream.c index 9e6f54f8c45d..1e26854b3425 100644 --- a/sound/firewire/amdtp-stream.c +++ b/sound/firewire/amdtp-stream.c | |||
| @@ -682,7 +682,9 @@ static void out_stream_callback(struct fw_iso_context *context, u32 tstamp, | |||
| 682 | cycle = increment_cycle_count(cycle, 1); | 682 | cycle = increment_cycle_count(cycle, 1); |
| 683 | if (s->handle_packet(s, 0, cycle, i) < 0) { | 683 | if (s->handle_packet(s, 0, cycle, i) < 0) { |
| 684 | s->packet_index = -1; | 684 | s->packet_index = -1; |
| 685 | amdtp_stream_pcm_abort(s); | 685 | if (in_interrupt()) |
| 686 | amdtp_stream_pcm_abort(s); | ||
| 687 | WRITE_ONCE(s->pcm_buffer_pointer, SNDRV_PCM_POS_XRUN); | ||
| 686 | return; | 688 | return; |
| 687 | } | 689 | } |
| 688 | } | 690 | } |
| @@ -734,7 +736,9 @@ static void in_stream_callback(struct fw_iso_context *context, u32 tstamp, | |||
| 734 | /* Queueing error or detecting invalid payload. */ | 736 | /* Queueing error or detecting invalid payload. */ |
| 735 | if (i < packets) { | 737 | if (i < packets) { |
| 736 | s->packet_index = -1; | 738 | s->packet_index = -1; |
| 737 | amdtp_stream_pcm_abort(s); | 739 | if (in_interrupt()) |
| 740 | amdtp_stream_pcm_abort(s); | ||
| 741 | WRITE_ONCE(s->pcm_buffer_pointer, SNDRV_PCM_POS_XRUN); | ||
| 738 | return; | 742 | return; |
| 739 | } | 743 | } |
| 740 | 744 | ||
