[Pkg-alsa-devel] [Debian ALSA CVS] debian/alsa-driver (38 files)

David B Harris dbharris-guest@haydn.debian.org
Wed, 09 Jun 2004 16:50:49 -0600


    Date: Wednesday, June 9, 2004 @ 16:50:49
  Author: dbharris-guest
    Path: /cvsroot/pkg-alsa/debian/alsa-driver

Modified: Makefile Rules.make alsa-kernel/core/memalloc.c
          alsa-kernel/include/ac97_codec.h alsa-kernel/isa/azt2320.c
          alsa-kernel/isa/es18xx.c
          alsa-kernel/isa/opti9xx/opti92x-ad1848.c
          alsa-kernel/isa/sb/sb16.c alsa-kernel/pci/emu10k1/emu10k1_main.c
          alsa-kernel/pci/emu10k1/emufx.c configure configure.in
          debian/changelog drivers/serialmidi.c include/adriver.h
          include/config1.h.in pci/ali5451/ali5451.c pci/cs4281.c
          pci/cs46xx/cs46xx.c pci/es1968.c pci/maestro3.c
          pci/nm256/nm256.c pci/trident/trident.c pci/ymfpci/ymfpci.c
 Removed: acore/seq/seq.c alsa-kernel/pci/ice1712/prodigy.c
          alsa-kernel/pci/ice1712/prodigy.h pci/ac97/ac97_proc.c
          pci/ali5451/ali5451.patch pci/cs4281.patch
          pci/cs46xx/cs46xx.patch pci/es1968.patch pci/ice1712/prodigy.c
          pci/maestro3.patch pci/nm256/nm256.patch
          pci/trident/trident.patch pci/ymfpci/ymfpci.patch
          pcmcia/vx/vxpocket.c

New upstream release of alsa-driver, 1.0.5a


------------------------------------------+
 Makefile                                 |    7 
 Rules.make                               |   10 
 acore/seq/seq.c                          |    1 
 alsa-kernel/core/memalloc.c              |   63 --
 alsa-kernel/include/ac97_codec.h         |   26 +
 alsa-kernel/isa/azt2320.c                |   55 --
 alsa-kernel/isa/es18xx.c                 |  124 -----
 alsa-kernel/isa/opti9xx/opti92x-ad1848.c |   72 ---
 alsa-kernel/isa/sb/sb16.c                |   88 ---
 alsa-kernel/pci/emu10k1/emu10k1_main.c   |    2 
 alsa-kernel/pci/emu10k1/emufx.c          |   20 
 alsa-kernel/pci/ice1712/prodigy.c        |  663 -----------------------------
 alsa-kernel/pci/ice1712/prodigy.h        |   67 --
 configure                                |  198 +++++++-
 configure.in                             |   24 -
 debian/changelog                         |    8 
 drivers/serialmidi.c                     |  124 +++--
 include/adriver.h                        |   25 +
 include/config1.h.in                     |   14 
 pci/ac97/ac97_proc.c                     |    2 
 pci/ali5451/ali5451.c                    |    2 
 pci/ali5451/ali5451.patch                |   33 -
 pci/cs4281.c                             |    2 
 pci/cs4281.patch                         |   33 -
 pci/cs46xx/cs46xx.c                      |    2 
 pci/cs46xx/cs46xx.patch                  |   33 -
 pci/es1968.c                             |    2 
 pci/es1968.patch                         |   33 -
 pci/ice1712/prodigy.c                    |    2 
 pci/maestro3.c                           |    2 
 pci/maestro3.patch                       |   33 -
 pci/nm256/nm256.c                        |    2 
 pci/nm256/nm256.patch                    |   33 -
 pci/trident/trident.c                    |    1 
 pci/trident/trident.patch                |   28 -
 pci/ymfpci/ymfpci.c                      |    2 
 pci/ymfpci/ymfpci.patch                  |   33 -
 pcmcia/vx/vxpocket.c                     |   17 
 38 files changed, 445 insertions(+), 1441 deletions(-)


Index: debian/alsa-driver/Makefile
diff -u debian/alsa-driver/Makefile:1.15 debian/alsa-driver/Makefile:1.16
--- debian/alsa-driver/Makefile:1.15	Tue Apr 13 13:58:07 2004
+++ debian/alsa-driver/Makefile	Wed Jun  9 16:50:47 2004
@@ -167,8 +167,8 @@
 
 .PHONY: check-snd-prefix
 check-snd-prefix:
-	@ if [ x"$(DESTDIR)" = x ]; then \
-	  if /sbin/modprobe -c | grep -s -q snd_; then \
+	@ if [ x"$(DESTDIR)" = x -a -f /etc/modules.conf ]; then \
+	  if grep -s -q snd_ /etc/modules.conf; then \
 	    echo;\
 	    echo "             ===== WARNING =====";\
 	    echo;\
@@ -188,9 +188,8 @@
 .PHONY: clean
 clean: clean1
 ifdef NEW_KBUILD
-	find . \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \) -type f -print | xargs rm -f
 	rm -rf kbuild/.tmp_versions
-	@for d in $(SUBDIRS); do if ! $(MAKE) -C $(CONFIG_SND_KERNELDIR) SUBDIRS=$(MAINSRCDIR)/$$d clean; then exit 1; fi; done
+	@for d in $(SUBDIRS); do if ! $(MAKE) -C $$d cleanup; then exit 1; fi; done
 else
 	@for d in $(SUBDIRS); do if ! $(MAKE) -C $$d clean; then exit 1; fi; done
 endif
Index: debian/alsa-driver/Rules.make
diff -u debian/alsa-driver/Rules.make:1.14 debian/alsa-driver/Rules.make:1.15
--- debian/alsa-driver/Rules.make:1.14	Sun Feb  8 22:10:32 2004
+++ debian/alsa-driver/Rules.make	Wed Jun  9 16:50:47 2004
@@ -27,11 +27,19 @@
 modules_install:
 ifneq "$(strip $(ALL_MOBJS))" ""
 	mkdir -p $(DESTDIR)$(moddir)/$(MODCURDIR)
-	cp $(ALL_MOBJS:.o=.ko) $(DESTDIR)$(moddir)/$(MODCURDIR)
+	cp $(sort $(ALL_MOBJS:.o=.ko)) $(DESTDIR)$(moddir)/$(MODCURDIR)
 endif
 	@for d in $(patsubst %/,%,$(filter %/, $(obj-y))) \
 	          $(patsubst %/,%,$(filter %/, $(obj-m))) DUMMY; do \
 	 if [ $$d != DUMMY ]; then $(MAKE) -C $$d modules_install; fi; \
+	done
+
+# apply patches beforehand
+cleanup:
+	rm -f *.[oas] *.ko .*.cmd .*.d .*.tmp *.mod.c $(clean-files)
+	@for d in $(patsubst %/,%,$(filter %/, $(obj-y))) \
+	          $(patsubst %/,%,$(filter %/, $(obj-m))) DUMMY; do \
+	 if [ $$d != DUMMY ]; then $(MAKE) -C $$d cleanup; fi; \
 	done
 
 else
Index: debian/alsa-driver/acore/seq/seq.c
diff -u debian/alsa-driver/acore/seq/seq.c:1.1.1.1 debian/alsa-driver/acore/seq/seq.c:removed
--- debian/alsa-driver/acore/seq/seq.c:1.1.1.1	Sat Dec 22 12:53:30 2001
+++ debian/alsa-driver/acore/seq/seq.c	Wed Jun  9 16:50:49 2004
@@ -1 +0,0 @@
-#include "../../alsa-kernel/core/seq/seq.c"
Index: debian/alsa-driver/alsa-kernel/core/memalloc.c
diff -u debian/alsa-driver/alsa-kernel/core/memalloc.c:1.14 debian/alsa-driver/alsa-kernel/core/memalloc.c:1.15
--- debian/alsa-driver/alsa-kernel/core/memalloc.c:1.14	Tue Apr 13 13:39:25 2004
+++ debian/alsa-driver/alsa-kernel/core/memalloc.c	Wed Jun  9 16:50:47 2004
@@ -29,6 +29,7 @@
 #include <linux/slab.h>
 #include <linux/mm.h>
 #include <linux/dma-mapping.h>
+#include <linux/moduleparam.h>
 #include <asm/semaphore.h>
 #include <sound/memalloc.h>
 #ifdef CONFIG_SBUS
@@ -44,9 +45,14 @@
 #ifndef SNDRV_CARDS
 #define SNDRV_CARDS	8
 #endif
+
+/* FIXME: so far only some PCI devices have the preallocation table */
+#ifdef CONFIG_PCI
 static int enable[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = 1};
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+static int boot_devs;
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable cards to allocate buffers.");
+#endif
 
 /*
  */
@@ -89,32 +95,7 @@
  *  Hacks
  */
 
-static void *snd_dma_alloc_coherent1(struct device *dev, size_t size,
-				     dma_addr_t *dma_handle, int flags)
-{
-	if (dev)
-		return dma_alloc_coherent(dev, size, dma_handle, flags);
-	else /* FIXME: dma_alloc_coherent does't always accept dev=NULL */
-		return pci_alloc_consistent(NULL, size, dma_handle);
-}
-
-static void snd_dma_free_coherent1(struct device *dev, size_t size, void *dma_addr,
-				   dma_addr_t dma_handle)
-{
-	if (dev)
-		return dma_free_coherent(dev, size, dma_addr, dma_handle);
-	else
-		return pci_free_consistent(NULL, size, dma_addr, dma_handle);
-}
-
-#undef dma_alloc_coherent
-#define dma_alloc_coherent snd_dma_alloc_coherent1
-#undef dma_free_coherent
-#define dma_free_coherent snd_dma_free_coherent1
-
-
 #if defined(__i386__) || defined(__ppc__) || defined(__x86_64__)
-
 /*
  * A hack to allocate large buffers via dma_alloc_coherent()
  *
@@ -135,14 +116,17 @@
 					 dma_addr_t *dma_handle, int flags)
 {
 	void *ret;
-	u64 dma_mask;
+	u64 dma_mask, coherent_dma_mask;
 
 	if (dev == NULL || !dev->dma_mask)
 		return dma_alloc_coherent(dev, size, dma_handle, flags);
 	dma_mask = *dev->dma_mask;
+	coherent_dma_mask = dev->coherent_dma_mask;
 	*dev->dma_mask = 0xffffffff; 	/* do without masking */
+	dev->coherent_dma_mask = 0xffffffff; 	/* do without masking */
 	ret = dma_alloc_coherent(dev, size, dma_handle, flags);
 	*dev->dma_mask = dma_mask;	/* restore */
+	dev->coherent_dma_mask = coherent_dma_mask;	/* restore */
 	if (ret) {
 		/* obtained address is out of range? */
 		if (((unsigned long)*dma_handle + size - 1) & ~dma_mask) {
@@ -152,8 +136,12 @@
 		}
 	} else {
 		/* wish to success now with the proper mask... */
-		if (dma_mask != 0xffffffffUL)
+		if (dma_mask != 0xffffffffUL) {
+			/* allocation with GFP_ATOMIC to avoid the long stall */
+			flags &= ~GFP_KERNEL;
+			flags |= GFP_ATOMIC;
 			ret = dma_alloc_coherent(dev, size, dma_handle, flags);
+		}
 	}
 	return ret;
 }
@@ -841,25 +829,6 @@
 module_init(snd_mem_init)
 module_exit(snd_mem_exit)
 
-
-#ifndef MODULE
-
-/* format is: snd-page-alloc=enable */
-
-static int __init snd_mem_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-page-alloc=", snd_mem_setup);
-
-#endif
 
 /*
  * exports
Index: debian/alsa-driver/alsa-kernel/include/ac97_codec.h
diff -u debian/alsa-driver/alsa-kernel/include/ac97_codec.h:1.10 debian/alsa-driver/alsa-kernel/include/ac97_codec.h:1.11
--- debian/alsa-driver/alsa-kernel/include/ac97_codec.h:1.10	Tue Apr 13 13:39:25 2004
+++ debian/alsa-driver/alsa-kernel/include/ac97_codec.h	Wed Jun  9 16:50:48 2004
@@ -51,7 +51,7 @@
 #define AC97_REC_GAIN_MIC	0x1e	/* Record Gain MIC (optional) */
 #define AC97_GENERAL_PURPOSE	0x20	/* General Purpose (optional) */
 #define AC97_3D_CONTROL		0x22	/* 3D Control (optional) */
-#define AC97_RESERVED		0x24	/* Reserved */
+#define AC97_INT_PAGING		0x24	/* Audio Interrupt & Paging (AC'97 2.3) */
 #define AC97_POWERDOWN		0x26	/* Powerdown control / status */
 /* range 0x28-0x3a - AUDIO AC'97 2.0 extensions */
 #define AC97_EXTENDED_ID	0x28	/* Extended Audio ID */
@@ -82,6 +82,13 @@
 /* range 0x5a-0x7b - Vendor Specific */
 #define AC97_VENDOR_ID1		0x7c	/* Vendor ID1 */
 #define AC97_VENDOR_ID2		0x7e	/* Vendor ID2 / revision */
+/* range 0x60-0x6f (page 1) - extended codec registers */
+#define AC97_CODEC_CLASS_REV	0x60	/* Codec Class/Revision */
+#define AC97_PCI_SVID		0x62	/* PCI Subsystem Vendor ID */
+#define AC97_PCI_SID		0x64	/* PCI Subsystem ID */
+#define AC97_FUNC_SELECT	0x66	/* Function Select */
+#define AC97_FUNC_INFO		0x68	/* Function Information */
+#define AC97_SENSE_INFO		0x6a	/* Sense Details */
 
 /* slot allocation */
 #define AC97_SLOT_TAG		0
@@ -139,6 +146,7 @@
 #define AC97_EI_AMAP		0x0200	/* indicates optional slot/DAC mapping based on codec ID */
 #define AC97_EI_REV_MASK	0x0c00	/* AC'97 revision mask */
 #define AC97_EI_REV_22		0x0400	/* AC'97 revision 2.2 */
+#define AC97_EI_REV_23		0x0800	/* AC'97 revision 2.3 */
 #define AC97_EI_REV_SHIFT	10
 #define AC97_EI_ADDR_MASK	0xc000	/* physical codec ID (address) */
 #define AC97_EI_ADDR_SHIFT	14
@@ -180,6 +188,16 @@
 #define AC97_SC_DRS		0x4000	/* Double Rate S/PDIF */
 #define AC97_SC_V		0x8000	/* Validity status */
 
+/* Interrupt and Paging bit defines (AC'97 2.3) */
+#define AC97_PAGE_MASK		0x000f	/* Page Selector */
+#define AC97_PAGE_VENDOR	0	/* Vendor-specific registers */
+#define AC97_PAGE_1		1	/* Extended Codec Registers page 1 */
+#define AC97_INT_ENABLE		0x0800	/* Interrupt Enable */
+#define AC97_INT_SENSE		0x1000	/* Sense Cycle */
+#define AC97_INT_CAUSE_SENSE	0x2000	/* Sense Cycle Completed (RO) */
+#define AC97_INT_CAUSE_GPIO	0x4000	/* GPIO bits changed (RO) */
+#define AC97_INT_STATUS		0x8000	/* Interrupt Status */
+
 /* extended modem ID bit defines */
 #define AC97_MEI_LINE1		0x0001	/* Line1 present */
 #define AC97_MEI_LINE2		0x0002	/* Line2 present */
@@ -423,6 +441,7 @@
 	unsigned short subsystem_vendor;
 	unsigned short subsystem_device;
 	spinlock_t reg_lock;
+	struct semaphore mutex;	/* mutex for AD18xx multi-codecs and paging (2.3) */
 	unsigned short num;	/* number of codec: 0 = primary, 1 = secondary */
 	unsigned short addr;	/* physical address of codec [0-3] */
 	unsigned int id;	/* identification of codec */
