|
@ -5,6 +5,7 @@ |
|
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
/*************************************************************************************************/ |
|
|
MODULE_AUTHOR("h4ndh"); //hessamoddin hediyehloo
|
|
|
MODULE_AUTHOR("h4ndh"); //hessamoddin hediyehloo
|
|
|
|
|
|
MODULE_AUTHOR("alihatamitajik"); |
|
|
MODULE_LICENSE("Dual BSD/GPL"); |
|
|
MODULE_LICENSE("Dual BSD/GPL"); |
|
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
/*************************************************************************************************/ |
|
@ -85,20 +86,18 @@ static struct pci_driver pci_driver = |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
/*************************************************************************************************/ |
|
|
static struct file_operations bar_fops = |
|
|
static struct proc_ops bar_ops = |
|
|
{ |
|
|
{ |
|
|
.owner = THIS_MODULE, |
|
|
.proc_open = sono_bar_open, |
|
|
.open = sono_bar_open, |
|
|
.proc_release = sono_bar_close, |
|
|
.release = sono_bar_close, |
|
|
.proc_mmap = sono_bar_mmap |
|
|
.mmap = sono_bar_mmap |
|
|
|
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
static struct file_operations buffer_fops = |
|
|
static struct proc_ops buffer_ops = |
|
|
{ |
|
|
{ |
|
|
.owner = THIS_MODULE, |
|
|
.proc_open = sono_buffer_open, |
|
|
.open = sono_buffer_open, |
|
|
.proc_release = sono_buffer_close, |
|
|
.release = sono_buffer_close, |
|
|
.proc_mmap = sono_buffer_mmap |
|
|
.mmap = sono_buffer_mmap |
|
|
|
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
/*************************************************************************************************/ |
|
@ -135,8 +134,8 @@ static int proc_init(void) |
|
|
{ |
|
|
{ |
|
|
PRINT_ALERT("proc_init"); |
|
|
PRINT_ALERT("proc_init"); |
|
|
|
|
|
|
|
|
proc_create("sono_bars", 0, NULL, &bar_fops); |
|
|
proc_create("sono_bars", 0, NULL, &bar_ops); |
|
|
proc_create("sono_buffers", 0, NULL, &buffer_fops); |
|
|
proc_create("sono_buffers", 0, NULL, &buffer_ops); |
|
|
|
|
|
|
|
|
return 0; |
|
|
return 0; |
|
|
} |
|
|
} |
|
@ -256,9 +255,9 @@ static int __init pcie_probe (struct pci_dev *dev, const struct pci_device_id *i |
|
|
goto probe_fail_enable; |
|
|
goto probe_fail_enable; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (!pci_set_dma_mask(pcidev, DMA_BIT_MASK(64))) |
|
|
if (!dma_set_mask(&pcidev->dev, DMA_BIT_MASK(64))) |
|
|
{ |
|
|
{ |
|
|
if (pci_set_consistent_dma_mask(pcidev, DMA_BIT_MASK(64))) |
|
|
if (dma_set_coherent_mask(&pcidev->dev, DMA_BIT_MASK(64))) |
|
|
{ |
|
|
{ |
|
|
printk(KERN_ERR "Unable to obtain 64bit DMA for consistent allocations\n"); |
|
|
printk(KERN_ERR "Unable to obtain 64bit DMA for consistent allocations\n"); |
|
|
rc = 1; |
|
|
rc = 1; |
|
@ -275,8 +274,8 @@ static int __init pcie_probe (struct pci_dev *dev, const struct pci_device_id *i |
|
|
goto probe_fail; |
|
|
goto probe_fail; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int i = 0; |
|
|
|
|
|
for(; i < TOTAL_BAR_NUM; i++) |
|
|
for(int i = 0; i < TOTAL_BAR_NUM; i++) |
|
|
{ |
|
|
{ |
|
|
bars[i].flags = pci_resource_flags(pcidev, i); |
|
|
bars[i].flags = pci_resource_flags(pcidev, i); |
|
|
if (!(bars[i].flags & IORESOURCE_MEM)) { |
|
|
if (!(bars[i].flags & IORESOURCE_MEM)) { |
|
|