}
        }
 
+       if (!params->info) {
+               params->info = substream->runtime->hw.info;
+               params->info &= ~(SNDRV_PCM_INFO_FIFO_IN_FRAMES |
+                                 SNDRV_PCM_INFO_DRAIN_TRIGGER);
+               if (!hw_support_mmap(substream))
+                       params->info &= ~(SNDRV_PCM_INFO_MMAP |
+                                         SNDRV_PCM_INFO_MMAP_VALID);
+       }
+
        return 0;
 }
 
 int snd_pcm_hw_refine(struct snd_pcm_substream *substream,
                      struct snd_pcm_hw_params *params)
 {
-       struct snd_pcm_hardware *hw;
        int err;
 
        params->info = 0;
        if (err < 0)
                return err;
 
-       hw = &substream->runtime->hw;
-       if (!params->info) {
-               params->info = hw->info & ~(SNDRV_PCM_INFO_FIFO_IN_FRAMES |
-                                           SNDRV_PCM_INFO_DRAIN_TRIGGER);
-               if (!hw_support_mmap(substream))
-                       params->info &= ~(SNDRV_PCM_INFO_MMAP |
-                                         SNDRV_PCM_INFO_MMAP_VALID);
-       }
-
        params->rmask = 0;
+
        return 0;
 }
 EXPORT_SYMBOL(snd_pcm_hw_refine);