diff options
Diffstat (limited to 'drivers/atm/fore200e.c')
| -rw-r--r-- | drivers/atm/fore200e.c | 22 | 
1 files changed, 14 insertions, 8 deletions
| diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c index d5d9eafbbfcf..75dde903b238 100644 --- a/drivers/atm/fore200e.c +++ b/drivers/atm/fore200e.c @@ -425,7 +425,7 @@ static void fore200e_pca_write(u32 val, volatile u32 __iomem *addr)  static u32  fore200e_pca_dma_map(struct fore200e* fore200e, void* virt_addr, int size, int direction)  { -    u32 dma_addr = pci_map_single((struct pci_dev*)fore200e->bus_dev, virt_addr, size, direction); +    u32 dma_addr = dma_map_single(&((struct pci_dev *) fore200e->bus_dev)->dev, virt_addr, size, direction);      DPRINTK(3, "PCI DVMA mapping: virt_addr = 0x%p, size = %d, direction = %d,  --> dma_addr = 0x%08x\n",  	    virt_addr, size, direction, dma_addr); @@ -440,7 +440,7 @@ fore200e_pca_dma_unmap(struct fore200e* fore200e, u32 dma_addr, int size, int di      DPRINTK(3, "PCI DVMA unmapping: dma_addr = 0x%08x, size = %d, direction = %d\n",  	    dma_addr, size, direction); -    pci_unmap_single((struct pci_dev*)fore200e->bus_dev, dma_addr, size, direction); +    dma_unmap_single(&((struct pci_dev *) fore200e->bus_dev)->dev, dma_addr, size, direction);  } @@ -449,7 +449,7 @@ fore200e_pca_dma_sync_for_cpu(struct fore200e* fore200e, u32 dma_addr, int size,  {      DPRINTK(3, "PCI DVMA sync: dma_addr = 0x%08x, size = %d, direction = %d\n", dma_addr, size, direction); -    pci_dma_sync_single_for_cpu((struct pci_dev*)fore200e->bus_dev, dma_addr, size, direction); +    dma_sync_single_for_cpu(&((struct pci_dev *) fore200e->bus_dev)->dev, dma_addr, size, direction);  }  static void @@ -457,7 +457,7 @@ fore200e_pca_dma_sync_for_device(struct fore200e* fore200e, u32 dma_addr, int si  {      DPRINTK(3, "PCI DVMA sync: dma_addr = 0x%08x, size = %d, direction = %d\n", dma_addr, size, direction); -    pci_dma_sync_single_for_device((struct pci_dev*)fore200e->bus_dev, dma_addr, size, direction); +    dma_sync_single_for_device(&((struct pci_dev *) fore200e->bus_dev)->dev, dma_addr, size, direction);  } @@ -470,9 +470,10 @@ fore200e_pca_dma_chunk_alloc(struct fore200e* fore200e, struct chunk* chunk,  {      /* returned chunks are page-aligned */      chunk->alloc_size = size * nbr; -    chunk->alloc_addr = pci_alloc_consistent((struct pci_dev*)fore200e->bus_dev, -					     chunk->alloc_size, -					     &chunk->dma_addr); +    chunk->alloc_addr = dma_alloc_coherent(&((struct pci_dev *) fore200e->bus_dev)->dev, +					   chunk->alloc_size, +					   &chunk->dma_addr, +					   GFP_KERNEL);      if ((chunk->alloc_addr == NULL) || (chunk->dma_addr == 0))  	return -ENOMEM; @@ -488,7 +489,7 @@ fore200e_pca_dma_chunk_alloc(struct fore200e* fore200e, struct chunk* chunk,  static void  fore200e_pca_dma_chunk_free(struct fore200e* fore200e, struct chunk* chunk)  { -    pci_free_consistent((struct pci_dev*)fore200e->bus_dev, +    dma_free_coherent(&((struct pci_dev *) fore200e->bus_dev)->dev,  			chunk->alloc_size,  			chunk->alloc_addr,  			chunk->dma_addr); @@ -2707,6 +2708,11 @@ static int fore200e_pca_detect(struct pci_dev *pci_dev,  	err = -EINVAL;  	goto out;      } + +    if (dma_set_mask_and_coherent(&pci_dev->dev, DMA_BIT_MASK(32))) { +	err = -EINVAL; +	goto out; +    }      fore200e = kzalloc(sizeof(struct fore200e), GFP_KERNEL);      if (fore200e == NULL) { |