summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Rainey <erik.rainey@ti.com>2012-07-13 11:35:00 -0500
committerXavier Boudet <x-boudet@ti.com>2012-07-25 09:57:48 +0200
commit9e149fed37328ea731f27540b64b18890f41af11 (patch)
tree40c7319ed92153e594697fb8c9e29f501a2c57f8
parentba7bca63b50c0b4abf9b4fd51fffcfd00df42b73 (diff)
Added bootargs debug flag
[DEBUG] Changed some formatting for readibility
-rw-r--r--drivers/staging/omaprpc/omap_rpc.c200
-rw-r--r--drivers/staging/omaprpc/omap_rpc_dmabuf.c50
-rw-r--r--drivers/staging/omaprpc/omap_rpc_internal.h16
-rw-r--r--drivers/staging/omaprpc/omap_rpc_ion.c23
4 files changed, 193 insertions, 96 deletions
diff --git a/drivers/staging/omaprpc/omap_rpc.c b/drivers/staging/omaprpc/omap_rpc.c
index ba80875e36ef..fb44d6dd88d2 100644
--- a/drivers/staging/omaprpc/omap_rpc.c
+++ b/drivers/staging/omaprpc/omap_rpc.c
@@ -49,11 +49,78 @@ static spinlock_t omaprpc_services_lock =
static struct list_head omaprpc_services_list =
LIST_HEAD_INIT(omaprpc_services_list);
-#if defined(OMAPRPC_PERF_MEASUREMENT)
static struct timeval start_time;
static struct timeval end_time;
static long usec_elapsed;
-#endif
+
+unsigned int omaprpc_debug = 0;
+EXPORT_SYMBOL(omaprpc_debug);
+MODULE_PARM_DESC(debug, "Used to enable debug message");
+module_param_named(debug, omaprpc_debug, int, 0600);
+
+static void omaprpc_print_msg(struct omaprpc_instance_t *rpc,
+ char *prefix,
+ char buffer[512])
+{
+ u32 sp = 0, p = 0;
+ struct omaprpc_msg_header_t *hdr =(struct omaprpc_msg_header_t *)buffer;
+ struct omaprpc_instance_handle_t *hdl = NULL;
+ struct omaprpc_instance_info_t *info = NULL;
+ struct omaprpc_packet_t *packet = NULL;
+ struct omaprpc_parameter_t *param = NULL;
+ OMAPRPC_PRINT(OMAPRPC_ZONE_VERBOSE, rpc->rpcserv->dev,
+ "%s HDR: type %d flags: %d len: %d\n",
+ prefix,
+ hdr->msg_type,
+ hdr->msg_flags,
+ hdr->msg_len);
+ switch (hdr->msg_type) {
+ case OMAPRPC_MSG_INSTANCE_CREATED:
+ case OMAPRPC_MSG_INSTANCE_DESTROYED:
+ hdl = OMAPRPC_PAYLOAD(buffer, omaprpc_instance_handle_t);
+ OMAPRPC_PRINT(OMAPRPC_ZONE_VERBOSE,
+ rpc->rpcserv->dev,
+ "%s endpoint:%d status:%d\n",
+ prefix,
+ hdl->endpoint_address,
+ hdl->status);
+ break;
+ case OMAPRPC_MSG_INSTANCE_INFO:
+ info = OMAPRPC_PAYLOAD(buffer, omaprpc_instance_info_t);
+ OMAPRPC_PRINT(OMAPRPC_ZONE_VERBOSE,
+ rpc->rpcserv->dev,
+ "%s (info not yet implemented)\n",prefix);
+ break;
+ case OMAPRPC_MSG_CALL_FUNCTION:
+ packet = OMAPRPC_PAYLOAD(buffer, omaprpc_packet_t);
+ OMAPRPC_PRINT(OMAPRPC_ZONE_VERBOSE,
+ rpc->rpcserv->dev,
+ "%s PACKET: desc:%04x msg_id:%04x pool_id:%04x"
+ " job_id:%04x func:0x%08x result:%d size:%u\n",
+ prefix,
+ packet->desc,
+ packet->msg_id,
+ packet->pool_id,
+ packet->job_id,
+ packet->fxn_idx,
+ packet->result,
+ packet->data_size);
+ sp = sizeof(struct omaprpc_parameter_t);
+ param = (struct omaprpc_parameter_t *)packet->data;
+ for (p = 0; p < (packet->data_size / sp); p++) {
+ OMAPRPC_PRINT(OMAPRPC_ZONE_VERBOSE,
+ rpc->rpcserv->dev,
+ "%s PARAM[%u] size:%zu data:%zu (0x%08x)",
+ prefix,p,
+ param[p].size,
+ param[p].data,
+ param[p].data);
+ }
+ break;
+ default:
+ break;
+ }
+}
static void omaprpc_fxn_del(struct omaprpc_instance_t *rpc)
{
@@ -80,7 +147,7 @@ static struct omaprpc_call_function_t *omaprpc_fxn_get(
mutex_lock(&rpc->lock);
list_for_each_entry_safe(pos, n, &rpc->fxn_list, list) {
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"Looking for msg %u, found msg %u\n",
msgId, pos->msgId);
if (pos->msgId == msgId) {
@@ -108,7 +175,7 @@ static int omaprpc_fxn_add(struct omaprpc_instance_t *rpc,
mutex_lock(&rpc->lock);
list_add(&fxn->list, &rpc->fxn_list);
mutex_unlock(&rpc->lock);
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"Added msg id %u to list", msgId);
} else {
OMAPRPC_ERR(rpc->rpcserv->dev,
@@ -134,13 +201,16 @@ static void omaprpc_cb(struct rpmsg_channel *rpdev,
char *skbdata;
u32 expected = 0;
- OMAPRPC_INFO(rpc->rpcserv->dev,
- "OMAPRPC: incoming msg src %d len %d msg_type %d msg_len %d\n",
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
+ "OMAPRPC: <== incoming msg src %d len %d msg_type %d msg_len %d\n",
src, len, hdr->msg_type, hdr->msg_len);
-#if defined(OMAPRPC_VERY_VERBOSE)
- print_hex_dump(KERN_DEBUG, "OMAPRPC: RX: ",
- DUMP_PREFIX_NONE, 16, 1, data, len, true);
-#endif
+
+ if (omaprpc_debug & OMAPRPC_ZONE_VERBOSE) {
+ print_hex_dump(KERN_DEBUG, "OMAPRPC: RX: ",
+ DUMP_PREFIX_NONE, 16, 1, data, len, true);
+ omaprpc_print_msg(rpc, "RX:", buf);
+ }
+
expected = sizeof(struct omaprpc_msg_header_t);
switch (hdr->msg_type) {
case OMAPRPC_MSG_INSTANCE_CREATED:
@@ -170,8 +240,8 @@ static void omaprpc_cb(struct rpmsg_channel *rpdev,
hdl->status);
rpc->state = OMAPRPC_STATE_FAULT;
} else {
- OMAPRPC_INFO(rpc->rpcserv->dev, "OMAPRPC: "
- "Created addr %d status %d\n",
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
+ "OMAPRPC: Created addr %d status %d\n",
hdl->endpoint_address,
hdl->status);
/* only save the address if it connected. */
@@ -192,7 +262,7 @@ static void omaprpc_cb(struct rpmsg_channel *rpdev,
rpc->state = OMAPRPC_STATE_FAULT;
break;
}
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"OMAPRPC: endpoint %d disconnected!\n",
hdl->endpoint_address);
rpc->state = OMAPRPC_STATE_DISCONNECTED;
@@ -206,13 +276,14 @@ static void omaprpc_cb(struct rpmsg_channel *rpdev,
case OMAPRPC_MSG_CALL_FUNCTION:
case OMAPRPC_MSG_FUNCTION_RETURN:
-#if defined(OMAPRPC_PERF_MEASUREMENT)
- do_gettimeofday(&end_time);
- usec_elapsed = (end_time.tv_sec - start_time.tv_sec) *
- 1000000 + end_time.tv_usec - start_time.tv_usec;
- OMAPRPC_INFO(rpc->rpcserv->dev,
- "write to callback took %lu usec\n", usec_elapsed);
-#endif
+ if (omaprpc_debug & OMAPRPC_ZONE_PERF) {
+ do_gettimeofday(&end_time);
+ usec_elapsed = (end_time.tv_sec - start_time.tv_sec) *
+ 1000000 + end_time.tv_usec - start_time.tv_usec;
+ OMAPRPC_PRINT(OMAPRPC_ZONE_PERF, rpc->rpcserv->dev,
+ "write to callback took %lu usec\n", usec_elapsed);
+ }
+
skb = alloc_skb(hdr->msg_len, GFP_KERNEL);
if (!skb) {
OMAPRPC_ERR(rpc->rpcserv->dev,
@@ -223,10 +294,12 @@ static void omaprpc_cb(struct rpmsg_channel *rpdev,
memcpy(skbdata, hdr->msg_data, hdr->msg_len);
mutex_lock(&rpc->lock);
-#if defined(OMAPRPC_PERF_MEASUREMENT)
- /* capture the time delay between callback and read */
- do_gettimeofday(&start_time);
-#endif
+
+ if (omaprpc_debug & OMAPRPC_ZONE_PERF) {
+ /* capture the time delay between callback and read */
+ do_gettimeofday(&start_time);
+ }
+
skb_queue_tail(&rpc->queue, skb);
mutex_unlock(&rpc->lock);
/* wake up any blocking processes, waiting for new data */
@@ -307,8 +380,9 @@ static long omaprpc_ioctl(struct file *filp,
struct omaprpc_create_instance_t connect;
int ret = 0;
- OMAPRPC_INFO(rpcserv->dev, "OMAPRPC: %s: cmd %d, arg 0x%lx\n",
- __func__, cmd, arg);
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpcserv->dev,
+ "OMAPRPC: %s: cmd %d, arg 0x%lx\n",
+ __func__, cmd, arg);
/* if the magic was not present, tell the caller
that we are not a typewritter[sic]! */
@@ -462,7 +536,7 @@ static int omaprpc_open(struct inode *inode, struct file *filp)
list_add(&rpc->list, &rpcserv->instance_list);
mutex_unlock(&rpcserv->lock);
- OMAPRPC_INFO(rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpcserv->dev,
"OMAPRPC: local addr assigned: 0x%x\n", rpc->ept->addr);
return 0;
@@ -485,7 +559,7 @@ static int omaprpc_release(struct inode *inode, struct file *filp)
if (rpc == NULL || rpcserv == NULL)
return 0;
- OMAPRPC_INFO(rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpcserv->dev,
"Releasing Instance %p, in state %d\n",
rpc, rpc->state);
/* if we are in a normal state */
@@ -505,7 +579,7 @@ static int omaprpc_release(struct inode *inode, struct file *filp)
handle->status = 0;
len = sizeof(struct omaprpc_msg_header_t)+hdr->msg_len;
- OMAPRPC_INFO(rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpcserv->dev,
"OMAPRPC: Disconnecting from RPC service at %d\n",
rpc->dst);
@@ -549,12 +623,12 @@ static int omaprpc_release(struct inode *inode, struct file *filp)
list_del(&rpc->list);
mutex_unlock(&rpcserv->lock);
- OMAPRPC_INFO(rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpcserv->dev,
"OMAPRPC: Instance %p has been deleted!\n",
rpc);
if (list_empty(&rpcserv->instance_list)) {
- OMAPRPC_INFO(rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpcserv->dev,
"OMAPRPC: All instances have been removed!\n");
}
@@ -652,14 +726,14 @@ static ssize_t omaprpc_read(struct file *filp,
goto failure;
}
-#if defined(OMAPRPC_PERF_MEASUREMENT)
- do_gettimeofday(&end_time);
- usec_elapsed = (end_time.tv_sec - start_time.tv_sec) *
- 1000000 + end_time.tv_usec - start_time.tv_usec;
- OMAPRPC_INFO(rpc->rpcserv->dev,
- "callback to read took %lu usec\n",
- usec_elapsed);
-#endif
+ if (omaprpc_debug & OMAPRPC_ZONE_PERF) {
+ do_gettimeofday(&end_time);
+ usec_elapsed = (end_time.tv_sec - start_time.tv_sec) *
+ 1000000 + end_time.tv_usec - start_time.tv_usec;
+ OMAPRPC_PRINT(OMAPRPC_ZONE_PERF, rpc->rpcserv->dev,
+ "callback to read took %lu usec\n",
+ usec_elapsed);
+ }
/* unlock the instances */
mutex_unlock(&rpc->lock);
@@ -731,7 +805,7 @@ static ssize_t omaprpc_write(struct file *filp,
goto failure;
}
- OMAPRPC_INFO(rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpcserv->dev,
"OMAPRPC: Allocating local function call copy for %u bytes\n",
len);
@@ -765,6 +839,9 @@ static ssize_t omaprpc_write(struct file *filp,
packet->result = 0;
packet->data_size = sizeof(struct omaprpc_parameter_t) *
function->num_params;
+
+ /* compute the parameter pointer changes last since this will cause the
+ cache operations */
parameters = (struct omaprpc_parameter_t *)packet->data;
for (param = 0; param < function->num_params; param++) {
parameters[param].size = function->params[param].size;
@@ -813,11 +890,6 @@ static ssize_t omaprpc_write(struct file *filp,
}
}
-#if defined(OMAPRPC_VERY_VERBOSE) /* Very Verbose Debugging Code */
- print_hex_dump(KERN_DEBUG, "OMAPRPC: TX: ",
- DUMP_PREFIX_NONE, 16, 1, kbuf, use, true);
-#endif
-
/* save the function data */
ret = omaprpc_fxn_add(rpc, function, rpc->msgId);
if (ret < 0) {
@@ -826,10 +898,17 @@ static ssize_t omaprpc_write(struct file *filp,
goto failure;
}
-#if defined(OMAPRPC_PERF_MEASUREMENT)
- /* capture the time delay between write and callback */
- do_gettimeofday(&start_time);
-#endif
+ /* dump the packet for debugging */
+ if (omaprpc_debug & OMAPRPC_ZONE_VERBOSE) {
+ print_hex_dump(KERN_DEBUG, "OMAPRPC: TX: ",
+ DUMP_PREFIX_NONE, 16, 1, kbuf, use, true);
+ omaprpc_print_msg(rpc, "TX:", kbuf);
+ }
+
+ if (omaprpc_debug & OMAPRPC_ZONE_PERF) {
+ /* capture the time delay between write and callback */
+ do_gettimeofday(&start_time);
+ }
/* Send the msg */
ret = rpmsg_send_offchannel(rpcserv->rpdev,
@@ -845,8 +924,8 @@ static ssize_t omaprpc_write(struct file *filp,
omaprpc_xlate_buffers(rpc, function, OMAPRPC_RPA_TO_UVA);
goto failure;
}
- OMAPRPC_INFO(rpcserv->dev,
- "OMAPRPC: Send msg to remote endpoint %u\n", rpc->dst);
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpcserv->dev,
+ "OMAPRPC: ==> Sent msg to remote endpoint %u\n", rpc->dst);
failure:
if (ret >= 0)
ret = len;
@@ -923,7 +1002,7 @@ static int omaprpc_probe(struct rpmsg_channel *rpdev)
int ret, major, minor;
struct omaprpc_service_t *rpcserv = NULL, *tmp;
- OMAPRPC_INFO(&rpdev->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, &rpdev->dev,
"OMAPRPC: Probing service with src %u dst %u\n",
rpdev->src, rpdev->dst);
@@ -1025,7 +1104,7 @@ serv_up:
/* Signal that the driver setup is complete */
complete_all(&rpcserv->comp);
- OMAPRPC_INFO(&rpdev->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, &rpdev->dev,
"OMAPRPC: new RPC connection srv channel: %u -> %u!\n",
rpdev->src, rpdev->dst);
return 0;
@@ -1056,7 +1135,7 @@ static void __devexit omaprpc_remove(struct rpmsg_channel *rpdev)
return;
}
- OMAPRPC_INFO(rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpcserv->dev,
"OMAPRPC: removing rpmsg omaprpc driver %u.%u\n",
major, rpcserv->minor);
@@ -1072,7 +1151,7 @@ static void __devexit omaprpc_remove(struct rpmsg_channel *rpdev)
cdev_del(&rpcserv->cdev);
list_del(&rpcserv->list);
mutex_unlock(&rpcserv->lock);
- OMAPRPC_INFO(&rpdev->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, &rpdev->dev,
"OMAPRPC: no instances, removed driver!\n");
kfree(rpcserv);
return;
@@ -1086,7 +1165,7 @@ static void __devexit omaprpc_remove(struct rpmsg_channel *rpdev)
init_completion(&rpcserv->comp);
rpcserv->state = OMAPRPC_SERVICE_STATE_DOWN;
list_for_each_entry(rpc, &rpcserv->instance_list, list) {
- OMAPRPC_INFO(rpcserv->dev, "Instance %p in state %d\n",
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpcserv->dev, "Instance %p in state %d\n",
rpc, rpc->state);
/* set rpc instance to fault state */
rpc->state = OMAPRPC_STATE_FAULT;
@@ -1102,7 +1181,7 @@ static void __devexit omaprpc_remove(struct rpmsg_channel *rpdev)
wake_up_interruptible(&rpc->readq);
}
mutex_unlock(&rpcserv->lock);
- OMAPRPC_INFO(&rpdev->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, &rpdev->dev,
"OMAPRPC: removed rpmsg omaprpc driver.\n");
}
@@ -1146,7 +1225,7 @@ static void omaprpc_driver_cb(struct rpmsg_channel *rpdev,
break;
}
- OMAPRPC_INFO(&rpdev->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, &rpdev->dev,
"OMAPRPC: creating device: %s\n", info->name);
/* Create the /dev sysfs entry */
rpcserv->dev = device_create(omaprpc_class, &rpdev->dev,
@@ -1211,8 +1290,9 @@ static int __init omaprpc_init(void)
}
ret = register_rpmsg_driver(&omaprpc_driver);
- pr_err("OMAPRPC: Registration of OMAPRPC rpmsg service returned %d!\n",
- ret);
+ pr_err("OMAPRPC: Registration of OMAPRPC rpmsg service returned %d! "
+ "debug=%d\n",
+ ret, omaprpc_debug);
return ret;
unreg_region:
unregister_chrdev_region(omaprpc_dev, OMAPRPC_CORE_REMOTE_MAX);
diff --git a/drivers/staging/omaprpc/omap_rpc_dmabuf.c b/drivers/staging/omaprpc/omap_rpc_dmabuf.c
index 0f0e0c62af43..86a7fd515bc9 100644
--- a/drivers/staging/omaprpc/omap_rpc_dmabuf.c
+++ b/drivers/staging/omaprpc/omap_rpc_dmabuf.c
@@ -38,7 +38,7 @@ static struct dma_info_t *omaprpc_dma_sub(struct omaprpc_instance_t *rpc,
struct dma_info_t *pos, *n;
mutex_lock(&rpc->lock);
list_for_each_entry_safe(pos, n, &rpc->dma_list, list) {
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"Looking for FD %u, found FD %u\n", fd, pos->fd);
if (pos->fd == fd) {
list_del((struct list_head *)pos);
@@ -57,7 +57,10 @@ static int omaprpc_dma_add(struct omaprpc_instance_t *rpc,
mutex_lock(&rpc->lock);
list_add(&dma->list, &rpc->dma_list);
mutex_unlock(&rpc->lock);
- OMAPRPC_INFO(rpc->rpcserv->dev, "Added FD %u to list", dma->fd);
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
+ "Added FD %u to list",
+ dma->fd);
}
return 0;
}
@@ -69,12 +72,21 @@ phys_addr_t omaprpc_pin_buffer(struct omaprpc_instance_t *rpc, void *reserved)
return 0;
dma->fd = (int)reserved;
- OMAPRPC_INFO(rpc->rpcserv->dev, "Pining with FD %u\n", dma->fd);
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
+ "Pining with FD %u\n",
+ dma->fd);
dma->dbuf = dma_buf_get((int)reserved);
if (!(IS_ERR(dma->dbuf))) {
- OMAPRPC_INFO(rpc->rpcserv->dev, "DMA_BUF=%p\n", dma->dbuf);
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
+ "DMA_BUF=%p\n",
+ dma->dbuf);
dma->attach = dma_buf_attach(dma->dbuf, rpc->rpcserv->dev);
- OMAPRPC_INFO(rpc->rpcserv->dev, "attach=%p\n", dma->attach);
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
+ "attach=%p\n",
+ dma->attach);
dma->sgt = dma_buf_map_attachment(dma->attach,
DMA_BIDIRECTIONAL);
omaprpc_dma_add(rpc, dma);
@@ -93,14 +105,14 @@ phys_addr_t omaprpc_dma_find(struct omaprpc_instance_t *rpc, void *reserved)
mutex_lock(&rpc->lock);
list_for_each(pos, &rpc->dma_list) {
node = (struct dma_info_t *)pos;
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"Looking for FD %u, found FD %u\n", fd, node->fd);
if (node->fd == fd) {
addr = sg_dma_address(node->sgt->sgl);
break;
}
}
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"Returning Addr %p for FD %u\n", (void *)addr, fd);
mutex_unlock(&rpc->lock);
return addr;
@@ -128,7 +140,7 @@ phys_addr_t omaprpc_buffer_lookup(struct omaprpc_instance_t *rpc,
/* For Tiler2D offset is corrected later*/
long uoff = uva - buva;
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"CORE=%u BUVA=%p UVA=%p Uoff=%ld [0x%016lx] Hdl=%p\n",
core, (void *)buva, (void *)uva, uoff, (ulong)uoff, reserved);
@@ -148,7 +160,7 @@ phys_addr_t omaprpc_buffer_lookup(struct omaprpc_instance_t *rpc,
/* recalculate the offset in the user buffer
(accounts for tiler 2D) */
- uoff += omaprpc_recalc_off(lpa, uoff);
+ uoff = omaprpc_recalc_off(lpa, uoff);
/* offset the lpa by the offset in the user buffer */
lpa += uoff;
@@ -157,7 +169,7 @@ phys_addr_t omaprpc_buffer_lookup(struct omaprpc_instance_t *rpc,
address */
rpa = rpmsg_local_to_remote_pa(core, lpa);
}
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"ARM VA %p == ARM PA %p => REMOTE[%u] PA %p (RESV %p)\n",
(void *)uva, (void *)lpa, core, (void *)rpa, reserved);
return rpa;
@@ -180,13 +192,13 @@ int omaprpc_xlate_buffers(struct omaprpc_instance_t *rpc,
limit = function->num_translations;
memset(base_ptrs, 0, sizeof(base_ptrs));
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"Operating on %d pointers\n", function->num_translations);
/* we may have a failure during translation, in which case we need to
unwind the whole operation from here */
for (idx = start; idx != limit; idx += inc) {
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"#### Starting Translation %d of %d by %d\n",
idx, limit, inc);
/* conveinence variables */
@@ -258,7 +270,8 @@ int omaprpc_xlate_buffers(struct omaprpc_instance_t *rpc,
pg_offset = ((pri_offset + sec_offset) & (PAGE_SIZE-1));
if (base_ptrs[ptr_idx] != NULL) {
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
"KMap'd base_ptr[%u]=%p dbuf=%p into "
"kernel from %zu for %zu bytes, "
"PG_OFFSET=%u\n",
@@ -308,7 +321,8 @@ int omaprpc_xlate_buffers(struct omaprpc_instance_t *rpc,
goto unwind;
}
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
"Replacing UVA %p at KVA %p PTRIDX:%u "
"PG_OFFSET:%u IDX:%d RESV:%p\n",
(void *)uva, (void *)kva, ptr_idx,
@@ -323,7 +337,8 @@ int omaprpc_xlate_buffers(struct omaprpc_instance_t *rpc,
/* replace with new RPA */
*(phys_addr_t *)kva = rpa;
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
"Replaced UVA %p with RPA %p at KVA %p\n",
(void *)uva, (void *)rpa, (void *)kva);
@@ -361,7 +376,8 @@ int omaprpc_xlate_buffers(struct omaprpc_instance_t *rpc,
/* @TODO DMA_BUF requires unmapping the data
from the TILER. */
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
"Replaced RPA %p with UVA %p at KVA %p\n",
(void *)rpa, (void *)uva, (void *)kva);
@@ -406,7 +422,7 @@ restart:
size_t start = (pri_offset + sec_offset) & PAGE_MASK;
size_t end = PAGE_SIZE;
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"Unkmaping base_ptrs[%u]=%p from dbuf=%p %zu "
"for %zu bytes\n",
ptr_idx,
diff --git a/drivers/staging/omaprpc/omap_rpc_internal.h b/drivers/staging/omaprpc/omap_rpc_internal.h
index 6e61d49468eb..eef34cab22ff 100644
--- a/drivers/staging/omaprpc/omap_rpc_internal.h
+++ b/drivers/staging/omaprpc/omap_rpc_internal.h
@@ -102,18 +102,14 @@ extern struct ion_device *omap_ion_device;
#undef OMAPRPC_USE_ION
#endif
-/* Testing and debugging defines, leave undef'd in production */
-#undef OMAPRPC_DEBUGGING
-#undef OMAPRPC_VERY_VERBOSE
-#undef OMAPRPC_PERF_MEASUREMENT
+#define OMAPRPC_ZONE_INFO (0x1)
+#define OMAPRPC_ZONE_PERF (0x2)
+#define OMAPRPC_ZONE_VERBOSE (0x4)
-#if defined(OMAPRPC_DEBUGGING)
-#define OMAPRPC_INFO(dev, fmt, ...) dev_info(dev, fmt, ## __VA_ARGS__)
-#define OMAPRPC_ERR(dev, fmt, ...) dev_err(dev, fmt, ## __VA_ARGS__)
-#else
-#define OMAPRPC_INFO(dev, fmt, ...)
+extern unsigned int omaprpc_debug;
+
+#define OMAPRPC_PRINT(flag, dev, fmt, ...) if (flag & omaprpc_debug) { dev_info(dev, fmt, ## __VA_ARGS__); }
#define OMAPRPC_ERR(dev, fmt, ...) dev_err(dev, fmt, ## __VA_ARGS__)
-#endif
#ifdef CONFIG_PHYS_ADDR_T_64BIT
typedef u64 virt_addr_t;
diff --git a/drivers/staging/omaprpc/omap_rpc_ion.c b/drivers/staging/omaprpc/omap_rpc_ion.c
index d1447b9b3120..4d74e39c2d9d 100644
--- a/drivers/staging/omaprpc/omap_rpc_ion.c
+++ b/drivers/staging/omaprpc/omap_rpc_ion.c
@@ -51,7 +51,7 @@ uint8_t *omaprpc_map_parameter(struct omaprpc_instance_t *rpc,
/* in ION case, secondary offset is ignored here because the entire
region is mapped. */
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"Mapped UVA:%p to KVA:%p+OFF:%08x SIZE:%08x "
"(MKVA:%p to END:%p)\n",
(void *)param->data,
@@ -79,7 +79,7 @@ phys_addr_t omaprpc_buffer_lookup(struct omaprpc_instance_t *rpc,
/* For Tiler2D offset is corrected later*/
long uoff = uva - buva;
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"CORE=%u BUVA=%p UVA=%p Uoff=%ld [0x%016lx] Hdl=%p\n",
core, (void *)buva, (void *)uva, uoff, (ulong)uoff, reserved);
@@ -102,7 +102,7 @@ phys_addr_t omaprpc_buffer_lookup(struct omaprpc_instance_t *rpc,
handle = (struct ion_handle *)reserved;
if (!ion_phys(rpc->ion_client, handle, &paddr, &unused)) {
lpa = (phys_addr_t)paddr;
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"Handle %p is an ION Handle to ARM PA %p "
"(Uoff=%ld)\n", reserved, (void *)lpa, uoff);
uoff = omaprpc_recalc_off(lpa, uoff);
@@ -122,7 +122,8 @@ phys_addr_t omaprpc_buffer_lookup(struct omaprpc_instance_t *rpc,
if (handle && !ion_phys(pvr_ion_client, handle, &paddr,
&unused)) {
lpa = (phys_addr_t)paddr;
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
"FD %d is an PVR Handle to ARM PA %p "
"(Uoff=%ld)\n", (int)reserved,
(void *)lpa, uoff);
@@ -141,7 +142,7 @@ to_va:
/* convert the local physical address to remote physical address */
rpa = rpmsg_local_to_remote_pa(rpc, lpa);
to_end:
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
"ARM VA %p == ARM PA %p => REMOTE[%u] PA %p (RESV %p)\n",
(void *)uva, (void *)lpa, core, (void *)rpa, reserved);
return rpa;
@@ -161,7 +162,8 @@ int omaprpc_xlate_buffers(struct omaprpc_instance_t *rpc,
limit = function->num_translations;
memset(base_ptrs, 0, sizeof(base_ptrs));
- OMAPRPC_INFO(rpc->rpcserv->dev, "Operating on %d pointers\n",
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO, rpc->rpcserv->dev,
+ "Operating on %d pointers\n",
function->num_translations);
/* we may have a failure during translation, in which case we need to
unwind the whole operation from here */
@@ -233,7 +235,8 @@ restart:
/* load the user's VA */
uva = *(virt_addr_t *)kva;
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
"Replacing UVA %p at KVA %p PTRIDX:%u "
"OFFSET:%u IDX:%d\n",
(void *)uva, (void *)kva, ptr_idx,
@@ -247,7 +250,8 @@ restart:
/* replace with new RPA */
*(phys_addr_t *)kva = rpa;
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
"Replaced UVA %p with RPA %p at KVA %p\n",
(void *)uva, (void *)rpa, (void *)kva);
@@ -279,7 +283,8 @@ restart:
remember version */
*(virt_addr_t *)kva = uva;
- OMAPRPC_INFO(rpc->rpcserv->dev,
+ OMAPRPC_PRINT(OMAPRPC_ZONE_INFO,
+ rpc->rpcserv->dev,
"Replaced RPA %p with UVA %p at KVA %p",
"\n", (void *)rpa, (void *)uva,
(void *)kva);