| 
						
						
							
								
							
						
						
					 | 
					@ -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)) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |