From 0faa8f5a2b34cf360ad0c8f37cf9b47b073a2739 Mon Sep 17 00:00:00 2001 From: Mark Allyn Date: Tue, 4 Jan 2011 14:16:59 -0800 Subject: [PATCH] --- yaml --- r: 235651 b: refs/heads/master c: e508edb203352e044dac359fb98579508bf7376c h: refs/heads/master i: 235649: 285c0f34532e96b8d5a7ee8eb8049e0a0e950a3a 235647: 0736a8e0b079c634bdf473c748979fc8f8e585f1 v: v3 --- [refs] | 2 +- trunk/drivers/staging/sep/sep_driver.c | 32 ++++++++----------- trunk/drivers/staging/sep/sep_driver_api.h | 4 +-- trunk/drivers/staging/sep/sep_driver_config.h | 4 +++ 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/[refs] b/[refs] index e3a9f57115ec..a3a84d85ce7f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dfcfc166fe9c5825c506795a3f29471f9bd410a3 +refs/heads/master: e508edb203352e044dac359fb98579508bf7376c diff --git a/trunk/drivers/staging/sep/sep_driver.c b/trunk/drivers/staging/sep/sep_driver.c index a1b0bfe5e003..ee234547c877 100644 --- a/trunk/drivers/staging/sep/sep_driver.c +++ b/trunk/drivers/staging/sep/sep_driver.c @@ -29,7 +29,6 @@ * 2010.09.14 Upgrade to Medfield * */ -#define DEBUG #include #include #include @@ -2177,22 +2176,6 @@ static int sep_prepare_input_output_dma_table_in_dcb(struct sep_device *sep, dcb_table_ptr->out_vr_tail_pt = 0; if (isapplet == true) { - tail_size = data_in_size % block_size; - if (tail_size) { - if (data_in_size < tail_block_size) { - dev_warn(&sep->pdev->dev, "data in size smaller than tail block size\n"); - error = -ENOSPC; - goto end_function; - } - if (tail_block_size) - /* - * Case the tail size should be - * bigger than the real block size - */ - tail_size = tail_block_size + - ((data_in_size - - tail_block_size) % block_size); - } /* Check if there is enough data for DMA operation */ if (data_in_size < SEP_DRIVER_MIN_DATA_SIZE_PER_TABLE) { @@ -2213,7 +2196,7 @@ static int sep_prepare_input_output_dma_table_in_dcb(struct sep_device *sep, /* Set the output user-space address for mem2mem op */ if (app_out_address) dcb_table_ptr->out_vr_tail_pt = - (u32)app_out_address; + (aligned_u64)app_out_address; /* * Update both data length parameters in order to avoid @@ -2222,6 +2205,17 @@ static int sep_prepare_input_output_dma_table_in_dcb(struct sep_device *sep, */ tail_size = 0x0; data_in_size = 0x0; + + } else { + if (!app_out_address) { + tail_size = data_in_size % block_size; + if (!tail_size) { + if (tail_block_size == block_size) + tail_size = block_size; + } + } else { + tail_size = 0; + } } if (tail_size) { if (is_kva == true) { @@ -2243,7 +2237,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 = - (u32)app_out_address + data_in_size + (aligned_u64)app_out_address + data_in_size - tail_size; /* Save the real tail data size */ diff --git a/trunk/drivers/staging/sep/sep_driver_api.h b/trunk/drivers/staging/sep/sep_driver_api.h index fbbfa2396555..0f38d619842e 100644 --- a/trunk/drivers/staging/sep/sep_driver_api.h +++ b/trunk/drivers/staging/sep/sep_driver_api.h @@ -141,11 +141,11 @@ struct sep_dcblock { /* size of data in the first output mlli */ u32 output_mlli_data_size; /* pointer to the output virtual tail */ - u32 out_vr_tail_pt; + aligned_u64 out_vr_tail_pt; /* size of tail data */ u32 tail_data_size; /* input tail data array */ - u8 tail_data[64]; + u8 tail_data[68]; }; struct sep_caller_id_entry { diff --git a/trunk/drivers/staging/sep/sep_driver_config.h b/trunk/drivers/staging/sep/sep_driver_config.h index b18625d2f7f4..d3b9220f3963 100644 --- a/trunk/drivers/staging/sep/sep_driver_config.h +++ b/trunk/drivers/staging/sep/sep_driver_config.h @@ -76,6 +76,10 @@ held by the proccess (struct file) */ #define SEP_REQUEST_DAEMON_MAPPED 1 #define SEP_REQUEST_DAEMON_UNMAPPED 0 +#define SEP_DEV_NAME "sep_sec_driver" +#define SEP_DEV_SINGLETON "sep_sec_singleton_driver" +#define SEP_DEV_DAEMON "sep_req_daemon_driver" + /*-------------------------------------------------------- SHARED AREA memory total size is 36K it is divided is following: