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

David B Harris dbharris-guest@quantz.debian.org
Tue, 03 Feb 2004 19:36:44 +0100


    Date: Tuesday, February 3, 2004 @ 19:36:44
  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/config.h.in include/config1.h.in

New upstream alsa-driver release, 1.0.2


------------------------------------------+
 Makefile                                 |    3 -
 Rules.make                               |    5 +
 alsa-kernel/core/memalloc.c              |   75 +++++++++++++++++------------
 alsa-kernel/include/ac97_codec.h         |   18 ++++++
 alsa-kernel/isa/azt2320.c                |   11 ++--
 alsa-kernel/isa/es18xx.c                 |   39 ++++++++-------
 alsa-kernel/isa/opti9xx/opti92x-ad1848.c |   31 ++++++-----
 alsa-kernel/isa/sb/sb16.c                |   40 ++++++++-------
 alsa-kernel/pci/emu10k1/emu10k1_main.c   |    4 +
 alsa-kernel/pci/emu10k1/emufx.c          |   28 ++++++----
 configure                                |   35 ++++++++++---
 configure.in                             |   20 ++++---
 debian/changelog                         |    3 -
 drivers/serialmidi.c                     |    2 
 include/adriver.h                        |   36 ++++++++-----
 include/config.h.in                      |    4 -
 include/config1.h.in                     |    1 
 17 files changed, 226 insertions(+), 129 deletions(-)


Index: debian/alsa-driver/Makefile
diff -u debian/alsa-driver/Makefile:1.12 debian/alsa-driver/Makefile:1.13
--- debian/alsa-driver/Makefile:1.12	Thu Dec 25 04:02:30 2003
+++ debian/alsa-driver/Makefile	Tue Feb  3 19:36:40 2004
@@ -89,7 +89,7 @@
 .PHONY: compile
 compile: include/sound/version.h include/sndversions.h
 ifdef NEW_KBUILD
-	@for d in $(SUBDIRS); do if ! $(MAKE) -C $(CONFIG_SND_KERNELDIR) SUBDIRS=$(MAINSRCDIR)/$$d modules; then exit 1; fi; done
+	$(MAKE) -C $(CONFIG_SND_KERNELDIR) SUBDIRS=$(MAINSRCDIR)/kbuild modules
 else
 	@for d in $(SUBDIRS); do if ! $(MAKE) -C $$d; then exit 1; fi; done
 endif
@@ -184,6 +184,7 @@
 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
 else
 	@for d in $(SUBDIRS); do if ! $(MAKE) -C $$d clean; then exit 1; fi; done
Index: debian/alsa-driver/Rules.make
diff -u debian/alsa-driver/Rules.make:1.12 debian/alsa-driver/Rules.make:1.13
--- debian/alsa-driver/Rules.make:1.12	Thu Dec 25 04:02:30 2003
+++ debian/alsa-driver/Rules.make	Tue Feb  3 19:36:40 2004
@@ -129,7 +129,12 @@
 	patch -p0 -i $<
 
 %.isapnp: %.c
+ifeq (y,$(CONFIG_ISAPNP))
 	$(CPP) -C -D__KERNEL__ $(CFLAGS) $(EXTRA_CFLAGS) -D__isapnp_now__ -DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) $(CFLAGS_$@) $(CFLAGS_$@) $< | awk -f $(TOPDIR)/utils/convert_isapnp_ids > $@
+else
+	rm -f $@
+	touch $@
+endif
 
 #
 #
