--- ../alsa-kernel/core/hrtimer.c	2009-12-11 14:40:22.000000000 +0100
+++ hrtimer.c	2009-12-15 22:17:50.000000000 +0100
@@ -1,3 +1,4 @@
+#include "adriver.h"
 /*
  * ALSA timer back-end using hrtimer
  * Copyright (C) 2008 Takashi Iwai
@@ -65,6 +66,11 @@
 		return -ENOMEM;
 	hrtimer_init(&stime->hrt, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 	stime->timer = t;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)
+	stime->hrt.cb_mode = HRTIMER_CB_IRQSAFE;
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) && defined(HRTIMER_STATE_PENDING)
+	stime->hrt.cb_mode = HRTIMER_CB_IRQSAFE_UNLOCKED;
+#endif
 	stime->hrt.function = snd_hrtimer_callback;
 	atomic_set(&stime->running, 0);
 	t->private_data = stime;
