Re: [PATCH 2/5] staging: tidspbridge: remove unused header

2012-01-30 Thread Ramirez Luna, Omar
2012/1/24 Felipe Contreras felipe.contre...@gmail.com:
 2012/1/23 Víctor Manuel Jáquez Leal vjaq...@igalia.com:
 No functional changes.

 The header file drv_interface.h was only used locally, hence there's no need
 to have it.

 Also the only prototyped functions were the file_operations callbacks, then
 this commit moves them up to avoid prototyping too.
...

 But looks good to me either way.

FWIW, I agree.

Regards,

Omar
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/5] staging: tidspbridge: remove unused header

2012-01-24 Thread Felipe Contreras
2012/1/23 Víctor Manuel Jáquez Leal vjaq...@igalia.com:
 No functional changes.

 The header file drv_interface.h was only used locally, hence there's no need
 to have it.

 Also the only prototyped functions were the file_operations callbacks, then
 this commit moves them up to avoid prototyping too.

'Also' is a keyword that usually denotes that we are talking about two
patches here: one that reshuffles the code, and another one that
removes the header.

But looks good to me either way.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/5] staging: tidspbridge: remove unused header

2012-01-23 Thread Víctor Manuel Jáquez Leal
No functional changes.

The header file drv_interface.h was only used locally, hence there's no need
to have it.

Also the only prototyped functions were the file_operations callbacks, then
this commit moves them up to avoid prototyping too.

Signed-off-by: Víctor Manuel Jáquez Leal vjaq...@igalia.com
---
 drivers/staging/tidspbridge/rmgr/drv_interface.c |  313 +++---
 drivers/staging/tidspbridge/rmgr/drv_interface.h |   28 --
 2 files changed, 155 insertions(+), 186 deletions(-)
 delete mode 100644 drivers/staging/tidspbridge/rmgr/drv_interface.h

diff --git a/drivers/staging/tidspbridge/rmgr/drv_interface.c 
b/drivers/staging/tidspbridge/rmgr/drv_interface.c
index 85f6e8e..5ea753c 100644
--- a/drivers/staging/tidspbridge/rmgr/drv_interface.c
+++ b/drivers/staging/tidspbridge/rmgr/drv_interface.c
@@ -48,9 +48,6 @@
 /*  --- Resource Manager */
 #include dspbridge/pwr.h
 
-/*  --- This */
-#include drv_interface.h
-
 #include dspbridge/resourcecleanup.h
 #include dspbridge/chnl.h
 #include dspbridge/proc.h
@@ -133,6 +130,161 @@ MODULE_VERSION(DSPBRIDGE_VERSION);
 
 static char *driver_name = DRIVER_NAME;
 
+/*
+ * This function is called when an application opens handle to the
+ * bridge driver.
+ */
+static int bridge_open(struct inode *ip, struct file *filp)
+{
+   int status = 0;
+   struct process_context *pr_ctxt = NULL;
+
+   /*
+* Allocate a new process context and insert it into global
+* process context list.
+*/
+
+#ifdef CONFIG_TIDSPBRIDGE_RECOVERY
+   if (recover) {
+   if (filp-f_flags  O_NONBLOCK ||
+   wait_for_completion_interruptible(bridge_open_comp))
+   return -EBUSY;
+   }
+#endif
+   pr_ctxt = kzalloc(sizeof(struct process_context), GFP_KERNEL);
+   if (pr_ctxt) {
+   pr_ctxt-res_state = PROC_RES_ALLOCATED;
+   spin_lock_init(pr_ctxt-dmm_map_lock);
+   INIT_LIST_HEAD(pr_ctxt-dmm_map_list);
+   spin_lock_init(pr_ctxt-dmm_rsv_lock);
+   INIT_LIST_HEAD(pr_ctxt-dmm_rsv_list);
+
+   pr_ctxt-node_id = kzalloc(sizeof(struct idr), GFP_KERNEL);
+   if (pr_ctxt-node_id) {
+   idr_init(pr_ctxt-node_id);
+   } else {
+   status = -ENOMEM;
+   goto err;
+   }
+
+   pr_ctxt-stream_id = kzalloc(sizeof(struct idr), GFP_KERNEL);
+   if (pr_ctxt-stream_id)
+   idr_init(pr_ctxt-stream_id);
+   else
+   status = -ENOMEM;
+   } else {
+   status = -ENOMEM;
+   }
+err:
+   filp-private_data = pr_ctxt;
+#ifdef CONFIG_TIDSPBRIDGE_RECOVERY
+   if (!status)
+   atomic_inc(bridge_cref);
+#endif
+   return status;
+}
+
+/*
+ * This function is called when an application closes handle to the bridge
+ * driver.
+ */
+static int bridge_release(struct inode *ip, struct file *filp)
+{
+   int status = 0;
+   struct process_context *pr_ctxt;
+
+   if (!filp-private_data) {
+   status = -EIO;
+   goto err;
+   }
+
+   pr_ctxt = filp-private_data;
+   flush_signals(current);
+   drv_remove_all_resources(pr_ctxt);
+   proc_detach(pr_ctxt);
+   kfree(pr_ctxt);
+
+   filp-private_data = NULL;
+
+err:
+#ifdef CONFIG_TIDSPBRIDGE_RECOVERY
+   if (!atomic_dec_return(bridge_cref))
+   complete(bridge_comp);
+#endif
+   return status;
+}
+
+/* This function provides IO interface to the bridge driver. */
+static long bridge_ioctl(struct file *filp, unsigned int code,
+unsigned long args)
+{
+   int status;
+   u32 retval = 0;
+   union trapped_args buf_in;
+
+   DBC_REQUIRE(filp != NULL);
+#ifdef CONFIG_TIDSPBRIDGE_RECOVERY
+   if (recover) {
+   status = -EIO;
+   goto err;
+   }
+#endif
+#ifdef CONFIG_PM
+   status = omap34_xxbridge_suspend_lockout(bridge_suspend_data, filp);
+   if (status != 0)
+   return status;
+#endif
+
+   if (!filp-private_data) {
+   status = -EIO;
+   goto err;
+   }
+
+   status = copy_from_user(buf_in, (union trapped_args *)args,
+   sizeof(union trapped_args));
+
+   if (!status) {
+   status = api_call_dev_ioctl(code, buf_in, retval,
+filp-private_data);
+
+   if (!status) {
+   status = retval;
+   } else {
+   dev_dbg(bridge, %s: IOCTL Failed, code: 0x%x 
+   status 0x%x\n, __func__, code, status);
+   status = -1;
+   }
+
+   }
+
+err:
+   return status;
+}
+
+/* This function maps kernel space memory to user