Index: debian/alsa-driver/alsa-kernel/core/memalloc.c
diff -u debian/alsa-driver/alsa-kernel/core/memalloc.c:1.12 debian/alsa-driver/alsa-kernel/core/memalloc.c:1.13
--- debian/alsa-driver/alsa-kernel/core/memalloc.c:1.12	Thu Dec 25 04:02:30 2003
+++ debian/alsa-driver/alsa-kernel/core/memalloc.c	Tue Feb  3 19:36:40 2004
@@ -94,16 +94,19 @@
 				    dma_addr_t *dma_handle)
 {
 	void *ret;
-	u64 dma_mask;
+	u64 dma_mask, cdma_mask;
 	unsigned long mask;
 
 	if (hwdev == NULL)
 		return pci_alloc_consistent(hwdev, size, dma_handle);
-	dma_mask = hwdev->consistent_dma_mask;
-	mask = (unsigned long)dma_mask;
+	dma_mask = hwdev->dma_mask;
+	cdma_mask = hwdev->consistent_dma_mask;
+	mask = (unsigned long)dma_mask && (unsigned long)cdma_mask;
+	hwdev->dma_mask = 0xffffffff; /* do without masking */
 	hwdev->consistent_dma_mask = 0xffffffff; /* do without masking */
 	ret = pci_alloc_consistent(hwdev, size, dma_handle);
-	hwdev->consistent_dma_mask = dma_mask; /* restore */
+	hwdev->dma_mask = dma_mask; /* restore */
+	hwdev->consistent_dma_mask = cdma_mask; /* restore */
 	if (ret) {
 		/* obtained address is out of range? */
 		if (((unsigned long)*dma_handle + size - 1) & ~mask) {
@@ -207,8 +210,9 @@
 		dmab->addr = 0;
 		return -ENXIO;
 	}
-	if (dmab->area)
-		dmab->bytes = size;
+	if (! dmab->area)
+		return -ENOMEM;
+	dmab->bytes = size;
 	return 0;
 }
 
@@ -342,6 +346,8 @@
 	down(&list_mutex);
 	mem = mem_list_find(dev, 0);
 	if (mem) {
+		if (mem->used)
+			printk(KERN_WARNING "snd-page-alloc: releasing the used block (type=%d, id=0x%x\n", mem->dev.type, mem->dev.id);
 		snd_dma_free_pages(dev, &mem->buffer);
 		if (! dmab || ! dmab->bytes) {
 			/* remove the entry */
@@ -361,7 +367,7 @@
 			return -ENOMEM;
 		}
 		mem->dev = *dev;
-		list_add(&mem->list, &mem_list_head);
+		list_add_tail(&mem->list, &mem_list_head);
 	}
 	/* store the entry */
 	mem->used = 1;
@@ -824,33 +830,41 @@
 
 	while ((pci = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, pci)) != NULL) {
 		struct prealloc_dev *dev;
+		unsigned int i;
 		if (card >= SNDRV_CARDS)
 			break;
 		for (dev = prealloc_devices; dev->vendor; dev++) {
-			unsigned int i;
-			if (dev->vendor != pci->vendor || dev->device != pci->device)
-				continue;
-			if (! enable[card++])
-				continue;
+			if (dev->vendor == pci->vendor && dev->device == pci->device)
+				break;
+		}
+		if (! dev->vendor)
+			continue;
+		if (! enable[card++]) {
+			printk(KERN_DEBUG "snd-page-alloc: skipping card %d, device %04x:%04x\n", card, pci->vendor, pci->device);
+			continue;
+		}
 			
-			if (pci_set_consistent_dma_mask(pci, dev->dma_mask) < 0) {
-				printk(KERN_ERR "snd-page-alloc: cannot set DMA mask %lx for pci %04x:%04x\n", dev->dma_mask, dev->vendor, dev->device);
-				continue;
+		if (pci_set_dma_mask(pci, dev->dma_mask) < 0 ||
+		    pci_set_consistent_dma_mask(pci, dev->dma_mask) < 0) {
+			printk(KERN_ERR "snd-page-alloc: cannot set DMA mask %lx for pci %04x:%04x\n", dev->dma_mask, dev->vendor, dev->device);
+			continue;
+		}
+		for (i = 0; i < dev->buffers; i++) {
+			struct snd_mem_list *mem;
+			mem = kmalloc(sizeof(*mem), GFP_KERNEL);
+			if (! mem) {
+				printk(KERN_WARNING "snd-page-alloc: can't malloc memlist\n");
+				break;
 			}
-
-			for (i = 0; i < dev->buffers; i++) {
-				struct snd_dma_device dma;
-				struct snd_dma_buffer buf;
-				snd_dma_device_pci(&dma, pci, SNDRV_DMA_DEVICE_UNUSED);
-				memset(&buf, 0, sizeof(buf));
-				snd_dma_alloc_pages(&dma, dev->size, &buf);
-				if (buf.bytes) {
-					if (snd_dma_set_reserved(&dma, &buf) < 0) {
-						printk(KERN_WARNING "snd-page-alloc: cannot reserve buffer\n");
-						snd_dma_free_pages(&dma, &buf);
-					}
-				} else
-					printk(KERN_WARNING "snd-page-alloc: cannot allocate buffer pages (size = %d)\n", dev->size);
+			memset(mem, 0, sizeof(*mem));
+			snd_dma_device_pci(&mem->dev, pci, SNDRV_DMA_DEVICE_UNUSED);
+			if (snd_dma_alloc_pages(&mem->dev, dev->size, &mem->buffer) < 0) {
+				printk(KERN_WARNING "snd-page-alloc: cannot allocate buffer pages (size = %d)\n", dev->size);
+				kfree(mem);
+			} else {
+				down(&list_mutex);
+				list_add_tail(&mem->list, &mem_list_head);
+				up(&list_mutex);
 			}
 		}
 	}
@@ -894,7 +908,8 @@
 		case SNDRV_DMA_TYPE_PCI:
 		case SNDRV_DMA_TYPE_PCI_SG:
 			if (mem->dev.dev.pci) {
-				len += sprintf(page + len, "PCI [%04x:%04x]",
+				len += sprintf(page + len, "%s [%04x:%04x]",
+					       mem->dev.type == SNDRV_DMA_TYPE_PCI ? "PCI" : "PCI-SG",
 					       mem->dev.dev.pci->vendor,
 					       mem->dev.dev.pci->device);
 			}
Index: debian/alsa-driver/alsa-kernel/include/ac97_codec.h
diff -u debian/alsa-driver/alsa-kernel/include/ac97_codec.h:1.7 debian/alsa-driver/alsa-kernel/include/ac97_codec.h:1.8
--- debian/alsa-driver/alsa-kernel/include/ac97_codec.h:1.7	Thu Dec 25 04:02:30 2003
+++ debian/alsa-driver/alsa-kernel/include/ac97_codec.h	Tue Feb  3 19:36:41 2004
@@ -207,6 +207,24 @@
 #define AC97_MEA_PRG		0x4000	/* HADC power down (high) */
 #define AC97_MEA_PRH		0x8000	/* HDAC power down (high) */
 
+/* modem gpio status defines */
+#define AC97_GPIO_LINE1_OH      0x0001  /* Off Hook Line1 */
+#define AC97_GPIO_LINE1_RI      0x0002  /* Ring Detect Line1 */
+#define AC97_GPIO_LINE1_CID     0x0004  /* Caller ID path enable Line1 */
+#define AC97_GPIO_LINE1_LCS     0x0008  /* Loop Current Sense Line1 */
+#define AC97_GPIO_LINE1_PULSE   0x0010  /* Opt./ Pulse Dial Line1 (out) */
+#define AC97_GPIO_LINE1_HL1R    0x0020  /* Opt./ Handset to Line1 relay control (out) */
+#define AC97_GPIO_LINE1_HOHD    0x0040  /* Opt./ Handset off hook detect Line1 (in) */
+#define AC97_GPIO_LINE12_AC     0x0080  /* Opt./ Int.bit 1 / Line1/2 AC (out) */
+#define AC97_GPIO_LINE12_DC     0x0100  /* Opt./ Int.bit 2 / Line1/2 DC (out) */
+#define AC97_GPIO_LINE12_RS     0x0200  /* Opt./ Int.bit 3 / Line1/2 RS (out) */
+#define AC97_GPIO_LINE2_OH      0x0400  /* Off Hook Line2 */
+#define AC97_GPIO_LINE2_RI      0x0800  /* Ring Detect Line2 */
+#define AC97_GPIO_LINE2_CID     0x1000  /* Caller ID path enable Line2 */
+#define AC97_GPIO_LINE2_LCS     0x2000  /* Loop Current Sense Line2 */
+#define AC97_GPIO_LINE2_PULSE   0x4000  /* Opt./ Pulse Dial Line2 (out) */
+#define AC97_GPIO_LINE2_HL1R    0x8000  /* Opt./ Handset to Line2 relay control (out) */
+
 /* specific - SigmaTel */
 #define AC97_SIGMATEL_ANALOG	0x6c	/* Analog Special */
 #define AC97_SIGMATEL_DAC2INVERT 0x6e
Index: debian/alsa-driver/alsa-kernel/isa/azt2320.c
diff -u debian/alsa-driver/alsa-kernel/isa/azt2320.c:1.7 debian/alsa-driver/alsa-kernel/isa/azt2320.c:1.8
--- debian/alsa-driver/alsa-kernel/isa/azt2320.c:1.7	Thu Dec 25 04:02:30 2003
+++ debian/alsa-driver/alsa-kernel/isa/azt2320.c	Tue Feb  3 19:36:41 2004
@@ -255,6 +255,7 @@
 		snd_card_free(card);
 		return error;
 	}
+	snd_card_set_dev(card, &pcard->card->dev);
 
 	if ((error = snd_card_azt2320_enable_wss(port[dev]))) {
 		snd_card_free(card);
@@ -270,6 +271,11 @@
 		return error;
 	}
 
+	strcpy(card->driver, "AZT2320");
+	strcpy(card->shortname, "Aztech AZT2320");
+	sprintf(card->longname, "%s, WSS at 0x%lx, irq %i, dma %i&%i",
+		card->shortname, chip->port, irq[dev], dma1[dev], dma2[dev]);
+
 	if ((error = snd_cs4231_pcm(chip, 0, NULL)) < 0) {
 		snd_card_free(card);
 		return error;
@@ -308,11 +314,6 @@
 			}
 		}
 	}
