|
@@ -91,7 +91,7 @@ static int sep_load_firmware(struct sep_device *sep)
|
|
|
char *res_name = "resident.image.bin";
|
|
|
char *extapp_name = "extapp.image.bin";
|
|
|
int error ;
|
|
|
- unsigned int work1, work2, work3;
|
|
|
+ unsigned long work1, work2, work3;
|
|
|
|
|
|
/* Set addresses and load resident */
|
|
|
sep->resident_bus = sep->rar_bus;
|
|
@@ -115,13 +115,13 @@ static int sep_load_firmware(struct sep_device *sep)
|
|
|
sep->resident_size);
|
|
|
|
|
|
/* Set addresses for dcache (no loading needed) */
|
|
|
- work1 = (unsigned int)sep->resident_bus;
|
|
|
- work2 = (unsigned int)sep->resident_size;
|
|
|
+ work1 = (unsigned long)sep->resident_bus;
|
|
|
+ work2 = (unsigned long)sep->resident_size;
|
|
|
work3 = (work1 + work2 + (1024 * 4)) & 0xfffff000;
|
|
|
sep->dcache_bus = (dma_addr_t)work3;
|
|
|
|
|
|
- work1 = (unsigned int)sep->resident_addr;
|
|
|
- work2 = (unsigned int)sep->resident_size;
|
|
|
+ work1 = (unsigned long)sep->resident_addr;
|
|
|
+ work2 = (unsigned long)sep->resident_size;
|
|
|
work3 = (work1 + work2 + (1024 * 4)) & 0xfffff000;
|
|
|
sep->dcache_addr = (void *)work3;
|
|
|
|
|
@@ -831,7 +831,7 @@ static unsigned long sep_set_time(struct sep_device *sep)
|
|
|
* Inserts the data into the caller id table. Note that this function
|
|
|
* falls under the ioctl lock
|
|
|
*/
|
|
|
-static int sep_set_caller_id_handler(struct sep_device *sep, u32 arg)
|
|
|
+static int sep_set_caller_id_handler(struct sep_device *sep, unsigned long arg)
|
|
|
{
|
|
|
void __user *hash;
|
|
|
int error = 0;
|
|
@@ -1063,7 +1063,7 @@ end_function:
|
|
|
* the kernel (when ioctl is not used)
|
|
|
*/
|
|
|
static int sep_lock_kernel_pages(struct sep_device *sep,
|
|
|
- u32 kernel_virt_addr,
|
|
|
+ unsigned long kernel_virt_addr,
|
|
|
u32 data_size,
|
|
|
struct sep_lli_entry **lli_array_ptr,
|
|
|
int in_out_flag)
|
|
@@ -1076,8 +1076,8 @@ static int sep_lock_kernel_pages(struct sep_device *sep,
|
|
|
struct sep_dma_map *map_array;
|
|
|
|
|
|
dev_dbg(&sep->pdev->dev, "sep_lock_kernel_pages start\n");
|
|
|
- dev_dbg(&sep->pdev->dev, "kernel_virt_addr is %08x\n",
|
|
|
- kernel_virt_addr);
|
|
|
+ dev_dbg(&sep->pdev->dev, "kernel_virt_addr is %08lx\n",
|
|
|
+ (unsigned long)kernel_virt_addr);
|
|
|
dev_dbg(&sep->pdev->dev, "data_size is %x\n", data_size);
|
|
|
|
|
|
lli_array = kmalloc(sizeof(struct sep_lli_entry), GFP_ATOMIC);
|
|
@@ -1530,8 +1530,8 @@ static dma_addr_t sep_shared_area_virt_to_bus(struct sep_device *sep,
|
|
|
static void *sep_shared_area_bus_to_virt(struct sep_device *sep,
|
|
|
dma_addr_t bus_address)
|
|
|
{
|
|
|
- dev_dbg(&sep->pdev->dev, "shared bus to virt b=%x v=%x\n",
|
|
|
- (u32)bus_address, (u32)(sep->shared_addr +
|
|
|
+ dev_dbg(&sep->pdev->dev, "shared bus to virt b=%lx v=%lx\n",
|
|
|
+ (unsigned long)bus_address, (unsigned long)(sep->shared_addr +
|
|
|
(size_t)(bus_address - sep->shared_bus)));
|
|
|
|
|
|
return sep->shared_addr + (size_t)(bus_address - sep->shared_bus);
|
|
@@ -1556,7 +1556,7 @@ static void sep_debug_print_lli_tables(struct sep_device *sep,
|
|
|
|
|
|
dev_dbg(&sep->pdev->dev, "sep_debug_print_lli_tables start\n");
|
|
|
|
|
|
- while ((unsigned long) lli_table_ptr != 0xffffffff) {
|
|
|
+ while ((unsigned long) lli_table_ptr->bus_address != 0xffffffff) {
|
|
|
dev_dbg(&sep->pdev->dev,
|
|
|
"lli table %08lx, table_data_size is %lu\n",
|
|
|
table_count, table_data_size);
|
|
@@ -1590,18 +1590,16 @@ static void sep_debug_print_lli_tables(struct sep_device *sep,
|
|
|
|
|
|
table_data_size = lli_table_ptr->block_size & 0xffffff;
|
|
|
num_table_entries = (lli_table_ptr->block_size >> 24) & 0xff;
|
|
|
- lli_table_ptr = (struct sep_lli_entry *)
|
|
|
- (lli_table_ptr->bus_address);
|
|
|
|
|
|
dev_dbg(&sep->pdev->dev,
|
|
|
"phys table_data_size is %lu num_table_entries is"
|
|
|
- " %lu lli_table_ptr is%lu\n", table_data_size,
|
|
|
- num_table_entries, (unsigned long)lli_table_ptr);
|
|
|
+ " %lu bus_address is%lu\n", table_data_size,
|
|
|
+ num_table_entries, (unsigned long)lli_table_ptr->bus_address);
|
|
|
|
|
|
- if ((unsigned long)lli_table_ptr != 0xffffffff)
|
|
|
+ if ((unsigned long)lli_table_ptr->bus_address != 0xffffffff)
|
|
|
lli_table_ptr = (struct sep_lli_entry *)
|
|
|
sep_shared_bus_to_virt(sep,
|
|
|
- (unsigned long)lli_table_ptr);
|
|
|
+ (unsigned long)lli_table_ptr->bus_address);
|
|
|
|
|
|
table_count++;
|
|
|
}
|
|
@@ -1701,7 +1699,7 @@ static int sep_prepare_input_dma_table(struct sep_device *sep,
|
|
|
/* Number of entries in lli table */
|
|
|
u32 num_entries_in_table = 0;
|
|
|
/* Next table address */
|
|
|
- u32 lli_table_alloc_addr = 0;
|
|
|
+ void *lli_table_alloc_addr = 0;
|
|
|
|
|
|
dev_dbg(&sep->pdev->dev, "sep_prepare_input_dma_table start\n");
|
|
|
dev_dbg(&sep->pdev->dev, "data_size is %x\n", data_size);
|
|
@@ -1712,7 +1710,7 @@ static int sep_prepare_input_dma_table(struct sep_device *sep,
|
|
|
sep->dma_res_arr[sep->nr_dcb_creat].in_num_pages = 0;
|
|
|
|
|
|
/* Set the kernel address for first table to be allocated */
|
|
|
- lli_table_alloc_addr = (u32)(sep->shared_addr +
|
|
|
+ lli_table_alloc_addr = (void *)(sep->shared_addr +
|
|
|
SYNCHRONIC_DMA_TABLES_AREA_OFFSET_BYTES +
|
|
|
sep->num_lli_tables_created * sizeof(struct sep_lli_entry) *
|
|
|
SEP_DRIVER_ENTRIES_PER_TABLE_IN_SEP);
|
|
@@ -1759,7 +1757,7 @@ static int sep_prepare_input_dma_table(struct sep_device *sep,
|
|
|
SEP_DRIVER_ENTRIES_PER_TABLE_IN_SEP;
|
|
|
|
|
|
if (lli_table_alloc_addr >
|
|
|
- ((u32)sep->shared_addr +
|
|
|
+ ((void *)sep->shared_addr +
|
|
|
SYNCHRONIC_DMA_TABLES_AREA_OFFSET_BYTES +
|
|
|
SYNCHRONIC_DMA_TABLES_AREA_SIZE_BYTES)) {
|
|
|
|
|
@@ -1874,7 +1872,7 @@ static int sep_construct_dma_tables_from_lli(
|
|
|
u32 *table_data_size_ptr)
|
|
|
{
|
|
|
/* Points to the area where next lli table can be allocated */
|
|
|
- u32 lli_table_alloc_addr = 0;
|
|
|
+ void *lli_table_alloc_addr = 0;
|
|
|
/* Input lli table */
|
|
|
struct sep_lli_entry *in_lli_table_ptr = NULL;
|
|
|
/* Output lli table */
|
|
@@ -1903,7 +1901,7 @@ static int sep_construct_dma_tables_from_lli(
|
|
|
dev_dbg(&sep->pdev->dev, "sep_construct_dma_tables_from_lli start\n");
|
|
|
|
|
|
/* Initiate to point after the message area */
|
|
|
- lli_table_alloc_addr = (u32)(sep->shared_addr +
|
|
|
+ lli_table_alloc_addr = (void *)(sep->shared_addr +
|
|
|
SYNCHRONIC_DMA_TABLES_AREA_OFFSET_BYTES +
|
|
|
(sep->num_lli_tables_created *
|
|
|
(sizeof(struct sep_lli_entry) *
|
|
@@ -1925,7 +1923,7 @@ static int sep_construct_dma_tables_from_lli(
|
|
|
/* Check if the DMA table area limit was overrun */
|
|
|
if ((lli_table_alloc_addr + sizeof(struct sep_lli_entry) *
|
|
|
SEP_DRIVER_ENTRIES_PER_TABLE_IN_SEP) >
|
|
|
- ((u32)sep->shared_addr +
|
|
|
+ ((void *)sep->shared_addr +
|
|
|
SYNCHRONIC_DMA_TABLES_AREA_OFFSET_BYTES +
|
|
|
SYNCHRONIC_DMA_TABLES_AREA_SIZE_BYTES)) {
|
|
|
|
|
@@ -2251,13 +2249,13 @@ end_function:
|
|
|
* are in 32 bit format; the SEP is a 32 bit device
|
|
|
*/
|
|
|
static int sep_prepare_input_output_dma_table_in_dcb(struct sep_device *sep,
|
|
|
- u32 app_in_address,
|
|
|
- u32 app_out_address,
|
|
|
- u32 data_in_size,
|
|
|
- u32 block_size,
|
|
|
- u32 tail_block_size,
|
|
|
- bool isapplet,
|
|
|
- bool is_kva)
|
|
|
+ unsigned long app_in_address,
|
|
|
+ unsigned long app_out_address,
|
|
|
+ u32 data_in_size,
|
|
|
+ u32 block_size,
|
|
|
+ u32 tail_block_size,
|
|
|
+ bool isapplet,
|
|
|
+ bool is_kva)
|
|
|
{
|
|
|
int error = 0;
|
|
|
/* Size of tail */
|
|
@@ -2366,7 +2364,7 @@ static int sep_prepare_input_output_dma_table_in_dcb(struct sep_device *sep,
|
|
|
* according to tail data size
|
|
|
*/
|
|
|
dcb_table_ptr->out_vr_tail_pt =
|
|
|
- app_out_address + data_in_size
|
|
|
+ (u32)app_out_address + data_in_size
|
|
|
- tail_size;
|
|
|
|
|
|
/* Save the real tail data size */
|
|
@@ -2467,8 +2465,8 @@ static int sep_create_sync_dma_tables_handler(struct sep_device *sep,
|
|
|
}
|
|
|
|
|
|
error = sep_prepare_input_output_dma_table_in_dcb(sep,
|
|
|
- command_args.app_in_address,
|
|
|
- command_args.app_out_address,
|
|
|
+ (unsigned long)command_args.app_in_address,
|
|
|
+ (unsigned long)command_args.app_out_address,
|
|
|
command_args.data_in_size,
|
|
|
command_args.block_size,
|
|
|
0x0,
|
|
@@ -2495,6 +2493,8 @@ static int sep_free_dma_tables_and_dcb(struct sep_device *sep, bool isapplet,
|
|
|
int error = 0;
|
|
|
int error_temp = 0;
|
|
|
struct sep_dcblock *dcb_table_ptr;
|
|
|
+ unsigned long pt_hold;
|
|
|
+ void *tail_pt;
|
|
|
|
|
|
dev_dbg(&sep->pdev->dev, "sep_free_dma_tables_and_dcb start\n");
|
|
|
|
|
@@ -2507,13 +2507,15 @@ static int sep_free_dma_tables_and_dcb(struct sep_device *sep, bool isapplet,
|
|
|
/* Go over each DCB and see if tail pointer must be updated */
|
|
|
for (i = 0; i < sep->nr_dcb_creat; i++, dcb_table_ptr++) {
|
|
|
if (dcb_table_ptr->out_vr_tail_pt) {
|
|
|
+ pt_hold = (unsigned long)dcb_table_ptr->out_vr_tail_pt;
|
|
|
+ tail_pt = (void *)pt_hold;
|
|
|
if (is_kva == true) {
|
|
|
- memcpy((void *)dcb_table_ptr->out_vr_tail_pt,
|
|
|
+ memcpy(tail_pt,
|
|
|
dcb_table_ptr->tail_data,
|
|
|
dcb_table_ptr->tail_data_size);
|
|
|
} else {
|
|
|
error_temp = copy_to_user(
|
|
|
- (void *)dcb_table_ptr->out_vr_tail_pt,
|
|
|
+ tail_pt,
|
|
|
dcb_table_ptr->tail_data,
|
|
|
dcb_table_ptr->tail_data_size);
|
|
|
}
|
|
@@ -2841,7 +2843,8 @@ static int sep_prepare_dcb_handler(struct sep_device *sep, unsigned long arg)
|
|
|
command_args.tail_block_size);
|
|
|
|
|
|
error = sep_prepare_input_output_dma_table_in_dcb(sep,
|
|
|
- command_args.app_in_address, command_args.app_out_address,
|
|
|
+ (unsigned long)command_args.app_in_address,
|
|
|
+ (unsigned long)command_args.app_out_address,
|
|
|
command_args.data_in_size, command_args.block_size,
|
|
|
command_args.tail_block_size, true, false);
|
|
|
|
|
@@ -2971,30 +2974,6 @@ static long sep_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|
|
dev_dbg(&sep->pdev->dev, "ioctl start\n");
|
|
|
|
|
|
dev_dbg(&sep->pdev->dev, "cmd is %x\n", cmd);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCSENDSEPCOMMAND is %x\n", SEP_IOCSENDSEPCOMMAND);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCALLOCDATAPOLL is %x\n", SEP_IOCALLOCDATAPOLL);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCCREATESYMDMATABLE is %x\n", SEP_IOCCREATESYMDMATABLE);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCFREEDMATABLEDATA is %x\n", SEP_IOCFREEDMATABLEDATA);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCSEPSTART is %x\n", SEP_IOCSEPSTART);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCSEPINIT is %x\n", SEP_IOCSEPINIT);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCGETSTATICPOOLADDR is %x\n", SEP_IOCGETSTATICPOOLADDR);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCENDTRANSACTION is %x\n", SEP_IOCENDTRANSACTION);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCREALLOCEXTCACHE is %x\n", SEP_IOCREALLOCEXTCACHE);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCRARPREPAREMESSAGE is %x\n", SEP_IOCRARPREPAREMESSAGE);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCPREPAREDCB is %x\n", SEP_IOCPREPAREDCB);
|
|
|
- dev_dbg(&sep->pdev->dev,
|
|
|
- "SEP_IOCFREEDCB is %x\n", SEP_IOCFREEDCB);
|
|
|
|
|
|
/* Make sure we own this device */
|
|
|
mutex_lock(&sep->sep_mutex);
|