@@ -443,7 +462,6 @@
 			unsigned short id[3];		// codec IDs (lower 16-bit word)
 			unsigned short pcmreg[3];	// PCM registers
 			unsigned short codec_cfg[3];	// CODEC_CFG bits
-			struct semaphore mutex;
 		} ad18xx;
 		unsigned int dev_flags;		/* device specific */
 	} spec;
@@ -465,6 +483,10 @@
 static inline int ac97_can_amap(ac97_t * ac97)
 {
 	return (ac97->ext_id & AC97_EI_AMAP) != 0;
+}
+static inline int ac97_can_spdif(ac97_t * ac97)
+{
+	return (ac97->ext_id & AC97_EI_SPDIF) != 0;
 }
 
 /* functions */
Index: debian/alsa-driver/alsa-kernel/isa/azt2320.c
diff -u debian/alsa-driver/alsa-kernel/isa/azt2320.c:1.8 debian/alsa-driver/alsa-kernel/isa/azt2320.c:1.9
--- debian/alsa-driver/alsa-kernel/isa/azt2320.c:1.8	Tue Feb  3 11:36:41 2004
+++ debian/alsa-driver/alsa-kernel/isa/azt2320.c	Wed Jun  9 16:50:48 2004
@@ -36,8 +36,8 @@
 #include <linux/time.h>
 #include <linux/wait.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/cs4231.h>
 #include <sound/mpu401.h>
@@ -68,38 +68,39 @@
 static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* Pnp setup */
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* PnP setup */
 static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* PnP setup */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for azt2320 based soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for azt2320 based soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable azt2320 based soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for azt2320 driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(wss_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(wss_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(wss_port, "WSS Port # for azt2320 driver.");
 MODULE_PARM_SYNTAX(wss_port, SNDRV_PORT12_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for azt2320 driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT12_DESC);
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for azt2320 driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for azt2320 driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for azt2320 driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "1st DMA # for azt2320 driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "2nd DMA # for azt2320 driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
 
@@ -378,33 +379,3 @@
 
 module_init(alsa_card_azt2320_init)
 module_exit(alsa_card_azt2320_exit)
-
-#ifndef MODULE
-
-/* format is: snd-azt2320=enable,index,id,port,
-			  wss_port,mpu_port,fm_port,
-			  irq,mpu_irq,dma1,dma2 */
-
-static int __init alsa_card_azt2320_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&wss_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&mpu_irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-azt2320=", alsa_card_azt2320_setup);
-
-#endif /* ifndef MODULE */
Index: debian/alsa-driver/alsa-kernel/isa/es18xx.c
diff -u debian/alsa-driver/alsa-kernel/isa/es18xx.c:1.5 debian/alsa-driver/alsa-kernel/isa/es18xx.c:1.6
--- debian/alsa-driver/alsa-kernel/isa/es18xx.c:1.5	Tue Apr 13 13:39:25 2004
+++ debian/alsa-driver/alsa-kernel/isa/es18xx.c	Wed Jun  9 16:50:48 2004
@@ -72,6 +72,7 @@
 #include <linux/slab.h>
 #include <linux/pnp.h>
 #include <linux/isapnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
@@ -81,7 +82,6 @@
 #define SNDRV_LEGACY_AUTO_PROBE
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #define PFX "es18xx: "
@@ -124,7 +124,6 @@
 	spinlock_t mixer_lock;
 	spinlock_t ctrl_lock;
 #ifdef CONFIG_PM
-	struct pm_dev *pm_dev;
 	unsigned char pm_reg;
 #endif
 };
@@ -1610,12 +1609,9 @@
 
 /* Power Management support functions */
 #ifdef CONFIG_PM
-static void snd_es18xx_suspend(es18xx_t *chip)
+static int snd_es18xx_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
+	es18xx_t *chip = snd_magic_cast(es18xx_t, card->pm_private_data, return -EINVAL);
 
 	snd_pcm_suspend_all(chip->pcm);
 
@@ -1626,63 +1622,23 @@
 	snd_es18xx_write(chip, ES18XX_PM, chip->pm_reg ^= ES18XX_PM_SUS);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void snd_es18xx_resume(es18xx_t *chip)
+static int snd_es18xx_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
+	es18xx_t *chip = snd_magic_cast(es18xx_t, card->pm_private_data, return -EINVAL);
 
 	/* restore PM register, we won't wake till (not 0x07) i/o activity though */
 	snd_es18xx_write(chip, ES18XX_PM, chip->pm_reg ^= ES18XX_PM_FM);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-/* callback for control API */
-static int snd_es18xx_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	es18xx_t *chip = (es18xx_t *) card->power_state_private_data;
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		snd_es18xx_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		snd_es18xx_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
-	return 0;
-}
-
-static int snd_es18xx_pm_callback(struct pm_dev *dev, pm_request_t rqst, void *data)
-{
-	es18xx_t *chip = snd_magic_cast(es18xx_t, dev->data, return 0);
-
-	switch (rqst) {
-	case PM_SUSPEND:
-		snd_es18xx_suspend(chip);
-		break;
-	case PM_RESUME:
-		snd_es18xx_resume(chip);
-		break;
-	}
 	return 0;
 }
 #endif /* CONFIG_PM */
 
 static int snd_es18xx_free(es18xx_t *chip)
 {
-#ifdef CONFIG_PM
-	if (chip->pm_dev)
-		pm_unregister(chip->pm_dev);
-#endif
 	if (chip->res_port) {
 		release_resource(chip->res_port);
 		kfree_nocheck(chip->res_port);
@@ -1900,37 +1856,38 @@
 static int irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* 5,7,9,10 */
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3 */
 static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3 */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for ES18xx soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for ES18xx soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable ES18xx soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(isapnp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
 #endif
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for ES18xx driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED ",allows:{{0x220,0x280,0x20}},prefers:{0x220},base:16,dialog:list");
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for ES18xx driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_ENABLED ",allows:{{0x300,0x330,0x30},{0x800,0xffe,0x2}},prefers:{0x330,0x300},base:16,dialog:combo");
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for ES18xx driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_ENABLED ",allows:{{0x388},{0x800,0xffc,0x4}},prefers:{0x388},base:16,dialog:combo");
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for ES18xx driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC ",prefers:{5}");
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA 1 # for ES18xx driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA8_DESC ",prefers:{1}");
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "DMA 2 # for ES18xx driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_ENABLED ",allows:{{0},{1},{3},{5}},dialog:list,prefers:{0}");
 
@@ -2149,16 +2106,9 @@
 		chip->rmidi = rmidi;
 	}
 
-#ifdef CONFIG_PM
 	/* Power Management */
-	chip->pm_dev = pm_register(PM_ISA_DEV, 0, snd_es18xx_pm_callback);
-	if (chip->pm_dev) {
-		chip->pm_dev->data = chip;
-		/* set control api callback */
-		card->set_power_state = snd_es18xx_set_power_state;
-		card->power_state_private_data = chip;
-	}
-#endif
+	snd_card_set_isa_pm_callback(card, snd_es18xx_suspend, snd_es18xx_resume, chip);
+
 	if ((err = snd_card_register(card)) < 0) {
 		snd_card_free(card);
 		return err;
@@ -2283,39 +2233,3 @@
 
 module_init(alsa_card_es18xx_init)
 module_exit(alsa_card_es18xx_exit)
-
-
-#ifndef MODULE
-
-/* format is: snd-es18xx=enable,index,id,isapnp,
-			 port,mpu_port,fm_port,irq,
-			 dma1,dma2 */
-
-static int __init alsa_card_es18xx_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2);
-#ifdef CONFIG_PNP
-	if (pnp != INT_MAX)
-		isapnp[nr_dev] = pnp;
-#endif
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-es18xx=", alsa_card_es18xx_setup);
-
-#endif /* ifndef MODULE */
Index: debian/alsa-driver/alsa-kernel/isa/opti9xx/opti92x-ad1848.c
diff -u debian/alsa-driver/alsa-kernel/isa/opti9xx/opti92x-ad1848.c:1.9 debian/alsa-driver/alsa-kernel/isa/opti9xx/opti92x-ad1848.c:1.10
--- debian/alsa-driver/alsa-kernel/isa/opti9xx/opti92x-ad1848.c:1.9	Tue Apr 13 13:39:25 2004
+++ debian/alsa-driver/alsa-kernel/isa/opti9xx/opti92x-ad1848.c	Wed Jun  9 16:50:48 2004
@@ -30,6 +30,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #ifdef CS4231
 #include <sound/cs4231.h>
@@ -48,7 +49,6 @@
 #endif
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Massimo Piccioni <dafastidio@libero.it>");
@@ -84,38 +84,38 @@
 static int dma2 = SNDRV_DEFAULT_DMA1;		/* 0,1,3 */
 #endif	/* CS4231 || OPTi93X */
 
-MODULE_PARM(index, "i");
+module_param(index, int, 0444);
 MODULE_PARM_DESC(index, "Index value for opti9xx based soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "s");
+module_param(id, charp, 0444);
 MODULE_PARM_DESC(id, "ID string for opti9xx based soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-//MODULE_PARM(enable, "i");
+//module_param(enable, bool, 0444);
 //MODULE_PARM_DESC(enable, "Enable opti9xx soundcard.");
 //MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(isapnp, "i");
+module_param(isapnp, bool, 0444);
 MODULE_PARM_DESC(isapnp, "Enable ISA PnP detection for specified soundcard.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
-MODULE_PARM(port, "l");
+module_param(port, long, 0444);
 MODULE_PARM_DESC(port, "WSS port # for opti9xx driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT_DESC);
-MODULE_PARM(mpu_port, "l");
+module_param(mpu_port, long, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for opti9xx driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT_DESC);
-MODULE_PARM(fm_port, "l");
+module_param(fm_port, long, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for opti9xx driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_PORT_DESC);
-MODULE_PARM(irq, "i");
+module_param(irq, int, 0444);
 MODULE_PARM_DESC(irq, "WSS irq # for opti9xx driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "i");
+module_param(mpu_irq, int, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 irq # for opti9xx driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma1, "i");
+module_param(dma1, int, 0444);
 MODULE_PARM_DESC(dma1, "1st dma # for opti9xx driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
 #if defined(CS4231) || defined(OPTi93X)
-MODULE_PARM(dma2, "i");
+module_param(dma2, int, 0444);
 MODULE_PARM_DESC(dma2, "2nd dma # for opti9xx driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
 #endif	/* CS4231 || OPTi93X */
@@ -602,7 +602,11 @@
 #endif	/* CS4231 || OPTi93X */
 
 	spin_lock_irqsave(&chip->lock, flags);
+#ifndef OPTi93X
+	 outb(irq_bits << 3 | dma_bits, chip->wss_base);
+#else /* OPTi93X */
 	snd_opti9xx_write(chip, OPTi9XX_MC_REG(3), (irq_bits << 3 | dma_bits));
+#endif /* OPTi93X */
 	spin_unlock_irqrestore(&chip->lock, flags);
 
 __skip_resources:
@@ -2253,47 +2257,3 @@
 
 module_init(alsa_card_opti9xx_init)
 module_exit(alsa_card_opti9xx_exit)
-
-#ifndef MODULE
-
-/* format is: snd-opti9xx=enable,index,id,isapnp,
-			  port,mpu_port,fm_port,
-			  irq,mpu_irq,
-			  dma1,[dma2] */
-
-static int __init alsa_card_opti9xx_setup(char *str)
-{
-	int __attribute__ ((__unused__)) enable = 1;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-
-	(void)(get_option(&str,&enable) == 2 &&
-	       get_option(&str,&index) == 2 &&
-	       get_id(&str,&id) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&port) == 2 &&
-	       get_option_long(&str,&mpu_port) == 2 &&
-	       get_option_long(&str,&fm_port) == 2 &&
-	       get_option(&str,&irq) == 2 &&
-	       get_option(&str,&mpu_irq) == 2 &&
-	       get_option(&str,&dma1) == 2
-#if defined(CS4231) || defined(OPTi93X)
-	       &&
-	       get_option(&str,&dma2) == 2
-#endif
-	       );
-#ifdef CONFIG_PNP
-	if (pnp != INT_MAX)
-		isapnp = pnp;
-#endif
-	return 1;
-}
-
-#if defined(OPTi93X)
-__setup("snd-opti93x=", alsa_card_opti9xx_setup);
-#elif defined(CS4231)
-__setup("snd-opti92x-cs4231=", alsa_card_opti9xx_setup);
-#else
-__setup("snd-opti92x-ad1848=", alsa_card_opti9xx_setup);
-#endif
-
-#endif /* ifndef MODULE */
Index: debian/alsa-driver/alsa-kernel/isa/sb/sb16.c
diff -u debian/alsa-driver/alsa-kernel/isa/sb/sb16.c:1.9 debian/alsa-driver/alsa-kernel/isa/sb/sb16.c:1.10
--- debian/alsa-driver/alsa-kernel/isa/sb/sb16.c:1.9	Tue Apr 13 13:39:25 2004
+++ debian/alsa-driver/alsa-kernel/isa/sb/sb16.c	Wed Jun  9 16:50:48 2004
@@ -24,6 +24,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/sb.h>
 #include <sound/sb16_csp.h>
@@ -34,7 +35,6 @@
 #define SNDRV_LEGACY_AUTO_PROBE
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #define chip_t sb_t
@@ -92,54 +92,55 @@
 #ifdef SNDRV_SBAWE_EMU8000
 static int seq_ports[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 4};
 #endif
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for SoundBlaster 16 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for SoundBlaster 16 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable SoundBlaster 16 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(isapnp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
 #endif
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for SB16 driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED ",allows:{{0x220},{0x240},{0x260},{0x280}},dialog:list");
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for SB16 driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_ENABLED ",allows:{{0x330},{0x300}},dialog:list");
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for SB16 PnP driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_ENABLED ",allows:{{0x388},{0x38c},{0x390},{0x394}},dialog:list");
 #ifdef SNDRV_SBAWE_EMU8000
-MODULE_PARM(awe_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(awe_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(awe_port, "AWE port # for SB16 PnP driver.");
 MODULE_PARM_SYNTAX(awe_port, SNDRV_ENABLED ",allows:{{0x620},{0x640},{0x660},{0x680}},dialog:list");
 #endif
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for SB16 driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma8, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma8, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma8, "8-bit DMA # for SB16 driver.");
 MODULE_PARM_SYNTAX(dma8, SNDRV_DMA8_DESC);
-MODULE_PARM(dma16, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma16, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma16, "16-bit DMA # for SB16 driver.");
 MODULE_PARM_SYNTAX(dma16, SNDRV_DMA16_DESC);
-MODULE_PARM(mic_agc, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mic_agc, int, boot_devs, 0444);
 MODULE_PARM_DESC(mic_agc, "Mic Auto-Gain-Control switch.");
 MODULE_PARM_SYNTAX(mic_agc, SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC);
 #ifdef CONFIG_SND_SB16_CSP
-MODULE_PARM(csp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(csp, int, boot_devs, 0444);
 MODULE_PARM_DESC(csp, "ASP/CSP chip support.");
 MODULE_PARM_SYNTAX(csp, SNDRV_ENABLED "," SNDRV_ENABLE_DESC);
 #endif
 #ifdef SNDRV_SBAWE_EMU8000
-MODULE_PARM(seq_ports, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(seq_ports, int, boot_devs, 0444);
 MODULE_PARM_DESC(seq_ports, "Number of sequencer ports for WaveTable synth.");
 MODULE_PARM_SYNTAX(seq_ports, SNDRV_ENABLED ",allows:{{0,8}},skill:advanced");
 #endif
@@ -691,60 +692,3 @@
 
 module_init(alsa_card_sb16_init)
 module_exit(alsa_card_sb16_exit)
-
-#ifndef MODULE
-
-/* format is: snd-sb16=enable,index,id,isapnp,
-		       port,mpu_port,fm_port,
-		       irq,dma8,dma16,
-		       mic_agc,csp,
-		       [awe_port,seq_ports] */
-
-static int __init alsa_card_sb16_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-	int __attribute__ ((__unused__)) xcsp = INT_MAX;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma8[nr_dev]) == 2 &&
-	       get_option(&str,&dma16[nr_dev]) == 2 &&
-	       get_option(&str,&mic_agc[nr_dev]) == 2
-#ifdef CONFIG_SND_SB16_CSP
-	       &&
-	       get_option(&str,&xcsp) == 2
-#endif
-#ifdef SNDRV_SBAWE_EMU8000
-	       &&
-	       get_option_long(&str,&awe_port[nr_dev]) == 2 &&
-	       get_option(&str,&seq_ports[nr_dev]) == 2
-#endif
-	       );
-#ifdef CONFIG_PNP
-	if (pnp != INT_MAX)
-		isapnp[nr_dev] = pnp;
-#endif
-#ifdef CONFIG_SND_SB16_CSP
-	if (xcsp != INT_MAX)
-		csp[nr_dev] = xcsp;
-#endif
-	nr_dev++;
-	return 1;
-}
-
-#ifndef SNDRV_SBAWE_EMU8000
-__setup("snd-sb16=", alsa_card_sb16_setup);
-#else
-__setup("snd-sbawe=", alsa_card_sb16_setup);
-#endif
-
-#endif /* ifndef MODULE */
Index: debian/alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c
diff -u debian/alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c:1.9 debian/alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c:1.10
--- debian/alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c:1.9	Tue Apr 13 13:39:26 2004
+++ debian/alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c	Wed Jun  9 16:50:48 2004
@@ -690,7 +690,7 @@
 	if (extin_mask == 0)
 		extin_mask = 0x3fcf;
 	if (extout_mask == 0)
-		extout_mask = 0x1fff;
+		extout_mask = 0x7fff;
 	emu->fx8010.extin_mask = extin_mask;
 	emu->fx8010.extout_mask = extout_mask;
 
Index: debian/alsa-driver/alsa-kernel/pci/emu10k1/emufx.c
diff -u debian/alsa-driver/alsa-kernel/pci/emu10k1/emufx.c:1.14 debian/alsa-driver/alsa-kernel/pci/emu10k1/emufx.c:1.15
--- debian/alsa-driver/alsa-kernel/pci/emu10k1/emufx.c:1.14	Tue Apr 13 13:39:26 2004
+++ debian/alsa-driver/alsa-kernel/pci/emu10k1/emufx.c	Wed Jun  9 16:50:48 2004
@@ -120,8 +120,8 @@
 	/* 0x0a */ "PCM Capture Left",
 	/* 0x0b */ "PCM Capture Right",
 	/* 0x0c */ "MIC Capture",
-	/* 0x0d */ NULL,
-	/* 0x0e */ NULL,
+	/* 0x0d */ "AC97 Surround Left",
+	/* 0x0e */ "AC97 Surround Right",
 	/* 0x0f */ NULL,
 	/* 0x10 */ NULL,
 	/* 0x11 */ "Analog Center",
@@ -2113,22 +2113,26 @@
 		for (z = 0; z < 2; z++)
 			OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_REAR_L + z), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 2 + z), C_00000000, C_00000000);
 
-	if (emu->fx8010.extout_mask & (1<<EXTOUT_CENTER)) {
+	if (emu->fx8010.extout_mask & ((1<<EXTOUT_AC97_REAR_L)|(1<<EXTOUT_AC97_REAR_R)))
+		for (z = 0; z < 2; z++)
+			OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_AC97_REAR_L + z), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 2 + z), C_00000000, C_00000000);
+
+	if (emu->fx8010.extout_mask & (1<<EXTOUT_AC97_CENTER)) {
 #ifndef EMU10K1_CENTER_LFE_FROM_FRONT
-		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_CENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 4), C_00000000, C_00000000);
+		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_AC97_CENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 4), C_00000000, C_00000000);
 		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_ACENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 4), C_00000000, C_00000000);
 #else
