> could you run diff between these two versions? I ran cvs -z3 -d ':pserver:[EMAIL PROTECTED]:/cvsroot/alsa' diff -u -D 11/20/2003 -D 11/21/2003 On the alsa-kernel tree:
Index: Documentation/DocBook/writing-an-alsa-driver.tmpl =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/Documentation/DocBook/writing-an-alsa-driver.tmpl,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- Documentation/DocBook/writing-an-alsa-driver.tmpl 20 Oct 2003 15:26:16 -0000 1.15 +++ Documentation/DocBook/writing-an-alsa-driver.tmpl 20 Nov 2003 13:22:19 -0000 1.16 @@ -1295,7 +1295,7 @@ printk(KERN_ERR "error to set 28bit mask DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x0fffffff); + pci_set_consistent_dma_mask(pci, 0x0fffffff); chip = snd_magic_kcalloc(mychip_t, 0, GFP_KERNEL); if (chip == NULL) @@ -1413,7 +1413,7 @@ printk(KERN_ERR "error to set 28bit mask DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x0fffffff); + pci_set_consistent_dma_mask(pci, 0x0fffffff); ]]> </programlisting> </informalexample> Index: core/memalloc.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/core/memalloc.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- core/memalloc.c 9 Oct 2003 10:21:44 -0000 1.17 +++ core/memalloc.c 20 Nov 2003 13:22:19 -0000 1.18 @@ -95,25 +95,25 @@ { void *ret; u64 dma_mask; - unsigned long rmask; + unsigned long mask; if (hwdev == NULL) return pci_alloc_consistent(hwdev, size, dma_handle); - dma_mask = hwdev->dma_mask; - rmask = ~((unsigned long)dma_mask); - hwdev->dma_mask = 0xffffffff; /* do without masking */ + dma_mask = hwdev->consistent_dma_mask; + mask = (unsigned long)dma_mask; + hwdev->consistent_dma_mask = 0xffffffff; /* do without masking */ ret = pci_alloc_consistent(hwdev, size, dma_handle); - hwdev->dma_mask = dma_mask; /* restore */ + hwdev->consistent_dma_mask = dma_mask; /* restore */ if (ret) { /* obtained address is out of range? */ - if (((unsigned long)*dma_handle + size - 1) & rmask) { + if (((unsigned long)*dma_handle + size - 1) & ~mask) { /* reallocate with the proper mask */ pci_free_consistent(hwdev, size, ret, *dma_handle); ret = pci_alloc_consistent(hwdev, size, dma_handle); } } else { /* wish to success now with the proper mask... */ - if (dma_mask != 0xffffffff) + if (mask != 0xffffffffUL) ret = pci_alloc_consistent(hwdev, size, dma_handle); } return ret; @@ -640,13 +640,13 @@ { void *ptr; dma_addr_t addr; - unsigned long rmask; + unsigned long mask; - rmask = ~(unsigned long)(pci ? pci->dma_mask : 0x00ffffff); + mask = pci ? (unsigned long)pci->consistent_dma_mask : 0x00ffffffUL; ptr = (void *)__get_free_page(GFP_KERNEL); if (ptr) { addr = virt_to_phys(ptr); - if (((unsigned long)addr + PAGE_SIZE - 1) & rmask) { + if (((unsigned long)addr + PAGE_SIZE - 1) & ~mask) { /* try to reallocate with the GFP_DMA */ free_page((unsigned long)ptr); /* use GFP_ATOMIC for the DMA zone to avoid stall */ @@ -833,7 +833,7 @@ if (! enable[card++]) continue; - if (pci_set_dma_mask(pci, dev->dma_mask) < 0) { + 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; } Index: include/ac97_codec.h =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/include/ac97_codec.h,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- include/ac97_codec.h 18 Nov 2003 11:38:40 -0000 1.36 +++ include/ac97_codec.h 20 Nov 2003 15:59:32 -0000 1.37 @@ -479,7 +479,7 @@ int snd_ac97_pcm_assign(ac97_bus_t *ac97, unsigned short pcms_count, - struct ac97_pcm *pcms); + const struct ac97_pcm *pcms); int snd_ac97_pcm_open(struct ac97_pcm *pcm, unsigned int rate, enum ac97_pcm_cfg cfg, unsigned short slots); int snd_ac97_pcm_close(struct ac97_pcm *pcm); Index: pci/als4000.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/als4000.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- pci/als4000.c 28 Oct 2003 11:28:01 -0000 1.24 +++ pci/als4000.c 20 Nov 2003 13:22:19 -0000 1.25 @@ -625,7 +625,7 @@ snd_printk("architecture does not support 24bit PCI busmaster DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x00ffffff); + pci_set_consistent_dma_mask(pci, 0x00ffffff); gcr = pci_resource_start(pci, 0); if ((res_gcr_port = request_region(gcr, 0x40, "ALS4000")) == NULL) { Index: pci/azt3328.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/azt3328.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- pci/azt3328.c 28 Oct 2003 11:28:01 -0000 1.6 +++ pci/azt3328.c 20 Nov 2003 13:22:19 -0000 1.7 @@ -1365,7 +1365,7 @@ snd_printk("architecture does not support 24bit PCI busmaster DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x00ffffff); + pci_set_consistent_dma_mask(pci, 0x00ffffff); chip->codec_port = pci_resource_start(pci, 0); if ((chip->res_codec_port = request_region(chip->codec_port, 0x80, "Aztech AZF3328 I/O")) == NULL) { Index: pci/es1938.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/es1938.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- pci/es1938.c 14 Aug 2003 11:05:38 -0000 1.27 +++ pci/es1938.c 20 Nov 2003 13:22:19 -0000 1.28 @@ -1402,7 +1402,7 @@ snd_printk("architecture does not support 24bit PCI busmaster DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x00ffffff); + pci_set_consistent_dma_mask(pci, 0x00ffffff); chip = snd_magic_kcalloc(es1938_t, 0, GFP_KERNEL); if (chip == NULL) Index: pci/es1968.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/es1968.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- pci/es1968.c 24 Oct 2003 13:44:20 -0000 1.56 +++ pci/es1968.c 20 Nov 2003 13:22:19 -0000 1.57 @@ -2567,7 +2567,7 @@ snd_printk("architecture does not support 28bit PCI busmaster DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x0fffffff); + pci_set_consistent_dma_mask(pci, 0x0fffffff); chip = (es1968_t *) snd_magic_kcalloc(es1968_t, 0, GFP_KERNEL); if (! chip) Index: pci/intel8x0.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/intel8x0.c,v retrieving revision 1.97 retrieving revision 1.98 diff -u -r1.97 -r1.98 --- pci/intel8x0.c 18 Nov 2003 11:38:40 -0000 1.97 +++ pci/intel8x0.c 20 Nov 2003 15:59:32 -0000 1.98 @@ -892,8 +892,10 @@ err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); if (err < 0) return err; - if (ichdev->pcm_open_flag) + if (ichdev->pcm_open_flag) { snd_ac97_pcm_close(ichdev->pcm); + ichdev->pcm_open_flag = 0; + } err = snd_ac97_pcm_open(ichdev->pcm, params_rate(hw_params), params_channels(hw_params), ichdev->pcm->r[0].slots); @@ -906,8 +908,10 @@ { ichdev_t *ichdev = get_ichdev(substream); - if (ichdev->pcm_open_flag) + if (ichdev->pcm_open_flag) { snd_ac97_pcm_close(ichdev->pcm); + ichdev->pcm_open_flag = 0; + } return snd_pcm_lib_free_pages(substream); } @@ -1765,14 +1769,16 @@ goto __err; chip->ac97_bus = pbus; ac97.pci = chip->pci; - if ((err = snd_ac97_mixer(pbus, &ac97, &x97)) < 0) { - __err: - /* clear the cold-reset bit for the next chance */ - if (chip->device_type != DEVICE_ALI) - iputdword(chip, ICHREG(GLOB_CNT), igetdword(chip, ICHREG(GLOB_CNT)) & ~ICH_AC97COLD); - return err; + for (i = 0; i < codecs; i++) { + ac97.num = i; + if ((err = snd_ac97_mixer(pbus, &ac97, &x97)) < 0) { + snd_printk(KERN_ERR "Unable to initialize codec #%d\n", i); + if (i == 0) + goto __err; + continue; + } + chip->ac97[i] = x97; } - chip->ac97[0] = x97; /* tune up the primary codec */ snd_ac97_tune_hardware(chip->ac97[0], ac97_quirks); /* enable separate SDINs for ICH4 */ @@ -1784,7 +1790,7 @@ i -= 2; /* do not allocate PCM2IN and MIC2 */ if (spdif_idx < 0) i--; /* do not allocate S/PDIF */ - err = snd_ac97_pcm_assign(pbus, ARRAY_SIZE(ac97_pcm_defs), ac97_pcm_defs); + err = snd_ac97_pcm_assign(pbus, i, ac97_pcm_defs); if (err < 0) goto __err; chip->ichd[ICHD_PCMOUT].pcm = &pbus->pcms[0]; @@ -1826,6 +1832,12 @@ } chip->in_ac97_init = 0; return 0; + + __err: + /* clear the cold-reset bit for the next chance */ + if (chip->device_type != DEVICE_ALI) + iputdword(chip, ICHREG(GLOB_CNT), igetdword(chip, ICHREG(GLOB_CNT)) & ~ICH_AC97COLD); + return err; } Index: pci/maestro3.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/maestro3.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- pci/maestro3.c 23 Oct 2003 14:34:52 -0000 1.43 +++ pci/maestro3.c 20 Nov 2003 13:22:19 -0000 1.44 @@ -2551,7 +2551,7 @@ snd_printk("architecture does not support 28bit PCI busmaster DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x0fffffff); + pci_set_consistent_dma_mask(pci, 0x0fffffff); chip = snd_magic_kcalloc(m3_t, 0, GFP_KERNEL); if (chip == NULL) Index: pci/sonicvibes.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/sonicvibes.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- pci/sonicvibes.c 23 Oct 2003 14:34:52 -0000 1.27 +++ pci/sonicvibes.c 20 Nov 2003 13:22:19 -0000 1.28 @@ -1253,7 +1253,7 @@ snd_printk("architecture does not support 24bit PCI busmaster DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x00ffffff); + pci_set_consistent_dma_mask(pci, 0x00ffffff); sonic = snd_magic_kcalloc(sonicvibes_t, 0, GFP_KERNEL); if (sonic == NULL) Index: pci/ac97/ac97_codec.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_codec.c,v retrieving revision 1.113 retrieving revision 1.114 diff -u -r1.113 -r1.114 --- pci/ac97/ac97_codec.c 18 Nov 2003 11:38:40 -0000 1.113 +++ pci/ac97/ac97_codec.c 20 Nov 2003 16:00:01 -0000 1.114 @@ -112,7 +112,8 @@ { 0x414c4721, 0xfffffff0, "ALC650D", patch_alc650, NULL }, { 0x414c4722, 0xfffffff0, "ALC650E", patch_alc650, NULL }, { 0x414c4723, 0xfffffff0, "ALC650F", patch_alc650, NULL }, -{ 0x414c4760, 0xfffffff0, "ALC655", patch_alc650, NULL }, +{ 0x414c4760, 0xfffffff0, "ALC655", patch_alc655, NULL }, +{ 0x414c4780, 0xfffffff0, "ALC658", patch_alc655, NULL }, { 0x414c4730, 0xffffffff, "ALC101", NULL, NULL }, { 0x414c4740, 0xfffffff0, "ALC202", NULL, NULL }, { 0x414c4750, 0xfffffff0, "ALC250", NULL, NULL }, @@ -1985,9 +1986,9 @@ snd_ac97_write(ac97, AC97_GENERAL_PURPOSE, 0); snd_ac97_write(ac97, AC97_POWERDOWN, ac97->regs[AC97_POWERDOWN]); - snd_ac97_write(ac97, AC97_MASTER, 0x8000); + snd_ac97_write(ac97, AC97_MASTER, 0x8101); for (i = 0; i < 10; i++) { - if (snd_ac97_read(ac97, AC97_MASTER) == 0x8000) + if (snd_ac97_read(ac97, AC97_MASTER) == 0x8101) break; mdelay(1); } @@ -1996,7 +1997,7 @@ if (ac97->bus->init) ac97->bus->init(ac97); - is_ad18xx = (ac97->id & 0xffffff40) == AC97_ID_AD1881; + is_ad18xx = (ac97->flags & AC97_AD_MULTI); if (is_ad18xx) { /* restore the AD18xx codec configurations */ for (codec = 0; codec < 3; codec++) { Index: pci/ac97/ac97_patch.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_patch.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- pci/ac97/ac97_patch.c 3 Nov 2003 16:35:49 -0000 1.30 +++ pci/ac97/ac97_patch.c 20 Nov 2003 16:00:02 -0000 1.31 @@ -983,6 +983,8 @@ /* 7: Independent Master Volume Left */ /* 8: reserved */ AC97_SINGLE("Line-In As Surround", AC97_ALC650_MULTICH, 9, 1, 0), + /* 10: mic, see below */ + /* 11-13: in IEC958 controls */ AC97_SINGLE("Swap Surround Slot", AC97_ALC650_MULTICH, 14, 1, 0), #if 0 /* always set in patch_alc650 */ AC97_SINGLE("IEC958 Input Clock Enable", AC97_ALC650_CLOCK, 0, 1, 0), @@ -1102,6 +1104,98 @@ val = val | 0x100; snd_ac97_write_cache(ac97, AC97_ALC650_GPIO_STATUS, val); } + + /* full DAC volume */ + snd_ac97_write_cache(ac97, AC97_ALC650_SURR_DAC_VOL, 0x0808); + snd_ac97_write_cache(ac97, AC97_ALC650_LFE_DAC_VOL, 0x0808); + return 0; +} + +static const snd_kcontrol_new_t snd_ac97_controls_alc655[] = { + AC97_SINGLE("Duplicate Front", AC97_ALC650_MULTICH, 0, 1, 0), + AC97_SINGLE("Line-In As Surround", AC97_ALC650_MULTICH, 9, 1, 0), + AC97_SINGLE("Mic As Center/LFE", AC97_ALC650_MULTICH, 10, 1, 0), +}; + +static int alc655_iec958_route_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo) +{ + static char *texts_655[3] = { "PCM", "Analog In", "IEC958 In" }; + static char *texts_658[4] = { "PCM", "Analog1 In", "Analog2 In", "IEC958 In" }; + ac97_t *ac97 = snd_kcontrol_chip(kcontrol); + + uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; + uinfo->count = 1; + uinfo->value.enumerated.items = ac97->spec.dev_flags ? 4 : 3; + if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items) + uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1; + strcpy(uinfo->value.enumerated.name, + ac97->spec.dev_flags ? + texts_658[uinfo->value.enumerated.item] : + texts_655[uinfo->value.enumerated.item]); + return 0; + +} + +static int alc655_iec958_route_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) +{ + ac97_t *ac97 = snd_kcontrol_chip(kcontrol); + unsigned short val; + + val = ac97->regs[AC97_ALC650_MULTICH]; + val = (val >> 12) & 3; + if (ac97->spec.dev_flags && val == 3) + val = 0; + ucontrol->value.enumerated.item[0] = val; + return 0; +} + +static int alc655_iec958_route_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) +{ + ac97_t *ac97 = snd_kcontrol_chip(kcontrol); + return snd_ac97_update_bits(ac97, AC97_ALC650_MULTICH, 3 << 12, + (unsigned short)ucontrol->value.enumerated.item[0]); +} + +static const snd_kcontrol_new_t snd_ac97_spdif_controls_alc655[] = { + AC97_SINGLE("IEC958 Capture Switch", AC97_ALC650_MULTICH, 11, 1, 0), + AC97_SINGLE("IEC958 Input Monitor", AC97_ALC650_MULTICH, 14, 1, 0), + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "IEC958 Playback Route", + .info = alc655_iec958_route_info, + .get = alc655_iec958_route_get, + .put = alc655_iec958_route_put, + }, +}; + +static int patch_alc655_specific(ac97_t * ac97) +{ + int err; + + if ((err = patch_build_controls(ac97, snd_ac97_controls_alc655, ARRAY_SIZE(snd_ac97_controls_alc655))) < 0) + return err; + if (ac97->ext_id & AC97_EI_SPDIF) { + if ((err = patch_build_controls(ac97, snd_ac97_spdif_controls_alc655, ARRAY_SIZE(snd_ac97_spdif_controls_alc655))) < 0) + return err; + } + return 0; +} + +static struct snd_ac97_build_ops patch_alc655_ops = { + .build_specific = patch_alc655_specific +}; + +int patch_alc655(ac97_t * ac97) +{ + ac97->spec.dev_flags = (ac97->id == 0x414c4780); /* ALC658 */ + + ac97->build_ops = &patch_alc655_ops; + + /* enable spdif in */ + snd_ac97_write_cache(ac97, AC97_ALC650_CLOCK, + snd_ac97_read(ac97, AC97_ALC650_MULTICH) | 0x8000); + snd_ac97_write_cache(ac97, AC97_ALC650_CLOCK, + snd_ac97_read(ac97, AC97_ALC650_CLOCK) | 0x02); /* full DAC volume */ snd_ac97_write_cache(ac97, AC97_ALC650_SURR_DAC_VOL, 0x0808); Index: pci/ac97/ac97_patch.h =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_patch.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- pci/ac97/ac97_patch.h 3 Nov 2003 10:42:13 -0000 1.11 +++ pci/ac97/ac97_patch.h 20 Nov 2003 16:00:02 -0000 1.12 @@ -46,6 +46,7 @@ int patch_ad1981b(ac97_t * ac97); int patch_ad1985(ac97_t * ac97); int patch_alc650(ac97_t * ac97); +int patch_alc655(ac97_t * ac97); int patch_cm9738(ac97_t * ac97); int patch_cm9739(ac97_t * ac97); int patch_vt1616(ac97_t * ac97); Index: pci/ac97/ac97_pcm.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_pcm.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pci/ac97/ac97_pcm.c 18 Nov 2003 13:52:59 -0000 1.2 +++ pci/ac97/ac97_pcm.c 20 Nov 2003 15:59:32 -0000 1.3 @@ -260,7 +260,7 @@ unsigned short slots = 0; if (ac97_is_rev22(ac97)) { /* Note: it's simply emulation of AMAP behaviour */ - u8 es; + u16 es; es = ac97->regs[AC97_EXTENDED_STATUS] &= ~AC97_EI_DACS_SLOT_MASK; switch (ac97->addr) { case 1: @@ -357,11 +357,7 @@ case AC97_PCM_MIC_ADC_RATE: idx = AC97_RATES_MIC_ADC; break; default: idx = AC97_RATES_SPDIF; break; } - if (rates == ~0) { - rates = pcm->r[dbl].codec[cidx]->rates[idx]; - } else { - rates &= pcm->r[dbl].codec[cidx]->rates[idx]; - } + rates &= pcm->r[dbl].codec[cidx]->rates[idx]; } return rates; } @@ -378,7 +374,7 @@ */ int snd_ac97_pcm_assign(ac97_bus_t *bus, unsigned short pcms_count, - struct ac97_pcm *pcms) + const struct ac97_pcm *pcms) { int i, j, k; struct ac97_pcm *pcm, *rpcms, *rpcm; @@ -389,7 +385,7 @@ unsigned int rates; ac97_t *codec; - rpcms = snd_kcalloc(sizeof(struct ac97_pcm), GFP_KERNEL); + rpcms = snd_kcalloc(sizeof(struct ac97_pcm) * pcms_count, GFP_KERNEL); if (rpcms == NULL) return -ENOMEM; memset(avail_slots, 0, sizeof(avail_slots)); @@ -421,6 +417,7 @@ rpcm->exclusive = pcm->exclusive; rpcm->private_value = pcm->private_value; rpcm->bus = bus; + rpcm->rates = ~0; slots = pcm->r[0].slots; for (j = 0; j < 4 && slots; j++) { rates = ~0; @@ -448,11 +445,7 @@ } slots &= ~tmp; rpcm->r[0].slots |= tmp; - if (j == 0) { - pcm->rates = rates; - } else { - pcm->rates &= rates; - } + rpcm->rates &= rates; } } bus->pcms_count = pcms_count; Index: pci/ali5451/ali5451.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/ali5451/ali5451.c,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- pci/ali5451/ali5451.c 23 Oct 2003 14:34:53 -0000 1.39 +++ pci/ali5451/ali5451.c 20 Nov 2003 13:22:19 -0000 1.40 @@ -2110,7 +2110,7 @@ snd_printk("architecture does not support 31bit PCI busmaster DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x7fffffff); + pci_set_consistent_dma_mask(pci, 0x7fffffff); if ((codec = snd_magic_kcalloc(ali_t, 0, GFP_KERNEL)) == NULL) return -ENOMEM; Index: pci/emu10k1/emu10k1_main.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/emu10k1/emu10k1_main.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- pci/emu10k1/emu10k1_main.c 7 Nov 2003 17:52:01 -0000 1.26 +++ pci/emu10k1/emu10k1_main.c 20 Nov 2003 13:22:20 -0000 1.27 @@ -604,7 +604,7 @@ return -ENOMEM; /* set the DMA transfer mask */ emu->dma_mask = is_audigy ? AUDIGY_DMA_MASK : EMU10K1_DMA_MASK; - if (pci_set_dma_mask(pci, emu->dma_mask) < 0) { + if (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; Index: pci/ice1712/ice1712.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/ice1712/ice1712.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- pci/ice1712/ice1712.c 23 Oct 2003 14:34:53 -0000 1.36 +++ pci/ice1712/ice1712.c 20 Nov 2003 13:22:20 -0000 1.37 @@ -2365,7 +2365,7 @@ snd_printk("architecture does not support 28bit PCI busmaster DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x0fffffff); + pci_set_consistent_dma_mask(pci, 0x0fffffff); ice = snd_magic_kcalloc(ice1712_t, 0, GFP_KERNEL); if (ice == NULL) Index: pci/ice1712/ice1724.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/ice1712/ice1724.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- pci/ice1712/ice1724.c 10 Nov 2003 18:00:50 -0000 1.20 +++ pci/ice1712/ice1724.c 20 Nov 2003 13:22:20 -0000 1.21 @@ -1801,7 +1801,7 @@ /* enable PCI device */ if ((err = pci_enable_device(pci)) < 0) return err; - pci_set_dma_mask(pci, 0xffffffff); + pci_set_consistent_dma_mask(pci, 0xffffffff); ice = snd_magic_kcalloc(ice1712_t, 0, GFP_KERNEL); if (ice == NULL) Index: pci/trident/trident_main.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/trident/trident_main.c,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- pci/trident/trident_main.c 23 Oct 2003 14:34:53 -0000 1.48 +++ pci/trident/trident_main.c 20 Nov 2003 13:22:20 -0000 1.49 @@ -3527,7 +3527,7 @@ snd_printk("architecture does not support 30bit PCI busmaster DMA\n"); return -ENXIO; } - pci_set_dma_mask(pci, 0x3fffffff); + pci_set_consistent_dma_mask(pci, 0x3fffffff); trident = snd_magic_kcalloc(trident_t, 0, GFP_KERNEL); if (trident == NULL) @@ -3952,7 +3952,7 @@ return; pci_enable_device(trident->pci); - pci_set_dma_mask(trident->pci, 0x3fffffff); /* to be sure */ + pci_set_consistent_dma_mask(trident->pci, 0x3fffffff); /* FIXME: correct? */ pci_set_master(trident->pci); /* to be sure */ switch (trident->device) { Index: usb/usbaudio.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/usb/usbaudio.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -r1.69 -r1.70 --- usb/usbaudio.c 13 Nov 2003 12:36:44 -0000 1.69 +++ usb/usbaudio.c 20 Nov 2003 16:08:26 -0000 1.70 @@ -576,6 +576,7 @@ int err; clear_bit(ctx->index, &subs->active_mask); + clear_bit(ctx->index, &subs->unlink_mask); if (subs->running && subs->ops.retire(subs, substream->runtime, urb)) return; if (! subs->running) /* can be stopped during retire callback */ @@ -601,6 +602,7 @@ int err; clear_bit(ctx->index + 16, &subs->active_mask); + clear_bit(ctx->index + 16, &subs->unlink_mask); if (subs->running && subs->ops.retire_sync(subs, substream->runtime, urb)) return; if (! subs->running) /* can be stopped during retire callback */ @@ -1280,6 +1282,9 @@ /* some unit conversions in runtime */ subs->maxframesize = bytes_to_frames(runtime, subs->maxpacksize); subs->curframesize = bytes_to_frames(runtime, subs->curpacksize); + + /* deactivate urbs to be sure */ + deactivate_urbs(subs, 0, 0); return 0; } __________________________________ Do you Yahoo!? Free Pop-Up Blocker - Get it now http://companion.yahoo.com/ ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel