snd_printk("architecture does not support 30bit PCI busmaster DMA\n"); 
snd_printk(KERN_ERR "architecture does not support 30bit PCI busmaster DMA\n"); 
int __devinit snd_trident_create(snd_card_t * card,		       struct pci_dev *pci,		       int pcm_streams,		       int pcm_spdif_device,		       int max_wavetable_size,		       trident_t ** rtrident){	trident_t *trident;	int i, err;	snd_trident_voice_t *voice;	snd_trident_pcm_mixer_t *tmix;	static snd_device_ops_t ops = {		.dev_free =	snd_trident_dev_free,	};	*rtrident = NULL;	/* enable PCI device */	if ((err = pci_enable_device(pci)) < 0)		return err;	/* check, if we can restrict PCI DMA transfers to 30 bits */	if (pci_set_dma_mask(pci, 0x3fffffff) < 0 ||	    pci_set_consistent_dma_mask(pci, 0x3fffffff) < 0) {		snd_printk("architecture does not support 30bit PCI busmaster DMA\n");		pci_disable_device(pci);		return -ENXIO;	}		trident = kzalloc(sizeof(*trident), GFP_KERNEL);	if (trident == NULL) {		pci_disable_device(pci);		return -ENOMEM;	}	trident->device = (pci->vendor << 16) | pci->device;	trident->card = card;	trident->pci = pci;	spin_lock_init(&trident->reg_lock);	spin_lock_init(&trident->event_lock);	spin_lock_init(&trident->voice_alloc);	if (pcm_streams < 1)		pcm_streams = 1;	if (pcm_streams > 32)		pcm_streams = 32;	trident->ChanPCM = pcm_streams;	if (max_wavetable_size < 0 )		max_wavetable_size = 0;	trident->synth.max_size = max_wavetable_size * 1024;	trident->irq = -1;	trident->midi_port = TRID_REG(trident, T4D_MPU401_BASE);	pci_set_master(pci);	if ((err = pci_request_regions(pci, "Trident Audio")) < 0) {		kfree(trident);		pci_disable_device(pci);		return err;	}	trident->port = pci_resource_start(pci, 0);	if (request_irq(pci->irq, snd_trident_interrupt, SA_INTERRUPT|SA_SHIRQ, "Trident Audio", (void *) trident)) {		snd_printk("unable to grab IRQ %d\n", pci->irq);		snd_trident_free(trident);		return -EBUSY;	}	trident->irq = pci->irq;	/* allocate 16k-aligned TLB for NX cards */	trident->tlb.entries = NULL;	trident->tlb.buffer.area = NULL;	if (trident->device == TRIDENT_DEVICE_ID_NX) {		if ((err = snd_trident_tlb_alloc(trident)) < 0) {			snd_trident_free(trident);			return err;		}	}	trident->spdif_bits = trident->spdif_pcm_bits = SNDRV_PCM_DEFAULT_CON_SPDIF;	/* initialize chip */	switch (trident->device) {	case TRIDENT_DEVICE_ID_DX:		err = snd_trident_4d_dx_init(trident);		break;	case TRIDENT_DEVICE_ID_NX:		err = snd_trident_4d_nx_init(trident);		break;	case TRIDENT_DEVICE_ID_SI7018:		err = snd_trident_sis_init(trident);		break;	default:		snd_BUG();		break;	}	if (err < 0) {		snd_trident_free(trident);		return err;	}	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, trident, &ops)) < 0) {		snd_trident_free(trident);		return err;	}	if ((err = snd_trident_mixer(trident, pcm_spdif_device)) < 0)		return err;		/* initialise synth voices */	for (i = 0; i < 64; i++) {		voice = &trident->synth.voices[i];		voice->number = i;		voice->trident = trident;	}	/* initialize pcm mixer entries */	for (i = 0; i < 32; i++) {		tmix = &trident->pcm_mixer[i];		tmix->vol = T4D_DEFAULT_PCM_VOL;		tmix->pan = T4D_DEFAULT_PCM_PAN;		tmix->rvol = T4D_DEFAULT_PCM_RVOL;		tmix->cvol = T4D_DEFAULT_PCM_CVOL;	}	snd_trident_enable_eso(trident);		snd_card_set_pm_callback(card, snd_trident_suspend, snd_trident_resume, trident);	snd_trident_proc_init(trident);	snd_card_set_dev(card, &pci->dev);	*rtrident = trident;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/99b359ba10a582148c6725f428a33ba5356dd993/trident_main.c/buggy/sound/pci/trident/trident_main.c