-		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_CENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 0), C_00000000, C_00000000);
+		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_AC97_CENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 0), C_00000000, C_00000000);
 		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_ACENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 0), C_00000000, C_00000000);
 #endif
 	}
 
-	if (emu->fx8010.extout_mask & (1<<EXTOUT_LFE)) {
+	if (emu->fx8010.extout_mask & (1<<EXTOUT_AC97_LFE)) {
 #ifndef EMU10K1_CENTER_LFE_FROM_FRONT
-		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_LFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 5), C_00000000, C_00000000);
+		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_AC97_LFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 5), C_00000000, C_00000000);
 		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_ALFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 5), C_00000000, C_00000000);
 #else
-		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_LFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 1), C_00000000, C_00000000);
+		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_AC97_LFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 1), C_00000000, C_00000000);
 		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_ALFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 1), C_00000000, C_00000000);
 #endif
 	}
Index: debian/alsa-driver/alsa-kernel/pci/ice1712/prodigy.c
diff -u debian/alsa-driver/alsa-kernel/pci/ice1712/prodigy.c:1.1.1.2 debian/alsa-driver/alsa-kernel/pci/ice1712/prodigy.c:removed
--- debian/alsa-driver/alsa-kernel/pci/ice1712/prodigy.c:1.1.1.2	Fri Mar  5 02:08:39 2004
+++ debian/alsa-driver/alsa-kernel/pci/ice1712/prodigy.c	Wed Jun  9 16:50:49 2004
@@ -1,663 +0,0 @@
-/*
- *   ALSA driver for ICEnsemble VT1724 (Envy24HT)
- *
- *   Lowlevel functions for AudioTrak Prodigy 7.1 (and possibly 192) cards
- *      Copyright (c) 2003 Dimitromanolakis Apostolos <apostol@cs.utoronto.ca>
- *	based on the aureon.c code (c) 2003 by Takashi Iwai <tiwai@suse.de>
- *
- *   version 0.82: Stable / not all features work yet (no communication with AC97 secondary)
- *       added 64x/128x oversampling switch (should be 64x only for 96khz)
- *       fixed some recording labels (still need to check the rest)
- *       recording is working probably thanks to correct wm8770 initialization
- *
- *   version 0.5: Initial release:
- *           working: analog output, mixer, headphone amplifier switch
- *       not working: prety much everything else, at least i could verify that
- *                    we have no digital output, no capture, pretty bad clicks and poops
- *                    on mixer switch and other coll stuff.
- *
- *   This program is free software; you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or
- *   (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
- *
- *
- * NOTES:
- *
- *
- *
- * - we reuse the akm4xxx_t record for storing the wm8770 codec data.
- *   both wm and akm codecs are pretty similar, so we can integrate
- *   both controls in the future, once if wm codecs are reused in
- *   many boards.
- *
- * - writing over SPI is implemented but reading is not yet.
- *   the SPDIF-in channel status, etc. can be read from CS chip.
- *
- * - DAC digital volumes are not implemented in the mixer.
- *   if they show better response than DAC analog volumes, we can use them
- *   instead.
- *
- * - Prodigy boards are equipped with AC97 STAC9744 chip , too.  it's used to do
- *   the analog mixing but not easily controllable (it's not connected
- *   directly from envy24ht chip).  so let's leave it as it is.
- *
- */
-
-#define REVISION 0.82b
-
-#include <sound/driver.h>
-#include <asm/io.h>
-#include <linux/delay.h>
-#include <linux/interrupt.h>
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <sound/core.h>
-
-#include "ice1712.h"
-#include "envy24ht.h"
-#include "prodigy.h"
-
-
-static int prodigy_set_headphone_amp(ice1712_t *ice, int enable)
-{
-	unsigned int tmp, tmp2;
-
-	tmp2 = tmp = snd_ice1712_gpio_read(ice);
-	if (enable)
-		tmp |= PRODIGY_HP_AMP_EN;
-	else
-		tmp &= ~ PRODIGY_HP_AMP_EN;
-	if (tmp != tmp2) {
-		snd_ice1712_gpio_write(ice, tmp);
-		return 1;
-	}
-	return 0;
-}
-
-
-static int prodigy_get_headphone_amp(ice1712_t *ice)
-{
-	unsigned int tmp = snd_ice1712_gpio_read(ice);
-
-	return ( tmp & PRODIGY_HP_AMP_EN )!= 0;
-}
-
-
-/*
- * write data in the SPI mode
- */
-static void prodigy_spi_write(ice1712_t *ice, unsigned int cs, unsigned int data, int bits)
-{
-	unsigned int tmp;
-	int i;
-
-	tmp = snd_ice1712_gpio_read(ice);
-
-	snd_ice1712_gpio_set_mask(ice, ~(PRODIGY_WM_RW|PRODIGY_WM_DATA|PRODIGY_WM_CLK|
-					 PRODIGY_WM_CS|PRODIGY_CS8415_CS|PRODIGY_HP_AMP_EN));
-	tmp |= PRODIGY_WM_RW;
-	tmp &= ~cs;
-	snd_ice1712_gpio_write(ice, tmp);
-	udelay(1);
-
-	for (i = bits - 1; i >= 0; i--) {
-		tmp &= ~PRODIGY_WM_CLK;
-		snd_ice1712_gpio_write(ice, tmp);
-		udelay(1);
-		if (data & (1 << i))
-			tmp |= PRODIGY_WM_DATA;
-		else
-			tmp &= ~PRODIGY_WM_DATA;
-		snd_ice1712_gpio_write(ice, tmp);
-		udelay(1);
-		tmp |= PRODIGY_WM_CLK;
-		snd_ice1712_gpio_write(ice, tmp);
-		udelay(1);
-	}
-
-	tmp &= ~PRODIGY_WM_CLK;
-	tmp |= cs;
-	snd_ice1712_gpio_write(ice, tmp);
-	udelay(1);
-	tmp |= PRODIGY_WM_CLK;
-	snd_ice1712_gpio_write(ice, tmp);
-	udelay(1);
-}
-
-
-/*
- * get the current register value of WM codec
- */
-static unsigned short wm_get(ice1712_t *ice, int reg)
-{
-	reg <<= 1;
-	return ((unsigned short)ice->akm[0].images[reg] << 8) |
-		ice->akm[0].images[reg + 1];
-}
-
-/*
- * set the register value of WM codec and remember it
- */
-static void wm_put(ice1712_t *ice, int reg, unsigned short val)
-{
-	prodigy_spi_write(ice, PRODIGY_WM_CS, (reg << 9) | (val & 0x1ff), 16);
-	reg <<= 1;
-	ice->akm[0].images[reg] = val >> 8;
-	ice->akm[0].images[reg + 1] = val;
-}
-
-
-/*********************************
- ********* Controls section ******
- *********************************/
-
-#define PRODIGY_CON_HPAMP \
-        {                                            \
-                .iface = SNDRV_CTL_ELEM_IFACE_MIXER,      \
-                .name =  "Headphone Amplifier", \
-                .info =  prodigy_hpamp_info,         \
-                .get =   prodigy_hpamp_get, \
-                .put =   prodigy_hpamp_put  \
-        }
-
-static int prodigy_hpamp_info(snd_kcontrol_t *k, snd_ctl_elem_info_t *uinfo)
-{
-	static char *texts[2] = {
-		"Off", "On"
-	};
-
-	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-	uinfo->count = 1;
-	uinfo->value.enumerated.items = 2;
-
-	if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
-		uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
-	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
-
-        return 0;
-}
-
-
-static int prodigy_hpamp_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-
-	ucontrol->value.integer.value[0] = prodigy_get_headphone_amp(ice);
-	return 0;
-}
-
-
-static int prodigy_hpamp_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-
-	return prodigy_set_headphone_amp(ice,ucontrol->value.integer.value[0]);
-}
-
-
-
-#define PRODIGY_CON_DEEMP \
-        {                                            \
-                .iface = SNDRV_CTL_ELEM_IFACE_MIXER,      \
-                .name =  "DAC De-emphasis", \
-                .info =  prodigy_deemp_info,         \
-                .get =   prodigy_deemp_get, \
-                .put =   prodigy_deemp_put  \
-        }
-
-static int prodigy_deemp_info(snd_kcontrol_t *k, snd_ctl_elem_info_t *uinfo)
-{
-	static char *texts[2] = { "Off", "On" };
-
-	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-	uinfo->count = 1;
-	uinfo->value.enumerated.items = 2;
-
-	if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
-		uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
-	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
-
-        return 0;
-}
-
-static int prodigy_deemp_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-	ucontrol->value.integer.value[0] = (wm_get(ice, 0x15) & 0xf) == 0xf;
-	return 0;
-}
-
-static int prodigy_deemp_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-	int temp, temp2;
-	temp2 = temp = wm_get(ice, 0x15);
-	temp = (temp & ~0xf) | ((ucontrol->value.integer.value[0])*0xf);
-	if (temp != temp2) {
-		wm_put(ice,0x15,temp);
-		return 1;
-	}
-	return 0;
-}
-
-
-#define PRODIGY_CON_OVERSAMPLING \
-        {                                            \
-                .iface = SNDRV_CTL_ELEM_IFACE_MIXER,      \
-                .name =  "ADC Oversampling", \
-                .info =  prodigy_oversampling_info,         \
-                .get =   prodigy_oversampling_get, \
-                .put =   prodigy_oversampling_put  \
-        }
-
-static int prodigy_oversampling_info(snd_kcontrol_t *k, snd_ctl_elem_info_t *uinfo)
-{
-	static char *texts[2] = { "128x", "64x"	};
-
-	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-	uinfo->count = 1;
-	uinfo->value.enumerated.items = 2;
-
-	if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
-		uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
-	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
-
-        return 0;
-}
-
-static int prodigy_oversampling_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-	ucontrol->value.integer.value[0] = (wm_get(ice, 0x17) & 0x8) == 0x8;
-	return 0;
-}
-
-static int prodigy_oversampling_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	int temp, temp2;
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-
-	temp2 = temp = wm_get(ice, 0x17);
-
-	if( ucontrol->value.integer.value[0] ) {
-		temp |= 0x8;
-	} else {
-		temp &= ~0x8;
-	}
-
-	if (temp != temp2) {
-		wm_put(ice,0x17,temp);
-		return 1;
-	}
-	return 0;
-}
-
-
-
-
-/*
- * DAC volume attenuation mixer control
- */
-static int wm_dac_vol_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
-{
-	uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-	uinfo->count = 1;
-	uinfo->value.integer.min = 0;		/* mute */
-	uinfo->value.integer.max = 101;		/* 0dB */
-	return 0;
-}
-
-static int wm_dac_vol_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-	int idx;
-	unsigned short vol;
-
-	down(&ice->gpio_mutex);
-	if (kcontrol->private_value)
-		idx = WM_DAC_MASTER_ATTEN;
-	else
-		idx  = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id) + WM_DAC_ATTEN;
-	vol = wm_get(ice, idx) & 0x7f;
-	if (vol <= 0x1a)
-		ucontrol->value.integer.value[0] = 0;
-	else
-		ucontrol->value.integer.value[0] = vol - 0x1a;
-	up(&ice->gpio_mutex);
-
-	return 0;
-}
-
-static int wm_dac_vol_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-	int idx;
-	unsigned short ovol, nvol;
-	int change;
-
-	snd_ice1712_save_gpio_status(ice);
-	if (kcontrol->private_value)
-		idx = WM_DAC_MASTER_ATTEN;
-	else
-		idx  = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id) + WM_DAC_ATTEN;
-	nvol = ucontrol->value.integer.value[0] + 0x1a;
-	ovol = wm_get(ice, idx) & 0x7f;
-	change = (ovol != nvol);
-	if (change) {
-		if (nvol <= 0x1a && ovol <= 0x1a)
-			change = 0;
-		else
-			wm_put(ice, idx, nvol | 0x180); /* update on zero detect */
-	}
-	snd_ice1712_restore_gpio_status(ice);
-	return change;
-}
-
-/*
- * ADC gain mixer control
- */
-static int wm_adc_vol_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
-{
-	uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-	uinfo->count = 1;
-	uinfo->value.integer.min = 0;		/* -12dB */
-	uinfo->value.integer.max = 0x1f;	/* 19dB */
-	return 0;
-}
-
-static int wm_adc_vol_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-	int idx;
-	unsigned short vol;
-
-	down(&ice->gpio_mutex);
-	idx  = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id) + WM_ADC_GAIN;
-	vol = wm_get(ice, idx) & 0x1f;
-	ucontrol->value.integer.value[0] = vol;
-	up(&ice->gpio_mutex);
-	return 0;
-}
-
-static int wm_adc_vol_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-	int idx;
-	unsigned short ovol, nvol;
-	int change;
-
-	snd_ice1712_save_gpio_status(ice);
-	idx  = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id) + WM_ADC_GAIN;
-	nvol = ucontrol->value.integer.value[0];
-	ovol = wm_get(ice, idx) & 0x1f;
-	change = (ovol != nvol);
-	if (change)
-		wm_put(ice, idx, nvol);
-	snd_ice1712_restore_gpio_status(ice);
-	return change;
-}
-
-/*
- * ADC input mux mixer control
- */
-static int wm_adc_mux_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
-{
-	static char *texts[] = {
-		"CD Left",
-		"CD Right",
-		"Line Left",
-		"Line Right",
-		"Aux Left",
-		"Aux Right",
-		"Mic Left",
-		"Mic Right",
-	};
-	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-	uinfo->count = 2;
-	uinfo->value.enumerated.items = 8;
-	if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
-		uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
-	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
-	return 0;
-}
-
-static int wm_adc_mux_get(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-	unsigned short val;
-
-	down(&ice->gpio_mutex);
-	val = wm_get(ice, WM_ADC_MUX);
-	ucontrol->value.integer.value[0] = val & 7;
-	ucontrol->value.integer.value[1] = (val >> 4) & 7;
-	up(&ice->gpio_mutex);
-	return 0;
-}
-
-static int wm_adc_mux_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
-	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
-	unsigned short oval, nval;
-	int change;
-
-	snd_ice1712_save_gpio_status(ice);
-	oval = wm_get(ice, WM_ADC_MUX);
-	nval = oval & ~0x77;
-	nval |= ucontrol->value.integer.value[0] & 7;
-	nval |= (ucontrol->value.integer.value[1] & 7) << 4;
-	change = (oval != nval);
-	if (change)
-		wm_put(ice, WM_ADC_MUX, nval);
-	snd_ice1712_restore_gpio_status(ice);
-	return 0;
-}
-
-/*
- * mixers
- */
-
-static snd_kcontrol_new_t prodigy71_dac_control __devinitdata = {
-	.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
-	.name = "DAC Volume",
-	.count = 8,
-	.info = wm_dac_vol_info,
-	.get = wm_dac_vol_get,
-	.put = wm_dac_vol_put,
-};
-
-static snd_kcontrol_new_t wm_controls[] __devinitdata = {
-	{
-		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
-		.name = "Master Playback Volume",
-		.info = wm_dac_vol_info,
-		.get = wm_dac_vol_get,
-		.put = wm_dac_vol_put,
-		.private_value = 1,
-	},
-	{
-		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
-		.name = "ADC Volume",
-		.count = 2,
-		.info = wm_adc_vol_info,
-		.get = wm_adc_vol_get,
-		.put = wm_adc_vol_put,
-	},
-	{
-		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
-		.name = "Capture Route",
-		.info = wm_adc_mux_info,
-		.get = wm_adc_mux_get,
-		.put = wm_adc_mux_put,
-	},
-	PRODIGY_CON_HPAMP ,
-	PRODIGY_CON_DEEMP ,
-	PRODIGY_CON_OVERSAMPLING
-};
-
-
-static int __devinit prodigy_add_controls(ice1712_t *ice)
-{
-	unsigned int i;
-	int err;
-
-	err = snd_ctl_add(ice->card, snd_ctl_new1(&prodigy71_dac_control, ice));
-	if (err < 0)
-		return err;
-
-	for (i = 0; i < ARRAY_SIZE(wm_controls); i++) {
-		err = snd_ctl_add(ice->card, snd_ctl_new1(&wm_controls[i], ice));
-		if (err < 0)
-			return err;
-	}
-	return 0;
-}
-
-
-/*
- * initialize the chip
- */
-static int __devinit prodigy_init(ice1712_t *ice)
-{
-	static unsigned short wm_inits[] = {
-
-		/* These come first to reduce init pop noise */
-		0x1b, 0x000,		/* ADC Mux */
-		0x1c, 0x009,		/* Out Mux1 */
-		0x1d, 0x009,		/* Out Mux2 */
-
-		0x18, 0x000,		/* All power-up */
-
-		0x16, 0x022,		/* I2S, normal polarity, 24bit, high-pass on */
-		0x17, 0x006,		/* 128fs, slave mode */
-
-		0x00, 0,		/* DAC1 analog mute */
-		0x01, 0,		/* DAC2 analog mute */
-		0x02, 0,		/* DAC3 analog mute */
-		0x03, 0,		/* DAC4 analog mute */
-		0x04, 0,		/* DAC5 analog mute */
-		0x05, 0,		/* DAC6 analog mute */
-		0x06, 0,		/* DAC7 analog mute */
-		0x07, 0,		/* DAC8 analog mute */
-		0x08, 0x100,		/* master analog mute */
-
-		0x09, 0x7f,		/* DAC1 digital full */
-		0x0a, 0x7f,		/* DAC2 digital full */
-		0x0b, 0x7f,		/* DAC3 digital full */
-		0x0c, 0x7f,		/* DAC4 digital full */
-		0x0d, 0x7f,		/* DAC5 digital full */
-		0x0e, 0x7f,		/* DAC6 digital full */
-		0x0f, 0x7f,		/* DAC7 digital full */
-		0x10, 0x7f,		/* DAC8 digital full */
-		0x11, 0x1FF,		/* master digital full */
-
-		0x12, 0x000,		/* phase normal */
-		0x13, 0x090,		/* unmute DAC L/R */
-		0x14, 0x000,		/* all unmute */
-		0x15, 0x000,		/* no deemphasis, no ZFLG */
-
-		0x19, 0x000,		/* -12dB ADC/L */
-		0x1a, 0x000		/* -12dB ADC/R */
-
-	};
-
-	static unsigned short cs_inits[] = {
-		0x0441, /* RUN */
-		0x0100, /* no mute */
-		0x0200, /* */
-		0x0600, /* slave, 24bit */
-	};
-
-	unsigned int tmp;
-	unsigned int i;
-
-	printk(KERN_INFO "ice1724: AudioTrak Prodigy 7.1 driver rev. 0.82b\n");
-	printk(KERN_INFO "ice1724:   This driver is in beta stage. Forsuccess/failure reporting contact\n");
-	printk(KERN_INFO "ice1724:   Apostolos Dimitromanolakis <apostol@cs.utoronto.ca>\n");
-
-	ice->num_total_dacs = 8;
-	ice->num_total_adcs = 8;
-
-	/* to remeber the register values */
-	ice->akm = snd_kcalloc(sizeof(akm4xxx_t), GFP_KERNEL);
-	if (! ice->akm)
-		return -ENOMEM;
-	ice->akm_codecs = 1;
-
-	snd_ice1712_gpio_set_dir(ice, 0xbfffff); /* fix this for the time being */
-
-	/* reset the wm codec as the SPI mode */
-	snd_ice1712_save_gpio_status(ice);
-	snd_ice1712_gpio_set_mask(ice,~( PRODIGY_WM_RESET|PRODIGY_WM_CS|
-		PRODIGY_CS8415_CS|PRODIGY_HP_AMP_EN ));
-
-	tmp = snd_ice1712_gpio_read(ice);
-	tmp &= ~PRODIGY_WM_RESET;
-	snd_ice1712_gpio_write(ice, tmp);
-	udelay(1);
-	tmp |= PRODIGY_WM_CS | PRODIGY_CS8415_CS;
-	snd_ice1712_gpio_write(ice, tmp);
-	udelay(1);
-	tmp |= PRODIGY_WM_RESET;
-	snd_ice1712_gpio_write(ice, tmp);
-	udelay(1);
-
-	/* initialize WM8770 codec */
-	for (i = 0; i < ARRAY_SIZE(wm_inits); i += 2)
-		wm_put(ice, wm_inits[i], wm_inits[i+1]);
-
-	/* initialize CS8415A codec */
-	for (i = 0; i < ARRAY_SIZE(cs_inits); i++)
-		prodigy_spi_write(ice, PRODIGY_CS8415_CS,
-				 cs_inits[i] | 0x200000, 24);
-
-
-	prodigy_set_headphone_amp(ice, 1);
-
-	snd_ice1712_restore_gpio_status(ice);
-
-	return 0;
-}
-
-/*
- * Prodigy boards don't provide the EEPROM data except for the vendor IDs.
- * hence the driver needs to sets up it properly.
- */
-
-static unsigned char prodigy71_eeprom[] __devinitdata = {
-	0x2b,	/* SYSCONF: clock 512, mpu401, spdif-in/ADC, 4DACs */
-	0x80,	/* ACLINK: I2S */
-	0xf8,	/* I2S: vol, 96k, 24bit, 192k */
-	0xc3,	/* SPDIF: out-en, out-int, spdif-in */
-	0xff,	/* GPIO_DIR */
-	0xff,	/* GPIO_DIR1 */
-	0xbf,	/* GPIO_DIR2 */
-	0x00,	/* GPIO_MASK */
-	0x00,	/* GPIO_MASK1 */
-	0x00,	/* GPIO_MASK2 */
-	0x00,	/* GPIO_STATE */
-	0x00,	/* GPIO_STATE1 */
-	0x00,	/* GPIO_STATE2 */
-};
-
-/* entry point */
-struct snd_ice1712_card_info snd_vt1724_prodigy_cards[] __devinitdata = {
-	{
-		.subvendor = VT1724_SUBDEVICE_PRODIGY71,
-		.name = "Audiotrak Prodigy 7.1",
-		.chip_init = prodigy_init,
-		.build_controls = prodigy_add_controls,
-		.eeprom_size = sizeof(prodigy71_eeprom),
-		.eeprom_data = prodigy71_eeprom,
-	},
-	{ } /* terminator */
-};
Index: debian/alsa-driver/alsa-kernel/pci/ice1712/prodigy.h
diff -u debian/alsa-driver/alsa-kernel/pci/ice1712/prodigy.h:1.1.1.1 debian/alsa-driver/alsa-kernel/pci/ice1712/prodigy.h:removed
--- debian/alsa-driver/alsa-kernel/pci/ice1712/prodigy.h:1.1.1.1	Mon Nov 10 11:00:50 2003
+++ debian/alsa-driver/alsa-kernel/pci/ice1712/prodigy.h	Wed Jun  9 16:50:49 2004
@@ -1,67 +0,0 @@
-#ifndef __SOUND_PRODIGY_H
-#define __SOUND_PRODIGY_H
-
-/*
- *   ALSA driver for VIA VT1724 (Envy24HT)
- *
- *   Lowlevel functions for Terratec PRODIGY cards
- *
- *	Copyright (c) 2003 Takashi Iwai <tiwai@suse.de>
- *
- *   This program is free software; you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or
- *   (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
- *
- */      
-
-#define  PRODIGY_DEVICE_DESC 	       "{AudioTrak,Prodigy 7.1},"
-
-#define VT1724_SUBDEVICE_PRODIGY71	0x33495345	/* PRODIGY 7.1 */
-
-extern struct snd_ice1712_card_info  snd_vt1724_prodigy_cards[];
-
-/* GPIO bits */
-#define PRODIGY_CS8415_CS	(1 << 23)
-#define PRODIGY_CS8415_CDTO	(1 << 22)
-#define PRODIGY_WM_RESET	(1 << 20)
-#define PRODIGY_WM_CLK		(1 << 19)
-#define PRODIGY_WM_DATA		(1 << 18)
-#define PRODIGY_WM_RW		(1 << 17)
-#define PRODIGY_AC97_RESET	(1 << 16)
-#define PRODIGY_DIGITAL_SEL1	(1 << 15)
-// #define PRODIGY_HP_SEL		(1 << 14)
-#define PRODIGY_WM_CS		(1 << 12)
-
-#define PRODIGY_HP_AMP_EN	(1 << 14)
-
-
-/* WM8770 registers */
-#define WM_DAC_ATTEN		0x00	/* DAC1-8 analog attenuation */
-#define WM_DAC_MASTER_ATTEN	0x08	/* DAC master analog attenuation */
-#define WM_DAC_DIG_ATTEN	0x09	/* DAC1-8 digital attenuation */
-#define WM_DAC_DIG_MATER_ATTEN	0x11	/* DAC master digital attenuation */
-#define WM_PHASE_SWAP		0x12	/* DAC phase */
-#define WM_DAC_CTRL1		0x13	/* DAC control bits */
-#define WM_MUTE			0x14	/* mute controls */
-#define WM_DAC_CTRL2		0x15	/* de-emphasis and zefo-flag */
-#define WM_INT_CTRL		0x16	/* interface control */
-#define WM_MASTER		0x17	/* master clock and mode */
-#define WM_POWERDOWN		0x18	/* power-down controls */
-#define WM_ADC_GAIN		0x19	/* ADC gain L(19)/R(1a) */
-#define WM_ADC_MUX		0x1b	/* input MUX */
-#define WM_OUT_MUX1		0x1c	/* output MUX */
-#define WM_OUT_MUX2		0x1e	/* output MUX */
-#define WM_RESET		0x1f	/* software reset */
-
-
-#endif /* __SOUND_PRODIGY_H */
Index: debian/alsa-driver/configure
diff -u debian/alsa-driver/configure:1.23 debian/alsa-driver/configure:1.24
--- debian/alsa-driver/configure:1.23	Tue Apr 13 13:39:25 2004
+++ debian/alsa-driver/configure	Wed Jun  9 16:50:47 2004
@@ -271,7 +271,7 @@
 
 ac_unique_file="acore/sound.patch"
 ac_default_prefix=/usr
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR AS CPP EGREP SRCDIR CROSS_COMPILE CONFIG_SND_KERNELDIR kaversion kversion kpatchlevel ksublevel kextraversion NEW_KBUILD CONFIG_SND_MVERSION CONFIG_PCI CONFIG_EXPERIMENTAL CONFIG_SGI moddir modsubdir moddir_tree processor LD CONFIG_X86 CONFIG_ALPHA CONFIG_L3 CONFIG_ARM CONFIG_PPC CONFIG_ISA CONFIG_PARISC CONFIG_SND_BIT32_EMUL msmp CONFIG_VIDEO_DEV CONFIG_ISAPNP_KERNEL CONFIG_PNP_KERNEL CONFIG_ISAPNP CONFIG_PNP CONFIG_SND_VERSION CONFIG_SND_DATE CONFIG_SND_SEQUENCER CONFIG_SND_RTCTIMER CONFIG_RTC CONFIG_USB CONFIG_PCMCIA CONFIG_X86_PC9800 CONFIG_SOUND CONFIG_SND CONFIG_SPARC64 CONFIG_PPC64 CONFIG_X86_64 CONFIG_IA32_EMULATION CONFIG_SND_TIMER CONFIG_SND_PCM CONFIG_SND_HWDEP CONFIG_SND_RAWMIDI CONFIG_SND_SEQ_DUMMY CONFIG_SND_OSSEMUL CONFIG_SND_MIXER_OSS CONFIG_SND_PCM_OSS CONFIG_SND_SEQUENCER_OSS CONFIG_SND_VERBOSE_PRINTK CONFIG_SND_DEBUG CONFIG_SND_DEBUG_MEMORY CONFIG_SND_DEBUG_DETECT CONFIG_SND_MPU401_UART CONFIG_SND_OPL3_LIB CONFIG_SND_OPL4_LIB CONFIG_SND_VX_LIB CONFIG_SND_DUMMY CONFIG_SND_VIRMIDI CONFIG_SND_MTPAV CONFIG_SND_SERIAL_U16550 CONFIG_SND_MPU401 CONFIG_SND_SERIALMIDI CONFIG_SND_AD1816A CONFIG_SND_AD1848 CONFIG_SND_CS4231 CONFIG_SND_CS4232 CONFIG_SND_CS4236 CONFIG_SND_PC98_CS4232 CONFIG_SND_ES968 CONFIG_SND_ES1688 CONFIG_SND_ES18XX CONFIG_SND_GUSCLASSIC CONFIG_SND_GUSEXTREME CONFIG_SND_GUSMAX CONFIG_SND_INTERWAVE CONFIG_SND_INTERWAVE_STB CONFIG_SND_OPTI92X_AD1848 CONFIG_SND_OPTI92X_CS4231 CONFIG_SND_OPTI93X CONFIG_SND_SB8 CONFIG_SND_SB16 CONFIG_SND_SBAWE CONFIG_SND_SB16_CSP CONFIG_SND_WAVEFRONT CONFIG_SND_ALS100 CONFIG_SND_AZT2320 CONFIG_SND_CMI8330 CONFIG_SND_DT019X CONFIG_SND_OPL3SA2 CONFIG_SND_SGALAXY CONFIG_SND_SSCAPE CONFIG_SND_MSND_PINNACLE CONFIG_SND_AC97_CODEC CONFIG_SND_ALI5451 CONFIG_SND_ATIIXP CONFIG_SND_AU8810 CONFIG_SND_AU8820 CONFIG_SND_AU8830 CONFIG_SND_AZT3328 CONFIG_SND_BT87X CONFIG_SND_CS46XX CONFIG_SND_CS46XX_NEW_DSP CONFIG_SND_CS4281 CONFIG_SND_EMU10K1 CONFIG_SND_KORG1212 CONFIG_SND_MIXART CONFIG_SND_NM256 CONFIG_SND_RME32 CONFIG_SND_RME96 CONFIG_SND_RME9652 CONFIG_SND_HDSP CONFIG_SND_TRIDENT CONFIG_SND_YMFPCI CONFIG_SND_ALS4000 CONFIG_SND_CMIPCI CONFIG_SND_ENS1370 CONFIG_SND_ENS1371 CONFIG_SND_ES1938 CONFIG_SND_ES1968 CONFIG_SND_MAESTRO3 CONFIG_SND_FM801 CONFIG_SND_FM801_TEA575X CONFIG_SND_ICE1712 CONFIG_SND_ICE1724 CONFIG_SND_INTEL8X0 CONFIG_SND_INTEL8X0M CONFIG_SND_SONICVIBES CONFIG_SND_VIA82XX CONFIG_SND_VX222 CONFIG_SND_PDPLUS CONFIG_SND_HDSPM CONFIG_SND_POWERMAC CONFIG_SND_SA11XX_UDA1341 CONFIG_ARCH_SA1100 CONFIG_SND_USB_AUDIO CONFIG_SND_USB_USX2Y CONFIG_SND_VXPOCKET CONFIG_SND_VXP440 CONFIG_SND_PDAUDIOCF CONFIG_SPARC32 CONFIG_SND_SUN_AMD7930 CONFIG_SBUS CONFIG_SND_SUN_CS4231 CONFIG_SND_HARMONY CONFIG_SOUND_PRIME c_opts m_opts GENKSYMS EXTRA_INCLUDES KERNEL_INC LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR AS CPP EGREP SRCDIR CROSS_COMPILE CONFIG_SND_KERNELDIR kaversion kversion kpatchlevel ksublevel kextraversion NEW_KBUILD CONFIG_SND_MVERSION CONFIG_PCI CONFIG_EXPERIMENTAL CONFIG_SGI moddir modsubdir moddir_tree processor LD CONFIG_X86 CONFIG_ALPHA CONFIG_L3 CONFIG_ARM CONFIG_PPC CONFIG_ISA CONFIG_PARISC CONFIG_SND_BIT32_EMUL msmp CONFIG_VIDEO_DEV CONFIG_ISAPNP_KERNEL CONFIG_PNP_KERNEL CONFIG_ISAPNP CONFIG_PNP CONFIG_SND_VERSION CONFIG_SND_DATE CONFIG_SND_SEQUENCER CONFIG_SND_RTCTIMER CONFIG_RTC CONFIG_USB CONFIG_PCMCIA CONFIG_X86_PC9800 CONFIG_SOUND CONFIG_SND CONFIG_SND_TIMER CONFIG_SND_PCM CONFIG_SND_HWDEP CONFIG_SND_RAWMIDI CONFIG_SND_SEQ_DUMMY CONFIG_SND_OSSEMUL CONFIG_SND_MIXER_OSS CONFIG_SND_PCM_OSS CONFIG_SND_SEQUENCER_OSS CONFIG_MIPS64 CONFIG_SPARC64 CONFIG_PPC64 CONFIG_X86_64 CONFIG_IA32_EMULATION CONFIG_SND_VERBOSE_PRINTK CONFIG_SND_DEBUG CONFIG_SND_DEBUG_MEMORY CONFIG_SND_DEBUG_DETECT CONFIG_SND_MPU401_UART CONFIG_SND_OPL3_LIB CONFIG_SND_OPL4_LIB CONFIG_SND_VX_LIB CONFIG_SND_DUMMY CONFIG_SND_VIRMIDI CONFIG_SND_MTPAV CONFIG_SND_SERIAL_U16550 CONFIG_SND_MPU401 CONFIG_SND_SERIALMIDI CONFIG_SND_AD1816A CONFIG_SND_AD1848 CONFIG_SND_CS4231 CONFIG_SND_CS4232 CONFIG_SND_CS4236 CONFIG_SND_PC98_CS4232 CONFIG_SND_ES968 CONFIG_SND_ES1688 CONFIG_SND_ES18XX CONFIG_SND_GUSCLASSIC CONFIG_SND_GUSEXTREME CONFIG_SND_GUSMAX CONFIG_SND_INTERWAVE CONFIG_SND_INTERWAVE_STB CONFIG_SND_OPTI92X_AD1848 CONFIG_SND_OPTI92X_CS4231 CONFIG_SND_OPTI93X CONFIG_SND_SB8 CONFIG_SND_SB16 CONFIG_SND_SBAWE CONFIG_SND_SB16_CSP CONFIG_SND_WAVEFRONT CONFIG_SND_ALS100 CONFIG_SND_AZT2320 CONFIG_SND_CMI8330 CONFIG_SND_DT019X CONFIG_SND_OPL3SA2 CONFIG_SND_SGALAXY CONFIG_SND_SSCAPE CONFIG_SND_MSND_PINNACLE CONFIG_SND_AC97_CODEC CONFIG_SND_ALI5451 CONFIG_SND_ATIIXP CONFIG_SND_AU8810 CONFIG_SND_AU8820 CONFIG_SND_AU8830 CONFIG_SND_AZT3328 CONFIG_SND_BT87X CONFIG_SND_CS46XX CONFIG_SND_CS46XX_NEW_DSP CONFIG_SND_CS4281 CONFIG_SND_EMU10K1 CONFIG_SND_KORG1212 CONFIG_SND_MIXART CONFIG_SND_NM256 CONFIG_SND_RME32 CONFIG_SND_RME96 CONFIG_SND_RME9652 CONFIG_SND_HDSP CONFIG_SND_TRIDENT CONFIG_SND_YMFPCI CONFIG_SND_ALS4000 CONFIG_SND_CMIPCI CONFIG_SND_ENS1370 CONFIG_SND_ENS1371 CONFIG_SND_ES1938 CONFIG_SND_ES1968 CONFIG_SND_MAESTRO3 CONFIG_SND_FM801 CONFIG_SND_FM801_TEA575X CONFIG_SND_ICE1712 CONFIG_SND_ICE1724 CONFIG_SND_INTEL8X0 CONFIG_SND_INTEL8X0M CONFIG_SND_SONICVIBES CONFIG_SND_VIA82XX CONFIG_SND_VX222 CONFIG_SND_PDPLUS CONFIG_SND_HDSPM CONFIG_SND_EMU10K1X CONFIG_SND_ATIIXP_MODEM CONFIG_SND_POWERMAC CONFIG_SND_SA11XX_UDA1341 CONFIG_ARCH_SA1100 CONFIG_SND_USB_AUDIO CONFIG_SND_USB_USX2Y CONFIG_SND_VXPOCKET CONFIG_SND_VXP440 CONFIG_SND_PDAUDIOCF CONFIG_SPARC32 CONFIG_SND_SUN_AMD7930 CONFIG_SBUS CONFIG_SND_SUN_CS4231 CONFIG_SND_HARMONY CONFIG_SOUND_PRIME c_opts m_opts GENKSYMS EXTRA_INCLUDES KERNEL_INC LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -838,9 +838,10 @@
                           ens1371, es1938, es1968, maestro3, fm801,
                           fm801-tea575x, ice1712, ice1724, intel8x0,
                           intel8x0m, sonicvibes, via82xx, vx222, pdplus,