-
-	strcpy(card->driver, "AZT2320");
-	strcpy(card->shortname, "Aztech AZT2320");
-	sprintf(card->longname, "%s soundcard, WSS at 0x%lx, irq %i, dma %i&%i",
-		card->shortname, chip->port, irq[dev], dma1[dev], dma2[dev]);
 
 	if ((error = snd_card_register(card)) < 0) {
 		snd_card_free(card);
Index: debian/alsa-driver/alsa-kernel/isa/es18xx.c
diff -u debian/alsa-driver/alsa-kernel/isa/es18xx.c:1.3 debian/alsa-driver/alsa-kernel/isa/es18xx.c:1.4
--- debian/alsa-driver/alsa-kernel/isa/es18xx.c:1.3	Fri Nov 14 12:48:09 2003
+++ debian/alsa-driver/alsa-kernel/isa/es18xx.c	Tue Feb  3 19:36:41 2004
@@ -1471,8 +1471,10 @@
 		chip->ctrl_port = inb(chip->port + 0x05) << 8;
 		chip->ctrl_port += inb(chip->port + 0x05);
 
-		if ((chip->res_ctrl_port = request_region(chip->ctrl_port, 8, "ES18xx - CTRL")) == NULL)
+		if ((chip->res_ctrl_port = request_region(chip->ctrl_port, 8, "ES18xx - CTRL")) == NULL) {
+			snd_printk(KERN_ERR PFX "unable go grab port 0x%lx\n", chip->ctrl_port);
 			return -EBUSY;
+		}
 
 		return 0;
 	}
@@ -2056,9 +2058,12 @@
 		return -ENOMEM;
 	acard = (struct snd_audiodrive *)card->private_data;
 #ifdef CONFIG_PNP
-	if (isapnp[dev] && (err = snd_audiodrive_pnp(dev, acard, pcard, pid)) < 0) {
-		snd_card_free(card);
-		return err;
+	if (isapnp[dev]) {
+		if ((err = snd_audiodrive_pnp(dev, acard, pcard, pid)) < 0) {
+			snd_card_free(card);
+			return err;
+		}
+		snd_card_set_dev(card, &pcard->card->dev);
 	}
 #endif
 
@@ -2096,6 +2101,20 @@
 		snd_card_free(card);
 		return err;
 	}
+
+	sprintf(card->driver, "ES%x", chip->version);
+	sprintf(card->shortname, "ESS AudioDrive ES%x", chip->version);
+	if (xdma1 != xdma2)
+		sprintf(card->longname, "%s at 0x%lx, irq %d, dma1 %d, dma2 %d",
+			card->shortname,
+			chip->port,
+			xirq, xdma1, xdma2);
+	else
+		sprintf(card->longname, "%s at 0x%lx, irq %d, dma %d",
+			card->shortname,
+			chip->port,
+			xirq, xdma1);
+
 	if ((err = snd_es18xx_pcm(chip, 0, NULL)) < 0) {
 		snd_card_free(card);
 		return err;
@@ -2137,18 +2156,6 @@
 		card->power_state_private_data = chip;
 	}
 #endif
-	sprintf(card->driver, "ES%x", chip->version);
-	sprintf(card->shortname, "ESS AudioDrive ES%x", chip->version);
-	if (xdma1 != xdma2)
-		sprintf(card->longname, "%s at 0x%lx, irq %d, dma1 %d, dma2 %d",
-			card->shortname,
-			chip->port,
-			xirq, xdma1, xdma2);
-	else
-		sprintf(card->longname, "%s at 0x%lx, irq %d, dma %d",
-			card->shortname,
-			chip->port,
-			xirq, xdma1);
 	if ((err = snd_card_register(card)) < 0) {
 		snd_card_free(card);
 		return err;
Index: debian/alsa-driver/alsa-kernel/isa/opti9xx/opti92x-ad1848.c
diff -u debian/alsa-driver/alsa-kernel/isa/opti9xx/opti92x-ad1848.c:1.7 debian/alsa-driver/alsa-kernel/isa/opti9xx/opti92x-ad1848.c:1.8
--- debian/alsa-driver/alsa-kernel/isa/opti9xx/opti92x-ad1848.c:1.7	Thu Dec 25 04:02:30 2003
+++ debian/alsa-driver/alsa-kernel/isa/opti9xx/opti92x-ad1848.c	Tue Feb  3 19:36:41 2004
@@ -1305,23 +1305,27 @@
 	codec->dma2 = -1;
 
 	if ((codec->res_port = request_region(chip->wss_base + 4, 4, "OPTI93x CODEC")) == NULL) {
+		snd_printk(KERN_ERR "opti9xx: can't grab port 0x%lx\n", chip->wss_base + 4);
 		snd_opti93x_free(codec);
 		return -EBUSY;
 	}
 	if (request_dma(dma1, "OPTI93x - 1")) {
+		snd_printk(KERN_ERR "opti9xx: can't grab DMA1 %d\n", dma1);
 		snd_opti93x_free(codec);
 		return -EBUSY;
 	}
 	codec->dma1 = chip->dma1;
 	if (request_dma(dma2, "OPTI93x - 2")) {
+		snd_printk(KERN_ERR "opti9xx: can't grab DMA2 %d\n", dma2);
 		snd_opti93x_free(codec);
 		return -EBUSY;
 	}
 	codec->dma2 = chip->dma2;
 
 	if (request_irq(chip->irq, snd_opti93x_interrupt, SA_INTERRUPT, DRIVER_NAME" - WSS", codec)) {
-	  snd_opti93x_free(codec);
-	  return -EBUSY;
+		snd_printk(KERN_ERR "opti9xx: can't grab IRQ %d\n", chip->irq);
+		snd_opti93x_free(codec);
+		return -EBUSY;
 	}
 
 	codec->card = card;
@@ -1969,6 +1973,7 @@
 		}
 		if (hw <= OPTi9XX_HW_82C930)
 			chip->mc_base -= 0x80;
