Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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;
	}