-                          hdspm, powermac, sa11xx-uda1341, usb-audio,
-                          usb-usx2y, vxpocket, vxp440, pdaudiocf,
-                          sun-amd7930, sun-cs4231, harmony
+                          hdspm, emu10k1x, atiixp-modem, powermac,
+                          sa11xx-uda1341, usb-audio, usb-usx2y, vxpocket,
+                          vxp440, pdaudiocf, sun-amd7930, sun-cs4231,
+                          harmony
 
 Some influential environment variables:
   CC          C compiler command
@@ -1257,7 +1258,7 @@
 
 
 
-CONFIG_SND_VERSION="1.0.4"
+CONFIG_SND_VERSION="1.0.5a"
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -2986,11 +2987,6 @@
 
 	CONFIG_SOUND=""
 	CONFIG_SND=""
-	CONFIG_SND_BIT32_EMUL=""
-	CONFIG_SPARC64=""
-	CONFIG_PPC64=""
-	CONFIG_X86_64=""
-	CONFIG_IA32_EMULATION=""
 	CONFIG_SND_TIMER=""
 	CONFIG_SND_PCM=""
 	CONFIG_SND_HWDEP=""
@@ -3001,6 +2997,12 @@
 	CONFIG_SND_MIXER_OSS=""
 	CONFIG_SND_PCM_OSS=""
 	CONFIG_SND_SEQUENCER_OSS=""