+		snd_card_set_dev(card, &pcard->card->dev);
 	} else {
 #endif	/* CONFIG_PNP */
 		if ((error = snd_card_opti9xx_detect(card, chip)) < 0) {
@@ -2101,6 +2106,17 @@
 		return error;
 	}
 #endif
+	strcpy(card->driver, chip->name);
+	sprintf(card->shortname, "OPTi %s", card->driver);
+#if defined(CS4231) || defined(OPTi93X)
+	sprintf(card->longname, "%s, %s at 0x%lx, irq %d, dma %d&%d",
+		card->shortname, pcm->name, chip->wss_base + 4,
+		chip->irq, chip->dma1, chip->dma2);
+#else
+	sprintf(card->longname, "%s, %s at 0x%lx, irq %d, dma %d",
+		card->shortname, pcm->name, chip->wss_base + 4,
+		chip->irq, chip->dma1);
+#endif	/* CS4231 || OPTi93X */
 
 	if (chip->mpu_port <= 0 || chip->mpu_port == SNDRV_AUTO_PORT)
 		rmidi = NULL;
@@ -2154,17 +2170,6 @@
 		}
 	}
 
-	strcpy(card->driver, chip->name);
-	sprintf(card->shortname, "OPTi %s", card->driver);
-#if defined(CS4231) || defined(OPTi93X)
-	sprintf(card->longname, "%s soundcard, %s at 0x%lx, irq %d, dma %d&%d",
-		card->shortname, pcm->name, chip->wss_base + 4,
-		chip->irq, chip->dma1, chip->dma2);
-#else
-	sprintf(card->longname, "%s soundcard, %s at 0x%lx, irq %d, dma %d",
-		card->shortname, pcm->name, chip->wss_base + 4,
-		chip->irq, chip->dma1);
-#endif	/* CS4231 || OPTi93X */
 	if ((error = snd_card_register(card))) {
 		snd_card_free(card);
 		return error;
Index: debian/alsa-driver/alsa-kernel/isa/sb/sb16.c
diff -u debian/alsa-driver/alsa-kernel/isa/sb/sb16.c:1.7 debian/alsa-driver/alsa-kernel/isa/sb/sb16.c:1.8
--- debian/alsa-driver/alsa-kernel/isa/sb/sb16.c:1.7	Thu Dec 25 04:02:30 2003
+++ debian/alsa-driver/alsa-kernel/isa/sb/sb16.c	Tue Feb  3 19:36:41 2004
@@ -77,7 +77,7 @@
 static int isapnp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
 #endif
 static long port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;	/* 0x220,0x240,0x260,0x280 */
-static long mpu_port[SNDRV_CARDS] = {0x330, 0x300,[2 ... (SNDRV_CARDS - 1)] = -1};
+static long mpu_port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;	/* 0x330,0x300 */
 static long fm_port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;
 #ifdef SNDRV_SBAWE_EMU8000
 static long awe_port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;
@@ -157,6 +157,8 @@
 
 static snd_card_t *snd_sb16_legacy[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
 
+#ifdef CONFIG_PNP
+
 static struct pnp_card_device_id snd_sb16_pnpids[] = {
 #ifndef SNDRV_SBAWE
 	/* Sound Blaster 16 PnP */
@@ -250,6 +252,8 @@
 
 MODULE_DEVICE_TABLE(pnp_card, snd_sb16_pnpids);
 
+#endif /* CONFIG_PNP */
+
 #ifdef SNDRV_SBAWE_EMU8000
 #define DRIVER_NAME	"snd-card-sbawe"
 #else
@@ -393,6 +397,7 @@
 			snd_card_free(card);
 			return err;
 		}
+		snd_card_set_dev(card, &pcard->card->dev);
 	}
 #endif
 
@@ -465,6 +470,22 @@
 		return -ENXIO;
 	}
 
