From: Vojtech P. <vo...@us...> - 2002-01-24 19:51:29
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/sound In directory usw-pr-cvs1:/tmp/cvs-serv2610/linux/drivers/sound Modified Files: es1370.c es1371.c trident.c Log Message: Moving, updating to latest versions. Index: es1370.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/sound/es1370.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- es1370.c 2002/01/03 15:33:39 1.1 +++ es1370.c 2002/01/24 19:51:26 1.2 @@ -1024,7 +1024,7 @@ static int es1370_open_mixdev(struct inode *inode, struct file *file) { - int minor = MINOR(inode->i_rdev); + unsigned int minor = minor(inode->i_rdev); struct list_head *list; struct es1370_state *s; @@ -1368,7 +1368,7 @@ ret = -EINVAL; goto out; } - if (remap_page_range(vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot)) { + if (remap_page_range(vma, vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot)) { ret = -EAGAIN; goto out; } @@ -1724,7 +1724,7 @@ static int es1370_open(struct inode *inode, struct file *file) { - int minor = MINOR(inode->i_rdev); + unsigned int minor = minor(inode->i_rdev); DECLARE_WAITQUEUE(wait, current); unsigned long flags; struct list_head *list; @@ -1940,7 +1940,7 @@ if (size > (PAGE_SIZE << s->dma_dac1.buforder)) goto out; ret = -EAGAIN; - if (remap_page_range(vma->vm_start, virt_to_phys(s->dma_dac1.rawbuf), size, vma->vm_page_prot)) + if (remap_page_range(vma, vma->vm_start, virt_to_phys(s->dma_dac1.rawbuf), size, vma->vm_page_prot)) goto out; s->dma_dac1.mapped = 1; ret = 0; @@ -2160,7 +2160,7 @@ static int es1370_open_dac(struct inode *inode, struct file *file) { - int minor = MINOR(inode->i_rdev); + unsigned int minor = minor(inode->i_rdev); DECLARE_WAITQUEUE(wait, current); unsigned long flags; struct list_head *list; @@ -2403,7 +2403,7 @@ static int es1370_midi_open(struct inode *inode, struct file *file) { - int minor = MINOR(inode->i_rdev); + unsigned int minor = minor(inode->i_rdev); DECLARE_WAITQUEUE(wait, current); unsigned long flags; struct list_head *list; @@ -2479,12 +2479,8 @@ break; if (signal_pending(current)) break; - if (file->f_flags & O_NONBLOCK) { - remove_wait_queue(&s->midi.owait, &wait); - set_current_state(TASK_RUNNING); - unlock_kernel(); - return -EBUSY; - } + if (file->f_flags & O_NONBLOCK) + break; tmo = (count * HZ) / 3100; if (!schedule_timeout(tmo ? : 1) && tmo) DBG(printk(KERN_DEBUG "es1370: midi timed out??\n");) Index: es1371.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/sound/es1371.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- es1371.c 2002/01/03 15:33:39 1.1 +++ es1371.c 2002/01/24 19:51:26 1.2 @@ -1207,7 +1207,7 @@ static int es1371_open_mixdev(struct inode *inode, struct file *file) { - int minor = MINOR(inode->i_rdev); + int minor = minor(inode->i_rdev); struct list_head *list; struct es1371_state *s; @@ -1556,7 +1556,7 @@ ret = -EINVAL; goto out; } - if (remap_page_range(vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot)) { + if (remap_page_range(vma, vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot)) { ret = -EAGAIN; goto out; } @@ -1907,7 +1907,7 @@ static int es1371_open(struct inode *inode, struct file *file) { - int minor = MINOR(inode->i_rdev); + int minor = minor(inode->i_rdev); DECLARE_WAITQUEUE(wait, current); unsigned long flags; struct list_head *list; @@ -2125,7 +2125,7 @@ if (size > (PAGE_SIZE << s->dma_dac1.buforder)) goto out; ret = -EAGAIN; - if (remap_page_range(vma->vm_start, virt_to_phys(s->dma_dac1.rawbuf), size, vma->vm_page_prot)) + if (remap_page_range(vma, vma->vm_start, virt_to_phys(s->dma_dac1.rawbuf), size, vma->vm_page_prot)) goto out; s->dma_dac1.mapped = 1; ret = 0; @@ -2336,7 +2336,7 @@ static int es1371_open_dac(struct inode *inode, struct file *file) { - int minor = MINOR(inode->i_rdev); + int minor = minor(inode->i_rdev); DECLARE_WAITQUEUE(wait, current); unsigned long flags; struct list_head *list; @@ -2578,7 +2578,7 @@ static int es1371_midi_open(struct inode *inode, struct file *file) { - int minor = MINOR(inode->i_rdev); + int minor = minor(inode->i_rdev); DECLARE_WAITQUEUE(wait, current); unsigned long flags; struct list_head *list; @@ -2654,10 +2654,7 @@ if (signal_pending(current)) break; if (file->f_flags & O_NONBLOCK) { - remove_wait_queue(&s->midi.owait, &wait); - set_current_state(TASK_RUNNING); - unlock_kernel(); - return -EBUSY; + break; } tmo = (count * HZ) / 3100; if (!schedule_timeout(tmo ? : 1) && tmo) @@ -2842,8 +2839,8 @@ printk(KERN_ERR PFX "irq %u in use\n", s->irq); goto err_irq; } - printk(KERN_INFO PFX "found es1371 rev %d at io %#lx irq %u\n" - KERN_INFO PFX "features: joystick 0x%x\n", s->rev, s->io, s->irq, joystick[devindex]); + printk(KERN_INFO PFX "found es1371 rev %d at io %#lx irq %u joystick %#x\n", + s->rev, s->io, s->irq, s->gameport.io); /* register devices */ if ((res=(s->dev_audio = register_sound_dsp(&es1371_audio_fops,-1))<0)) goto err_dev1; @@ -3048,7 +3045,7 @@ #ifndef MODULE -/* format is: es1371=[spdif,[nomic,[amplifier]]] */ +/* format is: es1371=[spdif,[nomix,[amplifier]]] */ static int __init es1371_setup(char *str) { @@ -3059,8 +3056,8 @@ (void) ((get_option(&str, &spdif[nr_dev]) == 2) - && (get_option(&str, &nomic[nr_dev]) == 2) - && (get_option(&str, &lifier))); + && (get_option(&str, &nomix[nr_dev]) == 2) + && (get_option(&str, &lifier[nr_dev]))); nr_dev++; return 1; Index: trident.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/sound/trident.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- trident.c 2002/01/03 15:33:39 1.1 +++ trident.c 2002/01/24 19:51:26 1.2 @@ -191,6 +191,7 @@ #define TRIDENT_STATE_MAGIC 0x63657373 /* "cess" */ #define TRIDENT_DMA_MASK 0x3fffffff /* DMA buffer mask for pci_alloc_consist */ +#define ALI_DMA_MASK 0xffffffff /* ALI Tridents lack the 30-bit limitation */ #define NR_HW_CH 32 @@ -647,13 +648,21 @@ static void trident_free_pcm_channel(struct trident_card *card, unsigned int channel) { int bank; + unsigned char b; if (channel < 31 || channel > 63) return; + if (card->pci_id == PCI_DEVICE_ID_TRIDENT_4DWAVE_DX || + card->pci_id == PCI_DEVICE_ID_TRIDENT_4DWAVE_NX) { + b = inb (TRID_REG(card, T4D_REC_CH)); + if ((b & ~0x80) == channel) + outb(0x0, TRID_REG(card, T4D_REC_CH)); + } + bank = channel >> 5; channel = channel & 0x1f; - + card->banks[bank].bitmap &= ~(1 << (channel)); } @@ -2072,7 +2081,7 @@ if (size > (PAGE_SIZE << dmabuf->buforder)) goto out; ret = -EAGAIN; - if (remap_page_range(vma->vm_start, virt_to_phys(dmabuf->rawbuf), + if (remap_page_range(vma, vma->vm_start, virt_to_phys(dmabuf->rawbuf), size, vma->vm_page_prot)) goto out; dmabuf->mapped = 1; @@ -2554,7 +2563,7 @@ static int trident_open(struct inode *inode, struct file *file) { int i = 0; - int minor = MINOR(inode->i_rdev); + int minor = minor(inode->i_rdev); struct trident_card *card = devs; struct trident_state *state = NULL; struct dmabuf *dmabuf = NULL; @@ -3749,7 +3758,7 @@ static int trident_open_mixdev(struct inode *inode, struct file *file) { int i = 0; - int minor = MINOR(inode->i_rdev); + int minor = minor(inode->i_rdev); struct trident_card *card = devs; for (card = devs; card != NULL; card = card->next) @@ -3996,13 +4005,20 @@ u16 temp; struct pci_dev *pci_dev_m1533 = NULL; int rc = -ENODEV; + u64 dma_mask; if (pci_enable_device(pci_dev)) goto out; - if (pci_set_dma_mask(pci_dev, TRIDENT_DMA_MASK)) { + if (pci_dev->device == PCI_DEVICE_ID_ALI_5451) + dma_mask = ALI_DMA_MASK; + else + dma_mask = TRIDENT_DMA_MASK; + if (pci_set_dma_mask(pci_dev, dma_mask)) { printk(KERN_ERR "trident: architecture does not support" - " 30bit PCI busmaster DMA\n"); + " %s PCI busmaster DMA\n", + pci_dev->device == PCI_DEVICE_ID_ALI_5451 ? + "32-bit" : "30-bit"); goto out; } pci_read_config_byte(pci_dev, PCI_CLASS_REVISION, &revision); @@ -4038,11 +4054,11 @@ card->banks[BANK_B].bitmap = 0UL; card->gameport.driver = card; - card->gameport.fuzz = 64; + card->gameport.fuzz = 64; card->gameport.read = trident_game_read; card->gameport.trigger = trident_game_trigger; - card->gameport.cooked_read = trident_game_cooked_read; - card->gameport.open = trident_game_open; + card->gameport.cooked_read = trident_game_cooked_read; + card->gameport.open = trident_game_open; init_MUTEX(&card->open_sem); spin_lock_init(&card->lock); @@ -4174,7 +4190,7 @@ } rc = 0; pci_set_drvdata(pci_dev, card); - + /* Enable Address Engine Interrupts */ trident_enable_loop_interrupts(card); |