+	CONFIG_SND_BIT32_EMUL=""
+	CONFIG_MIPS64=""
+	CONFIG_SPARC64=""
+	CONFIG_PPC64=""
+	CONFIG_X86_64=""
+	CONFIG_IA32_EMULATION=""
 	CONFIG_SND_RTCTIMER=""
 	CONFIG_RTC=""
 	CONFIG_SND_VERBOSE_PRINTK=""
@@ -3050,6 +3052,7 @@
 	CONFIG_SND_SGALAXY=""
 	CONFIG_SND_SSCAPE=""
 	CONFIG_SND_MSND_PINNACLE=""
+	CONFIG_X86=""
 	CONFIG_PCI=""
 	CONFIG_SND_AC97_CODEC=""
 	CONFIG_SND_ALI5451=""
@@ -3092,6 +3095,8 @@
 	CONFIG_SND_VX222=""
 	CONFIG_SND_PDPLUS=""
 	CONFIG_SND_HDSPM=""
+	CONFIG_SND_EMU10K1X=""
+	CONFIG_SND_ATIIXP_MODEM=""
 	CONFIG_PPC=""
 	CONFIG_SND_POWERMAC=""
 	CONFIG_ARM=""
@@ -3143,17 +3148,18 @@
 
 echo "$as_me:$LINENO: checking for directory with kernel source" >&5
 echo $ECHO_N "checking for directory with kernel source... $ECHO_C" >&6
+if test -d "/lib/modules/`uname -r`/build" -o -L "/lib/modules/`uname -r`/build"; then
+  DEFAULT_KERNEL_DIR="/lib/modules/`uname -r`/build"
+else
+  DEFAULT_KERNEL_DIR="/usr/src/linux"
+fi
 
 # Check whether --with-kernel or --without-kernel was given.
 if test "${with_kernel+set}" = set; then
   withval="$with_kernel"
   kerneldir="$withval"
 else
-  if test -d "/lib/modules/`uname -r`/build" -o -L "/lib/modules/`uname -r`/build"; then
-    kerneldir="/lib/modules/`uname -r`/build"
-  else
-    kerneldir="/usr/src/linux"
-  fi
+  kerneldir="$DEFAULT_KERNEL_DIR"
 
 fi;
 cat >>confdefs.h <<_ACEOF
@@ -3172,7 +3178,7 @@
 The file $CONFIG_SND_KERNELDIR/include/linux/version.h does not exist.
 Please, install the package with full kernel sources for your distribution
 or use --with-kernel=dir option to specify another directory with kernel
-sources (default is /usr/src/linux).
+sources (default is $DEFAULT_KERNEL_DIR).
 EOF
   exit 1
 fi
@@ -4243,6 +4249,64 @@
   fi
 
 
+  echo "$as_me:$LINENO: checking for kernel linux/moduleparam.h" >&5
+echo $ECHO_N "checking for kernel linux/moduleparam.h... $ECHO_C" >&6
+  if test -f "$CONFIG_SND_KERNELDIR/include/linux/moduleparam.h"; then
+    echo "$as_me:$LINENO: result: \"yes\"" >&5
+echo "${ECHO_T}\"yes\"" >&6
+    if test -f include/linux/moduleparam.h; then
+      echo "Removing a dummy linux/moduleparam.h."
+      rm -f include/linux/moduleparam.h
+    fi
+  else
+    echo "$as_me:$LINENO: result: \"no\"" >&5
+echo "${ECHO_T}\"no\"" >&6
+    if test ! -f include/linux/moduleparam.h; then
+      if test -z "" ; then
+        echo "Creating a dummy <linux/moduleparam.h>..."
+        mkdir -p include/linux
+        mkdir -p include/asm
+        touch include/linux/moduleparam.h
+      else
+        echo "Creating <linux/moduleparam.h>..."
+        mkdir -p include/linux
+        mkdir -p include/asm
+        echo "" > include/linux/moduleparam.h
+      fi
+    fi
+  fi
+
+
+  echo "$as_me:$LINENO: checking for kernel linux/syscalls.h" >&5
+echo $ECHO_N "checking for kernel linux/syscalls.h... $ECHO_C" >&6
+  if test -f "$CONFIG_SND_KERNELDIR/include/linux/syscalls.h"; then
+    echo "$as_me:$LINENO: result: \"yes\"" >&5
+echo "${ECHO_T}\"yes\"" >&6
+    if test -f include/linux/syscalls.h; then
+      echo "Removing a dummy linux/syscalls.h."
+      rm -f include/linux/syscalls.h
+    fi
+  else
+    echo "$as_me:$LINENO: result: \"no\"" >&5
+echo "${ECHO_T}\"no\"" >&6
+    if test ! -f include/linux/syscalls.h; then
+      if test -z "#include \"syscalls_26.h\"
+" ; then
+        echo "Creating a dummy <linux/syscalls.h>..."
+        mkdir -p include/linux
+        mkdir -p include/asm
+        touch include/linux/syscalls.h
+      else
+        echo "Creating <linux/syscalls.h>..."
+        mkdir -p include/linux
+        mkdir -p include/asm
+        echo "#include \"syscalls_26.h\"
+" > include/linux/syscalls.h
+      fi
+    fi
+  fi
+
+
 if test "$kversion.$kpatchlevel" = "2.6"; then
   cat >>confdefs.h <<\_ACEOF
 #define CONFIG_HAVE_DUMP_STACK 1
