diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..d766cf1de970653842b1e6bee33932b5c7be4c5e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+system.sh
+KERNEL
+dl
+deploy
+SDK
+SDK_BIN
+DSP_Install_libs.tar.gz
+GFX_*_libs.tar.gz
+GFX_Linux_SDK.tar.gz
+OMAP35x_Graphics_SDK_setuplinux_*.bin
+Graphics_SDK_setuplinux_*.bin
+patches/patch-*.bz2
diff --git a/patch.sh b/patch.sh
index 9e89a3f1025fefb8a4fe638de17eb4ee22f95d22..7049b151373ab73bfd5c875eb90f90102ef6352a 100644
--- a/patch.sh
+++ b/patch.sh
@@ -191,32 +191,8 @@ patch -s -p1 < "${DIR}/patches/devkit8000/0001-arm-omap-devkit8000-for-lcd-use-s
 
 function dspbridge {
 echo "dspbridge from staging"
-patch -s -p1 < "${DIR}/patches/dspbridge/0001-staging-tidspbridge-make-sync_wait_on_event-interrup.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0002-staging-tidspbridge-overwrite-DSP-error-codes.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0003-staging-tidspbridge-Eliminate-direct-manipulation-of.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0004-staging-tidspbridge-fix-mgr_enum_node_info.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0005-staging-tidspbridge-mgr_enum_node_info-cleanup.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0006-staging-tidspbridge-fix-kernel-oops-in-bridge_io_get.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0007-staging-tidspbridge-remove-gs-memory-allocator.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0008-staging-tidspbridge-remove-utildefs.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0009-staging-tidspbridge-switch-to-linux-bitmap-API.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0010-staging-tidspbridge-remove-gb-bitmap-implementation.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0011-staging-tidspbridge-convert-core-to-list_head.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0012-staging-tidspbridge-convert-pmgr-to-list_head.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0013-staging-tidspbridge-convert-rmgr-to-list_head.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0014-staging-tidspbridge-remove-custom-linked-list.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0015-staging-tidspbridge-core-code-cleanup.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0016-staging-tidspbridge-pmgr-code-cleanup.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0017-staging-tidspbridge-use-the-right-type-for-list_is_l.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0018-staging-tidspbridge-rmgr-node.c-code-cleanup.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0019-staging-tidspbridge-Fix-atoi-to-support-hexadecimal-.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0020-staging-tidspbridge-Remove-unused-defined-constants.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0021-staging-tidspbridge-Remove-unused-functions.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0022-staging-tidspbridge-Remove-unused-structs.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0023-staging-tidspbridge-Remove-unused-typedefs.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0024-staging-tidspbridge-Remove-trivial-header-files.patch"
-patch -s -p1 < "${DIR}/patches/dspbridge/0025-staging-tidspbridge-remove-code-referred-by-OPT_ZERO.patch"
-
+patch -s -p1 < "${DIR}/patches/dspbridge/0001-staging-tidspbridge-configure-full-L1-MMU-range.patch"
+patch -s -p1 < "${DIR}/patches/dspbridge/0001-staging-tidspbridge-replace-mbox-callback-with-notif.patch"
 }
 
 function dvfs {
diff --git a/patches/defconfig b/patches/defconfig
index 8f7c4050c1ddfabbf5519b2d72be07bcd4fc4ee8..8203a5ab7af6e8b978523c26bc89c92fff1f4d50 100644
--- a/patches/defconfig
+++ b/patches/defconfig
@@ -3223,7 +3223,15 @@ CONFIG_ZRAM=m
 # CONFIG_LIRC_STAGING is not set
 # CONFIG_SMB_FS is not set
 # CONFIG_EASYCAP is not set
-# CONFIG_TIDSPBRIDGE is not set
+CONFIG_TIDSPBRIDGE=m
+CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000
+# CONFIG_TIDSPBRIDGE_DEBUG is not set
+CONFIG_TIDSPBRIDGE_RECOVERY=y
+# CONFIG_TIDSPBRIDGE_CACHE_LINE_CHECK is not set
+CONFIG_TIDSPBRIDGE_WDT3=y
+CONFIG_TIDSPBRIDGE_WDT_TIMEOUT=5
+# CONFIG_TIDSPBRIDGE_NTFY_PWRERR is not set
+# CONFIG_TIDSPBRIDGE_BACKTRACE is not set
 # CONFIG_WESTBRIDGE is not set
 CONFIG_WESTBRIDGE_HAL_SELECTED=y
 CONFIG_MACH_OMAP3_WESTBRIDGE_AST_PNAND_HAL=y
diff --git a/patches/dspbridge/0001-omap-mailbox-fix-detection-for-previously-supported-.patch b/patches/dspbridge/0001-omap-mailbox-fix-detection-for-previously-supported-.patch
deleted file mode 100644
index cb273b84b8643561e9aca1392cc7e9c7a2a4b7e1..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0001-omap-mailbox-fix-detection-for-previously-supported-.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 004d54121d73c8f7754497e0f77d5cfe6bbc95c8 Mon Sep 17 00:00:00 2001
-From: omar ramirez <omar.ramirez@ti.com>
-Date: Sat, 6 Nov 2010 01:17:23 +0000
-Subject: [PATCH] omap: mailbox: fix detection for previously supported chips
-
-Fix the mailbox detection for OMAP3630 and 2430, also minor
-cleanup on conditional ifdef's that could affect it.
-
-Given that 2430 has an iva too include it, as the same steps
-for omap3 apply.
-
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- arch/arm/mach-omap2/mailbox.c |   16 ++++++++++------
- 1 files changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
-index 40ddeca..a0af532 100644
---- a/arch/arm/mach-omap2/mailbox.c
-+++ b/arch/arm/mach-omap2/mailbox.c
-@@ -281,7 +281,7 @@ static struct omap_mbox_ops omap2_mbox_ops = {
- 
- /* FIXME: the following structs should be filled automatically by the user id */
- 
--#if defined(CONFIG_ARCH_OMAP3430) || defined(CONFIG_ARCH_OMAP2420)
-+#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP2)
- /* DSP */
- static struct omap_mbox2_priv omap2_mbox_dsp_priv = {
- 	.tx_fifo = {
-@@ -306,7 +306,7 @@ struct omap_mbox mbox_dsp_info = {
- };
- #endif
- 
--#if defined(CONFIG_ARCH_OMAP3430)
-+#if defined(CONFIG_ARCH_OMAP3)
- struct omap_mbox *omap3_mboxes[] = { &mbox_dsp_info, NULL };
- #endif
- 
-@@ -394,15 +394,19 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
- 
- 	if (false)
- 		;
--#if defined(CONFIG_ARCH_OMAP3430)
--	else if (cpu_is_omap3430()) {
-+#if defined(CONFIG_ARCH_OMAP3)
-+	else if (cpu_is_omap34xx()) {
- 		list = omap3_mboxes;
- 
- 		list[0]->irq = platform_get_irq_byname(pdev, "dsp");
- 	}
- #endif
--#if defined(CONFIG_ARCH_OMAP2420)
--	else if (cpu_is_omap2420()) {
-+#if defined(CONFIG_ARCH_OMAP2)
-+	else if (cpu_is_omap2430()) {
-+		list = omap2_mboxes;
-+
-+		list[0]->irq = platform_get_irq_byname(pdev, "dsp");
-+	} else if (cpu_is_omap2420()) {
- 		list = omap2_mboxes;
- 
- 		list[0]->irq = platform_get_irq_byname(pdev, "dsp");
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0001-staging-tidspbridge-configure-full-L1-MMU-range.patch b/patches/dspbridge/0001-staging-tidspbridge-configure-full-L1-MMU-range.patch
new file mode 100644
index 0000000000000000000000000000000000000000..1ed31e6ef8fd35bcbf1a8dfaeefc8d8ea9d092fe
--- /dev/null
+++ b/patches/dspbridge/0001-staging-tidspbridge-configure-full-L1-MMU-range.patch
@@ -0,0 +1,45 @@
+From 8e290fd41a15e392af87a33c9c4db3daffcd558b Mon Sep 17 00:00:00 2001
+From: Guzman Lugo, Fernando <fernando.lugo@ti.com>
+Date: Thu, 13 Jan 2011 23:34:52 -0600
+Subject: [PATCH] staging: tidspbridge: configure full L1 MMU range
+
+IVA MMU can manage up to 4GB of address space through its page tables,
+given that it's L1 is divided into 1MB sections it requires at least
+16KB for its table which represents 4096 entries of 32 bits each.
+
+Previously, only 1GB was being handled by setting the page table size
+to 4KB, any virtual address beyond of the L1 size used, would fall
+into memory that does not belong to L1 translation tables, leading to
+unpredictable results.
+
+So, set the L1 table size to cover the entire MMU range (4GB) whether
+is meant to be used or not.
+
+Reported-by: Felipe Contreras <felipe.contreras@nokia.com>
+Signed-off-by: Fernando Guzman Lugo <fernando.lugo@ti.com>
+Signed-off-by: Felipe Contreras <felipe.contreras@nokia.com>
+Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/staging/tidspbridge/core/tiomap3430.c |    5 +----
+ 1 files changed, 1 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/staging/tidspbridge/core/tiomap3430.c b/drivers/staging/tidspbridge/core/tiomap3430.c
+index a3b0a18..c3126e2 100644
+--- a/drivers/staging/tidspbridge/core/tiomap3430.c
++++ b/drivers/staging/tidspbridge/core/tiomap3430.c
+@@ -786,10 +786,7 @@ static int bridge_dev_create(struct bridge_dev_context
+ 
+ 	pt_attrs = kzalloc(sizeof(struct pg_table_attrs), GFP_KERNEL);
+ 	if (pt_attrs != NULL) {
+-		/* Assuming that we use only DSP's memory map
+-		 * until 0x4000:0000 , we would need only 1024
+-		 * L1 enties i.e L1 size = 4K */
+-		pt_attrs->l1_size = 0x1000;
++		pt_attrs->l1_size = SZ_16K; /* 4096 entries of 32 bits */
+ 		align_size = pt_attrs->l1_size;
+ 		/* Align sizes are expected to be power of 2 */
+ 		/* we like to get aligned on L1 table size */
+-- 
+1.7.1
+
diff --git a/patches/dspbridge/0001-staging-tidspbridge-make-sync_wait_on_event-interrup.patch b/patches/dspbridge/0001-staging-tidspbridge-make-sync_wait_on_event-interrup.patch
deleted file mode 100644
index c3991d3dc6205040c5df7615a61672db387ab9ef..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0001-staging-tidspbridge-make-sync_wait_on_event-interrup.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From d66f2a4c63c6f5646c30ed22bb1b28a6c07cc7bc Mon Sep 17 00:00:00 2001
-From: Guzman Lugo, Fernando <x0095840@ti.com>
-Date: Tue, 26 Oct 2010 00:51:46 +0000
-Subject: [PATCH 01/25] staging: tidspbridge - make sync_wait_on_event interruptible
-
-So that avoid non-killable process.
-
-Signed-off-by: Fernando Guzman Lugo <x0095840@ti.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- .../staging/tidspbridge/include/dspbridge/sync.h   |   13 +++++++++++--
- 1 files changed, 11 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/sync.h b/drivers/staging/tidspbridge/include/dspbridge/sync.h
-index e2651e7..df05b8f 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/sync.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/sync.h
-@@ -80,13 +80,22 @@ void sync_set_event(struct sync_object *event);
-  * This functios will wait until @event is set or until timeout. In case of
-  * success the function will return 0 and
-  * in case of timeout the function will return -ETIME
-+ * in case of signal the function will return -ERESTARTSYS
-  */
- 
- static inline int sync_wait_on_event(struct sync_object *event,
- 							unsigned timeout)
- {
--	return wait_for_completion_timeout(&event->comp,
--		msecs_to_jiffies(timeout)) ? 0 : -ETIME;
-+	int res;
-+
-+	res = wait_for_completion_interruptible_timeout(&event->comp,
-+						msecs_to_jiffies(timeout));
-+	if (!res)
-+		res = -ETIME;
-+	else if (res > 0)
-+		res = 0;
-+
-+	return res;
- }
- 
- /**
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0001-staging-tidspbridge-replace-mbox-callback-with-notif.patch b/patches/dspbridge/0001-staging-tidspbridge-replace-mbox-callback-with-notif.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e6b20447bdb57fba3aac1de749a8e791d786f4c0
--- /dev/null
+++ b/patches/dspbridge/0001-staging-tidspbridge-replace-mbox-callback-with-notif.patch
@@ -0,0 +1,135 @@
+From 85d139c977dd13cd1ca5cb3b9d8e39cb477eaf0c Mon Sep 17 00:00:00 2001
+From: Omar Ramirez Luna <omar.ramirez@ti.com>
+Date: Fri, 14 Jan 2011 17:49:51 -0600
+Subject: [PATCH] staging: tidspbridge: replace mbox callback with notifier_call
+
+Lately, mailbox callbacks have been replaced by notifier block
+call chains, this needs to be changed in the users of mailbox,
+otherwise compilation will break due to missing parameters.
+
+For this new change to work, io_mbox_msg needs to be compatible
+with the notifier_call definition.
+
+Reported-by: Hari Kanigeri <h-kanigeri2@ti.com>
+Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/staging/tidspbridge/core/io_sm.c           |    8 +++---
+ drivers/staging/tidspbridge/core/tiomap3430.c      |   10 +++++---
+ .../staging/tidspbridge/include/dspbridge/io_sm.h  |   21 +++++++------------
+ 3 files changed, 18 insertions(+), 21 deletions(-)
+
+diff --git a/drivers/staging/tidspbridge/core/io_sm.c b/drivers/staging/tidspbridge/core/io_sm.c
+index 5718645..27e0aa8 100644
+--- a/drivers/staging/tidspbridge/core/io_sm.c
++++ b/drivers/staging/tidspbridge/core/io_sm.c
+@@ -949,7 +949,7 @@ func_end:
+  *      Calls the Bridge's CHNL_ISR to determine if this interrupt is ours, then
+  *      schedules a DPC to dispatch I/O.
+  */
+-void io_mbox_msg(u32 msg)
++int io_mbox_msg(struct notifier_block *self, unsigned long len, void *msg)
+ {
+ 	struct io_mgr *pio_mgr;
+ 	struct dev_object *dev_obj;
+@@ -959,9 +959,9 @@ void io_mbox_msg(u32 msg)
+ 	dev_get_io_mgr(dev_obj, &pio_mgr);
+ 
+ 	if (!pio_mgr)
+-		return;
++		return NOTIFY_BAD;
+ 
+-	pio_mgr->intr_val = (u16)msg;
++	pio_mgr->intr_val = (u16)((u32)msg);
+ 	if (pio_mgr->intr_val & MBX_PM_CLASS)
+ 		io_dispatch_pm(pio_mgr);
+ 
+@@ -973,7 +973,7 @@ void io_mbox_msg(u32 msg)
+ 		spin_unlock_irqrestore(&pio_mgr->dpc_lock, flags);
+ 		tasklet_schedule(&pio_mgr->dpc_tasklet);
+ 	}
+-	return;
++	return NOTIFY_OK;
+ }
+ 
+ /*
+diff --git a/drivers/staging/tidspbridge/core/tiomap3430.c b/drivers/staging/tidspbridge/core/tiomap3430.c
+index c3126e2..a3f69f6 100644
+--- a/drivers/staging/tidspbridge/core/tiomap3430.c
++++ b/drivers/staging/tidspbridge/core/tiomap3430.c
+@@ -223,6 +223,10 @@ static struct bridge_drv_interface drv_interface_fxns = {
+ 	bridge_msg_set_queue_id,
+ };
+ 
++static struct notifier_block dsp_mbox_notifier = {
++	.notifier_call = io_mbox_msg,
++};
++
+ static inline void flush_all(struct bridge_dev_context *dev_context)
+ {
+ 	if (dev_context->dw_brd_state == BRD_DSP_HIBERNATION ||
+@@ -553,7 +557,7 @@ static int bridge_brd_start(struct bridge_dev_context *dev_ctxt,
+ 		 * Enable Mailbox events and also drain any pending
+ 		 * stale messages.
+ 		 */
+-		dev_context->mbox = omap_mbox_get("dsp");
++		dev_context->mbox = omap_mbox_get("dsp", &dsp_mbox_notifier);
+ 		if (IS_ERR(dev_context->mbox)) {
+ 			dev_context->mbox = NULL;
+ 			pr_err("%s: Failed to get dsp mailbox handle\n",
+@@ -563,8 +567,6 @@ static int bridge_brd_start(struct bridge_dev_context *dev_ctxt,
+ 
+ 	}
+ 	if (!status) {
+-		dev_context->mbox->rxq->callback = (int (*)(void *))io_mbox_msg;
+-
+ /*PM_IVA2GRPSEL_PER = 0xC0;*/
+ 		temp = readl(resources->dw_per_pm_base + 0xA8);
+ 		temp = (temp & 0xFFFFFF30) | 0xC0;
+@@ -685,7 +687,7 @@ static int bridge_brd_stop(struct bridge_dev_context *dev_ctxt)
+ 	/* Disable the mailbox interrupts */
+ 	if (dev_context->mbox) {
+ 		omap_mbox_disable_irq(dev_context->mbox, IRQ_RX);
+-		omap_mbox_put(dev_context->mbox);
++		omap_mbox_put(dev_context->mbox, &dsp_mbox_notifier);
+ 		dev_context->mbox = NULL;
+ 	}
+ 	/* Reset IVA2 clocks*/
+diff --git a/drivers/staging/tidspbridge/include/dspbridge/io_sm.h b/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
+index 18aec55..8242c70 100644
+--- a/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
++++ b/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
+@@ -72,22 +72,17 @@ extern void io_dpc(unsigned long ref_data);
+ /*
+  *  ======== io_mbox_msg ========
+  *  Purpose:
+- *      Main interrupt handler for the shared memory Bridge channel manager.
+- *      Calls the Bridge's chnlsm_isr to determine if this interrupt is ours,
+- *      then schedules a DPC to dispatch I/O.
++ *	Main message handler for the shared memory Bridge channel manager.
++ *	Determine if this message is ours, then schedules a DPC to
++ *	dispatch I/O.
+  *  Parameters:
+- *      ref_data:   Pointer to the channel manager object for this board.
+- *                  Set in an initial call to ISR_Install().
++ *	self:	Pointer to its own notifier_block struct.
++ *	len:	Length of message.
++ *	msg:	Message code received.
+  *  Returns:
+- *      TRUE if interrupt handled; FALSE otherwise.
+- *  Requires:
+- *      Must be in locked memory if executing in kernel mode.
+- *      Must only call functions which are in locked memory if Kernel mode.
+- *      Must only call asynchronous services.
+- *      Interrupts are disabled and EOI for this interrupt has been sent.
+- *  Ensures:
++ *	NOTIFY_OK if handled; NOTIFY_BAD otherwise.
+  */
+-void io_mbox_msg(u32 msg);
++int io_mbox_msg(struct notifier_block *self, unsigned long len, void *msg);
+ 
+ /*
+  *  ======== io_request_chnl ========
+-- 
+1.7.1
+
diff --git a/patches/dspbridge/0002-staging-tidspbridge-overwrite-DSP-error-codes.patch b/patches/dspbridge/0002-staging-tidspbridge-overwrite-DSP-error-codes.patch
deleted file mode 100644
index c42309732c8c3c28c5158f573b539abc160de586..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0002-staging-tidspbridge-overwrite-DSP-error-codes.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 991f03559122d43fccee62c956ea0faf87ee25d7 Mon Sep 17 00:00:00 2001
-From: Sapiens, Rene <rene.sapiens@ti.com>
-Date: Thu, 4 Nov 2010 00:31:24 +0000
-Subject: [PATCH 02/25] staging: tidspbridge: overwrite DSP error codes
-
-When calling the DSP's remote functions, the DSP returns error
-codes different from the ones managed by the kernel, the
-function's return value is shared with the MPU using a shared
-structure. This patch overwrites those error codes by kernel
-specifics and deletes unnecessary code.
-
-Signed-off-by: Rene Sapiens <rene.sapiens@ti.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/rmgr/disp.c |   44 +++++-------------------------
- 1 files changed, 8 insertions(+), 36 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/rmgr/disp.c b/drivers/staging/tidspbridge/rmgr/disp.c
-index b7ce435..560069a 100644
---- a/drivers/staging/tidspbridge/rmgr/disp.c
-+++ b/drivers/staging/tidspbridge/rmgr/disp.c
-@@ -460,17 +460,6 @@ int disp_node_create(struct disp_object *disp_obj,
- 		DBC_ASSERT(ul_bytes < (RMS_COMMANDBUFSIZE * sizeof(rms_word)));
- 		status = send_message(disp_obj, node_get_timeout(hnode),
- 				      ul_bytes, node_env);
--		if (status >= 0) {
--			/*
--			 * Message successfully received from RMS.
--			 * Return the status of the Node's create function
--			 * on the DSP-side
--			 */
--			status = (((rms_word *) (disp_obj->pbuf))[0]);
--			if (status < 0)
--				dev_dbg(bridge, "%s: DSP-side failed: 0x%x\n",
--					__func__, status);
--		}
- 	}
- func_end:
- 	return status;
-@@ -513,18 +502,6 @@ int disp_node_delete(struct disp_object *disp_obj,
- 			status = send_message(disp_obj, node_get_timeout(hnode),
- 					      sizeof(struct rms_command),
- 					      &dw_arg);
--			if (status >= 0) {
--				/*
--				 * Message successfully received from RMS.
--				 * Return the status of the Node's delete
--				 * function on the DSP-side
--				 */
--				status = (((rms_word *) (disp_obj->pbuf))[0]);
--				if (status < 0)
--					dev_dbg(bridge, "%s: DSP-side failed: "
--						"0x%x\n", __func__, status);
--			}
--
- 		}
- 	}
- 	return status;
-@@ -566,18 +543,6 @@ int disp_node_run(struct disp_object *disp_obj,
- 			status = send_message(disp_obj, node_get_timeout(hnode),
- 					      sizeof(struct rms_command),
- 					      &dw_arg);
--			if (status >= 0) {
--				/*
--				 * Message successfully received from RMS.
--				 * Return the status of the Node's execute
--				 * function on the DSP-side
--				 */
--				status = (((rms_word *) (disp_obj->pbuf))[0]);
--				if (status < 0)
--					dev_dbg(bridge, "%s: DSP-side failed: "
--						"0x%x\n", __func__, status);
--			}
--
- 		}
- 	}
- 
-@@ -739,7 +704,14 @@ static int send_message(struct disp_object *disp_obj, u32 timeout,
- 		} else {
- 			if (CHNL_IS_IO_COMPLETE(chnl_ioc_obj)) {
- 				DBC_ASSERT(chnl_ioc_obj.pbuf == pbuf);
--				status = (*((rms_word *) chnl_ioc_obj.pbuf));
-+				if (*((int *)chnl_ioc_obj.pbuf) < 0) {
-+					/* Translate DSP's to kernel error */
-+					status = -EREMOTEIO;
-+					dev_dbg(bridge, "%s: DSP-side failed:"
-+						" DSP errcode = 0x%x, Kernel "
-+						"errcode = %d\n", __func__,
-+						*(int *)pbuf, status);
-+				}
- 				*pdw_arg =
- 				    (((rms_word *) (chnl_ioc_obj.pbuf))[1]);
- 			} else {
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0003-staging-tidspbridge-Eliminate-direct-manipulation-of.patch b/patches/dspbridge/0003-staging-tidspbridge-Eliminate-direct-manipulation-of.patch
deleted file mode 100644
index e3da15a78f828bf6f348d2044f73d22c6fd935d0..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0003-staging-tidspbridge-Eliminate-direct-manipulation-of.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-From abfb6546fb6de50d1f7d0d614a09459e7818b2e1 Mon Sep 17 00:00:00 2001
-From: Armando Uribe <x0095078@ti.com>
-Date: Mon, 1 Nov 2010 17:15:50 -0600
-Subject: [PATCH 03/25] staging: tidspbridge - Eliminate direct manipulation of OMAP_SYSC_BASE
-
-Eliminates Bridge direct manipulation of OMAP_SYSC_BASE registers
-
-Signed-off-by: Armando Uribe <x0095078@ti.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/core/dsp-clock.c       |   52 +-------------------
- drivers/staging/tidspbridge/core/tiomap3430.c      |    3 -
- .../tidspbridge/include/dspbridge/cfgdefs.h        |    1 -
- .../staging/tidspbridge/include/dspbridge/drv.h    |    3 -
- drivers/staging/tidspbridge/rmgr/drv.c             |    1 -
- 5 files changed, 2 insertions(+), 58 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/core/dsp-clock.c b/drivers/staging/tidspbridge/core/dsp-clock.c
-index 46d17c7..589a055 100644
---- a/drivers/staging/tidspbridge/core/dsp-clock.c
-+++ b/drivers/staging/tidspbridge/core/dsp-clock.c
-@@ -146,54 +146,6 @@ void dsp_clk_init(void)
- 					ssi.sst_fck, ssi.ssr_fck, ssi.ick);
- }
- 
--#ifdef CONFIG_OMAP_MCBSP
--static void mcbsp_clk_prepare(bool flag, u8 id)
--{
--	struct cfg_hostres *resources;
--	struct dev_object *hdev_object = NULL;
--	struct bridge_dev_context *bridge_context = NULL;
--	u32 val;
--
--	hdev_object = (struct dev_object *)drv_get_first_dev_object();
--	if (!hdev_object)
--		return;
--
--	dev_get_bridge_context(hdev_object, &bridge_context);
--	if (!bridge_context)
--		return;
--
--	resources = bridge_context->resources;
--	if (!resources)
--		return;
--
--	if (flag) {
--		if (id == DSP_CLK_MCBSP1) {
--			/* set MCBSP1_CLKS, on McBSP1 ON */
--			val = __raw_readl(resources->dw_sys_ctrl_base + 0x274);
--			val |= 1 << 2;
--			__raw_writel(val, resources->dw_sys_ctrl_base + 0x274);
--		} else if (id == DSP_CLK_MCBSP2) {
--			/* set MCBSP2_CLKS, on McBSP2 ON */
--			val = __raw_readl(resources->dw_sys_ctrl_base + 0x274);
--			val |= 1 << 6;
--			__raw_writel(val, resources->dw_sys_ctrl_base + 0x274);
--		}
--	} else {
--		if (id == DSP_CLK_MCBSP1) {
--			/* clear MCBSP1_CLKS, on McBSP1 OFF */
--			val = __raw_readl(resources->dw_sys_ctrl_base + 0x274);
--			val &= ~(1 << 2);
--			__raw_writel(val, resources->dw_sys_ctrl_base + 0x274);
--		} else if (id == DSP_CLK_MCBSP2) {
--			/* clear MCBSP2_CLKS, on McBSP2 OFF */
--			val = __raw_readl(resources->dw_sys_ctrl_base + 0x274);
--			val &= ~(1 << 6);
--			__raw_writel(val, resources->dw_sys_ctrl_base + 0x274);
--		}
--	}
--}
--#endif
--
- /**
-  * dsp_gpt_wait_overflow - set gpt overflow and wait for fixed timeout
-  * @clk_id:      GP Timer clock id.
-@@ -257,9 +209,9 @@ int dsp_clk_enable(enum dsp_clk_id clk_id)
- 		break;
- #ifdef CONFIG_OMAP_MCBSP
- 	case MCBSP_CLK:
--		mcbsp_clk_prepare(true, clk_id);
- 		omap_mcbsp_set_io_type(MCBSP_ID(clk_id), OMAP_MCBSP_POLL_IO);
- 		omap_mcbsp_request(MCBSP_ID(clk_id));
-+		omap2_mcbsp_set_clks_src(MCBSP_ID(clk_id), MCBSP_CLKS_PAD_SRC);
- 		break;
- #endif
- 	case WDT_CLK:
-@@ -334,7 +286,7 @@ int dsp_clk_disable(enum dsp_clk_id clk_id)
- 		break;
- #ifdef CONFIG_OMAP_MCBSP
- 	case MCBSP_CLK:
--		mcbsp_clk_prepare(false, clk_id);
-+		omap2_mcbsp_set_clks_src(MCBSP_ID(clk_id), MCBSP_CLKS_PRCM_SRC);
- 		omap_mcbsp_free(MCBSP_ID(clk_id));
- 		break;
- #endif
-diff --git a/drivers/staging/tidspbridge/core/tiomap3430.c b/drivers/staging/tidspbridge/core/tiomap3430.c
-index 1be081f..cb45e93 100644
---- a/drivers/staging/tidspbridge/core/tiomap3430.c
-+++ b/drivers/staging/tidspbridge/core/tiomap3430.c
-@@ -1037,15 +1037,12 @@ static int bridge_dev_destroy(struct bridge_dev_context *dev_ctxt)
- 			iounmap((void *)host_res->dw_per_pm_base);
- 		if (host_res->dw_core_pm_base)
- 			iounmap((void *)host_res->dw_core_pm_base);
--		if (host_res->dw_sys_ctrl_base)
--			iounmap(host_res->dw_sys_ctrl_base);
- 
- 		host_res->dw_mem_base[0] = (u32) NULL;
- 		host_res->dw_mem_base[2] = (u32) NULL;
- 		host_res->dw_mem_base[3] = (u32) NULL;
- 		host_res->dw_mem_base[4] = (u32) NULL;
- 		host_res->dw_dmmu_base = NULL;
--		host_res->dw_sys_ctrl_base = NULL;
- 
- 		kfree(host_res);
- 	}
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h b/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h
-index 38122db..f403c01 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h
-@@ -69,7 +69,6 @@ struct cfg_hostres {
- 	u32 dw_per_pm_base;
- 	u32 dw_core_pm_base;
- 	void __iomem *dw_dmmu_base;
--	void __iomem *dw_sys_ctrl_base;
- };
- 
- struct cfg_dspmemdesc {
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/drv.h b/drivers/staging/tidspbridge/include/dspbridge/drv.h
-index c1f363e..37f5a45 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/drv.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/drv.h
-@@ -65,9 +65,6 @@
- #define OMAP_CORE_PRM_BASE 0x48306A00
- #define OMAP_CORE_PRM_SIZE 0x1000
- 
--#define OMAP_SYSC_BASE 0x48002000
--#define OMAP_SYSC_SIZE 0x1000
--
- #define OMAP_DMMU_BASE 0x5D000000
- #define OMAP_DMMU_SIZE 0x1000
- 
-diff --git a/drivers/staging/tidspbridge/rmgr/drv.c b/drivers/staging/tidspbridge/rmgr/drv.c
-index 81b1b90..c50579c 100644
---- a/drivers/staging/tidspbridge/rmgr/drv.c
-+++ b/drivers/staging/tidspbridge/rmgr/drv.c
-@@ -740,7 +740,6 @@ static int request_bridge_resources(struct cfg_hostres *res)
- 	host_res->num_mem_windows = 2;
- 
- 	/* First window is for DSP internal memory */
--	host_res->dw_sys_ctrl_base = ioremap(OMAP_SYSC_BASE, OMAP_SYSC_SIZE);
- 	dev_dbg(bridge, "dw_mem_base[0] 0x%x\n", host_res->dw_mem_base[0]);
- 	dev_dbg(bridge, "dw_mem_base[3] 0x%x\n", host_res->dw_mem_base[3]);
- 	dev_dbg(bridge, "dw_dmmu_base %p\n", host_res->dw_dmmu_base);
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0004-staging-tidspbridge-fix-mgr_enum_node_info.patch b/patches/dspbridge/0004-staging-tidspbridge-fix-mgr_enum_node_info.patch
deleted file mode 100644
index 71e347570299e684def9d122d0d03cd64de43b56..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0004-staging-tidspbridge-fix-mgr_enum_node_info.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 356be372017d3fcbe6fab3078a19b25c971c7a78 Mon Sep 17 00:00:00 2001
-From: Felipe Contreras <felipe.contreras@gmail.com>
-Date: Fri, 5 Nov 2010 17:01:48 +0000
-Subject: [PATCH 04/25] staging: tidspbridge: fix mgr_enum_node_info
-
-The current code was always returning a non-zero status value
-to userspace applications when this ioctl was called.
-
-The error code was ENODATA, which isn't actually an error,
-it's always returned by dcd_enumerate_object() when it hits the
-end of list.
-
-Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/rmgr/mgr.c |    5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/rmgr/mgr.c b/drivers/staging/tidspbridge/rmgr/mgr.c
-index 0ea89a1..2eab6a5 100644
---- a/drivers/staging/tidspbridge/rmgr/mgr.c
-+++ b/drivers/staging/tidspbridge/rmgr/mgr.c
-@@ -169,6 +169,11 @@ int mgr_enum_node_info(u32 node_id, struct dsp_ndbprops *pndb_props,
- 
- 		}
- 	}
-+
-+	/* the last status is not 0, but neither an error */
-+	if (status > 0)
-+		status = 0;
-+
- 	if (!status) {
- 		if (node_id > (node_index - 1)) {
- 			status = -EINVAL;
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0005-staging-tidspbridge-mgr_enum_node_info-cleanup.patch b/patches/dspbridge/0005-staging-tidspbridge-mgr_enum_node_info-cleanup.patch
deleted file mode 100644
index 323b3a43171272943bfc9f80ddc7db794607ac72..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0005-staging-tidspbridge-mgr_enum_node_info-cleanup.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From c1a29417a1d1aab88e1249303bba2cbe58ff6d1e Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Fri, 5 Nov 2010 17:01:49 +0000
-Subject: [PATCH 05/25] staging: tidspbridge: mgr_enum_node_info cleanup
-
-Reorganized mgr_enum_node_info code to increase its
-readability.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/rmgr/mgr.c |   51 ++++++++++----------------------
- 1 files changed, 16 insertions(+), 35 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/rmgr/mgr.c b/drivers/staging/tidspbridge/rmgr/mgr.c
-index 2eab6a5..16410a5 100644
---- a/drivers/staging/tidspbridge/rmgr/mgr.c
-+++ b/drivers/staging/tidspbridge/rmgr/mgr.c
-@@ -134,8 +134,7 @@ int mgr_enum_node_info(u32 node_id, struct dsp_ndbprops *pndb_props,
- 			      u32 undb_props_size, u32 *pu_num_nodes)
- {
- 	int status = 0;
--	struct dsp_uuid node_uuid, temp_uuid;
--	u32 temp_index = 0;
-+	struct dsp_uuid node_uuid;
- 	u32 node_index = 0;
- 	struct dcd_genericobj gen_obj;
- 	struct mgr_object *pmgr_obj = NULL;
-@@ -149,24 +148,27 @@ int mgr_enum_node_info(u32 node_id, struct dsp_ndbprops *pndb_props,
- 	*pu_num_nodes = 0;
- 	/* Get the Manager Object from the driver data */
- 	if (!drv_datap || !drv_datap->mgr_object) {
--		status = -ENODATA;
- 		pr_err("%s: Failed to retrieve the object handle\n", __func__);
--		goto func_cont;
--	} else {
--		pmgr_obj = drv_datap->mgr_object;
-+		return -ENODATA;
- 	}
-+	pmgr_obj = drv_datap->mgr_object;
- 
- 	DBC_ASSERT(pmgr_obj);
- 	/* Forever loop till we hit failed or no more items in the
- 	 * Enumeration. We will exit the loop other than 0; */
--	while (status == 0) {
--		status = dcd_enumerate_object(temp_index++, DSP_DCDNODETYPE,
--					      &temp_uuid);
--		if (status == 0) {
--			node_index++;
--			if (node_id == (node_index - 1))
--				node_uuid = temp_uuid;
--
-+	while (!status) {
-+		status = dcd_enumerate_object(node_index++, DSP_DCDNODETYPE,
-+				&node_uuid);
-+		if (status)
-+			break;
-+		*pu_num_nodes = node_index;
-+		if (node_id == (node_index - 1)) {
-+			status = dcd_get_object_def(pmgr_obj->hdcd_mgr,
-+					&node_uuid, DSP_DCDNODETYPE, &gen_obj);
-+			if (status)
-+				break;
-+			/* Get the Obj def */
-+			*pndb_props = gen_obj.obj_data.node_obj.ndb_props;
- 		}
- 	}
- 
-@@ -174,27 +176,6 @@ int mgr_enum_node_info(u32 node_id, struct dsp_ndbprops *pndb_props,
- 	if (status > 0)
- 		status = 0;
- 
--	if (!status) {
--		if (node_id > (node_index - 1)) {
--			status = -EINVAL;
--		} else {
--			status = dcd_get_object_def(pmgr_obj->hdcd_mgr,
--						    (struct dsp_uuid *)
--						    &node_uuid, DSP_DCDNODETYPE,
--						    &gen_obj);
--			if (!status) {
--				/* Get the Obj def */
--				*pndb_props =
--				    gen_obj.obj_data.node_obj.ndb_props;
--				*pu_num_nodes = node_index;
--			}
--		}
--	}
--
--func_cont:
--	DBC_ENSURE((!status && *pu_num_nodes > 0) ||
--		   (status && *pu_num_nodes == 0));
--
- 	return status;
- }
- 
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0006-staging-tidspbridge-fix-kernel-oops-in-bridge_io_get.patch b/patches/dspbridge/0006-staging-tidspbridge-fix-kernel-oops-in-bridge_io_get.patch
deleted file mode 100644
index 88fc4c9a39018cab317076cb07314e7bd1fcc023..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0006-staging-tidspbridge-fix-kernel-oops-in-bridge_io_get.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From f0749e8db311802cd5eb811fb0bae7e64f114fa9 Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Fri, 5 Nov 2010 17:01:50 +0000
-Subject: [PATCH 06/25] staging: tidspbridge: fix kernel oops in bridge_io_get_proc_load
-
-The DSP shared memory area gets initialized only when
-a COFF file is loaded.
-
-If bridge_io_get_proc_load is called before loading a base
-image into the DSP, the shared_mem member of the io manager
-will be NULL, resulting in a kernel oops when it's dereferenced.
-
-Also made some coding style changes to bridge_io_create.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/core/io_sm.c |   78 +++++++++++------------------
- 1 files changed, 30 insertions(+), 48 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/core/io_sm.c b/drivers/staging/tidspbridge/core/io_sm.c
-index 5718645..9ee02d1 100644
---- a/drivers/staging/tidspbridge/core/io_sm.c
-+++ b/drivers/staging/tidspbridge/core/io_sm.c
-@@ -167,57 +167,41 @@ int bridge_io_create(struct io_mgr **io_man,
- 			    struct dev_object *hdev_obj,
- 			    const struct io_attrs *mgr_attrts)
- {
--	int status = 0;
- 	struct io_mgr *pio_mgr = NULL;
--	struct shm *shared_mem = NULL;
- 	struct bridge_dev_context *hbridge_context = NULL;
- 	struct cfg_devnode *dev_node_obj;
- 	struct chnl_mgr *hchnl_mgr;
- 	u8 dev_type;
- 
- 	/* Check requirements */
--	if (!io_man || !mgr_attrts || mgr_attrts->word_size == 0) {
--		status = -EFAULT;
--		goto func_end;
--	}
-+	if (!io_man || !mgr_attrts || mgr_attrts->word_size == 0)
-+		return -EFAULT;
-+
-+	*io_man = NULL;
-+
- 	dev_get_chnl_mgr(hdev_obj, &hchnl_mgr);
--	if (!hchnl_mgr || hchnl_mgr->hio_mgr) {
--		status = -EFAULT;
--		goto func_end;
--	}
-+	if (!hchnl_mgr || hchnl_mgr->hio_mgr)
-+		return -EFAULT;
-+
- 	/*
- 	 * Message manager will be created when a file is loaded, since
- 	 * size of message buffer in shared memory is configurable in
- 	 * the base image.
- 	 */
- 	dev_get_bridge_context(hdev_obj, &hbridge_context);
--	if (!hbridge_context) {
--		status = -EFAULT;
--		goto func_end;
--	}
-+	if (!hbridge_context)
-+		return -EFAULT;
-+
- 	dev_get_dev_type(hdev_obj, &dev_type);
--	/*
--	 * DSP shared memory area will get set properly when
--	 * a program is loaded. They are unknown until a COFF file is
--	 * loaded. I chose the value -1 because it was less likely to be
--	 * a valid address than 0.
--	 */
--	shared_mem = (struct shm *)-1;
- 
- 	/* Allocate IO manager object */
- 	pio_mgr = kzalloc(sizeof(struct io_mgr), GFP_KERNEL);
--	if (pio_mgr == NULL) {
--		status = -ENOMEM;
--		goto func_end;
--	}
-+	if (!pio_mgr)
-+		return -ENOMEM;
- 
- 	/* Initialize chnl_mgr object */
--#if defined(CONFIG_TIDSPBRIDGE_BACKTRACE) || defined(CONFIG_TIDSPBRIDGE_DEBUG)
--	pio_mgr->pmsg = NULL;
--#endif
- 	pio_mgr->hchnl_mgr = hchnl_mgr;
- 	pio_mgr->word_size = mgr_attrts->word_size;
--	pio_mgr->shared_mem = shared_mem;
- 
- 	if (dev_type == DSP_UNIT) {
- 		/* Create an IO DPC */
-@@ -229,29 +213,24 @@ int bridge_io_create(struct io_mgr **io_man,
- 
- 		spin_lock_init(&pio_mgr->dpc_lock);
- 
--		status = dev_get_dev_node(hdev_obj, &dev_node_obj);
-+		if (dev_get_dev_node(hdev_obj, &dev_node_obj)) {
-+			bridge_io_destroy(pio_mgr);
-+			return -EIO;
-+		}
- 	}
- 
--	if (!status) {
--		pio_mgr->hbridge_context = hbridge_context;
--		pio_mgr->shared_irq = mgr_attrts->irq_shared;
--		if (dsp_wdt_init())
--			status = -EPERM;
--	} else {
--		status = -EIO;
--	}
--func_end:
--	if (status) {
--		/* Cleanup */
-+	pio_mgr->hbridge_context = hbridge_context;
-+	pio_mgr->shared_irq = mgr_attrts->irq_shared;
-+	if (dsp_wdt_init()) {
- 		bridge_io_destroy(pio_mgr);
--		if (io_man)
--			*io_man = NULL;
--	} else {
--		/* Return IO manager object to caller... */
--		hchnl_mgr->hio_mgr = pio_mgr;
--		*io_man = pio_mgr;
-+		return -EPERM;
- 	}
--	return status;
-+
-+	/* Return IO manager object to caller... */
-+	hchnl_mgr->hio_mgr = pio_mgr;
-+	*io_man = pio_mgr;
-+
-+	return 0;
- }
- 
- /*
-@@ -1714,6 +1693,9 @@ int io_sh_msetting(struct io_mgr *hio_mgr, u8 desc, void *pargs)
- int bridge_io_get_proc_load(struct io_mgr *hio_mgr,
- 				struct dsp_procloadstat *proc_lstat)
- {
-+	if (!hio_mgr->shared_mem)
-+		return -EFAULT;
-+
- 	proc_lstat->curr_load =
- 			hio_mgr->shared_mem->load_mon_info.curr_dsp_load;
- 	proc_lstat->predicted_load =
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0007-staging-tidspbridge-remove-gs-memory-allocator.patch b/patches/dspbridge/0007-staging-tidspbridge-remove-gs-memory-allocator.patch
deleted file mode 100644
index ffb4591b6325f678e3fe50762eea665ae1f138a7..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0007-staging-tidspbridge-remove-gs-memory-allocator.patch
+++ /dev/null
@@ -1,348 +0,0 @@
-From 30388543eb8f0e2f5ed318b008e7ca20e757efbd Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Sun, 21 Nov 2010 10:46:19 +0000
-Subject: [PATCH 07/25] staging: tidspbridge: remove gs memory allocator
-
-Remove unnecessary wrappers for linux kernel memory
-allocation primitives.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/Makefile               |    2 +-
- drivers/staging/tidspbridge/gen/gb.c               |   11 +--
- drivers/staging/tidspbridge/gen/gh.c               |   38 ++-------
- drivers/staging/tidspbridge/gen/gs.c               |   88 --------------------
- drivers/staging/tidspbridge/include/dspbridge/gs.h |   59 -------------
- 5 files changed, 15 insertions(+), 183 deletions(-)
- delete mode 100644 drivers/staging/tidspbridge/gen/gs.c
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/gs.h
-
-diff --git a/drivers/staging/tidspbridge/Makefile b/drivers/staging/tidspbridge/Makefile
-index 41c644c..648e392 100644
---- a/drivers/staging/tidspbridge/Makefile
-+++ b/drivers/staging/tidspbridge/Makefile
-@@ -1,6 +1,6 @@
- obj-$(CONFIG_TIDSPBRIDGE)	+= bridgedriver.o
- 
--libgen = gen/gb.o gen/gs.o gen/gh.o gen/uuidutil.o
-+libgen = gen/gb.o gen/gh.o gen/uuidutil.o
- libcore = core/chnl_sm.o core/msg_sm.o core/io_sm.o core/tiomap3430.o \
- 		core/tiomap3430_pwr.o core/tiomap_io.o \
- 		core/ue_deh.o core/wdt.o core/dsp-clock.o core/sync.o
-diff --git a/drivers/staging/tidspbridge/gen/gb.c b/drivers/staging/tidspbridge/gen/gb.c
-index 9f59023..3c0e04c 100644
---- a/drivers/staging/tidspbridge/gen/gb.c
-+++ b/drivers/staging/tidspbridge/gen/gb.c
-@@ -19,7 +19,6 @@
- /*  ----------------------------------- DSP/BIOS Bridge */
- #include <linux/types.h>
- /*  ----------------------------------- This */
--#include <dspbridge/gs.h>
- #include <dspbridge/gb.h>
- 
- struct gb_t_map {
-@@ -52,17 +51,17 @@ struct gb_t_map *gb_create(u32 len)
- {
- 	struct gb_t_map *map;
- 	u32 i;
--	map = (struct gb_t_map *)gs_alloc(sizeof(struct gb_t_map));
-+	map = kzalloc(sizeof(struct gb_t_map), GFP_KERNEL);
- 	if (map != NULL) {
- 		map->len = len;
- 		map->wcnt = len / BITS_PER_LONG + 1;
--		map->words = (u32 *) gs_alloc(map->wcnt * sizeof(u32));
-+		map->words = kzalloc(map->wcnt * sizeof(u32), GFP_KERNEL);
- 		if (map->words != NULL) {
- 			for (i = 0; i < map->wcnt; i++)
- 				map->words[i] = 0L;
- 
- 		} else {
--			gs_frees(map, sizeof(struct gb_t_map));
-+			kfree(map);
- 			map = NULL;
- 		}
- 	}
-@@ -78,8 +77,8 @@ struct gb_t_map *gb_create(u32 len)
- 
- void gb_delete(struct gb_t_map *map)
- {
--	gs_frees(map->words, map->wcnt * sizeof(u32));
--	gs_frees(map, sizeof(struct gb_t_map));
-+	kfree(map->words);
-+	kfree(map);
- }
- 
- /*
-diff --git a/drivers/staging/tidspbridge/gen/gh.c b/drivers/staging/tidspbridge/gen/gh.c
-index f72d943..cd72503 100644
---- a/drivers/staging/tidspbridge/gen/gh.c
-+++ b/drivers/staging/tidspbridge/gen/gh.c
-@@ -17,9 +17,6 @@
- #include <linux/types.h>
- 
- #include <dspbridge/host_os.h>
--
--#include <dspbridge/gs.h>
--
- #include <dspbridge/gh.h>
- 
- struct element {
-@@ -37,8 +34,6 @@ struct gh_t_hash_tab {
- };
- 
- static void noop(void *p);
--static s32 cur_init;
--static void myfree(void *ptr, s32 size);
- 
- /*
-  *  ======== gh_create ========
-@@ -51,8 +46,7 @@ struct gh_t_hash_tab *gh_create(u16 max_bucket, u16 val_size,
- {
- 	struct gh_t_hash_tab *hash_tab;
- 	u16 i;
--	hash_tab =
--	    (struct gh_t_hash_tab *)gs_alloc(sizeof(struct gh_t_hash_tab));
-+	hash_tab = kzalloc(sizeof(struct gh_t_hash_tab), GFP_KERNEL);
- 	if (hash_tab == NULL)
- 		return NULL;
- 	hash_tab->max_bucket = max_bucket;
-@@ -62,7 +56,7 @@ struct gh_t_hash_tab *gh_create(u16 max_bucket, u16 val_size,
- 	hash_tab->delete = delete == NULL ? noop : delete;
- 
- 	hash_tab->buckets = (struct element **)
--	    gs_alloc(sizeof(struct element *) * max_bucket);
-+	    kzalloc(sizeof(struct element *) * max_bucket, GFP_KERNEL);
- 	if (hash_tab->buckets == NULL) {
- 		gh_delete(hash_tab);
- 		return NULL;
-@@ -89,17 +83,14 @@ void gh_delete(struct gh_t_hash_tab *hash_tab)
- 				     elem = next) {
- 					next = elem->next;
- 					(*hash_tab->delete) (elem->data);
--					myfree(elem,
--					       sizeof(struct element) - 1 +
--					       hash_tab->val_size);
-+					kfree(elem);
- 				}
- 			}
- 
--			myfree(hash_tab->buckets, sizeof(struct element *)
--			       * hash_tab->max_bucket);
-+			kfree(hash_tab->buckets);
- 		}
- 
--		myfree(hash_tab, sizeof(struct gh_t_hash_tab));
-+		kfree(hash_tab);
- 	}
- }
- 
-@@ -109,9 +100,7 @@ void gh_delete(struct gh_t_hash_tab *hash_tab)
- 
- void gh_exit(void)
- {
--	if (cur_init-- == 1)
--		gs_exit();
--
-+	/* Do nothing */
- }
- 
- /*
-@@ -138,8 +127,7 @@ void *gh_find(struct gh_t_hash_tab *hash_tab, void *key)
- 
- void gh_init(void)
- {
--	if (cur_init++ == 0)
--		gs_init();
-+	/* Do nothing */
- }
- 
- /*
-@@ -152,8 +140,8 @@ void *gh_insert(struct gh_t_hash_tab *hash_tab, void *key, void *value)
- 	u16 i;
- 	char *src, *dst;
- 
--	elem = (struct element *)gs_alloc(sizeof(struct element) - 1 +
--					  hash_tab->val_size);
-+	elem = kzalloc(sizeof(struct element) - 1 + hash_tab->val_size,
-+			GFP_KERNEL);
- 	if (elem != NULL) {
- 
- 		dst = (char *)elem->data;
-@@ -180,14 +168,6 @@ static void noop(void *p)
- 	p = p;			/* stifle compiler warning */
- }
- 
--/*
-- *  ======== myfree ========
-- */
--static void myfree(void *ptr, s32 size)
--{
--	gs_free(ptr);
--}
--
- #ifdef CONFIG_TIDSPBRIDGE_BACKTRACE
- /**
-  * gh_iterate() - This function goes through all the elements in the hash table
-diff --git a/drivers/staging/tidspbridge/gen/gs.c b/drivers/staging/tidspbridge/gen/gs.c
-deleted file mode 100644
-index 8335bf5..0000000
---- a/drivers/staging/tidspbridge/gen/gs.c
-+++ /dev/null
-@@ -1,88 +0,0 @@
--/*
-- * gs.c
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * General storage memory allocator services.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#include <linux/types.h>
--/*  ----------------------------------- DSP/BIOS Bridge */
--#include <dspbridge/dbdefs.h>
--
--/*  ----------------------------------- This */
--#include <dspbridge/gs.h>
--
--#include <linux/slab.h>
--
--/*  ----------------------------------- Globals */
--static u32 cumsize;
--
--/*
-- *  ======== gs_alloc ========
-- *  purpose:
-- *      Allocates memory of the specified size.
-- */
--void *gs_alloc(u32 size)
--{
--	void *p;
--
--	p = kzalloc(size, GFP_KERNEL);
--	if (p == NULL)
--		return NULL;
--	cumsize += size;
--	return p;
--}
--
--/*
-- *  ======== gs_exit ========
-- *  purpose:
-- *      Discontinue the usage of the GS module.
-- */
--void gs_exit(void)
--{
--	/* Do nothing */
--}
--
--/*
-- *  ======== gs_free ========
-- *  purpose:
-- *      Frees the memory.
-- */
--void gs_free(void *ptr)
--{
--	kfree(ptr);
--	/* ack! no size info */
--	/* cumsize -= size; */
--}
--
--/*
-- *  ======== gs_frees ========
-- *  purpose:
-- *      Frees the memory.
-- */
--void gs_frees(void *ptr, u32 size)
--{
--	kfree(ptr);
--	cumsize -= size;
--}
--
--/*
-- *  ======== gs_init ========
-- *  purpose:
-- *      Initializes the GS module.
-- */
--void gs_init(void)
--{
--	/* Do nothing */
--}
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/gs.h b/drivers/staging/tidspbridge/include/dspbridge/gs.h
-deleted file mode 100644
-index f32d8d9..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/gs.h
-+++ /dev/null
-@@ -1,59 +0,0 @@
--/*
-- * gs.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Memory allocation/release wrappers.  This module allows clients to
-- * avoid OS spacific issues related to memory allocation.  It also provides
-- * simple diagnostic capabilities to assist in the detection of memory
-- * leaks.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef GS_
--#define GS_
--
--/*
-- *  ======== gs_alloc ========
-- *  Alloc size bytes of space.  Returns pointer to space
-- *  allocated, otherwise NULL.
-- */
--extern void *gs_alloc(u32 size);
--
--/*
-- *  ======== gs_exit ========
-- *  Module exit.  Do not change to "#define gs_init()"; in
-- *  some environments this operation must actually do some work!
-- */
--extern void gs_exit(void);
--
--/*
-- *  ======== gs_free ========
-- *  Free space allocated by gs_alloc() or GS_calloc().
-- */
--extern void gs_free(void *ptr);
--
--/*
-- *  ======== gs_frees ========
-- *  Free space allocated by gs_alloc() or GS_calloc() and assert that
-- *  the size of the allocation is size bytes.
-- */
--extern void gs_frees(void *ptr, u32 size);
--
--/*
-- *  ======== gs_init ========
-- *  Module initialization.  Do not change to "#define gs_init()"; in
-- *  some environments this operation must actually do some work!
-- */
--extern void gs_init(void);
--
--#endif /*GS_ */
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0008-staging-tidspbridge-remove-utildefs.patch b/patches/dspbridge/0008-staging-tidspbridge-remove-utildefs.patch
deleted file mode 100644
index 081b619dc592de431e8098a062b2f3a66c16eb6c..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0008-staging-tidspbridge-remove-utildefs.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From db2b369ad355755c1e3438f0490dd073c5040aca Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Sun, 21 Nov 2010 10:46:20 +0000
-Subject: [PATCH 08/25] staging: tidspbridge: remove utildefs
-
-Remove a header file that was not very useful to
-the dspbridge driver.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- .../tidspbridge/include/dspbridge/utildefs.h       |   39 --------------------
- drivers/staging/tidspbridge/pmgr/cmm.c             |    9 +----
- 2 files changed, 1 insertions(+), 47 deletions(-)
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/utildefs.h
-
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/utildefs.h b/drivers/staging/tidspbridge/include/dspbridge/utildefs.h
-deleted file mode 100644
-index 8fe5414..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/utildefs.h
-+++ /dev/null
-@@ -1,39 +0,0 @@
--/*
-- * utildefs.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Global UTIL constants and types, shared between DSP API and DSPSYS.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef UTILDEFS_
--#define UTILDEFS_
--
--/* constants taken from configmg.h */
--#define UTIL_MAXMEMREGS     9
--#define UTIL_MAXIOPORTS     20
--#define UTIL_MAXIRQS        7
--#define UTIL_MAXDMACHNLS    7
--
--/* misc. constants */
--#define UTIL_MAXARGVS       10
--
--/* Platform specific important info */
--struct util_sysinfo {
--	/* Granularity of page protection; usually 1k or 4k */
--	u32 dw_page_size;
--	u32 dw_allocation_granularity;	/* VM granularity, usually 64K */
--	u32 dw_number_of_processors;	/* Used as sanity check */
--};
--
--#endif /* UTILDEFS_ */
-diff --git a/drivers/staging/tidspbridge/pmgr/cmm.c b/drivers/staging/tidspbridge/pmgr/cmm.c
-index 93a7c4f..8dbdd20 100644
---- a/drivers/staging/tidspbridge/pmgr/cmm.c
-+++ b/drivers/staging/tidspbridge/pmgr/cmm.c
-@@ -40,7 +40,6 @@
- /*  ----------------------------------- OS Adaptation Layer */
- #include <dspbridge/list.h>
- #include <dspbridge/sync.h>
--#include <dspbridge/utildefs.h>
- 
- /*  ----------------------------------- Platform Manager */
- #include <dspbridge/dev.h>
-@@ -245,7 +244,6 @@ int cmm_create(struct cmm_object **ph_cmm_mgr,
- {
- 	struct cmm_object *cmm_obj = NULL;
- 	int status = 0;
--	struct util_sysinfo sys_info;
- 
- 	DBC_REQUIRE(refs > 0);
- 	DBC_REQUIRE(ph_cmm_mgr != NULL);
-@@ -261,12 +259,7 @@ int cmm_create(struct cmm_object **ph_cmm_mgr,
- 		DBC_ASSERT(mgr_attrts->ul_min_block_size >= 4);
- 		/* save away smallest block allocation for this cmm mgr */
- 		cmm_obj->ul_min_block_size = mgr_attrts->ul_min_block_size;
--		/* save away the systems memory page size */
--		sys_info.dw_page_size = PAGE_SIZE;
--		sys_info.dw_allocation_granularity = PAGE_SIZE;
--		sys_info.dw_number_of_processors = 1;
--
--		cmm_obj->dw_page_size = sys_info.dw_page_size;
-+		cmm_obj->dw_page_size = PAGE_SIZE;
- 
- 		/* Note: DSP SM seg table(aDSPSMSegTab[]) zero'd by
- 		 * MEM_ALLOC_OBJECT */
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0009-staging-tidspbridge-switch-to-linux-bitmap-API.patch b/patches/dspbridge/0009-staging-tidspbridge-switch-to-linux-bitmap-API.patch
deleted file mode 100644
index 45fa8802d7b8afeba5992451c8291258a9c79282..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0009-staging-tidspbridge-switch-to-linux-bitmap-API.patch
+++ /dev/null
@@ -1,302 +0,0 @@
-From 46b167e5cb99f197ced91effa7c5fe4bc5eb15e8 Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Sun, 21 Nov 2010 10:46:21 +0000
-Subject: [PATCH 09/25] staging: tidspbridge: switch to linux bitmap API
-
-Replace the tidspbridge generic bitmap operations
-with the linux standard bitmap implementation.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/rmgr/node.c |  166 ++++++++++++++-----------------
- 1 files changed, 74 insertions(+), 92 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/rmgr/node.c b/drivers/staging/tidspbridge/rmgr/node.c
-index 1562f3c..ab35806 100644
---- a/drivers/staging/tidspbridge/rmgr/node.c
-+++ b/drivers/staging/tidspbridge/rmgr/node.c
-@@ -17,6 +17,7 @@
-  */
- 
- #include <linux/types.h>
-+#include <linux/bitmap.h>
- /*  ----------------------------------- Host OS */
- #include <dspbridge/host_os.h>
- 
-@@ -50,7 +51,6 @@
- #include <dspbridge/dspioctl.h>
- 
- /*  ----------------------------------- Others */
--#include <dspbridge/gb.h>
- #include <dspbridge/uuidutil.h>
- 
- /*  ----------------------------------- This */
-@@ -132,11 +132,14 @@ struct node_mgr {
- 	struct lst_list *node_list;	/* List of all allocated nodes */
- 	u32 num_nodes;		/* Number of nodes in node_list */
- 	u32 num_created;	/* Number of nodes *created* on DSP */
--	struct gb_t_map *pipe_map;	/* Pipe connection bit map */
--	struct gb_t_map *pipe_done_map;	/* Pipes that are half free */
--	struct gb_t_map *chnl_map;	/* Channel allocation bit map */
--	struct gb_t_map *dma_chnl_map;	/* DMA Channel allocation bit map */
--	struct gb_t_map *zc_chnl_map;	/* Zero-Copy Channel alloc bit map */
-+	DECLARE_BITMAP(pipe_map, MAXPIPES); /* Pipe connection bitmap */
-+	DECLARE_BITMAP(pipe_done_map, MAXPIPES); /* Pipes that are half free */
-+	/* Channel allocation bitmap */
-+	DECLARE_BITMAP(chnl_map, CHNL_MAXCHANNELS);
-+	/* DMA Channel allocation bitmap */
-+	DECLARE_BITMAP(dma_chnl_map, CHNL_MAXCHANNELS);
-+	/* Zero-Copy Channel alloc bitmap */
-+	DECLARE_BITMAP(zc_chnl_map, CHNL_MAXCHANNELS);
- 	struct ntfy_object *ntfy_obj;	/* Manages registered notifications */
- 	struct mutex node_mgr_lock;	/* For critical sections */
- 	u32 ul_fxn_addrs[NUMRMSFXNS];	/* RMS function addresses */
-@@ -847,8 +850,8 @@ int node_connect(struct node_object *node1, u32 stream1,
- 	struct node_object *dev_node_obj;
- 	struct node_object *hnode;
- 	struct stream_chnl *pstream;
--	u32 pipe_id = GB_NOBITS;
--	u32 chnl_id = GB_NOBITS;
-+	u32 pipe_id;
-+	u32 chnl_id;
- 	s8 chnl_mode;
- 	u32 dw_length;
- 	int status = 0;
-@@ -951,10 +954,11 @@ int node_connect(struct node_object *node1, u32 stream1,
- 				      && (node2_type == NODE_TASK
- 					  || node2_type == NODE_DAISSOCKET))) {
- 		/* Find available pipe */
--		pipe_id = gb_findandset(hnode_mgr->pipe_map);
--		if (pipe_id == GB_NOBITS) {
-+		pipe_id = find_first_zero_bit(hnode_mgr->pipe_map, MAXPIPES);
-+		if (pipe_id == MAXPIPES) {
- 			status = -ECONNREFUSED;
- 		} else {
-+			set_bit(pipe_id, hnode_mgr->pipe_map);
- 			node1->outputs[stream1].type = NODECONNECT;
- 			node2->inputs[stream2].type = NODECONNECT;
- 			node1->outputs[stream1].dev_id = pipe_id;
-@@ -971,7 +975,7 @@ int node_connect(struct node_object *node1, u32 stream1,
- 
- 				output->sz_device = NULL;
- 				input->sz_device = NULL;
--				gb_clear(hnode_mgr->pipe_map, pipe_id);
-+				clear_bit(pipe_id, hnode_mgr->pipe_map);
- 				status = -ENOMEM;
- 			} else {
- 				/* Copy "/dbpipe<pipId>" name to device names */
-@@ -996,34 +1000,47 @@ int node_connect(struct node_object *node1, u32 stream1,
- 		 *  called for this node. */
- 		if (pattrs) {
- 			if (pattrs->strm_mode == STRMMODE_RDMA) {
--				chnl_id =
--				    gb_findandset(hnode_mgr->dma_chnl_map);
-+				chnl_id = find_first_zero_bit(
-+						hnode_mgr->dma_chnl_map,
-+						CHNL_MAXCHANNELS);
- 				/* dma chans are 2nd transport chnl set
- 				 * ids(e.g. 16-31) */
--				(chnl_id != GB_NOBITS) ?
--				    (chnl_id =
--				     chnl_id +
--				     hnode_mgr->ul_num_chnls) : chnl_id;
-+				if (chnl_id != CHNL_MAXCHANNELS) {
-+					set_bit(chnl_id,
-+						hnode_mgr->dma_chnl_map);
-+					chnl_id = chnl_id +
-+						hnode_mgr->ul_num_chnls;
-+				}
- 			} else if (pattrs->strm_mode == STRMMODE_ZEROCOPY) {
--				chnl_id = gb_findandset(hnode_mgr->zc_chnl_map);
-+				chnl_id = find_first_zero_bit(
-+						hnode_mgr->zc_chnl_map,
-+						CHNL_MAXCHANNELS);
- 				/* zero-copy chans are 3nd transport set
- 				 * (e.g. 32-47) */
--				(chnl_id != GB_NOBITS) ? (chnl_id = chnl_id +
--							  (2 *
--							   hnode_mgr->
--							   ul_num_chnls))
--				    : chnl_id;
-+				if (chnl_id != CHNL_MAXCHANNELS) {
-+					set_bit(chnl_id,
-+						hnode_mgr->zc_chnl_map);
-+					chnl_id = chnl_id +
-+						(2 * hnode_mgr->ul_num_chnls);
-+				}
- 			} else {	/* must be PROCCOPY */
- 				DBC_ASSERT(pattrs->strm_mode ==
- 					   STRMMODE_PROCCOPY);
--				chnl_id = gb_findandset(hnode_mgr->chnl_map);
-+				chnl_id = find_first_zero_bit(
-+						hnode_mgr->chnl_map,
-+						CHNL_MAXCHANNELS);
- 				/* e.g. 0-15 */
-+				if (chnl_id != CHNL_MAXCHANNELS)
-+					set_bit(chnl_id, hnode_mgr->chnl_map);
- 			}
- 		} else {
- 			/* default to PROCCOPY */
--			chnl_id = gb_findandset(hnode_mgr->chnl_map);
-+			chnl_id = find_first_zero_bit(hnode_mgr->chnl_map,
-+					CHNL_MAXCHANNELS);
-+			if (chnl_id != CHNL_MAXCHANNELS)
-+				set_bit(chnl_id, hnode_mgr->chnl_map);
- 		}
--		if (chnl_id == GB_NOBITS) {
-+		if (chnl_id == CHNL_MAXCHANNELS) {
- 			status = -ECONNREFUSED;
- 			goto func_cont2;
- 		}
-@@ -1033,18 +1050,19 @@ int node_connect(struct node_object *node1, u32 stream1,
- 
- 		if (pattrs) {
- 			if (pattrs->strm_mode == STRMMODE_RDMA) {
--				gb_clear(hnode_mgr->dma_chnl_map, chnl_id -
--					 hnode_mgr->ul_num_chnls);
-+				clear_bit(chnl_id - hnode_mgr->ul_num_chnls,
-+						hnode_mgr->dma_chnl_map);
- 			} else if (pattrs->strm_mode == STRMMODE_ZEROCOPY) {
--				gb_clear(hnode_mgr->zc_chnl_map, chnl_id -
--					 (2 * hnode_mgr->ul_num_chnls));
-+				clear_bit(chnl_id -
-+						(2 * hnode_mgr->ul_num_chnls),
-+						hnode_mgr->zc_chnl_map);
- 			} else {
- 				DBC_ASSERT(pattrs->strm_mode ==
- 					   STRMMODE_PROCCOPY);
--				gb_clear(hnode_mgr->chnl_map, chnl_id);
-+				clear_bit(chnl_id, hnode_mgr->chnl_map);
- 			}
- 		} else {
--			gb_clear(hnode_mgr->chnl_map, chnl_id);
-+			clear_bit(chnl_id, hnode_mgr->chnl_map);
- 		}
- 		status = -ENOMEM;
- func_cont2:
-@@ -1321,22 +1339,14 @@ int node_create_mgr(struct node_mgr **node_man,
- 	if (node_mgr_obj) {
- 		node_mgr_obj->hdev_obj = hdev_obj;
- 		node_mgr_obj->node_list = kzalloc(sizeof(struct lst_list),
--							GFP_KERNEL);
--		node_mgr_obj->pipe_map = gb_create(MAXPIPES);
--		node_mgr_obj->pipe_done_map = gb_create(MAXPIPES);
--		if (node_mgr_obj->node_list == NULL
--		    || node_mgr_obj->pipe_map == NULL
--		    || node_mgr_obj->pipe_done_map == NULL) {
--			status = -ENOMEM;
--		} else {
--			INIT_LIST_HEAD(&node_mgr_obj->node_list->head);
--			node_mgr_obj->ntfy_obj = kmalloc(
-+				GFP_KERNEL);
-+		INIT_LIST_HEAD(&node_mgr_obj->node_list->head);
-+		node_mgr_obj->ntfy_obj = kmalloc(
- 				sizeof(struct ntfy_object), GFP_KERNEL);
--			if (node_mgr_obj->ntfy_obj)
--				ntfy_init(node_mgr_obj->ntfy_obj);
--			else
--				status = -ENOMEM;
--		}
-+		if (node_mgr_obj->ntfy_obj)
-+			ntfy_init(node_mgr_obj->ntfy_obj);
-+		else
-+			status = -ENOMEM;
- 		node_mgr_obj->num_created = 0;
- 	} else {
- 		status = -ENOMEM;
-@@ -1372,27 +1382,14 @@ int node_create_mgr(struct node_mgr **node_man,
- 		/* Get msg_ctrl queue manager */
- 		dev_get_msg_mgr(hdev_obj, &node_mgr_obj->msg_mgr_obj);
- 		mutex_init(&node_mgr_obj->node_mgr_lock);
--		node_mgr_obj->chnl_map = gb_create(node_mgr_obj->ul_num_chnls);
--		/* dma chnl map. ul_num_chnls is # per transport */
--		node_mgr_obj->dma_chnl_map =
--		    gb_create(node_mgr_obj->ul_num_chnls);
--		node_mgr_obj->zc_chnl_map =
--		    gb_create(node_mgr_obj->ul_num_chnls);
--		if ((node_mgr_obj->chnl_map == NULL)
--		    || (node_mgr_obj->dma_chnl_map == NULL)
--		    || (node_mgr_obj->zc_chnl_map == NULL)) {
--			status = -ENOMEM;
--		} else {
--			/* Block out reserved channels */
--			for (i = 0; i < node_mgr_obj->ul_chnl_offset; i++)
--				gb_set(node_mgr_obj->chnl_map, i);
-+		/* Block out reserved channels */
-+		for (i = 0; i < node_mgr_obj->ul_chnl_offset; i++)
-+			set_bit(i, node_mgr_obj->chnl_map);
- 
--			/* Block out channels reserved for RMS */
--			gb_set(node_mgr_obj->chnl_map,
--			       node_mgr_obj->ul_chnl_offset);
--			gb_set(node_mgr_obj->chnl_map,
--			       node_mgr_obj->ul_chnl_offset + 1);
--		}
-+		/* Block out channels reserved for RMS */
-+		set_bit(node_mgr_obj->ul_chnl_offset, node_mgr_obj->chnl_map);
-+		set_bit(node_mgr_obj->ul_chnl_offset + 1,
-+				node_mgr_obj->chnl_map);
- 	}
- 	if (!status) {
- 		/* NO RM Server on the IVA */
-@@ -2657,21 +2654,6 @@ static void delete_node_mgr(struct node_mgr *hnode_mgr)
- 			kfree(hnode_mgr->ntfy_obj);
- 		}
- 
--		if (hnode_mgr->pipe_map)
--			gb_delete(hnode_mgr->pipe_map);
--
--		if (hnode_mgr->pipe_done_map)
--			gb_delete(hnode_mgr->pipe_done_map);
--
--		if (hnode_mgr->chnl_map)
--			gb_delete(hnode_mgr->chnl_map);
--
--		if (hnode_mgr->dma_chnl_map)
--			gb_delete(hnode_mgr->dma_chnl_map);
--
--		if (hnode_mgr->zc_chnl_map)
--			gb_delete(hnode_mgr->zc_chnl_map);
--
- 		if (hnode_mgr->disp_obj)
- 			disp_delete(hnode_mgr->disp_obj);
- 
-@@ -2786,25 +2768,25 @@ static void free_stream(struct node_mgr *hnode_mgr, struct stream_chnl stream)
- {
- 	/* Free up the pipe id unless other node has not yet been deleted. */
- 	if (stream.type == NODECONNECT) {
--		if (gb_test(hnode_mgr->pipe_done_map, stream.dev_id)) {
-+		if (test_bit(stream.dev_id, hnode_mgr->pipe_done_map)) {
- 			/* The other node has already been deleted */
--			gb_clear(hnode_mgr->pipe_done_map, stream.dev_id);
--			gb_clear(hnode_mgr->pipe_map, stream.dev_id);
-+			clear_bit(stream.dev_id, hnode_mgr->pipe_done_map);
-+			clear_bit(stream.dev_id, hnode_mgr->pipe_map);
- 		} else {
- 			/* The other node has not been deleted yet */
--			gb_set(hnode_mgr->pipe_done_map, stream.dev_id);
-+			set_bit(stream.dev_id, hnode_mgr->pipe_done_map);
- 		}
- 	} else if (stream.type == HOSTCONNECT) {
- 		if (stream.dev_id < hnode_mgr->ul_num_chnls) {
--			gb_clear(hnode_mgr->chnl_map, stream.dev_id);
-+			clear_bit(stream.dev_id, hnode_mgr->chnl_map);
- 		} else if (stream.dev_id < (2 * hnode_mgr->ul_num_chnls)) {
- 			/* dsp-dma */
--			gb_clear(hnode_mgr->dma_chnl_map, stream.dev_id -
--				 (1 * hnode_mgr->ul_num_chnls));
-+			clear_bit(stream.dev_id - (1 * hnode_mgr->ul_num_chnls),
-+					hnode_mgr->dma_chnl_map);
- 		} else if (stream.dev_id < (3 * hnode_mgr->ul_num_chnls)) {
- 			/* zero-copy */
--			gb_clear(hnode_mgr->zc_chnl_map, stream.dev_id -
--				 (2 * hnode_mgr->ul_num_chnls));
-+			clear_bit(stream.dev_id - (2 * hnode_mgr->ul_num_chnls),
-+					hnode_mgr->zc_chnl_map);
- 		}
- 	}
- }
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0010-staging-tidspbridge-remove-gb-bitmap-implementation.patch b/patches/dspbridge/0010-staging-tidspbridge-remove-gb-bitmap-implementation.patch
deleted file mode 100644
index 18416f61f7312b5f5954e2faeae0b23dd3982959..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0010-staging-tidspbridge-remove-gb-bitmap-implementation.patch
+++ /dev/null
@@ -1,290 +0,0 @@
-From 8b20e71c83bf813b17a62ef4637a7373d15a2dbb Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Sun, 21 Nov 2010 10:46:22 +0000
-Subject: [PATCH 10/25] staging: tidspbridge: remove gb bitmap implementation
-
-Now that all users of gb have been converted to the
-standard linux bitmap API, we can remove it from the
-gen library.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/Makefile               |    2 +-
- drivers/staging/tidspbridge/gen/gb.c               |  165 --------------------
- drivers/staging/tidspbridge/include/dspbridge/gb.h |   79 ----------
- 3 files changed, 1 insertions(+), 245 deletions(-)
- delete mode 100644 drivers/staging/tidspbridge/gen/gb.c
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/gb.h
-
-diff --git a/drivers/staging/tidspbridge/Makefile b/drivers/staging/tidspbridge/Makefile
-index 648e392..fd6a276 100644
---- a/drivers/staging/tidspbridge/Makefile
-+++ b/drivers/staging/tidspbridge/Makefile
-@@ -1,6 +1,6 @@
- obj-$(CONFIG_TIDSPBRIDGE)	+= bridgedriver.o
- 
--libgen = gen/gb.o gen/gh.o gen/uuidutil.o
-+libgen = gen/gh.o gen/uuidutil.o
- libcore = core/chnl_sm.o core/msg_sm.o core/io_sm.o core/tiomap3430.o \
- 		core/tiomap3430_pwr.o core/tiomap_io.o \
- 		core/ue_deh.o core/wdt.o core/dsp-clock.o core/sync.o
-diff --git a/drivers/staging/tidspbridge/gen/gb.c b/drivers/staging/tidspbridge/gen/gb.c
-deleted file mode 100644
-index 3c0e04c..0000000
---- a/drivers/staging/tidspbridge/gen/gb.c
-+++ /dev/null
-@@ -1,165 +0,0 @@
--/*
-- * gb.c
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Generic bitmap operations.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--/*  ----------------------------------- DSP/BIOS Bridge */
--#include <linux/types.h>
--/*  ----------------------------------- This */
--#include <dspbridge/gb.h>
--
--struct gb_t_map {
--	u32 len;
--	u32 wcnt;
--	u32 *words;
--};
--
--/*
-- *  ======== gb_clear ========
-- *  purpose:
-- *      Clears a bit in the bit map.
-- */
--
--void gb_clear(struct gb_t_map *map, u32 bitn)
--{
--	u32 mask;
--
--	mask = 1L << (bitn % BITS_PER_LONG);
--	map->words[bitn / BITS_PER_LONG] &= ~mask;
--}
--
--/*
-- *  ======== gb_create ========
-- *  purpose:
-- *      Creates a bit map.
-- */
--
--struct gb_t_map *gb_create(u32 len)
--{
--	struct gb_t_map *map;
--	u32 i;
--	map = kzalloc(sizeof(struct gb_t_map), GFP_KERNEL);
--	if (map != NULL) {
--		map->len = len;
--		map->wcnt = len / BITS_PER_LONG + 1;
--		map->words = kzalloc(map->wcnt * sizeof(u32), GFP_KERNEL);
--		if (map->words != NULL) {
--			for (i = 0; i < map->wcnt; i++)
--				map->words[i] = 0L;
--
--		} else {
--			kfree(map);
--			map = NULL;
--		}
--	}
--
--	return map;
--}
--
--/*
-- *  ======== gb_delete ========
-- *  purpose:
-- *      Frees a bit map.
-- */
--
--void gb_delete(struct gb_t_map *map)
--{
--	kfree(map->words);
--	kfree(map);
--}
--
--/*
-- *  ======== gb_findandset ========
-- *  purpose:
-- *      Finds a free bit and sets it.
-- */
--u32 gb_findandset(struct gb_t_map *map)
--{
--	u32 bitn;
--
--	bitn = gb_minclear(map);
--
--	if (bitn != GB_NOBITS)
--		gb_set(map, bitn);
--
--	return bitn;
--}
--
--/*
-- *  ======== gb_minclear ========
-- *  purpose:
-- *      returns the location of the first unset bit in the bit map.
-- */
--u32 gb_minclear(struct gb_t_map *map)
--{
--	u32 bit_location = 0;
--	u32 bit_acc = 0;
--	u32 i;
--	u32 bit;
--	u32 *word;
--
--	for (word = map->words, i = 0; i < map->wcnt; word++, i++) {
--		if (~*word) {
--			for (bit = 0; bit < BITS_PER_LONG; bit++, bit_acc++) {
--				if (bit_acc == map->len)
--					return GB_NOBITS;
--
--				if (~*word & (1L << bit)) {
--					bit_location = i * BITS_PER_LONG + bit;
--					return bit_location;
--				}
--
--			}
--		} else {
--			bit_acc += BITS_PER_LONG;
--		}
--	}
--
--	return GB_NOBITS;
--}
--
--/*
-- *  ======== gb_set ========
-- *  purpose:
-- *      Sets a bit in the bit map.
-- */
--
--void gb_set(struct gb_t_map *map, u32 bitn)
--{
--	u32 mask;
--
--	mask = 1L << (bitn % BITS_PER_LONG);
--	map->words[bitn / BITS_PER_LONG] |= mask;
--}
--
--/*
-- *  ======== gb_test ========
-- *  purpose:
-- *      Returns true if the bit is set in the specified location.
-- */
--
--bool gb_test(struct gb_t_map *map, u32 bitn)
--{
--	bool state;
--	u32 mask;
--	u32 word;
--
--	mask = 1L << (bitn % BITS_PER_LONG);
--	word = map->words[bitn / BITS_PER_LONG];
--	state = word & mask ? true : false;
--
--	return state;
--}
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/gb.h b/drivers/staging/tidspbridge/include/dspbridge/gb.h
-deleted file mode 100644
-index fda783a..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/gb.h
-+++ /dev/null
-@@ -1,79 +0,0 @@
--/*
-- * gb.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Generic bitmap manager.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef GB_
--#define GB_
--
--#define GB_NOBITS (~0)
--#include <dspbridge/host_os.h>
--
--struct gb_t_map;
--
--/*
-- *  ======== gb_clear ========
-- *  Clear the bit in position bitn in the bitmap map.  Bit positions are
-- *  zero based.
-- */
--
--extern void gb_clear(struct gb_t_map *map, u32 bitn);
--
--/*
-- *  ======== gb_create ========
-- *  Create a bit map with len bits.  Initially all bits are cleared.
-- */
--
--extern struct gb_t_map *gb_create(u32 len);
--
--/*
-- *  ======== gb_delete ========
-- *  Delete previously created bit map
-- */
--
--extern void gb_delete(struct gb_t_map *map);
--
--/*
-- *  ======== gb_findandset ========
-- *  Finds a clear bit, sets it, and returns the position
-- */
--
--extern u32 gb_findandset(struct gb_t_map *map);
--
--/*
-- *  ======== gb_minclear ========
-- *  gb_minclear returns the minimum clear bit position.  If no bit is
-- *  clear, gb_minclear returns -1.
-- */
--extern u32 gb_minclear(struct gb_t_map *map);
--
--/*
-- *  ======== gb_set ========
-- *  Set the bit in position bitn in the bitmap map.  Bit positions are
-- *  zero based.
-- */
--
--extern void gb_set(struct gb_t_map *map, u32 bitn);
--
--/*
-- *  ======== gb_test ========
-- *  Returns TRUE if the bit in position bitn is set in map; otherwise
-- *  gb_test returns FALSE.  Bit positions are zero based.
-- */
--
--extern bool gb_test(struct gb_t_map *map, u32 bitn);
--
--#endif /*GB_ */
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0011-staging-tidspbridge-convert-core-to-list_head.patch b/patches/dspbridge/0011-staging-tidspbridge-convert-core-to-list_head.patch
deleted file mode 100644
index 252c94fe16cf906373c76423d7fdad127ea19d11..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0011-staging-tidspbridge-convert-core-to-list_head.patch
+++ /dev/null
@@ -1,1199 +0,0 @@
-From 68fdb3c793591e3fdcf513b32daff725d1306114 Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Sun, 21 Nov 2010 10:46:24 +0000
-Subject: [PATCH 11/25] staging: tidspbridge: convert core to list_head
-
-Convert the core module of the tidspbridge driver
-to use struct list_head instead of struct lst_list.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/core/_msg_sm.h         |   12 +-
- drivers/staging/tidspbridge/core/chnl_sm.c         |  245 +++++++++-----------
- drivers/staging/tidspbridge/core/io_sm.c           |  142 +++++-------
- drivers/staging/tidspbridge/core/msg_sm.c          |  236 +++++++------------
- .../tidspbridge/include/dspbridge/_chnl_sm.h       |    8 +-
- .../tidspbridge/include/dspbridge/cmmdefs.h        |    1 -
- .../staging/tidspbridge/include/dspbridge/sync.h   |    1 +
- 7 files changed, 264 insertions(+), 381 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/core/_msg_sm.h b/drivers/staging/tidspbridge/core/_msg_sm.h
-index 556de5c..b78d1a6 100644
---- a/drivers/staging/tidspbridge/core/_msg_sm.h
-+++ b/drivers/staging/tidspbridge/core/_msg_sm.h
-@@ -20,7 +20,7 @@
- #ifndef _MSG_SM_
- #define _MSG_SM_
- 
--#include <dspbridge/list.h>
-+#include <linux/list.h>
- #include <dspbridge/msgdefs.h>
- 
- /*
-@@ -86,12 +86,12 @@ struct msg_mgr {
- 	struct bridge_drv_interface *intf_fxns;
- 
- 	struct io_mgr *hio_mgr;	/* IO manager */
--	struct lst_list *queue_list;	/* List of MSG_QUEUEs */
-+	struct list_head queue_list;	/* List of MSG_QUEUEs */
- 	spinlock_t msg_mgr_lock;	/* For critical sections */
- 	/* Signalled when MsgFrame is available */
- 	struct sync_object *sync_event;
--	struct lst_list *msg_free_list;	/* Free MsgFrames ready to be filled */
--	struct lst_list *msg_used_list;	/* MsgFrames ready to go to DSP */
-+	struct list_head msg_free_list;	/* Free MsgFrames ready to be filled */
-+	struct list_head msg_used_list;	/* MsgFrames ready to go to DSP */
- 	u32 msgs_pending;	/* # of queued messages to go to DSP */
- 	u32 max_msgs;		/* Max # of msgs that fit in buffer */
- 	msg_onexit on_exit;	/* called when RMS_EXIT is received */
-@@ -111,9 +111,9 @@ struct msg_queue {
- 	struct msg_mgr *hmsg_mgr;
- 	u32 max_msgs;		/* Node message depth */
- 	u32 msgq_id;		/* Node environment pointer */
--	struct lst_list *msg_free_list;	/* Free MsgFrames ready to be filled */
-+	struct list_head msg_free_list;	/* Free MsgFrames ready to be filled */
- 	/* Filled MsgFramess waiting to be read */
--	struct lst_list *msg_used_list;
-+	struct list_head msg_used_list;
- 	void *arg;		/* Handle passed to mgr on_exit callback */
- 	struct sync_object *sync_event;	/* Signalled when message is ready */
- 	struct sync_object *sync_done;	/* For synchronizing cleanup */
-diff --git a/drivers/staging/tidspbridge/core/chnl_sm.c b/drivers/staging/tidspbridge/core/chnl_sm.c
-index 662a5b5..f955036 100644
---- a/drivers/staging/tidspbridge/core/chnl_sm.c
-+++ b/drivers/staging/tidspbridge/core/chnl_sm.c
-@@ -37,9 +37,9 @@
-  *      which may cause timeouts and/or failure offunction sync_wait_on_event.
-  *      This invariant condition is:
-  *
-- *          LST_Empty(pchnl->pio_completions) ==> pchnl->sync_event is reset
-+ *          list_empty(&pchnl->pio_completions) ==> pchnl->sync_event is reset
-  *      and
-- *          !LST_Empty(pchnl->pio_completions) ==> pchnl->sync_event is set.
-+ *          !list_empty(&pchnl->pio_completions) ==> pchnl->sync_event is set.
-  */
- 
- #include <linux/types.h>
-@@ -73,11 +73,9 @@
- #define MAILBOX_IRQ INT_MAIL_MPU_IRQ
- 
- /*  ----------------------------------- Function Prototypes */
--static struct lst_list *create_chirp_list(u32 chirps);
-+static int create_chirp_list(struct list_head *list, u32 chirps);
- 
--static void free_chirp_list(struct lst_list *chirp_list);
--
--static struct chnl_irp *make_new_chirp(void);
-+static void free_chirp_list(struct list_head *list);
- 
- static int search_free_channel(struct chnl_mgr *chnl_mgr_obj,
- 				      u32 *chnl);
-@@ -179,10 +177,14 @@ func_cont:
- 	}
- 	if (!status) {
- 		/* Get a free chirp: */
--		chnl_packet_obj =
--		    (struct chnl_irp *)lst_get_head(pchnl->free_packets_list);
--		if (chnl_packet_obj == NULL)
-+		if (!list_empty(&pchnl->free_packets_list)) {
-+			chnl_packet_obj = list_first_entry(
-+					&pchnl->free_packets_list,
-+					struct chnl_irp, link);
-+			list_del(&chnl_packet_obj->link);
-+		} else {
- 			status = -EIO;
-+		}
- 
- 	}
- 	if (!status) {
-@@ -206,8 +208,7 @@ func_cont:
- 		chnl_packet_obj->dw_arg = dw_arg;
- 		chnl_packet_obj->status = (is_eos ? CHNL_IOCSTATEOS :
- 					   CHNL_IOCSTATCOMPLETE);
--		lst_put_tail(pchnl->pio_requests,
--			     (struct list_head *)chnl_packet_obj);
-+		list_add_tail(&chnl_packet_obj->link, &pchnl->pio_requests);
- 		pchnl->cio_reqs++;
- 		DBC_ASSERT(pchnl->cio_reqs <= pchnl->chnl_packets);
- 		/*
-@@ -254,7 +255,7 @@ int bridge_chnl_cancel_io(struct chnl_object *chnl_obj)
- 	struct chnl_object *pchnl = (struct chnl_object *)chnl_obj;
- 	u32 chnl_id = -1;
- 	s8 chnl_mode;
--	struct chnl_irp *chnl_packet_obj;
-+	struct chnl_irp *chirp, *tmp;
- 	struct chnl_mgr *chnl_mgr_obj = NULL;
- 
- 	/* Check args: */
-@@ -272,7 +273,7 @@ int bridge_chnl_cancel_io(struct chnl_object *chnl_obj)
- 	 *  IORequests or dispatching. */
- 	spin_lock_bh(&chnl_mgr_obj->chnl_mgr_lock);
- 	pchnl->dw_state |= CHNL_STATECANCEL;
--	if (LST_IS_EMPTY(pchnl->pio_requests))
-+	if (list_empty(&pchnl->pio_requests))
- 		goto func_cont;
- 
- 	if (pchnl->chnl_type == CHNL_PCPY) {
-@@ -286,18 +287,14 @@ int bridge_chnl_cancel_io(struct chnl_object *chnl_obj)
- 		}
- 	}
- 	/* Move all IOR's to IOC queue: */
--	while (!LST_IS_EMPTY(pchnl->pio_requests)) {
--		chnl_packet_obj =
--		    (struct chnl_irp *)lst_get_head(pchnl->pio_requests);
--		if (chnl_packet_obj) {
--			chnl_packet_obj->byte_size = 0;
--			chnl_packet_obj->status |= CHNL_IOCSTATCANCEL;
--			lst_put_tail(pchnl->pio_completions,
--				     (struct list_head *)chnl_packet_obj);
--			pchnl->cio_cs++;
--			pchnl->cio_reqs--;
--			DBC_ASSERT(pchnl->cio_reqs >= 0);
--		}
-+	list_for_each_entry_safe(chirp, tmp, &pchnl->pio_requests, link) {
-+		list_del(&chirp->link);
-+		chirp->byte_size = 0;
-+		chirp->status |= CHNL_IOCSTATCANCEL;
-+		list_add_tail(&chirp->link, &pchnl->pio_completions);
-+		pchnl->cio_cs++;
-+		pchnl->cio_reqs--;
-+		DBC_ASSERT(pchnl->cio_reqs >= 0);
- 	}
- func_cont:
- 	spin_unlock_bh(&chnl_mgr_obj->chnl_mgr_lock);
-@@ -353,20 +350,14 @@ func_cont:
- 			pchnl->sync_event = NULL;
- 		}
- 		/* Free I/O request and I/O completion queues: */
--		if (pchnl->pio_completions) {
--			free_chirp_list(pchnl->pio_completions);
--			pchnl->pio_completions = NULL;
--			pchnl->cio_cs = 0;
--		}
--		if (pchnl->pio_requests) {
--			free_chirp_list(pchnl->pio_requests);
--			pchnl->pio_requests = NULL;
--			pchnl->cio_reqs = 0;
--		}
--		if (pchnl->free_packets_list) {
--			free_chirp_list(pchnl->free_packets_list);
--			pchnl->free_packets_list = NULL;
--		}
-+		free_chirp_list(&pchnl->pio_completions);
-+		pchnl->cio_cs = 0;
-+
-+		free_chirp_list(&pchnl->pio_requests);
-+		pchnl->cio_reqs = 0;
-+
-+		free_chirp_list(&pchnl->free_packets_list);
-+
- 		/* Release channel object. */
- 		kfree(pchnl);
- 		pchnl = NULL;
-@@ -505,7 +496,7 @@ int bridge_chnl_flush_io(struct chnl_object *chnl_obj, u32 timeout)
- 		    && (pchnl->chnl_type == CHNL_PCPY)) {
- 			/* Wait for IO completions, up to the specified
- 			 * timeout: */
--			while (!LST_IS_EMPTY(pchnl->pio_requests) && !status) {
-+			while (!list_empty(&pchnl->pio_requests) && !status) {
- 				status = bridge_chnl_get_ioc(chnl_obj,
- 						timeout, &chnl_ioc_obj);
- 				if (status)
-@@ -521,7 +512,7 @@ int bridge_chnl_flush_io(struct chnl_object *chnl_obj, u32 timeout)
- 			pchnl->dw_state &= ~CHNL_STATECANCEL;
- 		}
- 	}
--	DBC_ENSURE(status || LST_IS_EMPTY(pchnl->pio_requests));
-+	DBC_ENSURE(status || list_empty(&pchnl->pio_requests));
- 	return status;
- }
- 
-@@ -581,7 +572,7 @@ int bridge_chnl_get_ioc(struct chnl_object *chnl_obj, u32 timeout,
- 	if (!chan_ioc || !pchnl) {
- 		status = -EFAULT;
- 	} else if (timeout == CHNL_IOCNOWAIT) {
--		if (LST_IS_EMPTY(pchnl->pio_completions))
-+		if (list_empty(&pchnl->pio_completions))
- 			status = -EREMOTEIO;
- 
- 	}
-@@ -596,7 +587,7 @@ int bridge_chnl_get_ioc(struct chnl_object *chnl_obj, u32 timeout,
- 
- 	ioc.status = CHNL_IOCSTATCOMPLETE;
- 	if (timeout !=
--	    CHNL_IOCNOWAIT && LST_IS_EMPTY(pchnl->pio_completions)) {
-+	    CHNL_IOCNOWAIT && list_empty(&pchnl->pio_completions)) {
- 		if (timeout == CHNL_IOCINFINITE)
- 			timeout = SYNC_INFINITE;
- 
-@@ -611,7 +602,7 @@ int bridge_chnl_get_ioc(struct chnl_object *chnl_obj, u32 timeout,
- 			 * fails due to unkown causes. */
- 			/* Even though Wait failed, there may be something in
- 			 * the Q: */
--			if (LST_IS_EMPTY(pchnl->pio_completions)) {
-+			if (list_empty(&pchnl->pio_completions)) {
- 				ioc.status |= CHNL_IOCSTATCANCEL;
- 				dequeue_ioc = false;
- 			}
-@@ -622,30 +613,26 @@ int bridge_chnl_get_ioc(struct chnl_object *chnl_obj, u32 timeout,
- 	omap_mbox_disable_irq(dev_ctxt->mbox, IRQ_RX);
- 	if (dequeue_ioc) {
- 		/* Dequeue IOC and set chan_ioc; */
--		DBC_ASSERT(!LST_IS_EMPTY(pchnl->pio_completions));
--		chnl_packet_obj =
--		    (struct chnl_irp *)lst_get_head(pchnl->pio_completions);
-+		DBC_ASSERT(!list_empty(&pchnl->pio_completions));
-+		chnl_packet_obj = list_first_entry(&pchnl->pio_completions,
-+				struct chnl_irp, link);
-+		list_del(&chnl_packet_obj->link);
- 		/* Update chan_ioc from channel state and chirp: */
--		if (chnl_packet_obj) {
--			pchnl->cio_cs--;
--			/*  If this is a zero-copy channel, then set IOC's pbuf
--			 *  to the DSP's address. This DSP address will get
--			 *  translated to user's virtual addr later. */
--			{
--				host_sys_buf = chnl_packet_obj->host_sys_buf;
--				ioc.pbuf = chnl_packet_obj->host_user_buf;
--			}
--			ioc.byte_size = chnl_packet_obj->byte_size;
--			ioc.buf_size = chnl_packet_obj->buf_size;
--			ioc.dw_arg = chnl_packet_obj->dw_arg;
--			ioc.status |= chnl_packet_obj->status;
--			/* Place the used chirp on the free list: */
--			lst_put_tail(pchnl->free_packets_list,
--				     (struct list_head *)chnl_packet_obj);
--		} else {
--			ioc.pbuf = NULL;
--			ioc.byte_size = 0;
--		}
-+		pchnl->cio_cs--;
-+		/*
-+		 * If this is a zero-copy channel, then set IOC's pbuf
-+		 * to the DSP's address. This DSP address will get
-+		 * translated to user's virtual addr later.
-+		 */
-+		host_sys_buf = chnl_packet_obj->host_sys_buf;
-+		ioc.pbuf = chnl_packet_obj->host_user_buf;
-+		ioc.byte_size = chnl_packet_obj->byte_size;
-+		ioc.buf_size = chnl_packet_obj->buf_size;
-+		ioc.dw_arg = chnl_packet_obj->dw_arg;
-+		ioc.status |= chnl_packet_obj->status;
-+		/* Place the used chirp on the free list: */
-+		list_add_tail(&chnl_packet_obj->link,
-+				&pchnl->free_packets_list);
- 	} else {
- 		ioc.pbuf = NULL;
- 		ioc.byte_size = 0;
-@@ -653,7 +640,7 @@ int bridge_chnl_get_ioc(struct chnl_object *chnl_obj, u32 timeout,
- 		ioc.buf_size = 0;
- 	}
- 	/* Ensure invariant: If any IOC's are queued for this channel... */
--	if (!LST_IS_EMPTY(pchnl->pio_completions)) {
-+	if (!list_empty(&pchnl->pio_completions)) {
- 		/*  Since DSPStream_Reclaim() does not take a timeout
- 		 *  parameter, we pass the stream's timeout value to
- 		 *  bridge_chnl_get_ioc. We cannot determine whether or not
-@@ -818,9 +805,16 @@ int bridge_chnl_open(struct chnl_object **chnl,
- 	/* Protect queues from io_dpc: */
- 	pchnl->dw_state = CHNL_STATECANCEL;
- 	/* Allocate initial IOR and IOC queues: */
--	pchnl->free_packets_list = create_chirp_list(pattrs->uio_reqs);
--	pchnl->pio_requests = create_chirp_list(0);
--	pchnl->pio_completions = create_chirp_list(0);
-+	status = create_chirp_list(&pchnl->free_packets_list,
-+			pattrs->uio_reqs);
-+	if (status) {
-+		kfree(pchnl);
-+		goto func_end;
-+	}
-+
-+	INIT_LIST_HEAD(&pchnl->pio_requests);
-+	INIT_LIST_HEAD(&pchnl->pio_completions);
-+
- 	pchnl->chnl_packets = pattrs->uio_reqs;
- 	pchnl->cio_cs = 0;
- 	pchnl->cio_reqs = 0;
-@@ -840,40 +834,26 @@ int bridge_chnl_open(struct chnl_object **chnl,
- 	}
- 
- 	if (!status) {
--		if (pchnl->pio_completions && pchnl->pio_requests &&
--		    pchnl->free_packets_list) {
--			/* Initialize CHNL object fields: */
--			pchnl->chnl_mgr_obj = chnl_mgr_obj;
--			pchnl->chnl_id = ch_id;
--			pchnl->chnl_mode = chnl_mode;
--			pchnl->user_event = sync_event;
--			pchnl->sync_event = sync_event;
--			/* Get the process handle */
--			pchnl->process = current->tgid;
--			pchnl->pcb_arg = 0;
--			pchnl->bytes_moved = 0;
--			/* Default to proc-copy */
--			pchnl->chnl_type = CHNL_PCPY;
--		} else {
--			status = -ENOMEM;
--		}
-+		/* Initialize CHNL object fields: */
-+		pchnl->chnl_mgr_obj = chnl_mgr_obj;
-+		pchnl->chnl_id = ch_id;
-+		pchnl->chnl_mode = chnl_mode;
-+		pchnl->user_event = sync_event;
-+		pchnl->sync_event = sync_event;
-+		/* Get the process handle */
-+		pchnl->process = current->tgid;
-+		pchnl->pcb_arg = 0;
-+		pchnl->bytes_moved = 0;
-+		/* Default to proc-copy */
-+		pchnl->chnl_type = CHNL_PCPY;
- 	}
- 
- 	if (status) {
- 		/* Free memory */
--		if (pchnl->pio_completions) {
--			free_chirp_list(pchnl->pio_completions);
--			pchnl->pio_completions = NULL;
--			pchnl->cio_cs = 0;
--		}
--		if (pchnl->pio_requests) {
--			free_chirp_list(pchnl->pio_requests);
--			pchnl->pio_requests = NULL;
--		}
--		if (pchnl->free_packets_list) {
--			free_chirp_list(pchnl->free_packets_list);
--			pchnl->free_packets_list = NULL;
--		}
-+		free_chirp_list(&pchnl->pio_completions);
-+		pchnl->cio_cs = 0;
-+		free_chirp_list(&pchnl->pio_requests);
-+		free_chirp_list(&pchnl->free_packets_list);
- 		kfree(sync_event);
- 		sync_event = NULL;
- 
-@@ -924,37 +904,35 @@ int bridge_chnl_register_notify(struct chnl_object *chnl_obj,
-  *  Purpose:
-  *      Initialize a queue of channel I/O Request/Completion packets.
-  *  Parameters:
-+ *      list:       Pointer to a list_head
-  *      chirps:     Number of Chirps to allocate.
-  *  Returns:
-- *      Pointer to queue of IRPs, or NULL.
-+ *      0 if successful, error code otherwise.
-  *  Requires:
-  *  Ensures:
-  */
--static struct lst_list *create_chirp_list(u32 chirps)
-+static int create_chirp_list(struct list_head *list, u32 chirps)
- {
--	struct lst_list *chirp_list;
--	struct chnl_irp *chnl_packet_obj;
-+	struct chnl_irp *chirp;
- 	u32 i;
- 
--	chirp_list = kzalloc(sizeof(struct lst_list), GFP_KERNEL);
-+	INIT_LIST_HEAD(list);
- 
--	if (chirp_list) {
--		INIT_LIST_HEAD(&chirp_list->head);
--		/* Make N chirps and place on queue. */
--		for (i = 0; (i < chirps)
--		     && ((chnl_packet_obj = make_new_chirp()) != NULL); i++) {
--			lst_put_tail(chirp_list,
--				     (struct list_head *)chnl_packet_obj);
--		}
-+	/* Make N chirps and place on queue. */
-+	for (i = 0; i < chirps; i++) {
-+		chirp = kzalloc(sizeof(struct chnl_irp), GFP_KERNEL);
-+		if (!chirp)
-+			break;
-+		list_add_tail(&chirp->link, list);
-+	}
- 
--		/* If we couldn't allocate all chirps, free those allocated: */
--		if (i != chirps) {
--			free_chirp_list(chirp_list);
--			chirp_list = NULL;
--		}
-+	/* If we couldn't allocate all chirps, free those allocated: */
-+	if (i != chirps) {
-+		free_chirp_list(list);
-+		return -ENOMEM;
- 	}
- 
--	return chirp_list;
-+	return 0;
- }
- 
- /*
-@@ -962,31 +940,16 @@ static struct lst_list *create_chirp_list(u32 chirps)
-  *  Purpose:
-  *      Free the queue of Chirps.
-  */
--static void free_chirp_list(struct lst_list *chirp_list)
-+static void free_chirp_list(struct list_head *chirp_list)
- {
--	DBC_REQUIRE(chirp_list != NULL);
--
--	while (!LST_IS_EMPTY(chirp_list))
--		kfree(lst_get_head(chirp_list));
-+	struct chnl_irp *chirp, *tmp;
- 
--	kfree(chirp_list);
--}
--
--/*
-- *  ======== make_new_chirp ========
-- *      Allocate the memory for a new channel IRP.
-- */
--static struct chnl_irp *make_new_chirp(void)
--{
--	struct chnl_irp *chnl_packet_obj;
-+	DBC_REQUIRE(chirp_list != NULL);
- 
--	chnl_packet_obj = kzalloc(sizeof(struct chnl_irp), GFP_KERNEL);
--	if (chnl_packet_obj != NULL) {
--		/* lst_init_elem only resets the list's member values. */
--		lst_init_elem(&chnl_packet_obj->link);
-+	list_for_each_entry_safe(chirp, tmp, chirp_list, link) {
-+		list_del(&chirp->link);
-+		kfree(chirp);
- 	}
--
--	return chnl_packet_obj;
- }
- 
- /*
-diff --git a/drivers/staging/tidspbridge/core/io_sm.c b/drivers/staging/tidspbridge/core/io_sm.c
-index 9ee02d1..d30cc7e 100644
---- a/drivers/staging/tidspbridge/core/io_sm.c
-+++ b/drivers/staging/tidspbridge/core/io_sm.c
-@@ -24,6 +24,7 @@
-  * function.
-  */
- #include <linux/types.h>
-+#include <linux/list.h>
- 
- /* Host OS */
- #include <dspbridge/host_os.h>
-@@ -1092,15 +1093,17 @@ static void input_chnl(struct io_mgr *pio_mgr, struct chnl_object *pchnl,
- 	pchnl = chnl_mgr_obj->ap_channel[chnl_id];
- 	if ((pchnl != NULL) && CHNL_IS_INPUT(pchnl->chnl_mode)) {
- 		if ((pchnl->dw_state & ~CHNL_STATEEOS) == CHNL_STATEREADY) {
--			if (!pchnl->pio_requests)
--				goto func_end;
- 			/* Get the I/O request, and attempt a transfer */
--			chnl_packet_obj = (struct chnl_irp *)
--			    lst_get_head(pchnl->pio_requests);
--			if (chnl_packet_obj) {
--				pchnl->cio_reqs--;
--				if (pchnl->cio_reqs < 0)
-+			if (!list_empty(&pchnl->pio_requests)) {
-+				if (!pchnl->cio_reqs)
- 					goto func_end;
-+
-+				chnl_packet_obj = list_first_entry(
-+						&pchnl->pio_requests,
-+						struct chnl_irp, link);
-+				list_del(&chnl_packet_obj->link);
-+				pchnl->cio_reqs--;
-+
- 				/*
- 				 * Ensure we don't overflow the client's
- 				 * buffer.
-@@ -1127,21 +1130,18 @@ static void input_chnl(struct io_mgr *pio_mgr, struct chnl_object *pchnl,
- 					 * the channel state.
- 					 */
- 					chnl_packet_obj->status |=
--					    CHNL_IOCSTATEOS;
-+						CHNL_IOCSTATEOS;
- 					pchnl->dw_state |= CHNL_STATEEOS;
- 					/*
- 					 * Notify that end of stream has
- 					 * occurred.
- 					 */
- 					ntfy_notify(pchnl->ntfy_obj,
--						    DSP_STREAMDONE);
-+							DSP_STREAMDONE);
- 				}
- 				/* Tell DSP if no more I/O buffers available */
--				if (!pchnl->pio_requests)
--					goto func_end;
--				if (LST_IS_EMPTY(pchnl->pio_requests)) {
-+				if (list_empty(&pchnl->pio_requests))
- 					set_chnl_free(sm, pchnl->chnl_id);
--				}
- 				clear_chnl = true;
- 				notify_client = true;
- 			} else {
-@@ -1213,21 +1213,18 @@ static void input_msg(struct io_mgr *pio_mgr, struct msg_mgr *hmsg_mgr)
- 		msg.msgq_id =
- 		    read_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr);
- 		msg_input += sizeof(struct msg_dspmsg);
--		if (!hmsg_mgr->queue_list)
--			goto func_end;
- 
- 		/* Determine which queue to put the message in */
--		msg_queue_obj =
--		    (struct msg_queue *)lst_first(hmsg_mgr->queue_list);
- 		dev_dbg(bridge,	"input msg: dw_cmd=0x%x dw_arg1=0x%x "
--			"dw_arg2=0x%x msgq_id=0x%x \n", msg.msg.dw_cmd,
-+			"dw_arg2=0x%x msgq_id=0x%x\n", msg.msg.dw_cmd,
- 			msg.msg.dw_arg1, msg.msg.dw_arg2, msg.msgq_id);
- 		/*
- 		 * Interrupt may occur before shared memory and message
- 		 * input locations have been set up. If all nodes were
- 		 * cleaned up, hmsg_mgr->max_msgs should be 0.
- 		 */
--		while (msg_queue_obj != NULL) {
-+		list_for_each_entry(msg_queue_obj, &hmsg_mgr->queue_list,
-+				list_elem) {
- 			if (msg.msgq_id == msg_queue_obj->msgq_id) {
- 				/* Found it */
- 				if (msg.msg.dw_cmd == RMS_EXITACK) {
-@@ -1237,47 +1234,39 @@ static void input_msg(struct io_mgr *pio_mgr, struct msg_mgr *hmsg_mgr)
- 					 * queued.
- 					 */
- 					(*hmsg_mgr->on_exit) ((void *)
--							   msg_queue_obj->arg,
--							   msg.msg.dw_arg1);
-+							msg_queue_obj->arg,
-+							msg.msg.dw_arg1);
-+					break;
-+				}
-+				/*
-+				 * Not an exit acknowledgement, queue
-+				 * the message.
-+				 */
-+				if (!list_empty(&msg_queue_obj->
-+							msg_free_list)) {
-+					pmsg = list_first_entry(
-+						&msg_queue_obj->msg_free_list,
-+						struct msg_frame, list_elem);
-+					list_del(&pmsg->list_elem);
-+					pmsg->msg_data = msg;
-+					list_add_tail(&pmsg->list_elem,
-+						&msg_queue_obj->msg_used_list);
-+					ntfy_notify
-+						(msg_queue_obj->ntfy_obj,
-+						 DSP_NODEMESSAGEREADY);
-+					sync_set_event
-+						(msg_queue_obj->sync_event);
- 				} else {
- 					/*
--					 * Not an exit acknowledgement, queue
--					 * the message.
-+					 * No free frame to copy the
-+					 * message into.
- 					 */
--					if (!msg_queue_obj->msg_free_list)
--						goto func_end;
--					pmsg = (struct msg_frame *)lst_get_head
--					    (msg_queue_obj->msg_free_list);
--					if (msg_queue_obj->msg_used_list
--					    && pmsg) {
--						pmsg->msg_data = msg;
--						lst_put_tail
--						 (msg_queue_obj->msg_used_list,
--						     (struct list_head *)pmsg);
--						ntfy_notify
--						    (msg_queue_obj->ntfy_obj,
--						     DSP_NODEMESSAGEREADY);
--						sync_set_event
--						    (msg_queue_obj->sync_event);
--					} else {
--						/*
--						 * No free frame to copy the
--						 * message into.
--						 */
--						pr_err("%s: no free msg frames,"
--						       " discarding msg\n",
--						       __func__);
--					}
-+					pr_err("%s: no free msg frames,"
-+							" discarding msg\n",
-+							__func__);
- 				}
- 				break;
- 			}
--
--			if (!hmsg_mgr->queue_list || !msg_queue_obj)
--				goto func_end;
--			msg_queue_obj =
--			    (struct msg_queue *)lst_next(hmsg_mgr->queue_list,
--							 (struct list_head *)
--							 msg_queue_obj);
- 		}
- 	}
- 	/* Set the post SWI flag */
-@@ -1301,8 +1290,7 @@ static void notify_chnl_complete(struct chnl_object *pchnl,
- {
- 	bool signal_event;
- 
--	if (!pchnl || !pchnl->sync_event ||
--	    !pchnl->pio_completions || !chnl_packet_obj)
-+	if (!pchnl || !pchnl->sync_event || !chnl_packet_obj)
- 		goto func_end;
- 
- 	/*
-@@ -1311,10 +1299,9 @@ static void notify_chnl_complete(struct chnl_object *pchnl,
- 	 * signalled by the only IO completion list consumer:
- 	 * bridge_chnl_get_ioc().
- 	 */
--	signal_event = LST_IS_EMPTY(pchnl->pio_completions);
-+	signal_event = list_empty(&pchnl->pio_completions);
- 	/* Enqueue the IO completion info for the client */
--	lst_put_tail(pchnl->pio_completions,
--		     (struct list_head *)chnl_packet_obj);
-+	list_add_tail(&chnl_packet_obj->link, &pchnl->pio_completions);
- 	pchnl->cio_cs++;
- 
- 	if (pchnl->cio_cs > pchnl->chnl_packets)
-@@ -1361,21 +1348,23 @@ static void output_chnl(struct io_mgr *pio_mgr, struct chnl_object *pchnl,
- 		goto func_end;
- 
- 	pchnl = chnl_mgr_obj->ap_channel[chnl_id];
--	if (!pchnl || !pchnl->pio_requests) {
-+	if (!pchnl || list_empty(&pchnl->pio_requests)) {
- 		/* Shouldn't get here */
- 		goto func_end;
- 	}
--	/* Get the I/O request, and attempt a transfer */
--	chnl_packet_obj = (struct chnl_irp *)lst_get_head(pchnl->pio_requests);
--	if (!chnl_packet_obj)
-+
-+	if (!pchnl->cio_reqs)
- 		goto func_end;
- 
-+	/* Get the I/O request, and attempt a transfer */
-+	chnl_packet_obj = list_first_entry(&pchnl->pio_requests,
-+			struct chnl_irp, link);
-+	list_del(&chnl_packet_obj->link);
-+
- 	pchnl->cio_reqs--;
--	if (pchnl->cio_reqs < 0 || !pchnl->pio_requests)
--		goto func_end;
- 
- 	/* Record fact that no more I/O buffers available */
--	if (LST_IS_EMPTY(pchnl->pio_requests))
-+	if (list_empty(&pchnl->pio_requests))
- 		chnl_mgr_obj->dw_output_mask &= ~(1 << chnl_id);
- 
- 	/* Transfer buffer to DSP side */
-@@ -1436,14 +1425,11 @@ static void output_msg(struct io_mgr *pio_mgr, struct msg_mgr *hmsg_mgr)
- 		msg_output = pio_mgr->msg_output;
- 		/* Copy num_msgs messages into shared memory */
- 		for (i = 0; i < num_msgs; i++) {
--			if (!hmsg_mgr->msg_used_list) {
--				pmsg = NULL;
--				goto func_end;
--			} else {
--				pmsg = (struct msg_frame *)
--				    lst_get_head(hmsg_mgr->msg_used_list);
--			}
--			if (pmsg != NULL) {
-+			if (!list_empty(&hmsg_mgr->msg_used_list)) {
-+				pmsg = list_first_entry(
-+						&hmsg_mgr->msg_used_list,
-+						struct msg_frame, list_elem);
-+				list_del(&pmsg->list_elem);
- 				val = (pmsg->msg_data).msgq_id;
- 				addr = (u32) &(((struct msg_dspmsg *)
- 						 msg_output)->msgq_id);
-@@ -1465,10 +1451,8 @@ static void output_msg(struct io_mgr *pio_mgr, struct msg_mgr *hmsg_mgr)
- 				write_ext32_bit_dsp_data(
- 					pio_mgr->hbridge_context, addr, val);
- 				msg_output += sizeof(struct msg_dspmsg);
--				if (!hmsg_mgr->msg_free_list)
--					goto func_end;
--				lst_put_tail(hmsg_mgr->msg_free_list,
--					     (struct list_head *)pmsg);
-+				list_add_tail(&pmsg->list_elem,
-+						&hmsg_mgr->msg_free_list);
- 				sync_set_event(hmsg_mgr->sync_event);
- 			}
- 		}
-@@ -1492,8 +1476,6 @@ static void output_msg(struct io_mgr *pio_mgr, struct msg_mgr *hmsg_mgr)
- 						MBX_PCPY_CLASS);
- 		}
- 	}
--func_end:
--	return;
- }
- 
- /*
-diff --git a/drivers/staging/tidspbridge/core/msg_sm.c b/drivers/staging/tidspbridge/core/msg_sm.c
-index 87712e2..de2cb83 100644
---- a/drivers/staging/tidspbridge/core/msg_sm.c
-+++ b/drivers/staging/tidspbridge/core/msg_sm.c
-@@ -24,7 +24,6 @@
- #include <dspbridge/dbc.h>
- 
- /*  ----------------------------------- OS Adaptation Layer */
--#include <dspbridge/list.h>
- #include <dspbridge/sync.h>
- 
- /*  ----------------------------------- Platform Manager */
-@@ -38,10 +37,10 @@
- #include <dspbridge/dspmsg.h>
- 
- /*  ----------------------------------- Function Prototypes */
--static int add_new_msg(struct lst_list *msg_list);
-+static int add_new_msg(struct list_head *msg_list);
- static void delete_msg_mgr(struct msg_mgr *hmsg_mgr);
- static void delete_msg_queue(struct msg_queue *msg_queue_obj, u32 num_to_dsp);
--static void free_msg_list(struct lst_list *msg_list);
-+static void free_msg_list(struct list_head *msg_list);
- 
- /*
-  *  ======== bridge_msg_create ========
-@@ -73,25 +72,13 @@ int bridge_msg_create(struct msg_mgr **msg_man,
- 		msg_mgr_obj->on_exit = msg_callback;
- 		msg_mgr_obj->hio_mgr = hio_mgr;
- 		/* List of MSG_QUEUEs */
--		msg_mgr_obj->queue_list = kzalloc(sizeof(struct lst_list),
--							GFP_KERNEL);
-+		INIT_LIST_HEAD(&msg_mgr_obj->queue_list);
- 		/*  Queues of message frames for messages to the DSP. Message
- 		 * frames will only be added to the free queue when a
- 		 * msg_queue object is created. */
--		msg_mgr_obj->msg_free_list = kzalloc(sizeof(struct lst_list),
--							GFP_KERNEL);
--		msg_mgr_obj->msg_used_list = kzalloc(sizeof(struct lst_list),
--							GFP_KERNEL);
--		if (msg_mgr_obj->queue_list == NULL ||
--		    msg_mgr_obj->msg_free_list == NULL ||
--		    msg_mgr_obj->msg_used_list == NULL) {
--			status = -ENOMEM;
--		} else {
--			INIT_LIST_HEAD(&msg_mgr_obj->queue_list->head);
--			INIT_LIST_HEAD(&msg_mgr_obj->msg_free_list->head);
--			INIT_LIST_HEAD(&msg_mgr_obj->msg_used_list->head);
--			spin_lock_init(&msg_mgr_obj->msg_mgr_lock);
--		}
-+		INIT_LIST_HEAD(&msg_mgr_obj->msg_free_list);
-+		INIT_LIST_HEAD(&msg_mgr_obj->msg_used_list);
-+		spin_lock_init(&msg_mgr_obj->msg_mgr_lock);
- 
- 		/*  Create an event to be used by bridge_msg_put() in waiting
- 		 *  for an available free frame from the message manager. */
-@@ -128,7 +115,7 @@ int bridge_msg_create_queue(struct msg_mgr *hmsg_mgr,
- 	struct msg_queue *msg_q;
- 	int status = 0;
- 
--	if (!hmsg_mgr || msgq == NULL || !hmsg_mgr->msg_free_list) {
-+	if (!hmsg_mgr || msgq == NULL) {
- 		status = -EFAULT;
- 		goto func_end;
- 	}
-@@ -140,20 +127,13 @@ int bridge_msg_create_queue(struct msg_mgr *hmsg_mgr,
- 		status = -ENOMEM;
- 		goto func_end;
- 	}
--	lst_init_elem((struct list_head *)msg_q);
- 	msg_q->max_msgs = max_msgs;
- 	msg_q->hmsg_mgr = hmsg_mgr;
- 	msg_q->arg = arg;	/* Node handle */
- 	msg_q->msgq_id = msgq_id;	/* Node env (not valid yet) */
- 	/* Queues of Message frames for messages from the DSP */
--	msg_q->msg_free_list = kzalloc(sizeof(struct lst_list), GFP_KERNEL);
--	msg_q->msg_used_list = kzalloc(sizeof(struct lst_list), GFP_KERNEL);
--	if (msg_q->msg_free_list == NULL || msg_q->msg_used_list == NULL)
--		status = -ENOMEM;
--	else {
--		INIT_LIST_HEAD(&msg_q->msg_free_list->head);
--		INIT_LIST_HEAD(&msg_q->msg_used_list->head);
--	}
-+	INIT_LIST_HEAD(&msg_q->msg_free_list);
-+	INIT_LIST_HEAD(&msg_q->msg_used_list);
- 
- 	/*  Create event that will be signalled when a message from
- 	 *  the DSP is available. */
-@@ -204,10 +184,10 @@ int bridge_msg_create_queue(struct msg_mgr *hmsg_mgr,
- 		spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
- 		/* Initialize message frames and put in appropriate queues */
- 		for (i = 0; i < max_msgs && !status; i++) {
--			status = add_new_msg(hmsg_mgr->msg_free_list);
-+			status = add_new_msg(&hmsg_mgr->msg_free_list);
- 			if (!status) {
- 				num_allocated++;
--				status = add_new_msg(msg_q->msg_free_list);
-+				status = add_new_msg(&msg_q->msg_free_list);
- 			}
- 		}
- 		if (status) {
-@@ -215,11 +195,11 @@ int bridge_msg_create_queue(struct msg_mgr *hmsg_mgr,
- 			 *  of the newly allocated message frames. */
- 			delete_msg_queue(msg_q, num_allocated);
- 		} else {
--			lst_put_tail(hmsg_mgr->queue_list,
--				     (struct list_head *)msg_q);
-+			list_add_tail(&msg_q->list_elem,
-+					&hmsg_mgr->queue_list);
- 			*msgq = msg_q;
- 			/* Signal that free frames are now available */
--			if (!LST_IS_EMPTY(hmsg_mgr->msg_free_list))
-+			if (!list_empty(&hmsg_mgr->msg_free_list))
- 				sync_set_event(hmsg_mgr->sync_event);
- 
- 		}
-@@ -267,15 +247,12 @@ void bridge_msg_delete_queue(struct msg_queue *msg_queue_obj)
- 	}
- 	/* Remove message queue from hmsg_mgr->queue_list */
- 	spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
--	lst_remove_elem(hmsg_mgr->queue_list,
--			(struct list_head *)msg_queue_obj);
-+	list_del(&msg_queue_obj->list_elem);
- 	/* Free the message queue object */
- 	delete_msg_queue(msg_queue_obj, msg_queue_obj->max_msgs);
--	if (!hmsg_mgr->msg_free_list)
--		goto func_cont;
--	if (LST_IS_EMPTY(hmsg_mgr->msg_free_list))
-+	if (list_empty(&hmsg_mgr->msg_free_list))
- 		sync_reset_event(hmsg_mgr->sync_event);
--func_cont:
-+
- 	spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
- func_end:
- 	return;
-@@ -301,26 +278,21 @@ int bridge_msg_get(struct msg_queue *msg_queue_obj,
- 	}
- 
- 	hmsg_mgr = msg_queue_obj->hmsg_mgr;
--	if (!msg_queue_obj->msg_used_list) {
--		status = -EFAULT;
--		goto func_end;
--	}
- 
- 	/* Enter critical section */
- 	spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
- 	/* If a message is already there, get it */
--	if (!LST_IS_EMPTY(msg_queue_obj->msg_used_list)) {
--		msg_frame_obj = (struct msg_frame *)
--		    lst_get_head(msg_queue_obj->msg_used_list);
--		if (msg_frame_obj != NULL) {
--			*pmsg = msg_frame_obj->msg_data.msg;
--			lst_put_tail(msg_queue_obj->msg_free_list,
--				     (struct list_head *)msg_frame_obj);
--			if (LST_IS_EMPTY(msg_queue_obj->msg_used_list))
--				sync_reset_event(msg_queue_obj->sync_event);
--
--			got_msg = true;
--		}
-+	if (!list_empty(&msg_queue_obj->msg_used_list)) {
-+		msg_frame_obj = list_first_entry(&msg_queue_obj->msg_used_list,
-+				struct msg_frame, list_elem);
-+		list_del(&msg_frame_obj->list_elem);
-+		*pmsg = msg_frame_obj->msg_data.msg;
-+		list_add_tail(&msg_frame_obj->list_elem,
-+				&msg_queue_obj->msg_free_list);
-+		if (list_empty(&msg_queue_obj->msg_used_list))
-+			sync_reset_event(msg_queue_obj->sync_event);
-+
-+		got_msg = true;
- 	} else {
- 		if (msg_queue_obj->done)
- 			status = -EPERM;
-@@ -349,25 +321,22 @@ int bridge_msg_get(struct msg_queue *msg_queue_obj,
- 			(void)sync_set_event(msg_queue_obj->sync_done_ack);
- 			status = -EPERM;
- 		} else {
--			if (!status) {
--				DBC_ASSERT(!LST_IS_EMPTY
--					   (msg_queue_obj->msg_used_list));
-+			if (!status && !list_empty(&msg_queue_obj->
-+						msg_used_list)) {
- 				/* Get msg from used list */
--				msg_frame_obj = (struct msg_frame *)
--				    lst_get_head(msg_queue_obj->msg_used_list);
-+				msg_frame_obj = list_first_entry(
-+						&msg_queue_obj->msg_used_list,
-+						struct msg_frame, list_elem);
-+				list_del(&msg_frame_obj->list_elem);
- 				/* Copy message into pmsg and put frame on the
- 				 * free list */
--				if (msg_frame_obj != NULL) {
--					*pmsg = msg_frame_obj->msg_data.msg;
--					lst_put_tail
--					    (msg_queue_obj->msg_free_list,
--					     (struct list_head *)
--					     msg_frame_obj);
--				}
-+				*pmsg = msg_frame_obj->msg_data.msg;
-+				list_add_tail(&msg_frame_obj->list_elem,
-+						&msg_queue_obj->msg_free_list);
- 			}
- 			msg_queue_obj->io_msg_pend--;
- 			/* Reset the event if there are still queued messages */
--			if (!LST_IS_EMPTY(msg_queue_obj->msg_used_list))
-+			if (!list_empty(&msg_queue_obj->msg_used_list))
- 				sync_set_event(msg_queue_obj->sync_event);
- 
- 			/* Exit critical section */
-@@ -397,27 +366,22 @@ int bridge_msg_put(struct msg_queue *msg_queue_obj,
- 		goto func_end;
- 	}
- 	hmsg_mgr = msg_queue_obj->hmsg_mgr;
--	if (!hmsg_mgr->msg_free_list) {
--		status = -EFAULT;
--		goto func_end;
--	}
- 
- 	spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
- 
- 	/* If a message frame is available, use it */
--	if (!LST_IS_EMPTY(hmsg_mgr->msg_free_list)) {
--		msg_frame_obj =
--		    (struct msg_frame *)lst_get_head(hmsg_mgr->msg_free_list);
--		if (msg_frame_obj != NULL) {
--			msg_frame_obj->msg_data.msg = *pmsg;
--			msg_frame_obj->msg_data.msgq_id =
--			    msg_queue_obj->msgq_id;
--			lst_put_tail(hmsg_mgr->msg_used_list,
--				     (struct list_head *)msg_frame_obj);
--			hmsg_mgr->msgs_pending++;
--			put_msg = true;
--		}
--		if (LST_IS_EMPTY(hmsg_mgr->msg_free_list))
-+	if (!list_empty(&hmsg_mgr->msg_free_list)) {
-+		msg_frame_obj = list_first_entry(&hmsg_mgr->msg_free_list,
-+				struct msg_frame, list_elem);
-+		list_del(&msg_frame_obj->list_elem);
-+		msg_frame_obj->msg_data.msg = *pmsg;
-+		msg_frame_obj->msg_data.msgq_id =
-+			msg_queue_obj->msgq_id;
-+		list_add_tail(&msg_frame_obj->list_elem,
-+				&hmsg_mgr->msg_used_list);
-+		hmsg_mgr->msgs_pending++;
-+		put_msg = true;
-+		if (list_empty(&hmsg_mgr->msg_free_list))
- 			sync_reset_event(hmsg_mgr->sync_event);
- 
- 		/* Release critical section before scheduling DPC */
-@@ -452,34 +416,34 @@ int bridge_msg_put(struct msg_queue *msg_queue_obj,
- 			(void)sync_set_event(msg_queue_obj->sync_done_ack);
- 			status = -EPERM;
- 		} else {
--			if (LST_IS_EMPTY(hmsg_mgr->msg_free_list)) {
-+			if (list_empty(&hmsg_mgr->msg_free_list)) {
- 				status = -EFAULT;
- 				goto func_cont;
- 			}
- 			/* Get msg from free list */
--			msg_frame_obj = (struct msg_frame *)
--			    lst_get_head(hmsg_mgr->msg_free_list);
-+			msg_frame_obj = list_first_entry(
-+					&hmsg_mgr->msg_free_list,
-+					struct msg_frame, list_elem);
-+			list_del(&msg_frame_obj->list_elem);
- 			/*
- 			 * Copy message into pmsg and put frame on the
- 			 * used list.
- 			 */
--			if (msg_frame_obj) {
--				msg_frame_obj->msg_data.msg = *pmsg;
--				msg_frame_obj->msg_data.msgq_id =
--				    msg_queue_obj->msgq_id;
--				lst_put_tail(hmsg_mgr->msg_used_list,
--					     (struct list_head *)msg_frame_obj);
--				hmsg_mgr->msgs_pending++;
--				/*
--				 * Schedule a DPC, to do the actual
--				 * data transfer.
--				 */
--				iosm_schedule(hmsg_mgr->hio_mgr);
--			}
-+			msg_frame_obj->msg_data.msg = *pmsg;
-+			msg_frame_obj->msg_data.msgq_id =
-+				msg_queue_obj->msgq_id;
-+			list_add_tail(&msg_frame_obj->list_elem,
-+					&hmsg_mgr->msg_used_list);
-+			hmsg_mgr->msgs_pending++;
-+			/*
-+			 * Schedule a DPC, to do the actual
-+			 * data transfer.
-+			 */
-+			iosm_schedule(hmsg_mgr->hio_mgr);
- 
- 			msg_queue_obj->io_msg_pend--;
- 			/* Reset event if there are still frames available */
--			if (!LST_IS_EMPTY(hmsg_mgr->msg_free_list))
-+			if (!list_empty(&hmsg_mgr->msg_free_list))
- 				sync_set_event(hmsg_mgr->sync_event);
- func_cont:
- 			/* Exit critical section */
-@@ -551,15 +515,14 @@ void bridge_msg_set_queue_id(struct msg_queue *msg_queue_obj, u32 msgq_id)
-  *  ======== add_new_msg ========
-  *      Must be called in message manager critical section.
-  */
--static int add_new_msg(struct lst_list *msg_list)
-+static int add_new_msg(struct list_head *msg_list)
- {
- 	struct msg_frame *pmsg;
- 	int status = 0;
- 
- 	pmsg = kzalloc(sizeof(struct msg_frame), GFP_ATOMIC);
- 	if (pmsg != NULL) {
--		lst_init_elem((struct list_head *)pmsg);
--		lst_put_tail(msg_list, (struct list_head *)pmsg);
-+		list_add_tail(&pmsg->list_elem, msg_list);
- 	} else {
- 		status = -ENOMEM;
- 	}
-@@ -575,22 +538,9 @@ static void delete_msg_mgr(struct msg_mgr *hmsg_mgr)
- 	if (!hmsg_mgr)
- 		goto func_end;
- 
--	if (hmsg_mgr->queue_list) {
--		if (LST_IS_EMPTY(hmsg_mgr->queue_list)) {
--			kfree(hmsg_mgr->queue_list);
--			hmsg_mgr->queue_list = NULL;
--		}
--	}
--
--	if (hmsg_mgr->msg_free_list) {
--		free_msg_list(hmsg_mgr->msg_free_list);
--		hmsg_mgr->msg_free_list = NULL;
--	}
--
--	if (hmsg_mgr->msg_used_list) {
--		free_msg_list(hmsg_mgr->msg_used_list);
--		hmsg_mgr->msg_used_list = NULL;
--	}
-+	/* FIXME: free elements from queue_list? */
-+	free_msg_list(&hmsg_mgr->msg_free_list);
-+	free_msg_list(&hmsg_mgr->msg_used_list);
- 
- 	kfree(hmsg_mgr->sync_event);
- 
-@@ -605,37 +555,26 @@ func_end:
- static void delete_msg_queue(struct msg_queue *msg_queue_obj, u32 num_to_dsp)
- {
- 	struct msg_mgr *hmsg_mgr;
--	struct msg_frame *pmsg;
-+	struct msg_frame *pmsg, *tmp;
- 	u32 i;
- 
--	if (!msg_queue_obj ||
--	    !msg_queue_obj->hmsg_mgr || !msg_queue_obj->hmsg_mgr->msg_free_list)
-+	if (!msg_queue_obj || !msg_queue_obj->hmsg_mgr)
- 		goto func_end;
- 
- 	hmsg_mgr = msg_queue_obj->hmsg_mgr;
- 
- 	/* Pull off num_to_dsp message frames from Msg manager and free */
--	for (i = 0; i < num_to_dsp; i++) {
--
--		if (!LST_IS_EMPTY(hmsg_mgr->msg_free_list)) {
--			pmsg = (struct msg_frame *)
--			    lst_get_head(hmsg_mgr->msg_free_list);
--			kfree(pmsg);
--		} else {
--			/* Cannot free all of the message frames */
-+	i = 0;
-+	list_for_each_entry_safe(pmsg, tmp, &hmsg_mgr->msg_free_list,
-+			list_elem) {
-+		list_del(&pmsg->list_elem);
-+		kfree(pmsg);
-+		if (i++ >= num_to_dsp)
- 			break;
--		}
- 	}
- 
--	if (msg_queue_obj->msg_free_list) {
--		free_msg_list(msg_queue_obj->msg_free_list);
--		msg_queue_obj->msg_free_list = NULL;
--	}
--
--	if (msg_queue_obj->msg_used_list) {
--		free_msg_list(msg_queue_obj->msg_used_list);
--		msg_queue_obj->msg_used_list = NULL;
--	}
-+	free_msg_list(&msg_queue_obj->msg_free_list);
-+	free_msg_list(&msg_queue_obj->msg_used_list);
- 
- 	if (msg_queue_obj->ntfy_obj) {
- 		ntfy_delete(msg_queue_obj->ntfy_obj);
-@@ -655,19 +594,18 @@ func_end:
- /*
-  *  ======== free_msg_list ========
-  */
--static void free_msg_list(struct lst_list *msg_list)
-+static void free_msg_list(struct list_head *msg_list)
- {
--	struct msg_frame *pmsg;
-+	struct msg_frame *pmsg, *tmp;
- 
- 	if (!msg_list)
- 		goto func_end;
- 
--	while ((pmsg = (struct msg_frame *)lst_get_head(msg_list)) != NULL)
-+	list_for_each_entry_safe(pmsg, tmp, msg_list, list_elem) {
-+		list_del(&pmsg->list_elem);
- 		kfree(pmsg);
-+	}
- 
--	DBC_ASSERT(LST_IS_EMPTY(msg_list));
--
--	kfree(msg_list);
- func_end:
- 	return;
- }
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/_chnl_sm.h b/drivers/staging/tidspbridge/include/dspbridge/_chnl_sm.h
-index 8efd1fb..8a22317 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/_chnl_sm.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/_chnl_sm.h
-@@ -26,7 +26,7 @@
- #include <dspbridge/dspapi.h>
- #include <dspbridge/dspdefs.h>
- 
--#include <dspbridge/list.h>
-+#include <linux/list.h>
- #include <dspbridge/ntfy.h>
- 
- /*
-@@ -148,13 +148,13 @@ struct chnl_object {
- 	struct sync_object *sync_event;
- 	u32 process;		/* Process which created this channel */
- 	u32 pcb_arg;		/* Argument to use with callback */
--	struct lst_list *pio_requests;	/* List of IOR's to driver */
-+	struct list_head pio_requests;	/* List of IOR's to driver */
- 	s32 cio_cs;		/* Number of IOC's in queue */
- 	s32 cio_reqs;		/* Number of IORequests in queue */
- 	s32 chnl_packets;	/* Initial number of free Irps */
- 	/* List of IOC's from driver */
--	struct lst_list *pio_completions;
--	struct lst_list *free_packets_list;	/* List of free Irps */
-+	struct list_head pio_completions;
-+	struct list_head free_packets_list;	/* List of free Irps */
- 	struct ntfy_object *ntfy_obj;
- 	u32 bytes_moved;	/* Total number of bytes transfered */
- 
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/cmmdefs.h b/drivers/staging/tidspbridge/include/dspbridge/cmmdefs.h
-index fbff372..e748ba8 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/cmmdefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/cmmdefs.h
-@@ -19,7 +19,6 @@
- #ifndef CMMDEFS_
- #define CMMDEFS_
- 
--#include <dspbridge/list.h>
- 
- /* Cmm attributes used in cmm_create() */
- struct cmm_mgrattrs {
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/sync.h b/drivers/staging/tidspbridge/include/dspbridge/sync.h
-index df05b8f..b1e75eb 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/sync.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/sync.h
-@@ -20,6 +20,7 @@
- #define _SYNC_H
- 
- #include <dspbridge/dbdefs.h>
-+#include <dspbridge/host_os.h>
- 
- 
- /* Special timeout value indicating an infinite wait: */
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0012-staging-tidspbridge-convert-pmgr-to-list_head.patch b/patches/dspbridge/0012-staging-tidspbridge-convert-pmgr-to-list_head.patch
deleted file mode 100644
index b4caa05402d4183f1a3ab098c4e1dc1f0cd8459f..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0012-staging-tidspbridge-convert-pmgr-to-list_head.patch
+++ /dev/null
@@ -1,596 +0,0 @@
-From 0b72abb2bb29e50f8eacaa8aa740f4418c4a4250 Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Sun, 21 Nov 2010 10:46:25 +0000
-Subject: [PATCH 12/25] staging: tidspbridge: convert pmgr to list_head
-
-Convert the pmgr module of the tidspbridge driver
-to use struct list_head instead of struct lst_list.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/pmgr/cmm.c |  237 ++++++++++----------------------
- drivers/staging/tidspbridge/pmgr/dev.c |   61 ++++-----
- 2 files changed, 100 insertions(+), 198 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/pmgr/cmm.c b/drivers/staging/tidspbridge/pmgr/cmm.c
-index 8dbdd20..d7ca2a4 100644
---- a/drivers/staging/tidspbridge/pmgr/cmm.c
-+++ b/drivers/staging/tidspbridge/pmgr/cmm.c
-@@ -12,7 +12,7 @@
-  * describes a block of physically contiguous shared memory used for
-  * future allocations by CMM.
-  *
-- * Memory is coelesced back to the appropriate heap when a buffer is
-+ * Memory is coalesced back to the appropriate heap when a buffer is
-  * freed.
-  *
-  * Notes:
-@@ -30,6 +30,7 @@
-  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-  */
- #include <linux/types.h>
-+#include <linux/list.h>
- 
- /*  ----------------------------------- DSP/BIOS Bridge */
- #include <dspbridge/dbdefs.h>
-@@ -38,7 +39,6 @@
- #include <dspbridge/dbc.h>
- 
- /*  ----------------------------------- OS Adaptation Layer */
--#include <dspbridge/list.h>
- #include <dspbridge/sync.h>
- 
- /*  ----------------------------------- Platform Manager */
-@@ -73,9 +73,9 @@ struct cmm_allocator {		/* sma */
- 	u32 ul_dsp_size;	/* DSP seg size in bytes */
- 	struct cmm_object *hcmm_mgr;	/* back ref to parent mgr */
- 	/* node list of available memory */
--	struct lst_list *free_list_head;
-+	struct list_head free_list;
- 	/* node list of memory in use */
--	struct lst_list *in_use_list_head;
-+	struct list_head in_use_list;
- };
- 
- struct cmm_xlator {		/* Pa<->Va translator object */
-@@ -97,7 +97,7 @@ struct cmm_object {
- 	 * Cmm Lock is used to serialize access mem manager for multi-threads.
- 	 */
- 	struct mutex cmm_lock;	/* Lock to access cmm mgr */
--	struct lst_list *node_free_list_head;	/* Free list of memory nodes */
-+	struct list_head node_free_list;	/* Free list of memory nodes */
- 	u32 ul_min_block_size;	/* Min SM block; default 16 bytes */
- 	u32 dw_page_size;	/* Memory Page size (1k/4k) */
- 	/* GPP SM segment ptrs */
-@@ -215,8 +215,7 @@ void *cmm_calloc_buf(struct cmm_object *hcmm_mgr, u32 usize,
- 			pnode->client_proc = current->tgid;
- 
- 			/* put our node on InUse list */
--			lst_put_tail(allocator->in_use_list_head,
--				     (struct list_head *)pnode);
-+			list_add_tail(&pnode->link, &allocator->in_use_list);
- 			buf_pa = (void *)pnode->dw_pa;	/* physical address */
- 			/* clear mem */
- 			pbyte = (u8 *) pnode->dw_va;
-@@ -265,18 +264,9 @@ int cmm_create(struct cmm_object **ph_cmm_mgr,
- 		 * MEM_ALLOC_OBJECT */
- 
- 		/* create node free list */
--		cmm_obj->node_free_list_head =
--				kzalloc(sizeof(struct lst_list),
--						GFP_KERNEL);
--		if (cmm_obj->node_free_list_head == NULL) {
--			status = -ENOMEM;
--			cmm_destroy(cmm_obj, true);
--		} else {
--			INIT_LIST_HEAD(&cmm_obj->
--				       node_free_list_head->head);
--			mutex_init(&cmm_obj->cmm_lock);
--			*ph_cmm_mgr = cmm_obj;
--		}
-+		INIT_LIST_HEAD(&cmm_obj->node_free_list);
-+		mutex_init(&cmm_obj->cmm_lock);
-+		*ph_cmm_mgr = cmm_obj;
- 	} else {
- 		status = -ENOMEM;
- 	}
-@@ -294,7 +284,7 @@ int cmm_destroy(struct cmm_object *hcmm_mgr, bool force)
- 	struct cmm_info temp_info;
- 	int status = 0;
- 	s32 slot_seg;
--	struct cmm_mnode *pnode;
-+	struct cmm_mnode *node, *tmp;
- 
- 	DBC_REQUIRE(refs > 0);
- 	if (!hcmm_mgr) {
-@@ -324,15 +314,10 @@ int cmm_destroy(struct cmm_object *hcmm_mgr, bool force)
- 			}
- 		}
- 	}
--	if (cmm_mgr_obj->node_free_list_head != NULL) {
--		/* Free the free nodes */
--		while (!LST_IS_EMPTY(cmm_mgr_obj->node_free_list_head)) {
--			pnode = (struct cmm_mnode *)
--			    lst_get_head(cmm_mgr_obj->node_free_list_head);
--			kfree(pnode);
--		}
--		/* delete NodeFreeList list */
--		kfree(cmm_mgr_obj->node_free_list_head);
-+	list_for_each_entry_safe(node, tmp, &cmm_mgr_obj->node_free_list,
-+			link) {
-+		list_del(&node->link);
-+		kfree(node);
- 	}
- 	mutex_unlock(&cmm_mgr_obj->cmm_lock);
- 	if (!status) {
-@@ -366,7 +351,7 @@ int cmm_free_buf(struct cmm_object *hcmm_mgr, void *buf_pa,
- {
- 	struct cmm_object *cmm_mgr_obj = (struct cmm_object *)hcmm_mgr;
- 	int status = -EFAULT;
--	struct cmm_mnode *mnode_obj = NULL;
-+	struct cmm_mnode *curr, *tmp;
- 	struct cmm_allocator *allocator = NULL;
- 	struct cmm_attrs *pattrs;
- 
-@@ -385,22 +370,14 @@ int cmm_free_buf(struct cmm_object *hcmm_mgr, void *buf_pa,
- 	allocator = get_allocator(cmm_mgr_obj, ul_seg_id);
- 	if (allocator != NULL) {
- 		mutex_lock(&cmm_mgr_obj->cmm_lock);
--		mnode_obj =
--		    (struct cmm_mnode *)lst_first(allocator->in_use_list_head);
--		while (mnode_obj) {
--			if ((u32) buf_pa == mnode_obj->dw_pa) {
--				/* Found it */
--				lst_remove_elem(allocator->in_use_list_head,
--						(struct list_head *)mnode_obj);
--				/* back to freelist */
--				add_to_free_list(allocator, mnode_obj);
--				status = 0;	/* all right! */
-+		list_for_each_entry_safe(curr, tmp, &allocator->in_use_list,
-+				link) {
-+			if (curr->dw_pa == (u32) buf_pa) {
-+				list_del(&curr->link);
-+				add_to_free_list(allocator, curr);
-+				status = 0;
- 				break;
- 			}
--			/* next node. */
--			mnode_obj = (struct cmm_mnode *)
--			    lst_next(allocator->in_use_list_head,
--				     (struct list_head *)mnode_obj);
- 		}
- 		mutex_unlock(&cmm_mgr_obj->cmm_lock);
- 	}
-@@ -443,7 +420,7 @@ int cmm_get_info(struct cmm_object *hcmm_mgr,
- 	u32 ul_seg;
- 	int status = 0;
- 	struct cmm_allocator *altr;
--	struct cmm_mnode *mnode_obj = NULL;
-+	struct cmm_mnode *curr;
- 
- 	DBC_REQUIRE(cmm_info_obj != NULL);
- 
-@@ -478,17 +455,11 @@ int cmm_get_info(struct cmm_object *hcmm_mgr,
- 			cmm_info_obj->seg_info[ul_seg - 1].dw_seg_base_va =
- 			    altr->dw_vm_base - altr->ul_dsp_size;
- 			cmm_info_obj->seg_info[ul_seg - 1].ul_in_use_cnt = 0;
--			mnode_obj = (struct cmm_mnode *)
--			    lst_first(altr->in_use_list_head);
- 			/* Count inUse blocks */
--			while (mnode_obj) {
-+			list_for_each_entry(curr, &altr->in_use_list, link) {
- 				cmm_info_obj->ul_total_in_use_cnt++;
- 				cmm_info_obj->seg_info[ul_seg -
- 						       1].ul_in_use_cnt++;
--				/* next node. */
--				mnode_obj = (struct cmm_mnode *)
--				    lst_next(altr->in_use_list_head,
--					     (struct list_head *)mnode_obj);
- 			}
- 		}
- 	}			/* end for */
-@@ -578,30 +549,17 @@ int cmm_register_gppsm_seg(struct cmm_object *hcmm_mgr,
- 		/* return the actual segment identifier */
- 		*sgmt_id = (u32) slot_seg + 1;
- 		/* create memory free list */
--		psma->free_list_head = kzalloc(sizeof(struct lst_list),
--							GFP_KERNEL);
--		if (psma->free_list_head == NULL) {
--			status = -ENOMEM;
--			goto func_end;
--		}
--		INIT_LIST_HEAD(&psma->free_list_head->head);
-+		INIT_LIST_HEAD(&psma->free_list);
- 
- 		/* create memory in-use list */
--		psma->in_use_list_head = kzalloc(sizeof(struct
--						lst_list), GFP_KERNEL);
--		if (psma->in_use_list_head == NULL) {
--			status = -ENOMEM;
--			goto func_end;
--		}
--		INIT_LIST_HEAD(&psma->in_use_list_head->head);
-+		INIT_LIST_HEAD(&psma->in_use_list);
- 
- 		/* Get a mem node for this hunk-o-memory */
- 		new_node = get_node(cmm_mgr_obj, dw_gpp_base_pa,
- 				    psma->dw_vm_base, ul_size);
- 		/* Place node on the SM allocator's free list */
- 		if (new_node) {
--			lst_put_tail(psma->free_list_head,
--				     (struct list_head *)new_node);
-+			list_add_tail(&new_node->link, &psma->free_list);
- 		} else {
- 			status = -ENOMEM;
- 			goto func_end;
-@@ -680,41 +638,22 @@ int cmm_un_register_gppsm_seg(struct cmm_object *hcmm_mgr,
-  */
- static void un_register_gppsm_seg(struct cmm_allocator *psma)
- {
--	struct cmm_mnode *mnode_obj = NULL;
--	struct cmm_mnode *next_node = NULL;
-+	struct cmm_mnode *curr, *tmp;
- 
- 	DBC_REQUIRE(psma != NULL);
--	if (psma->free_list_head != NULL) {
--		/* free nodes on free list */
--		mnode_obj = (struct cmm_mnode *)lst_first(psma->free_list_head);
--		while (mnode_obj) {
--			next_node =
--			    (struct cmm_mnode *)lst_next(psma->free_list_head,
--							 (struct list_head *)
--							 mnode_obj);
--			lst_remove_elem(psma->free_list_head,
--					(struct list_head *)mnode_obj);
--			kfree((void *)mnode_obj);
--			/* next node. */
--			mnode_obj = next_node;
--		}
--		kfree(psma->free_list_head);	/* delete freelist */
--		/* free nodes on InUse list */
--		mnode_obj =
--		    (struct cmm_mnode *)lst_first(psma->in_use_list_head);
--		while (mnode_obj) {
--			next_node =
--			    (struct cmm_mnode *)lst_next(psma->in_use_list_head,
--							 (struct list_head *)
--							 mnode_obj);
--			lst_remove_elem(psma->in_use_list_head,
--					(struct list_head *)mnode_obj);
--			kfree((void *)mnode_obj);
--			/* next node. */
--			mnode_obj = next_node;
--		}
--		kfree(psma->in_use_list_head);	/* delete InUse list */
-+
-+	/* free nodes on free list */
-+	list_for_each_entry_safe(curr, tmp, &psma->free_list, link) {
-+		list_del(&curr->link);
-+		kfree(curr);
- 	}
-+
-+	/* free nodes on InUse list */
-+	list_for_each_entry_safe(curr, tmp, &psma->in_use_list, link) {
-+		list_del(&curr->link);
-+		kfree(curr);
-+	}
-+
- 	if ((void *)psma->dw_vm_base != NULL)
- 		MEM_UNMAP_LINEAR_ADDRESS((void *)psma->dw_vm_base);
- 
-@@ -758,15 +697,15 @@ static struct cmm_mnode *get_node(struct cmm_object *cmm_mgr_obj, u32 dw_pa,
- 	DBC_REQUIRE(dw_va != 0);
- 	DBC_REQUIRE(ul_size != 0);
- 	/* Check cmm mgr's node freelist */
--	if (LST_IS_EMPTY(cmm_mgr_obj->node_free_list_head)) {
-+	if (list_empty(&cmm_mgr_obj->node_free_list)) {
- 		pnode = kzalloc(sizeof(struct cmm_mnode), GFP_KERNEL);
- 	} else {
- 		/* surely a valid element */
--		pnode = (struct cmm_mnode *)
--		    lst_get_head(cmm_mgr_obj->node_free_list_head);
-+		pnode = list_first_entry(&cmm_mgr_obj->node_free_list,
-+				struct cmm_mnode, link);
-+		list_del(&pnode->link);
- 	}
- 	if (pnode) {
--		lst_init_elem((struct list_head *)pnode);	/* set self */
- 		pnode->dw_pa = dw_pa;	/* Physical addr of start of block */
- 		pnode->dw_va = dw_va;	/* Virtual   "            " */
- 		pnode->ul_size = ul_size;	/* Size of block */
-@@ -783,9 +722,7 @@ static struct cmm_mnode *get_node(struct cmm_object *cmm_mgr_obj, u32 dw_pa,
- static void delete_node(struct cmm_object *cmm_mgr_obj, struct cmm_mnode *pnode)
- {
- 	DBC_REQUIRE(pnode != NULL);
--	lst_init_elem((struct list_head *)pnode);	/* init .self ptr */
--	lst_put_tail(cmm_mgr_obj->node_free_list_head,
--		     (struct list_head *)pnode);
-+	list_add_tail(&pnode->link, &cmm_mgr_obj->node_free_list);
- }
- 
- /*
-@@ -797,28 +734,26 @@ static void delete_node(struct cmm_object *cmm_mgr_obj, struct cmm_mnode *pnode)
- static struct cmm_mnode *get_free_block(struct cmm_allocator *allocator,
- 					u32 usize)
- {
--	if (allocator) {
--		struct cmm_mnode *mnode_obj = (struct cmm_mnode *)
--		    lst_first(allocator->free_list_head);
--		while (mnode_obj) {
--			if (usize <= (u32) mnode_obj->ul_size) {
--				lst_remove_elem(allocator->free_list_head,
--						(struct list_head *)mnode_obj);
--				return mnode_obj;
--			}
--			/* next node. */
--			mnode_obj = (struct cmm_mnode *)
--			    lst_next(allocator->free_list_head,
--				     (struct list_head *)mnode_obj);
-+	struct cmm_mnode *node, *tmp;
-+
-+	if (!allocator)
-+		return NULL;
-+
-+	list_for_each_entry_safe(node, tmp, &allocator->free_list, link) {
-+		if (usize <= (u32) node->ul_size) {
-+			list_del(&node->link);
-+			return node;
- 		}
-+
- 	}
-+
- 	return NULL;
- }
- 
- /*
-  *  ======== add_to_free_list ========
-  *  Purpose:
-- *      Coelesce node into the freelist in ascending size order.
-+ *      Coalesce node into the freelist in ascending size order.
-  */
- static void add_to_free_list(struct cmm_allocator *allocator,
- 			     struct cmm_mnode *pnode)
-@@ -829,71 +764,51 @@ static void add_to_free_list(struct cmm_allocator *allocator,
- 	u32 dw_this_pa;
- 	u32 dw_next_pa;
- 
--	DBC_REQUIRE(pnode != NULL);
--	DBC_REQUIRE(allocator != NULL);
-+	if (!pnode) {
-+		pr_err("%s: failed - pnode is NULL\n", __func__);
-+		return;
-+	}
-+
- 	dw_this_pa = pnode->dw_pa;
- 	dw_next_pa = NEXT_PA(pnode);
--	mnode_obj = (struct cmm_mnode *)lst_first(allocator->free_list_head);
--	while (mnode_obj) {
-+	list_for_each_entry(mnode_obj, &allocator->free_list, link) {
- 		if (dw_this_pa == NEXT_PA(mnode_obj)) {
- 			/* found the block ahead of this one */
- 			node_prev = mnode_obj;
- 		} else if (dw_next_pa == mnode_obj->dw_pa) {
- 			node_next = mnode_obj;
- 		}
--		if ((node_prev == NULL) || (node_next == NULL)) {
--			/* next node. */
--			mnode_obj = (struct cmm_mnode *)
--			    lst_next(allocator->free_list_head,
--				     (struct list_head *)mnode_obj);
--		} else {
--			/* got 'em */
-+		if ((node_prev != NULL) && (node_next != NULL))
- 			break;
--		}
--	}			/* while */
-+	}
- 	if (node_prev != NULL) {
- 		/* combine with previous block */
--		lst_remove_elem(allocator->free_list_head,
--				(struct list_head *)node_prev);
-+		list_del(&node_prev->link);
- 		/* grow node to hold both */
- 		pnode->ul_size += node_prev->ul_size;
- 		pnode->dw_pa = node_prev->dw_pa;
- 		pnode->dw_va = node_prev->dw_va;
- 		/* place node on mgr nodeFreeList */
--		delete_node((struct cmm_object *)allocator->hcmm_mgr,
--			    node_prev);
-+		delete_node(allocator->hcmm_mgr, node_prev);
- 	}
- 	if (node_next != NULL) {
- 		/* combine with next block */
--		lst_remove_elem(allocator->free_list_head,
--				(struct list_head *)node_next);
-+		list_del(&node_next->link);
- 		/* grow da node */
- 		pnode->ul_size += node_next->ul_size;
- 		/* place node on mgr nodeFreeList */
--		delete_node((struct cmm_object *)allocator->hcmm_mgr,
--			    node_next);
-+		delete_node(allocator->hcmm_mgr, node_next);
- 	}
- 	/* Now, let's add to freelist in increasing size order */
--	mnode_obj = (struct cmm_mnode *)lst_first(allocator->free_list_head);
--	while (mnode_obj) {
--		if (pnode->ul_size <= mnode_obj->ul_size)
--			break;
--
--		/* next node. */
--		mnode_obj =
--		    (struct cmm_mnode *)lst_next(allocator->free_list_head,
--						 (struct list_head *)mnode_obj);
--	}
--	/* if mnode_obj is NULL then add our pnode to the end of the freelist */
--	if (mnode_obj == NULL) {
--		lst_put_tail(allocator->free_list_head,
--			     (struct list_head *)pnode);
--	} else {
--		/* insert our node before the current traversed node */
--		lst_insert_before(allocator->free_list_head,
--				  (struct list_head *)pnode,
--				  (struct list_head *)mnode_obj);
-+	list_for_each_entry(mnode_obj, &allocator->free_list, link) {
-+		if (pnode->ul_size <= mnode_obj->ul_size) {
-+			/* insert our node before the current traversed node  */
-+			list_add_tail(&pnode->link, &mnode_obj->link);
-+			return;
-+		}
- 	}
-+	/* add our pnode to the end of the freelist */
-+	list_add_tail(&pnode->link, &allocator->free_list);
- }
- 
- /*
-diff --git a/drivers/staging/tidspbridge/pmgr/dev.c b/drivers/staging/tidspbridge/pmgr/dev.c
-index 132e960..6ce3493 100644
---- a/drivers/staging/tidspbridge/pmgr/dev.c
-+++ b/drivers/staging/tidspbridge/pmgr/dev.c
-@@ -16,6 +16,7 @@
-  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-  */
- #include <linux/types.h>
-+#include <linux/list.h>
- 
- /*  ----------------------------------- Host OS */
- #include <dspbridge/host_os.h>
-@@ -28,7 +29,6 @@
- 
- /*  ----------------------------------- OS Adaptation Layer */
- #include <dspbridge/ldr.h>
--#include <dspbridge/list.h>
- 
- /*  ----------------------------------- Platform Manager */
- #include <dspbridge/cod.h>
-@@ -60,7 +60,6 @@
- 
- /* The Bridge device object: */
- struct dev_object {
--	/* LST requires "link" to be first field! */
- 	struct list_head link;	/* Link to next dev_object. */
- 	u8 dev_type;		/* Device Type */
- 	struct cfg_devnode *dev_node_obj;	/* Platform specific dev id */
-@@ -79,7 +78,7 @@ struct dev_object {
- 	struct ldr_module *module_obj;	/* Bridge Module handle. */
- 	u32 word_size;		/* DSP word size: quick access. */
- 	struct drv_object *hdrv_obj;	/* Driver Object */
--	struct lst_list *proc_list;	/* List of Proceeosr attached to
-+	struct list_head proc_list;	/* List of Processor attached to
- 					 * this device */
- 	struct node_mgr *hnode_mgr;
- };
-@@ -255,19 +254,12 @@ int dev_create_device(struct dev_object **device_obj,
- 				    (struct dev_object *)dev_obj, NULL);
- 	}
- 	/* Add the new DEV_Object to the global list: */
--	if (!status) {
--		lst_init_elem(&dev_obj->link);
-+	if (!status)
- 		status = drv_insert_dev_object(hdrv_obj, dev_obj);
--	}
-+
- 	/* Create the Processor List */
--	if (!status) {
--		dev_obj->proc_list = kzalloc(sizeof(struct lst_list),
--							GFP_KERNEL);
--		if (!(dev_obj->proc_list))
--			status = -EPERM;
--		else
--			INIT_LIST_HEAD(&dev_obj->proc_list->head);
--	}
-+	if (!status)
-+		INIT_LIST_HEAD(&dev_obj->proc_list);
- leave:
- 	/*  If all went well, return a handle to the dev object;
- 	 *  else, cleanup and return NULL in the OUT parameter. */
-@@ -275,7 +267,6 @@ leave:
- 		*device_obj = dev_obj;
- 	} else {
- 		if (dev_obj) {
--			kfree(dev_obj->proc_list);
- 			if (dev_obj->cod_mgr)
- 				cod_delete(dev_obj->cod_mgr);
- 			if (dev_obj->dmm_mgr)
-@@ -403,9 +394,6 @@ int dev_destroy_device(struct dev_object *hdev_obj)
- 		} else
- 			status = -EPERM;
- 		if (!status) {
--			kfree(dev_obj->proc_list);
--			dev_obj->proc_list = NULL;
--
- 			/* Remove this DEV_Object from the global list: */
- 			drv_remove_dev_object(dev_obj->hdrv_obj, dev_obj);
- 			/* Free The library * LDR_FreeModule
-@@ -801,18 +789,17 @@ bool dev_init(void)
-  */
- int dev_notify_clients(struct dev_object *hdev_obj, u32 ret)
- {
--	int status = 0;
--
- 	struct dev_object *dev_obj = hdev_obj;
--	void *proc_obj;
-+	struct list_head *curr;
- 
--	for (proc_obj = (void *)lst_first(dev_obj->proc_list);
--	     proc_obj != NULL;
--	     proc_obj = (void *)lst_next(dev_obj->proc_list,
--					 (struct list_head *)proc_obj))
--		proc_notify_clients(proc_obj, (u32) ret);
-+	/*
-+	 * FIXME: this code needs struct proc_object to have a list_head
-+	 * at the begining. If not, this can go horribly wrong.
-+	 */
-+	list_for_each(curr, &dev_obj->proc_list)
-+		proc_notify_clients((void *)curr, (u32) ret);
- 
--	return status;
-+	return 0;
- }
- 
- /*
-@@ -1000,15 +987,18 @@ int dev_insert_proc_object(struct dev_object *hdev_obj,
- 	DBC_REQUIRE(refs > 0);
- 	DBC_REQUIRE(dev_obj);
- 	DBC_REQUIRE(proc_obj != 0);
--	DBC_REQUIRE(dev_obj->proc_list != NULL);
- 	DBC_REQUIRE(already_attached != NULL);
--	if (!LST_IS_EMPTY(dev_obj->proc_list))
-+	if (!list_empty(&dev_obj->proc_list))
- 		*already_attached = true;
- 
- 	/* Add DevObject to tail. */
--	lst_put_tail(dev_obj->proc_list, (struct list_head *)proc_obj);
-+	/*
-+	 * FIXME: this code needs struct proc_object to have a list_head
-+	 * at the begining. If not, this can go horribly wrong.
-+	 */
-+	list_add_tail((struct list_head *)proc_obj, &dev_obj->proc_list);
- 
--	DBC_ENSURE(!status && !LST_IS_EMPTY(dev_obj->proc_list));
-+	DBC_ENSURE(!status && !list_empty(&dev_obj->proc_list));
- 
- 	return status;
- }
-@@ -1039,15 +1029,12 @@ int dev_remove_proc_object(struct dev_object *hdev_obj, u32 proc_obj)
- 
- 	DBC_REQUIRE(dev_obj);
- 	DBC_REQUIRE(proc_obj != 0);
--	DBC_REQUIRE(dev_obj->proc_list != NULL);
--	DBC_REQUIRE(!LST_IS_EMPTY(dev_obj->proc_list));
-+	DBC_REQUIRE(!list_empty(&dev_obj->proc_list));
- 
- 	/* Search list for dev_obj: */
--	for (cur_elem = lst_first(dev_obj->proc_list); cur_elem != NULL;
--	     cur_elem = lst_next(dev_obj->proc_list, cur_elem)) {
--		/* If found, remove it. */
-+	list_for_each(cur_elem, &dev_obj->proc_list) {
- 		if ((u32) cur_elem == proc_obj) {
--			lst_remove_elem(dev_obj->proc_list, cur_elem);
-+			list_del(cur_elem);
- 			status = 0;
- 			break;
- 		}
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0013-staging-tidspbridge-convert-rmgr-to-list_head.patch b/patches/dspbridge/0013-staging-tidspbridge-convert-rmgr-to-list_head.patch
deleted file mode 100644
index cfe2dc4097fd5aebc7ae6bfad93bd3624a9c5eb5..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0013-staging-tidspbridge-convert-rmgr-to-list_head.patch
+++ /dev/null
@@ -1,625 +0,0 @@
-From 822ec7bac3c8720ea903ba0c9ff7a90f7c4250c3 Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@mindbit.ro>
-Date: Sun, 21 Nov 2010 10:46:26 +0000
-Subject: [PATCH 13/25] staging: tidspbridge: convert rmgr to list_head
-
-Convert the rmgr module of the tidspbridge driver
-to use struct list_head instead of struct lst_list.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/rmgr/drv.c  |  115 ++++++++----------------------
- drivers/staging/tidspbridge/rmgr/node.c |   50 ++++---------
- drivers/staging/tidspbridge/rmgr/proc.c |    2 -
- drivers/staging/tidspbridge/rmgr/rmm.c  |   75 +++++++-------------
- 4 files changed, 72 insertions(+), 170 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/rmgr/drv.c b/drivers/staging/tidspbridge/rmgr/drv.c
-index c50579c..e0fc895 100644
---- a/drivers/staging/tidspbridge/rmgr/drv.c
-+++ b/drivers/staging/tidspbridge/rmgr/drv.c
-@@ -16,6 +16,7 @@
-  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-  */
- #include <linux/types.h>
-+#include <linux/list.h>
- 
- /*  ----------------------------------- Host OS */
- #include <dspbridge/host_os.h>
-@@ -26,9 +27,6 @@
- /*  ----------------------------------- Trace & Debug */
- #include <dspbridge/dbc.h>
- 
--/*  ----------------------------------- OS Adaptation Layer */
--#include <dspbridge/list.h>
--
- /*  ----------------------------------- This */
- #include <dspbridge/drv.h>
- #include <dspbridge/dev.h>
-@@ -42,8 +40,8 @@
- 
- /*  ----------------------------------- Defines, Data Structures, Typedefs */
- struct drv_object {
--	struct lst_list *dev_list;
--	struct lst_list *dev_node_string;
-+	struct list_head dev_list;
-+	struct list_head dev_node_string;
- };
- 
- /*
-@@ -316,22 +314,8 @@ int drv_create(struct drv_object **drv_obj)
- 	pdrv_object = kzalloc(sizeof(struct drv_object), GFP_KERNEL);
- 	if (pdrv_object) {
- 		/* Create and Initialize List of device objects */
--		pdrv_object->dev_list = kzalloc(sizeof(struct lst_list),
--							GFP_KERNEL);
--		if (pdrv_object->dev_list) {
--			/* Create and Initialize List of device Extension */
--			pdrv_object->dev_node_string =
--				kzalloc(sizeof(struct lst_list), GFP_KERNEL);
--			if (!(pdrv_object->dev_node_string)) {
--				status = -EPERM;
--			} else {
--				INIT_LIST_HEAD(&pdrv_object->
--					       dev_node_string->head);
--				INIT_LIST_HEAD(&pdrv_object->dev_list->head);
--			}
--		} else {
--			status = -ENOMEM;
--		}
-+		INIT_LIST_HEAD(&pdrv_object->dev_list);
-+		INIT_LIST_HEAD(&pdrv_object->dev_node_string);
- 	} else {
- 		status = -ENOMEM;
- 	}
-@@ -348,8 +332,6 @@ int drv_create(struct drv_object **drv_obj)
- 	if (!status) {
- 		*drv_obj = pdrv_object;
- 	} else {
--		kfree(pdrv_object->dev_list);
--		kfree(pdrv_object->dev_node_string);
- 		/* Free the DRV Object */
- 		kfree(pdrv_object);
- 	}
-@@ -386,13 +368,6 @@ int drv_destroy(struct drv_object *driver_obj)
- 	DBC_REQUIRE(refs > 0);
- 	DBC_REQUIRE(pdrv_object);
- 
--	/*
--	 *  Delete the List if it exists.Should not come here
--	 *  as the drv_remove_dev_object and the Last drv_request_resources
--	 *  removes the list if the lists are empty.
--	 */
--	kfree(pdrv_object->dev_list);
--	kfree(pdrv_object->dev_node_string);
- 	kfree(pdrv_object);
- 	/* Update the DRV Object in the driver data */
- 	if (drv_datap) {
-@@ -424,7 +399,7 @@ int drv_get_dev_object(u32 index, struct drv_object *hdrv_obj,
- 	DBC_REQUIRE(device_obj != NULL);
- 	DBC_REQUIRE(index >= 0);
- 	DBC_REQUIRE(refs > 0);
--	DBC_ASSERT(!(LST_IS_EMPTY(pdrv_obj->dev_list)));
-+	DBC_ASSERT(!(list_empty(&pdrv_obj->dev_list)));
- 
- 	dev_obj = (struct dev_object *)drv_get_first_dev_object();
- 	for (i = 0; i < index; i++) {
-@@ -455,9 +430,8 @@ u32 drv_get_first_dev_object(void)
- 
- 	if (drv_datap && drv_datap->drv_object) {
- 		pdrv_obj = drv_datap->drv_object;
--		if ((pdrv_obj->dev_list != NULL) &&
--		    !LST_IS_EMPTY(pdrv_obj->dev_list))
--			dw_dev_object = (u32) lst_first(pdrv_obj->dev_list);
-+		if (!list_empty(&pdrv_obj->dev_list))
-+			dw_dev_object = (u32) pdrv_obj->dev_list.next;
- 	} else {
- 		pr_err("%s: Failed to retrieve the object handle\n", __func__);
- 	}
-@@ -479,10 +453,9 @@ u32 drv_get_first_dev_extension(void)
- 
- 	if (drv_datap && drv_datap->drv_object) {
- 		pdrv_obj = drv_datap->drv_object;
--		if ((pdrv_obj->dev_node_string != NULL) &&
--		    !LST_IS_EMPTY(pdrv_obj->dev_node_string)) {
-+		if (!list_empty(&pdrv_obj->dev_node_string)) {
- 			dw_dev_extension =
--			    (u32) lst_first(pdrv_obj->dev_node_string);
-+			    (u32) pdrv_obj->dev_node_string.next;
- 		}
- 	} else {
- 		pr_err("%s: Failed to retrieve the object handle\n", __func__);
-@@ -503,16 +476,15 @@ u32 drv_get_next_dev_object(u32 hdev_obj)
- 	u32 dw_next_dev_object = 0;
- 	struct drv_object *pdrv_obj;
- 	struct drv_data *drv_datap = dev_get_drvdata(bridge);
--
--	DBC_REQUIRE(hdev_obj != 0);
-+	struct list_head *curr;
- 
- 	if (drv_datap && drv_datap->drv_object) {
- 		pdrv_obj = drv_datap->drv_object;
--		if ((pdrv_obj->dev_list != NULL) &&
--		    !LST_IS_EMPTY(pdrv_obj->dev_list)) {
--			dw_next_dev_object = (u32) lst_next(pdrv_obj->dev_list,
--							    (struct list_head *)
--							    hdev_obj);
-+		if (!list_empty(&pdrv_obj->dev_list)) {
-+			curr = (struct list_head *)hdev_obj;
-+			if (list_is_last(curr, &pdrv_obj->dev_list))
-+				return 0;
-+			dw_next_dev_object = (u32) curr->next;
- 		}
- 	} else {
- 		pr_err("%s: Failed to retrieve the object handle\n", __func__);
-@@ -534,16 +506,15 @@ u32 drv_get_next_dev_extension(u32 dev_extension)
- 	u32 dw_dev_extension = 0;
- 	struct drv_object *pdrv_obj;
- 	struct drv_data *drv_datap = dev_get_drvdata(bridge);
--
--	DBC_REQUIRE(dev_extension != 0);
-+	struct list_head *curr;
- 
- 	if (drv_datap && drv_datap->drv_object) {
- 		pdrv_obj = drv_datap->drv_object;
--		if ((pdrv_obj->dev_node_string != NULL) &&
--		    !LST_IS_EMPTY(pdrv_obj->dev_node_string)) {
--			dw_dev_extension =
--			    (u32) lst_next(pdrv_obj->dev_node_string,
--					   (struct list_head *)dev_extension);
-+		if (!list_empty(&pdrv_obj->dev_node_string)) {
-+			curr = (struct list_head *)dev_extension;
-+			if (list_is_last(curr, &pdrv_obj->dev_node_string))
-+				return 0;
-+			dw_dev_extension = (u32) curr->next;
- 		}
- 	} else {
- 		pr_err("%s: Failed to retrieve the object handle\n", __func__);
-@@ -584,11 +555,8 @@ int drv_insert_dev_object(struct drv_object *driver_obj,
- 	DBC_REQUIRE(refs > 0);
- 	DBC_REQUIRE(hdev_obj != NULL);
- 	DBC_REQUIRE(pdrv_object);
--	DBC_ASSERT(pdrv_object->dev_list);
--
--	lst_put_tail(pdrv_object->dev_list, (struct list_head *)hdev_obj);
- 
--	DBC_ENSURE(!LST_IS_EMPTY(pdrv_object->dev_list));
-+	list_add_tail((struct list_head *)hdev_obj, &pdrv_object->dev_list);
- 
- 	return 0;
- }
-@@ -610,26 +578,17 @@ int drv_remove_dev_object(struct drv_object *driver_obj,
- 	DBC_REQUIRE(pdrv_object);
- 	DBC_REQUIRE(hdev_obj != NULL);
- 
--	DBC_REQUIRE(pdrv_object->dev_list != NULL);
--	DBC_REQUIRE(!LST_IS_EMPTY(pdrv_object->dev_list));
-+	DBC_REQUIRE(!list_empty(&pdrv_object->dev_list));
- 
- 	/* Search list for p_proc_object: */
--	for (cur_elem = lst_first(pdrv_object->dev_list); cur_elem != NULL;
--	     cur_elem = lst_next(pdrv_object->dev_list, cur_elem)) {
-+	list_for_each(cur_elem, &pdrv_object->dev_list) {
- 		/* If found, remove it. */
- 		if ((struct dev_object *)cur_elem == hdev_obj) {
--			lst_remove_elem(pdrv_object->dev_list, cur_elem);
-+			list_del(cur_elem);
- 			status = 0;
- 			break;
- 		}
- 	}
--	/* Remove list if empty. */
--	if (LST_IS_EMPTY(pdrv_object->dev_list)) {
--		kfree(pdrv_object->dev_list);
--		pdrv_object->dev_list = NULL;
--	}
--	DBC_ENSURE((pdrv_object->dev_list == NULL) ||
--		   !LST_IS_EMPTY(pdrv_object->dev_list));
- 
- 	return status;
- }
-@@ -663,14 +622,13 @@ int drv_request_resources(u32 dw_context, u32 *dev_node_strg)
- 	if (!status) {
- 		pszdev_node = kzalloc(sizeof(struct drv_ext), GFP_KERNEL);
- 		if (pszdev_node) {
--			lst_init_elem(&pszdev_node->link);
- 			strncpy(pszdev_node->sz_string,
- 				(char *)dw_context, MAXREGPATHLENGTH - 1);
- 			pszdev_node->sz_string[MAXREGPATHLENGTH - 1] = '\0';
- 			/* Update the Driver Object List */
- 			*dev_node_strg = (u32) pszdev_node->sz_string;
--			lst_put_tail(pdrv_object->dev_node_string,
--				     (struct list_head *)pszdev_node);
-+			list_add_tail(&pszdev_node->link,
-+					&pdrv_object->dev_node_string);
- 		} else {
- 			status = -ENOMEM;
- 			*dev_node_strg = 0;
-@@ -682,7 +640,7 @@ int drv_request_resources(u32 dw_context, u32 *dev_node_strg)
- 	}
- 
- 	DBC_ENSURE((!status && dev_node_strg != NULL &&
--		    !LST_IS_EMPTY(pdrv_object->dev_node_string)) ||
-+		    !list_empty(&pdrv_object->dev_node_string)) ||
- 		   (status && *dev_node_strg == 0));
- 
- 	return status;
-@@ -696,7 +654,6 @@ int drv_request_resources(u32 dw_context, u32 *dev_node_strg)
- int drv_release_resources(u32 dw_context, struct drv_object *hdrv_obj)
- {
- 	int status = 0;
--	struct drv_object *pdrv_object = (struct drv_object *)hdrv_obj;
- 	struct drv_ext *pszdev_node;
- 
- 	/*
-@@ -706,23 +663,13 @@ int drv_release_resources(u32 dw_context, struct drv_object *hdrv_obj)
- 	for (pszdev_node = (struct drv_ext *)drv_get_first_dev_extension();
- 	     pszdev_node != NULL; pszdev_node = (struct drv_ext *)
- 	     drv_get_next_dev_extension((u32) pszdev_node)) {
--		if (!pdrv_object->dev_node_string) {
--			/* When this could happen? */
--			continue;
--		}
- 		if ((u32) pszdev_node == dw_context) {
- 			/* Found it */
- 			/* Delete from the Driver object list */
--			lst_remove_elem(pdrv_object->dev_node_string,
--					(struct list_head *)pszdev_node);
--			kfree((void *)pszdev_node);
-+			list_del(&pszdev_node->link);
-+			kfree(pszdev_node);
- 			break;
- 		}
--		/* Delete the List if it is empty */
--		if (LST_IS_EMPTY(pdrv_object->dev_node_string)) {
--			kfree(pdrv_object->dev_node_string);
--			pdrv_object->dev_node_string = NULL;
--		}
- 	}
- 	return status;
- }
-diff --git a/drivers/staging/tidspbridge/rmgr/node.c b/drivers/staging/tidspbridge/rmgr/node.c
-index ab35806..62d5c31 100644
---- a/drivers/staging/tidspbridge/rmgr/node.c
-+++ b/drivers/staging/tidspbridge/rmgr/node.c
-@@ -18,6 +18,8 @@
- 
- #include <linux/types.h>
- #include <linux/bitmap.h>
-+#include <linux/list.h>
-+
- /*  ----------------------------------- Host OS */
- #include <dspbridge/host_os.h>
- 
-@@ -28,7 +30,6 @@
- #include <dspbridge/dbc.h>
- 
- /*  ----------------------------------- OS Adaptation Layer */
--#include <dspbridge/list.h>
- #include <dspbridge/memdefs.h>
- #include <dspbridge/proc.h>
- #include <dspbridge/strm.h>
-@@ -129,7 +130,7 @@ struct node_mgr {
- 	struct bridge_drv_interface *intf_fxns;
- 	struct dcd_manager *hdcd_mgr;	/* Proc/Node data manager */
- 	struct disp_object *disp_obj;	/* Node dispatcher */
--	struct lst_list *node_list;	/* List of all allocated nodes */
-+	struct list_head node_list;	/* List of all allocated nodes */
- 	u32 num_nodes;		/* Number of nodes in node_list */
- 	u32 num_created;	/* Number of nodes *created* on DSP */
- 	DECLARE_BITMAP(pipe_map, MAXPIPES); /* Pipe connection bitmap */
-@@ -640,13 +641,12 @@ func_cont:
- 	if (!status) {
- 		/* Add the node to the node manager's list of allocated
- 		 * nodes. */
--		lst_init_elem((struct list_head *)pnode);
- 		NODE_SET_STATE(pnode, NODE_ALLOCATED);
- 
- 		mutex_lock(&hnode_mgr->node_mgr_lock);
- 
--		lst_put_tail(hnode_mgr->node_list, (struct list_head *) pnode);
--			++(hnode_mgr->num_nodes);
-+		list_add_tail(&pnode->list_elem, &hnode_mgr->node_list);
-+		++(hnode_mgr->num_nodes);
- 
- 		/* Exit critical section */
- 		mutex_unlock(&hnode_mgr->node_mgr_lock);
-@@ -1338,9 +1338,7 @@ int node_create_mgr(struct node_mgr **node_man,
- 	node_mgr_obj = kzalloc(sizeof(struct node_mgr), GFP_KERNEL);
- 	if (node_mgr_obj) {
- 		node_mgr_obj->hdev_obj = hdev_obj;
--		node_mgr_obj->node_list = kzalloc(sizeof(struct lst_list),
--				GFP_KERNEL);
--		INIT_LIST_HEAD(&node_mgr_obj->node_list->head);
-+		INIT_LIST_HEAD(&node_mgr_obj->node_list);
- 		node_mgr_obj->ntfy_obj = kmalloc(
- 				sizeof(struct ntfy_object), GFP_KERNEL);
- 		if (node_mgr_obj->ntfy_obj)
-@@ -1563,7 +1561,7 @@ func_cont1:
- 	}
- 	/* Free host side resources even if a failure occurred */
- 	/* Remove node from hnode_mgr->node_list */
--	lst_remove_elem(hnode_mgr->node_list, (struct list_head *)pnode);
-+	list_del(&pnode->list_elem);
- 	hnode_mgr->num_nodes--;
- 	/* Decrement count of nodes created on DSP */
- 	if ((state != NODE_ALLOCATED) || ((state == NODE_ALLOCATED) &&
-@@ -1617,7 +1615,7 @@ int node_enum_nodes(struct node_mgr *hnode_mgr, void **node_tab,
- 			   u32 *pu_allocated)
- {
- 	struct node_object *hnode;
--	u32 i;
-+	u32 i = 0;
- 	int status = 0;
- 	DBC_REQUIRE(refs > 0);
- 	DBC_REQUIRE(node_tab != NULL || node_tab_size == 0);
-@@ -1636,15 +1634,8 @@ int node_enum_nodes(struct node_mgr *hnode_mgr, void **node_tab,
- 		*pu_num_nodes = 0;
- 		status = -EINVAL;
- 	} else {
--		hnode = (struct node_object *)lst_first(hnode_mgr->
--			node_list);
--		for (i = 0; i < hnode_mgr->num_nodes; i++) {
--			DBC_ASSERT(hnode);
--			node_tab[i] = hnode;
--			hnode = (struct node_object *)lst_next
--				(hnode_mgr->node_list,
--				(struct list_head *)hnode);
--		}
-+		list_for_each_entry(hnode, &hnode_mgr->node_list, list_elem)
-+			node_tab[i++] = hnode;
- 		*pu_allocated = *pu_num_nodes = hnode_mgr->num_nodes;
- 	}
- 	/* end of sync_enter_cs */
-@@ -2632,7 +2623,7 @@ func_end:
-  */
- static void delete_node_mgr(struct node_mgr *hnode_mgr)
- {
--	struct node_object *hnode;
-+	struct node_object *hnode, *tmp;
- 
- 	if (hnode_mgr) {
- 		/* Free resources */
-@@ -2640,13 +2631,10 @@ static void delete_node_mgr(struct node_mgr *hnode_mgr)
- 			dcd_destroy_manager(hnode_mgr->hdcd_mgr);
- 
- 		/* Remove any elements remaining in lists */
--		if (hnode_mgr->node_list) {
--			while ((hnode = (struct node_object *)
--				lst_get_head(hnode_mgr->node_list)))
--				delete_node(hnode, NULL);
--
--			DBC_ASSERT(LST_IS_EMPTY(hnode_mgr->node_list));
--			kfree(hnode_mgr->node_list);
-+		list_for_each_entry_safe(hnode, tmp, &hnode_mgr->node_list,
-+				list_elem) {
-+			list_del(&hnode->list_elem);
-+			delete_node(hnode, NULL);
- 		}
- 		mutex_destroy(&hnode_mgr->node_mgr_lock);
- 		if (hnode_mgr->ntfy_obj) {
-@@ -3186,23 +3174,17 @@ int node_find_addr(struct node_mgr *node_mgr, u32 sym_addr,
- {
- 	struct node_object *node_obj;
- 	int status = -ENOENT;
--	u32 n;
- 
- 	pr_debug("%s(0x%x, 0x%x, 0x%x, 0x%x,  %s)\n", __func__,
- 			(unsigned int) node_mgr,
- 			sym_addr, offset_range,
- 			(unsigned int) sym_addr_output, sym_name);
- 
--	node_obj = (struct node_object *)(node_mgr->node_list->head.next);
--
--	for (n = 0; n < node_mgr->num_nodes; n++) {
-+	list_for_each_entry(node_obj, &node_mgr->node_list, list_elem) {
- 		status = nldr_find_addr(node_obj->nldr_node_obj, sym_addr,
- 			offset_range, sym_addr_output, sym_name);
--
- 		if (!status)
- 			break;
--
--		node_obj = (struct node_object *) (node_obj->list_elem.next);
- 	}
- 
- 	return status;
-diff --git a/drivers/staging/tidspbridge/rmgr/proc.c b/drivers/staging/tidspbridge/rmgr/proc.c
-index b47d7aa..d5f6719 100644
---- a/drivers/staging/tidspbridge/rmgr/proc.c
-+++ b/drivers/staging/tidspbridge/rmgr/proc.c
-@@ -29,7 +29,6 @@
- #include <dspbridge/dbc.h>
- 
- /*  ----------------------------------- OS Adaptation Layer */
--#include <dspbridge/list.h>
- #include <dspbridge/ntfy.h>
- #include <dspbridge/sync.h>
- /*  ----------------------------------- Bridge Driver */
-@@ -357,7 +356,6 @@ proc_attach(u32 processor_id,
- 		 * Return handle to this Processor Object:
- 		 * Find out if the Device is already attached to a
- 		 * Processor. If so, return AlreadyAttached status */
--		lst_init_elem(&p_proc_object->link);
- 		status = dev_insert_proc_object(p_proc_object->hdev_obj,
- 						(u32) p_proc_object,
- 						&p_proc_object->
-diff --git a/drivers/staging/tidspbridge/rmgr/rmm.c b/drivers/staging/tidspbridge/rmgr/rmm.c
-index 761e8f4..aae8657 100644
---- a/drivers/staging/tidspbridge/rmgr/rmm.c
-+++ b/drivers/staging/tidspbridge/rmgr/rmm.c
-@@ -38,6 +38,10 @@
-  */
- 
- #include <linux/types.h>
-+#include <linux/list.h>
-+
-+/*  ----------------------------------- Host OS */
-+#include <dspbridge/host_os.h>
- 
- /*  ----------------------------------- DSP/BIOS Bridge */
- #include <dspbridge/dbdefs.h>
-@@ -45,9 +49,6 @@
- /*  ----------------------------------- Trace & Debug */
- #include <dspbridge/dbc.h>
- 
--/*  ----------------------------------- OS Adaptation Layer */
--#include <dspbridge/list.h>
--
- /*  ----------------------------------- This */
- #include <dspbridge/rmm.h>
- 
-@@ -79,7 +80,7 @@ struct rmm_target_obj {
- 	struct rmm_segment *seg_tab;
- 	struct rmm_header **free_list;
- 	u32 num_segs;
--	struct lst_list *ovly_list;	/* List of overlay memory in use */
-+	struct list_head ovly_list;	/* List of overlay memory in use */
- };
- 
- static u32 refs;		/* module reference count */
-@@ -95,8 +96,7 @@ static bool free_block(struct rmm_target_obj *target, u32 segid, u32 addr,
- int rmm_alloc(struct rmm_target_obj *target, u32 segid, u32 size,
- 		     u32 align, u32 *dsp_address, bool reserve)
- {
--	struct rmm_ovly_sect *sect;
--	struct rmm_ovly_sect *prev_sect = NULL;
-+	struct rmm_ovly_sect *sect, *prev_sect = NULL;
- 	struct rmm_ovly_sect *new_sect;
- 	u32 addr;
- 	int status = 0;
-@@ -120,10 +120,9 @@ int rmm_alloc(struct rmm_target_obj *target, u32 segid, u32 size,
- 	/* An overlay section - See if block is already in use. If not,
- 	 * insert into the list in ascending address size. */
- 	addr = *dsp_address;
--	sect = (struct rmm_ovly_sect *)lst_first(target->ovly_list);
- 	/*  Find place to insert new list element. List is sorted from
- 	 *  smallest to largest address. */
--	while (sect != NULL) {
-+	list_for_each_entry(sect, &target->ovly_list, list_elem) {
- 		if (addr <= sect->addr) {
- 			/* Check for overlap with sect */
- 			if ((addr + size > sect->addr) || (prev_sect &&
-@@ -135,9 +134,6 @@ int rmm_alloc(struct rmm_target_obj *target, u32 segid, u32 size,
- 			break;
- 		}
- 		prev_sect = sect;
--		sect = (struct rmm_ovly_sect *)lst_next(target->ovly_list,
--							(struct list_head *)
--							sect);
- 	}
- 	if (!status) {
- 		/* No overlap - allocate list element for new section. */
-@@ -145,20 +141,17 @@ int rmm_alloc(struct rmm_target_obj *target, u32 segid, u32 size,
- 		if (new_sect == NULL) {
- 			status = -ENOMEM;
- 		} else {
--			lst_init_elem((struct list_head *)new_sect);
- 			new_sect->addr = addr;
- 			new_sect->size = size;
- 			new_sect->page = segid;
--			if (sect == NULL) {
-+			if (list_is_last(sect, &target->ovly_list))
- 				/* Put new section at the end of the list */
--				lst_put_tail(target->ovly_list,
--					     (struct list_head *)new_sect);
--			} else {
-+				list_add_tail(&new_sect->list_elem,
-+						&target->ovly_list);
-+			else
- 				/* Put new section just before sect */
--				lst_insert_before(target->ovly_list,
--						  (struct list_head *)new_sect,
--						  (struct list_head *)sect);
--			}
-+				list_add_tail(&new_sect->list_elem,
-+						&sect->list_elem);
- 		}
- 	}
- func_end:
-@@ -230,14 +223,8 @@ int rmm_create(struct rmm_target_obj **target_obj,
- 	}
- func_cont:
- 	/* Initialize overlay memory list */
--	if (!status) {
--		target->ovly_list = kzalloc(sizeof(struct lst_list),
--							GFP_KERNEL);
--		if (target->ovly_list == NULL)
--			status = -ENOMEM;
--		else
--			INIT_LIST_HEAD(&target->ovly_list->head);
--	}
-+	if (!status)
-+		INIT_LIST_HEAD(&target->ovly_list);
- 
- 	if (!status) {
- 		*target_obj = target;
-@@ -259,7 +246,7 @@ func_cont:
-  */
- void rmm_delete(struct rmm_target_obj *target)
- {
--	struct rmm_ovly_sect *ovly_section;
-+	struct rmm_ovly_sect *sect, *tmp;
- 	struct rmm_header *hptr;
- 	struct rmm_header *next;
- 	u32 i;
-@@ -268,13 +255,9 @@ void rmm_delete(struct rmm_target_obj *target)
- 
- 	kfree(target->seg_tab);
- 
--	if (target->ovly_list) {
--		while ((ovly_section = (struct rmm_ovly_sect *)lst_get_head
--			(target->ovly_list))) {
--			kfree(ovly_section);
--		}
--		DBC_ASSERT(LST_IS_EMPTY(target->ovly_list));
--		kfree(target->ovly_list);
-+	list_for_each_entry_safe(sect, tmp, &target->ovly_list, list_elem) {
-+		list_del(&sect->list_elem);
-+		kfree(sect);
- 	}
- 
- 	if (target->free_list != NULL) {
-@@ -311,8 +294,8 @@ void rmm_exit(void)
- bool rmm_free(struct rmm_target_obj *target, u32 segid, u32 dsp_addr, u32 size,
- 	      bool reserved)
- {
--	struct rmm_ovly_sect *sect;
--	bool ret = true;
-+	struct rmm_ovly_sect *sect, *tmp;
-+	bool ret = false;
- 
- 	DBC_REQUIRE(target);
- 
-@@ -333,24 +316,16 @@ bool rmm_free(struct rmm_target_obj *target, u32 segid, u32 dsp_addr, u32 size,
- 
- 	} else {
- 		/* Unreserve memory */
--		sect = (struct rmm_ovly_sect *)lst_first(target->ovly_list);
--		while (sect != NULL) {
-+		list_for_each_entry_safe(sect, tmp, &target->ovly_list,
-+				list_elem) {
- 			if (dsp_addr == sect->addr) {
- 				DBC_ASSERT(size == sect->size);
- 				/* Remove from list */
--				lst_remove_elem(target->ovly_list,
--						(struct list_head *)sect);
-+				list_del(&sect->list_elem);
- 				kfree(sect);
--				break;
-+				return true;
- 			}
--			sect =
--			    (struct rmm_ovly_sect *)lst_next(target->ovly_list,
--							     (struct list_head
--							      *)sect);
- 		}
--		if (sect == NULL)
--			ret = false;
--
- 	}
- 	return ret;
- }
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0014-staging-tidspbridge-remove-custom-linked-list.patch b/patches/dspbridge/0014-staging-tidspbridge-remove-custom-linked-list.patch
deleted file mode 100644
index 5a950feca97d67eb906afae11624d3b4e8220a89..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0014-staging-tidspbridge-remove-custom-linked-list.patch
+++ /dev/null
@@ -1,263 +0,0 @@
-From 16e734601f562d65fd5105c19b06369d33aeada9 Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Sun, 21 Nov 2010 10:46:27 +0000
-Subject: [PATCH 14/25] staging: tidspbridge: remove custom linked list
-
-Now that all users of lst_list have been converted to the
-standard linux list_head API, we can remove the associated
-header file.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/TODO                   |    1 -
- .../staging/tidspbridge/include/dspbridge/list.h   |  225 --------------------
- 2 files changed, 0 insertions(+), 226 deletions(-)
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/list.h
-
-diff --git a/drivers/staging/tidspbridge/TODO b/drivers/staging/tidspbridge/TODO
-index 187363f..1c51e2d 100644
---- a/drivers/staging/tidspbridge/TODO
-+++ b/drivers/staging/tidspbridge/TODO
-@@ -6,7 +6,6 @@
- * Eliminate general services and libraries - use or extend existing kernel
-   libraries instead (e.g. gcf/lcm in nldr.c, global helpers in gen/)
- * Eliminate direct manipulation of OMAP_SYSC_BASE
--* Eliminate list.h : seem like a redundant wrapper to existing kernel lists
- * Eliminate DSP_SUCCEEDED macros and their imposed redundant indentations
-   (adopt the kernel way of checking for return values)
- * Audit interfaces exposed to user space
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/list.h b/drivers/staging/tidspbridge/include/dspbridge/list.h
-deleted file mode 100644
-index 6837b61..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/list.h
-+++ /dev/null
-@@ -1,225 +0,0 @@
--/*
-- * list.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Declarations of list management control structures and definitions
-- * of inline list management functions.
-- *
-- * Copyright (C) 2008 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef LIST_
--#define LIST_
--
--#include <dspbridge/host_os.h>
--#include <linux/list.h>
--
--#define LST_IS_EMPTY(l)      list_empty(&(l)->head)
--
--struct lst_list {
--	struct list_head head;
--};
--
--/*
-- *  ======== lst_first ========
-- *  Purpose:
-- *      Returns a pointer to the first element of the list, or NULL if the list
-- *      is empty.
-- *  Parameters:
-- *      lst:  Pointer to list control structure.
-- *  Returns:
-- *      Pointer to first list element, or NULL.
-- *  Requires:
-- *      - LST initialized.
-- *      - lst != NULL.
-- *  Ensures:
-- */
--static inline struct list_head *lst_first(struct lst_list *lst)
--{
--	if (lst && !list_empty(&lst->head))
--		return lst->head.next;
--	return NULL;
--}
--
--/*
-- *  ======== lst_get_head ========
-- *  Purpose:
-- *      Pops the head off the list and returns a pointer to it.
-- *  Details:
-- *      If the list is empty, returns NULL.
-- *      Else, removes the element at the head of the list, making the next
-- *      element the head of the list.
-- *      The head is removed by making the tail element of the list point its
-- *      "next" pointer at the next element after the head, and by making the
-- *      "prev" pointer of the next element after the head point at the tail
-- *      element.  So the next element after the head becomes the new head of
-- *      the list.
-- *  Parameters:
-- *      lst:    Pointer to list control structure of list whose head
-- *              element is to be removed
-- *  Returns:
-- *      Pointer to element that was at the head of the list (success)
-- *      NULL          No elements in list
-- *  Requires:
-- *      - LST initialized.
-- *      - lst != NULL.
-- *  Ensures:
-- *  Notes:
-- *      Because the tail of the list points forward (its "next" pointer) to
-- *      the head of the list, and the head of the list points backward (its
-- *      "prev" pointer) to the tail of the list, this list is circular.
-- */
--static inline struct list_head *lst_get_head(struct lst_list *lst)
--{
--	struct list_head *elem_list;
--
--	if (!lst || list_empty(&lst->head))
--		return NULL;
--
--	elem_list = lst->head.next;
--	lst->head.next = elem_list->next;
--	elem_list->next->prev = &lst->head;
--
--	return elem_list;
--}
--
--/*
-- *  ======== lst_init_elem ========
-- *  Purpose:
-- *      Initializes a list element to default (cleared) values
-- *  Details:
-- *  Parameters:
-- *      elem_list:  Pointer to list element to be reset
-- *  Returns:
-- *  Requires:
-- *      LST initialized.
-- *  Ensures:
-- *  Notes:
-- *      This function must not be called to "reset" an element in the middle
-- *      of a list chain -- that would break the chain.
-- *
-- */
--static inline void lst_init_elem(struct list_head *elem_list)
--{
--	if (elem_list) {
--		elem_list->next = NULL;
--		elem_list->prev = NULL;
--	}
--}
--
--/*
-- *  ======== lst_insert_before ========
-- *  Purpose:
-- *     Insert the element before the existing element.
-- *  Parameters:
-- *      lst:            Pointer to list control structure.
-- *      elem_list:          Pointer to element in list to insert.
-- *      elem_existing:  Pointer to existing list element.
-- *  Returns:
-- *  Requires:
-- *      - LST initialized.
-- *      - lst != NULL.
-- *      - elem_list != NULL.
-- *      - elem_existing != NULL.
-- *  Ensures:
-- */
--static inline void lst_insert_before(struct lst_list *lst,
--				     struct list_head *elem_list,
--				     struct list_head *elem_existing)
--{
--	if (lst && elem_list && elem_existing)
--		list_add_tail(elem_list, elem_existing);
--}
--
--/*
-- *  ======== lst_next ========
-- *  Purpose:
-- *      Returns a pointer to the next element of the list, or NULL if the next
-- *      element is the head of the list or the list is empty.
-- *  Parameters:
-- *      lst:        Pointer to list control structure.
-- *      cur_elem:   Pointer to element in list to remove.
-- *  Returns:
-- *      Pointer to list element, or NULL.
-- *  Requires:
-- *      - LST initialized.
-- *      - lst != NULL.
-- *      - cur_elem != NULL.
-- *  Ensures:
-- */
--static inline struct list_head *lst_next(struct lst_list *lst,
--					 struct list_head *cur_elem)
--{
--	if (lst && !list_empty(&lst->head) && cur_elem &&
--	    (cur_elem->next != &lst->head))
--		return cur_elem->next;
--	return NULL;
--}
--
--/*
-- *  ======== lst_put_tail ========
-- *  Purpose:
-- *      Adds the specified element to the tail of the list
-- *  Details:
-- *      Sets new element's "prev" pointer to the address previously held by
-- *      the head element's prev pointer.  This is the previous tail member of
-- *      the list.
-- *      Sets the new head's prev pointer to the address of the element.
-- *      Sets next pointer of the previous tail member of the list to point to
-- *      the new element (rather than the head, which it had been pointing at).
-- *      Sets new element's next pointer to the address of the head element.
-- *      Sets head's prev pointer to the address of the new element.
-- *  Parameters:
-- *      lst:    Pointer to list control structure to which *elem_list will be
-- *              added
-- *      elem_list:  Pointer to list element to be added
-- *  Returns:
-- *      Void
-- *  Requires:
-- *      *elem_list and *lst must both exist.
-- *      LST initialized.
-- *  Ensures:
-- *  Notes:
-- *      Because the tail is always "just before" the head of the list (the
-- *      tail's "next" pointer points at the head of the list, and the head's
-- *      "prev" pointer points at the tail of the list), the list is circular.
-- */
--static inline void lst_put_tail(struct lst_list *lst,
--				struct list_head *elem_list)
--{
--	if (lst && elem_list)
--		list_add_tail(elem_list, &lst->head);
--}
--
--/*
-- *  ======== lst_remove_elem ========
-- *  Purpose:
-- *      Removes (unlinks) the given element from the list, if the list is not
-- *      empty.  Does not free the list element.
-- *  Parameters:
-- *      lst:        Pointer to list control structure.
-- *      cur_elem:   Pointer to element in list to remove.
-- *  Returns:
-- *  Requires:
-- *      - LST initialized.
-- *      - lst != NULL.
-- *      - cur_elem != NULL.
-- *  Ensures:
-- */
--static inline void lst_remove_elem(struct lst_list *lst,
--				   struct list_head *cur_elem)
--{
--	if (lst && !list_empty(&lst->head) && cur_elem)
--		list_del_init(cur_elem);
--}
--
--#endif /* LIST_ */
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0015-staging-tidspbridge-core-code-cleanup.patch b/patches/dspbridge/0015-staging-tidspbridge-core-code-cleanup.patch
deleted file mode 100644
index 8444dd50cbf8695b9c048b0034dfacbd8a6d00a9..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0015-staging-tidspbridge-core-code-cleanup.patch
+++ /dev/null
@@ -1,1483 +0,0 @@
-From 2fa16e235088632cc48f2f69a1c57a7ebaff1ed0 Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Sun, 21 Nov 2010 10:46:28 +0000
-Subject: [PATCH 15/25] staging: tidspbridge: core code cleanup
-
-Reorganized some code in the core module to increase its
-readability. Most of the changes reduce the code
-indentation level and simplifiy the code. No functional
-changes were done.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/core/chnl_sm.c |  445 +++++++++++++---------------
- drivers/staging/tidspbridge/core/io_sm.c   |  192 ++++++-------
- drivers/staging/tidspbridge/core/msg_sm.c  |  453 +++++++++++++---------------
- 3 files changed, 499 insertions(+), 591 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/core/chnl_sm.c b/drivers/staging/tidspbridge/core/chnl_sm.c
-index f955036..2d06bb0 100644
---- a/drivers/staging/tidspbridge/core/chnl_sm.c
-+++ b/drivers/staging/tidspbridge/core/chnl_sm.c
-@@ -105,35 +105,31 @@ int bridge_chnl_add_io_req(struct chnl_object *chnl_obj, void *host_buf,
- 	is_eos = (byte_size == 0);
- 
- 	/* Validate args */
--	if (!host_buf || !pchnl) {
--		status = -EFAULT;
--	} else if (is_eos && CHNL_IS_INPUT(pchnl->chnl_mode)) {
--		status = -EPERM;
--	} else {
--		/*
--		 * Check the channel state: only queue chirp if channel state
--		 * allows it.
--		 */
--		dw_state = pchnl->dw_state;
--		if (dw_state != CHNL_STATEREADY) {
--			if (dw_state & CHNL_STATECANCEL)
--				status = -ECANCELED;
--			else if ((dw_state & CHNL_STATEEOS) &&
--				 CHNL_IS_OUTPUT(pchnl->chnl_mode))
--				status = -EPIPE;
--			else
--				/* No other possible states left */
--				DBC_ASSERT(0);
--		}
-+	if (!host_buf || !pchnl)
-+		return -EFAULT;
-+
-+	if (is_eos && CHNL_IS_INPUT(pchnl->chnl_mode))
-+		return -EPERM;
-+
-+	/*
-+	 * Check the channel state: only queue chirp if channel state
-+	 * allows it.
-+	 */
-+	dw_state = pchnl->dw_state;
-+	if (dw_state != CHNL_STATEREADY) {
-+		if (dw_state & CHNL_STATECANCEL)
-+			return -ECANCELED;
-+		if ((dw_state & CHNL_STATEEOS) &&
-+				CHNL_IS_OUTPUT(pchnl->chnl_mode))
-+			return -EPIPE;
-+		/* No other possible states left */
-+		DBC_ASSERT(0);
- 	}
- 
- 	dev_obj = dev_get_first();
- 	dev_get_bridge_context(dev_obj, &dev_ctxt);
- 	if (!dev_ctxt)
--		status = -EFAULT;
--
--	if (status)
--		goto func_end;
-+		return -EFAULT;
- 
- 	if (pchnl->chnl_type == CHNL_PCPY && pchnl->chnl_id > 1 && host_buf) {
- 		if (!(host_buf < (void *)USERMODE_ADDR)) {
-@@ -142,18 +138,16 @@ int bridge_chnl_add_io_req(struct chnl_object *chnl_obj, void *host_buf,
- 		}
- 		/* if addr in user mode, then copy to kernel space */
- 		host_sys_buf = kmalloc(buf_size, GFP_KERNEL);
--		if (host_sys_buf == NULL) {
--			status = -ENOMEM;
--			goto func_end;
--		}
-+		if (host_sys_buf == NULL)
-+			return -ENOMEM;
-+
- 		if (CHNL_IS_OUTPUT(pchnl->chnl_mode)) {
- 			status = copy_from_user(host_sys_buf, host_buf,
--						buf_size);
-+					buf_size);
- 			if (status) {
- 				kfree(host_sys_buf);
- 				host_sys_buf = NULL;
--				status = -EFAULT;
--				goto func_end;
-+				return -EFAULT;
- 			}
- 		}
- 	}
-@@ -167,66 +161,62 @@ func_cont:
- 	omap_mbox_disable_irq(dev_ctxt->mbox, IRQ_RX);
- 	if (pchnl->chnl_type == CHNL_PCPY) {
- 		/* This is a processor-copy channel. */
--		if (!status && CHNL_IS_OUTPUT(pchnl->chnl_mode)) {
-+		if (CHNL_IS_OUTPUT(pchnl->chnl_mode)) {
- 			/* Check buffer size on output channels for fit. */
--			if (byte_size >
--			    io_buf_size(pchnl->chnl_mgr_obj->hio_mgr))
-+			if (byte_size > io_buf_size(
-+						pchnl->chnl_mgr_obj->hio_mgr)) {
- 				status = -EINVAL;
--
--		}
--	}
--	if (!status) {
--		/* Get a free chirp: */
--		if (!list_empty(&pchnl->free_packets_list)) {
--			chnl_packet_obj = list_first_entry(
--					&pchnl->free_packets_list,
--					struct chnl_irp, link);
--			list_del(&chnl_packet_obj->link);
--		} else {
--			status = -EIO;
-+				goto out;
-+			}
- 		}
--
- 	}
--	if (!status) {
--		/* Enqueue the chirp on the chnl's IORequest queue: */
--		chnl_packet_obj->host_user_buf = chnl_packet_obj->host_sys_buf =
--		    host_buf;
--		if (pchnl->chnl_type == CHNL_PCPY && pchnl->chnl_id > 1)
--			chnl_packet_obj->host_sys_buf = host_sys_buf;
--
--		/*
--		 * Note: for dma chans dw_dsp_addr contains dsp address
--		 * of SM buffer.
--		 */
--		DBC_ASSERT(chnl_mgr_obj->word_size != 0);
--		/* DSP address */
--		chnl_packet_obj->dsp_tx_addr =
--		    dw_dsp_addr / chnl_mgr_obj->word_size;
--		chnl_packet_obj->byte_size = byte_size;
--		chnl_packet_obj->buf_size = buf_size;
--		/* Only valid for output channel */
--		chnl_packet_obj->dw_arg = dw_arg;
--		chnl_packet_obj->status = (is_eos ? CHNL_IOCSTATEOS :
--					   CHNL_IOCSTATCOMPLETE);
--		list_add_tail(&chnl_packet_obj->link, &pchnl->pio_requests);
--		pchnl->cio_reqs++;
--		DBC_ASSERT(pchnl->cio_reqs <= pchnl->chnl_packets);
--		/*
--		 * If end of stream, update the channel state to prevent
--		 * more IOR's.
--		 */
--		if (is_eos)
--			pchnl->dw_state |= CHNL_STATEEOS;
- 
--		/* Legacy DSM Processor-Copy */
--		DBC_ASSERT(pchnl->chnl_type == CHNL_PCPY);
--		/* Request IO from the DSP */
--		io_request_chnl(chnl_mgr_obj->hio_mgr, pchnl,
--				(CHNL_IS_INPUT(pchnl->chnl_mode) ? IO_INPUT :
--				 IO_OUTPUT), &mb_val);
--		sched_dpc = true;
--
--	}
-+	/* Get a free chirp: */
-+	if (list_empty(&pchnl->free_packets_list)) {
-+		status = -EIO;
-+		goto out;
-+	}
-+	chnl_packet_obj = list_first_entry(&pchnl->free_packets_list,
-+			struct chnl_irp, link);
-+	list_del(&chnl_packet_obj->link);
-+
-+	/* Enqueue the chirp on the chnl's IORequest queue: */
-+	chnl_packet_obj->host_user_buf = chnl_packet_obj->host_sys_buf =
-+		host_buf;
-+	if (pchnl->chnl_type == CHNL_PCPY && pchnl->chnl_id > 1)
-+		chnl_packet_obj->host_sys_buf = host_sys_buf;
-+
-+	/*
-+	 * Note: for dma chans dw_dsp_addr contains dsp address
-+	 * of SM buffer.
-+	 */
-+	DBC_ASSERT(chnl_mgr_obj->word_size != 0);
-+	/* DSP address */
-+	chnl_packet_obj->dsp_tx_addr = dw_dsp_addr / chnl_mgr_obj->word_size;
-+	chnl_packet_obj->byte_size = byte_size;
-+	chnl_packet_obj->buf_size = buf_size;
-+	/* Only valid for output channel */
-+	chnl_packet_obj->dw_arg = dw_arg;
-+	chnl_packet_obj->status = (is_eos ? CHNL_IOCSTATEOS :
-+			CHNL_IOCSTATCOMPLETE);
-+	list_add_tail(&chnl_packet_obj->link, &pchnl->pio_requests);
-+	pchnl->cio_reqs++;
-+	DBC_ASSERT(pchnl->cio_reqs <= pchnl->chnl_packets);
-+	/*
-+	 * If end of stream, update the channel state to prevent
-+	 * more IOR's.
-+	 */
-+	if (is_eos)
-+		pchnl->dw_state |= CHNL_STATEEOS;
-+
-+	/* Legacy DSM Processor-Copy */
-+	DBC_ASSERT(pchnl->chnl_type == CHNL_PCPY);
-+	/* Request IO from the DSP */
-+	io_request_chnl(chnl_mgr_obj->hio_mgr, pchnl,
-+			(CHNL_IS_INPUT(pchnl->chnl_mode) ? IO_INPUT :
-+			 IO_OUTPUT), &mb_val);
-+	sched_dpc = true;
-+out:
- 	omap_mbox_enable_irq(dev_ctxt->mbox, IRQ_RX);
- 	spin_unlock_bh(&chnl_mgr_obj->chnl_mgr_lock);
- 	if (mb_val != 0)
-@@ -236,7 +226,6 @@ func_cont:
- 	if (sched_dpc)
- 		iosm_schedule(chnl_mgr_obj->hio_mgr);
- 
--func_end:
- 	return status;
- }
- 
-@@ -251,7 +240,6 @@ func_end:
-  */
- int bridge_chnl_cancel_io(struct chnl_object *chnl_obj)
- {
--	int status = 0;
- 	struct chnl_object *pchnl = (struct chnl_object *)chnl_obj;
- 	u32 chnl_id = -1;
- 	s8 chnl_mode;
-@@ -259,22 +247,23 @@ int bridge_chnl_cancel_io(struct chnl_object *chnl_obj)
- 	struct chnl_mgr *chnl_mgr_obj = NULL;
- 
- 	/* Check args: */
--	if (pchnl && pchnl->chnl_mgr_obj) {
--		chnl_id = pchnl->chnl_id;
--		chnl_mode = pchnl->chnl_mode;
--		chnl_mgr_obj = pchnl->chnl_mgr_obj;
--	} else {
--		status = -EFAULT;
--	}
--	if (status)
--		goto func_end;
-+	if (!pchnl || !pchnl->chnl_mgr_obj)
-+		return -EFAULT;
-+
-+	chnl_id = pchnl->chnl_id;
-+	chnl_mode = pchnl->chnl_mode;
-+	chnl_mgr_obj = pchnl->chnl_mgr_obj;
- 
- 	/*  Mark this channel as cancelled, to prevent further IORequests or
- 	 *  IORequests or dispatching. */
- 	spin_lock_bh(&chnl_mgr_obj->chnl_mgr_lock);
-+
- 	pchnl->dw_state |= CHNL_STATECANCEL;
--	if (list_empty(&pchnl->pio_requests))
--		goto func_cont;
-+
-+	if (list_empty(&pchnl->pio_requests)) {
-+		spin_unlock_bh(&chnl_mgr_obj->chnl_mgr_lock);
-+		return 0;
-+	}
- 
- 	if (pchnl->chnl_type == CHNL_PCPY) {
- 		/* Indicate we have no more buffers available for transfer: */
-@@ -296,10 +285,10 @@ int bridge_chnl_cancel_io(struct chnl_object *chnl_obj)
- 		pchnl->cio_reqs--;
- 		DBC_ASSERT(pchnl->cio_reqs >= 0);
- 	}
--func_cont:
-+
- 	spin_unlock_bh(&chnl_mgr_obj->chnl_mgr_lock);
--func_end:
--	return status;
-+
-+	return 0;
- }
- 
- /*
-@@ -316,53 +305,43 @@ int bridge_chnl_close(struct chnl_object *chnl_obj)
- 	struct chnl_object *pchnl = (struct chnl_object *)chnl_obj;
- 
- 	/* Check args: */
--	if (!pchnl) {
--		status = -EFAULT;
--		goto func_cont;
-+	if (!pchnl)
-+		return -EFAULT;
-+	/* Cancel IO: this ensures no further IO requests or notifications */
-+	status = bridge_chnl_cancel_io(chnl_obj);
-+	if (status)
-+		return status;
-+	/* Assert I/O on this channel is now cancelled: Protects from io_dpc */
-+	DBC_ASSERT((pchnl->dw_state & CHNL_STATECANCEL));
-+	/* Invalidate channel object: Protects from CHNL_GetIOCompletion() */
-+	/* Free the slot in the channel manager: */
-+	pchnl->chnl_mgr_obj->ap_channel[pchnl->chnl_id] = NULL;
-+	spin_lock_bh(&pchnl->chnl_mgr_obj->chnl_mgr_lock);
-+	pchnl->chnl_mgr_obj->open_channels -= 1;
-+	spin_unlock_bh(&pchnl->chnl_mgr_obj->chnl_mgr_lock);
-+	if (pchnl->ntfy_obj) {
-+		ntfy_delete(pchnl->ntfy_obj);
-+		kfree(pchnl->ntfy_obj);
-+		pchnl->ntfy_obj = NULL;
- 	}
--	{
--		/* Cancel IO: this ensures no further IO requests or
--		 * notifications. */
--		status = bridge_chnl_cancel_io(chnl_obj);
-+	/* Reset channel event: (NOTE: user_event freed in user context) */
-+	if (pchnl->sync_event) {
-+		sync_reset_event(pchnl->sync_event);
-+		kfree(pchnl->sync_event);
-+		pchnl->sync_event = NULL;
- 	}
--func_cont:
--	if (!status) {
--		/* Assert I/O on this channel is now cancelled: Protects
--		 * from io_dpc. */
--		DBC_ASSERT((pchnl->dw_state & CHNL_STATECANCEL));
--		/* Invalidate channel object: Protects from
--		 * CHNL_GetIOCompletion(). */
--		/* Free the slot in the channel manager: */
--		pchnl->chnl_mgr_obj->ap_channel[pchnl->chnl_id] = NULL;
--		spin_lock_bh(&pchnl->chnl_mgr_obj->chnl_mgr_lock);
--		pchnl->chnl_mgr_obj->open_channels -= 1;
--		spin_unlock_bh(&pchnl->chnl_mgr_obj->chnl_mgr_lock);
--		if (pchnl->ntfy_obj) {
--			ntfy_delete(pchnl->ntfy_obj);
--			kfree(pchnl->ntfy_obj);
--			pchnl->ntfy_obj = NULL;
--		}
--		/* Reset channel event: (NOTE: user_event freed in user
--		 * context.). */
--		if (pchnl->sync_event) {
--			sync_reset_event(pchnl->sync_event);
--			kfree(pchnl->sync_event);
--			pchnl->sync_event = NULL;
--		}
--		/* Free I/O request and I/O completion queues: */
--		free_chirp_list(&pchnl->pio_completions);
--		pchnl->cio_cs = 0;
-+	/* Free I/O request and I/O completion queues: */
-+	free_chirp_list(&pchnl->pio_completions);
-+	pchnl->cio_cs = 0;
- 
--		free_chirp_list(&pchnl->pio_requests);
--		pchnl->cio_reqs = 0;
-+	free_chirp_list(&pchnl->pio_requests);
-+	pchnl->cio_reqs = 0;
- 
--		free_chirp_list(&pchnl->free_packets_list);
-+	free_chirp_list(&pchnl->free_packets_list);
-+
-+	/* Release channel object. */
-+	kfree(pchnl);
- 
--		/* Release channel object. */
--		kfree(pchnl);
--		pchnl = NULL;
--	}
--	DBC_ENSURE(status || !pchnl);
- 	return status;
- }
- 
-@@ -697,32 +676,22 @@ func_end:
- int bridge_chnl_get_mgr_info(struct chnl_mgr *hchnl_mgr, u32 ch_id,
- 				 struct chnl_mgrinfo *mgr_info)
- {
--	int status = 0;
- 	struct chnl_mgr *chnl_mgr_obj = (struct chnl_mgr *)hchnl_mgr;
- 
--	if (mgr_info != NULL) {
--		if (ch_id <= CHNL_MAXCHANNELS) {
--			if (hchnl_mgr) {
--				/* Return the requested information: */
--				mgr_info->chnl_obj =
--				    chnl_mgr_obj->ap_channel[ch_id];
--				mgr_info->open_channels =
--				    chnl_mgr_obj->open_channels;
--				mgr_info->dw_type = chnl_mgr_obj->dw_type;
--				/* total # of chnls */
--				mgr_info->max_channels =
--				    chnl_mgr_obj->max_channels;
--			} else {
--				status = -EFAULT;
--			}
--		} else {
--			status = -ECHRNG;
--		}
--	} else {
--		status = -EFAULT;
--	}
-+	if (!mgr_info || !hchnl_mgr)
-+		return -EFAULT;
- 
--	return status;
-+	if (ch_id > CHNL_MAXCHANNELS)
-+		return -ECHRNG;
-+
-+	/* Return the requested information: */
-+	mgr_info->chnl_obj = chnl_mgr_obj->ap_channel[ch_id];
-+	mgr_info->open_channels = chnl_mgr_obj->open_channels;
-+	mgr_info->dw_type = chnl_mgr_obj->dw_type;
-+	/* total # of chnls */
-+	mgr_info->max_channels = chnl_mgr_obj->max_channels;
-+
-+	return 0;
- }
- 
- /*
-@@ -772,45 +741,41 @@ int bridge_chnl_open(struct chnl_object **chnl,
- 	DBC_REQUIRE(pattrs != NULL);
- 	DBC_REQUIRE(hchnl_mgr != NULL);
- 	*chnl = NULL;
-+
- 	/* Validate Args: */
--	if (pattrs->uio_reqs == 0) {
--		status = -EINVAL;
-+	if (!pattrs->uio_reqs)
-+		return -EINVAL;
-+
-+	if (!hchnl_mgr)
-+		return -EFAULT;
-+
-+	if (ch_id != CHNL_PICKFREE) {
-+		if (ch_id >= chnl_mgr_obj->max_channels)
-+			return -ECHRNG;
-+		if (chnl_mgr_obj->ap_channel[ch_id] != NULL)
-+			return -EALREADY;
- 	} else {
--		if (!hchnl_mgr) {
--			status = -EFAULT;
--		} else {
--			if (ch_id != CHNL_PICKFREE) {
--				if (ch_id >= chnl_mgr_obj->max_channels)
--					status = -ECHRNG;
--				else if (chnl_mgr_obj->ap_channel[ch_id] !=
--					 NULL)
--					status = -EALREADY;
--			} else {
--				/* Check for free channel */
--				status =
--				    search_free_channel(chnl_mgr_obj, &ch_id);
--			}
--		}
-+		/* Check for free channel */
-+		status = search_free_channel(chnl_mgr_obj, &ch_id);
-+		if (status)
-+			return status;
- 	}
--	if (status)
--		goto func_end;
- 
- 	DBC_ASSERT(ch_id < chnl_mgr_obj->max_channels);
-+
- 	/* Create channel object: */
- 	pchnl = kzalloc(sizeof(struct chnl_object), GFP_KERNEL);
--	if (!pchnl) {
--		status = -ENOMEM;
--		goto func_end;
--	}
-+	if (!pchnl)
-+		return -ENOMEM;
-+
- 	/* Protect queues from io_dpc: */
- 	pchnl->dw_state = CHNL_STATECANCEL;
-+
- 	/* Allocate initial IOR and IOC queues: */
- 	status = create_chirp_list(&pchnl->free_packets_list,
- 			pattrs->uio_reqs);
--	if (status) {
--		kfree(pchnl);
--		goto func_end;
--	}
-+	if (status)
-+		goto out_err;
- 
- 	INIT_LIST_HEAD(&pchnl->pio_requests);
- 	INIT_LIST_HEAD(&pchnl->pio_completions);
-@@ -818,63 +783,61 @@ int bridge_chnl_open(struct chnl_object **chnl,
- 	pchnl->chnl_packets = pattrs->uio_reqs;
- 	pchnl->cio_cs = 0;
- 	pchnl->cio_reqs = 0;
-+
- 	sync_event = kzalloc(sizeof(struct sync_object), GFP_KERNEL);
--	if (sync_event)
--		sync_init_event(sync_event);
--	else
-+	if (!sync_event) {
- 		status = -ENOMEM;
--
--	if (!status) {
--		pchnl->ntfy_obj = kmalloc(sizeof(struct ntfy_object),
--							GFP_KERNEL);
--		if (pchnl->ntfy_obj)
--			ntfy_init(pchnl->ntfy_obj);
--		else
--			status = -ENOMEM;
-+		goto out_err;
- 	}
-+	sync_init_event(sync_event);
- 
--	if (!status) {
--		/* Initialize CHNL object fields: */
--		pchnl->chnl_mgr_obj = chnl_mgr_obj;
--		pchnl->chnl_id = ch_id;
--		pchnl->chnl_mode = chnl_mode;
--		pchnl->user_event = sync_event;
--		pchnl->sync_event = sync_event;
--		/* Get the process handle */
--		pchnl->process = current->tgid;
--		pchnl->pcb_arg = 0;
--		pchnl->bytes_moved = 0;
--		/* Default to proc-copy */
--		pchnl->chnl_type = CHNL_PCPY;
--	}
-+	pchnl->ntfy_obj = kmalloc(sizeof(struct ntfy_object), GFP_KERNEL);
-+	if (!pchnl->ntfy_obj) {
-+		status = -ENOMEM;
-+		goto out_err;
-+	}
-+	ntfy_init(pchnl->ntfy_obj);
-+
-+	/* Initialize CHNL object fields: */
-+	pchnl->chnl_mgr_obj = chnl_mgr_obj;
-+	pchnl->chnl_id = ch_id;
-+	pchnl->chnl_mode = chnl_mode;
-+	pchnl->user_event = sync_event;
-+	pchnl->sync_event = sync_event;
-+	/* Get the process handle */
-+	pchnl->process = current->tgid;
-+	pchnl->pcb_arg = 0;
-+	pchnl->bytes_moved = 0;
-+	/* Default to proc-copy */
-+	pchnl->chnl_type = CHNL_PCPY;
-+
-+	/* Insert channel object in channel manager: */
-+	chnl_mgr_obj->ap_channel[pchnl->chnl_id] = pchnl;
-+	spin_lock_bh(&chnl_mgr_obj->chnl_mgr_lock);
-+	chnl_mgr_obj->open_channels++;
-+	spin_unlock_bh(&chnl_mgr_obj->chnl_mgr_lock);
-+	/* Return result... */
-+	pchnl->dw_state = CHNL_STATEREADY;
-+	*chnl = pchnl;
- 
--	if (status) {
--		/* Free memory */
--		free_chirp_list(&pchnl->pio_completions);
--		pchnl->cio_cs = 0;
--		free_chirp_list(&pchnl->pio_requests);
--		free_chirp_list(&pchnl->free_packets_list);
-+	return status;
-+
-+out_err:
-+	/* Free memory */
-+	free_chirp_list(&pchnl->pio_completions);
-+	free_chirp_list(&pchnl->pio_requests);
-+	free_chirp_list(&pchnl->free_packets_list);
-+
-+	if (sync_event)
- 		kfree(sync_event);
--		sync_event = NULL;
- 
--		if (pchnl->ntfy_obj) {
--			ntfy_delete(pchnl->ntfy_obj);
--			kfree(pchnl->ntfy_obj);
--			pchnl->ntfy_obj = NULL;
--		}
--		kfree(pchnl);
--	} else {
--		/* Insert channel object in channel manager: */
--		chnl_mgr_obj->ap_channel[pchnl->chnl_id] = pchnl;
--		spin_lock_bh(&chnl_mgr_obj->chnl_mgr_lock);
--		chnl_mgr_obj->open_channels++;
--		spin_unlock_bh(&chnl_mgr_obj->chnl_mgr_lock);
--		/* Return result... */
--		pchnl->dw_state = CHNL_STATEREADY;
--		*chnl = pchnl;
-+	if (pchnl->ntfy_obj) {
-+		ntfy_delete(pchnl->ntfy_obj);
-+		kfree(pchnl->ntfy_obj);
-+		pchnl->ntfy_obj = NULL;
- 	}
--func_end:
--	DBC_ENSURE((!status && pchnl) || (*chnl == NULL));
-+	kfree(pchnl);
-+
- 	return status;
- }
- 
-diff --git a/drivers/staging/tidspbridge/core/io_sm.c b/drivers/staging/tidspbridge/core/io_sm.c
-index d30cc7e..9289522 100644
---- a/drivers/staging/tidspbridge/core/io_sm.c
-+++ b/drivers/staging/tidspbridge/core/io_sm.c
-@@ -1195,29 +1195,29 @@ static void input_msg(struct io_mgr *pio_mgr, struct msg_mgr *hmsg_mgr)
- 	input_empty = msg_ctr_obj->buf_empty;
- 	num_msgs = msg_ctr_obj->size;
- 	if (input_empty)
--		goto func_end;
-+		return;
- 
- 	msg_input = pio_mgr->msg_input;
- 	for (i = 0; i < num_msgs; i++) {
- 		/* Read the next message */
- 		addr = (u32) &(((struct msg_dspmsg *)msg_input)->msg.dw_cmd);
- 		msg.msg.dw_cmd =
--		    read_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr);
-+			read_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr);
- 		addr = (u32) &(((struct msg_dspmsg *)msg_input)->msg.dw_arg1);
- 		msg.msg.dw_arg1 =
--		    read_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr);
-+			read_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr);
- 		addr = (u32) &(((struct msg_dspmsg *)msg_input)->msg.dw_arg2);
- 		msg.msg.dw_arg2 =
--		    read_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr);
-+			read_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr);
- 		addr = (u32) &(((struct msg_dspmsg *)msg_input)->msgq_id);
- 		msg.msgq_id =
--		    read_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr);
-+			read_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr);
- 		msg_input += sizeof(struct msg_dspmsg);
- 
- 		/* Determine which queue to put the message in */
- 		dev_dbg(bridge,	"input msg: dw_cmd=0x%x dw_arg1=0x%x "
--			"dw_arg2=0x%x msgq_id=0x%x\n", msg.msg.dw_cmd,
--			msg.msg.dw_arg1, msg.msg.dw_arg2, msg.msgq_id);
-+				"dw_arg2=0x%x msgq_id=0x%x\n", msg.msg.dw_cmd,
-+				msg.msg.dw_arg1, msg.msg.dw_arg2, msg.msgq_id);
- 		/*
- 		 * Interrupt may occur before shared memory and message
- 		 * input locations have been set up. If all nodes were
-@@ -1225,48 +1225,43 @@ static void input_msg(struct io_mgr *pio_mgr, struct msg_mgr *hmsg_mgr)
- 		 */
- 		list_for_each_entry(msg_queue_obj, &hmsg_mgr->queue_list,
- 				list_elem) {
--			if (msg.msgq_id == msg_queue_obj->msgq_id) {
--				/* Found it */
--				if (msg.msg.dw_cmd == RMS_EXITACK) {
--					/*
--					 * Call the node exit notification.
--					 * The exit message does not get
--					 * queued.
--					 */
--					(*hmsg_mgr->on_exit) ((void *)
--							msg_queue_obj->arg,
--							msg.msg.dw_arg1);
--					break;
--				}
-+			if (msg.msgq_id != msg_queue_obj->msgq_id)
-+				continue;
-+			/* Found it */
-+			if (msg.msg.dw_cmd == RMS_EXITACK) {
- 				/*
--				 * Not an exit acknowledgement, queue
--				 * the message.
-+				 * Call the node exit notification.
-+				 * The exit message does not get
-+				 * queued.
- 				 */
--				if (!list_empty(&msg_queue_obj->
--							msg_free_list)) {
--					pmsg = list_first_entry(
--						&msg_queue_obj->msg_free_list,
--						struct msg_frame, list_elem);
--					list_del(&pmsg->list_elem);
--					pmsg->msg_data = msg;
--					list_add_tail(&pmsg->list_elem,
--						&msg_queue_obj->msg_used_list);
--					ntfy_notify
--						(msg_queue_obj->ntfy_obj,
--						 DSP_NODEMESSAGEREADY);
--					sync_set_event
--						(msg_queue_obj->sync_event);
--				} else {
--					/*
--					 * No free frame to copy the
--					 * message into.
--					 */
--					pr_err("%s: no free msg frames,"
--							" discarding msg\n",
--							__func__);
--				}
-+				(*hmsg_mgr->on_exit)(msg_queue_obj->arg,
-+						msg.msg.dw_arg1);
- 				break;
- 			}
-+			/*
-+			 * Not an exit acknowledgement, queue
-+			 * the message.
-+			 */
-+			if (list_empty(&msg_queue_obj->msg_free_list)) {
-+				/*
-+				 * No free frame to copy the
-+				 * message into.
-+				 */
-+				pr_err("%s: no free msg frames,"
-+						" discarding msg\n",
-+						__func__);
-+				break;
-+			}
-+
-+			pmsg = list_first_entry(&msg_queue_obj->msg_free_list,
-+					struct msg_frame, list_elem);
-+			list_del(&pmsg->list_elem);
-+			pmsg->msg_data = msg;
-+			list_add_tail(&pmsg->list_elem,
-+					&msg_queue_obj->msg_used_list);
-+			ntfy_notify(msg_queue_obj->ntfy_obj,
-+					DSP_NODEMESSAGEREADY);
-+			sync_set_event(msg_queue_obj->sync_event);
- 		}
- 	}
- 	/* Set the post SWI flag */
-@@ -1276,8 +1271,6 @@ static void input_msg(struct io_mgr *pio_mgr, struct msg_mgr *hmsg_mgr)
- 		msg_ctr_obj->post_swi = true;
- 		sm_interrupt_dsp(pio_mgr->hbridge_context, MBX_PCPY_CLASS);
- 	}
--func_end:
--	return;
- }
- 
- /*
-@@ -1408,73 +1401,68 @@ static void output_msg(struct io_mgr *pio_mgr, struct msg_mgr *hmsg_mgr)
- {
- 	u32 num_msgs = 0;
- 	u32 i;
--	u8 *msg_output;
-+	struct msg_dspmsg *msg_output;
- 	struct msg_frame *pmsg;
- 	struct msg_ctrl *msg_ctr_obj;
--	u32 output_empty;
- 	u32 val;
- 	u32 addr;
- 
- 	msg_ctr_obj = pio_mgr->msg_output_ctrl;
- 
- 	/* Check if output has been cleared */
--	output_empty = msg_ctr_obj->buf_empty;
--	if (output_empty) {
--		num_msgs = (hmsg_mgr->msgs_pending > hmsg_mgr->max_msgs) ?
--		    hmsg_mgr->max_msgs : hmsg_mgr->msgs_pending;
--		msg_output = pio_mgr->msg_output;
--		/* Copy num_msgs messages into shared memory */
--		for (i = 0; i < num_msgs; i++) {
--			if (!list_empty(&hmsg_mgr->msg_used_list)) {
--				pmsg = list_first_entry(
--						&hmsg_mgr->msg_used_list,
--						struct msg_frame, list_elem);
--				list_del(&pmsg->list_elem);
--				val = (pmsg->msg_data).msgq_id;
--				addr = (u32) &(((struct msg_dspmsg *)
--						 msg_output)->msgq_id);
--				write_ext32_bit_dsp_data(
--					pio_mgr->hbridge_context, addr, val);
--				val = (pmsg->msg_data).msg.dw_cmd;
--				addr = (u32) &((((struct msg_dspmsg *)
--						  msg_output)->msg).dw_cmd);
--				write_ext32_bit_dsp_data(
--					pio_mgr->hbridge_context, addr, val);
--				val = (pmsg->msg_data).msg.dw_arg1;
--				addr = (u32) &((((struct msg_dspmsg *)
--						  msg_output)->msg).dw_arg1);
--				write_ext32_bit_dsp_data(
--					pio_mgr->hbridge_context, addr, val);
--				val = (pmsg->msg_data).msg.dw_arg2;
--				addr = (u32) &((((struct msg_dspmsg *)
--						  msg_output)->msg).dw_arg2);
--				write_ext32_bit_dsp_data(
--					pio_mgr->hbridge_context, addr, val);
--				msg_output += sizeof(struct msg_dspmsg);
--				list_add_tail(&pmsg->list_elem,
--						&hmsg_mgr->msg_free_list);
--				sync_set_event(hmsg_mgr->sync_event);
--			}
--		}
-+	if (!msg_ctr_obj->buf_empty)
-+		return;
-+
-+	num_msgs = (hmsg_mgr->msgs_pending > hmsg_mgr->max_msgs) ?
-+		hmsg_mgr->max_msgs : hmsg_mgr->msgs_pending;
-+	msg_output = (struct msg_dspmsg *) pio_mgr->msg_output;
-+
-+	/* Copy num_msgs messages into shared memory */
-+	for (i = 0; i < num_msgs; i++) {
-+		if (list_empty(&hmsg_mgr->msg_used_list))
-+			continue;
-+
-+		pmsg = list_first_entry(&hmsg_mgr->msg_used_list,
-+				struct msg_frame, list_elem);
-+		list_del(&pmsg->list_elem);
-+
-+		val = (pmsg->msg_data).msgq_id;
-+		addr = (u32) &msg_output->msgq_id;
-+		write_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr, val);
-+
-+		val = (pmsg->msg_data).msg.dw_cmd;
-+		addr = (u32) &msg_output->msg.dw_cmd;
-+		write_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr, val);
-+
-+		val = (pmsg->msg_data).msg.dw_arg1;
-+		addr = (u32) &msg_output->msg.dw_arg1;
-+		write_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr, val);
-+
-+		val = (pmsg->msg_data).msg.dw_arg2;
-+		addr = (u32) &msg_output->msg.dw_arg2;
-+		write_ext32_bit_dsp_data(pio_mgr->hbridge_context, addr, val);
- 
--		if (num_msgs > 0) {
--			hmsg_mgr->msgs_pending -= num_msgs;
-+		msg_output++;
-+		list_add_tail(&pmsg->list_elem, &hmsg_mgr->msg_free_list);
-+		sync_set_event(hmsg_mgr->sync_event);
-+	}
-+
-+	if (num_msgs > 0) {
-+		hmsg_mgr->msgs_pending -= num_msgs;
- #if _CHNL_WORDSIZE == 2
--			/*
--			 * Access can be different SM access word size
--			 * (e.g. 16/32 bit words)
--			 */
--			msg_ctr_obj->size = (u16) num_msgs;
-+		/*
-+		 * Access can be different SM access word size
-+		 * (e.g. 16/32 bit words)
-+		 */
-+		msg_ctr_obj->size = (u16) num_msgs;
- #else
--			msg_ctr_obj->size = num_msgs;
-+		msg_ctr_obj->size = num_msgs;
- #endif
--			msg_ctr_obj->buf_empty = false;
--			/* Set the post SWI flag */
--			msg_ctr_obj->post_swi = true;
--			/* Tell the DSP we have written the output. */
--			sm_interrupt_dsp(pio_mgr->hbridge_context,
--						MBX_PCPY_CLASS);
--		}
-+		msg_ctr_obj->buf_empty = false;
-+		/* Set the post SWI flag */
-+		msg_ctr_obj->post_swi = true;
-+		/* Tell the DSP we have written the output. */
-+		sm_interrupt_dsp(pio_mgr->hbridge_context, MBX_PCPY_CLASS);
- 	}
- }
- 
-diff --git a/drivers/staging/tidspbridge/core/msg_sm.c b/drivers/staging/tidspbridge/core/msg_sm.c
-index de2cb83..07103f2 100644
---- a/drivers/staging/tidspbridge/core/msg_sm.c
-+++ b/drivers/staging/tidspbridge/core/msg_sm.c
-@@ -55,49 +55,46 @@ int bridge_msg_create(struct msg_mgr **msg_man,
- 	struct io_mgr *hio_mgr;
- 	int status = 0;
- 
--	if (!msg_man || !msg_callback || !hdev_obj) {
--		status = -EFAULT;
--		goto func_end;
--	}
-+	if (!msg_man || !msg_callback || !hdev_obj)
-+		return -EFAULT;
-+
- 	dev_get_io_mgr(hdev_obj, &hio_mgr);
--	if (!hio_mgr) {
--		status = -EFAULT;
--		goto func_end;
--	}
-+	if (!hio_mgr)
-+		return -EFAULT;
-+
- 	*msg_man = NULL;
- 	/* Allocate msg_ctrl manager object */
- 	msg_mgr_obj = kzalloc(sizeof(struct msg_mgr), GFP_KERNEL);
-+	if (!msg_mgr_obj)
-+		return -ENOMEM;
- 
--	if (msg_mgr_obj) {
--		msg_mgr_obj->on_exit = msg_callback;
--		msg_mgr_obj->hio_mgr = hio_mgr;
--		/* List of MSG_QUEUEs */
--		INIT_LIST_HEAD(&msg_mgr_obj->queue_list);
--		/*  Queues of message frames for messages to the DSP. Message
--		 * frames will only be added to the free queue when a
--		 * msg_queue object is created. */
--		INIT_LIST_HEAD(&msg_mgr_obj->msg_free_list);
--		INIT_LIST_HEAD(&msg_mgr_obj->msg_used_list);
--		spin_lock_init(&msg_mgr_obj->msg_mgr_lock);
--
--		/*  Create an event to be used by bridge_msg_put() in waiting
--		 *  for an available free frame from the message manager. */
--		msg_mgr_obj->sync_event =
--				kzalloc(sizeof(struct sync_object), GFP_KERNEL);
--		if (!msg_mgr_obj->sync_event)
--			status = -ENOMEM;
--		else
--			sync_init_event(msg_mgr_obj->sync_event);
--
--		if (!status)
--			*msg_man = msg_mgr_obj;
--		else
--			delete_msg_mgr(msg_mgr_obj);
--
--	} else {
--		status = -ENOMEM;
-+	msg_mgr_obj->on_exit = msg_callback;
-+	msg_mgr_obj->hio_mgr = hio_mgr;
-+	/* List of MSG_QUEUEs */
-+	INIT_LIST_HEAD(&msg_mgr_obj->queue_list);
-+	/*
-+	 * Queues of message frames for messages to the DSP. Message
-+	 * frames will only be added to the free queue when a
-+	 * msg_queue object is created.
-+	 */
-+	INIT_LIST_HEAD(&msg_mgr_obj->msg_free_list);
-+	INIT_LIST_HEAD(&msg_mgr_obj->msg_used_list);
-+	spin_lock_init(&msg_mgr_obj->msg_mgr_lock);
-+
-+	/*
-+	 * Create an event to be used by bridge_msg_put() in waiting
-+	 * for an available free frame from the message manager.
-+	 */
-+	msg_mgr_obj->sync_event =
-+		kzalloc(sizeof(struct sync_object), GFP_KERNEL);
-+	if (!msg_mgr_obj->sync_event) {
-+		kfree(msg_mgr_obj);
-+		return -ENOMEM;
- 	}
--func_end:
-+	sync_init_event(msg_mgr_obj->sync_event);
-+
-+	*msg_man = msg_mgr_obj;
-+
- 	return status;
- }
- 
-@@ -106,8 +103,7 @@ func_end:
-  *      Create a msg_queue for sending/receiving messages to/from a node
-  *      on the DSP.
-  */
--int bridge_msg_create_queue(struct msg_mgr *hmsg_mgr,
--				struct msg_queue **msgq,
-+int bridge_msg_create_queue(struct msg_mgr *hmsg_mgr, struct msg_queue **msgq,
- 				u32 msgq_id, u32 max_msgs, void *arg)
- {
- 	u32 i;
-@@ -115,18 +111,15 @@ int bridge_msg_create_queue(struct msg_mgr *hmsg_mgr,
- 	struct msg_queue *msg_q;
- 	int status = 0;
- 
--	if (!hmsg_mgr || msgq == NULL) {
--		status = -EFAULT;
--		goto func_end;
--	}
-+	if (!hmsg_mgr || msgq == NULL)
-+		return -EFAULT;
- 
- 	*msgq = NULL;
- 	/* Allocate msg_queue object */
- 	msg_q = kzalloc(sizeof(struct msg_queue), GFP_KERNEL);
--	if (!msg_q) {
--		status = -ENOMEM;
--		goto func_end;
--	}
-+	if (!msg_q)
-+		return -ENOMEM;
-+
- 	msg_q->max_msgs = max_msgs;
- 	msg_q->hmsg_mgr = hmsg_mgr;
- 	msg_q->arg = arg;	/* Node handle */
-@@ -137,78 +130,68 @@ int bridge_msg_create_queue(struct msg_mgr *hmsg_mgr,
- 
- 	/*  Create event that will be signalled when a message from
- 	 *  the DSP is available. */
--	if (!status) {
--		msg_q->sync_event = kzalloc(sizeof(struct sync_object),
--							GFP_KERNEL);
--		if (msg_q->sync_event)
--			sync_init_event(msg_q->sync_event);
--		else
--			status = -ENOMEM;
-+	msg_q->sync_event = kzalloc(sizeof(struct sync_object), GFP_KERNEL);
-+	if (!msg_q->sync_event) {
-+		status = -ENOMEM;
-+		goto out_err;
-+
- 	}
-+	sync_init_event(msg_q->sync_event);
- 
- 	/* Create a notification list for message ready notification. */
--	if (!status) {
--		msg_q->ntfy_obj = kmalloc(sizeof(struct ntfy_object),
--							GFP_KERNEL);
--		if (msg_q->ntfy_obj)
--			ntfy_init(msg_q->ntfy_obj);
--		else
--			status = -ENOMEM;
-+	msg_q->ntfy_obj = kmalloc(sizeof(struct ntfy_object), GFP_KERNEL);
-+	if (!msg_q->ntfy_obj) {
-+		status = -ENOMEM;
-+		goto out_err;
- 	}
-+	ntfy_init(msg_q->ntfy_obj);
- 
- 	/*  Create events that will be used to synchronize cleanup
- 	 *  when the object is deleted. sync_done will be set to
- 	 *  unblock threads in MSG_Put() or MSG_Get(). sync_done_ack
- 	 *  will be set by the unblocked thread to signal that it
- 	 *  is unblocked and will no longer reference the object. */
--	if (!status) {
--		msg_q->sync_done = kzalloc(sizeof(struct sync_object),
--							GFP_KERNEL);
--		if (msg_q->sync_done)
--			sync_init_event(msg_q->sync_done);
--		else
--			status = -ENOMEM;
-+	msg_q->sync_done = kzalloc(sizeof(struct sync_object), GFP_KERNEL);
-+	if (!msg_q->sync_done) {
-+		status = -ENOMEM;
-+		goto out_err;
- 	}
-+	sync_init_event(msg_q->sync_done);
- 
--	if (!status) {
--		msg_q->sync_done_ack = kzalloc(sizeof(struct sync_object),
--							GFP_KERNEL);
--		if (msg_q->sync_done_ack)
--			sync_init_event(msg_q->sync_done_ack);
--		else
--			status = -ENOMEM;
-+	msg_q->sync_done_ack = kzalloc(sizeof(struct sync_object), GFP_KERNEL);
-+	if (!msg_q->sync_done_ack) {
-+		status = -ENOMEM;
-+		goto out_err;
- 	}
-+	sync_init_event(msg_q->sync_done_ack);
- 
--	if (!status) {
--		/* Enter critical section */
--		spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
--		/* Initialize message frames and put in appropriate queues */
--		for (i = 0; i < max_msgs && !status; i++) {
--			status = add_new_msg(&hmsg_mgr->msg_free_list);
--			if (!status) {
--				num_allocated++;
--				status = add_new_msg(&msg_q->msg_free_list);
--			}
--		}
--		if (status) {
--			/*  Stay inside CS to prevent others from taking any
--			 *  of the newly allocated message frames. */
--			delete_msg_queue(msg_q, num_allocated);
--		} else {
--			list_add_tail(&msg_q->list_elem,
--					&hmsg_mgr->queue_list);
--			*msgq = msg_q;
--			/* Signal that free frames are now available */
--			if (!list_empty(&hmsg_mgr->msg_free_list))
--				sync_set_event(hmsg_mgr->sync_event);
--
-+	/* Enter critical section */
-+	spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
-+	/* Initialize message frames and put in appropriate queues */
-+	for (i = 0; i < max_msgs && !status; i++) {
-+		status = add_new_msg(&hmsg_mgr->msg_free_list);
-+		if (!status) {
-+			num_allocated++;
-+			status = add_new_msg(&msg_q->msg_free_list);
- 		}
--		/* Exit critical section */
-+	}
-+	if (status) {
- 		spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
--	} else {
--		delete_msg_queue(msg_q, 0);
-+		goto out_err;
- 	}
--func_end:
-+
-+	list_add_tail(&msg_q->list_elem, &hmsg_mgr->queue_list);
-+	*msgq = msg_q;
-+	/* Signal that free frames are now available */
-+	if (!list_empty(&hmsg_mgr->msg_free_list))
-+		sync_set_event(hmsg_mgr->sync_event);
-+
-+	/* Exit critical section */
-+	spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
-+
-+	return 0;
-+out_err:
-+	delete_msg_queue(msg_q, num_allocated);
- 	return status;
- }
- 
-@@ -232,7 +215,7 @@ void bridge_msg_delete_queue(struct msg_queue *msg_queue_obj)
- 	u32 io_msg_pend;
- 
- 	if (!msg_queue_obj || !msg_queue_obj->hmsg_mgr)
--		goto func_end;
-+		return;
- 
- 	hmsg_mgr = msg_queue_obj->hmsg_mgr;
- 	msg_queue_obj->done = true;
-@@ -252,10 +235,7 @@ void bridge_msg_delete_queue(struct msg_queue *msg_queue_obj)
- 	delete_msg_queue(msg_queue_obj, msg_queue_obj->max_msgs);
- 	if (list_empty(&hmsg_mgr->msg_free_list))
- 		sync_reset_event(hmsg_mgr->sync_event);
--
- 	spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
--func_end:
--	return;
- }
- 
- /*
-@@ -267,19 +247,15 @@ int bridge_msg_get(struct msg_queue *msg_queue_obj,
- {
- 	struct msg_frame *msg_frame_obj;
- 	struct msg_mgr *hmsg_mgr;
--	bool got_msg = false;
- 	struct sync_object *syncs[2];
- 	u32 index;
- 	int status = 0;
- 
--	if (!msg_queue_obj || pmsg == NULL) {
--		status = -ENOMEM;
--		goto func_end;
--	}
-+	if (!msg_queue_obj || pmsg == NULL)
-+		return -ENOMEM;
- 
- 	hmsg_mgr = msg_queue_obj->hmsg_mgr;
- 
--	/* Enter critical section */
- 	spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
- 	/* If a message is already there, get it */
- 	if (!list_empty(&msg_queue_obj->msg_used_list)) {
-@@ -291,59 +267,54 @@ int bridge_msg_get(struct msg_queue *msg_queue_obj,
- 				&msg_queue_obj->msg_free_list);
- 		if (list_empty(&msg_queue_obj->msg_used_list))
- 			sync_reset_event(msg_queue_obj->sync_event);
-+		spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
-+		return 0;
-+	}
- 
--		got_msg = true;
--	} else {
--		if (msg_queue_obj->done)
--			status = -EPERM;
--		else
--			msg_queue_obj->io_msg_pend++;
--
-+	if (msg_queue_obj->done) {
-+		spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
-+		return -EPERM;
- 	}
--	/* Exit critical section */
-+	msg_queue_obj->io_msg_pend++;
- 	spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
--	if (!status && !got_msg) {
--		/*  Wait til message is available, timeout, or done. We don't
--		 *  have to schedule the DPC, since the DSP will send messages
--		 *  when they are available. */
--		syncs[0] = msg_queue_obj->sync_event;
--		syncs[1] = msg_queue_obj->sync_done;
--		status = sync_wait_on_multiple_events(syncs, 2, utimeout,
--						      &index);
--		/* Enter critical section */
--		spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
--		if (msg_queue_obj->done) {
--			msg_queue_obj->io_msg_pend--;
--			/* Exit critical section */
--			spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
--			/*  Signal that we're not going to access msg_queue_obj
--			 *  anymore, so it can be deleted. */
--			(void)sync_set_event(msg_queue_obj->sync_done_ack);
--			status = -EPERM;
--		} else {
--			if (!status && !list_empty(&msg_queue_obj->
--						msg_used_list)) {
--				/* Get msg from used list */
--				msg_frame_obj = list_first_entry(
--						&msg_queue_obj->msg_used_list,
--						struct msg_frame, list_elem);
--				list_del(&msg_frame_obj->list_elem);
--				/* Copy message into pmsg and put frame on the
--				 * free list */
--				*pmsg = msg_frame_obj->msg_data.msg;
--				list_add_tail(&msg_frame_obj->list_elem,
--						&msg_queue_obj->msg_free_list);
--			}
--			msg_queue_obj->io_msg_pend--;
--			/* Reset the event if there are still queued messages */
--			if (!list_empty(&msg_queue_obj->msg_used_list))
--				sync_set_event(msg_queue_obj->sync_event);
--
--			/* Exit critical section */
--			spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
--		}
-+
-+	/*
-+	 * Wait til message is available, timeout, or done. We don't
-+	 * have to schedule the DPC, since the DSP will send messages
-+	 * when they are available.
-+	 */
-+	syncs[0] = msg_queue_obj->sync_event;
-+	syncs[1] = msg_queue_obj->sync_done;
-+	status = sync_wait_on_multiple_events(syncs, 2, utimeout, &index);
-+
-+	spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
-+	if (msg_queue_obj->done) {
-+		msg_queue_obj->io_msg_pend--;
-+		spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
-+		/*
-+		 * Signal that we're not going to access msg_queue_obj
-+		 * anymore, so it can be deleted.
-+		 */
-+		sync_set_event(msg_queue_obj->sync_done_ack);
-+		return -EPERM;
- 	}
--func_end:
-+	if (!status && !list_empty(&msg_queue_obj->msg_used_list)) {
-+		/* Get msg from used list */
-+		msg_frame_obj = list_first_entry(&msg_queue_obj->msg_used_list,
-+				struct msg_frame, list_elem);
-+		list_del(&msg_frame_obj->list_elem);
-+		/* Copy message into pmsg and put frame on the free list */
-+		*pmsg = msg_frame_obj->msg_data.msg;
-+		list_add_tail(&msg_frame_obj->list_elem,
-+				&msg_queue_obj->msg_free_list);
-+	}
-+	msg_queue_obj->io_msg_pend--;
-+	/* Reset the event if there are still queued messages */
-+	if (!list_empty(&msg_queue_obj->msg_used_list))
-+		sync_set_event(msg_queue_obj->sync_event);
-+
-+	spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
-+
- 	return status;
- }
- 
-@@ -356,15 +327,13 @@ int bridge_msg_put(struct msg_queue *msg_queue_obj,
- {
- 	struct msg_frame *msg_frame_obj;
- 	struct msg_mgr *hmsg_mgr;
--	bool put_msg = false;
- 	struct sync_object *syncs[2];
- 	u32 index;
--	int status = 0;
-+	int status;
-+
-+	if (!msg_queue_obj || !pmsg || !msg_queue_obj->hmsg_mgr)
-+		return -EFAULT;
- 
--	if (!msg_queue_obj || !pmsg || !msg_queue_obj->hmsg_mgr) {
--		status = -ENOMEM;
--		goto func_end;
--	}
- 	hmsg_mgr = msg_queue_obj->hmsg_mgr;
- 
- 	spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
-@@ -380,7 +349,7 @@ int bridge_msg_put(struct msg_queue *msg_queue_obj,
- 		list_add_tail(&msg_frame_obj->list_elem,
- 				&hmsg_mgr->msg_used_list);
- 		hmsg_mgr->msgs_pending++;
--		put_msg = true;
-+
- 		if (list_empty(&hmsg_mgr->msg_free_list))
- 			sync_reset_event(hmsg_mgr->sync_event);
- 
-@@ -388,70 +357,70 @@ int bridge_msg_put(struct msg_queue *msg_queue_obj,
- 		spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
- 		/* Schedule a DPC, to do the actual data transfer: */
- 		iosm_schedule(hmsg_mgr->hio_mgr);
--	} else {
--		if (msg_queue_obj->done)
--			status = -EPERM;
--		else
--			msg_queue_obj->io_msg_pend++;
-+		return 0;
-+	}
- 
-+	if (msg_queue_obj->done) {
- 		spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
-+		return -EPERM;
- 	}
--	if (!status && !put_msg) {
--		/* Wait til a free message frame is available, timeout,
--		 * or done */
--		syncs[0] = hmsg_mgr->sync_event;
--		syncs[1] = msg_queue_obj->sync_done;
--		status = sync_wait_on_multiple_events(syncs, 2, utimeout,
--						      &index);
--		if (status)
--			goto func_end;
--		/* Enter critical section */
--		spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
--		if (msg_queue_obj->done) {
--			msg_queue_obj->io_msg_pend--;
--			/* Exit critical section */
--			spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
--			/*  Signal that we're not going to access msg_queue_obj
--			 *  anymore, so it can be deleted. */
--			(void)sync_set_event(msg_queue_obj->sync_done_ack);
--			status = -EPERM;
--		} else {
--			if (list_empty(&hmsg_mgr->msg_free_list)) {
--				status = -EFAULT;
--				goto func_cont;
--			}
--			/* Get msg from free list */
--			msg_frame_obj = list_first_entry(
--					&hmsg_mgr->msg_free_list,
--					struct msg_frame, list_elem);
--			list_del(&msg_frame_obj->list_elem);
--			/*
--			 * Copy message into pmsg and put frame on the
--			 * used list.
--			 */
--			msg_frame_obj->msg_data.msg = *pmsg;
--			msg_frame_obj->msg_data.msgq_id =
--				msg_queue_obj->msgq_id;
--			list_add_tail(&msg_frame_obj->list_elem,
--					&hmsg_mgr->msg_used_list);
--			hmsg_mgr->msgs_pending++;
--			/*
--			 * Schedule a DPC, to do the actual
--			 * data transfer.
--			 */
--			iosm_schedule(hmsg_mgr->hio_mgr);
--
--			msg_queue_obj->io_msg_pend--;
--			/* Reset event if there are still frames available */
--			if (!list_empty(&hmsg_mgr->msg_free_list))
--				sync_set_event(hmsg_mgr->sync_event);
--func_cont:
--			/* Exit critical section */
--			spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
--		}
-+	msg_queue_obj->io_msg_pend++;
-+
-+	spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
-+
-+	/* Wait til a free message frame is available, timeout, or done */
-+	syncs[0] = hmsg_mgr->sync_event;
-+	syncs[1] = msg_queue_obj->sync_done;
-+	status = sync_wait_on_multiple_events(syncs, 2, utimeout, &index);
-+	if (status)
-+		return status;
-+
-+	/* Enter critical section */
-+	spin_lock_bh(&hmsg_mgr->msg_mgr_lock);
-+	if (msg_queue_obj->done) {
-+		msg_queue_obj->io_msg_pend--;
-+		/* Exit critical section */
-+		spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
-+		/*
-+		 * Signal that we're not going to access msg_queue_obj
-+		 * anymore, so it can be deleted.
-+		 */
-+		sync_set_event(msg_queue_obj->sync_done_ack);
-+		return -EPERM;
- 	}
--func_end:
--	return status;
-+
-+	if (list_empty(&hmsg_mgr->msg_free_list)) {
-+		spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
-+		return -EFAULT;
-+	}
-+
-+	/* Get msg from free list */
-+	msg_frame_obj = list_first_entry(&hmsg_mgr->msg_free_list,
-+			struct msg_frame, list_elem);
-+	/*
-+	 * Copy message into pmsg and put frame on the
-+	 * used list.
-+	 */
-+	list_del(&msg_frame_obj->list_elem);
-+	msg_frame_obj->msg_data.msg = *pmsg;
-+	msg_frame_obj->msg_data.msgq_id = msg_queue_obj->msgq_id;
-+	list_add_tail(&msg_frame_obj->list_elem, &hmsg_mgr->msg_used_list);
-+	hmsg_mgr->msgs_pending++;
-+	/*
-+	 * Schedule a DPC, to do the actual
-+	 * data transfer.
-+	 */
-+	iosm_schedule(hmsg_mgr->hio_mgr);
-+
-+	msg_queue_obj->io_msg_pend--;
-+	/* Reset event if there are still frames available */
-+	if (!list_empty(&hmsg_mgr->msg_free_list))
-+		sync_set_event(hmsg_mgr->sync_event);
-+
-+	/* Exit critical section */
-+	spin_unlock_bh(&hmsg_mgr->msg_mgr_lock);
-+
-+	return 0;
- }
- 
- /*
-@@ -518,16 +487,14 @@ void bridge_msg_set_queue_id(struct msg_queue *msg_queue_obj, u32 msgq_id)
- static int add_new_msg(struct list_head *msg_list)
- {
- 	struct msg_frame *pmsg;
--	int status = 0;
- 
- 	pmsg = kzalloc(sizeof(struct msg_frame), GFP_ATOMIC);
--	if (pmsg != NULL) {
--		list_add_tail(&pmsg->list_elem, msg_list);
--	} else {
--		status = -ENOMEM;
--	}
-+	if (!pmsg)
-+		return -ENOMEM;
- 
--	return status;
-+	list_add_tail(&pmsg->list_elem, msg_list);
-+
-+	return 0;
- }
- 
- /*
-@@ -536,17 +503,13 @@ static int add_new_msg(struct list_head *msg_list)
- static void delete_msg_mgr(struct msg_mgr *hmsg_mgr)
- {
- 	if (!hmsg_mgr)
--		goto func_end;
-+		return;
- 
- 	/* FIXME: free elements from queue_list? */
- 	free_msg_list(&hmsg_mgr->msg_free_list);
- 	free_msg_list(&hmsg_mgr->msg_used_list);
--
- 	kfree(hmsg_mgr->sync_event);
--
- 	kfree(hmsg_mgr);
--func_end:
--	return;
- }
- 
- /*
-@@ -559,7 +522,7 @@ static void delete_msg_queue(struct msg_queue *msg_queue_obj, u32 num_to_dsp)
- 	u32 i;
- 
- 	if (!msg_queue_obj || !msg_queue_obj->hmsg_mgr)
--		goto func_end;
-+		return;
- 
- 	hmsg_mgr = msg_queue_obj->hmsg_mgr;
- 
-@@ -586,9 +549,6 @@ static void delete_msg_queue(struct msg_queue *msg_queue_obj, u32 num_to_dsp)
- 	kfree(msg_queue_obj->sync_done_ack);
- 
- 	kfree(msg_queue_obj);
--func_end:
--	return;
--
- }
- 
- /*
-@@ -599,13 +559,10 @@ static void free_msg_list(struct list_head *msg_list)
- 	struct msg_frame *pmsg, *tmp;
- 
- 	if (!msg_list)
--		goto func_end;
-+		return;
- 
- 	list_for_each_entry_safe(pmsg, tmp, msg_list, list_elem) {
- 		list_del(&pmsg->list_elem);
- 		kfree(pmsg);
- 	}
--
--func_end:
--	return;
- }
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0016-staging-tidspbridge-pmgr-code-cleanup.patch b/patches/dspbridge/0016-staging-tidspbridge-pmgr-code-cleanup.patch
deleted file mode 100644
index 07bb4f94e51b7afcdc9d9516efe08cd9fa797bc2..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0016-staging-tidspbridge-pmgr-code-cleanup.patch
+++ /dev/null
@@ -1,580 +0,0 @@
-From 61196fba692ad04f36440be98964119dcfc82689 Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Sun, 21 Nov 2010 10:46:29 +0000
-Subject: [PATCH 16/25] staging: tidspbridge: pmgr code cleanup
-
-Reorganized some code in the pmgr module to increase
-its readability. No functional changes were done.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/pmgr/cmm.c |  357 ++++++++++++++-----------------
- drivers/staging/tidspbridge/pmgr/dev.c |   22 +--
- 2 files changed, 168 insertions(+), 211 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/pmgr/cmm.c b/drivers/staging/tidspbridge/pmgr/cmm.c
-index d7ca2a4..babe66f 100644
---- a/drivers/staging/tidspbridge/pmgr/cmm.c
-+++ b/drivers/staging/tidspbridge/pmgr/cmm.c
-@@ -250,26 +250,23 @@ int cmm_create(struct cmm_object **ph_cmm_mgr,
- 	*ph_cmm_mgr = NULL;
- 	/* create, zero, and tag a cmm mgr object */
- 	cmm_obj = kzalloc(sizeof(struct cmm_object), GFP_KERNEL);
--	if (cmm_obj != NULL) {
--		if (mgr_attrts == NULL)
--			mgr_attrts = &cmm_dfltmgrattrs;	/* set defaults */
--
--		/* 4 bytes minimum */
--		DBC_ASSERT(mgr_attrts->ul_min_block_size >= 4);
--		/* save away smallest block allocation for this cmm mgr */
--		cmm_obj->ul_min_block_size = mgr_attrts->ul_min_block_size;
--		cmm_obj->dw_page_size = PAGE_SIZE;
--
--		/* Note: DSP SM seg table(aDSPSMSegTab[]) zero'd by
--		 * MEM_ALLOC_OBJECT */
--
--		/* create node free list */
--		INIT_LIST_HEAD(&cmm_obj->node_free_list);
--		mutex_init(&cmm_obj->cmm_lock);
--		*ph_cmm_mgr = cmm_obj;
--	} else {
--		status = -ENOMEM;
--	}
-+	if (!cmm_obj)
-+		return -ENOMEM;
-+
-+	if (mgr_attrts == NULL)
-+		mgr_attrts = &cmm_dfltmgrattrs;	/* set defaults */
-+
-+	/* 4 bytes minimum */
-+	DBC_ASSERT(mgr_attrts->ul_min_block_size >= 4);
-+	/* save away smallest block allocation for this cmm mgr */
-+	cmm_obj->ul_min_block_size = mgr_attrts->ul_min_block_size;
-+	cmm_obj->dw_page_size = PAGE_SIZE;
-+
-+	/* create node free list */
-+	INIT_LIST_HEAD(&cmm_obj->node_free_list);
-+	mutex_init(&cmm_obj->cmm_lock);
-+	*ph_cmm_mgr = cmm_obj;
-+
- 	return status;
- }
- 
-@@ -346,13 +343,12 @@ void cmm_exit(void)
-  *  Purpose:
-  *      Free the given buffer.
-  */
--int cmm_free_buf(struct cmm_object *hcmm_mgr, void *buf_pa,
--			u32 ul_seg_id)
-+int cmm_free_buf(struct cmm_object *hcmm_mgr, void *buf_pa, u32 ul_seg_id)
- {
- 	struct cmm_object *cmm_mgr_obj = (struct cmm_object *)hcmm_mgr;
- 	int status = -EFAULT;
- 	struct cmm_mnode *curr, *tmp;
--	struct cmm_allocator *allocator = NULL;
-+	struct cmm_allocator *allocator;
- 	struct cmm_attrs *pattrs;
- 
- 	DBC_REQUIRE(refs > 0);
-@@ -366,21 +362,22 @@ int cmm_free_buf(struct cmm_object *hcmm_mgr, void *buf_pa,
- 		status = -EFAULT;
- 		return status;
- 	}
--	/* get the allocator for this segment id */
-+
- 	allocator = get_allocator(cmm_mgr_obj, ul_seg_id);
--	if (allocator != NULL) {
--		mutex_lock(&cmm_mgr_obj->cmm_lock);
--		list_for_each_entry_safe(curr, tmp, &allocator->in_use_list,
--				link) {
--			if (curr->dw_pa == (u32) buf_pa) {
--				list_del(&curr->link);
--				add_to_free_list(allocator, curr);
--				status = 0;
--				break;
--			}
-+	if (!allocator)
-+		return status;
-+
-+	mutex_lock(&cmm_mgr_obj->cmm_lock);
-+	list_for_each_entry_safe(curr, tmp, &allocator->in_use_list, link) {
-+		if (curr->dw_pa == (u32) buf_pa) {
-+			list_del(&curr->link);
-+			add_to_free_list(allocator, curr);
-+			status = 0;
-+			break;
- 		}
--		mutex_unlock(&cmm_mgr_obj->cmm_lock);
- 	}
-+	mutex_unlock(&cmm_mgr_obj->cmm_lock);
-+
- 	return status;
- }
- 
-@@ -438,31 +435,30 @@ int cmm_get_info(struct cmm_object *hcmm_mgr,
- 	for (ul_seg = 1; ul_seg <= CMM_MAXGPPSEGS; ul_seg++) {
- 		/* get the allocator object for this segment id */
- 		altr = get_allocator(cmm_mgr_obj, ul_seg);
--		if (altr != NULL) {
--			cmm_info_obj->ul_num_gppsm_segs++;
--			cmm_info_obj->seg_info[ul_seg - 1].dw_seg_base_pa =
--			    altr->shm_base - altr->ul_dsp_size;
--			cmm_info_obj->seg_info[ul_seg - 1].ul_total_seg_size =
--			    altr->ul_dsp_size + altr->ul_sm_size;
--			cmm_info_obj->seg_info[ul_seg - 1].dw_gpp_base_pa =
--			    altr->shm_base;
--			cmm_info_obj->seg_info[ul_seg - 1].ul_gpp_size =
--			    altr->ul_sm_size;
--			cmm_info_obj->seg_info[ul_seg - 1].dw_dsp_base_va =
--			    altr->dw_dsp_base;
--			cmm_info_obj->seg_info[ul_seg - 1].ul_dsp_size =
--			    altr->ul_dsp_size;
--			cmm_info_obj->seg_info[ul_seg - 1].dw_seg_base_va =
--			    altr->dw_vm_base - altr->ul_dsp_size;
--			cmm_info_obj->seg_info[ul_seg - 1].ul_in_use_cnt = 0;
--			/* Count inUse blocks */
--			list_for_each_entry(curr, &altr->in_use_list, link) {
--				cmm_info_obj->ul_total_in_use_cnt++;
--				cmm_info_obj->seg_info[ul_seg -
--						       1].ul_in_use_cnt++;
--			}
-+		if (!altr)
-+			continue;
-+		cmm_info_obj->ul_num_gppsm_segs++;
-+		cmm_info_obj->seg_info[ul_seg - 1].dw_seg_base_pa =
-+			altr->shm_base - altr->ul_dsp_size;
-+		cmm_info_obj->seg_info[ul_seg - 1].ul_total_seg_size =
-+			altr->ul_dsp_size + altr->ul_sm_size;
-+		cmm_info_obj->seg_info[ul_seg - 1].dw_gpp_base_pa =
-+			altr->shm_base;
-+		cmm_info_obj->seg_info[ul_seg - 1].ul_gpp_size =
-+			altr->ul_sm_size;
-+		cmm_info_obj->seg_info[ul_seg - 1].dw_dsp_base_va =
-+			altr->dw_dsp_base;
-+		cmm_info_obj->seg_info[ul_seg - 1].ul_dsp_size =
-+			altr->ul_dsp_size;
-+		cmm_info_obj->seg_info[ul_seg - 1].dw_seg_base_va =
-+			altr->dw_vm_base - altr->ul_dsp_size;
-+		cmm_info_obj->seg_info[ul_seg - 1].ul_in_use_cnt = 0;
-+
-+		list_for_each_entry(curr, &altr->in_use_list, link) {
-+			cmm_info_obj->ul_total_in_use_cnt++;
-+			cmm_info_obj->seg_info[ul_seg - 1].ul_in_use_cnt++;
- 		}
--	}			/* end for */
-+	}
- 	mutex_unlock(&cmm_mgr_obj->cmm_lock);
- 	return status;
- }
-@@ -508,23 +504,25 @@ int cmm_register_gppsm_seg(struct cmm_object *hcmm_mgr,
- 	DBC_REQUIRE(dw_gpp_base_pa != 0);
- 	DBC_REQUIRE(gpp_base_va != 0);
- 	DBC_REQUIRE((c_factor <= CMM_ADDTODSPPA) &&
--		    (c_factor >= CMM_SUBFROMDSPPA));
-+			(c_factor >= CMM_SUBFROMDSPPA));
-+
- 	dev_dbg(bridge, "%s: dw_gpp_base_pa %x ul_size %x dsp_addr_offset %x "
--		"dw_dsp_base %x ul_dsp_size %x gpp_base_va %x\n", __func__,
--		dw_gpp_base_pa, ul_size, dsp_addr_offset, dw_dsp_base,
--		ul_dsp_size, gpp_base_va);
--	if (!hcmm_mgr) {
--		status = -EFAULT;
--		return status;
--	}
-+			"dw_dsp_base %x ul_dsp_size %x gpp_base_va %x\n",
-+			__func__, dw_gpp_base_pa, ul_size, dsp_addr_offset,
-+			dw_dsp_base, ul_dsp_size, gpp_base_va);
-+
-+	if (!hcmm_mgr)
-+		return -EFAULT;
-+
- 	/* make sure we have room for another allocator */
- 	mutex_lock(&cmm_mgr_obj->cmm_lock);
-+
- 	slot_seg = get_slot(cmm_mgr_obj);
- 	if (slot_seg < 0) {
--		/* get a slot number */
- 		status = -EPERM;
- 		goto func_end;
- 	}
-+
- 	/* Check if input ul_size is big enough to alloc at least one block */
- 	if (ul_size < cmm_mgr_obj->ul_min_block_size) {
- 		status = -EINVAL;
-@@ -533,37 +531,35 @@ int cmm_register_gppsm_seg(struct cmm_object *hcmm_mgr,
- 
- 	/* create, zero, and tag an SM allocator object */
- 	psma = kzalloc(sizeof(struct cmm_allocator), GFP_KERNEL);
--	if (psma != NULL) {
--		psma->hcmm_mgr = hcmm_mgr;	/* ref to parent */
--		psma->shm_base = dw_gpp_base_pa;	/* SM Base phys */
--		psma->ul_sm_size = ul_size;	/* SM segment size in bytes */
--		psma->dw_vm_base = gpp_base_va;
--		psma->dw_dsp_phys_addr_offset = dsp_addr_offset;
--		psma->c_factor = c_factor;
--		psma->dw_dsp_base = dw_dsp_base;
--		psma->ul_dsp_size = ul_dsp_size;
--		if (psma->dw_vm_base == 0) {
--			status = -EPERM;
--			goto func_end;
--		}
--		/* return the actual segment identifier */
--		*sgmt_id = (u32) slot_seg + 1;
--		/* create memory free list */
--		INIT_LIST_HEAD(&psma->free_list);
--
--		/* create memory in-use list */
--		INIT_LIST_HEAD(&psma->in_use_list);
--
--		/* Get a mem node for this hunk-o-memory */
--		new_node = get_node(cmm_mgr_obj, dw_gpp_base_pa,
--				    psma->dw_vm_base, ul_size);
--		/* Place node on the SM allocator's free list */
--		if (new_node) {
--			list_add_tail(&new_node->link, &psma->free_list);
--		} else {
--			status = -ENOMEM;
--			goto func_end;
--		}
-+	if (!psma) {
-+		status = -ENOMEM;
-+		goto func_end;
-+	}
-+
-+	psma->hcmm_mgr = hcmm_mgr;	/* ref to parent */
-+	psma->shm_base = dw_gpp_base_pa;	/* SM Base phys */
-+	psma->ul_sm_size = ul_size;	/* SM segment size in bytes */
-+	psma->dw_vm_base = gpp_base_va;
-+	psma->dw_dsp_phys_addr_offset = dsp_addr_offset;
-+	psma->c_factor = c_factor;
-+	psma->dw_dsp_base = dw_dsp_base;
-+	psma->ul_dsp_size = ul_dsp_size;
-+	if (psma->dw_vm_base == 0) {
-+		status = -EPERM;
-+		goto func_end;
-+	}
-+	/* return the actual segment identifier */
-+	*sgmt_id = (u32) slot_seg + 1;
-+
-+	INIT_LIST_HEAD(&psma->free_list);
-+	INIT_LIST_HEAD(&psma->in_use_list);
-+
-+	/* Get a mem node for this hunk-o-memory */
-+	new_node = get_node(cmm_mgr_obj, dw_gpp_base_pa,
-+			psma->dw_vm_base, ul_size);
-+	/* Place node on the SM allocator's free list */
-+	if (new_node) {
-+		list_add_tail(&new_node->link, &psma->free_list);
- 	} else {
- 		status = -ENOMEM;
- 		goto func_end;
-@@ -572,12 +568,11 @@ int cmm_register_gppsm_seg(struct cmm_object *hcmm_mgr,
- 	cmm_mgr_obj->pa_gppsm_seg_tab[slot_seg] = psma;
- 
- func_end:
--	if (status && psma) {
--		/* Cleanup allocator */
-+	/* Cleanup allocator */
-+	if (status && psma)
- 		un_register_gppsm_seg(psma);
--	}
--
- 	mutex_unlock(&cmm_mgr_obj->cmm_lock);
-+
- 	return status;
- }
- 
-@@ -595,36 +590,36 @@ int cmm_un_register_gppsm_seg(struct cmm_object *hcmm_mgr,
- 	u32 ul_id = ul_seg_id;
- 
- 	DBC_REQUIRE(ul_seg_id > 0);
--	if (hcmm_mgr) {
--		if (ul_seg_id == CMM_ALLSEGMENTS)
--			ul_id = 1;
--
--		if ((ul_id > 0) && (ul_id <= CMM_MAXGPPSEGS)) {
--			while (ul_id <= CMM_MAXGPPSEGS) {
--				mutex_lock(&cmm_mgr_obj->cmm_lock);
--				/* slot = seg_id-1 */
--				psma = cmm_mgr_obj->pa_gppsm_seg_tab[ul_id - 1];
--				if (psma != NULL) {
--					un_register_gppsm_seg(psma);
--					/* Set alctr ptr to NULL for future
--					 * reuse */
--					cmm_mgr_obj->pa_gppsm_seg_tab[ul_id -
--								      1] = NULL;
--				} else if (ul_seg_id != CMM_ALLSEGMENTS) {
--					status = -EPERM;
--				}
--				mutex_unlock(&cmm_mgr_obj->cmm_lock);
--				if (ul_seg_id != CMM_ALLSEGMENTS)
--					break;
--
--				ul_id++;
--			}	/* end while */
--		} else {
--			status = -EINVAL;
-+	if (!hcmm_mgr)
-+		return -EFAULT;
-+
-+	if (ul_seg_id == CMM_ALLSEGMENTS)
-+		ul_id = 1;
-+
-+	if ((ul_id <= 0) || (ul_id > CMM_MAXGPPSEGS))
-+		return -EINVAL;
-+
-+	/*
-+	 * FIXME: CMM_MAXGPPSEGS == 1. why use a while cycle? Seems to me like
-+	 * the ul_seg_id is not needed here. It must be always 1.
-+	 */
-+	while (ul_id <= CMM_MAXGPPSEGS) {
-+		mutex_lock(&cmm_mgr_obj->cmm_lock);
-+		/* slot = seg_id-1 */
-+		psma = cmm_mgr_obj->pa_gppsm_seg_tab[ul_id - 1];
-+		if (psma != NULL) {
-+			un_register_gppsm_seg(psma);
-+			/* Set alctr ptr to NULL for future reuse */
-+			cmm_mgr_obj->pa_gppsm_seg_tab[ul_id - 1] = NULL;
-+		} else if (ul_seg_id != CMM_ALLSEGMENTS) {
-+			status = -EPERM;
- 		}
--	} else {
--		status = -EFAULT;
--	}
-+		mutex_unlock(&cmm_mgr_obj->cmm_lock);
-+		if (ul_seg_id != CMM_ALLSEGMENTS)
-+			break;
-+
-+		ul_id++;
-+	}	/* end while */
- 	return status;
- }
- 
-@@ -690,26 +685,29 @@ static s32 get_slot(struct cmm_object *cmm_mgr_obj)
- static struct cmm_mnode *get_node(struct cmm_object *cmm_mgr_obj, u32 dw_pa,
- 				  u32 dw_va, u32 ul_size)
- {
--	struct cmm_mnode *pnode = NULL;
-+	struct cmm_mnode *pnode;
- 
- 	DBC_REQUIRE(cmm_mgr_obj != NULL);
- 	DBC_REQUIRE(dw_pa != 0);
- 	DBC_REQUIRE(dw_va != 0);
- 	DBC_REQUIRE(ul_size != 0);
-+
- 	/* Check cmm mgr's node freelist */
- 	if (list_empty(&cmm_mgr_obj->node_free_list)) {
- 		pnode = kzalloc(sizeof(struct cmm_mnode), GFP_KERNEL);
-+		if (!pnode)
-+			return NULL;
- 	} else {
- 		/* surely a valid element */
- 		pnode = list_first_entry(&cmm_mgr_obj->node_free_list,
- 				struct cmm_mnode, link);
--		list_del(&pnode->link);
--	}
--	if (pnode) {
--		pnode->dw_pa = dw_pa;	/* Physical addr of start of block */
--		pnode->dw_va = dw_va;	/* Virtual   "            " */
--		pnode->ul_size = ul_size;	/* Size of block */
-+		list_del_init(&pnode->link);
- 	}
-+
-+	pnode->dw_pa = dw_pa;
-+	pnode->dw_va = dw_va;
-+	pnode->ul_size = ul_size;
-+
- 	return pnode;
- }
- 
-@@ -740,11 +738,10 @@ static struct cmm_mnode *get_free_block(struct cmm_allocator *allocator,
- 		return NULL;
- 
- 	list_for_each_entry_safe(node, tmp, &allocator->free_list, link) {
--		if (usize <= (u32) node->ul_size) {
-+		if (usize <= node->ul_size) {
- 			list_del(&node->link);
- 			return node;
- 		}
--
- 	}
- 
- 	return NULL;
-@@ -756,59 +753,36 @@ static struct cmm_mnode *get_free_block(struct cmm_allocator *allocator,
-  *      Coalesce node into the freelist in ascending size order.
-  */
- static void add_to_free_list(struct cmm_allocator *allocator,
--			     struct cmm_mnode *pnode)
-+			     struct cmm_mnode *node)
- {
--	struct cmm_mnode *node_prev = NULL;
--	struct cmm_mnode *node_next = NULL;
--	struct cmm_mnode *mnode_obj;
--	u32 dw_this_pa;
--	u32 dw_next_pa;
--
--	if (!pnode) {
--		pr_err("%s: failed - pnode is NULL\n", __func__);
-+	struct cmm_mnode *curr;
-+
-+	if (!node) {
-+		pr_err("%s: failed - node is NULL\n", __func__);
- 		return;
- 	}
- 
--	dw_this_pa = pnode->dw_pa;
--	dw_next_pa = NEXT_PA(pnode);
--	list_for_each_entry(mnode_obj, &allocator->free_list, link) {
--		if (dw_this_pa == NEXT_PA(mnode_obj)) {
--			/* found the block ahead of this one */
--			node_prev = mnode_obj;
--		} else if (dw_next_pa == mnode_obj->dw_pa) {
--			node_next = mnode_obj;
-+	list_for_each_entry(curr, &allocator->free_list, link) {
-+		if (NEXT_PA(curr) == node->dw_pa) {
-+			curr->ul_size += node->ul_size;
-+			delete_node(allocator->hcmm_mgr, node);
-+			return;
-+		}
-+		if (curr->dw_pa == NEXT_PA(node)) {
-+			curr->dw_pa = node->dw_pa;
-+			curr->dw_va = node->dw_va;
-+			curr->ul_size += node->ul_size;
-+			delete_node(allocator->hcmm_mgr, node);
-+			return;
- 		}
--		if ((node_prev != NULL) && (node_next != NULL))
--			break;
--	}
--	if (node_prev != NULL) {
--		/* combine with previous block */
--		list_del(&node_prev->link);
--		/* grow node to hold both */
--		pnode->ul_size += node_prev->ul_size;
--		pnode->dw_pa = node_prev->dw_pa;
--		pnode->dw_va = node_prev->dw_va;
--		/* place node on mgr nodeFreeList */
--		delete_node(allocator->hcmm_mgr, node_prev);
--	}
--	if (node_next != NULL) {
--		/* combine with next block */
--		list_del(&node_next->link);
--		/* grow da node */
--		pnode->ul_size += node_next->ul_size;
--		/* place node on mgr nodeFreeList */
--		delete_node(allocator->hcmm_mgr, node_next);
- 	}
--	/* Now, let's add to freelist in increasing size order */
--	list_for_each_entry(mnode_obj, &allocator->free_list, link) {
--		if (pnode->ul_size <= mnode_obj->ul_size) {
--			/* insert our node before the current traversed node  */
--			list_add_tail(&pnode->link, &mnode_obj->link);
-+	list_for_each_entry(curr, &allocator->free_list, link) {
-+		if (curr->ul_size >= node->ul_size) {
-+			list_add_tail(&node->link, &curr->link);
- 			return;
- 		}
- 	}
--	/* add our pnode to the end of the freelist */
--	list_add_tail(&pnode->link, &allocator->free_list);
-+	list_add_tail(&node->link, &allocator->free_list);
- }
- 
- /*
-@@ -820,19 +794,10 @@ static void add_to_free_list(struct cmm_allocator *allocator,
- static struct cmm_allocator *get_allocator(struct cmm_object *cmm_mgr_obj,
- 					   u32 ul_seg_id)
- {
--	struct cmm_allocator *allocator = NULL;
--
- 	DBC_REQUIRE(cmm_mgr_obj != NULL);
- 	DBC_REQUIRE((ul_seg_id > 0) && (ul_seg_id <= CMM_MAXGPPSEGS));
--	allocator = cmm_mgr_obj->pa_gppsm_seg_tab[ul_seg_id - 1];
--	if (allocator != NULL) {
--		/* make sure it's for real */
--		if (!allocator) {
--			allocator = NULL;
--			DBC_ASSERT(false);
--		}
--	}
--	return allocator;
-+
-+	return cmm_mgr_obj->pa_gppsm_seg_tab[ul_seg_id - 1];
- }
- 
- /*
-diff --git a/drivers/staging/tidspbridge/pmgr/dev.c b/drivers/staging/tidspbridge/pmgr/dev.c
-index 6ce3493..b160b00 100644
---- a/drivers/staging/tidspbridge/pmgr/dev.c
-+++ b/drivers/staging/tidspbridge/pmgr/dev.c
-@@ -78,8 +78,8 @@ struct dev_object {
- 	struct ldr_module *module_obj;	/* Bridge Module handle. */
- 	u32 word_size;		/* DSP word size: quick access. */
- 	struct drv_object *hdrv_obj;	/* Driver Object */
--	struct list_head proc_list;	/* List of Processor attached to
--					 * this device */
-+	/* List of Processors attached to this device */
-+	struct list_head proc_list;
- 	struct node_mgr *hnode_mgr;
- };
- 
-@@ -787,9 +787,8 @@ bool dev_init(void)
-  *  Purpose:
-  *      Notify all clients of this device of a change in device status.
-  */
--int dev_notify_clients(struct dev_object *hdev_obj, u32 ret)
-+int dev_notify_clients(struct dev_object *dev_obj, u32 ret)
- {
--	struct dev_object *dev_obj = hdev_obj;
- 	struct list_head *curr;
- 
- 	/*
-@@ -797,7 +796,7 @@ int dev_notify_clients(struct dev_object *hdev_obj, u32 ret)
- 	 * at the begining. If not, this can go horribly wrong.
- 	 */
- 	list_for_each(curr, &dev_obj->proc_list)
--		proc_notify_clients((void *)curr, (u32) ret);
-+		proc_notify_clients((void *)curr, ret);
- 
- 	return 0;
- }
-@@ -981,7 +980,6 @@ static int init_cod_mgr(struct dev_object *dev_obj)
- int dev_insert_proc_object(struct dev_object *hdev_obj,
- 				  u32 proc_obj, bool *already_attached)
- {
--	int status = 0;
- 	struct dev_object *dev_obj = (struct dev_object *)hdev_obj;
- 
- 	DBC_REQUIRE(refs > 0);
-@@ -998,9 +996,7 @@ int dev_insert_proc_object(struct dev_object *hdev_obj,
- 	 */
- 	list_add_tail((struct list_head *)proc_obj, &dev_obj->proc_list);
- 
--	DBC_ENSURE(!status && !list_empty(&dev_obj->proc_list));
--
--	return status;
-+	return 0;
- }
- 
- /*
-@@ -1043,14 +1039,10 @@ int dev_remove_proc_object(struct dev_object *hdev_obj, u32 proc_obj)
- 	return status;
- }
- 
--int dev_get_dev_type(struct dev_object *device_obj, u8 *dev_type)
-+int dev_get_dev_type(struct dev_object *dev_obj, u8 *dev_type)
- {
--	int status = 0;
--	struct dev_object *dev_obj = (struct dev_object *)device_obj;
--
- 	*dev_type = dev_obj->dev_type;
--
--	return status;
-+	return 0;
- }
- 
- /*
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0017-staging-tidspbridge-use-the-right-type-for-list_is_l.patch b/patches/dspbridge/0017-staging-tidspbridge-use-the-right-type-for-list_is_l.patch
deleted file mode 100644
index 4ef3c4054ec4ad1c1a62053092c8d69f8d536fc1..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0017-staging-tidspbridge-use-the-right-type-for-list_is_l.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 1ca6a88c11ada8e7e8a66640f19b7655a21d31bd Mon Sep 17 00:00:00 2001
-From: Omar Ramirez Luna <omar.ramirez@ti.com>
-Date: Wed, 8 Dec 2010 22:20:23 +0000
-Subject: [PATCH 17/25] staging: tidspbridge: use the right type for list_is_last
-
-Removes the following warning:
-
-  CC [M]  drivers/staging/tidspbridge/rmgr/rmm.o
-drivers/staging/tidspbridge/rmgr/rmm.c: In function 'rmm_alloc':
-drivers/staging/tidspbridge/rmgr/rmm.c:147: warning: passing
-	argument 1 of 'list_is_last' from incompatible pointer type
-include/linux/list.h:170: note: expected 'const struct list_head *'
-	but argument is of type 'struct rmm_ovly_sect *'
-
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
-Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-Acked-by: Ionut Nicu <ionut.nicu@mindbit.ro>
----
- drivers/staging/tidspbridge/rmgr/rmm.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/rmgr/rmm.c b/drivers/staging/tidspbridge/rmgr/rmm.c
-index aae8657..5a3f09c 100644
---- a/drivers/staging/tidspbridge/rmgr/rmm.c
-+++ b/drivers/staging/tidspbridge/rmgr/rmm.c
-@@ -144,7 +144,7 @@ int rmm_alloc(struct rmm_target_obj *target, u32 segid, u32 size,
- 			new_sect->addr = addr;
- 			new_sect->size = size;
- 			new_sect->page = segid;
--			if (list_is_last(sect, &target->ovly_list))
-+			if (list_is_last(&sect->list_elem, &target->ovly_list))
- 				/* Put new section at the end of the list */
- 				list_add_tail(&new_sect->list_elem,
- 						&target->ovly_list);
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0018-staging-tidspbridge-rmgr-node.c-code-cleanup.patch b/patches/dspbridge/0018-staging-tidspbridge-rmgr-node.c-code-cleanup.patch
deleted file mode 100644
index af50e5f1523acd737c1e2f0154d59764fac02dc6..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0018-staging-tidspbridge-rmgr-node.c-code-cleanup.patch
+++ /dev/null
@@ -1,778 +0,0 @@
-From af739aebde1578e39329089e1f6e3a9efbff3dfc Mon Sep 17 00:00:00 2001
-From: Ionut Nicu <ionut.nicu@gmail.com>
-Date: Thu, 9 Dec 2010 21:47:37 +0000
-Subject: [PATCH 18/25] staging: tidspbridge: rmgr/node.c code cleanup
-
-Reorganized some code in rmgr/node.c to increase its
-readability. Most of the changes reduce the code
-indentation level and simplifiy the code. No functional
-changes were done.
-
-Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/rmgr/node.c |  607 ++++++++++++++----------------
- 1 files changed, 283 insertions(+), 324 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/rmgr/node.c b/drivers/staging/tidspbridge/rmgr/node.c
-index 62d5c31..b196a7a 100644
---- a/drivers/staging/tidspbridge/rmgr/node.c
-+++ b/drivers/staging/tidspbridge/rmgr/node.c
-@@ -236,9 +236,9 @@ struct node_object {
- 
- /* Default buffer attributes */
- static struct dsp_bufferattr node_dfltbufattrs = {
--	0,			/* cb_struct */
--	1,			/* segment_id */
--	0,			/* buf_alignment */
-+	.cb_struct = 0,
-+	.segment_id = 1,
-+	.buf_alignment = 0,
- };
- 
- static void delete_node(struct node_object *hnode,
-@@ -284,8 +284,7 @@ enum node_state node_get_state(void *hnode)
- 	struct node_object *pnode = (struct node_object *)hnode;
- 	if (!pnode)
- 		return -1;
--	else
--		return pnode->node_state;
-+	return pnode->node_state;
- }
- 
- /*
-@@ -844,6 +843,7 @@ int node_connect(struct node_object *node1, u32 stream1,
- 	char *pstr_dev_name = NULL;
- 	enum node_type node1_type = NODE_TASK;
- 	enum node_type node2_type = NODE_TASK;
-+	enum dsp_strmmode strm_mode;
- 	struct node_strmdef *pstrm_def;
- 	struct node_strmdef *input = NULL;
- 	struct node_strmdef *output = NULL;
-@@ -857,60 +857,49 @@ int node_connect(struct node_object *node1, u32 stream1,
- 	int status = 0;
- 	DBC_REQUIRE(refs > 0);
- 
--	if ((node1 != (struct node_object *)DSP_HGPPNODE && !node1) ||
--	    (node2 != (struct node_object *)DSP_HGPPNODE && !node2))
--		status = -EFAULT;
-+	if (!node1 || !node2)
-+		return -EFAULT;
- 
--	if (!status) {
--		/* The two nodes must be on the same processor */
--		if (node1 != (struct node_object *)DSP_HGPPNODE &&
--		    node2 != (struct node_object *)DSP_HGPPNODE &&
--		    node1->hnode_mgr != node2->hnode_mgr)
--			status = -EPERM;
--		/* Cannot connect a node to itself */
--		if (node1 == node2)
--			status = -EPERM;
-+	/* The two nodes must be on the same processor */
-+	if (node1 != (struct node_object *)DSP_HGPPNODE &&
-+			node2 != (struct node_object *)DSP_HGPPNODE &&
-+			node1->hnode_mgr != node2->hnode_mgr)
-+		return -EPERM;
- 
--	}
--	if (!status) {
--		/* node_get_type() will return NODE_GPP if hnode =
--		 * DSP_HGPPNODE. */
--		node1_type = node_get_type(node1);
--		node2_type = node_get_type(node2);
--		/* Check stream indices ranges */
--		if ((node1_type != NODE_GPP && node1_type != NODE_DEVICE &&
--		     stream1 >= MAX_OUTPUTS(node1)) || (node2_type != NODE_GPP
--							  && node2_type !=
--							  NODE_DEVICE
--							  && stream2 >=
--							  MAX_INPUTS(node2)))
--			status = -EINVAL;
--	}
--	if (!status) {
--		/*
--		 *  Only the following types of connections are allowed:
--		 *      task/dais socket < == > task/dais socket
--		 *      task/dais socket < == > device
--		 *      task/dais socket < == > GPP
--		 *
--		 *  ie, no message nodes, and at least one task or dais
--		 *  socket node.
--		 */
--		if (node1_type == NODE_MESSAGE || node2_type == NODE_MESSAGE ||
--		    (node1_type != NODE_TASK && node1_type != NODE_DAISSOCKET &&
--		     node2_type != NODE_TASK && node2_type != NODE_DAISSOCKET))
--			status = -EPERM;
--	}
-+	/* Cannot connect a node to itself */
-+	if (node1 == node2)
-+		return -EPERM;
-+
-+	/* node_get_type() will return NODE_GPP if hnode =  DSP_HGPPNODE. */
-+	node1_type = node_get_type(node1);
-+	node2_type = node_get_type(node2);
-+	/* Check stream indices ranges */
-+	if ((node1_type != NODE_GPP && node1_type != NODE_DEVICE &&
-+				stream1 >= MAX_OUTPUTS(node1)) ||
-+			(node2_type != NODE_GPP && node2_type != NODE_DEVICE &&
-+			 stream2 >= MAX_INPUTS(node2)))
-+		return -EINVAL;
-+
-+	/*
-+	 *  Only the following types of connections are allowed:
-+	 *      task/dais socket < == > task/dais socket
-+	 *      task/dais socket < == > device
-+	 *      task/dais socket < == > GPP
-+	 *
-+	 *  ie, no message nodes, and at least one task or dais
-+	 *  socket node.
-+	 */
-+	if (node1_type == NODE_MESSAGE || node2_type == NODE_MESSAGE ||
-+			(node1_type != NODE_TASK &&
-+			 node1_type != NODE_DAISSOCKET &&
-+			 node2_type != NODE_TASK &&
-+			 node2_type != NODE_DAISSOCKET))
-+		return -EPERM;
- 	/*
- 	 * Check stream mode. Default is STRMMODE_PROCCOPY.
- 	 */
--	if (!status && pattrs) {
--		if (pattrs->strm_mode != STRMMODE_PROCCOPY)
--			status = -EPERM;	/* illegal stream mode */
--
--	}
--	if (status)
--		goto func_end;
-+	if (pattrs && pattrs->strm_mode != STRMMODE_PROCCOPY)
-+		return -EPERM;	/* illegal stream mode */
- 
- 	if (node1_type != NODE_GPP) {
- 		hnode_mgr = node1->hnode_mgr;
-@@ -918,170 +907,145 @@ int node_connect(struct node_object *node1, u32 stream1,
- 		DBC_ASSERT(node2 != (struct node_object *)DSP_HGPPNODE);
- 		hnode_mgr = node2->hnode_mgr;
- 	}
-+
- 	/* Enter critical section */
- 	mutex_lock(&hnode_mgr->node_mgr_lock);
- 
- 	/* Nodes must be in the allocated state */
--	if (node1_type != NODE_GPP && node_get_state(node1) != NODE_ALLOCATED)
-+	if (node1_type != NODE_GPP &&
-+			node_get_state(node1) != NODE_ALLOCATED) {
- 		status = -EBADR;
-+		goto out_unlock;
-+	}
- 
--	if (node2_type != NODE_GPP && node_get_state(node2) != NODE_ALLOCATED)
-+	if (node2_type != NODE_GPP &&
-+			node_get_state(node2) != NODE_ALLOCATED) {
- 		status = -EBADR;
-+		goto out_unlock;
-+	}
- 
--	if (!status) {
--		/*  Check that stream indices for task and dais socket nodes
--		 *  are not already be used. (Device nodes checked later) */
--		if (node1_type == NODE_TASK || node1_type == NODE_DAISSOCKET) {
--			output =
--			    &(node1->create_args.asa.
--			      task_arg_obj.strm_out_def[stream1]);
--			if (output->sz_device != NULL)
--				status = -EISCONN;
--
-+	/*
-+	 *  Check that stream indices for task and dais socket nodes
-+	 *  are not already be used. (Device nodes checked later)
-+	 */
-+	if (node1_type == NODE_TASK || node1_type == NODE_DAISSOCKET) {
-+		output = &(node1->create_args.asa.
-+				task_arg_obj.strm_out_def[stream1]);
-+		if (output->sz_device) {
-+			status = -EISCONN;
-+			goto out_unlock;
- 		}
--		if (node2_type == NODE_TASK || node2_type == NODE_DAISSOCKET) {
--			input =
--			    &(node2->create_args.asa.
--			      task_arg_obj.strm_in_def[stream2]);
--			if (input->sz_device != NULL)
--				status = -EISCONN;
- 
-+	}
-+	if (node2_type == NODE_TASK || node2_type == NODE_DAISSOCKET) {
-+		input = &(node2->create_args.asa.
-+				task_arg_obj.strm_in_def[stream2]);
-+		if (input->sz_device) {
-+			status = -EISCONN;
-+			goto out_unlock;
- 		}
-+
- 	}
- 	/* Connecting two task nodes? */
--	if (!status && ((node1_type == NODE_TASK ||
--				       node1_type == NODE_DAISSOCKET)
--				      && (node2_type == NODE_TASK
--					  || node2_type == NODE_DAISSOCKET))) {
-+	if ((node1_type == NODE_TASK || node1_type == NODE_DAISSOCKET) &&
-+				(node2_type == NODE_TASK ||
-+				 node2_type == NODE_DAISSOCKET)) {
- 		/* Find available pipe */
- 		pipe_id = find_first_zero_bit(hnode_mgr->pipe_map, MAXPIPES);
- 		if (pipe_id == MAXPIPES) {
- 			status = -ECONNREFUSED;
--		} else {
--			set_bit(pipe_id, hnode_mgr->pipe_map);
--			node1->outputs[stream1].type = NODECONNECT;
--			node2->inputs[stream2].type = NODECONNECT;
--			node1->outputs[stream1].dev_id = pipe_id;
--			node2->inputs[stream2].dev_id = pipe_id;
--			output->sz_device = kzalloc(PIPENAMELEN + 1,
--							GFP_KERNEL);
--			input->sz_device = kzalloc(PIPENAMELEN + 1, GFP_KERNEL);
--			if (output->sz_device == NULL ||
--			    input->sz_device == NULL) {
--				/* Undo the connection */
--				kfree(output->sz_device);
--
--				kfree(input->sz_device);
--
--				output->sz_device = NULL;
--				input->sz_device = NULL;
--				clear_bit(pipe_id, hnode_mgr->pipe_map);
--				status = -ENOMEM;
--			} else {
--				/* Copy "/dbpipe<pipId>" name to device names */
--				sprintf(output->sz_device, "%s%d",
--					PIPEPREFIX, pipe_id);
--				strcpy(input->sz_device, output->sz_device);
--			}
-+			goto out_unlock;
- 		}
-+		set_bit(pipe_id, hnode_mgr->pipe_map);
-+		node1->outputs[stream1].type = NODECONNECT;
-+		node2->inputs[stream2].type = NODECONNECT;
-+		node1->outputs[stream1].dev_id = pipe_id;
-+		node2->inputs[stream2].dev_id = pipe_id;
-+		output->sz_device = kzalloc(PIPENAMELEN + 1, GFP_KERNEL);
-+		input->sz_device = kzalloc(PIPENAMELEN + 1, GFP_KERNEL);
-+		if (!output->sz_device || !input->sz_device) {
-+			/* Undo the connection */
-+			kfree(output->sz_device);
-+			kfree(input->sz_device);
-+			clear_bit(pipe_id, hnode_mgr->pipe_map);
-+			status = -ENOMEM;
-+			goto out_unlock;
-+		}
-+		/* Copy "/dbpipe<pipId>" name to device names */
-+		sprintf(output->sz_device, "%s%d", PIPEPREFIX, pipe_id);
-+		strcpy(input->sz_device, output->sz_device);
- 	}
- 	/* Connecting task node to host? */
--	if (!status && (node1_type == NODE_GPP ||
--				      node2_type == NODE_GPP)) {
--		if (node1_type == NODE_GPP) {
--			chnl_mode = CHNL_MODETODSP;
--		} else {
--			DBC_ASSERT(node2_type == NODE_GPP);
--			chnl_mode = CHNL_MODEFROMDSP;
-+	if (node1_type == NODE_GPP || node2_type == NODE_GPP) {
-+		pstr_dev_name = kzalloc(HOSTNAMELEN + 1, GFP_KERNEL);
-+		if (!pstr_dev_name) {
-+			status = -ENOMEM;
-+			goto out_unlock;
- 		}
--		/*  Reserve a channel id. We need to put the name "/host<id>"
-+
-+		DBC_ASSERT((node1_type == NODE_GPP) ||
-+				(node2_type == NODE_GPP));
-+
-+		chnl_mode = (node1_type == NODE_GPP) ?
-+			CHNL_MODETODSP : CHNL_MODEFROMDSP;
-+
-+		/*
-+		 *  Reserve a channel id. We need to put the name "/host<id>"
- 		 *  in the node's create_args, but the host
- 		 *  side channel will not be opened until DSPStream_Open is
--		 *  called for this node. */
--		if (pattrs) {
--			if (pattrs->strm_mode == STRMMODE_RDMA) {
--				chnl_id = find_first_zero_bit(
--						hnode_mgr->dma_chnl_map,
--						CHNL_MAXCHANNELS);
-+		 *  called for this node.
-+		 */
-+		strm_mode = pattrs ? pattrs->strm_mode : STRMMODE_PROCCOPY;
-+		switch (strm_mode) {
-+		case STRMMODE_RDMA:
-+			chnl_id = find_first_zero_bit(hnode_mgr->dma_chnl_map,
-+					CHNL_MAXCHANNELS);
-+			if (chnl_id < CHNL_MAXCHANNELS) {
-+				set_bit(chnl_id, hnode_mgr->dma_chnl_map);
- 				/* dma chans are 2nd transport chnl set
- 				 * ids(e.g. 16-31) */
--				if (chnl_id != CHNL_MAXCHANNELS) {
--					set_bit(chnl_id,
--						hnode_mgr->dma_chnl_map);
--					chnl_id = chnl_id +
--						hnode_mgr->ul_num_chnls;
--				}
--			} else if (pattrs->strm_mode == STRMMODE_ZEROCOPY) {
--				chnl_id = find_first_zero_bit(
--						hnode_mgr->zc_chnl_map,
--						CHNL_MAXCHANNELS);
-+				chnl_id = chnl_id + hnode_mgr->ul_num_chnls;
-+			}
-+			break;
-+		case STRMMODE_ZEROCOPY:
-+			chnl_id = find_first_zero_bit(hnode_mgr->zc_chnl_map,
-+					CHNL_MAXCHANNELS);
-+			if (chnl_id < CHNL_MAXCHANNELS) {
-+				set_bit(chnl_id, hnode_mgr->zc_chnl_map);
- 				/* zero-copy chans are 3nd transport set
- 				 * (e.g. 32-47) */
--				if (chnl_id != CHNL_MAXCHANNELS) {
--					set_bit(chnl_id,
--						hnode_mgr->zc_chnl_map);
--					chnl_id = chnl_id +
--						(2 * hnode_mgr->ul_num_chnls);
--				}
--			} else {	/* must be PROCCOPY */
--				DBC_ASSERT(pattrs->strm_mode ==
--					   STRMMODE_PROCCOPY);
--				chnl_id = find_first_zero_bit(
--						hnode_mgr->chnl_map,
--						CHNL_MAXCHANNELS);
--				/* e.g. 0-15 */
--				if (chnl_id != CHNL_MAXCHANNELS)
--					set_bit(chnl_id, hnode_mgr->chnl_map);
-+				chnl_id = chnl_id +
-+					(2 * hnode_mgr->ul_num_chnls);
- 			}
--		} else {
--			/* default to PROCCOPY */
-+			break;
-+		case STRMMODE_PROCCOPY:
- 			chnl_id = find_first_zero_bit(hnode_mgr->chnl_map,
- 					CHNL_MAXCHANNELS);
--			if (chnl_id != CHNL_MAXCHANNELS)
-+			if (chnl_id < CHNL_MAXCHANNELS)
- 				set_bit(chnl_id, hnode_mgr->chnl_map);
-+			break;
-+		default:
-+			status = -EINVAL;
-+			goto out_unlock;
- 		}
- 		if (chnl_id == CHNL_MAXCHANNELS) {
- 			status = -ECONNREFUSED;
--			goto func_cont2;
-+			goto out_unlock;
- 		}
--		pstr_dev_name = kzalloc(HOSTNAMELEN + 1, GFP_KERNEL);
--		if (pstr_dev_name != NULL)
--			goto func_cont2;
--
--		if (pattrs) {
--			if (pattrs->strm_mode == STRMMODE_RDMA) {
--				clear_bit(chnl_id - hnode_mgr->ul_num_chnls,
--						hnode_mgr->dma_chnl_map);
--			} else if (pattrs->strm_mode == STRMMODE_ZEROCOPY) {
--				clear_bit(chnl_id -
--						(2 * hnode_mgr->ul_num_chnls),
--						hnode_mgr->zc_chnl_map);
--			} else {
--				DBC_ASSERT(pattrs->strm_mode ==
--					   STRMMODE_PROCCOPY);
--				clear_bit(chnl_id, hnode_mgr->chnl_map);
--			}
-+
-+		if (node1 == (struct node_object *)DSP_HGPPNODE) {
-+			node2->inputs[stream2].type = HOSTCONNECT;
-+			node2->inputs[stream2].dev_id = chnl_id;
-+			input->sz_device = pstr_dev_name;
- 		} else {
--			clear_bit(chnl_id, hnode_mgr->chnl_map);
--		}
--		status = -ENOMEM;
--func_cont2:
--		if (!status) {
--			if (node1 == (struct node_object *)DSP_HGPPNODE) {
--				node2->inputs[stream2].type = HOSTCONNECT;
--				node2->inputs[stream2].dev_id = chnl_id;
--				input->sz_device = pstr_dev_name;
--			} else {
--				node1->outputs[stream1].type = HOSTCONNECT;
--				node1->outputs[stream1].dev_id = chnl_id;
--				output->sz_device = pstr_dev_name;
--			}
--			sprintf(pstr_dev_name, "%s%d", HOSTPREFIX, chnl_id);
-+			node1->outputs[stream1].type = HOSTCONNECT;
-+			node1->outputs[stream1].dev_id = chnl_id;
-+			output->sz_device = pstr_dev_name;
- 		}
-+		sprintf(pstr_dev_name, "%s%d", HOSTPREFIX, chnl_id);
- 	}
- 	/* Connecting task node to device node? */
--	if (!status && ((node1_type == NODE_DEVICE) ||
--				      (node2_type == NODE_DEVICE))) {
-+	if ((node1_type == NODE_DEVICE) || (node2_type == NODE_DEVICE)) {
- 		if (node2_type == NODE_DEVICE) {
- 			/* node1 == > device */
- 			dev_node_obj = node2;
-@@ -1098,60 +1062,58 @@ func_cont2:
- 		/* Set up create args */
- 		pstream->type = DEVICECONNECT;
- 		dw_length = strlen(dev_node_obj->pstr_dev_name);
--		if (conn_param != NULL) {
-+		if (conn_param)
- 			pstrm_def->sz_device = kzalloc(dw_length + 1 +
--							conn_param->cb_data,
--							GFP_KERNEL);
--		} else {
-+					conn_param->cb_data,
-+					GFP_KERNEL);
-+		else
- 			pstrm_def->sz_device = kzalloc(dw_length + 1,
--							GFP_KERNEL);
--		}
--		if (pstrm_def->sz_device == NULL) {
-+					GFP_KERNEL);
-+		if (!pstrm_def->sz_device) {
- 			status = -ENOMEM;
--		} else {
--			/* Copy device name */
--			strncpy(pstrm_def->sz_device,
-+			goto out_unlock;
-+		}
-+		/* Copy device name */
-+		strncpy(pstrm_def->sz_device,
- 				dev_node_obj->pstr_dev_name, dw_length);
--			if (conn_param != NULL) {
--				strncat(pstrm_def->sz_device,
-+		if (conn_param)
-+			strncat(pstrm_def->sz_device,
- 					(char *)conn_param->node_data,
- 					(u32) conn_param->cb_data);
--			}
--			dev_node_obj->device_owner = hnode;
--		}
-+		dev_node_obj->device_owner = hnode;
- 	}
--	if (!status) {
--		/* Fill in create args */
--		if (node1_type == NODE_TASK || node1_type == NODE_DAISSOCKET) {
--			node1->create_args.asa.task_arg_obj.num_outputs++;
--			fill_stream_def(node1, output, pattrs);
--		}
--		if (node2_type == NODE_TASK || node2_type == NODE_DAISSOCKET) {
--			node2->create_args.asa.task_arg_obj.num_inputs++;
--			fill_stream_def(node2, input, pattrs);
--		}
--		/* Update node1 and node2 stream_connect */
--		if (node1_type != NODE_GPP && node1_type != NODE_DEVICE) {
--			node1->num_outputs++;
--			if (stream1 > node1->max_output_index)
--				node1->max_output_index = stream1;
-+	/* Fill in create args */
-+	if (node1_type == NODE_TASK || node1_type == NODE_DAISSOCKET) {
-+		node1->create_args.asa.task_arg_obj.num_outputs++;
-+		fill_stream_def(node1, output, pattrs);
-+	}
-+	if (node2_type == NODE_TASK || node2_type == NODE_DAISSOCKET) {
-+		node2->create_args.asa.task_arg_obj.num_inputs++;
-+		fill_stream_def(node2, input, pattrs);
-+	}
-+	/* Update node1 and node2 stream_connect */
-+	if (node1_type != NODE_GPP && node1_type != NODE_DEVICE) {
-+		node1->num_outputs++;
-+		if (stream1 > node1->max_output_index)
-+			node1->max_output_index = stream1;
- 
--		}
--		if (node2_type != NODE_GPP && node2_type != NODE_DEVICE) {
--			node2->num_inputs++;
--			if (stream2 > node2->max_input_index)
--				node2->max_input_index = stream2;
-+	}
-+	if (node2_type != NODE_GPP && node2_type != NODE_DEVICE) {
-+		node2->num_inputs++;
-+		if (stream2 > node2->max_input_index)
-+			node2->max_input_index = stream2;
- 
--		}
--		fill_stream_connect(node1, node2, stream1, stream2);
- 	}
-+	fill_stream_connect(node1, node2, stream1, stream2);
- 	/* end of sync_enter_cs */
- 	/* Exit critical section */
-+out_unlock:
-+	if (status && pstr_dev_name)
-+		kfree(pstr_dev_name);
- 	mutex_unlock(&hnode_mgr->node_mgr_lock);
--func_end:
- 	dev_dbg(bridge, "%s: node1: %p stream1: %d node2: %p stream2: %d"
--		"pattrs: %p status: 0x%x\n", __func__, node1,
--		stream1, node2, stream2, pattrs, status);
-+			"pattrs: %p status: 0x%x\n", __func__, node1,
-+			stream1, node2, stream2, pattrs, status);
- 	return status;
- }
- 
-@@ -1329,6 +1291,7 @@ int node_create_mgr(struct node_mgr **node_man,
- 	struct nldr_attrs nldr_attrs_obj;
- 	int status = 0;
- 	u8 dev_type;
-+
- 	DBC_REQUIRE(refs > 0);
- 	DBC_REQUIRE(node_man != NULL);
- 	DBC_REQUIRE(hdev_obj != NULL);
-@@ -1336,90 +1299,89 @@ int node_create_mgr(struct node_mgr **node_man,
- 	*node_man = NULL;
- 	/* Allocate Node manager object */
- 	node_mgr_obj = kzalloc(sizeof(struct node_mgr), GFP_KERNEL);
--	if (node_mgr_obj) {
--		node_mgr_obj->hdev_obj = hdev_obj;
--		INIT_LIST_HEAD(&node_mgr_obj->node_list);
--		node_mgr_obj->ntfy_obj = kmalloc(
--				sizeof(struct ntfy_object), GFP_KERNEL);
--		if (node_mgr_obj->ntfy_obj)
--			ntfy_init(node_mgr_obj->ntfy_obj);
--		else
--			status = -ENOMEM;
--		node_mgr_obj->num_created = 0;
--	} else {
-+	if (!node_mgr_obj)
-+		return -ENOMEM;
-+
-+	node_mgr_obj->hdev_obj = hdev_obj;
-+
-+	node_mgr_obj->ntfy_obj = kmalloc(sizeof(struct ntfy_object),
-+			GFP_KERNEL);
-+	if (!node_mgr_obj->ntfy_obj) {
- 		status = -ENOMEM;
-+		goto out_err;
- 	}
--	/* get devNodeType */
--	if (!status)
--		status = dev_get_dev_type(hdev_obj, &dev_type);
-+	ntfy_init(node_mgr_obj->ntfy_obj);
- 
--	/* Create the DCD Manager */
--	if (!status) {
--		status =
--		    dcd_create_manager(sz_zl_file, &node_mgr_obj->hdcd_mgr);
--		if (!status)
--			status = get_proc_props(node_mgr_obj, hdev_obj);
-+	INIT_LIST_HEAD(&node_mgr_obj->node_list);
-+
-+	dev_get_dev_type(hdev_obj, &dev_type);
-+
-+	status = dcd_create_manager(sz_zl_file, &node_mgr_obj->hdcd_mgr);
-+	if (status)
-+		goto out_err;
-+
-+	status = get_proc_props(node_mgr_obj, hdev_obj);
-+	if (status)
-+		goto out_err;
- 
--	}
- 	/* Create NODE Dispatcher */
--	if (!status) {
--		disp_attr_obj.ul_chnl_offset = node_mgr_obj->ul_chnl_offset;
--		disp_attr_obj.ul_chnl_buf_size = node_mgr_obj->ul_chnl_buf_size;
--		disp_attr_obj.proc_family = node_mgr_obj->proc_family;
--		disp_attr_obj.proc_type = node_mgr_obj->proc_type;
--		status =
--		    disp_create(&node_mgr_obj->disp_obj, hdev_obj,
--				&disp_attr_obj);
--	}
-+	disp_attr_obj.ul_chnl_offset = node_mgr_obj->ul_chnl_offset;
-+	disp_attr_obj.ul_chnl_buf_size = node_mgr_obj->ul_chnl_buf_size;
-+	disp_attr_obj.proc_family = node_mgr_obj->proc_family;
-+	disp_attr_obj.proc_type = node_mgr_obj->proc_type;
-+
-+	status = disp_create(&node_mgr_obj->disp_obj, hdev_obj, &disp_attr_obj);
-+	if (status)
-+		goto out_err;
-+
- 	/* Create a STRM Manager */
--	if (!status)
--		status = strm_create(&node_mgr_obj->strm_mgr_obj, hdev_obj);
-+	status = strm_create(&node_mgr_obj->strm_mgr_obj, hdev_obj);
-+	if (status)
-+		goto out_err;
- 
--	if (!status) {
--		dev_get_intf_fxns(hdev_obj, &node_mgr_obj->intf_fxns);
--		/* Get msg_ctrl queue manager */
--		dev_get_msg_mgr(hdev_obj, &node_mgr_obj->msg_mgr_obj);
--		mutex_init(&node_mgr_obj->node_mgr_lock);
--		/* Block out reserved channels */
--		for (i = 0; i < node_mgr_obj->ul_chnl_offset; i++)
--			set_bit(i, node_mgr_obj->chnl_map);
--
--		/* Block out channels reserved for RMS */
--		set_bit(node_mgr_obj->ul_chnl_offset, node_mgr_obj->chnl_map);
--		set_bit(node_mgr_obj->ul_chnl_offset + 1,
--				node_mgr_obj->chnl_map);
--	}
--	if (!status) {
--		/* NO RM Server on the IVA */
--		if (dev_type != IVA_UNIT) {
--			/* Get addresses of any RMS functions loaded */
--			status = get_rms_fxns(node_mgr_obj);
--		}
-+	dev_get_intf_fxns(hdev_obj, &node_mgr_obj->intf_fxns);
-+	/* Get msg_ctrl queue manager */
-+	dev_get_msg_mgr(hdev_obj, &node_mgr_obj->msg_mgr_obj);
-+	mutex_init(&node_mgr_obj->node_mgr_lock);
-+
-+	/* Block out reserved channels */
-+	for (i = 0; i < node_mgr_obj->ul_chnl_offset; i++)
-+		set_bit(i, node_mgr_obj->chnl_map);
-+
-+	/* Block out channels reserved for RMS */
-+	set_bit(node_mgr_obj->ul_chnl_offset, node_mgr_obj->chnl_map);
-+	set_bit(node_mgr_obj->ul_chnl_offset + 1, node_mgr_obj->chnl_map);
-+
-+	/* NO RM Server on the IVA */
-+	if (dev_type != IVA_UNIT) {
-+		/* Get addresses of any RMS functions loaded */
-+		status = get_rms_fxns(node_mgr_obj);
-+		if (status)
-+			goto out_err;
- 	}
- 
- 	/* Get loader functions and create loader */
--	if (!status)
--		node_mgr_obj->nldr_fxns = nldr_fxns;	/* Dyn loader funcs */
-+	node_mgr_obj->nldr_fxns = nldr_fxns;	/* Dyn loader funcs */
-+
-+	nldr_attrs_obj.pfn_ovly = ovly;
-+	nldr_attrs_obj.pfn_write = mem_write;
-+	nldr_attrs_obj.us_dsp_word_size = node_mgr_obj->udsp_word_size;
-+	nldr_attrs_obj.us_dsp_mau_size = node_mgr_obj->udsp_mau_size;
-+	node_mgr_obj->loader_init = node_mgr_obj->nldr_fxns.pfn_init();
-+	status = node_mgr_obj->nldr_fxns.pfn_create(&node_mgr_obj->nldr_obj,
-+			hdev_obj,
-+			&nldr_attrs_obj);
-+	if (status)
-+		goto out_err;
- 
--	if (!status) {
--		nldr_attrs_obj.pfn_ovly = ovly;
--		nldr_attrs_obj.pfn_write = mem_write;
--		nldr_attrs_obj.us_dsp_word_size = node_mgr_obj->udsp_word_size;
--		nldr_attrs_obj.us_dsp_mau_size = node_mgr_obj->udsp_mau_size;
--		node_mgr_obj->loader_init = node_mgr_obj->nldr_fxns.pfn_init();
--		status =
--		    node_mgr_obj->nldr_fxns.pfn_create(&node_mgr_obj->nldr_obj,
--						       hdev_obj,
--						       &nldr_attrs_obj);
--	}
--	if (!status)
--		*node_man = node_mgr_obj;
--	else
--		delete_node_mgr(node_mgr_obj);
-+	*node_man = node_mgr_obj;
- 
- 	DBC_ENSURE((status && *node_man == NULL) || (!status && *node_man));
- 
- 	return status;
-+out_err:
-+	delete_node_mgr(node_mgr_obj);
-+	return status;
- }
- 
- /*
-@@ -1593,16 +1555,14 @@ func_end:
-  */
- int node_delete_mgr(struct node_mgr *hnode_mgr)
- {
--	int status = 0;
--
- 	DBC_REQUIRE(refs > 0);
- 
--	if (hnode_mgr)
--		delete_node_mgr(hnode_mgr);
--	else
--		status = -EFAULT;
-+	if (!hnode_mgr)
-+		return -EFAULT;
- 
--	return status;
-+	delete_node_mgr(hnode_mgr);
-+
-+	return 0;
- }
- 
- /*
-@@ -1710,38 +1670,37 @@ int node_get_attr(struct node_object *hnode,
- 			 struct dsp_nodeattr *pattr, u32 attr_size)
- {
- 	struct node_mgr *hnode_mgr;
--	int status = 0;
- 	DBC_REQUIRE(refs > 0);
- 	DBC_REQUIRE(pattr != NULL);
- 	DBC_REQUIRE(attr_size >= sizeof(struct dsp_nodeattr));
- 
--	if (!hnode) {
--		status = -EFAULT;
--	} else {
--		hnode_mgr = hnode->hnode_mgr;
--		/* Enter hnode_mgr critical section (since we're accessing
--		 * data that could be changed by node_change_priority() and
--		 * node_connect(). */
--		mutex_lock(&hnode_mgr->node_mgr_lock);
--		pattr->cb_struct = sizeof(struct dsp_nodeattr);
--		/* dsp_nodeattrin */
--		pattr->in_node_attr_in.cb_struct =
--				 sizeof(struct dsp_nodeattrin);
--		pattr->in_node_attr_in.prio = hnode->prio;
--		pattr->in_node_attr_in.utimeout = hnode->utimeout;
--		pattr->in_node_attr_in.heap_size =
--			hnode->create_args.asa.task_arg_obj.heap_size;
--		pattr->in_node_attr_in.pgpp_virt_addr = (void *)
--			hnode->create_args.asa.task_arg_obj.ugpp_heap_addr;
--		pattr->node_attr_inputs = hnode->num_gpp_inputs;
--		pattr->node_attr_outputs = hnode->num_gpp_outputs;
--		/* dsp_nodeinfo */
--		get_node_info(hnode, &(pattr->node_info));
--		/* end of sync_enter_cs */
--		/* Exit critical section */
--		mutex_unlock(&hnode_mgr->node_mgr_lock);
--	}
--	return status;
-+	if (!hnode)
-+		return -EFAULT;
-+
-+	hnode_mgr = hnode->hnode_mgr;
-+	/* Enter hnode_mgr critical section (since we're accessing
-+	 * data that could be changed by node_change_priority() and
-+	 * node_connect(). */
-+	mutex_lock(&hnode_mgr->node_mgr_lock);
-+	pattr->cb_struct = sizeof(struct dsp_nodeattr);
-+	/* dsp_nodeattrin */
-+	pattr->in_node_attr_in.cb_struct =
-+		sizeof(struct dsp_nodeattrin);
-+	pattr->in_node_attr_in.prio = hnode->prio;
-+	pattr->in_node_attr_in.utimeout = hnode->utimeout;
-+	pattr->in_node_attr_in.heap_size =
-+		hnode->create_args.asa.task_arg_obj.heap_size;
-+	pattr->in_node_attr_in.pgpp_virt_addr = (void *)
-+		hnode->create_args.asa.task_arg_obj.ugpp_heap_addr;
-+	pattr->node_attr_inputs = hnode->num_gpp_inputs;
-+	pattr->node_attr_outputs = hnode->num_gpp_outputs;
-+	/* dsp_nodeinfo */
-+	get_node_info(hnode, &(pattr->node_info));
-+	/* end of sync_enter_cs */
-+	/* Exit critical section */
-+	mutex_unlock(&hnode_mgr->node_mgr_lock);
-+
-+	return 0;
- }
- 
- /*
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0019-staging-tidspbridge-Fix-atoi-to-support-hexadecimal-.patch b/patches/dspbridge/0019-staging-tidspbridge-Fix-atoi-to-support-hexadecimal-.patch
deleted file mode 100644
index 43bae2c43dab43774c71cef2e23742922a45b5c3..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0019-staging-tidspbridge-Fix-atoi-to-support-hexadecimal-.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 4bd6f769210d915f0298e92a2e661aef231e8f96 Mon Sep 17 00:00:00 2001
-From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-Date: Sun, 12 Dec 2010 13:39:37 +0000
-Subject: [PATCH 19/25] staging: tidspbridge: Fix atoi to support hexadecimal numbers correctly
-
-For some strange reason, the DSP base image node/object properties
-description string stores hexadecimal numbers with a 'h' or 'H' suffix
-instead of a '0x' prefix. This causes parsing issue because the
-dspbridge atoi() implementation relies on strict_strtoul(), which will
-return an error because of the trailing 'h' character.
-
-As the atoi() return value is never checked for an error anyway, replace
-strict_strtoul() with simple_strtoul() to ignore the suffix.
-
-This fix gets rid of the following assertion failed messages that were
-printed when running the dsp-dummy test application.
-
-drivers/staging/tidspbridge/rmgr/nldr.c, line 1691:
-Assertion (segid == MEMINTERNALID || segid == MEMEXTERNALID) failed.
-
-Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/rmgr/dbdcd.c |    6 +-----
- 1 files changed, 1 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/rmgr/dbdcd.c b/drivers/staging/tidspbridge/rmgr/dbdcd.c
-index 3581a55..b76f26c 100644
---- a/drivers/staging/tidspbridge/rmgr/dbdcd.c
-+++ b/drivers/staging/tidspbridge/rmgr/dbdcd.c
-@@ -1020,8 +1020,6 @@ static s32 atoi(char *psz_buf)
- {
- 	char *pch = psz_buf;
- 	s32 base = 0;
--	unsigned long res;
--	int ret_val;
- 
- 	while (isspace(*pch))
- 		pch++;
-@@ -1033,9 +1031,7 @@ static s32 atoi(char *psz_buf)
- 		base = 16;
- 	}
- 
--	ret_val = strict_strtoul(pch, base, &res);
--
--	return ret_val ? : res;
-+	return simple_strtoul(pch, NULL, base);
- }
- 
- /*
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0020-staging-tidspbridge-Remove-unused-defined-constants.patch b/patches/dspbridge/0020-staging-tidspbridge-Remove-unused-defined-constants.patch
deleted file mode 100644
index ce20789018ea6364c05bf662ec0560812e2d12a6..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0020-staging-tidspbridge-Remove-unused-defined-constants.patch
+++ /dev/null
@@ -1,519 +0,0 @@
-From 1167b7417468a42dd082de49ef48195593a4847d Mon Sep 17 00:00:00 2001
-From: Armando Uribe <x0095078@ti.com>
-Date: Fri, 17 Dec 2010 01:18:29 -0600
-Subject: [PATCH 20/25] staging: tidspbridge - Remove unused defined constants
-
-Remove defined constants not being used.
-
-Signed-off-by: Armando Uribe <x0095078@ti.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- .../tidspbridge/include/dspbridge/brddefs.h        |    2 -
- .../tidspbridge/include/dspbridge/cfgdefs.h        |   13 ------
- .../tidspbridge/include/dspbridge/chnldefs.h       |    3 -
- .../tidspbridge/include/dspbridge/chnlpriv.h       |   13 ------
- .../staging/tidspbridge/include/dspbridge/cod.h    |    3 -
- .../staging/tidspbridge/include/dspbridge/dbdefs.h |   26 -------------
- .../tidspbridge/include/dspbridge/dbldefs.h        |   11 -----
- .../tidspbridge/include/dspbridge/dehdefs.h        |    1 -
- .../staging/tidspbridge/include/dspbridge/drv.h    |   15 -------
- .../tidspbridge/include/dspbridge/dspdefs.h        |    6 ---
- .../staging/tidspbridge/include/dspbridge/dspdrv.h |    2 -
- .../tidspbridge/include/dspbridge/dspioctl.h       |    5 --
- .../tidspbridge/include/dspbridge/dynamic_loader.h |    2 -
- .../staging/tidspbridge/include/dspbridge/io_sm.h  |    1 -
- .../staging/tidspbridge/include/dspbridge/iodefs.h |    2 -
- .../staging/tidspbridge/include/dspbridge/mbx_sh.h |   40 --------------------
- .../staging/tidspbridge/include/dspbridge/pwr_sh.h |    4 --
- .../staging/tidspbridge/include/dspbridge/rms_sh.h |    9 ----
- .../tidspbridge/include/dspbridge/strmdefs.h       |    2 -
- drivers/staging/tidspbridge/pmgr/dev.c             |    2 +-
- 20 files changed, 1 insertions(+), 161 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/brddefs.h b/drivers/staging/tidspbridge/include/dspbridge/brddefs.h
-index f80d9a5..725d7b3 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/brddefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/brddefs.h
-@@ -24,9 +24,7 @@
- #define BRD_IDLE        0x1	/* Monitor Loaded, but suspended. */
- #define BRD_RUNNING     0x2	/* Monitor loaded, and executing. */
- #define BRD_UNKNOWN     0x3	/* Board state is indeterminate. */
--#define BRD_SYNCINIT    0x4
- #define BRD_LOADED      0x5
--#define BRD_LASTSTATE   BRD_LOADED	/* Set to highest legal board state. */
- #define BRD_SLEEP_TRANSITION 0x6	/* Sleep transition in progress */
- #define BRD_HIBERNATION 0x7	/* MPU initiated hibernation */
- #define BRD_RETENTION     0x8	/* Retention mode */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h b/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h
-index f403c01..c3f04f8 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h
-@@ -19,25 +19,12 @@
- #ifndef CFGDEFS_
- #define CFGDEFS_
- 
--/* Maximum length of module search path. */
--#define CFG_MAXSEARCHPATHLEN    255
--
--/* Maximum length of general paths. */
--#define CFG_MAXPATH             255
--
- /* Host Resources: */
- #define CFG_MAXMEMREGISTERS     9
--#define CFG_MAXIOPORTS          20
--#define CFG_MAXIRQS             7
--#define CFG_MAXDMACHANNELS      7
- 
- /* IRQ flag */
- #define CFG_IRQSHARED           0x01	/* IRQ can be shared */
- 
--/* DSP Resources: */
--#define CFG_DSPMAXMEMTYPES      10
--#define CFG_DEFAULT_NUM_WINDOWS 1	/* We support only one window. */
--
- /* A platform-related device handle: */
- struct cfg_devnode;
- 
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/chnldefs.h b/drivers/staging/tidspbridge/include/dspbridge/chnldefs.h
-index 5bf5f6b..8f8f9ec 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/chnldefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/chnldefs.h
-@@ -22,9 +22,6 @@
- /* Channel id option. */
- #define CHNL_PICKFREE       (~0UL)	/* Let manager pick a free channel. */
- 
--/* Channel manager limits: */
--#define CHNL_INITIOREQS      4	/* Default # of I/O requests. */
--
- /* Channel modes */
- #define CHNL_MODETODSP		0	/* Data streaming to the DSP. */
- #define CHNL_MODEFROMDSP	1	/* Data streaming from the DSP. */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/chnlpriv.h b/drivers/staging/tidspbridge/include/dspbridge/chnlpriv.h
-index 9292100..1785c3e 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/chnlpriv.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/chnlpriv.h
-@@ -39,12 +39,6 @@
-  */
- #define CHNL_PCPY       0	/* Proc-copy transport 0 */
- 
--#define CHNL_MAXIRQ     0xff	/* Arbitrarily large number. */
--
--/* The following modes are private: */
--#define CHNL_MODEUSEREVENT  0x1000	/* User provided the channel event. */
--#define CHNL_MODEMASK       0x1001
--
- /* Higher level channel states: */
- #define CHNL_STATEREADY		0	/* Channel ready for I/O. */
- #define CHNL_STATECANCEL	1	/* I/O was cancelled. */
-@@ -56,13 +50,6 @@
- 
- /* Types of channel class libraries: */
- #define CHNL_TYPESM         1	/* Shared memory driver. */
--#define CHNL_TYPEBM         2	/* Bus Mastering driver. */
--
--/* Max string length of channel I/O completion event name - change if needed */
--#define CHNL_MAXEVTNAMELEN  32
--
--/* Max memory pages lockable in CHNL_PrepareBuffer() - change if needed */
--#define CHNL_MAXLOCKPAGES   64
- 
- /* Channel info. */
- struct chnl_info {
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/cod.h b/drivers/staging/tidspbridge/include/dspbridge/cod.h
-index 42bce2e..5efea91 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/cod.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/cod.h
-@@ -27,9 +27,6 @@
- #define COD_TRACEBEG            "SYS_PUTCBEG"
- #define COD_TRACEEND            "SYS_PUTCEND"
- #define COD_TRACECURPOS	"BRIDGE_SYS_PUTC_current"
--#define COD_TRACESECT           "trace"
--#define COD_TRACEBEGOLD         "PUTCBEG"
--#define COD_TRACEENDOLD         "PUTCEND"
- 
- #define COD_NOLOAD              DBLL_NOLOAD
- #define COD_SYMB                DBLL_SYMB
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dbdefs.h b/drivers/staging/tidspbridge/include/dspbridge/dbdefs.h
-index 5af075d..38fffeb 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dbdefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dbdefs.h
-@@ -31,9 +31,6 @@
- /* API return value and calling convention */
- #define DBAPI                       int
- 
--/* Infinite time value for the utimeout parameter to DSPStream_Select() */
--#define DSP_FOREVER                 (-1)
--
- /* Maximum length of node name, used in dsp_ndbprops */
- #define DSP_MAXNAMELEN              32
- 
-@@ -74,16 +71,9 @@
- #define DSP_NODE_MIN_PRIORITY       1
- #define DSP_NODE_MAX_PRIORITY       15
- 
--/* Pre-Defined Message Command Codes available to user: */
--#define DSP_RMSUSERCODESTART RMS_USER	/* Start of RMS user cmd codes */
--/* end of user codes */
--#define DSP_RMSUSERCODEEND (RMS_USER + RMS_MAXUSERCODES);
- /* msg_ctrl contains SM buffer description */
- #define DSP_RMSBUFDESC RMS_BUFDESC
- 
--/* Shared memory identifier for MEM segment named "SHMSEG0" */
--#define DSP_SHMSEG0     (u32)(-1)
--
- /* Processor ID numbers */
- #define DSP_UNIT    0
- #define IVA_UNIT    1
-@@ -91,15 +81,6 @@
- #define DSPWORD       unsigned char
- #define DSPWORDSIZE     sizeof(DSPWORD)
- 
--/* Power control enumerations */
--#define PROC_PWRCONTROL             0x8070
--
--#define PROC_PWRMGT_ENABLE          (PROC_PWRCONTROL + 0x3)
--#define PROC_PWRMGT_DISABLE         (PROC_PWRCONTROL + 0x4)
--
--/* Bridge Code Version */
--#define BRIDGE_VERSION_CODE         333
--
- #define    MAX_PROFILES     16
- 
- /* DSP chip type */
-@@ -501,13 +482,6 @@ bit 15 - Output (writeable) buffer
- #define DSPPROCTYPE_C64		6410
- #define IVAPROCTYPE_ARM7	470
- 
--#define REG_MGR_OBJECT	1
--#define REG_DRV_OBJECT	2
--
--/* registry */
--#define DRVOBJECT	"DrvObject"
--#define MGROBJECT	"MgrObject"
--
- /* Max registry path length. Also the max registry value length. */
- #define MAXREGPATHLENGTH	255
- 
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h b/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h
-index bf4fb99..9973098 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h
-@@ -17,17 +17,6 @@
- #ifndef DBLDEFS_
- #define DBLDEFS_
- 
--/*
-- *  Bit masks for dbl_flags.
-- */
--#define DBL_NOLOAD   0x0	/* Don't load symbols, code, or data */
--#define DBL_SYMB     0x1	/* load symbols */
--#define DBL_CODE     0x2	/* load code */
--#define DBL_DATA     0x4	/* load data */
--#define DBL_DYNAMIC  0x8	/* dynamic load */
--#define DBL_BSS      0x20	/* Unitialized section */
--
--#define DBL_MAXPATHLENGTH       255
- 
- /*
-  *  ======== dbl_flags ========
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dehdefs.h b/drivers/staging/tidspbridge/include/dspbridge/dehdefs.h
-index 09f8bf8..5341471 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dehdefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dehdefs.h
-@@ -26,7 +26,6 @@ struct deh_mgr;
- 
- /* Magic code used to determine if DSP signaled exception. */
- #define DEH_BASE        MBX_DEH_BASE
--#define DEH_USERS_BASE  MBX_DEH_USERS_BASE
- #define DEH_LIMIT       MBX_DEH_LIMIT
- 
- #endif /* _DEHDEFS_H */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/drv.h b/drivers/staging/tidspbridge/include/dspbridge/drv.h
-index 37f5a45..adb28ec 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/drv.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/drv.h
-@@ -26,9 +26,6 @@
- #include <dspbridge/drvdefs.h>
- #include <linux/idr.h>
- 
--#define DRV_ASSIGN     1
--#define DRV_RELEASE    0
--
- /* Provide the DSP Internal memory windows that can be accessed from L3 address
-  * space */
- 
-@@ -38,23 +35,14 @@
- /* MEM1 is L2 RAM + L2 Cache space */
- #define OMAP_DSP_MEM1_BASE 0x5C7F8000
- #define OMAP_DSP_MEM1_SIZE 0x18000
--#define OMAP_DSP_GEM1_BASE 0x107F8000
- 
- /* MEM2 is L1P RAM/CACHE space */
- #define OMAP_DSP_MEM2_BASE 0x5CE00000
- #define OMAP_DSP_MEM2_SIZE 0x8000
--#define OMAP_DSP_GEM2_BASE 0x10E00000
- 
- /* MEM3 is L1D RAM/CACHE space */
- #define OMAP_DSP_MEM3_BASE 0x5CF04000
- #define OMAP_DSP_MEM3_SIZE 0x14000
--#define OMAP_DSP_GEM3_BASE 0x10F04000
--
--#define OMAP_IVA2_PRM_BASE 0x48306000
--#define OMAP_IVA2_PRM_SIZE 0x1000
--
--#define OMAP_IVA2_CM_BASE 0x48004000
--#define OMAP_IVA2_CM_SIZE 0x1000
- 
- #define OMAP_PER_CM_BASE 0x48005000
- #define OMAP_PER_CM_SIZE 0x1000
-@@ -68,9 +56,6 @@
- #define OMAP_DMMU_BASE 0x5D000000
- #define OMAP_DMMU_SIZE 0x1000
- 
--#define OMAP_PRCM_VDD1_DOMAIN 1
--#define OMAP_PRCM_VDD2_DOMAIN 2
--
- /* GPP PROCESS CLEANUP Data structures */
- 
- /* New structure (member of process context) abstracts NODE resource info */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h b/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h
-index 0ae7d16..2acbbb3 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h
-@@ -37,12 +37,6 @@
- #include <dspbridge/iodefs.h>
- #include <dspbridge/msgdefs.h>
- 
--/*
-- *  Any IOCTLS at or above this value are reserved for standard Bridge driver
-- *  interfaces.
-- */
--#define BRD_RESERVEDIOCTLBASE   0x8000
--
- /* Handle to Bridge driver's private device context. */
- struct bridge_dev_context;
- 
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspdrv.h b/drivers/staging/tidspbridge/include/dspbridge/dspdrv.h
-index 0bb250f..7adf1e7 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dspdrv.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dspdrv.h
-@@ -20,8 +20,6 @@
- #if !defined _DSPDRV_H_
- #define _DSPDRV_H_
- 
--#define MAX_DEV     10		/* Max support of 10 devices */
--
- /*
-  *  ======== dsp_deinit ========
-  *  Purpose:
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspioctl.h b/drivers/staging/tidspbridge/include/dspbridge/dspioctl.h
-index 41e0594..54552a7 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dspioctl.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dspioctl.h
-@@ -31,9 +31,6 @@
- 
- #define BRDIOCTL_CHNLREAD           (BRDIOCTL_RESERVEDBASE + 0x10)
- #define BRDIOCTL_CHNLWRITE          (BRDIOCTL_RESERVEDBASE + 0x20)
--#define BRDIOCTL_GETINTRCOUNT       (BRDIOCTL_RESERVEDBASE + 0x30)
--#define BRDIOCTL_RESETINTRCOUNT     (BRDIOCTL_RESERVEDBASE + 0x40)
--#define BRDIOCTL_INTERRUPTDSP       (BRDIOCTL_RESERVEDBASE + 0x50)
- /* DMMU */
- #define BRDIOCTL_SETMMUCONFIG       (BRDIOCTL_RESERVEDBASE + 0x60)
- /* PWR */
-@@ -47,8 +44,6 @@
- #define BRDIOCTL_DEEPSLEEP          (BRDIOCTL_PWRCONTROL + 0x0)
- #define BRDIOCTL_EMERGENCYSLEEP     (BRDIOCTL_PWRCONTROL + 0x1)
- #define BRDIOCTL_WAKEUP             (BRDIOCTL_PWRCONTROL + 0x2)
--#define BRDIOCTL_PWRENABLE          (BRDIOCTL_PWRCONTROL + 0x3)
--#define BRDIOCTL_PWRDISABLE         (BRDIOCTL_PWRCONTROL + 0x4)
- #define BRDIOCTL_CLK_CTRL		    (BRDIOCTL_PWRCONTROL + 0x7)
- /* DSP Initiated Hibernate */
- #define BRDIOCTL_PWR_HIBERNATE	(BRDIOCTL_PWRCONTROL + 0x8)
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dynamic_loader.h b/drivers/staging/tidspbridge/include/dspbridge/dynamic_loader.h
-index 4b109d1..052d27e 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dynamic_loader.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dynamic_loader.h
-@@ -46,8 +46,6 @@ struct dynamic_loader_initialize;
-  * Option flags to modify the behavior of module loading
-  */
- #define DLOAD_INITBSS 0x1	/* initialize BSS sections to zero */
--#define DLOAD_BIGEND 0x2	/* require big-endian load module */
--#define DLOAD_LITTLE 0x4	/* require little-endian load module */
- 
- /*****************************************************************************
-  * Procedure dynamic_load_module
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/io_sm.h b/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
-index 18aec55..bcde1d9 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
-@@ -28,7 +28,6 @@
- #define IO_INPUT            0
- #define IO_OUTPUT           1
- #define IO_SERVICE          2
--#define IO_MAXSERVICE       IO_SERVICE
- 
- #ifdef CONFIG_TIDSPBRIDGE_DVFS
- /* The maximum number of OPPs that are supported */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/iodefs.h b/drivers/staging/tidspbridge/include/dspbridge/iodefs.h
-index 8bd10a0..31cbc9a 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/iodefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/iodefs.h
-@@ -19,8 +19,6 @@
- #ifndef IODEFS_
- #define IODEFS_
- 
--#define IO_MAXIRQ   0xff	/* Arbitrarily large number. */
--
- /* IO Objects: */
- struct io_mgr;
- 
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/mbx_sh.h b/drivers/staging/tidspbridge/include/dspbridge/mbx_sh.h
-index 5d165cd..7424c88 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/mbx_sh.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/mbx_sh.h
-@@ -110,13 +110,7 @@
- #ifndef _MBX_SH_H
- #define _MBX_SH_H
- 
--#define MBX_CLASS_MSK      0xFC00	/* Class bits are 10 thru 15 */
--#define MBX_VALUE_MSK      0x03FF	/* Value is 0 thru 9 */
--
--#define MBX_DEH_CLASS      0x0000	/* DEH owns Mbx INTR */
--#define MBX_DDMA_CLASS     0x0400	/* DSP-DMA link drvr chnls owns INTR */
- #define MBX_PCPY_CLASS     0x0800	/* PROC-COPY  " */
--#define MBX_ZCPY_CLASS     0x1000	/* ZERO-COPY  " */
- #define MBX_PM_CLASS       0x2000	/* Power Management */
- #define MBX_DBG_CLASS      0x4000	/* For debugging purpose */
- 
-@@ -128,55 +122,21 @@
- #define MBX_DEH_USERS_BASE  0x100	/* 256 */
- #define MBX_DEH_LIMIT       0x3FF	/* 1023 */
- #define MBX_DEH_RESET       0x101	/* DSP RESET (DEH) */
--#define MBX_DEH_EMMU        0X103	/*DSP MMU FAULT RECOVERY */
- 
- /*
-  *  Link driver command/status codes.
-  */
--/* DSP-DMA */
--#define MBX_DDMA_NUMCHNLBITS 5	/* # chnl Id: # bits available */
--#define MBX_DDMA_CHNLSHIFT   0	/* # of bits to shift */
--#define MBX_DDMA_CHNLMSK     0x01F	/* bits 0 thru 4 */
--
--#define MBX_DDMA_NUMBUFBITS  5	/* buffer index: # of bits avail */
--#define MBX_DDMA_BUFSHIFT    (MBX_DDMA_NUMCHNLBITS + MBX_DDMA_CHNLSHIFT)
--#define MBX_DDMA_BUFMSK      0x3E0	/* bits 5 thru 9 */
--
--/* Zero-Copy */
--#define MBX_ZCPY_NUMCHNLBITS 5	/* # chnl Id: # bits available */
--#define MBX_ZCPY_CHNLSHIFT   0	/* # of bits to shift */
--#define MBX_ZCPY_CHNLMSK     0x01F	/* bits 0 thru 4 */
- 
- /*  Power Management Commands */
- #define MBX_PM_DSPIDLE                  (MBX_PM_CLASS + 0x0)
- #define MBX_PM_DSPWAKEUP                (MBX_PM_CLASS + 0x1)
- #define MBX_PM_EMERGENCYSLEEP           (MBX_PM_CLASS + 0x2)
--#define MBX_PM_SLEEPUNTILRESTART        (MBX_PM_CLASS + 0x3)
--#define MBX_PM_DSPGLOBALIDLE_OFF        (MBX_PM_CLASS + 0x4)
--#define MBX_PM_DSPGLOBALIDLE_ON         (MBX_PM_CLASS + 0x5)
- #define MBX_PM_SETPOINT_PRENOTIFY       (MBX_PM_CLASS + 0x6)
- #define MBX_PM_SETPOINT_POSTNOTIFY      (MBX_PM_CLASS + 0x7)
--#define MBX_PM_DSPRETN                  (MBX_PM_CLASS + 0x8)
- #define MBX_PM_DSPRETENTION        (MBX_PM_CLASS + 0x8)
- #define MBX_PM_DSPHIBERNATE        (MBX_PM_CLASS + 0x9)
- #define MBX_PM_HIBERNATE_EN        (MBX_PM_CLASS + 0xA)
- #define MBX_PM_OPP_REQ                  (MBX_PM_CLASS + 0xB)
--#define MBX_PM_OPP_CHG                  (MBX_PM_CLASS + 0xC)
--
--#define MBX_PM_TYPE_MASK 0x0300
--#define MBX_PM_TYPE_PWR_CHNG 0x0100
--#define MBX_PM_TYPE_OPP_PRECHNG 0x0200
--#define MBX_PM_TYPE_OPP_POSTCHNG 0x0300
--#define MBX_PM_TYPE_OPP_MASK 0x0300
--#define MBX_PM_OPP_PRECHNG (MBX_PM_CLASS | MBX_PM_TYPE_OPP_PRECHNG)
--/* DSP to MPU */
--#define MBX_PM_OPP_CHNG(OPP) (MBX_PM_CLASS | MBX_PM_TYPE_OPP_PRECHNG | (OPP))
--#define MBX_PM_RET (MBX_PM_CLASS | MBX_PM_TYPE_PWR_CHNG | 0x0006)
--#define MBX_PM_HIB (MBX_PM_CLASS | MBX_PM_TYPE_PWR_CHNG | 0x0002)
--#define MBX_PM_OPP1 0
--#define MBX_PM_OPP2 1
--#define MBX_PM_OPP3 2
--#define MBX_PM_OPP4 3
- 
- /* Bridge Debug Commands */
- #define MBX_DBG_SYSPRINTF       (MBX_DBG_CLASS + 0x0)
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/pwr_sh.h b/drivers/staging/tidspbridge/include/dspbridge/pwr_sh.h
-index 1b4a090..c78a1b1 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/pwr_sh.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/pwr_sh.h
-@@ -24,10 +24,6 @@
- /* valid sleep command codes that can be sent by GPP via mailbox: */
- #define PWR_DEEPSLEEP           MBX_PM_DSPIDLE
- #define PWR_EMERGENCYDEEPSLEEP  MBX_PM_EMERGENCYSLEEP
--#define PWR_SLEEPUNTILRESTART   MBX_PM_SLEEPUNTILRESTART
- #define PWR_WAKEUP              MBX_PM_DSPWAKEUP
--#define PWR_AUTOENABLE          MBX_PM_PWRENABLE
--#define PWR_AUTODISABLE         MBX_PM_PWRDISABLE
--#define PWR_RETENTION             MBX_PM_DSPRETN
- 
- #endif /* PWR_SH_ */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/rms_sh.h b/drivers/staging/tidspbridge/include/dspbridge/rms_sh.h
-index 7bc5574..ba7f478 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/rms_sh.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/rms_sh.h
-@@ -22,27 +22,18 @@
- 
- #include <dspbridge/rmstypes.h>
- 
--/* Node Types: */
--#define RMS_TASK                1	/* Task node */
--#define RMS_DAIS                2	/* xDAIS socket node */
--#define RMS_MSG                 3	/* Message node */
--
- /* Memory Types: */
- #define RMS_CODE                0	/* Program space */
- #define RMS_DATA                1	/* Data space */
--#define RMS_IO                	2	/* I/O space */
- 
- /* RM Server Command and Response Buffer Sizes: */
- #define RMS_COMMANDBUFSIZE     256	/* Size of command buffer */
--#define RMS_RESPONSEBUFSIZE    16	/* Size of response buffer */
- 
- /* Pre-Defined Command/Response Codes: */
- #define RMS_EXIT                0x80000000	/* GPP->Node: shutdown */
- #define RMS_EXITACK             0x40000000	/* Node->GPP: ack shutdown */
- #define RMS_BUFDESC             0x20000000	/* Arg1 SM buf, Arg2 SM size */
- #define RMS_KILLTASK            0x10000000	/* GPP->Node: Kill Task */
--#define RMS_USER                0x0	/* Start of user-defined msg codes */
--#define RMS_MAXUSERCODES        0xfff	/* Maximum user defined C/R Codes */
- 
- /* RM Server RPC Command Structure: */
- struct rms_command {
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/strmdefs.h b/drivers/staging/tidspbridge/include/dspbridge/strmdefs.h
-index b363f79..c6abbf3 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/strmdefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/strmdefs.h
-@@ -19,8 +19,6 @@
- #ifndef STRMDEFS_
- #define STRMDEFS_
- 
--#define STRM_MAXEVTNAMELEN      32
--
- struct strm_mgr;
- 
- struct strm_object;
-diff --git a/drivers/staging/tidspbridge/pmgr/dev.c b/drivers/staging/tidspbridge/pmgr/dev.c
-index b160b00..b95cd20 100644
---- a/drivers/staging/tidspbridge/pmgr/dev.c
-+++ b/drivers/staging/tidspbridge/pmgr/dev.c
-@@ -880,7 +880,7 @@ int dev_start_device(struct cfg_devnode *dev_node_obj)
- {
- 	struct dev_object *hdev_obj = NULL;	/* handle to 'Bridge Device */
- 	/* Bridge driver filename */
--	char bridge_file_name[CFG_MAXSEARCHPATHLEN] = "UMA";
-+	char *bridge_file_name = "UMA";
- 	int status;
- 	struct mgr_object *hmgr_obj = NULL;
- 	struct drv_data *drv_datap = dev_get_drvdata(bridge);
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0021-staging-tidspbridge-Remove-unused-functions.patch b/patches/dspbridge/0021-staging-tidspbridge-Remove-unused-functions.patch
deleted file mode 100644
index 250890ac0e3f4ae78e45fabcfd43bdc187bffeca..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0021-staging-tidspbridge-Remove-unused-functions.patch
+++ /dev/null
@@ -1,655 +0,0 @@
-From 86b83173d61872057d4c3757364cc4bbeed24b80 Mon Sep 17 00:00:00 2001
-From: Armando Uribe <x0095078@ti.com>
-Date: Fri, 17 Dec 2010 01:18:30 -0600
-Subject: [PATCH 21/25] staging: tidspbridge - Remove unused functions
-
-Remove functions that are not used at all, also remove the dependencies
-of this functions like struct members, comments and calls.
-
-Signed-off-by: Armando Uribe <x0095078@ti.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/core/io_sm.c           |    4 -
- drivers/staging/tidspbridge/core/tiomap3430.c      |    2 -
- .../staging/tidspbridge/include/dspbridge/chnl.h   |   21 ---
- .../staging/tidspbridge/include/dspbridge/dbll.h   |    6 -
- .../tidspbridge/include/dspbridge/dblldefs.h       |    3 -
- .../staging/tidspbridge/include/dspbridge/dev.h    |   55 --------
- .../staging/tidspbridge/include/dspbridge/dspio.h  |    1 -
- .../tidspbridge/include/dspbridge/host_os.h        |    9 --
- drivers/staging/tidspbridge/include/dspbridge/io.h |   16 ---
- .../staging/tidspbridge/include/dspbridge/io_sm.h  |  135 --------------------
- .../staging/tidspbridge/include/dspbridge/node.h   |   18 ---
- .../include/dspbridge/resourcecleanup.h            |   11 --
- .../staging/tidspbridge/include/dspbridge/strm.h   |   62 ---------
- drivers/staging/tidspbridge/pmgr/cod.c             |    3 -
- drivers/staging/tidspbridge/pmgr/dbll.c            |   41 ------
- drivers/staging/tidspbridge/rmgr/nldr.c            |    3 -
- 16 files changed, 0 insertions(+), 390 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/core/io_sm.c b/drivers/staging/tidspbridge/core/io_sm.c
-index 9289522..90e89ee 100644
---- a/drivers/staging/tidspbridge/core/io_sm.c
-+++ b/drivers/staging/tidspbridge/core/io_sm.c
-@@ -1682,10 +1682,6 @@ int bridge_io_get_proc_load(struct io_mgr *hio_mgr,
- 	return 0;
- }
- 
--void io_sm_init(void)
--{
--	/* Do nothing */
--}
- 
- #if defined(CONFIG_TIDSPBRIDGE_BACKTRACE) || defined(CONFIG_TIDSPBRIDGE_DEBUG)
- void print_dsp_debug_trace(struct io_mgr *hio_mgr)
-diff --git a/drivers/staging/tidspbridge/core/tiomap3430.c b/drivers/staging/tidspbridge/core/tiomap3430.c
-index cb45e93..cacd30e 100644
---- a/drivers/staging/tidspbridge/core/tiomap3430.c
-+++ b/drivers/staging/tidspbridge/core/tiomap3430.c
-@@ -255,8 +255,6 @@ void bridge_drv_entry(struct bridge_drv_interface **drv_intf,
- 
- 	DBC_REQUIRE(driver_file_name != NULL);
- 
--	io_sm_init();		/* Initialization of io_sm module */
--
- 	if (strcmp(driver_file_name, "UMA") == 0)
- 		*drv_intf = &drv_interface_fxns;
- 	else
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/chnl.h b/drivers/staging/tidspbridge/include/dspbridge/chnl.h
-index 8733b3b..92f6a13 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/chnl.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/chnl.h
-@@ -25,27 +25,6 @@
- #include <dspbridge/chnlpriv.h>
- 
- /*
-- *  ======== chnl_close ========
-- *  Purpose:
-- *      Ensures all pending I/O on this channel is cancelled, discards all
-- *      queued I/O completion notifications, then frees the resources allocated
-- *      for this channel, and makes the corresponding logical channel id
-- *      available for subsequent use.
-- *  Parameters:
-- *      chnl_obj:          Channel object handle.
-- *  Returns:
-- *      0:        Success;
-- *      -EFAULT:    Invalid chnl_obj.
-- *  Requires:
-- *      chnl_init(void) called.
-- *      No thread must be blocked on this channel's I/O completion event.
-- *  Ensures:
-- *      0:        The I/O completion event for this channel is freed.
-- *                      chnl_obj is no longer valid.
-- */
--extern int chnl_close(struct chnl_object *chnl_obj);
--
--/*
-  *  ======== chnl_create ========
-  *  Purpose:
-  *      Create a channel manager object, responsible for opening new channels
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dbll.h b/drivers/staging/tidspbridge/include/dspbridge/dbll.h
-index b018676..46a9e00 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dbll.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dbll.h
-@@ -42,18 +42,12 @@ extern bool dbll_init(void);
- extern int dbll_load(struct dbll_library_obj *lib,
- 			    dbll_flags flags,
- 			    struct dbll_attrs *attrs, u32 * entry);
--extern int dbll_load_sect(struct dbll_library_obj *zl_lib,
--				 char *sec_name, struct dbll_attrs *attrs);
- extern int dbll_open(struct dbll_tar_obj *target, char *file,
- 			    dbll_flags flags,
- 		       struct dbll_library_obj **lib_obj);
- extern int dbll_read_sect(struct dbll_library_obj *lib,
- 				 char *name, char *buf, u32 size);
--extern void dbll_set_attrs(struct dbll_tar_obj *target,
--			   struct dbll_attrs *pattrs);
- extern void dbll_unload(struct dbll_library_obj *lib, struct dbll_attrs *attrs);
--extern int dbll_unload_sect(struct dbll_library_obj *lib,
--				   char *sect_name, struct dbll_attrs *attrs);
- #ifdef CONFIG_TIDSPBRIDGE_BACKTRACE
- bool dbll_find_dsp_symbol(struct dbll_library_obj *zl_lib, u32 address,
- 		u32 offset_range, u32 *sym_addr_output, char *name_output);
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h b/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h
-index d2b4fda..81821e5 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h
-@@ -485,12 +485,9 @@ struct dbll_fxns {
- 	dbll_get_sect_fxn get_sect_fxn;
- 	dbll_init_fxn init_fxn;
- 	dbll_load_fxn load_fxn;
--	dbll_load_sect_fxn load_sect_fxn;
- 	dbll_open_fxn open_fxn;
- 	dbll_read_sect_fxn read_sect_fxn;
--	dbll_set_attrs_fxn set_attrs_fxn;
- 	dbll_unload_fxn unload_fxn;
--	dbll_unload_sect_fxn unload_sect_fxn;
- };
- 
- #endif /* DBLDEFS_ */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dev.h b/drivers/staging/tidspbridge/include/dspbridge/dev.h
-index 357458f..4d4196b 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dev.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dev.h
-@@ -95,43 +95,6 @@ extern int dev_create_device(struct dev_object
- 				    struct cfg_devnode *dev_node_obj);
- 
- /*
-- *  ======== dev_create_iva_device ========
-- *  Purpose:
-- *      Called by the operating system to load the Bridge Driver for IVA.
-- *  Parameters:
-- *      device_obj:     Ptr to location to receive the device object handle.
-- *      driver_file_name: Name of Bridge driver PE DLL file to load.  If the
-- *                      absolute path is not provided, the file is loaded
-- *                      through 'Bridge's module search path.
-- *      host_config:    Host configuration information, to be passed down
-- *                      to the Bridge driver when bridge_dev_create() is called.
-- *      pDspConfig:     DSP resources, to be passed down to the Bridge driver
-- *                      when bridge_dev_create() is called.
-- *      dev_node_obj:       Platform specific device node.
-- *  Returns:
-- *      0:            Module is loaded, device object has been created
-- *      -ENOMEM:        Insufficient memory to create needed resources.
-- *      -EPERM:              Unable to find Bridge driver entry point function.
-- *      -ESPIPE:   Unable to load ZL DLL.
-- *  Requires:
-- *      DEV Initialized.
-- *      device_obj != NULL.
-- *      driver_file_name != NULL.
-- *      host_config != NULL.
-- *      pDspConfig != NULL.
-- *  Ensures:
-- *      0:  *device_obj will contain handle to the new device object.
-- *      Otherwise, does not create the device object, ensures the Bridge driver
-- *      module is unloaded, and sets *device_obj to NULL.
-- */
--extern int dev_create_iva_device(struct dev_object
--					**device_obj,
--					const char *driver_file_name,
--					const struct cfg_hostres
--					*host_config,
--					struct cfg_devnode *dev_node_obj);
--
--/*
-  *  ======== dev_create2 ========
-  *  Purpose:
-  *      After successful loading of the image from api_init_complete2
-@@ -542,24 +505,6 @@ extern void dev_exit(void);
- extern bool dev_init(void);
- 
- /*
-- *  ======== dev_is_locked ========
-- *  Purpose:
-- *      Predicate function to determine if the device has been
-- *      locked by a client for exclusive access.
-- *  Parameters:
-- *      hdev_obj:     Handle to device object created with
-- *                      dev_create_device().
-- *  Returns:
-- *      0:        TRUE: device has been locked.
-- *      0:     FALSE: device not locked.
-- *      -EFAULT:    hdev_obj was invalid.
-- *  Requires:
-- *      DEV Initialized.
-- *  Ensures:
-- */
--extern int dev_is_locked(struct dev_object *hdev_obj);
--
--/*
-  *  ======== dev_insert_proc_object ========
-  *  Purpose:
-  *      Inserts the Processor Object into the List of PROC Objects
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspio.h b/drivers/staging/tidspbridge/include/dspbridge/dspio.h
-index 88f5f90..5c666b8 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dspio.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dspio.h
-@@ -34,7 +34,6 @@ extern int bridge_io_destroy(struct io_mgr *hio_mgr);
- 
- extern int bridge_io_on_loaded(struct io_mgr *hio_mgr);
- 
--extern int iva_io_on_loaded(struct io_mgr *hio_mgr);
- extern int bridge_io_get_proc_load(struct io_mgr *hio_mgr,
- 				       struct dsp_procloadstat *proc_lstat);
- 
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/host_os.h b/drivers/staging/tidspbridge/include/dspbridge/host_os.h
-index 6549898..b1b8acb 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/host_os.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/host_os.h
-@@ -57,13 +57,4 @@
- extern struct platform_device *omap_dspbridge_dev;
- extern struct device *bridge;
- 
--#if defined(CONFIG_TIDSPBRIDGE) || defined(CONFIG_TIDSPBRIDGE_MODULE)
--extern void dspbridge_reserve_sdram(void);
--#else
--static inline void dspbridge_reserve_sdram(void)
--{
--}
--#endif
--
--extern unsigned long dspbridge_get_mempool_base(void);
- #endif
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/io.h b/drivers/staging/tidspbridge/include/dspbridge/io.h
-index bc346f9..da4683c 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/io.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/io.h
-@@ -95,20 +95,4 @@ extern void io_exit(void);
-  */
- extern bool io_init(void);
- 
--/*
-- *  ======== io_on_loaded ========
-- *  Purpose:
-- *      Called when a program is loaded so IO manager can update its
-- *      internal state.
-- *  Parameters:
-- *      hio_mgr:         IOmanager object.
-- *  Returns:
-- *      0:        Success.
-- *      -EFAULT:    hio_mgr was invalid.
-- *  Requires:
-- *      io_init(void) called.
-- *  Ensures:
-- */
--extern int io_on_loaded(struct io_mgr *hio_mgr);
--
- #endif /* CHNL_ */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/io_sm.h b/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
-index bcde1d9..8778ab4 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
-@@ -120,122 +120,6 @@ extern void io_request_chnl(struct io_mgr *io_manager,
- extern void iosm_schedule(struct io_mgr *io_manager);
- 
- /*
-- * DSP-DMA IO functions
-- */
--
--/*
-- *  ======== io_ddma_init_chnl_desc ========
-- *  Purpose:
-- *      Initialize DSP DMA channel descriptor.
-- *  Parameters:
-- *      hio_mgr:         Handle to a I/O manager.
-- *      ddma_chnl_id:    DDMA channel identifier.
-- *      num_desc:       Number of buffer descriptors(equals # of IOReqs &
-- *                      Chirps)
-- *      dsp:           Dsp address;
-- *  Returns:
-- *  Requires:
-- *     ddma_chnl_id < DDMA_MAXDDMACHNLS
-- *     num_desc > 0
-- *     pVa != NULL
-- *     pDspPa != NULL
-- *
-- *  Ensures:
-- */
--extern void io_ddma_init_chnl_desc(struct io_mgr *hio_mgr, u32 ddma_chnl_id,
--				   u32 num_desc, void *dsp);
--
--/*
-- *  ======== io_ddma_clear_chnl_desc ========
-- *  Purpose:
-- *      Clear DSP DMA channel descriptor.
-- *  Parameters:
-- *      hio_mgr:         Handle to a I/O manager.
-- *      ddma_chnl_id:    DDMA channel identifier.
-- *  Returns:
-- *  Requires:
-- *     ddma_chnl_id < DDMA_MAXDDMACHNLS
-- *  Ensures:
-- */
--extern void io_ddma_clear_chnl_desc(struct io_mgr *hio_mgr, u32 ddma_chnl_id);
--
--/*
-- *  ======== io_ddma_request_chnl ========
-- *  Purpose:
-- *      Request channel DSP-DMA from the DSP. Sets up SM descriptors and
-- *      control fields in shared memory.
-- *  Parameters:
-- *      hio_mgr:     Handle to a I/O manager.
-- *      pchnl:      Ptr to channel object
-- *      chnl_packet_obj:     Ptr to channel i/o request packet.
-- *  Returns:
-- *  Requires:
-- *      pchnl != NULL
-- *      pchnl->cio_reqs > 0
-- *      chnl_packet_obj != NULL
-- *  Ensures:
-- */
--extern void io_ddma_request_chnl(struct io_mgr *hio_mgr,
--				 struct chnl_object *pchnl,
--				 struct chnl_irp *chnl_packet_obj,
--				 u16 *mbx_val);
--
--/*
-- * Zero-copy IO functions
-- */
--
--/*
-- *  ======== io_ddzc_init_chnl_desc ========
-- *  Purpose:
-- *      Initialize ZCPY channel descriptor.
-- *  Parameters:
-- *      hio_mgr:     Handle to a I/O manager.
-- *      zid:        zero-copy channel identifier.
-- *  Returns:
-- *  Requires:
-- *     ddma_chnl_id < DDMA_MAXZCPYCHNLS
-- *     hio_mgr != Null
-- *  Ensures:
-- */
--extern void io_ddzc_init_chnl_desc(struct io_mgr *hio_mgr, u32 zid);
--
--/*
-- *  ======== io_ddzc_clear_chnl_desc ========
-- *  Purpose:
-- *      Clear DSP ZC channel descriptor.
-- *  Parameters:
-- *      hio_mgr:         Handle to a I/O manager.
-- *      ch_id:        ZC channel identifier.
-- *  Returns:
-- *  Requires:
-- *      hio_mgr is valid
-- *      ch_id < DDMA_MAXZCPYCHNLS
-- *  Ensures:
-- */
--extern void io_ddzc_clear_chnl_desc(struct io_mgr *hio_mgr, u32 ch_id);
--
--/*
-- *  ======== io_ddzc_request_chnl ========
-- *  Purpose:
-- *      Request zero-copy channel transfer. Sets up SM descriptors and
-- *      control fields in shared memory.
-- *  Parameters:
-- *      hio_mgr:         Handle to a I/O manager.
-- *      pchnl:          Ptr to channel object
-- *      chnl_packet_obj:         Ptr to channel i/o request packet.
-- *  Returns:
-- *  Requires:
-- *      pchnl != NULL
-- *      pchnl->cio_reqs > 0
-- *      chnl_packet_obj != NULL
-- *  Ensures:
-- */
--extern void io_ddzc_request_chnl(struct io_mgr *hio_mgr,
--				 struct chnl_object *pchnl,
--				 struct chnl_irp *chnl_packet_obj,
--				 u16 *mbx_val);
--
--/*
-  *  ======== io_sh_msetting ========
-  *  Purpose:
-  *      Sets the shared memory setting
-@@ -258,25 +142,6 @@ extern int io_sh_msetting(struct io_mgr *hio_mgr, u8 desc, void *pargs);
- /* Maximum channel bufsize that can be used. */
- extern u32 io_buf_size(struct io_mgr *hio_mgr);
- 
--extern u32 io_read_value(struct bridge_dev_context *dev_ctxt, u32 dsp_addr);
--
--extern void io_write_value(struct bridge_dev_context *dev_ctxt,
--			   u32 dsp_addr, u32 value);
--
--extern u32 io_read_value_long(struct bridge_dev_context *dev_ctxt,
--			      u32 dsp_addr);
--
--extern void io_write_value_long(struct bridge_dev_context *dev_ctxt,
--				u32 dsp_addr, u32 value);
--
--extern void io_or_set_value(struct bridge_dev_context *dev_ctxt,
--			    u32 dsp_addr, u32 value);
--
--extern void io_and_set_value(struct bridge_dev_context *dev_ctxt,
--			     u32 dsp_addr, u32 value);
--
--extern void io_sm_init(void);
--
- #ifdef CONFIG_TIDSPBRIDGE_BACKTRACE
- /*
-  *  ========print_dsp_trace_buffer ========
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/node.h b/drivers/staging/tidspbridge/include/dspbridge/node.h
-index 49ed5c1..4c5558c 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/node.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/node.h
-@@ -113,24 +113,6 @@ extern int node_alloc_msg_buf(struct node_object *hnode,
- extern int node_change_priority(struct node_object *hnode, s32 prio);
- 
- /*
-- *  ======== node_close_orphans ========
-- *  Purpose:
-- *      Delete all nodes whose owning processor is being destroyed.
-- *  Parameters:
-- *      hnode_mgr:       Node manager object.
-- *      proc:          Handle to processor object being destroyed.
-- *  Returns:
-- *      0:        Success.
-- *      -EPERM:      Unable to delete all nodes belonging to proc.
-- *  Requires:
-- *      Valid hnode_mgr.
-- *      proc != NULL.
-- *  Ensures:
-- */
--extern int node_close_orphans(struct node_mgr *hnode_mgr,
--				     struct proc_object *proc);
--
--/*
-  *  ======== node_connect ========
-  *  Purpose:
-  *      Connect two nodes on the DSP, or a node on the DSP to the GPP. In the
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/resourcecleanup.h b/drivers/staging/tidspbridge/include/dspbridge/resourcecleanup.h
-index dfaf0c6..8c9c902 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/resourcecleanup.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/resourcecleanup.h
-@@ -17,23 +17,12 @@
- #include <dspbridge/nodepriv.h>
- #include <dspbridge/drv.h>
- 
--extern int drv_get_proc_ctxt_list(struct process_context **pctxt,
--					 struct drv_object *hdrv_obj);
--
--extern int drv_insert_proc_context(struct drv_object *driver_obj,
--					  void *process_ctxt);
--
- extern int drv_remove_all_dmm_res_elements(void *process_ctxt);
- 
- extern int drv_remove_all_node_res_elements(void *process_ctxt);
- 
--extern int drv_proc_set_pid(void *ctxt, s32 process);
--
- extern int drv_remove_all_resources(void *process_ctxt);
- 
--extern int drv_remove_proc_context(struct drv_object *driver_obj,
--					  void *pr_ctxt);
--
- extern int drv_insert_node_res_element(void *hnode, void *node_resource,
- 					      void *process_ctxt);
- 
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/strm.h b/drivers/staging/tidspbridge/include/dspbridge/strm.h
-index 3e4671e..613fe53 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/strm.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/strm.h
-@@ -142,25 +142,6 @@ extern int strm_free_buffer(struct strm_res_object *strmres,
- 				   struct process_context *pr_ctxt);
- 
- /*
-- *  ======== strm_get_event_handle ========
-- *  Purpose:
-- *      Get stream's user event handle. This function is used when closing
-- *      a stream, so the event can be closed.
-- *  Parameter:
-- *      stream_obj:      Stream handle returned from strm_open().
-- *      ph_event:        Location to store event handle on output.
-- *  Returns:
-- *      0:        Success.
-- *      -EFAULT:    Invalid stream_obj.
-- *  Requires:
-- *      strm_init(void) called.
-- *      ph_event != NULL.
-- *  Ensures:
-- */
--extern int strm_get_event_handle(struct strm_object *stream_obj,
--					void **ph_event);
--
--/*
-  *  ======== strm_get_info ========
-  *  Purpose:
-  *      Get information about a stream. User's dsp_streaminfo is contained
-@@ -276,27 +257,6 @@ extern int strm_open(struct node_object *hnode, u32 dir,
- 			    struct process_context *pr_ctxt);
- 
- /*
-- *  ======== strm_prepare_buffer ========
-- *  Purpose:
-- *      Prepare a data buffer not allocated by DSPStream_AllocateBuffers()
-- *      for use with a stream.
-- *  Parameter:
-- *      stream_obj:     Stream handle returned from strm_open().
-- *      usize:          Size (GPP bytes) of the buffer.
-- *      pbuffer:        Buffer address.
-- *  Returns:
-- *      0:        Success.
-- *      -EFAULT:    Invalid stream_obj.
-- *      -EPERM:      Failure occurred, unable to prepare buffer.
-- *  Requires:
-- *      strm_init(void) called.
-- *      pbuffer != NULL.
-- *  Ensures:
-- */
--extern int strm_prepare_buffer(struct strm_object *stream_obj,
--				      u32 usize, u8 *pbuffer);
--
--/*
-  *  ======== strm_reclaim ========
-  *  Purpose:
-  *      Request a buffer back from a stream.
-@@ -379,26 +339,4 @@ extern int strm_register_notify(struct strm_object *stream_obj,
- extern int strm_select(struct strm_object **strm_tab,
- 			      u32 strms, u32 *pmask, u32 utimeout);
- 
--/*
-- *  ======== strm_unprepare_buffer ========
-- *  Purpose:
-- *      Unprepare a data buffer that was previously prepared for a stream
-- *      with DSPStream_PrepareBuffer(), and that will no longer be used with
-- *      the stream.
-- *  Parameter:
-- *      stream_obj:     Stream handle returned from strm_open().
-- *      usize:          Size (GPP bytes) of the buffer.
-- *      pbuffer:        Buffer address.
-- *  Returns:
-- *      0:        Success.
-- *      -EFAULT:    Invalid stream_obj.
-- *      -EPERM:      Failure occurred, unable to unprepare buffer.
-- *  Requires:
-- *      strm_init(void) called.
-- *      pbuffer != NULL.
-- *  Ensures:
-- */
--extern int strm_unprepare_buffer(struct strm_object *stream_obj,
--					u32 usize, u8 *pbuffer);
--
- #endif /* STRM_ */
-diff --git a/drivers/staging/tidspbridge/pmgr/cod.c b/drivers/staging/tidspbridge/pmgr/cod.c
-index 52989ab..db29a19 100644
---- a/drivers/staging/tidspbridge/pmgr/cod.c
-+++ b/drivers/staging/tidspbridge/pmgr/cod.c
-@@ -78,12 +78,9 @@ static struct dbll_fxns ldr_fxns = {
- 	(dbll_get_sect_fxn) dbll_get_sect,
- 	(dbll_init_fxn) dbll_init,
- 	(dbll_load_fxn) dbll_load,
--	(dbll_load_sect_fxn) dbll_load_sect,
- 	(dbll_open_fxn) dbll_open,
- 	(dbll_read_sect_fxn) dbll_read_sect,
--	(dbll_set_attrs_fxn) dbll_set_attrs,
- 	(dbll_unload_fxn) dbll_unload,
--	(dbll_unload_sect_fxn) dbll_unload_sect,
- };
- 
- static bool no_op(void);
-diff --git a/drivers/staging/tidspbridge/pmgr/dbll.c b/drivers/staging/tidspbridge/pmgr/dbll.c
-index 878aa50..2f46b06 100644
---- a/drivers/staging/tidspbridge/pmgr/dbll.c
-+++ b/drivers/staging/tidspbridge/pmgr/dbll.c
-@@ -568,18 +568,6 @@ int dbll_load(struct dbll_library_obj *lib, dbll_flags flags,
- }
- 
- /*
-- *  ======== dbll_load_sect ========
-- *  Not supported for COFF.
-- */
--int dbll_load_sect(struct dbll_library_obj *zl_lib, char *sec_name,
--			  struct dbll_attrs *attrs)
--{
--	DBC_REQUIRE(zl_lib);
--
--	return -ENOSYS;
--}
--
--/*
-  *  ======== dbll_open ========
-  */
- int dbll_open(struct dbll_tar_obj *target, char *file, dbll_flags flags,
-@@ -794,22 +782,6 @@ func_cont:
- }
- 
- /*
-- *  ======== dbll_set_attrs ========
-- *  Set the attributes of the target.
-- */
--void dbll_set_attrs(struct dbll_tar_obj *target, struct dbll_attrs *pattrs)
--{
--	struct dbll_tar_obj *zl_target = (struct dbll_tar_obj *)target;
--	DBC_REQUIRE(refs > 0);
--	DBC_REQUIRE(zl_target);
--	DBC_REQUIRE(pattrs != NULL);
--
--	if ((pattrs != NULL) && (zl_target != NULL))
--		zl_target->attrs = *pattrs;
--
--}
--
--/*
-  *  ======== dbll_unload ========
-  */
- void dbll_unload(struct dbll_library_obj *lib, struct dbll_attrs *attrs)
-@@ -848,19 +820,6 @@ func_end:
- }
- 
- /*
-- *  ======== dbll_unload_sect ========
-- *  Not supported for COFF.
-- */
--int dbll_unload_sect(struct dbll_library_obj *lib, char *sec_name,
--			    struct dbll_attrs *attrs)
--{
--	DBC_REQUIRE(refs > 0);
--	DBC_REQUIRE(sec_name != NULL);
--
--	return -ENOSYS;
--}
--
--/*
-  *  ======== dof_close ========
-  */
- static void dof_close(struct dbll_library_obj *zl_lib)
-diff --git a/drivers/staging/tidspbridge/rmgr/nldr.c b/drivers/staging/tidspbridge/rmgr/nldr.c
-index a6ae007..26cfb32 100644
---- a/drivers/staging/tidspbridge/rmgr/nldr.c
-+++ b/drivers/staging/tidspbridge/rmgr/nldr.c
-@@ -260,12 +260,9 @@ static struct dbll_fxns ldr_fxns = {
- 	(dbll_get_sect_fxn) dbll_get_sect,
- 	(dbll_init_fxn) dbll_init,
- 	(dbll_load_fxn) dbll_load,
--	(dbll_load_sect_fxn) dbll_load_sect,
- 	(dbll_open_fxn) dbll_open,
- 	(dbll_read_sect_fxn) dbll_read_sect,
--	(dbll_set_attrs_fxn) dbll_set_attrs,
- 	(dbll_unload_fxn) dbll_unload,
--	(dbll_unload_sect_fxn) dbll_unload_sect,
- };
- 
- static u32 refs;		/* module reference count */
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0022-staging-tidspbridge-Remove-unused-structs.patch b/patches/dspbridge/0022-staging-tidspbridge-Remove-unused-structs.patch
deleted file mode 100644
index 88ac7aa2e08678c25175d44005aaeee1997ba48c..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0022-staging-tidspbridge-Remove-unused-structs.patch
+++ /dev/null
@@ -1,337 +0,0 @@
-From c6e21b12fab9d5083bc90e7dd3f091d0a15513ff Mon Sep 17 00:00:00 2001
-From: Armando Uribe <x0095078@ti.com>
-Date: Fri, 17 Dec 2010 01:18:31 -0600
-Subject: [PATCH 22/25] staging: tidspbridge - Remove unused structs
-
-Remove unused structs and its dependencies, like references
-in other structs or as arguments of certain functions.
-
-Signed-off-by: Armando Uribe <x0095078@ti.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- .../tidspbridge/include/dspbridge/cfgdefs.h        |    6 --
- .../staging/tidspbridge/include/dspbridge/cod.h    |   10 +----
- .../tidspbridge/include/dspbridge/dbldefs.h        |   49 --------------------
- .../staging/tidspbridge/include/dspbridge/drv.h    |   14 ------
- .../tidspbridge/include/dspbridge/dspapi-ioctl.h   |    8 ---
- .../staging/tidspbridge/include/dspbridge/ldr.h    |   29 ------------
- drivers/staging/tidspbridge/pmgr/cod.c             |   11 +----
- drivers/staging/tidspbridge/pmgr/dev.c             |    8 +---
- drivers/staging/tidspbridge/rmgr/dbdcd.c           |    2 +-
- 9 files changed, 4 insertions(+), 133 deletions(-)
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/ldr.h
-
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h b/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h
-index c3f04f8..0589a0a 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h
-@@ -58,10 +58,4 @@ struct cfg_hostres {
- 	void __iomem *dw_dmmu_base;
- };
- 
--struct cfg_dspmemdesc {
--	u32 mem_type;		/* Type of memory. */
--	u32 ul_min;		/* Minimum amount of memory of this type. */
--	u32 ul_max;		/* Maximum amount of memory of this type. */
--};
--
- #endif /* CFGDEFS_ */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/cod.h b/drivers/staging/tidspbridge/include/dspbridge/cod.h
-index 5efea91..53bd4bb 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/cod.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/cod.h
-@@ -37,11 +37,6 @@ struct cod_manager;
- /* COD library handle */
- struct cod_libraryobj;
- 
--/* COD attributes */
--struct cod_attrs {
--	u32 ul_reserved;
--};
--
- /*
-  *  Function prototypes for writing memory to a DSP system, allocating
-  *  and freeing DSP memory.
-@@ -76,8 +71,6 @@ extern void cod_close(struct cod_libraryobj *lib);
-  *  Parameters:
-  *      manager:        created manager object
-  *      str_zl_file:    ZL DLL filename, of length < COD_MAXPATHLENGTH.
-- *      attrs:          attributes to be used by this object. A NULL value
-- *                      will cause default attrs to be used.
-  *  Returns:
-  *      0:                Success.
-  *      -ESPIPE:   ZL_Create failed.
-@@ -89,8 +82,7 @@ extern void cod_close(struct cod_libraryobj *lib);
-  *  Ensures:
-  */
- extern int cod_create(struct cod_manager **mgr,
--			     char *str_zl_file,
--			     const struct cod_attrs *attrs);
-+			     char *str_zl_file);
- 
- /*
-  *  ======== cod_delete ========
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h b/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h
-index 9973098..5cf9dad 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h
-@@ -25,26 +25,6 @@
- typedef s32 dbl_flags;
- 
- /*
-- *  ======== dbl_sect_info ========
-- *  For collecting info on overlay sections
-- */
--struct dbl_sect_info {
--	const char *name;	/* name of section */
--	u32 sect_run_addr;	/* run address of section */
--	u32 sect_load_addr;	/* load address of section */
--	u32 size;		/* size of section (target MAUs) */
--	dbl_flags type;		/* Code, data, or BSS */
--};
--
--/*
-- *  ======== dbl_symbol ========
-- *  (Needed for dynamic load library)
-- */
--struct dbl_symbol {
--	u32 value;
--};
--
--/*
-  *  ======== dbl_alloc_fxn ========
-  *  Allocate memory function.  Allocate or reserve (if reserved == TRUE)
-  *  "size" bytes of memory from segment "space" and return the address in
-@@ -98,33 +78,4 @@ typedef bool(*dbl_sym_lookup) (void *handle, void *parg, void *rmm_handle,
- typedef s32(*dbl_write_fxn) (void *hdl, u32 dsp_address, void *buf,
- 			     u32 n, s32 mtype);
- 
--/*
-- *  ======== dbl_attrs ========
-- */
--struct dbl_attrs {
--	dbl_alloc_fxn alloc;
--	dbl_free_fxn free;
--	void *rmm_handle;	/* Handle to pass to alloc, free functions */
--	dbl_write_fxn write;
--	void *input_params;	/* Handle to pass to write, cinit function */
--
--	dbl_log_write_fxn log_write;
--	void *log_write_handle;
--
--	/* Symbol matching function and handle to pass to it */
--	dbl_sym_lookup sym_lookup;
--	void *sym_handle;
--	void *sym_arg;
--
--	/*
--	 *  These file manipulation functions should be compatible with the
--	 *  "C" run time library functions of the same name.
--	 */
--	 s32(*fread) (void *, size_t, size_t, void *);
--	 s32(*fseek) (void *, long, int);
--	 s32(*ftell) (void *);
--	 s32(*fclose) (void *);
--	void *(*fopen) (const char *, const char *);
--};
--
- #endif /* DBLDEFS_ */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/drv.h b/drivers/staging/tidspbridge/include/dspbridge/drv.h
-index adb28ec..26972ad 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/drv.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/drv.h
-@@ -96,17 +96,6 @@ struct dmm_rsv_object {
- 	u32 dsp_reserved_addr;
- };
- 
--/* New structure (member of process context) abstracts DMM resource info */
--struct dspheap_res_object {
--	s32 heap_allocated;	/* DMM status */
--	u32 ul_mpu_addr;
--	u32 ul_dsp_addr;
--	u32 ul_dsp_res_addr;
--	u32 heap_size;
--	void *hprocessor;
--	struct dspheap_res_object *next;
--};
--
- /* New structure (member of process context) abstracts stream resource info */
- struct strm_res_object {
- 	s32 stream_allocated;	/* Stream status */
-@@ -151,9 +140,6 @@ struct process_context {
- 	struct list_head dmm_rsv_list;
- 	spinlock_t dmm_rsv_lock;
- 
--	/* DSP Heap resources */
--	struct dspheap_res_object *pdspheap_list;
--
- 	/* Stream resources */
- 	struct idr *stream_id;
- };
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspapi-ioctl.h b/drivers/staging/tidspbridge/include/dspbridge/dspapi-ioctl.h
-index 8da5bd8..8ad9ace 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dspapi-ioctl.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dspapi-ioctl.h
-@@ -120,10 +120,6 @@ union trapped_args {
- 
- 	struct {
- 		void *hprocessor;
--	} args_proc_start;
--
--	struct {
--		void *hprocessor;
- 		u32 ul_size;
- 		void *__user *pp_rsv_addr;
- 	} args_proc_rsvmem;
-@@ -165,10 +161,6 @@ union trapped_args {
- 
- 	struct {
- 		void *hprocessor;
--	} args_proc_stop;
--
--	struct {
--		void *hprocessor;
- 		void *pmpu_addr;
- 		u32 ul_size;
- 	} args_proc_invalidatememory;
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/ldr.h b/drivers/staging/tidspbridge/include/dspbridge/ldr.h
-deleted file mode 100644
-index 6a0269c..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/ldr.h
-+++ /dev/null
-@@ -1,29 +0,0 @@
--/*
-- * ldr.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Provide module loading services and symbol export services.
-- *
-- * Notes:
-- *   This service is meant to be used by modules of the DSP/BIOS Bridge
-- *   driver.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef LDR_
--#define LDR_
--
--/* Loader objects: */
--struct ldr_module;
--
--#endif /* LDR_ */
-diff --git a/drivers/staging/tidspbridge/pmgr/cod.c b/drivers/staging/tidspbridge/pmgr/cod.c
-index db29a19..17ea57d 100644
---- a/drivers/staging/tidspbridge/pmgr/cod.c
-+++ b/drivers/staging/tidspbridge/pmgr/cod.c
-@@ -33,9 +33,6 @@
- /*  ----------------------------------- Trace & Debug */
- #include <dspbridge/dbc.h>
- 
--/*  ----------------------------------- OS Adaptation Layer */
--#include <dspbridge/ldr.h>
--
- /*  ----------------------------------- Platform Manager */
- /* Include appropriate loader header file */
- #include <dspbridge/dbll.h>
-@@ -51,7 +48,6 @@ struct cod_manager {
- 	struct dbll_library_obj *base_lib;
- 	bool loaded;		/* Base library loaded? */
- 	u32 ul_entry;
--	struct ldr_module *dll_obj;
- 	struct dbll_fxns fxns;
- 	struct dbll_attrs attrs;
- 	char sz_zl_file[COD_MAXPATHLENGTH];
-@@ -206,8 +202,7 @@ void cod_close(struct cod_libraryobj *lib)
-  *      dynamically loaded object files.
-  *
-  */
--int cod_create(struct cod_manager **mgr, char *str_zl_file,
--		      const struct cod_attrs *attrs)
-+int cod_create(struct cod_manager **mgr, char *str_zl_file)
- {
- 	struct cod_manager *mgr_new;
- 	struct dbll_attrs zl_attrs;
-@@ -219,10 +214,6 @@ int cod_create(struct cod_manager **mgr, char *str_zl_file,
- 	/* assume failure */
- 	*mgr = NULL;
- 
--	/* we don't support non-default attrs yet */
--	if (attrs != NULL)
--		return -ENOSYS;
--
- 	mgr_new = kzalloc(sizeof(struct cod_manager), GFP_KERNEL);
- 	if (mgr_new == NULL)
- 		return -ENOMEM;
-diff --git a/drivers/staging/tidspbridge/pmgr/dev.c b/drivers/staging/tidspbridge/pmgr/dev.c
-index b95cd20..0f10a50 100644
---- a/drivers/staging/tidspbridge/pmgr/dev.c
-+++ b/drivers/staging/tidspbridge/pmgr/dev.c
-@@ -27,9 +27,6 @@
- /*  ----------------------------------- Trace & Debug */
- #include <dspbridge/dbc.h>
- 
--/*  ----------------------------------- OS Adaptation Layer */
--#include <dspbridge/ldr.h>
--
- /*  ----------------------------------- Platform Manager */
- #include <dspbridge/cod.h>
- #include <dspbridge/drv.h>
-@@ -75,7 +72,6 @@ struct dev_object {
- 	struct io_mgr *hio_mgr;	/* IO manager (CHNL, msg_ctrl) */
- 	struct cmm_object *hcmm_mgr;	/* SM memory manager. */
- 	struct dmm_object *dmm_mgr;	/* Dynamic memory manager. */
--	struct ldr_module *module_obj;	/* Bridge Module handle. */
- 	u32 word_size;		/* DSP word size: quick access. */
- 	struct drv_object *hdrv_obj;	/* Driver Object */
- 	/* List of Processors attached to this device */
-@@ -139,7 +135,6 @@ int dev_create_device(struct dev_object **device_obj,
- 			     struct cfg_devnode *dev_node_obj)
- {
- 	struct cfg_hostres *host_res;
--	struct ldr_module *module_obj = NULL;
- 	struct bridge_drv_interface *drv_fxns = NULL;
- 	struct dev_object *dev_obj = NULL;
- 	struct chnl_mgrattrs mgr_attrs;
-@@ -179,7 +174,6 @@ int dev_create_device(struct dev_object **device_obj,
- 		if (dev_obj) {
- 			/* Fill out the rest of the Dev Object structure: */
- 			dev_obj->dev_node_obj = dev_node_obj;
--			dev_obj->module_obj = module_obj;
- 			dev_obj->cod_mgr = NULL;
- 			dev_obj->hchnl_mgr = NULL;
- 			dev_obj->hdeh_mgr = NULL;
-@@ -953,7 +947,7 @@ static int init_cod_mgr(struct dev_object *dev_obj)
- 	DBC_REQUIRE(refs > 0);
- 	DBC_REQUIRE(!dev_obj || (dev_obj->cod_mgr == NULL));
- 
--	status = cod_create(&dev_obj->cod_mgr, sz_dummy_file, NULL);
-+	status = cod_create(&dev_obj->cod_mgr, sz_dummy_file);
- 
- 	return status;
- }
-diff --git a/drivers/staging/tidspbridge/rmgr/dbdcd.c b/drivers/staging/tidspbridge/rmgr/dbdcd.c
-index b76f26c..9e12a2c 100644
---- a/drivers/staging/tidspbridge/rmgr/dbdcd.c
-+++ b/drivers/staging/tidspbridge/rmgr/dbdcd.c
-@@ -134,7 +134,7 @@ int dcd_create_manager(char *sz_zl_dll_name,
- 	DBC_REQUIRE(refs >= 0);
- 	DBC_REQUIRE(dcd_mgr);
- 
--	status = cod_create(&cod_mgr, sz_zl_dll_name, NULL);
-+	status = cod_create(&cod_mgr, sz_zl_dll_name);
- 	if (status)
- 		goto func_end;
- 
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0023-staging-tidspbridge-Remove-unused-typedefs.patch b/patches/dspbridge/0023-staging-tidspbridge-Remove-unused-typedefs.patch
deleted file mode 100644
index ad4518bf81278529ebc03fcf8e7578fbf87d619e..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0023-staging-tidspbridge-Remove-unused-typedefs.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-From f64e0d037d0a6671debacde9d3bec5fa5ec6ef30 Mon Sep 17 00:00:00 2001
-From: Armando Uribe <x0095078@ti.com>
-Date: Fri, 17 Dec 2010 01:18:32 -0600
-Subject: [PATCH 23/25] staging: tidspbridge - Remove unused typedefs
-
-Unsed typedefs are removed, because of there are not
-used or because previous clean ups.
-
-Signed-off-by: Armando Uribe <x0095078@ti.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- .../tidspbridge/include/dspbridge/dbldefs.h        |   81 --------------------
- .../tidspbridge/include/dspbridge/dblldefs.h       |   62 ---------------
- 2 files changed, 0 insertions(+), 143 deletions(-)
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/dbldefs.h
-
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h b/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h
-deleted file mode 100644
-index 5cf9dad..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h
-+++ /dev/null
-@@ -1,81 +0,0 @@
--/*
-- * dbldefs.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef DBLDEFS_
--#define DBLDEFS_
--
--
--/*
-- *  ======== dbl_flags ========
-- *  Specifies whether to load code, data, or symbols
-- */
--typedef s32 dbl_flags;
--
--/*
-- *  ======== dbl_alloc_fxn ========
-- *  Allocate memory function.  Allocate or reserve (if reserved == TRUE)
-- *  "size" bytes of memory from segment "space" and return the address in
-- *  *dsp_address (or starting at *dsp_address if reserve == TRUE). Returns 0 on
-- *  success, or an error code on failure.
-- */
--typedef s32(*dbl_alloc_fxn) (void *hdl, s32 space, u32 size, u32 align,
--			     u32 *dsp_address, s32 seg_id, s32 req,
--			     bool reserved);
--
--/*
-- *  ======== dbl_free_fxn ========
-- *  Free memory function.  Free, or unreserve (if reserved == TRUE) "size"
-- *  bytes of memory from segment "space"
-- */
--typedef bool(*dbl_free_fxn) (void *hdl, u32 addr, s32 space, u32 size,
--			     bool reserved);
--
--/*
-- *  ======== dbl_log_write_fxn ========
-- *  Function to call when writing data from a section, to log the info.
-- *  Can be NULL if no logging is required.
-- */
--typedef int(*dbl_log_write_fxn) (void *handle,
--					struct dbl_sect_info *sect, u32 addr,
--					u32 bytes);
--
--/*
-- *  ======== dbl_sym_lookup ========
-- *  Symbol lookup function - Find the symbol name and return its value.
-- *
-- *  Parameters:
-- *      handle          - Opaque handle
-- *      parg            - Opaque argument.
-- *      name            - Name of symbol to lookup.
-- *      sym             - Location to store address of symbol structure.
-- *
-- *  Returns:
-- *      TRUE:           Success (symbol was found).
-- *      FALSE:          Failed to find symbol.
-- */
--typedef bool(*dbl_sym_lookup) (void *handle, void *parg, void *rmm_handle,
--			       const char *name, struct dbl_symbol ** sym);
--
--/*
-- *  ======== dbl_write_fxn ========
-- *  Write memory function.  Write "n" HOST bytes of memory to segment "mtype"
-- *  starting at address "dsp_address" from the buffer "buf".  The buffer is
-- *  formatted as an array of words appropriate for the DSP.
-- */
--typedef s32(*dbl_write_fxn) (void *hdl, u32 dsp_address, void *buf,
--			     u32 n, s32 mtype);
--
--#endif /* DBLDEFS_ */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h b/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h
-index 81821e5..30e0aa0 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h
-@@ -348,29 +348,6 @@ typedef bool(*dbll_init_fxn) (void);
- typedef int(*dbll_load_fxn) (struct dbll_library_obj *lib,
- 				    dbll_flags flags,
- 				    struct dbll_attrs *attrs, u32 *entry);
--
--/*
-- *  ======== dbll_load_sect ========
-- *  Load a named section from an library (for overlay support).
-- *  Parameters:
-- *      lib             - Handle returned from dbll_open().
-- *      sec_name        - Name of section to load.
-- *      attrs           - Contains write function and handle to pass to it.
-- *  Returns:
-- *      0:        Success.
-- *      -ENXIO:    Section not found.
-- *      -ENOSYS:   Function not implemented.
-- *  Requires:
-- *      Valid lib.
-- *      sec_name != NULL.
-- *      attrs != NULL.
-- *      attrs->write != NULL.
-- *  Ensures:
-- */
--typedef int(*dbll_load_sect_fxn) (struct dbll_library_obj *lib,
--					 char *sz_sect_name,
--					 struct dbll_attrs *attrs);
--
- /*
-  *  ======== dbll_open ========
-  *  dbll_open() returns a library handle that can be used to load/unload
-@@ -421,23 +398,6 @@ typedef int(*dbll_open_fxn) (struct dbll_tar_obj *target, char *file,
- typedef int(*dbll_read_sect_fxn) (struct dbll_library_obj *lib,
- 					 char *name, char *content,
- 					 u32 cont_size);
--
--/*
-- *  ======== dbll_set_attrs ========
-- *  Set the attributes of the target.
-- *  Parameters:
-- *      target          - Handle returned from dbll_create().
-- *      pattrs          - New attributes.
-- *  Returns:
-- *  Requires:
-- *      DBL initialized.
-- *      Valid target.
-- *      pattrs != NULL.
-- *  Ensures:
-- */
--typedef void (*dbll_set_attrs_fxn) (struct dbll_tar_obj *target,
--				    struct dbll_attrs *attrs);
--
- /*
-  *  ======== dbll_unload ========
-  *  Unload library loaded with dbll_load().
-@@ -452,28 +412,6 @@ typedef void (*dbll_set_attrs_fxn) (struct dbll_tar_obj *target,
-  */
- typedef void (*dbll_unload_fxn) (struct dbll_library_obj *library,
- 				 struct dbll_attrs *attrs);
--
--/*
-- *  ======== dbll_unload_sect ========
-- *  Unload a named section from an library (for overlay support).
-- *  Parameters:
-- *      lib             - Handle returned from dbll_open().
-- *      sec_name        - Name of section to load.
-- *      attrs           - Contains free() function and handle to pass to it.
-- *  Returns:
-- *      0:        Success.
-- *      -ENXIO:    Named section not found.
-- *      -ENOSYS
-- *  Requires:
-- *      DBL initialized.
-- *      Valid lib.
-- *      sec_name != NULL.
-- *  Ensures:
-- */
--typedef int(*dbll_unload_sect_fxn) (struct dbll_library_obj *lib,
--					   char *sz_sect_name,
--					   struct dbll_attrs *attrs);
--
- struct dbll_fxns {
- 	dbll_close_fxn close_fxn;
- 	dbll_create_fxn create_fxn;
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0024-staging-tidspbridge-Remove-trivial-header-files.patch b/patches/dspbridge/0024-staging-tidspbridge-Remove-trivial-header-files.patch
deleted file mode 100644
index d230ba9a3d9e3373ee9817cbfc7cc0b2d990ceb5..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0024-staging-tidspbridge-Remove-trivial-header-files.patch
+++ /dev/null
@@ -1,442 +0,0 @@
-From 7cffa2c6f40f993bc4405c5b4a29e1a0ee77826c Mon Sep 17 00:00:00 2001
-From: Armando Uribe <x0095078@ti.com>
-Date: Fri, 17 Dec 2010 01:18:33 -0600
-Subject: [PATCH 24/25] staging: tidspbridge - Remove trivial header files
-
-Remove the header files that contains few declarations
-and can be merged onto more generic headers.
-
-Signed-off-by: Armando Uribe <x0095078@ti.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/core/tiomap3430_pwr.c  |    4 +-
- .../tidspbridge/include/dspbridge/dehdefs.h        |   31 -----------------
- .../staging/tidspbridge/include/dspbridge/dev.h    |    4 +-
- .../staging/tidspbridge/include/dspbridge/disp.h   |   15 ++++++++-
- .../tidspbridge/include/dspbridge/dispdefs.h       |   35 --------------------
- .../staging/tidspbridge/include/dspbridge/drv.h    |    4 ++-
- .../tidspbridge/include/dspbridge/drvdefs.h        |   25 --------------
- .../tidspbridge/include/dspbridge/dspdefs.h        |    4 +-
- .../staging/tidspbridge/include/dspbridge/dspio.h  |    3 +-
- drivers/staging/tidspbridge/include/dspbridge/io.h |   13 +++++++-
- .../staging/tidspbridge/include/dspbridge/io_sm.h  |    7 +++-
- .../staging/tidspbridge/include/dspbridge/iodefs.h |   34 -------------------
- .../staging/tidspbridge/include/dspbridge/node.h   |    2 +-
- .../staging/tidspbridge/include/dspbridge/pwr.h    |    8 ++++-
- .../staging/tidspbridge/include/dspbridge/pwr_sh.h |   29 ----------------
- drivers/staging/tidspbridge/pmgr/io.c              |    1 -
- drivers/staging/tidspbridge/rmgr/drv_interface.c   |    1 -
- drivers/staging/tidspbridge/rmgr/node.c            |    1 -
- 18 files changed, 51 insertions(+), 170 deletions(-)
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/dehdefs.h
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/dispdefs.h
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/drvdefs.h
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/iodefs.h
- delete mode 100644 drivers/staging/tidspbridge/include/dspbridge/pwr_sh.h
-
-diff --git a/drivers/staging/tidspbridge/core/tiomap3430_pwr.c b/drivers/staging/tidspbridge/core/tiomap3430_pwr.c
-index fb9026e..8e2b50f 100644
---- a/drivers/staging/tidspbridge/core/tiomap3430_pwr.c
-+++ b/drivers/staging/tidspbridge/core/tiomap3430_pwr.c
-@@ -29,13 +29,13 @@
- /*  ----------------------------------- Platform Manager */
- #include <dspbridge/brddefs.h>
- #include <dspbridge/dev.h>
--#include <dspbridge/iodefs.h>
-+#include <dspbridge/io.h>
- 
- /* ------------------------------------ Hardware Abstraction Layer */
- #include <hw_defs.h>
- #include <hw_mmu.h>
- 
--#include <dspbridge/pwr_sh.h>
-+#include <dspbridge/pwr.h>
- 
- /*  ----------------------------------- Bridge Driver */
- #include <dspbridge/dspdeh.h>
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dehdefs.h b/drivers/staging/tidspbridge/include/dspbridge/dehdefs.h
-deleted file mode 100644
-index 5341471..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/dehdefs.h
-+++ /dev/null
-@@ -1,31 +0,0 @@
--/*
-- * dehdefs.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Definition for Bridge driver module DEH.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef DEHDEFS_
--#define DEHDEFS_
--
--#include <dspbridge/mbx_sh.h>	/* shared mailbox codes */
--
--/* DEH object manager */
--struct deh_mgr;
--
--/* Magic code used to determine if DSP signaled exception. */
--#define DEH_BASE        MBX_DEH_BASE
--#define DEH_LIMIT       MBX_DEH_LIMIT
--
--#endif /* _DEHDEFS_H */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dev.h b/drivers/staging/tidspbridge/include/dspbridge/dev.h
-index 4d4196b..37d1fff 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dev.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dev.h
-@@ -23,9 +23,9 @@
- #include <dspbridge/chnldefs.h>
- #include <dspbridge/cmm.h>
- #include <dspbridge/cod.h>
--#include <dspbridge/dehdefs.h>
-+#include <dspbridge/dspdeh.h>
- #include <dspbridge/nodedefs.h>
--#include <dspbridge/dispdefs.h>
-+#include <dspbridge/disp.h>
- #include <dspbridge/dspdefs.h>
- #include <dspbridge/dmm.h>
- #include <dspbridge/host_os.h>
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/disp.h b/drivers/staging/tidspbridge/include/dspbridge/disp.h
-index 82bf721..41738c5 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/disp.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/disp.h
-@@ -22,7 +22,20 @@
- #include <dspbridge/dbdefs.h>
- #include <dspbridge/nodedefs.h>
- #include <dspbridge/nodepriv.h>
--#include <dspbridge/dispdefs.h>
-+
-+struct disp_object;
-+
-+/* Node Dispatcher attributes */
-+struct disp_attr {
-+	u32 ul_chnl_offset;	/* Offset of channel ids reserved for RMS */
-+	/* Size of buffer for sending data to RMS */
-+	u32 ul_chnl_buf_size;
-+	int proc_family;	/* eg, 5000 */
-+	int proc_type;		/* eg, 5510 */
-+	void *reserved1;	/* Reserved for future use. */
-+	u32 reserved2;		/* Reserved for future use. */
-+};
-+
- 
- /*
-  *  ======== disp_create ========
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dispdefs.h b/drivers/staging/tidspbridge/include/dspbridge/dispdefs.h
-deleted file mode 100644
-index 946551a..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/dispdefs.h
-+++ /dev/null
-@@ -1,35 +0,0 @@
--/*
-- * dispdefs.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Global DISP constants and types, shared by PROCESSOR, NODE, and DISP.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef DISPDEFS_
--#define DISPDEFS_
--
--struct disp_object;
--
--/* Node Dispatcher attributes */
--struct disp_attr {
--	u32 ul_chnl_offset;	/* Offset of channel ids reserved for RMS */
--	/* Size of buffer for sending data to RMS */
--	u32 ul_chnl_buf_size;
--	int proc_family;	/* eg, 5000 */
--	int proc_type;		/* eg, 5510 */
--	void *reserved1;	/* Reserved for future use. */
--	u32 reserved2;		/* Reserved for future use. */
--};
--
--#endif /* DISPDEFS_ */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/drv.h b/drivers/staging/tidspbridge/include/dspbridge/drv.h
-index 26972ad..bcb2817 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/drv.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/drv.h
-@@ -23,9 +23,11 @@
- 
- #include <dspbridge/devdefs.h>
- 
--#include <dspbridge/drvdefs.h>
- #include <linux/idr.h>
- 
-+/* Bridge Driver Object */
-+struct drv_object;
-+
- /* Provide the DSP Internal memory windows that can be accessed from L3 address
-  * space */
- 
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/drvdefs.h b/drivers/staging/tidspbridge/include/dspbridge/drvdefs.h
-deleted file mode 100644
-index 2920917..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/drvdefs.h
-+++ /dev/null
-@@ -1,25 +0,0 @@
--/*
-- * drvdefs.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Definition of common struct between dspdefs.h and drv.h.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef DRVDEFS_
--#define DRVDEFS_
--
--/* Bridge Driver Object */
--struct drv_object;
--
--#endif /* DRVDEFS_ */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h b/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h
-index 2acbbb3..4eaeb21 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h
-@@ -32,9 +32,9 @@
- #include <dspbridge/brddefs.h>
- #include <dspbridge/cfgdefs.h>
- #include <dspbridge/chnlpriv.h>
--#include <dspbridge/dehdefs.h>
-+#include <dspbridge/dspdeh.h>
- #include <dspbridge/devdefs.h>
--#include <dspbridge/iodefs.h>
-+#include <dspbridge/io.h>
- #include <dspbridge/msgdefs.h>
- 
- /* Handle to Bridge driver's private device context. */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspio.h b/drivers/staging/tidspbridge/include/dspbridge/dspio.h
-index 5c666b8..66b64fa 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/dspio.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/dspio.h
-@@ -24,7 +24,8 @@
- #define DSPIO_
- 
- #include <dspbridge/devdefs.h>
--#include <dspbridge/iodefs.h>
-+#include <dspbridge/io.h>
-+
- 
- extern int bridge_io_create(struct io_mgr **io_man,
- 				   struct dev_object *hdev_obj,
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/io.h b/drivers/staging/tidspbridge/include/dspbridge/io.h
-index da4683c..9615980 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/io.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/io.h
-@@ -22,7 +22,18 @@
- #include <dspbridge/cfgdefs.h>
- #include <dspbridge/devdefs.h>
- 
--#include <dspbridge/iodefs.h>
-+/* IO Objects: */
-+struct io_mgr;
-+
-+/* IO manager attributes: */
-+struct io_attrs {
-+	u8 birq;		/* Channel's I/O IRQ number. */
-+	bool irq_shared;	/* TRUE if the IRQ is shareable. */
-+	u32 word_size;		/* DSP Word size. */
-+	u32 shm_base;		/* Physical base address of shared memory. */
-+	u32 usm_length;		/* Size (in bytes) of shared memory. */
-+};
-+
- 
- /*
-  *  ======== io_create ========
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/io_sm.h b/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
-index 8778ab4..6d26472 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/io_sm.h
-@@ -23,7 +23,12 @@
- #include <dspbridge/_chnl_sm.h>
- #include <dspbridge/host_os.h>
- 
--#include <dspbridge/iodefs.h>
-+#include <dspbridge/io.h>
-+#include <dspbridge/mbx_sh.h>	/* shared mailbox codes */
-+
-+/* Magic code used to determine if DSP signaled exception. */
-+#define DEH_BASE        MBX_DEH_BASE
-+#define DEH_LIMIT       MBX_DEH_LIMIT
- 
- #define IO_INPUT            0
- #define IO_OUTPUT           1
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/iodefs.h b/drivers/staging/tidspbridge/include/dspbridge/iodefs.h
-deleted file mode 100644
-index 31cbc9a..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/iodefs.h
-+++ /dev/null
-@@ -1,34 +0,0 @@
--/*
-- * iodefs.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * System-wide channel objects and constants.
-- *
-- * Copyright (C) 2005-2006 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef IODEFS_
--#define IODEFS_
--
--/* IO Objects: */
--struct io_mgr;
--
--/* IO manager attributes: */
--struct io_attrs {
--	u8 birq;		/* Channel's I/O IRQ number. */
--	bool irq_shared;	/* TRUE if the IRQ is shareable. */
--	u32 word_size;		/* DSP Word size. */
--	u32 shm_base;		/* Physical base address of shared memory. */
--	u32 usm_length;		/* Size (in bytes) of shared memory. */
--};
--
--#endif /* IODEFS_ */
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/node.h b/drivers/staging/tidspbridge/include/dspbridge/node.h
-index 4c5558c..63739c8 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/node.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/node.h
-@@ -22,7 +22,7 @@
- #include <dspbridge/procpriv.h>
- 
- #include <dspbridge/nodedefs.h>
--#include <dspbridge/dispdefs.h>
-+#include <dspbridge/disp.h>
- #include <dspbridge/nldrdefs.h>
- #include <dspbridge/drv.h>
- 
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/pwr.h b/drivers/staging/tidspbridge/include/dspbridge/pwr.h
-index a6dc783..5e3ab21 100644
---- a/drivers/staging/tidspbridge/include/dspbridge/pwr.h
-+++ b/drivers/staging/tidspbridge/include/dspbridge/pwr.h
-@@ -18,7 +18,13 @@
- #define PWR_
- 
- #include <dspbridge/dbdefs.h>
--#include <dspbridge/pwr_sh.h>
-+#include <dspbridge/mbx_sh.h>
-+
-+/* valid sleep command codes that can be sent by GPP via mailbox: */
-+#define PWR_DEEPSLEEP           MBX_PM_DSPIDLE
-+#define PWR_EMERGENCYDEEPSLEEP  MBX_PM_EMERGENCYSLEEP
-+#define PWR_WAKEUP              MBX_PM_DSPWAKEUP
-+
- 
- /*
-  *  ======== pwr_sleep_dsp ========
-diff --git a/drivers/staging/tidspbridge/include/dspbridge/pwr_sh.h b/drivers/staging/tidspbridge/include/dspbridge/pwr_sh.h
-deleted file mode 100644
-index c78a1b1..0000000
---- a/drivers/staging/tidspbridge/include/dspbridge/pwr_sh.h
-+++ /dev/null
-@@ -1,29 +0,0 @@
--/*
-- * pwr_sh.h
-- *
-- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
-- *
-- * Power Manager shared definitions (used on both GPP and DSP sides).
-- *
-- * Copyright (C) 2008 Texas Instruments, Inc.
-- *
-- * This package is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- */
--
--#ifndef PWR_SH_
--#define PWR_SH_
--
--#include <dspbridge/mbx_sh.h>
--
--/* valid sleep command codes that can be sent by GPP via mailbox: */
--#define PWR_DEEPSLEEP           MBX_PM_DSPIDLE
--#define PWR_EMERGENCYDEEPSLEEP  MBX_PM_EMERGENCYSLEEP
--#define PWR_WAKEUP              MBX_PM_DSPWAKEUP
--
--#endif /* PWR_SH_ */
-diff --git a/drivers/staging/tidspbridge/pmgr/io.c b/drivers/staging/tidspbridge/pmgr/io.c
-index 20cbb9f..0e8843f 100644
---- a/drivers/staging/tidspbridge/pmgr/io.c
-+++ b/drivers/staging/tidspbridge/pmgr/io.c
-@@ -31,7 +31,6 @@
- 
- /*  ----------------------------------- This */
- #include <ioobj.h>
--#include <dspbridge/iodefs.h>
- #include <dspbridge/io.h>
- 
- /*  ----------------------------------- Globals */
-diff --git a/drivers/staging/tidspbridge/rmgr/drv_interface.c b/drivers/staging/tidspbridge/rmgr/drv_interface.c
-index 324fcdf..c43c7e3 100644
---- a/drivers/staging/tidspbridge/rmgr/drv_interface.c
-+++ b/drivers/staging/tidspbridge/rmgr/drv_interface.c
-@@ -59,7 +59,6 @@
- #include <dspbridge/chnl.h>
- #include <dspbridge/proc.h>
- #include <dspbridge/dev.h>
--#include <dspbridge/drvdefs.h>
- #include <dspbridge/drv.h>
- 
- #ifdef CONFIG_TIDSPBRIDGE_DVFS
-diff --git a/drivers/staging/tidspbridge/rmgr/node.c b/drivers/staging/tidspbridge/rmgr/node.c
-index b196a7a..27af99d 100644
---- a/drivers/staging/tidspbridge/rmgr/node.c
-+++ b/drivers/staging/tidspbridge/rmgr/node.c
-@@ -64,7 +64,6 @@
- #include <dspbridge/nldr.h>
- 
- #include <dspbridge/drv.h>
--#include <dspbridge/drvdefs.h>
- #include <dspbridge/resourcecleanup.h>
- #include <_tiomap.h>
- 
--- 
-1.7.1
-
diff --git a/patches/dspbridge/0025-staging-tidspbridge-remove-code-referred-by-OPT_ZERO.patch b/patches/dspbridge/0025-staging-tidspbridge-remove-code-referred-by-OPT_ZERO.patch
deleted file mode 100644
index a56d2913ed9c4d60b131c67033859202fa025036..0000000000000000000000000000000000000000
--- a/patches/dspbridge/0025-staging-tidspbridge-remove-code-referred-by-OPT_ZERO.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From ed98b576aaebed67265a72057bd949444dab8d80 Mon Sep 17 00:00:00 2001
-From: Ramos Falcon, Ernesto <ernesto@ti.com>
-Date: Mon, 20 Dec 2010 21:23:08 +0000
-Subject: [PATCH 25/25] staging: tidspbridge: remove code referred by OPT_ZERO_COPY_LOADER
-
-Remove code referred by OPT_ZERO_COPY_LOADER since it is
-not used.
-
-Signed-off-by: Ernesto Ramos <ernesto@ti.com>
-Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
----
- drivers/staging/tidspbridge/dynload/cload.c |   60 +++++++++------------------
- 1 files changed, 20 insertions(+), 40 deletions(-)
-
-diff --git a/drivers/staging/tidspbridge/dynload/cload.c b/drivers/staging/tidspbridge/dynload/cload.c
-index c85a5e8..d0cd445 100644
---- a/drivers/staging/tidspbridge/dynload/cload.c
-+++ b/drivers/staging/tidspbridge/dynload/cload.c
-@@ -1131,9 +1131,6 @@ static void dload_data(struct dload_state *dlthis)
- 	u16 curr_sect;
- 	struct doff_scnhdr_t *sptr = dlthis->sect_hdrs;
- 	struct ldr_section_info *lptr = dlthis->ldr_sections;
--#ifdef OPT_ZERO_COPY_LOADER
--	bool zero_copy = false;
--#endif
- 	u8 *dest;
- 
- 	struct {
-@@ -1192,17 +1189,6 @@ static void dload_data(struct dload_state *dlthis)
- 					return;
- 				}
- 				dest = ibuf.bufr;
--#ifdef OPT_ZERO_COPY_LOADER
--				zero_copy = false;
--				if (!dload_check_type(sptr, DLOAD_CINIT) {
--					dlthis->myio->writemem(dlthis->myio,
--							       &dest,
--							       lptr->load_addr +
--							       image_offset,
--							       lptr, 0);
--					zero_copy = (dest != ibuf.bufr);
--				}
--#endif
- 				/* End of determination */
- 
- 				if (dlthis->strm->read_buffer(dlthis->strm,
-@@ -1266,33 +1252,27 @@ static void dload_data(struct dload_state *dlthis)
- 							    &ibuf.ipacket);
- 						cinit_processed = true;
- 					} else {
--#ifdef OPT_ZERO_COPY_LOADER
--						if (!zero_copy) {
--#endif
--							/* FIXME */
--							if (!dlthis->myio->
--							    writemem(dlthis->
--								myio,
--								ibuf.bufr,
--								lptr->
--								load_addr +
--								image_offset,
--								lptr,
--								BYTE_TO_HOST
--								(ibuf.
--								ipacket.
--								packet_size))) {
--								DL_ERROR
--								  ("Write to "
--								  FMT_UI32
--								  " failed",
--								  lptr->
--								  load_addr +
--								  image_offset);
--							}
--#ifdef OPT_ZERO_COPY_LOADER
-+						/* FIXME */
-+						if (!dlthis->myio->
-+						    writemem(dlthis->
-+							myio,
-+							ibuf.bufr,
-+							lptr->
-+							load_addr +
-+							image_offset,
-+							lptr,
-+							BYTE_TO_HOST
-+							(ibuf.
-+							ipacket.
-+							packet_size))) {
-+							DL_ERROR
-+							  ("Write to "
-+							  FMT_UI32
-+							  " failed",
-+							  lptr->
-+							  load_addr +
-+							  image_offset);
- 						}
--#endif
- 					}
- 				}
- 				image_offset +=
--- 
-1.7.1
-
diff --git a/patches/no_devtmps-defconfig b/patches/no_devtmps-defconfig
index 97e6af5fdabf51587ee451a6be255c0bf2c36c39..f6f2fe5aa70f578b37e233534fb2e662eb1c03fc 100644
--- a/patches/no_devtmps-defconfig
+++ b/patches/no_devtmps-defconfig
@@ -3222,7 +3222,15 @@ CONFIG_ZRAM=m
 # CONFIG_LIRC_STAGING is not set
 # CONFIG_SMB_FS is not set
 # CONFIG_EASYCAP is not set
-# CONFIG_TIDSPBRIDGE is not set
+CONFIG_TIDSPBRIDGE=m
+CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000
+# CONFIG_TIDSPBRIDGE_DEBUG is not set
+CONFIG_TIDSPBRIDGE_RECOVERY=y
+# CONFIG_TIDSPBRIDGE_CACHE_LINE_CHECK is not set
+CONFIG_TIDSPBRIDGE_WDT3=y
+CONFIG_TIDSPBRIDGE_WDT_TIMEOUT=5
+# CONFIG_TIDSPBRIDGE_NTFY_PWRERR is not set
+# CONFIG_TIDSPBRIDGE_BACKTRACE is not set
 # CONFIG_WESTBRIDGE is not set
 CONFIG_WESTBRIDGE_HAL_SELECTED=y
 CONFIG_MACH_OMAP3_WESTBRIDGE_AST_PNAND_HAL=y
diff --git a/version.sh b/version.sh
index be3389b8d817312d458ceeed89e9df1d0a54cf55..0ddb3996a12e8c04d83dace8ca10d3d782e3b863 100644
--- a/version.sh
+++ b/version.sh
@@ -7,7 +7,7 @@ KERNEL_REL=2.6.37
 #PRE_RC=2.6.37-git18
 RC_KERNEL=2.6.38
 RC_PATCH=-rc2
-ABI=1.1
+ABI=1.2
 
 if [ "${NO_DEVTMPS}" ] ; then
 BUILD=dold${ABI}