ALSA: ctxfi - Fix DMA mask for emu20k2 chip
authorTakashi Iwai <tiwai@suse.de>
Mon, 8 Jun 2009 12:49:26 +0000 (14:49 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 8 Jun 2009 12:51:24 +0000 (14:51 +0200)
Allow 64bit DMA mask for emu20k2 chip, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/ctxfi/cthw20k2.c

index 041199f..edbfb48 100644 (file)
 #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;
        }