+	strcpy(card->driver,
+#ifdef SNDRV_SBAWE_EMU8000
+			awe_port[dev] > 0 ? "SB AWE" :
+#endif
+			"SB16");
+	strcpy(card->shortname, chip->name);
+	sprintf(card->longname, "%s at 0x%lx, irq %i, dma ",
+		chip->name,
+		chip->port,
+		xirq);
+	if (xdma8 >= 0)
+		sprintf(card->longname + strlen(card->longname), "%d", xdma8);
+	if (xdma16 >= 0)
+		sprintf(card->longname + strlen(card->longname), "%s%d",
+			xdma8 >= 0 ? "&" : "", xdma16);
+
 	if (chip->mpu_port > 0 && chip->mpu_port != SNDRV_AUTO_PORT) {
 		if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_SB,
 					       chip->mpu_port, 0,
@@ -483,7 +504,7 @@
 	if (fm_port[dev] > 0 && fm_port[dev] != SNDRV_AUTO_PORT) {
 		if (snd_opl3_create(card, fm_port[dev], fm_port[dev] + 2,
 				    OPL3_HW_OPL3,
-				    fm_port[dev] == port[dev] || fm_port[dev] == 0x388,
+				    acard->fm_res != NULL || fm_port[dev] == port[dev],
 				    &opl3) < 0) {
 			snd_printk(KERN_ERR PFX "no OPL device at 0x%lx-0x%lx\n",
 				   fm_port[dev], fm_port[dev] + 2);
@@ -535,21 +556,6 @@
 		(mic_agc[dev] ? 0x00 : 0x01));
 	spin_unlock_irqrestore(&chip->mixer_lock, flags);
 
-	strcpy(card->driver, 
-#ifdef SNDRV_SBAWE_EMU8000
-			awe_port[dev] > 0 ? "SB AWE" :
-#endif
-			"SB16");
-	strcpy(card->shortname, chip->name);
-	sprintf(card->longname, "%s at 0x%lx, irq %i, dma ",
-		chip->name,
-		chip->port,
-		xirq);
-	if (xdma8 >= 0)
-		sprintf(card->longname + strlen(card->longname), "%d", xdma8);
-	if (xdma16 >= 0)
-		sprintf(card->longname + strlen(card->longname), "%s%d",
-			xdma8 >= 0 ? "&" : "", xdma16);
 	if ((err = snd_card_register(card)) < 0) {
 		snd_card_free(card);
 		return err;
Index: debian/alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c
diff -u debian/alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c:1.7 debian/alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c:1.8
--- debian/alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c:1.7	Fri Jan  9 01:16:17 2004
+++ debian/alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c	Tue Feb  3 19:36:41 2004
@@ -599,7 +599,8 @@
 		return -ENOMEM;
 	/* set the DMA transfer mask */
 	emu->dma_mask = is_audigy ? AUDIGY_DMA_MASK : EMU10K1_DMA_MASK;
-	if (pci_set_consistent_dma_mask(pci, emu->dma_mask) < 0) {
+	if (pci_set_dma_mask(pci, emu->dma_mask) < 0 ||
+	    pci_set_consistent_dma_mask(pci, emu->dma_mask) < 0) {
 		snd_printk(KERN_ERR "architecture does not support PCI busmaster DMA with mask 0x%lx\n", emu->dma_mask);
 		snd_magic_kfree(emu);
 		return -ENXIO;
@@ -713,6 +714,7 @@
 
 	snd_emu10k1_proc_init(emu);
 
+	snd_card_set_dev(card, &pci->dev);
 	*remu = emu;
 	return 0;
 }
Index: debian/alsa-driver/alsa-kernel/pci/emu10k1/emufx.c
diff -u debian/alsa-driver/alsa-kernel/pci/emu10k1/emufx.c:1.11 debian/alsa-driver/alsa-kernel/pci/emu10k1/emufx.c:1.12
--- debian/alsa-driver/alsa-kernel/pci/emu10k1/emufx.c:1.11	Fri Jan  9 01:16:17 2004
+++ debian/alsa-driver/alsa-kernel/pci/emu10k1/emufx.c	Tue Feb  3 19:36:41 2004
@@ -913,8 +913,12 @@
 			return -EFAULT;
 		if (snd_emu10k1_look_for_ctl(emu, &gctl.id))
 			continue;
-		if (snd_ctl_find_id(emu->card, &gctl.id) != NULL)
+		down_read(&emu->card->controls_rwsem);
+		if (snd_ctl_find_id(emu->card, &gctl.id) != NULL) {
+			up_read(&emu->card->controls_rwsem);
 			return -EEXIST;
+		}
+		up_read(&emu->card->controls_rwsem);
 		if (gctl.id.iface != SNDRV_CTL_ELEM_IFACE_MIXER &&
 		    gctl.id.iface != SNDRV_CTL_ELEM_IFACE_PCM)
 			return -EINVAL;
@@ -1821,28 +1825,28 @@
 	snd_emu10k1_init_stereo_onoff_control(controls + i++, "Music Capture Switch", gpr + 2, 0);
 	gpr += 4;
 
-	/* Surround Digital Playback Volume */
+	/* Surround Digital Playback Volume (renamed later without Digital) */
 	for (z = 0; z < 2; z++)
 		VOLUME_ADD(icode, &ptr, playback + 2 + z, 4 + z, gpr + z);
 	snd_emu10k1_init_stereo_control(controls + i++, "Surround Digital Playback Volume", gpr, 100);
 	gpr += 2;
 
-	/* Surround Digital Capture Volume + Switch */
+	/* Surround Capture Volume + Switch */
 	for (z = 0; z < 2; z++) {
 		SWITCH(icode, &ptr, tmp + 0, 4 + z, gpr + 2 + z);
 		VOLUME_ADD(icode, &ptr, capture + z, tmp + 0, gpr + z);
 	}
-	snd_emu10k1_init_stereo_control(controls + i++, "Surround Digital Capture Volume", gpr, 0);
-	snd_emu10k1_init_stereo_onoff_control(controls + i++, "Surround Digital Capture Switch", gpr + 2, 0);
+	snd_emu10k1_init_stereo_control(controls + i++, "Surround Capture Volume", gpr, 0);
+	snd_emu10k1_init_stereo_onoff_control(controls + i++, "Surround Capture Switch", gpr + 2, 0);
 	gpr += 4;
 
-	/* Center Playback Volume */
+	/* Center Playback Volume (renamed later without Digital) */
 	VOLUME_ADD(icode, &ptr, playback + 4, 6, gpr);
-	snd_emu10k1_init_mono_control(controls + i++, "Center Playback Volume", gpr++, 100);
+	snd_emu10k1_init_mono_control(controls + i++, "Center Digital Playback Volume", gpr++, 100);
 
-	/* LFE Playback Volume + Switch */
+	/* LFE Playback Volume + Switch (renamed later without Digital) */
 	VOLUME_ADD(icode, &ptr, playback + 5, 7, gpr);
-	snd_emu10k1_init_mono_control(controls + i++, "LFE Playback Volume", gpr++, 100);
+	snd_emu10k1_init_mono_control(controls + i++, "LFE Digital Playback Volume", gpr++, 100);
 
 	/*
 	 *  Process inputs
@@ -1897,7 +1901,7 @@
 		/* IEC958 Optical Playback Volume */
 		for (z = 0; z < 2; z++)
 			VOLUME_ADDIN(icode, &ptr, playback + z, EXTIN_TOSLINK_L + z, gpr + z);
-		snd_emu10k1_init_stereo_control(controls + i++, "IEC958 Optical Playback Volume", gpr, 0);
+		snd_emu10k1_init_stereo_control(controls + i++, "IEC958 LiveDrive Playback Volume", gpr, 0);
 		gpr += 2;
 	
 		/* IEC958 Optical Capture Volume */
@@ -1905,8 +1909,8 @@
 			SWITCH_IN(icode, &ptr, tmp + 0, EXTIN_TOSLINK_L + z, gpr + 2 + z);
 			VOLUME_ADD(icode, &ptr, capture + z, tmp + 0, gpr + z);
 		}
-		snd_emu10k1_init_stereo_control(controls + i++, "IEC958 Optical Capture Volume", gpr, 0);
-		snd_emu10k1_init_stereo_onoff_control(controls + i++, "IEC958 Optical Capture Switch", gpr + 2, 0);
+		snd_emu10k1_init_stereo_control(controls + i++, "IEC958 LiveDrive Capture Volume", gpr, 0);
+		snd_emu10k1_init_stereo_onoff_control(controls + i++, "IEC958 LiveDrive Capture Switch", gpr + 2, 0);
 		gpr += 4;
 	}
 	
Index: debian/alsa-driver/configure
diff -u debian/alsa-driver/configure:1.19 debian/alsa-driver/configure:1.20
--- debian/alsa-driver/configure:1.19	Fri Jan  9 01:16:16 2004
+++ debian/alsa-driver/configure	Tue Feb  3 19:36:40 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_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_ISAPNP_KERNEL CONFIG_PNP_KERNEL CONFIG_ISAPNP CONFIG_PNP CONFIG_SND_VERSION CONFIG_SND_DATE CONFIG_SND_SEQUENCER CONFIG_SND_OSSEMUL CONFIG_SND_RTCTIMER CONFIG_RTC CONFIG_USB CONFIG_PCMCIA CONFIG_X86_PC9800 CONFIG_SND_DUMMY CONFIG_SND_VIRMIDI CONFIG_SND_SERIAL_U16550 CONFIG_SND_MTPAV CONFIG_SND_MPU401 CONFIG_SND_ALS100 CONFIG_SND_AZT2320 CONFIG_SND_CMI8330 CONFIG_SND_DT019X CONFIG_SND_ES18XX CONFIG_SND_OPL3SA2 CONFIG_SND_SGALAXY CONFIG_SND_SSCAPE CONFIG_SND_AD1816A CONFIG_SND_AD1848 CONFIG_SND_CS4231 CONFIG_SND_CS4232 CONFIG_SND_CS4236 CONFIG_SND_PC98_CS4232 CONFIG_SND_ES1688 CONFIG_SND_GUSCLASSIC CONFIG_SND_GUSMAX CONFIG_SND_GUSEXTREME 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_ES968 CONFIG_SND_WAVEFRONT CONFIG_SND_ALS4000 CONFIG_SND_AZT3328 CONFIG_SND_CMIPCI CONFIG_SND_CS4281 CONFIG_SND_ENS1370 CONFIG_SND_ENS1371 CONFIG_SND_ES1938 CONFIG_SND_ES1968 CONFIG_SND_FM801 CONFIG_SND_INTEL8X0 CONFIG_SND_MAESTRO3 CONFIG_SND_RME32 CONFIG_SND_RME96 CONFIG_SND_SONICVIBES CONFIG_SND_VIA82XX CONFIG_SND_ALI5451 CONFIG_SND_CS46XX CONFIG_SND_EMU10K1 CONFIG_SND_ICE1712 CONFIG_SND_ICE1724 CONFIG_SND_KORG1212 CONFIG_SND_NM256 CONFIG_SND_RME9652 CONFIG_SND_HDSP CONFIG_SND_TRIDENT CONFIG_SND_VX222 CONFIG_SND_YMFPCI CONFIG_SND_POWERMAC CONFIG_SND_SA11XX_UDA1341 CONFIG_SND_USB_AUDIO CONFIG_SND_HARMONY CONFIG_SND_VXPOCKET CONFIG_SND_VXP440 CONFIG_SND_SERIALMIDI CONFIG_SND_BT87X CONFIG_SND_PDPLUS CONFIG_SND_MIXART CONFIG_SND_MSND_PINNACLE CONFIG_SND_PDAUDIOCF CONFIG_SND_USB_USX2Y CONFIG_SND_AU8810 CONFIG_SND_AU8820 CONFIG_SND_AU8830 c_opts m_opts GENKSYMS EXTRA_INCLUDES 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_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_ISAPNP_KERNEL CONFIG_PNP_KERNEL CONFIG_ISAPNP CONFIG_PNP CONFIG_SND_VERSION CONFIG_SND_DATE CONFIG_SND_SEQUENCER CONFIG_SND_OSSEMUL CONFIG_SND_RTCTIMER CONFIG_RTC CONFIG_USB CONFIG_PCMCIA CONFIG_X86_PC9800 CONFIG_SND_DUMMY CONFIG_SND_VIRMIDI CONFIG_SND_SERIAL_U16550 CONFIG_SND_MTPAV CONFIG_SND_MPU401 CONFIG_SND_ALS100 CONFIG_SND_AZT2320 CONFIG_SND_CMI8330 CONFIG_SND_DT019X CONFIG_SND_ES18XX CONFIG_SND_OPL3SA2 CONFIG_SND_SGALAXY CONFIG_SND_SSCAPE CONFIG_SND_AD1816A CONFIG_SND_AD1848 CONFIG_SND_CS4231 CONFIG_SND_CS4232 CONFIG_SND_CS4236 CONFIG_SND_PC98_CS4232 CONFIG_SND_ES1688 CONFIG_SND_GUSCLASSIC CONFIG_SND_GUSMAX CONFIG_SND_GUSEXTREME 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_ES968 CONFIG_SND_WAVEFRONT CONFIG_SND_ALS4000 CONFIG_SND_AZT3328 CONFIG_SND_CMIPCI CONFIG_SND_CS4281 CONFIG_SND_ENS1370 CONFIG_SND_ENS1371 CONFIG_SND_ES1938 CONFIG_SND_ES1968 CONFIG_SND_FM801 CONFIG_SND_INTEL8X0 CONFIG_SND_MAESTRO3 CONFIG_SND_RME32 CONFIG_SND_RME96 CONFIG_SND_SONICVIBES CONFIG_SND_VIA82XX CONFIG_SND_ALI5451 CONFIG_SND_CS46XX CONFIG_SND_EMU10K1 CONFIG_SND_ICE1712 CONFIG_SND_ICE1724 CONFIG_SND_KORG1212 CONFIG_SND_NM256 CONFIG_SND_RME9652 CONFIG_SND_HDSP CONFIG_SND_TRIDENT CONFIG_SND_VX222 CONFIG_SND_YMFPCI CONFIG_SND_POWERMAC CONFIG_SND_SA11XX_UDA1341 CONFIG_SND_USB_AUDIO CONFIG_SND_HARMONY CONFIG_SND_VXPOCKET CONFIG_SND_VXP440 CONFIG_SND_SERIALMIDI CONFIG_SND_BT87X CONFIG_SND_INTEL8X0M CONFIG_SND_PDPLUS CONFIG_SND_MIXART CONFIG_SND_MSND_PINNACLE CONFIG_SND_PDAUDIOCF CONFIG_SND_USB_USX2Y CONFIG_SND_AU8810 CONFIG_SND_AU8820 CONFIG_SND_AU8830 c_opts m_opts GENKSYMS EXTRA_INCLUDES LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -837,8 +837,8 @@
                           korg1212, nm256, rme9652, hdsp, trident, vx222,
                           ymfpci, powermac, sa11xx-uda1341, usb-audio,
                           harmony, vxpocket, vxp440, serialmidi, bt87x,
-                          pdplus, mixart, msnd-pinnacle, pdaudiocf,
-                          usb-usx2y, au8810, au8820, au8830
+                          intel8x0m, pdplus, mixart, msnd-pinnacle,
+                          pdaudiocf, usb-usx2y, au8810, au8820, au8830
 
 Some influential environment variables:
   CC          C compiler command
@@ -1255,7 +1255,7 @@
 
 
 
-CONFIG_SND_VERSION="1.0.1"
+CONFIG_SND_VERSION="1.0.2"
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -3857,7 +3857,7 @@
 
 if test ! -f include/linux/workqueue.h; then
   if test "x$kversion.$kpatchlevel" = "x2.4" -a \
-     test "x$RED_HAT_LINUX_KERNEL" = "xy"; then
+          "x$RED_HAT_LINUX_KERNEL" = "xy"; then
     echo "It looks like you're using a RedHat 9 kernel."
     echo "Disabling their incomplete workqueue.h modification."
     mkdir -p include/linux
@@ -5066,17 +5066,19 @@
 
 if test "$CONFIG_ISAPNP" = "y"; then
   cat >>confdefs.h <<\_ACEOF
-#define CONFIG_ISAPNP 1
+#define CONFIG_SND_ISAPNP 1
 _ACEOF
 
   CONFIG_PNP=$CONFIG_ISAPNP
   cat >>confdefs.h <<\_ACEOF
-#define CONFIG_PNP 1
+#define CONFIG_SND_PNP 1
 _ACEOF
 
-
+else
+  CONFIG_PNP=""
 fi
 
+
 echo "$as_me:$LINENO: checking for strlcpy" >&5
 echo $ECHO_N "checking for strlcpy... $ECHO_C" >&6
 strlcpy="0"
@@ -6250,6 +6252,7 @@
 	CONFIG_SND_VXP440=""
 	CONFIG_SND_SERIALMIDI=""
 	CONFIG_SND_BT87X=""
+	CONFIG_SND_INTEL8X0M=""
 	CONFIG_SND_PDPLUS=""
 	CONFIG_SND_MIXART=""
 	CONFIG_SND_MSND_PINNACLE=""
@@ -6737,6 +6740,13 @@
 
 	fi
 	if test "$CONFIG_PCI" = "y"; then
+	CONFIG_SND_INTEL8X0M="m"
+	cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_INTEL8X0M_MODULE 1
+_ACEOF
+
+	fi
+	if test "$CONFIG_PCI" = "y"; then
 	CONFIG_SND_PDPLUS="m"
 	cat >>confdefs.h <<\_ACEOF
 #define CONFIG_SND_PDPLUS_MODULE 1
@@ -7276,6 +7286,13 @@
 _ACEOF
 
 		;;
+	intel8x0m)
+		CONFIG_SND_INTEL8X0M="m"
+		cat >>confdefs.h <<\_ACEOF
+#define CONFIG_SND_INTEL8X0M_MODULE 1
+_ACEOF
+
+		;;
 	pdplus)
 		CONFIG_SND_PDPLUS="m"
 		cat >>confdefs.h <<\_ACEOF
