snd_printk("architecture does not support 24bit PCI busmaster DMA\n"); 
snd_printk(KERN_ERR "architecture does not support 24bit PCI busmaster DMA\n"); 
static int __devinit snd_azf3328_create(snd_card_t * card,                                         struct pci_dev *pci,                                         unsigned long device_type,                                         azf3328_t ** rchip){	azf3328_t *chip;	int err;	static snd_device_ops_t ops = {		.dev_free =     snd_azf3328_dev_free,	};	u16 tmp;	*rchip = NULL;	if ((err = pci_enable_device(pci)) < 0)		return err;	chip = kzalloc(sizeof(*chip), GFP_KERNEL);	if (chip == NULL) {		pci_disable_device(pci);		return -ENOMEM;	}	spin_lock_init(&chip->reg_lock);	chip->card = card;	chip->pci = pci;	chip->irq = -1;	/* check if we can restrict PCI DMA transfers to 24 bits */	if (pci_set_dma_mask(pci, 0x00ffffff) < 0 ||	    pci_set_consistent_dma_mask(pci, 0x00ffffff) < 0) {		snd_printk("architecture does not support 24bit PCI busmaster DMA\n");		pci_disable_device(pci);		return -ENXIO;	}	if ((err = pci_request_regions(pci, "Aztech AZF3328")) < 0) {		kfree(chip);		pci_disable_device(pci);		return err;	}	chip->codec_port = pci_resource_start(pci, 0);	chip->io2_port = pci_resource_start(pci, 1);	chip->mpu_port = pci_resource_start(pci, 2);	chip->synth_port = pci_resource_start(pci, 3);	chip->mixer_port = pci_resource_start(pci, 4);	if (request_irq(pci->irq, snd_azf3328_interrupt, SA_INTERRUPT|SA_SHIRQ, card->shortname, (void *)chip)) {		snd_printk("unable to grab IRQ %d\n", pci->irq);		snd_azf3328_free(chip);		return -EBUSY;	}	chip->irq = pci->irq;	pci_set_master(pci);	synchronize_irq(chip->irq);	snd_azf3328_dbgmisc("codec_port 0x%lx, io2_port 0x%lx, mpu_port 0x%lx, synth_port 0x%lx, mixer_port 0x%lx, irq %d\n", chip->codec_port, chip->io2_port, chip->mpu_port, chip->synth_port, chip->mixer_port, chip->irq);	snd_azf3328_dbgmisc("io2 %02x %02x %02x %02x %02x %02x\n", snd_azf3328_io2_read(chip, 0), snd_azf3328_io2_read(chip, 1), snd_azf3328_io2_read(chip, 2), snd_azf3328_io2_read(chip, 3), snd_azf3328_io2_read(chip, 4), snd_azf3328_io2_read(chip, 5));	for (tmp=0; tmp <= 0x01; tmp += 1)		snd_azf3328_dbgmisc("0x%02x: opl 0x%04x, mpu300 0x%04x, mpu310 0x%04x, mpu320 0x%04x, mpu330 0x%04x\n", tmp, inb(0x388 + tmp), inb(0x300 + tmp), inb(0x310 + tmp), inb(0x320 + tmp), inb(0x330 + tmp));	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {		snd_azf3328_free(chip);		return err;	}	/* create mixer interface & switches */	if ((err = snd_azf3328_mixer_new(chip)) < 0)		return err;#if 0	/* set very low bitrate to reduce noise and power consumption? */	snd_azf3328_setfmt(chip, IDX_IO_PLAY_SOUNDFORMAT, 5512, 8, 1);#endif	/* standard chip init stuff */	spin_lock_irq(&chip->reg_lock);	outb(DMA_PLAY_SOMETHING2|DMA_EPILOGUE_SOMETHING|DMA_SOMETHING_ELSE, chip->codec_port + IDX_IO_PLAY_FLAGS);	outb(DMA_PLAY_SOMETHING2|DMA_EPILOGUE_SOMETHING|DMA_SOMETHING_ELSE, chip->codec_port + IDX_IO_SOMETHING_FLAGS);	outb(DMA_PLAY_SOMETHING2|DMA_EPILOGUE_SOMETHING|DMA_SOMETHING_ELSE, chip->codec_port + IDX_IO_REC_FLAGS);	outb(0x0, chip->codec_port + IDX_IO_IRQ63H);	spin_unlock_irq(&chip->reg_lock);	snd_card_set_dev(card, &pci->dev);	*rchip = chip;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/99b359ba10a582148c6725f428a33ba5356dd993/azt3328.c/clean/sound/pci/azt3328.c