Staging: sep: function shuffle
Shuffle the functions into a more normal order. Don't however change any of them. Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
8f3aa57f82
commit
a2171b6807
@ -170,25 +170,6 @@ unsigned long jiffies_future;
|
|||||||
private functions
|
private functions
|
||||||
--------------------------------*/
|
--------------------------------*/
|
||||||
|
|
||||||
/*
|
|
||||||
function that is activated on the succesfull probe of the SEP device
|
|
||||||
*/
|
|
||||||
static int __devinit sep_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
|
|
||||||
|
|
||||||
static struct pci_device_id sep_pci_id_tbl[] = {
|
|
||||||
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x080c)},
|
|
||||||
{0}
|
|
||||||
};
|
|
||||||
|
|
||||||
MODULE_DEVICE_TABLE(pci, sep_pci_id_tbl);
|
|
||||||
|
|
||||||
/* field for registering driver to PCI device */
|
|
||||||
static struct pci_driver sep_pci_driver = {
|
|
||||||
.name = "sep_sec_driver",
|
|
||||||
.id_table = sep_pci_id_tbl,
|
|
||||||
.probe = sep_probe
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This functions locks the area of the resisnd and cache sep code
|
This functions locks the area of the resisnd and cache sep code
|
||||||
*/
|
*/
|
||||||
@ -453,6 +434,20 @@ end_function:
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct pci_device_id sep_pci_id_tbl[] = {
|
||||||
|
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x080c)},
|
||||||
|
{0}
|
||||||
|
};
|
||||||
|
|
||||||
|
MODULE_DEVICE_TABLE(pci, sep_pci_id_tbl);
|
||||||
|
|
||||||
|
/* field for registering driver to PCI device */
|
||||||
|
static struct pci_driver sep_pci_driver = {
|
||||||
|
.name = "sep_sec_driver",
|
||||||
|
.id_table = sep_pci_id_tbl,
|
||||||
|
.probe = sep_probe
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
this function registers th driver to
|
this function registers th driver to
|
||||||
the device subsystem( either PCI, USB, etc)
|
the device subsystem( either PCI, USB, etc)
|
||||||
@ -463,4 +458,3 @@ int sep_register_driver_to_device(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -608,179 +608,6 @@ static int sep_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, u
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
this function registers the driver to the file system
|
|
||||||
*/
|
|
||||||
static int sep_register_driver_to_fs(void)
|
|
||||||
{
|
|
||||||
int ret_val = alloc_chrdev_region(&g_sep_device_number, 0, 1, "sep_sec_driver");
|
|
||||||
if (ret_val) {
|
|
||||||
edbg("sep_driver:major number allocation failed, retval is %d\n", ret_val);
|
|
||||||
goto end_function;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set the files operations structure */
|
|
||||||
g_sep_fops.owner = THIS_MODULE;
|
|
||||||
g_sep_fops.ioctl = sep_ioctl;
|
|
||||||
g_sep_fops.poll = sep_poll;
|
|
||||||
g_sep_fops.open = sep_open;
|
|
||||||
g_sep_fops.release = sep_release;
|
|
||||||
g_sep_fops.mmap = sep_mmap;
|
|
||||||
|
|
||||||
/* init cdev */
|
|
||||||
cdev_init(&g_sep_cdev, &g_sep_fops);
|
|
||||||
g_sep_cdev.owner = THIS_MODULE;
|
|
||||||
|
|
||||||
/* register the driver with the kernel */
|
|
||||||
ret_val = cdev_add(&g_sep_cdev, g_sep_device_number, 1);
|
|
||||||
|
|
||||||
if (ret_val) {
|
|
||||||
edbg("sep_driver:cdev_add failed, retval is %d\n", ret_val);
|
|
||||||
goto end_function_unregister_devnum;
|
|
||||||
}
|
|
||||||
|
|
||||||
goto end_function;
|
|
||||||
|
|
||||||
end_function_unregister_devnum:
|
|
||||||
|
|
||||||
/* unregister dev numbers */
|
|
||||||
unregister_chrdev_region(g_sep_device_number, 1);
|
|
||||||
|
|
||||||
end_function:
|
|
||||||
return ret_val;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
this function unregisters driver from fs
|
|
||||||
*/
|
|
||||||
static void sep_unregister_driver_from_fs(void)
|
|
||||||
{
|
|
||||||
cdev_del(&g_sep_cdev);
|
|
||||||
/* unregister dev numbers */
|
|
||||||
unregister_chrdev_region(g_sep_device_number, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------
|
|
||||||
init function
|
|
||||||
----------------------------------------------------------------*/
|
|
||||||
static int __init sep_init(void)
|
|
||||||
{
|
|
||||||
int ret_val = 0;
|
|
||||||
int counter;
|
|
||||||
int size; /* size of memory for allocation */
|
|
||||||
|
|
||||||
dbg("SEP Driver:-------->Init start\n");
|
|
||||||
edbg("sep->shared_area_addr = %lx\n", (unsigned long) &sep_dev->shared_area_addr);
|
|
||||||
|
|
||||||
/* transaction counter that coordinates the transactions between SEP
|
|
||||||
and HOST */
|
|
||||||
sep_dev->host_to_sep_send_counter = 0;
|
|
||||||
|
|
||||||
/* counter for the messages from sep */
|
|
||||||
sep_dev->sep_to_host_reply_counter = 0;
|
|
||||||
|
|
||||||
/* counter for the number of bytes allocated in the pool
|
|
||||||
for the current transaction */
|
|
||||||
sep_dev->data_pool_bytes_allocated = 0;
|
|
||||||
|
|
||||||
/* set the starting mode to blocking */
|
|
||||||
sep_dev->block_mode_flag = 1;
|
|
||||||
|
|
||||||
ret_val = sep_register_driver_to_device();
|
|
||||||
if (ret_val) {
|
|
||||||
edbg("sep_driver:sep_driver_to_device failed, ret_val is %d\n", ret_val);
|
|
||||||
goto end_function_unregister_from_fs;
|
|
||||||
}
|
|
||||||
/* calculate the total size for 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;
|
|
||||||
|
|
||||||
/* allocate the shared area */
|
|
||||||
if (sep_map_and_alloc_shared_area(size, &sep_dev->shared_area_addr, &sep_dev->phys_shared_area_addr)) {
|
|
||||||
ret_val = -ENOMEM;
|
|
||||||
/* allocation failed */
|
|
||||||
goto end_function_unmap_io_memory;
|
|
||||||
}
|
|
||||||
/* now set the memory regions */
|
|
||||||
sep_dev->message_shared_area_addr = sep_dev->shared_area_addr;
|
|
||||||
|
|
||||||
edbg("SEP Driver: g_message_shared_area_addr is %08lx\n", sep_dev->message_shared_area_addr);
|
|
||||||
|
|
||||||
#if (SEP_DRIVER_RECONFIG_MESSAGE_AREA == 1)
|
|
||||||
/* send the new SHARED MESSAGE AREA to the SEP */
|
|
||||||
sep_write_reg(sep_dev, HW_HOST_HOST_SEP_GPR1_REG_ADDR, sep_dev->phys_shared_area_addr);
|
|
||||||
|
|
||||||
/* poll for SEP response */
|
|
||||||
retVal = sep_read_reg(sep_dev, HW_HOST_SEP_HOST_GPR1_REG_ADDR);
|
|
||||||
while (retVal != 0xffffffff && retVal != sep_dev->phys_shared_area_addr)
|
|
||||||
retVal = sep_read_reg(sep_dev, HW_HOST_SEP_HOST_GPR1_REG_ADDR);
|
|
||||||
|
|
||||||
/* check the return value (register) */
|
|
||||||
if (retVal != sep_dev->phys_shared_area_addr) {
|
|
||||||
ret_val = -ENOMEM;
|
|
||||||
goto end_function_deallocate_message_area;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
/* init the flow contextes */
|
|
||||||
for (counter = 0; counter < SEP_DRIVER_NUM_FLOWS; counter++)
|
|
||||||
sep_dev->flows_data_array[counter].flow_id = SEP_FREE_FLOW_ID;
|
|
||||||
|
|
||||||
sep_dev->flow_wq_ptr = create_singlethread_workqueue("sepflowwq");
|
|
||||||
if (sep_dev->flow_wq_ptr == 0) {
|
|
||||||
ret_val = -ENOMEM;
|
|
||||||
edbg("sep_driver:flow queue creation failed\n");
|
|
||||||
goto end_function_deallocate_sep_shared_area;
|
|
||||||
}
|
|
||||||
edbg("SEP Driver: create flow workqueue \n");
|
|
||||||
|
|
||||||
/* register driver to fs */
|
|
||||||
ret_val = sep_register_driver_to_fs();
|
|
||||||
if (ret_val)
|
|
||||||
goto end_function_deallocate_sep_shared_area;
|
|
||||||
/* load the rom code */
|
|
||||||
sep_load_rom_code();
|
|
||||||
goto end_function;
|
|
||||||
end_function_unregister_from_fs:
|
|
||||||
/* unregister from fs */
|
|
||||||
sep_unregister_driver_from_fs();
|
|
||||||
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);
|
|
||||||
end_function_unmap_io_memory:
|
|
||||||
iounmap((void *) sep_dev->reg_base_address);
|
|
||||||
/* release io memory region */
|
|
||||||
release_mem_region(SEP_IO_MEM_REGION_START_ADDRESS, SEP_IO_MEM_REGION_SIZE);
|
|
||||||
end_function:
|
|
||||||
dbg("SEP Driver:<-------- Init end\n");
|
|
||||||
return ret_val;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------
|
|
||||||
exit function
|
|
||||||
--------------------------------------------------------------*/
|
|
||||||
static void __exit sep_exit(void)
|
|
||||||
{
|
|
||||||
int size;
|
|
||||||
|
|
||||||
dbg("SEP Driver:--------> Exit start\n");
|
|
||||||
|
|
||||||
/* unregister from fs */
|
|
||||||
sep_unregister_driver_from_fs();
|
|
||||||
/* 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;
|
|
||||||
/* free shared area */
|
|
||||||
sep_unmap_and_free_shared_area(size, sep_dev->shared_area_addr, sep_dev->phys_shared_area_addr);
|
|
||||||
edbg("SEP Driver: free pages SEP SHARED AREA \n");
|
|
||||||
iounmap((void *) sep_dev->reg_base_address);
|
|
||||||
edbg("SEP Driver: iounmap \n");
|
|
||||||
/* release io memory region */
|
|
||||||
release_mem_region(SEP_IO_MEM_REGION_START_ADDRESS, SEP_IO_MEM_REGION_SIZE);
|
|
||||||
edbg("SEP Driver: release_mem_region \n");
|
|
||||||
dbg("SEP Driver:<-------- Exit end\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
interrupt handler function
|
interrupt handler function
|
||||||
@ -2629,6 +2456,181 @@ static void sep_configure_dma_burst(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
this function registers the driver to the file system
|
||||||
|
*/
|
||||||
|
static int sep_register_driver_to_fs(void)
|
||||||
|
{
|
||||||
|
int ret_val = alloc_chrdev_region(&g_sep_device_number, 0, 1, "sep_sec_driver");
|
||||||
|
if (ret_val) {
|
||||||
|
edbg("sep_driver:major number allocation failed, retval is %d\n", ret_val);
|
||||||
|
goto end_function;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set the files operations structure */
|
||||||
|
g_sep_fops.owner = THIS_MODULE;
|
||||||
|
g_sep_fops.ioctl = sep_ioctl;
|
||||||
|
g_sep_fops.poll = sep_poll;
|
||||||
|
g_sep_fops.open = sep_open;
|
||||||
|
g_sep_fops.release = sep_release;
|
||||||
|
g_sep_fops.mmap = sep_mmap;
|
||||||
|
|
||||||
|
/* init cdev */
|
||||||
|
cdev_init(&g_sep_cdev, &g_sep_fops);
|
||||||
|
g_sep_cdev.owner = THIS_MODULE;
|
||||||
|
|
||||||
|
/* register the driver with the kernel */
|
||||||
|
ret_val = cdev_add(&g_sep_cdev, g_sep_device_number, 1);
|
||||||
|
|
||||||
|
if (ret_val) {
|
||||||
|
edbg("sep_driver:cdev_add failed, retval is %d\n", ret_val);
|
||||||
|
goto end_function_unregister_devnum;
|
||||||
|
}
|
||||||
|
|
||||||
|
goto end_function;
|
||||||
|
|
||||||
|
end_function_unregister_devnum:
|
||||||
|
|
||||||
|
/* unregister dev numbers */
|
||||||
|
unregister_chrdev_region(g_sep_device_number, 1);
|
||||||
|
|
||||||
|
end_function:
|
||||||
|
return ret_val;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
this function unregisters driver from fs
|
||||||
|
*/
|
||||||
|
static void sep_unregister_driver_from_fs(void)
|
||||||
|
{
|
||||||
|
cdev_del(&g_sep_cdev);
|
||||||
|
/* unregister dev numbers */
|
||||||
|
unregister_chrdev_region(g_sep_device_number, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------
|
||||||
|
init function
|
||||||
|
----------------------------------------------------------------*/
|
||||||
|
static int __init sep_init(void)
|
||||||
|
{
|
||||||
|
int ret_val = 0;
|
||||||
|
int counter;
|
||||||
|
int size; /* size of memory for allocation */
|
||||||
|
|
||||||
|
dbg("SEP Driver:-------->Init start\n");
|
||||||
|
edbg("sep->shared_area_addr = %lx\n", (unsigned long) &sep_dev->shared_area_addr);
|
||||||
|
|
||||||
|
/* transaction counter that coordinates the transactions between SEP
|
||||||
|
and HOST */
|
||||||
|
sep_dev->host_to_sep_send_counter = 0;
|
||||||
|
|
||||||
|
/* counter for the messages from sep */
|
||||||
|
sep_dev->sep_to_host_reply_counter = 0;
|
||||||
|
|
||||||
|
/* counter for the number of bytes allocated in the pool
|
||||||
|
for the current transaction */
|
||||||
|
sep_dev->data_pool_bytes_allocated = 0;
|
||||||
|
|
||||||
|
/* set the starting mode to blocking */
|
||||||
|
sep_dev->block_mode_flag = 1;
|
||||||
|
|
||||||
|
ret_val = sep_register_driver_to_device();
|
||||||
|
if (ret_val) {
|
||||||
|
edbg("sep_driver:sep_driver_to_device failed, ret_val is %d\n", ret_val);
|
||||||
|
goto end_function_unregister_from_fs;
|
||||||
|
}
|
||||||
|
/* calculate the total size for 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;
|
||||||
|
|
||||||
|
/* allocate the shared area */
|
||||||
|
if (sep_map_and_alloc_shared_area(size, &sep_dev->shared_area_addr, &sep_dev->phys_shared_area_addr)) {
|
||||||
|
ret_val = -ENOMEM;
|
||||||
|
/* allocation failed */
|
||||||
|
goto end_function_unmap_io_memory;
|
||||||
|
}
|
||||||
|
/* now set the memory regions */
|
||||||
|
sep_dev->message_shared_area_addr = sep_dev->shared_area_addr;
|
||||||
|
|
||||||
|
edbg("SEP Driver: g_message_shared_area_addr is %08lx\n", sep_dev->message_shared_area_addr);
|
||||||
|
|
||||||
|
#if (SEP_DRIVER_RECONFIG_MESSAGE_AREA == 1)
|
||||||
|
/* send the new SHARED MESSAGE AREA to the SEP */
|
||||||
|
sep_write_reg(sep_dev, HW_HOST_HOST_SEP_GPR1_REG_ADDR, sep_dev->phys_shared_area_addr);
|
||||||
|
|
||||||
|
/* poll for SEP response */
|
||||||
|
retVal = sep_read_reg(sep_dev, HW_HOST_SEP_HOST_GPR1_REG_ADDR);
|
||||||
|
while (retVal != 0xffffffff && retVal != sep_dev->phys_shared_area_addr)
|
||||||
|
retVal = sep_read_reg(sep_dev, HW_HOST_SEP_HOST_GPR1_REG_ADDR);
|
||||||
|
|
||||||
|
/* check the return value (register) */
|
||||||
|
if (retVal != sep_dev->phys_shared_area_addr) {
|
||||||
|
ret_val = -ENOMEM;
|
||||||
|
goto end_function_deallocate_message_area;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/* init the flow contextes */
|
||||||
|
for (counter = 0; counter < SEP_DRIVER_NUM_FLOWS; counter++)
|
||||||
|
sep_dev->flows_data_array[counter].flow_id = SEP_FREE_FLOW_ID;
|
||||||
|
|
||||||
|
sep_dev->flow_wq_ptr = create_singlethread_workqueue("sepflowwq");
|
||||||
|
if (sep_dev->flow_wq_ptr == 0) {
|
||||||
|
ret_val = -ENOMEM;
|
||||||
|
edbg("sep_driver:flow queue creation failed\n");
|
||||||
|
goto end_function_deallocate_sep_shared_area;
|
||||||
|
}
|
||||||
|
edbg("SEP Driver: create flow workqueue \n");
|
||||||
|
|
||||||
|
/* register driver to fs */
|
||||||
|
ret_val = sep_register_driver_to_fs();
|
||||||
|
if (ret_val)
|
||||||
|
goto end_function_deallocate_sep_shared_area;
|
||||||
|
/* load the rom code */
|
||||||
|
sep_load_rom_code();
|
||||||
|
goto end_function;
|
||||||
|
end_function_unregister_from_fs:
|
||||||
|
/* unregister from fs */
|
||||||
|
sep_unregister_driver_from_fs();
|
||||||
|
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);
|
||||||
|
end_function_unmap_io_memory:
|
||||||
|
iounmap((void *) sep_dev->reg_base_address);
|
||||||
|
/* release io memory region */
|
||||||
|
release_mem_region(SEP_IO_MEM_REGION_START_ADDRESS, SEP_IO_MEM_REGION_SIZE);
|
||||||
|
end_function:
|
||||||
|
dbg("SEP Driver:<-------- Init end\n");
|
||||||
|
return ret_val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------
|
||||||
|
exit function
|
||||||
|
--------------------------------------------------------------*/
|
||||||
|
static void __exit sep_exit(void)
|
||||||
|
{
|
||||||
|
int size;
|
||||||
|
|
||||||
|
dbg("SEP Driver:--------> Exit start\n");
|
||||||
|
|
||||||
|
/* unregister from fs */
|
||||||
|
sep_unregister_driver_from_fs();
|
||||||
|
/* 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;
|
||||||
|
/* free shared area */
|
||||||
|
sep_unmap_and_free_shared_area(size, sep_dev->shared_area_addr, sep_dev->phys_shared_area_addr);
|
||||||
|
edbg("SEP Driver: free pages SEP SHARED AREA \n");
|
||||||
|
iounmap((void *) sep_dev->reg_base_address);
|
||||||
|
edbg("SEP Driver: iounmap \n");
|
||||||
|
/* release io memory region */
|
||||||
|
release_mem_region(SEP_IO_MEM_REGION_START_ADDRESS, SEP_IO_MEM_REGION_SIZE);
|
||||||
|
edbg("SEP Driver: release_mem_region \n");
|
||||||
|
dbg("SEP Driver:<-------- Exit end\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
module_init(sep_init);
|
module_init(sep_init);
|
||||||
module_exit(sep_exit);
|
module_exit(sep_exit);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user