@@ -7419,6 +7436,7 @@
 
 
 
+
 c_opts="$c_opts -DLINUX"
 m_opts=""
 if test -r /etc/asound/make_opts; then
@@ -8172,6 +8190,7 @@
 s,@CONFIG_SND_VXP440@,$CONFIG_SND_VXP440,;t t
 s,@CONFIG_SND_SERIALMIDI@,$CONFIG_SND_SERIALMIDI,;t t
 s,@CONFIG_SND_BT87X@,$CONFIG_SND_BT87X,;t t
+s,@CONFIG_SND_INTEL8X0M@,$CONFIG_SND_INTEL8X0M,;t t
 s,@CONFIG_SND_PDPLUS@,$CONFIG_SND_PDPLUS,;t t
 s,@CONFIG_SND_MIXART@,$CONFIG_SND_MIXART,;t t
 s,@CONFIG_SND_MSND_PINNACLE@,$CONFIG_SND_MSND_PINNACLE,;t t
Index: debian/alsa-driver/configure.in
diff -u debian/alsa-driver/configure.in:1.19 debian/alsa-driver/configure.in:1.20
--- debian/alsa-driver/configure.in:1.19	Fri Jan  9 01:16:16 2004
+++ debian/alsa-driver/configure.in	Tue Feb  3 19:36:40 2004
@@ -4,7 +4,7 @@
 
 AC_INIT(acore/sound.patch)
 AC_PREFIX_DEFAULT(/usr)
