--- ../../alsa-kernel/pcmcia/vx/vx_entry.c	2005-01-28 15:35:16.000000000 +0100
+++ vx_entry.c	2005-01-28 15:37:00.000000000 +0100
@@ -1,3 +1,4 @@
+#include "vx_entry.inc"
 /*
  * Driver for Digigram VXpocket soundcards
  *
@@ -161,6 +162,11 @@
 	link->irq.Handler = &snd_vx_irq_handler;
 	link->irq.Instance = chip;
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) /* correct version? */
+	link->release.function = (void (*)(unsigned long))vxpocket_release;
+	link->release.data = (u_long)link;
+#endif
+
 	link->conf.Attributes = CONF_ENABLE_IRQ;
 	link->conf.Vcc = 50;
 	link->conf.IntType = INT_MEMORY_AND_IO;
@@ -243,6 +249,10 @@
 
 	chip = link->priv;
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) /* correct version? */
+	del_timer(&link->release);
+#endif
+
 	snd_printdd(KERN_DEBUG "vxpocket_detach called\n");
 	/* Remove the interface data from the linked list */
 	if (hw) {
@@ -332,6 +342,9 @@
 		snd_printdd(KERN_DEBUG "CARD_REMOVAL..\n");
 		link->state &= ~DEV_PRESENT;
 		if (link->state & DEV_CONFIG) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) /* correct version? */
+			mod_timer(&link->release, jiffies + HZ/20);
+#endif
 			chip->chip_status |= VX_STAT_IS_STALE;
 		}
 		break;
@@ -382,3 +395,5 @@
 EXPORT_SYMBOL(snd_vxpocket_ops);
 EXPORT_SYMBOL(snd_vxpocket_attach);
 EXPORT_SYMBOL(snd_vxpocket_detach);
+
+#include "vx_entry.inc1"
