|
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);
|