Commit 4836ac65 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: ctxfi - Fix DMA mask for emu20k2 chip

Allow 64bit DMA mask for emu20k2 chip, too.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent d436dd06
...@@ -26,7 +26,11 @@ ...@@ -26,7 +26,11 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/delay.h> #include <linux/delay.h>
#define CT_XFI_DMA_MASK DMA_BIT_MASK(32) /* 32 bits */ #if BITS_PER_LONG == 32
#define CT_XFI_DMA_MASK DMA_BIT_MASK(32) /* 32 bit PTE */
#else
#define CT_XFI_DMA_MASK DMA_BIT_MASK(64) /* 64 bit PTE */
#endif
static u32 hw_read_20kx(struct hw *hw, u32 reg); static u32 hw_read_20kx(struct hw *hw, u32 reg);
static void hw_write_20kx(struct hw *hw, u32 reg, u32 data); static void hw_write_20kx(struct hw *hw, u32 reg, u32 data);
...@@ -1834,18 +1838,16 @@ static int hw_card_start(struct hw *hw) ...@@ -1834,18 +1838,16 @@ static int hw_card_start(struct hw *hw)
int err = 0; int err = 0;
struct pci_dev *pci = hw->pci; struct pci_dev *pci = hw->pci;
unsigned int gctl; unsigned int gctl;
unsigned int dma_mask = 0;
err = pci_enable_device(pci); err = pci_enable_device(pci);
if (err < 0) if (err < 0)
return err; return err;
/* Set DMA transfer mask */ /* Set DMA transfer mask */
dma_mask = CT_XFI_DMA_MASK; if (pci_set_dma_mask(pci, CT_XFI_DMA_MASK) < 0 ||
if (pci_set_dma_mask(pci, dma_mask) < 0 || pci_set_consistent_dma_mask(pci, CT_XFI_DMA_MASK) < 0) {
pci_set_consistent_dma_mask(pci, dma_mask) < 0) {
printk(KERN_ERR "ctxfi: architecture does not support PCI " printk(KERN_ERR "ctxfi: architecture does not support PCI "
"busmaster DMA with mask 0x%x\n", dma_mask); "busmaster DMA with mask 0x%llx\n", CT_XFI_DMA_MASK);
err = -ENXIO; err = -ENXIO;
goto error1; goto error1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment