aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenry Zhao <xzhao10@marvell.com>2012-05-22 18:14:37 +0800
committerLubomir Rintel <lkundrak@v3.sk>2019-07-22 19:39:58 +0200
commite13c222629defd2a3631047a840e57d3a049611c (patch)
treee5cb963c4b6e29cc304e76d943bf7169356e6c53
parent54096a28801efbd1994db2d4f91a259474f33f28 (diff)
downloadlinux-mmp3-dell-ariel-e13c222629defd2a3631047a840e57d3a049611c.tar.gz
ZSP: align firmware loading address
1. ZSP firmware is merged with ACL and RENDER, and the layout changes. The host driver should change the firmware address accoringly. 2. fix a potential memory leak. 3. reduce the delay time when sending more than one message. Change-Id: I28d44453eb63e36c85376d948171f45ac09cbc8d Signed-off-by: Henry Zhao <xzhao10@marvell.com> Signed-off-by: nhcao <nhcao@marvell.com>
-rw-r--r--drivers/char/mmp_zmq.c14
-rw-r--r--drivers/char/mmp_zsp.c2
2 files changed, 13 insertions, 3 deletions
diff --git a/drivers/char/mmp_zmq.c b/drivers/char/mmp_zmq.c
index d08eddc90345d3..d6bfb0ae5e4d14 100644
--- a/drivers/char/mmp_zmq.c
+++ b/drivers/char/mmp_zmq.c
@@ -61,6 +61,12 @@ int zmq_pool_init(int size)
int ret = 0;
void *ptr;
ptr = kzalloc(size , GFP_KERNEL | GFP_ATOMIC);
+ if(!ptr) {
+ printk(KERN_ERR "%s, %s, failed to alloc mem.\n", __FILE__, __func__);
+ ret = -ENOMEM;
+ return ret;
+ }
+
g_zmq_packet_alc.zmq_pool = gen_pool_create(ilog2(MSG_POOL_GRANULARITY), -1);
if (!g_zmq_packet_alc.zmq_pool) {
ret = -ENOMEM;
@@ -75,13 +81,17 @@ int zmq_pool_init(int size)
}
g_zmq_packet_alc.zmq_pool_total_size = size;
g_zmq_packet_alc.zmq_pool_size = size;
+ g_zmq_packet_alc.ptr = ptr;
return 0;
}
void zmq_pool_uninit(void)
{
gen_pool_destroy(g_zmq_packet_alc.zmq_pool);
- kfree(g_zmq_packet_alc.ptr);
+ if(g_zmq_packet_alc.ptr) {
+ kfree(g_zmq_packet_alc.ptr);
+ g_zmq_packet_alc.ptr = NULL;
+ }
return;
}
@@ -954,7 +964,7 @@ static int zmq_message_send(
}
/* no blocking for sending, delay some times */
- mdelay(50);
+ udelay(50);
try_num--;
}
diff --git a/drivers/char/mmp_zsp.c b/drivers/char/mmp_zsp.c
index 9b26736e17e03a..8fd754241a0a40 100644
--- a/drivers/char/mmp_zsp.c
+++ b/drivers/char/mmp_zsp.c
@@ -44,7 +44,7 @@
#include <linux/wakelock.h>
#include <mach/sram.h>
-#define SRAM_OFFSET_FOR_DTCM 0x7000
+#define SRAM_OFFSET_FOR_DTCM 0x6400
/* mmp PZIPC registers */
#define IPC_ISRW 0x0008