diff options
author | Erik Rainey <erik.rainey@ti.com> | 2012-07-13 11:35:00 -0500 |
---|---|---|
committer | Xavier Boudet <x-boudet@ti.com> | 2012-07-25 09:57:48 +0200 |
commit | 9e149fed37328ea731f27540b64b18890f41af11 (patch) | |
tree | 40c7319ed92153e594697fb8c9e29f501a2c57f8 | |
parent | ba7bca63b50c0b4abf9b4fd51fffcfd00df42b73 (diff) |
Added bootargs debug flag
[DEBUG] Changed some formatting for readibility
-rw-r--r-- | drivers/staging/omaprpc/omap_rpc.c | 200 | ||||
-rw-r--r-- | drivers/staging/omaprpc/omap_rpc_dmabuf.c | 50 | ||||
-rw-r--r-- | drivers/staging/omaprpc/omap_rpc_internal.h | 16 | ||||
-rw-r--r-- | drivers/staging/omaprpc/omap_rpc_ion.c | 23 |
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); |