diff options
Diffstat (limited to 'sound/core/pcm_lib.c')
| -rw-r--r-- | sound/core/pcm_lib.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index a2a792c18c4..d659995ac3a 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c @@ -249,6 +249,11 @@ static int snd_pcm_update_hw_ptr_interrupt(struct snd_pcm_substream *substream)  			new_hw_ptr = hw_base + pos;  		}  	} + +	/* Do jiffies check only in xrun_debug mode */ +	if (!xrun_debug(substream)) +		goto no_jiffies_check; +  	/* Skip the jiffies check for hardwares with BATCH flag.  	 * Such hardware usually just increases the position at each IRQ,  	 * thus it can't give any strange position. @@ -336,7 +341,9 @@ int snd_pcm_update_hw_ptr(struct snd_pcm_substream *substream)  			hw_base = 0;  		new_hw_ptr = hw_base + pos;  	} -	if (((delta * HZ) / runtime->rate) > jdelta + HZ/100) { +	/* Do jiffies check only in xrun_debug mode */ +	if (xrun_debug(substream) && +	    ((delta * HZ) / runtime->rate) > jdelta + HZ/100) {  		hw_ptr_error(substream,  			     "hw_ptr skipping! "  			     "(pos=%ld, delta=%ld, period=%ld, jdelta=%lu/%lu)\n", @@ -1478,7 +1485,6 @@ static int snd_pcm_lib_ioctl_reset(struct snd_pcm_substream *substream,  		runtime->status->hw_ptr %= runtime->buffer_size;  	else  		runtime->status->hw_ptr = 0; -	runtime->hw_ptr_jiffies = jiffies;  	snd_pcm_stream_unlock_irqrestore(substream, flags);  	return 0;  }  |