···315315 if (!params->info)316316 params->info = hw->info & ~SNDRV_PCM_INFO_FIFO_IN_FRAMES;317317 if (!params->fifo_size) {318318- if (snd_mask_min(¶ms->masks[SNDRV_PCM_HW_PARAM_FORMAT]) ==319319- snd_mask_max(¶ms->masks[SNDRV_PCM_HW_PARAM_FORMAT]) &&320320- snd_mask_min(¶ms->masks[SNDRV_PCM_HW_PARAM_CHANNELS]) ==321321- snd_mask_max(¶ms->masks[SNDRV_PCM_HW_PARAM_CHANNELS])) {318318+ m = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT);319319+ i = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS);320320+ if (snd_mask_min(m) == snd_mask_max(m) &&321321+ snd_interval_min(i) == snd_interval_max(i)) {322322 changed = substream->ops->ioctl(substream,323323 SNDRV_PCM_IOCTL1_FIFO_SIZE, params);324324 if (changed < 0)
+3-1
sound/pci/echoaudio/echoaudio.c
···18211821 /* The hardware doesn't tell us which substream caused the irq,18221822 thus we have to check all running substreams. */18231823 for (ss = 0; ss < DSP_MAXPIPES; ss++) {18241824- if ((substream = chip->substream[ss])) {18241824+ substream = chip->substream[ss];18251825+ if (substream && ((struct audiopipe *)substream->runtime->18261826+ private_data)->state == PIPE_STATE_STARTED) {18251827 period = pcm_pointer(substream) /18261828 substream->runtime->period_size;18271829 if (period != chip->last_period[ss]) {