diff options
author | davem <davem> | 2001-12-16 07:53:13 +0000 |
---|---|---|
committer | davem <davem> | 2001-12-16 07:53:13 +0000 |
commit | c6858b1a2d38255db140bb36f06025c4e9a73db8 (patch) | |
tree | 10a7116939fb0644426b9bfef21591c24ccca19a | |
parent | 36ff809c6e7cc2674ec6aa9a9b173bd94234bc32 (diff) | |
download | netdev-vger-cvs-c6858b1a2d38255db140bb36f06025c4e9a73db8.tar.gz |
Trident DMA mask fix for the mainline.
-rw-r--r-- | drivers/sound/trident.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/sound/trident.c b/drivers/sound/trident.c index aabd8adc6..c68f78547 100644 --- a/drivers/sound/trident.c +++ b/drivers/sound/trident.c @@ -187,6 +187,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 @@ -3948,13 +3949,20 @@ static int __init trident_probe(struct pci_dev *pci_dev, const struct pci_device 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); |