@@ -4681,12 +4745,14 @@
 	fprintf(file, "i586tsc");
 #elif defined(CONFIG_M586MMX)
 	fprintf(file, "i586mmx");
-#elif defined(CONFIG_M686) || defined(CONFIG_MPENTIUMIII) || defined(CONFIG_MPENTIUM4)
+#elif defined(CONFIG_M686) || defined(CONFIG_MPENTIUMII) || defined(CONFIG_MPENTIUMIII) || defined(CONFIG_MPENTIUM4) || defined(CONFIG_MPENTIUMM)
 	fprintf(file, "i686");
 #elif defined(CONFIG_MK6)
 	fprintf(file, "k6");
 #elif defined(CONFIG_MK7)
 	fprintf(file, "k7");
+#elif defined(CONFIG_MK8)
+	fprintf(file, "k8");
 #elif defined(CONFIG_MCRUSOE)
 	fprintf(file, "crusoe");
 #elif defined(CONFIG_MWINCHIPC6) || defined(CONFIG_MWINCHIP2) || defined(CONFIG_MWINCHIP3D)
@@ -4792,7 +4858,7 @@
       c_opts="-march=i586"
     fi
     ;;
-  k7)
+  k7|k8)
     if $CC -march=athlon -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then
       c_opts="-march=athlon"
     else
@@ -6690,6 +6756,11 @@
 _ACEOF
 
 	fi
+	CONFIG_MIPS64="m"
+	cat >>confdefs.h <<\_ACEOF
+#define CONFIG_MIPS64_MODULE 1
+_ACEOF
+
 	CONFIG_SND_DUMMY="m"
 	cat >>confdefs.h <<\_ACEOF
 #define CONFIG_SND_DUMMY_MODULE 1
@@ -6766,11 +6837,6 @@
 _ACEOF
 
 	fi
-	CONFIG_X86_PC9800="m"
-	cat >>confdefs.h <<\_ACEOF
-#define CONFIG_X86_PC9800_MODULE 1
-_ACEOF
-
 	if ( test "$CONFIG_ISA" == "y" -o "$CONFIG_ISA" == "m" ) &&
 	   ( test "$CONFIG_ISAPNP" == "y" -o "$CONFIG_ISAPNP" == "m" ); then
 	  CONFIG_SND_ES968="m"
@@ -6938,7 +7004,8 @@
 _ACEOF
 
 	fi
-	if ( test "$CONFIG_ISA" == "y" -o "$CONFIG_ISA" == "m" ); then
+	if ( test "$CONFIG_ISA" == "y" -o "$CONFIG_ISA" == "m" ) &&
+	   ( test "$CONFIG_X86" == "y" -o "$CONFIG_X86" == "m" ); then
 	  CONFIG_SND_MSND_PINNACLE="m"
 	  cat >>confdefs.h <<\_ACEOF
 #define CONFIG_SND_MSND_PINNACLE_MODULE 1
@@ -7221,6 +7288,20 @@
 _ACEOF
 
 	fi
+	if ( test "$CONFIG_PCI" == "y" -o "$CONFIG_PCI" == "m" ); then
+	  CONFIG_SND_EMU10K1X="m"
+	  cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_EMU10K1X_MODULE 1
+_ACEOF
+
+	fi
+	if ( test "$CONFIG_PCI" == "y" -o "$CONFIG_PCI" == "m" ); then
+	  CONFIG_SND_ATIIXP_MODEM="m"
+	  cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_ATIIXP_MODEM_MODULE 1
+_ACEOF
+
+	fi
 	if ( test "$CONFIG_PPC" == "y" -o "$CONFIG_PPC" == "m" ); then
 	  CONFIG_SND_POWERMAC="m"
 	  cat >>confdefs.h <<\_ACEOF
@@ -9779,6 +9860,60 @@
 _ACEOF
 
 		;;
+	emu10k1x)
+		CONFIG_SND="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_MODULE 1
+_ACEOF
+
+		CONFIG_SND_TIMER="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_TIMER_MODULE 1
+_ACEOF
+
+		CONFIG_SND_PCM="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_PCM_MODULE 1
+_ACEOF
+
+		CONFIG_SND_AC97_CODEC="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_AC97_CODEC_MODULE 1
+_ACEOF
+
+		CONFIG_SND_EMU10K1X="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_EMU10K1X_MODULE 1
+_ACEOF
+
+		;;
+	atiixp-modem)
+		CONFIG_SND="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_MODULE 1
+_ACEOF
+
+		CONFIG_SND_TIMER="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_TIMER_MODULE 1
+_ACEOF
+
+		CONFIG_SND_PCM="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_PCM_MODULE 1
+_ACEOF
+
+		CONFIG_SND_AC97_CODEC="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_AC97_CODEC_MODULE 1
+_ACEOF
+
+		CONFIG_SND_ATIIXP_MODEM="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_ATIIXP_MODEM_MODULE 1
+_ACEOF
+
+		;;
 	powermac)
 		CONFIG_SND="m"
 		cat >>confdefs.h <<\_ACEOF
@@ -10189,6 +10324,10 @@
 
 
 
+
+
+
+
 c_opts="$c_opts -DLINUX"
 m_opts=""
 if test -r /etc/asound/make_opts; then
@@ -10878,10 +11017,6 @@
 s,@CONFIG_X86_PC9800@,$CONFIG_X86_PC9800,;t t
 s,@CONFIG_SOUND@,$CONFIG_SOUND,;t t
 s,@CONFIG_SND@,$CONFIG_SND,;t t
-s,@CONFIG_SPARC64@,$CONFIG_SPARC64,;t t
-s,@CONFIG_PPC64@,$CONFIG_PPC64,;t t
-s,@CONFIG_X86_64@,$CONFIG_X86_64,;t t
-s,@CONFIG_IA32_EMULATION@,$CONFIG_IA32_EMULATION,;t t
 s,@CONFIG_SND_TIMER@,$CONFIG_SND_TIMER,;t t
 s,@CONFIG_SND_PCM@,$CONFIG_SND_PCM,;t t
 s,@CONFIG_SND_HWDEP@,$CONFIG_SND_HWDEP,;t t
@@ -10891,6 +11026,11 @@
 s,@CONFIG_SND_MIXER_OSS@,$CONFIG_SND_MIXER_OSS,;t t
 s,@CONFIG_SND_PCM_OSS@,$CONFIG_SND_PCM_OSS,;t t
 s,@CONFIG_SND_SEQUENCER_OSS@,$CONFIG_SND_SEQUENCER_OSS,;t t
+s,@CONFIG_MIPS64@,$CONFIG_MIPS64,;t t
+s,@CONFIG_SPARC64@,$CONFIG_SPARC64,;t t
+s,@CONFIG_PPC64@,$CONFIG_PPC64,;t t
+s,@CONFIG_X86_64@,$CONFIG_X86_64,;t t
+s,@CONFIG_IA32_EMULATION@,$CONFIG_IA32_EMULATION,;t t
 s,@CONFIG_SND_VERBOSE_PRINTK@,$CONFIG_SND_VERBOSE_PRINTK,;t t
 s,@CONFIG_SND_DEBUG@,$CONFIG_SND_DEBUG,;t t
 s,@CONFIG_SND_DEBUG_MEMORY@,$CONFIG_SND_DEBUG_MEMORY,;t t
@@ -10974,6 +11114,8 @@
 s,@CONFIG_SND_VX222@,$CONFIG_SND_VX222,;t t
 s,@CONFIG_SND_PDPLUS@,$CONFIG_SND_PDPLUS,;t t
 s,@CONFIG_SND_HDSPM@,$CONFIG_SND_HDSPM,;t t
+s,@CONFIG_SND_EMU10K1X@,$CONFIG_SND_EMU10K1X,;t t
+s,@CONFIG_SND_ATIIXP_MODEM@,$CONFIG_SND_ATIIXP_MODEM,;t t
 s,@CONFIG_SND_POWERMAC@,$CONFIG_SND_POWERMAC,;t t
 s,@CONFIG_SND_SA11XX_UDA1341@,$CONFIG_SND_SA11XX_UDA1341,;t t
 s,@CONFIG_ARCH_SA1100@,$CONFIG_ARCH_SA1100,;t t
Index: debian/alsa-driver/configure.in
diff -u debian/alsa-driver/configure.in:1.23 debian/alsa-driver/configure.in:1.24
--- debian/alsa-driver/configure.in:1.23	Tue Apr 13 13:39:25 2004
+++ debian/alsa-driver/configure.in	Wed Jun  9 16:50:47 2004
@@ -5,7 +5,7 @@
 AC_PREREQ(2.53)
 AC_INIT(acore/sound.patch)
 AC_PREFIX_DEFAULT(/usr)
-CONFIG_SND_VERSION="1.0.4"
+CONFIG_SND_VERSION="1.0.5a"
 
 dnl Checks for programs.
 AC_PROG_CC
@@ -63,15 +63,16 @@
 
 dnl Check for directory with kernel source...
 AC_MSG_CHECKING(for directory with kernel source)
+if test -d "/lib/modules/`uname -r`/build" -o -L "/lib/modules/`uname -r`/build"; then
+  DEFAULT_KERNEL_DIR="/lib/modules/`uname -r`/build"
+else
+  DEFAULT_KERNEL_DIR="/usr/src/linux"
+fi
 AC_ARG_WITH(kernel,
   [  --with-kernel=dir       give the directory with kernel sources]
   [                        [/usr/src/linux]],
   kerneldir="$withval",
-  if test -d "/lib/modules/`uname -r`/build" -o -L "/lib/modules/`uname -r`/build"; then
-    kerneldir="/lib/modules/`uname -r`/build"
-  else
-    kerneldir="/usr/src/linux"
-  fi
+  kerneldir="$DEFAULT_KERNEL_DIR"
 )
 AC_DEFINE_UNQUOTED(CONFIG_SND_KERNELDIR, "$kerneldir")
 CONFIG_SND_KERNELDIR="$kerneldir"
@@ -85,7 +86,7 @@
 The file $CONFIG_SND_KERNELDIR/include/linux/version.h does not exist.
 Please, install the package with full kernel sources for your distribution
 or use --with-kernel=dir option to specify another directory with kernel
-sources (default is /usr/src/linux).
+sources (default is $DEFAULT_KERNEL_DIR).
 EOF
   exit 1
 fi
@@ -476,6 +477,9 @@
 ])
 CHECK_KERNEL_HEADER(linux/pmu.h, [#include <asm/pmu.h>
 ])
+CHECK_KERNEL_HEADER(linux/moduleparam.h)
+CHECK_KERNEL_HEADER(linux/syscalls.h, [#include \"syscalls_26.h\"
+])
 
 dnl Check for dump_stack
 if test "$kversion.$kpatchlevel" = "2.6"; then
@@ -623,12 +627,14 @@
 	fprintf(file, "i586tsc");
 #elif defined(CONFIG_M586MMX)
 	fprintf(file, "i586mmx");
-#elif defined(CONFIG_M686) || defined(CONFIG_MPENTIUMIII) || defined(CONFIG_MPENTIUM4)
+#elif defined(CONFIG_M686) || defined(CONFIG_MPENTIUMII) || defined(CONFIG_MPENTIUMIII) || defined(CONFIG_MPENTIUM4) || defined(CONFIG_MPENTIUMM)
 	fprintf(file, "i686");
 #elif defined(CONFIG_MK6)
 	fprintf(file, "k6");
 #elif defined(CONFIG_MK7)
 	fprintf(file, "k7");
+#elif defined(CONFIG_MK8)
+	fprintf(file, "k8");
 #elif defined(CONFIG_MCRUSOE)
 	fprintf(file, "crusoe");
 #elif defined(CONFIG_MWINCHIPC6) || defined(CONFIG_MWINCHIP2) || defined(CONFIG_MWINCHIP3D)
@@ -713,7 +719,7 @@
       c_opts="-march=i586"
     fi
     ;;
-  k7)
+  k7|k8)
     if $CC -march=athlon -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then
       c_opts="-march=athlon"
     else
Index: debian/alsa-driver/debian/changelog
diff -u debian/alsa-driver/debian/changelog:1.249 debian/alsa-driver/debian/changelog:1.250
--- debian/alsa-driver/debian/changelog:1.249	Wed Jun  9 11:44:41 2004
+++ debian/alsa-driver/debian/changelog	Wed Jun  9 16:50:48 2004
@@ -1,3 +1,11 @@
+alsa-driver (1.0.5a-1) unstable; urgency=low
+
+  * UNRELEASED
+  * New upstream release.
+  * UNRELEASED
+
+ -- David B. Harris <dbharris@debian.org>  Wed,  9 Jun 2004 18:50:03 -0400
+
 alsa-driver (1.0.4-4) unstable; urgency=low
 
   * Steve Kowalik:
Index: debian/alsa-driver/drivers/serialmidi.c
diff -u debian/alsa-driver/drivers/serialmidi.c:1.8 debian/alsa-driver/drivers/serialmidi.c:1.9
--- debian/alsa-driver/drivers/serialmidi.c:1.8	Tue Feb  3 11:36:44 2004
+++ debian/alsa-driver/drivers/serialmidi.c	Wed Jun  9 16:50:48 2004
@@ -27,10 +27,10 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/tty.h>
+#include <linux/moduleparam.h>
 #include <asm/uaccess.h>
 #include <sound/core.h>
 #include <sound/rawmidi.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <linux/delay.h>
 
@@ -57,28 +57,35 @@
 static int speed[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 38400}; /* 9600,19200,38400,57600,115200 */
 static int adaptor[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = SERIAL_ADAPTOR_SOUNDCANVAS};
 static int outs[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};     /* 1 to 16 */
