}
 EXPORT_SYMBOL(snd_timer_close);
 
+static unsigned long snd_timer_hw_resolution(struct snd_timer *timer)
+{
+       if (timer->hw.c_resolution)
+               return timer->hw.c_resolution(timer);
+       else
+               return timer->hw.resolution;
+}
+
 unsigned long snd_timer_resolution(struct snd_timer_instance *timeri)
 {
        struct snd_timer * timer;
        if (timeri == NULL)
                return 0;
        timer = timeri->timer;
-       if (timer) {
-               if (timer->hw.c_resolution)
-                       return timer->hw.c_resolution(timer);
-               return timer->hw.resolution;
-       }
+       if (timer)
+               return snd_timer_hw_resolution(timer);
        return 0;
 }
 EXPORT_SYMBOL(snd_timer_resolution);
        spin_lock_irqsave(&timer->lock, flags);
 
        /* remember the current resolution */
-       if (timer->hw.c_resolution)
-               resolution = timer->hw.c_resolution(timer);
-       else
-               resolution = timer->hw.resolution;
+       resolution = snd_timer_hw_resolution(timer);
 
        /* loop for all active instances
         * Here we cannot use list_for_each_entry because the active_list of a
        spin_lock_irqsave(&timer->lock, flags);
        if (event == SNDRV_TIMER_EVENT_MSTART ||
            event == SNDRV_TIMER_EVENT_MCONTINUE ||
-           event == SNDRV_TIMER_EVENT_MRESUME) {
-               if (timer->hw.c_resolution)
-                       resolution = timer->hw.c_resolution(timer);
-               else
-                       resolution = timer->hw.resolution;
-       }
+           event == SNDRV_TIMER_EVENT_MRESUME)
+               resolution = snd_timer_hw_resolution(timer);
        list_for_each_entry(ti, &timer->active_list_head, active_list) {
                if (ti->ccallback)
                        ti->ccallback(ti, event, tstamp, resolution);
        mutex_lock(®ister_mutex);
        t = snd_timer_find(&tid);
        if (t != NULL) {
-               if (t->hw.c_resolution)
-                       gstatus.resolution = t->hw.c_resolution(t);
-               else
-                       gstatus.resolution = t->hw.resolution;
+               gstatus.resolution = snd_timer_hw_resolution(t);
                if (t->hw.precise_resolution) {
                        t->hw.precise_resolution(t, &gstatus.resolution_num,
                                                 &gstatus.resolution_den);