-CONFIG_SND_VERSION="1.0.1"
+CONFIG_SND_VERSION="1.0.2"
 
 dnl Checks for programs.
 AC_PROG_CC
@@ -211,7 +211,7 @@
 dnl my_compiler="2.95.3"
 dnl
 
-AC_DEFUN(CHECK_COMPILER, [
+AC_DEFUN([CHECK_COMPILER], [
   typevar=$2
   versionvar=$3
   ac_compiler_type=""
@@ -291,7 +291,7 @@
 fi
 dnl compiler version check
 
-AC_DEFUN(CHECK_KERNEL_HEADER, [
+AC_DEFUN([CHECK_KERNEL_HEADER], [
   AC_MSG_CHECKING(for kernel $1)
   if test -f "$CONFIG_SND_KERNELDIR/include/$1"; then
     AC_MSG_RESULT("yes")
@@ -317,7 +317,7 @@
   fi
 ])
 
-AC_DEFUN(MODIFY_KERNEL_HEADER, [
+AC_DEFUN([MODIFY_KERNEL_HEADER], [
   AC_MSG_CHECKING(to modify of kernel $1)
   if grep $2 "$CONFIG_SND_KERNELDIR/include/$1" > /dev/null 2>&1; then
     AC_MSG_RESULT("no")
@@ -337,7 +337,7 @@
 ])
 
 dnl Check kernel configurations
-AC_DEFUN(CHECK_KERNEL_CONFIG, [
+AC_DEFUN([CHECK_KERNEL_CONFIG], [
   boolvar=$1
   AC_MSG_CHECKING(for $2)
   ac_save_CFLAGS="$CFLAGS"
@@ -407,7 +407,7 @@
 CHECK_KERNEL_HEADER(linux/workqueue.h)
 if test ! -f include/linux/workqueue.h; then
   if test "x$kversion.$kpatchlevel" = "x2.4" -a \
-     test "x$RED_HAT_LINUX_KERNEL" = "xy"; then
+          "x$RED_HAT_LINUX_KERNEL" = "xy"; then
     echo "It looks like you're using a RedHat 9 kernel."
     echo "Disabling their incomplete workqueue.h modification."
     mkdir -p include/linux
@@ -955,11 +955,13 @@
 
 AC_SUBST(CONFIG_ISAPNP)
 if test "$CONFIG_ISAPNP" = "y"; then
-  AC_DEFINE(CONFIG_ISAPNP)
+  AC_DEFINE(CONFIG_SND_ISAPNP)
   CONFIG_PNP=$CONFIG_ISAPNP
-  AC_DEFINE(CONFIG_PNP)
-  AC_SUBST(CONFIG_PNP)
+  AC_DEFINE(CONFIG_SND_PNP)
+else
+  CONFIG_PNP=""
 fi
+AC_SUBST(CONFIG_PNP)
 
 dnl Check for strlcpy...
 AC_MSG_CHECKING(for strlcpy)
Index: debian/alsa-driver/debian/changelog
diff -u debian/alsa-driver/debian/changelog:1.195 debian/alsa-driver/debian/changelog:1.196
--- debian/alsa-driver/debian/changelog:1.195	Mon Jan 19 13:25:11 2004
+++ debian/alsa-driver/debian/changelog	Tue Feb  3 19:36:42 2004
@@ -1,5 +1,6 @@
-alsa-driver (1.0.1-2) unstable; urgency=low
+alsa-driver (1.0.2-1) unstable; urgency=low
 
+  * New upstream release
   * Unreleased. 
 
  -- Jordi Mallach <jordi@debian.org>  Mon, 19 Jan 2004 13:23:32 +0100
Index: debian/alsa-driver/drivers/serialmidi.c
diff -u debian/alsa-driver/drivers/serialmidi.c:1.7 debian/alsa-driver/drivers/serialmidi.c:1.8
--- debian/alsa-driver/drivers/serialmidi.c:1.7	Fri Jan  9 01:16:17 2004
+++ debian/alsa-driver/drivers/serialmidi.c	Tue Feb  3 19:36:44 2004
@@ -91,7 +91,7 @@
 	char *sdev;			/* serial device name (e.g. /dev/ttyS0) */
 	unsigned int speed;		/* speed in bauds */
 	unsigned int adaptor;		/* see SERIAL_ADAPTOR_ */
-	unsigned int mode;		/* see SERIAL_MODE_* */
+	unsigned long mode;		/* see SERIAL_MODE_* */
 	unsigned int outs;		/* count of outputs */
 	unsigned char prev_status[SNDRV_SERIAL_MAX_OUTS];
 	snd_rawmidi_t *rmidi;		/* rawmidi device */
Index: debian/alsa-driver/include/adriver.h
diff -u debian/alsa-driver/include/adriver.h:1.15 debian/alsa-driver/include/adriver.h:1.16
--- debian/alsa-driver/include/adriver.h:1.15	Fri Jan  9 01:16:17 2004
+++ debian/alsa-driver/include/adriver.h	Tue Feb  3 19:36:44 2004
@@ -80,7 +80,7 @@
 #include <linux/pm.h>
 #include <asm/page.h>
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 3)
-#define pci_set_dma_mask(pci, mask) pci->dma_mask = mask
+#define pci_set_dma_mask(pci, mask) (pci->dma_mask = mask, 0)
 #endif
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 7)
 #define PCI_OLD_SUSPEND
@@ -151,20 +151,19 @@
 #endif
 #endif
 
-#if defined(CONFIG_ISAPNP) || (defined(CONFIG_ISAPNP_MODULE) && defined(MODULE))
-#include <linux/isapnp.h>
-#ifndef CONFIG_PNP
-#define CONFIG_PNP
+/* isapnp support for 2.2 kernels */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
+#undef CONFIG_ISAPNP
+#ifdef CONFIG_SND_ISAPNP
+#define CONFIG_ISAPNP
+#endif
 #endif
-#if (defined(CONFIG_ISAPNP_KERNEL) && defined(ALSA_BUILD)) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 3, 30) && !defined(ALSA_BUILD))
-#define isapnp_dev pci_dev
-#define isapnp_card pci_bus
-#endif
-#undef __ISAPNP__
-#define __ISAPNP__
-#else
+
+/* support of pnp compatible layer for 2.2/2.4 kernels */
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
 #undef CONFIG_PNP
+#ifdef CONFIG_SND_PNP
+#define CONFIG_PNP
 #endif
 #endif
 
@@ -417,9 +416,20 @@
 #endif
 
 #ifndef CONFIG_HAVE_PCI_CONSISTENT_DMA_MASK
-#define pci_set_consistent_dma_mask(p,x) pci_set_dma_mask(p,x)
+#define pci_set_consistent_dma_mask(p,x) 0 /* success */
+#endif
+
+/* sysfs */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 2)
+struct class_simple;
+static inline void class_simple_device_add(struct class_simple *class, int devnum, ...) { return; }
+static inline void class_simple_device_remove(int devnum) { return; }
 #endif
 
 #include "amagic.h"
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+#define snd_card_set_dev(card,dev) /* no struct device */
+#endif
 
 #endif /* __SOUND_LOCAL_DRIVER_H */
Index: debian/alsa-driver/include/config.h.in
diff -u debian/alsa-driver/include/config.h.in:1.8 debian/alsa-driver/include/config.h.in:1.9
--- debian/alsa-driver/include/config.h.in:1.8	Fri Jan  9 01:16:17 2004
+++ debian/alsa-driver/include/config.h.in	Tue Feb  3 19:36:44 2004
@@ -25,8 +25,8 @@
 #undef CONFIG_SND_KERNELDIR
 #undef CONFIG_ISAPNP_KERNEL
 #undef CONFIG_PNP_KERNEL
-#undef CONFIG_ISAPNP
-#undef CONFIG_PNP
+#undef CONFIG_SND_ISAPNP
+#undef CONFIG_SND_PNP
 
 /* 2.4 kernels */
 #undef CONFIG_HAVE_OLD_REQUEST_MODULE
Index: debian/alsa-driver/include/config1.h.in
diff -u debian/alsa-driver/include/config1.h.in:1.8 debian/alsa-driver/include/config1.h.in:1.9
--- debian/alsa-driver/include/config1.h.in:1.8	Thu Dec 25 04:02:31 2003
+++ debian/alsa-driver/include/config1.h.in	Tue Feb  3 19:36:44 2004
@@ -70,6 +70,7 @@
 #undef CONFIG_SND_VXP440_MODULE
 #undef CONFIG_SND_SERIALMIDI_MODULE
 #undef CONFIG_SND_BT87X_MODULE
+#undef CONFIG_SND_INTEL8X0M_MODULE
 #undef CONFIG_SND_PDPLUS_MODULE
 #undef CONFIG_SND_MIXART_MODULE
 #undef CONFIG_SND_MSND_PINNACLE_MODULE