+static int devices[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};     /* 1 to 8 */
+static int handshake[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};     /* bool */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for serial device.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for serial device.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable serial device.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(sdev, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(sdev, charp, boot_devs, 0444);
 MODULE_PARM_DESC(sdev, "Device file string for serial device.");
 MODULE_PARM_SYNTAX(sdev, SNDRV_ID_DESC);
-MODULE_PARM(speed, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(speed, int, boot_devs, 0444);
 MODULE_PARM_DESC(speed, "Speed in bauds.");
 MODULE_PARM_SYNTAX(speed, SNDRV_ENABLED ",allows:{9600,19200,38400,57600,115200},dialog:list");
-MODULE_PARM(adaptor, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(adaptor, int, boot_devs, 0444);
 MODULE_PARM_DESC(adaptor, "Type of adaptor.");
 MODULE_PARM_SYNTAX(adaptor, SNDRV_ENABLED ",allows:{{0=Soundcanvas,1=MS-124T,2=MS-124W S/A,3=MS-124W M/B}},dialog:list");
-MODULE_PARM(outs, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(outs, int, boot_devs, 0444);
 MODULE_PARM_DESC(outs, "Number of MIDI outputs.");
 MODULE_PARM_SYNTAX(outs, SNDRV_ENABLED ",allows:{{1,16}},dialog:list");
+module_param_array(devices, int, boot_devs, 0444);
+MODULE_PARM_DESC(devices, "Number of devices to attach to the card.");
+module_param_array(handshake, int, boot_devs, 0444);
+MODULE_PARM_DESC(handshake, "Do handshaking.");
 
 #define SERIAL_MODE_NOT_OPENED		(0)
 #define SERIAL_MODE_BIT_INPUT		(0)
@@ -89,6 +96,7 @@
 typedef struct _snd_serialmidi {
 	snd_card_t *card;
 	char *sdev;			/* serial device name (e.g. /dev/ttyS0) */
+	int dev_idx;
 	unsigned int speed;		/* speed in bauds */
 	unsigned int adaptor;		/* see SERIAL_ADAPTOR_ */
 	unsigned long mode;		/* see SERIAL_MODE_* */
@@ -104,6 +112,7 @@
 	void (*old_write_wakeup)(struct tty_struct *);
 	int old_exclusive;
 	int old_low_latency;
+	int handshake;
 	unsigned char tx_buf[TX_BUF_SIZE];
 } serialmidi_t;
 
@@ -203,14 +212,16 @@
 		break;
 	}
 
-	cflag = speed | CREAD | CSIZE | CS8 | CRTSCTS | HUPCL;
-	// cflag = speed | CREAD | CSIZE | CS8 | HUPCL;
+	if (serial->handshake)
+		cflag = speed | CREAD | CSIZE | CS8 | CRTSCTS | HUPCL;
+	else
+		cflag = speed | CREAD | CSIZE | CS8 | HUPCL;
 
 	switch (serial->adaptor) {
 	case SERIAL_ADAPTOR_MS124W_SA:
 	case SERIAL_ADAPTOR_MS124W_MB:
 	case SERIAL_ADAPTOR_MS124T:
-		
+		/* TODO */
 		break;
 	}
 	
@@ -435,11 +446,11 @@
         snd_rawmidi_t *rrawmidi;
         int err;
 
-        if ((err = snd_rawmidi_new(serial->card, "UART Serial MIDI", 0, serial->outs, 1, &rrawmidi)) < 0)
+        if ((err = snd_rawmidi_new(serial->card, "UART Serial MIDI", serial->dev_idx, serial->outs, 1, &rrawmidi)) < 0)
                 return err;
         snd_rawmidi_set_ops(rrawmidi, SNDRV_RAWMIDI_STREAM_INPUT, &snd_serialmidi_input);
         snd_rawmidi_set_ops(rrawmidi, SNDRV_RAWMIDI_STREAM_OUTPUT, &snd_serialmidi_output);
-        sprintf(rrawmidi->name, "Serial MIDI #0");
+	snprintf(rrawmidi->name, sizeof(rrawmidi->name), "%s %d", serial->card->shortname, serial->dev_idx);
         rrawmidi->info_flags = SNDRV_RAWMIDI_INFO_OUTPUT |
                                SNDRV_RAWMIDI_INFO_INPUT |
                                SNDRV_RAWMIDI_INFO_DUPLEX;
@@ -450,7 +461,8 @@
 
 static int __init snd_serialmidi_create(snd_card_t *card, const char *sdev,
 					unsigned int speed, unsigned int adaptor,
-					unsigned int outs, serialmidi_t **rserial)
+					unsigned int outs, int idx, int hshake,
+					serialmidi_t **rserial)
 {
 	static snd_device_ops_t ops = {
 		.dev_free =	snd_serialmidi_dev_free,
@@ -483,6 +495,7 @@
 
 	init_MUTEX(&serial->open_lock);
 	serial->card = card;
+	serial->dev_idx = idx;
 	serial->sdev = snd_kmalloc_strdup(sdev, GFP_KERNEL);
 	if (serial->sdev == NULL) {
 		snd_serialmidi_free(serial);
@@ -491,6 +504,7 @@
 	serial->adaptor = adaptor;
 	serial->speed = speed;
 	serial->outs = outs;
+	serial->handshake = hshake;
 	memset(serial->prev_status, 0x80, sizeof(unsigned char) * SNDRV_SERIAL_MAX_OUTS);
 	
 	/* Register device */
@@ -519,16 +533,52 @@
 	if (card == NULL)
 		return -ENOMEM;
 	strcpy(card->driver, "Serial MIDI");
-	strcpy(card->shortname, card->driver);
-
-	if ((err = snd_serialmidi_create(card,
-					 sdev[dev],
-					 speed[dev],
-					 adaptor[dev],
-					 outs[dev],
-					 &serial)) < 0) {
-		snd_card_free(card);
-		return err;
+	if (id[dev] && *id[dev])
+		snprintf(card->shortname, sizeof(card->shortname), "Serial MIDI %s", card->id);
+	else
+		strcpy(card->shortname, card->driver);
+
+	if (devices[dev] > 1) {
+		int i, start_dev;
+		char devname[32];
+		/* assign multiple devices to a single card */
+		if (devices[dev] > 8) {
+			printk(KERN_ERR "serialmidi: invalid devices %d\n", devices[dev]);
+			snd_card_free(card);
+			return -EINVAL;
+		}
+		/* device name mangling */
+		strncpy(devname, sdev[dev], sizeof(devname));
+		devname[31] = 0;
+		i = strlen(devname);
+		if (i > 0) i--;
+		if (devname[i] >= '0' && devname[i] <= '9') {
+			for (; i > 0; i--)
+				if (devname[i] < '0' || devname[i] > '9') {
+					i++;
+					break;
+				}
+			start_dev = simple_strtoul(devname + i, NULL, 0);
+			devname[i] = 0;
+		} else
+			start_dev = 0;
+		for (i = 0; i < devices[dev]; i++) {
+			char devname2[33];
+			sprintf(devname2, "%s%d", devname, start_dev + i);
+			if ((err = snd_serialmidi_create(card, devname2, speed[dev],
+							 adaptor[dev], outs[dev], i,
+							 handshake[dev], &serial)) < 0) {
+				snd_card_free(card);
+				return err;
+			}
+		}
+	} else {
+		if ((err = snd_serialmidi_create(card, sdev[dev], speed[dev],
+						 adaptor[dev], outs[dev], 0,
+						 handshake[dev], &serial)) < 0) {
+			snd_card_free(card);
+			return err;
+		}
 	}
 
 	sprintf(card->longname, "%s at %s", card->shortname, sdev[dev]);
@@ -569,29 +619,3 @@
 
 module_init(alsa_card_serialmidi_init)
 module_exit(alsa_card_serialmidi_exit)
-
-#ifndef MODULE
-
-/* format is: snd-serialmidi=enable,index,id,
-			     sdev,speed,adaptor,outs */
-
-static int __init alsa_card_serialmidi_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_id(&str,&sdev[nr_dev]) == 2 &&
-	       get_option(&str,&speed[nr_dev]) == 2 &&
-	       get_option(&str,&adaptor[nr_dev]) == 2 &&
-	       get_option(&str,&outs[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-serialmidi=", alsa_card_serialmidi_setup);
-
-#endif /* ifndef MODULE */
Index: debian/alsa-driver/include/adriver.h
diff -u debian/alsa-driver/include/adriver.h:1.18 debian/alsa-driver/include/adriver.h:1.19
--- debian/alsa-driver/include/adriver.h:1.18	Tue Apr 13 13:39:26 2004
+++ debian/alsa-driver/include/adriver.h	Wed Jun  9 16:50:48 2004
@@ -478,4 +478,29 @@
 #define snd_dma_continuous_data(x)	((struct device *)(unsigned long)(x))
 #endif
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+#include <linux/moduleparam.h>
+#undef module_param
+#define SNDRV_MODULE_TYPE_int	"i"
+#define SNDRV_MODULE_TYPE_bool	"b"
+#define SNDRV_MODULE_TYPE_uint	"i"
+#define SNDRV_MODULE_TYPE_charp	"s"
+#define SNDRV_MODULE_TYPE_long	"l"
+#define module_param_array(name, type, num, perm) \
+	MODULE_PARM(name, "1-" __MODULE_STRING(SNDRV_CARDS) SNDRV_MODULE_TYPE_##type)
+#define module_param(name, type, perm) \
+	MODULE_PARM(name, SNDRV_MODULE_TYPE_##type)
+#endif
+
+/* power management compatibility layer */
+#ifdef CONFIG_PM
+#ifdef PCI_OLD_SUSPEND
+void snd_card_pci_suspend(struct pci_dev *dev);
+void snd_card_pci_resume(struct pci_dev *dev);
+#define SND_PCI_PM_CALLBACKS \
+	.suspend = snd_card_pci_suspend,  .resume = snd_card_pci_resume
+#endif
+#endif
+
+
 #endif /* __SOUND_LOCAL_DRIVER_H */
Index: debian/alsa-driver/include/config1.h.in
diff -u debian/alsa-driver/include/config1.h.in:1.12 debian/alsa-driver/include/config1.h.in:1.13
--- debian/alsa-driver/include/config1.h.in:1.12	Tue Apr 13 13:39:26 2004
+++ debian/alsa-driver/include/config1.h.in	Wed Jun  9 16:50:48 2004
@@ -4,11 +4,6 @@
 
 #undef CONFIG_SOUND_MODULE
 #undef CONFIG_SND_MODULE
-#undef CONFIG_SND_BIT32_EMUL_MODULE
-#undef CONFIG_SPARC64_MODULE
-#undef CONFIG_PPC64_MODULE
-#undef CONFIG_X86_64_MODULE
-#undef CONFIG_IA32_EMULATION_MODULE
 #undef CONFIG_SND_TIMER_MODULE
 #undef CONFIG_SND_PCM_MODULE
 #undef CONFIG_SND_HWDEP_MODULE
@@ -19,6 +14,12 @@
 #undef CONFIG_SND_MIXER_OSS_MODULE
 #undef CONFIG_SND_PCM_OSS_MODULE
 #undef CONFIG_SND_SEQUENCER_OSS
+#undef CONFIG_SND_BIT32_EMUL_MODULE
+#undef CONFIG_MIPS64_MODULE
+#undef CONFIG_SPARC64_MODULE
+#undef CONFIG_PPC64_MODULE
+#undef CONFIG_X86_64_MODULE
+#undef CONFIG_IA32_EMULATION_MODULE
 #undef CONFIG_SND_RTCTIMER_MODULE
 #undef CONFIG_RTC_MODULE
 #undef CONFIG_SND_VERBOSE_PRINTK
@@ -68,6 +69,7 @@
 #undef CONFIG_SND_SGALAXY_MODULE
 #undef CONFIG_SND_SSCAPE_MODULE
 #undef CONFIG_SND_MSND_PINNACLE_MODULE
+#undef CONFIG_X86_MODULE
 #undef CONFIG_PCI_MODULE
 #undef CONFIG_SND_AC97_CODEC_MODULE
 #undef CONFIG_SND_ALI5451_MODULE
@@ -110,6 +112,8 @@
 #undef CONFIG_SND_VX222_MODULE
 #undef CONFIG_SND_PDPLUS_MODULE
 #undef CONFIG_SND_HDSPM_MODULE
+#undef CONFIG_SND_EMU10K1X_MODULE
+#undef CONFIG_SND_ATIIXP_MODEM_MODULE
 #undef CONFIG_PPC_MODULE
 #undef CONFIG_SND_POWERMAC_MODULE
 #undef CONFIG_ARM_MODULE
Index: debian/alsa-driver/pci/ac97/ac97_proc.c
diff -u debian/alsa-driver/pci/ac97/ac97_proc.c:1.1.1.1 debian/alsa-driver/pci/ac97/ac97_proc.c:removed
--- debian/alsa-driver/pci/ac97/ac97_proc.c:1.1.1.1	Tue Jun 17 12:43:19 2003
+++ debian/alsa-driver/pci/ac97/ac97_proc.c	Wed Jun  9 16:50:49 2004
@@ -1,2 +0,0 @@
-#define __NO_VERSION__
-#include "../../alsa-kernel/pci/ac97/ac97_proc.c"
Index: debian/alsa-driver/pci/ali5451/ali5451.c
diff -u /dev/null debian/alsa-driver/pci/ali5451/ali5451.c:1.3
--- /dev/null	Wed Jun  9 16:50:49 2004
+++ debian/alsa-driver/pci/ali5451/ali5451.c	Wed Jun  9 16:50:48 2004
@@ -0,0 +1,2 @@
+#include "../../alsa-kernel/pci/ali5451/ali5451.c"
+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/ali5451/ali5451.patch
diff -u debian/alsa-driver/pci/ali5451/ali5451.patch:1.1.1.1 debian/alsa-driver/pci/ali5451/ali5451.patch:removed
--- debian/alsa-driver/pci/ali5451/ali5451.patch:1.1.1.1	Wed Jun 18 05:12:52 2003
+++ debian/alsa-driver/pci/ali5451/ali5451.patch	Wed Jun  9 16:50:49 2004
@@ -1,34 +0,0 @@
---- ali5451.c	2003-06-10 15:18:52.000000000 +0200
-+++ ali5451.c.old	2003-06-10 15:18:39.000000000 +0200
-@@ -1963,6 +1963,7 @@
- 	return;
- }
- 
-+#ifndef PCI_OLD_SUSPEND
- static int snd_ali_suspend(struct pci_dev *dev, u32 state)
- {
- 	ali_t *chip = snd_magic_cast(ali_t, pci_get_drvdata(dev), return -ENXIO);
-@@ -1975,6 +1976,18 @@
- 	ali_resume(chip);
- 	return 0;
- }
-+#else
-+static void snd_ali_suspend(struct pci_dev *dev)
-+{
-+	ali_t *chip = snd_magic_cast(ali_t, pci_get_drvdata(dev), return);
-+	ali_suspend(chip);
-+}
-+static void snd_ali_resume(struct pci_dev *dev)
-+{
-+	ali_t *chip = snd_magic_cast(ali_t, pci_get_drvdata(dev), return);
-+	ali_resume(chip);
-+}
-+#endif
- #endif /* CONFIG_PM */
- 
- static int snd_ali_free(ali_t * codec)
-@@ -2314,3 +2327,4 @@
- __setup("snd-ali5451=", alsa_card_ali_setup);
- 
- #endif /* ifndef */
-+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/cs4281.c
diff -u /dev/null debian/alsa-driver/pci/cs4281.c:1.3
--- /dev/null	Wed Jun  9 16:50:49 2004
+++ debian/alsa-driver/pci/cs4281.c	Wed Jun  9 16:50:48 2004
@@ -0,0 +1,2 @@
+#include "../alsa-kernel/pci/cs4281.c"
+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/cs4281.patch
diff -u debian/alsa-driver/pci/cs4281.patch:1.1.1.1 debian/alsa-driver/pci/cs4281.patch:removed
--- debian/alsa-driver/pci/cs4281.patch:1.1.1.1	Wed Jun 18 05:12:52 2003
+++ debian/alsa-driver/pci/cs4281.patch	Wed Jun  9 16:50:49 2004
@@ -1,34 +0,0 @@
---- cs4281.c	2003-06-10 15:21:01.000000000 +0200
-+++ cs4281.c.old	2003-06-10 15:20:49.000000000 +0200
-@@ -2119,6 +2119,7 @@
- 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
- }
- 
-+#ifndef PCI_OLD_SUSPEND
- static int snd_cs4281_suspend(struct pci_dev *dev, u32 state)
- {
- 	cs4281_t *chip = snd_magic_cast(cs4281_t, pci_get_drvdata(dev), return -ENXIO);
-@@ -2131,6 +2132,18 @@
- 	cs4281_resume(chip);
- 	return 0;
- }
-+#else
-+static void snd_cs4281_suspend(struct pci_dev *dev)
-+{
-+	cs4281_t *chip = snd_magic_cast(cs4281_t, pci_get_drvdata(dev), return);
-+	cs4281_suspend(chip);
-+}
-+static void snd_cs4281_resume(struct pci_dev *dev)
-+{
-+	cs4281_t *chip = snd_magic_cast(cs4281_t, pci_get_drvdata(dev), return);
-+	cs4281_resume(chip);
-+}
-+#endif
- 
- /* callback */
- static int snd_cs4281_set_power_state(snd_card_t *card, unsigned int power_state)
-@@ -2206,3 +2219,4 @@
- __setup("snd-cs4281=", alsa_card_cs4281_setup);
- 
- #endif /* ifndef MODULE */
-+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/cs46xx/cs46xx.c
diff -u /dev/null debian/alsa-driver/pci/cs46xx/cs46xx.c:1.3
--- /dev/null	Wed Jun  9 16:50:49 2004
+++ debian/alsa-driver/pci/cs46xx/cs46xx.c	Wed Jun  9 16:50:49 2004
@@ -0,0 +1,2 @@
+#include "../../alsa-kernel/pci/cs46xx/cs46xx.c"
+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/cs46xx/cs46xx.patch
diff -u debian/alsa-driver/pci/cs46xx/cs46xx.patch:1.1.1.1 debian/alsa-driver/pci/cs46xx/cs46xx.patch:removed
--- debian/alsa-driver/pci/cs46xx/cs46xx.patch:1.1.1.1	Wed Jun 18 05:12:52 2003
+++ debian/alsa-driver/pci/cs46xx/cs46xx.patch	Wed Jun  9 16:50:49 2004
@@ -1,34 +0,0 @@
---- cs46xx.c	2003-06-10 15:29:36.000000000 +0200
-+++ cs46xx.c.old	2003-06-10 15:29:26.000000000 +0200
-@@ -163,6 +163,7 @@
- }
- 
- #ifdef CONFIG_PM
-+#ifndef PCI_OLD_SUSPEND
- static int snd_card_cs46xx_suspend(struct pci_dev *pci, u32 state)
- {
- 	cs46xx_t *chip = snd_magic_cast(cs46xx_t, pci_get_drvdata(pci), return -ENXIO);
-@@ -175,6 +176,18 @@
- 	snd_cs46xx_resume(chip);
- 	return 0;
- }
-+#else
-+static void snd_card_cs46xx_suspend(struct pci_dev *pci)
-+{
-+	cs46xx_t *chip = snd_magic_cast(cs46xx_t, pci_get_drvdata(pci), return);
-+	snd_cs46xx_suspend(chip);
-+}
-+static void snd_card_cs46xx_resume(struct pci_dev *pci)
-+{
-+	cs46xx_t *chip = snd_magic_cast(cs46xx_t, pci_get_drvdata(pci), return);
-+	snd_cs46xx_resume(chip);
-+}
-+#endif
- #endif
- 
- static void __devexit snd_card_cs46xx_remove(struct pci_dev *pci)
-@@ -237,3 +250,4 @@
- __setup("snd-cs46xx=", alsa_card_cs46xx_setup);
- 
- #endif /* ifndef MODULE */
-+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/es1968.c
diff -u /dev/null debian/alsa-driver/pci/es1968.c:1.3
--- /dev/null	Wed Jun  9 16:50:49 2004
+++ debian/alsa-driver/pci/es1968.c	Wed Jun  9 16:50:48 2004
@@ -0,0 +1,2 @@
+#include "../alsa-kernel/pci/es1968.c"
+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/es1968.patch
diff -u debian/alsa-driver/pci/es1968.patch:1.1.1.1 debian/alsa-driver/pci/es1968.patch:removed
--- debian/alsa-driver/pci/es1968.patch:1.1.1.1	Wed Jun 18 05:12:52 2003
+++ debian/alsa-driver/pci/es1968.patch	Wed Jun  9 16:50:49 2004
@@ -1,34 +0,0 @@
---- es1968.c	2003-06-10 15:20:37.000000000 +0200
-+++ es1968.c.old	2003-06-10 15:20:22.000000000 +0200
-@@ -2468,6 +2468,7 @@
- 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
- }
- 
-+#ifndef PCI_OLD_SUSPEND
- static int snd_es1968_suspend(struct pci_dev *dev, u32 state)
- {
- 	es1968_t *chip = snd_magic_cast(es1968_t, pci_get_drvdata(dev), return -ENXIO);
-@@ -2480,6 +2481,18 @@
- 	es1968_resume(chip);
- 	return 0;
- }
-+#else
-+static void snd_es1968_suspend(struct pci_dev *dev)
-+{
-+	es1968_t *chip = snd_magic_cast(es1968_t, pci_get_drvdata(dev), return);
-+	es1968_suspend(chip);
-+}
-+static void snd_es1968_resume(struct pci_dev *dev)
-+{
-+	es1968_t *chip = snd_magic_cast(es1968_t, pci_get_drvdata(dev), return);
-+	es1968_resume(chip);
-+}
-+#endif
- 
- /* callback */
- static int snd_es1968_set_power_state(snd_card_t *card, unsigned int power_state)
-@@ -2868,3 +2881,4 @@
- __setup("snd-es1968=", alsa_card_es1968_setup);
- 
- #endif /* ifndef MODULE */
-+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/ice1712/prodigy.c
diff -u debian/alsa-driver/pci/ice1712/prodigy.c:1.1.1.1 debian/alsa-driver/pci/ice1712/prodigy.c:removed
--- debian/alsa-driver/pci/ice1712/prodigy.c:1.1.1.1	Mon Nov 10 11:01:21 2003
+++ debian/alsa-driver/pci/ice1712/prodigy.c	Wed Jun  9 16:50:49 2004
@@ -1,2 +0,0 @@
-#define __NO_VERSION__
-#include "../../alsa-kernel/pci/ice1712/prodigy.c"
Index: debian/alsa-driver/pci/maestro3.c
diff -u /dev/null debian/alsa-driver/pci/maestro3.c:1.3
--- /dev/null	Wed Jun  9 16:50:50 2004
+++ debian/alsa-driver/pci/maestro3.c	Wed Jun  9 16:50:48 2004
@@ -0,0 +1,2 @@
+#include "../alsa-kernel/pci/maestro3.c"
+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/maestro3.patch
diff -u debian/alsa-driver/pci/maestro3.patch:1.1.1.1 debian/alsa-driver/pci/maestro3.patch:removed
--- debian/alsa-driver/pci/maestro3.patch:1.1.1.1	Wed Jun 18 05:12:52 2003
+++ debian/alsa-driver/pci/maestro3.patch	Wed Jun  9 16:50:50 2004
@@ -1,34 +0,0 @@
---- maestro3.c	2003-06-10 15:23:49.000000000 +0200
-+++ maestro3.c.old	2003-06-10 15:23:56.000000000 +0200
-@@ -2458,6 +2458,7 @@
- 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
- }
- 
-+#ifndef PCI_OLD_SUSPEND
- static int snd_m3_suspend(struct pci_dev *pci, u32 state)
- {
- 	m3_t *chip = snd_magic_cast(m3_t, pci_get_drvdata(pci), return -ENXIO);
-@@ -2470,6 +2471,18 @@
- 	m3_resume(chip);
- 	return 0;
- }
-+#else
-+static void snd_m3_suspend(struct pci_dev *pci)
-+{
-+	m3_t *chip = snd_magic_cast(m3_t, pci_get_drvdata(pci), return);
-+	m3_suspend(chip);
-+}
-+static void snd_m3_resume(struct pci_dev *pci)
-+{
-+	m3_t *chip = snd_magic_cast(m3_t, pci_get_drvdata(pci), return);
-+	m3_resume(chip);
-+}
-+#endif
- 
- /* callback */
- static int snd_m3_set_power_state(snd_card_t *card, unsigned int power_state)
-@@ -2769,3 +2782,4 @@
- __setup("snd-maestro3=", alsa_card_maestro3_setup);
- 
- #endif /* ifndef MODULE */
-+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/nm256/nm256.c
diff -u /dev/null debian/alsa-driver/pci/nm256/nm256.c:1.3
--- /dev/null	Wed Jun  9 16:50:50 2004
+++ debian/alsa-driver/pci/nm256/nm256.c	Wed Jun  9 16:50:49 2004
@@ -0,0 +1,2 @@
+#include "../../alsa-kernel/pci/nm256/nm256.c"
+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/nm256/nm256.patch
diff -u debian/alsa-driver/pci/nm256/nm256.patch:1.1.1.1 debian/alsa-driver/pci/nm256/nm256.patch:removed
--- debian/alsa-driver/pci/nm256/nm256.patch:1.1.1.1	Wed Jun 18 05:12:53 2003
+++ debian/alsa-driver/pci/nm256/nm256.patch	Wed Jun  9 16:50:50 2004
@@ -1,34 +0,0 @@
---- nm256.c	2003-06-10 15:13:55.000000000 +0200
-+++ nm256.c.old	2003-06-10 15:14:45.000000000 +0200
-@@ -1307,6 +1307,7 @@
- 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
- }
- 
-+#ifndef PCI_OLD_SUSPEND
- static int snd_nm256_suspend(struct pci_dev *dev, u32 state)
- {
- 	nm256_t *chip = snd_magic_cast(nm256_t, pci_get_drvdata(dev), return -ENXIO);
-@@ -1319,6 +1320,18 @@
- 	nm256_resume(chip);
- 	return 0;
- }
-+#else
-+static void snd_nm256_suspend(struct pci_dev *dev)
-+{
-+	nm256_t *chip = snd_magic_cast(nm256_t, pci_get_drvdata(dev), return);
-+	nm256_suspend(chip);
-+}
-+static void snd_nm256_resume(struct pci_dev *dev)
-+{
-+	nm256_t *chip = snd_magic_cast(nm256_t, pci_get_drvdata(dev), return);
-+	nm256_resume(chip);
-+}
-+#endif
- 
- /* callback */
- static int snd_nm256_set_power_state(snd_card_t *card, unsigned int power_state)
-@@ -1707,3 +1720,4 @@
- __setup("snd-nm256=", alsa_card_nm256_setup);
- 
- #endif /* ifndef MODULE */
-+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/trident/trident.c
diff -u /dev/null debian/alsa-driver/pci/trident/trident.c:1.3
--- /dev/null	Wed Jun  9 16:50:50 2004
+++ debian/alsa-driver/pci/trident/trident.c	Wed Jun  9 16:50:49 2004
@@ -0,0 +1 @@
+#include "../../alsa-kernel/pci/trident/trident.c"
Index: debian/alsa-driver/pci/trident/trident.patch
diff -u debian/alsa-driver/pci/trident/trident.patch:1.1.1.1 debian/alsa-driver/pci/trident/trident.patch:removed
--- debian/alsa-driver/pci/trident/trident.patch:1.1.1.1	Wed Jun 18 05:12:53 2003
+++ debian/alsa-driver/pci/trident/trident.patch	Wed Jun  9 16:50:50 2004
@@ -1,29 +0,0 @@
---- trident.c	2003-06-10 15:25:34.000000000 +0200
-+++ trident.c.old	2003-06-10 15:25:09.000000000 +0200
-@@ -182,6 +182,7 @@
- }
- 
- #ifdef CONFIG_PM
-+#ifndef PCI_OLD_SUSPEND
- static int snd_card_trident_suspend(struct pci_dev *pci, u32 state)
- {
- 	trident_t *chip = snd_magic_cast(trident_t, pci_get_drvdata(pci), return -ENXIO);
-@@ -194,6 +195,18 @@
- 	snd_trident_resume(chip);
- 	return 0;
- }
-+#else
-+static void snd_card_trident_suspend(struct pci_dev *pci)
-+{
-+	trident_t *chip = snd_magic_cast(trident_t, pci_get_drvdata(pci), return);
-+	snd_trident_suspend(chip);
-+}
-+static void snd_card_trident_resume(struct pci_dev *pci)
-+{
-+	trident_t *chip = snd_magic_cast(trident_t, pci_get_drvdata(pci), return);
-+	snd_trident_resume(chip);
-+}
-+#endif
- #endif
- 
- static struct pci_driver driver = {
Index: debian/alsa-driver/pci/ymfpci/ymfpci.c
diff -u /dev/null debian/alsa-driver/pci/ymfpci/ymfpci.c:1.3
--- /dev/null	Wed Jun  9 16:50:50 2004
+++ debian/alsa-driver/pci/ymfpci/ymfpci.c	Wed Jun  9 16:50:49 2004
@@ -0,0 +1,2 @@
+#include "../../alsa-kernel/pci/ymfpci/ymfpci.c"
+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pci/ymfpci/ymfpci.patch
diff -u debian/alsa-driver/pci/ymfpci/ymfpci.patch:1.1.1.1 debian/alsa-driver/pci/ymfpci/ymfpci.patch:removed
--- debian/alsa-driver/pci/ymfpci/ymfpci.patch:1.1.1.1	Wed Jun 18 05:12:53 2003
+++ debian/alsa-driver/pci/ymfpci/ymfpci.patch	Wed Jun  9 16:50:50 2004
@@ -1,34 +0,0 @@
---- ymfpci.c	2003-06-10 15:28:14.000000000 +0200
-+++ ymfpci.c.old	2003-06-10 15:28:03.000000000 +0200
-@@ -249,6 +249,7 @@
- }
- 
- #ifdef CONFIG_PM
-+#ifndef PCI_OLD_SUSPEND
- static int snd_card_ymfpci_suspend(struct pci_dev *pci, u32 state)
- {
- 	ymfpci_t *chip = snd_magic_cast(ymfpci_t, pci_get_drvdata(pci), return -ENXIO);
-@@ -261,6 +262,18 @@
- 	snd_ymfpci_resume(chip);
- 	return 0;
- }
-+#else
-+static void snd_card_ymfpci_suspend(struct pci_dev *pci)
-+{
-+	ymfpci_t *chip = snd_magic_cast(ymfpci_t, pci_get_drvdata(pci), return);
-+	snd_ymfpci_suspend(chip);
-+}
-+static void snd_card_ymfpci_resume(struct pci_dev *pci)
-+{
-+	ymfpci_t *chip = snd_magic_cast(ymfpci_t, pci_get_drvdata(pci), return);
-+	snd_ymfpci_resume(chip);
-+}
-+#endif
- #endif
- 
- static void __devexit snd_card_ymfpci_remove(struct pci_dev *pci)
-@@ -326,3 +339,4 @@
- __setup("snd-ymfpci=", alsa_card_ymfpci_setup);
- 
- #endif /* ifndef MODULE */
-+EXPORT_NO_SYMBOLS;
Index: debian/alsa-driver/pcmcia/vx/vxpocket.c
diff -u debian/alsa-driver/pcmcia/vx/vxpocket.c:1.1.1.5 debian/alsa-driver/pcmcia/vx/vxpocket.c:removed
--- debian/alsa-driver/pcmcia/vx/vxpocket.c:1.1.1.5	Thu Jan  8 04:23:23 2004
+++ debian/alsa-driver/pcmcia/vx/vxpocket.c	Wed Jun  9 16:50:50 2004
@@ -1,17 +0,0 @@
-#include <linux/config.h>
-#include <linux/version.h>
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
-#if defined(CONFIG_MODVERSIONS) && !defined(__GENKSYMS__) && !defined(__DEPEND__)
-#define MODVERSIONS
-#include <linux/modversions.h>
-#include "sndversions.h"
-#endif
-#endif
-
-#include "config.h"
-#include "adriver.h"
-#include "compat_cs.h"
-
-#include "../../alsa-kernel/pcmcia/vx/vxpocket.c"
-EXPORT_NO_SYMBOLS;