Commit a5c25241 authored by kirjanov@gmail.com's avatar kirjanov@gmail.com Committed by Greg Kroah-Hartman

staging: slicoss Use pci_set_consistent_dma_mask.

Use pci_set_consistent_dma_mask() in the case of 64-bit consistent allocations.
Signed-off-by: default avatarDenis Kirjanov <kirjanov@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 30ae835f
...@@ -366,6 +366,7 @@ static int __devinit slic_entry_probe(struct pci_dev *pcidev, ...@@ -366,6 +366,7 @@ static int __devinit slic_entry_probe(struct pci_dev *pcidev,
ulong mmio_start = 0; ulong mmio_start = 0;
ulong mmio_len = 0; ulong mmio_len = 0;
struct sliccard *card = NULL; struct sliccard *card = NULL;
int pci_using_dac = 0;
slic_global.dynamic_intagg = dynamic_intagg; slic_global.dynamic_intagg = dynamic_intagg;
...@@ -379,16 +380,26 @@ static int __devinit slic_entry_probe(struct pci_dev *pcidev, ...@@ -379,16 +380,26 @@ static int __devinit slic_entry_probe(struct pci_dev *pcidev,
printk(KERN_DEBUG "%s\n", slic_proc_version); printk(KERN_DEBUG "%s\n", slic_proc_version);
} }
err = pci_set_dma_mask(pcidev, DMA_BIT_MASK(64)); if (!pci_set_dma_mask(pcidev, DMA_BIT_MASK(64))) {
if (err) { pci_using_dac = 1;
err = pci_set_dma_mask(pcidev, DMA_BIT_MASK(32)); if (pci_set_consistent_dma_mask(pcidev, DMA_BIT_MASK(64))) {
if (err) dev_err(&pcidev->dev, "unable to obtain 64-bit DMA for "
"consistent allocations\n");
goto err_out_disable_pci;
}
} else if (pci_set_dma_mask(pcidev, DMA_BIT_MASK(32))) {
pci_using_dac = 0;
pci_set_consistent_dma_mask(pcidev, DMA_BIT_MASK(32));
} else {
dev_err(&pcidev->dev, "no usable DMA configuration\n");
goto err_out_disable_pci; goto err_out_disable_pci;
} }
err = pci_request_regions(pcidev, DRV_NAME); err = pci_request_regions(pcidev, DRV_NAME);
if (err) if (err) {
dev_err(&pcidev->dev, "can't obtain PCI resources\n");
goto err_out_disable_pci; goto err_out_disable_pci;
}
pci_set_master(pcidev); pci_set_master(pcidev);
...@@ -404,6 +415,8 @@ static int __devinit slic_entry_probe(struct pci_dev *pcidev, ...@@ -404,6 +415,8 @@ static int __devinit slic_entry_probe(struct pci_dev *pcidev,
adapter = netdev_priv(netdev); adapter = netdev_priv(netdev);
adapter->netdev = netdev; adapter->netdev = netdev;
adapter->pcidev = pcidev; adapter->pcidev = pcidev;
if (pci_using_dac)
netdev->features |= NETIF_F_HIGHDMA;
mmio_start = pci_resource_start(pcidev, 0); mmio_start = pci_resource_start(pcidev, 0);
mmio_len = pci_resource_len(pcidev, 0); mmio_len = pci_resource_len(pcidev, 0);
......
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