diff options
-rw-r--r-- | sound/pci/ctxfi/cthw20k2.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/sound/pci/ctxfi/cthw20k2.c b/sound/pci/ctxfi/cthw20k2.c index 041199fbae16..edbfb4827469 100644 --- a/sound/pci/ctxfi/cthw20k2.c +++ b/sound/pci/ctxfi/cthw20k2.c @@ -26,7 +26,11 @@ #include <linux/interrupt.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 void hw_write_20kx(struct hw *hw, u32 reg, u32 data); @@ -1834,18 +1838,16 @@ static int hw_card_start(struct hw *hw) int err = 0; struct pci_dev *pci = hw->pci; unsigned int gctl; - unsigned int dma_mask = 0; err = pci_enable_device(pci); if (err < 0) return err; /* Set DMA transfer mask */ - dma_mask = CT_XFI_DMA_MASK; - if (pci_set_dma_mask(pci, dma_mask) < 0 || - pci_set_consistent_dma_mask(pci, dma_mask) < 0) { + if (pci_set_dma_mask(pci, CT_XFI_DMA_MASK) < 0 || + pci_set_consistent_dma_mask(pci, CT_XFI_DMA_MASK) < 0) { 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; goto error1; } |