*/
static int sep_register_driver_to_fs(void);
-/*
- this function unregisters driver from fs
-*/
-static void sep_unregister_driver_from_fs(void);
-
/*
this function calculates the size of data that can be inserted into the lli
table from this array the condition is that either the table is full
FUNCTIONS
-----------------------------------------------*/
-/*
- This functions locks the area of the resisnd and cache sep code
-*/
-static void sep_lock_cache_resident_area(void)
-{
- return;
-}
-
/*
This functions copies the cache and resident from their source location into
destination memory, which is external to Linux VM and is given as
if (error)
goto end_function;
- /* lock the area (if needed) */
- sep_lock_cache_resident_area();
-
command_args.new_base_addr = sep_dev->phys_shared_area_addr;
/* find the new base address according to the lowest address between
.probe = sep_probe
};
-/*
- this function registers th driver to
- the device subsystem( either PCI, USB, etc)
-*/
-static int sep_register_driver_to_device(void)
-{
- return pci_register_driver(&sep_pci_driver);
-}
-
-
-
/* major and minor device numbers */
static dev_t sep_devno;
return ret_val;
}
-/*
- this function unregisters driver from fs
-*/
-static void sep_unregister_driver_from_fs(void)
-{
- cdev_del(&sep_cdev);
- /* unregister dev numbers */
- unregister_chrdev_region(sep_devno, 1);
-}
-
/*--------------------------------------------------------------
init function
/* set the starting mode to blocking */
sep_dev->block_mode_flag = 1;
- ret_val = sep_register_driver_to_device();
+ /* FIXME: Probe can occur before we are ready to survive a probe */
+ ret_val = pci_register_driver(&sep_pci_driver);
if (ret_val) {
edbg("sep_driver:sep_driver_to_device failed, ret_val is %d\n", ret_val);
goto end_function_unregister_from_fs;
goto end_function;
end_function_unregister_from_fs:
/* unregister from fs */
- sep_unregister_driver_from_fs();
+ cdev_del(&sep_cdev);
+ /* unregister dev numbers */
+ unregister_chrdev_region(sep_devno, 1);
end_function_deallocate_sep_shared_area:
/* de-allocate shared area */
sep_unmap_and_free_shared_area(size, sep_dev->shared_area_addr, sep_dev->phys_shared_area_addr);
dbg("SEP Driver:--------> Exit start\n");
/* unregister from fs */
- sep_unregister_driver_from_fs();
+ cdev_del(&sep_cdev);
+ /* unregister dev numbers */
+ unregister_chrdev_region(sep_devno, 1);
/* calculate the total size for de-allocation */
size = SEP_DRIVER_MESSAGE_SHARED_AREA_SIZE_IN_BYTES +
SEP_DRIVER_SYNCHRONIC_DMA_TABLES_AREA_SIZE_IN_BYTES + SEP_DRIVER_DATA_POOL_SHARED_AREA_SIZE_IN_BYTES + SEP_DRIVER_FLOW_DMA_TABLES_AREA_SIZE_IN_BYTES + SEP_DRIVER_STATIC_AREA_SIZE_IN_BYTES + SEP_DRIVER_SYSTEM_DATA_MEMORY_SIZE_IN_BYTES;
*/
static void sep_load_rom_code(void);
-/*
-This functions locks the area of the resident and cache sep code (if possible)
-*/
-static void sep_lock_cache_resident_area(void);
-
/*
This functions copies the cache and resident from their source location into
destination memory, which is external to Linux VM and is given as physical
*/
static unsigned long sep_shared_area_phys_to_virt(unsigned long phys_address);
-/*
-This function registers th driver to the device
-subsystem (either PCI, USB, etc)
-*/
-static int sep_register_driver_to_device(void);
-
#endif /*__SEP_DRIVER_EXT_API_H__*/