diff --git a/arch/arm/crt0.S b/arch/arm/crt0.S
index ce823c1..7f1ad16 100644
--- a/arch/arm/crt0.S
+++ b/arch/arm/crt0.S
@@ -187,14 +187,3 @@
 abort_stack:
 	.skip 1024
 abort_stack_top:
-
-.rodata:
-.align 2
-
-/* define the heap end as read-only data containing the end defined in the
- * linker script. other archs that use dynamic memory length discovery can make
- * this read-write and update it during init.
- */
-.global _heap_end
-_heap_end:
-	.int _end_of_ram
diff --git a/dev/ssbi/ssbi.c b/dev/ssbi/ssbi.c
index 09ca4c6..5d16935 100644
--- a/dev/ssbi/ssbi.c
+++ b/dev/ssbi/ssbi.c
@@ -79,7 +79,7 @@
 	/*
 	 * Use remote spin locks since SSBI2 controller is shared with nonHLOS proc
 	 */
-#ifdef TARGET_USES_RSPIN_LOCK
+#if TARGET_USES_RSPIN_LOCK
 	remote_spin_lock(rlock);
 #endif
 	read_cmd = SSBI_CMD_READ(addr);
@@ -109,7 +109,7 @@
 		len--;
 	}
 end:
-#ifdef TARGET_USES_RSPIN_LOCK
+#if TARGET_USES_RSPIN_LOCK
 	remote_spin_unlock(rlock);
 #endif
 	return ret;
@@ -128,7 +128,7 @@
 	/*
 	 * Use remote spin locks since SSBI2 controller is shared with nonHLOS proc
 	 */
-#ifdef TARGET_USES_RSPIN_LOCK
+#if TARGET_USES_RSPIN_LOCK
 	remote_spin_lock(rlock);
 #endif
 	mode2 = readl(MSM_SSBI_BASE + SSBI2_MODE2);
@@ -156,10 +156,10 @@
 		len--;
 	}
 end:
-#ifdef TARGET_USES_RSPIN_LOCK
+#if TARGET_USES_RSPIN_LOCK
 	remote_spin_unlock(rlock);
 #endif
-	return 0;
+	return ret;
 }
 
 int pa1_ssbi2_read_bytes(unsigned char  *buffer, unsigned short length,
diff --git a/include/stdlib.h b/include/stdlib.h
index fb1e1de..3052dab 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -34,6 +34,7 @@
 unsigned int atoui(const char *num);
 long atol(const char *num);
 unsigned long atoul(const char *num);
+int itoa(int num, unsigned char* str, int len, int base);
 
 #define MIN(a, b) (((a) < (b)) ? (a) : (b))
 #define MAX(a, b) (((a) > (b)) ? (a) : (b))
@@ -46,4 +47,3 @@
 	uint8_t __##var[(size) + CACHE_LINE]; uint8_t *var = (uint8_t *)(ROUNDUP((addr_t)__##var, CACHE_LINE))
 
 #endif
-
diff --git a/include/string.h b/include/string.h
index 3dccd92..661e746 100644
--- a/include/string.h
+++ b/include/string.h
@@ -54,6 +54,7 @@
 int         strcoll(const char *s1, const char *s2) __PURE;
 size_t      strxfrm(char *dest, const char *src, size_t n) __PURE;
 char       *strdup(const char *str) __MALLOC;
+void        strrev(unsigned char *str) __PURE;
 
 #ifdef __cplusplus
 } /* extern "C" */
diff --git a/lib/heap/heap.c b/lib/heap/heap.c
index 71b6fa4..a3a35fb 100644
--- a/lib/heap/heap.c
+++ b/lib/heap/heap.c
@@ -52,10 +52,10 @@
 extern int _end;
 
 // end of memory
-extern int _heap_end;
+extern int _end_of_ram;
 
 #define HEAP_START ((unsigned long)&_end)
-#define HEAP_LEN ((size_t)_heap_end - (size_t)&_end)
+#define HEAP_LEN ((size_t)&_end_of_ram - (size_t)&_end)
 #endif
 
 struct free_heap_chunk {
diff --git a/lib/libc/itoa.c b/lib/libc/itoa.c
new file mode 100644
index 0000000..6f68565
--- /dev/null
+++ b/lib/libc/itoa.c
@@ -0,0 +1,63 @@
+/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ *  with the distribution.
+ *   * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+int
+itoa(int num, unsigned char* str, int len, int base)
+{
+	int sum = num;
+	int i = 0;
+	int digit;
+
+	if (len == 0)
+		return -1;
+
+	do
+	{
+		digit = sum % base;
+
+		if (digit < 0xA)
+			str[i++] = '0' + digit;
+		else
+			str[i++] = 'A' + digit - 0xA;
+
+		sum /= base;
+
+	}while (sum && (i < (len - 1)));
+
+	if (i == (len - 1) && sum)
+		return -1;
+
+	str[i] = '\0';
+	strrev(str);
+
+	return 0;
+}
diff --git a/lib/libc/rules.mk b/lib/libc/rules.mk
index e250cfe..0dd0d02 100644
--- a/lib/libc/rules.mk
+++ b/lib/libc/rules.mk
@@ -3,6 +3,7 @@
 OBJS += \
 	$(LOCAL_DIR)/atoi.o \
 	$(LOCAL_DIR)/ctype.o \
+	$(LOCAL_DIR)/itoa.o \
 	$(LOCAL_DIR)/printf.o \
 	$(LOCAL_DIR)/malloc.o \
 	$(LOCAL_DIR)/rand.o \
@@ -17,4 +18,3 @@
 	$(LOCAL_DIR)/atexit.o \
 	$(LOCAL_DIR)/pure_virtual.o
 endif
-
diff --git a/lib/libc/string/rules.mk b/lib/libc/string/rules.mk
index 1d038e6..fc1ceb2 100644
--- a/lib/libc/string/rules.mk
+++ b/lib/libc/string/rules.mk
@@ -25,6 +25,7 @@
 	strnlen \
 	strpbrk \
 	strrchr \
+	strrev \
 	strspn \
 	strstr \
 	strtok \
@@ -39,4 +40,3 @@
 
 OBJS += \
 	$(addprefix $(LIBC_STRING_C_DIR)/,$(addsuffix .o,$(C_STRING_OPS)))
-
diff --git a/lib/libc/string/strrev.c b/lib/libc/string/strrev.c
new file mode 100644
index 0000000..a961d79
--- /dev/null
+++ b/lib/libc/string/strrev.c
@@ -0,0 +1,46 @@
+/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ *  with the distribution.
+ *   * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <string.h>
+#include <sys/types.h>
+
+void
+strrev(unsigned char *str)
+{
+	int i;
+	int j;
+	unsigned char a;
+	unsigned len = strlen((const char *)str);
+
+	for (i = 0, j = len - 1; i < j; i++, j--)
+	{
+		a = str[i];
+		str[i] = str[j];
+		str[j] = a;
+	}
+}
diff --git a/platform/copper/acpuclock.c b/platform/copper/acpuclock.c
index 3911572..8a9f96d 100644
--- a/platform/copper/acpuclock.c
+++ b/platform/copper/acpuclock.c
@@ -153,11 +153,15 @@
 {
 	int ret;
 
-	/* Enable blsp_uart_clk */
-	/* TODO: Find out correct frequency and UART_DM_CLK_RX_TX_BIT_RATE
-	 * combination for generating 115200 baud rate.
-	 */
-	ret = clk_get_set_enable("uart1_core_clk", 7372800, 1);
+
+    ret = clk_get_set_enable("uart2_iface_clk", 0, 1);
+    if(ret)
+	{
+		dprintf(CRITICAL, "failed to set uart2_iface_clk ret = %d\n", ret);
+		ASSERT(0);
+	}
+
+    ret = clk_get_set_enable("uart2_core_clk", 7372800, 1);
 	if(ret)
 	{
 		dprintf(CRITICAL, "failed to set uart1_core_clk ret = %d\n", ret);
diff --git a/platform/copper/copper-clock.c b/platform/copper/copper-clock.c
index 7fd15bb..ed7ace2 100644
--- a/platform/copper/copper-clock.c
+++ b/platform/copper/copper-clock.c
@@ -77,6 +77,11 @@
 	.is_enabled = pll_vote_clk_is_enabled,
 };
 
+static struct clk_ops clk_ops_vote =
+{
+	.enable     = clock_lib2_vote_clk_enable,
+	.disable    = clock_lib2_vote_clk_disable,
+};
 
 /* Clock Sources */
 static struct fixed_clk cxo_clk_src =
@@ -176,61 +181,43 @@
 	F_END
 };
 
-static struct rcg_clk blsp1_uart1_apps_clk_src =
+static struct rcg_clk blsp1_uart2_apps_clk_src =
 {
-	.cmd_reg      = (uint32_t *) BLSP1_UART1_APPS_CMD_RCGR,
-	.cfg_reg      = (uint32_t *) BLSP1_UART1_APPS_CFG_RCGR,
-	.m_reg        = (uint32_t *) BLSP1_UART1_APPS_M,
-	.n_reg        = (uint32_t *) BLSP1_UART1_APPS_N,
-	.d_reg        = (uint32_t *) BLSP1_UART1_APPS_D,
+	.cmd_reg      = (uint32_t *) BLSP1_UART2_APPS_CMD_RCGR,
+	.cfg_reg      = (uint32_t *) BLSP1_UART2_APPS_CFG_RCGR,
+	.m_reg        = (uint32_t *) BLSP1_UART2_APPS_M,
+	.n_reg        = (uint32_t *) BLSP1_UART2_APPS_N,
+	.d_reg        = (uint32_t *) BLSP1_UART2_APPS_D,
 
 	.set_rate     = clock_lib2_rcg_set_rate_mnd,
 	.freq_tbl     = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 	.current_freq = &rcg_dummy_freq,
 
 	.c = {
-		.dbg_name = "blsp1_uart1_apps_clk",
+		.dbg_name = "blsp1_uart2_apps_clk",
 		.ops      = &clk_ops_rcg_mnd,
 	},
 };
 
-static struct rcg_clk blsp1_uart3_apps_clk_src =
+static struct branch_clk gcc_blsp1_uart2_apps_clk =
 {
-	.cmd_reg      = (uint32_t *) BLSP1_UART3_APPS_CMD_RCGR,
-	.cfg_reg      = (uint32_t *) BLSP1_UART3_APPS_CFG_RCGR,
-	.m_reg        = (uint32_t *) BLSP1_UART3_APPS_M,
-	.n_reg        = (uint32_t *) BLSP1_UART3_APPS_N,
-	.d_reg        = (uint32_t *) BLSP1_UART3_APPS_D,
-
-	.set_rate     = clock_lib2_rcg_set_rate_mnd,
-	.freq_tbl     = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
-	.current_freq = &rcg_dummy_freq,
+	.cbcr_reg     = (uint32_t *) BLSP1_UART2_APPS_CBCR,
+	.parent       = &blsp1_uart2_apps_clk_src.c,
 
 	.c = {
-		.dbg_name = "blsp1_uart3_apps_clk",
-		.ops      = &clk_ops_rcg_mnd,
-	},
-};
-
-static struct branch_clk gcc_blsp1_uart1_apps_clk =
-{
-	.cbcr_reg     = (uint32_t *) BLSP1_UART1_APPS_CBCR,
-	.parent       = &blsp1_uart1_apps_clk_src.c,
-
-	.c = {
-		.dbg_name = "gcc_blsp1_uart1_apps_clk",
+		.dbg_name = "gcc_blsp1_uart2_apps_clk",
 		.ops      = &clk_ops_branch,
 	},
 };
 
-static struct branch_clk gcc_blsp1_uart3_apps_clk =
-{
-	.cbcr_reg     = (uint32_t *) BLSP1_UART3_APPS_CBCR,
-	.parent       = &blsp1_uart3_apps_clk_src.c,
+static struct vote_clk gcc_blsp1_ahb_clk = {
+	.cbcr_reg     = (uint32_t *) BLSP1_AHB_CBCR,
+	.vote_reg     = APCS_CLOCK_BRANCH_ENA_VOTE,
+	.en_mask      = BIT(17),
 
 	.c = {
-		.dbg_name = "gcc_blsp1_uart3_apps_clk",
-		.ops      = &clk_ops_branch,
+		.dbg_name = "gcc_blsp1_ahb_clk",
+		.ops      = &clk_ops_vote,
 	},
 };
 
@@ -285,8 +272,8 @@
 	CLK_LOOKUP("sdc1_iface_clk", gcc_sdcc1_ahb_clk.c),
 	CLK_LOOKUP("sdc1_core_clk",  gcc_sdcc1_apps_clk.c),
 
-	CLK_LOOKUP("uart1_core_clk", gcc_blsp1_uart1_apps_clk.c),
-	CLK_LOOKUP("uart3_core_clk", gcc_blsp1_uart3_apps_clk.c),
+	CLK_LOOKUP("uart2_iface_clk", gcc_blsp1_ahb_clk.c),
+	CLK_LOOKUP("uart2_core_clk",  gcc_blsp1_uart2_apps_clk.c),
 
 	CLK_LOOKUP("usb_iface_clk",  gcc_usb_hs_ahb_clk.c),
 	CLK_LOOKUP("usb_core_clk",   gcc_usb_hs_system_clk.c),
diff --git a/platform/copper/gpio.c b/platform/copper/gpio.c
index 86b9e40..806aab4 100644
--- a/platform/copper/gpio.c
+++ b/platform/copper/gpio.c
@@ -54,9 +54,11 @@
 /* Configure gpio for blsp uart 2 */
 void gpio_config_uart_dm(uint8_t id)
 {
-	gpio_tlmm_config(0, 2, GPIO_OUTPUT, GPIO_NO_PULL,
+    /* configure rx gpio */
+	gpio_tlmm_config(5, 2, GPIO_INPUT, GPIO_NO_PULL,
 				GPIO_8MA, GPIO_DISABLE);
 
-	gpio_tlmm_config(1, 2, GPIO_INPUT, GPIO_NO_PULL,
+    /* configure tx gpio */
+	gpio_tlmm_config(4, 2, GPIO_OUTPUT, GPIO_NO_PULL,
 				GPIO_8MA, GPIO_DISABLE);
 }
diff --git a/platform/copper/include/platform/clock.h b/platform/copper/include/platform/clock.h
index 0aa8604..7d59b0c 100644
--- a/platform/copper/include/platform/clock.h
+++ b/platform/copper/include/platform/clock.h
@@ -32,7 +32,7 @@
 #include <clock.h>
 #include <clock_lib2.h>
 
-#define UART_DM_CLK_RX_TX_BIT_RATE 0xFF
+#define UART_DM_CLK_RX_TX_BIT_RATE 0xCC
 
 void platform_clock_init(void);
 
diff --git a/platform/copper/include/platform/iomap.h b/platform/copper/include/platform/iomap.h
index d48c7c9..c26f1b5 100644
--- a/platform/copper/include/platform/iomap.h
+++ b/platform/copper/include/platform/iomap.h
@@ -83,7 +83,7 @@
 #define SPMI_GENI_BASE              (SPMI_BASE + 0xA000)
 #define SPMI_PIC_BASE               (SPMI_BASE + 0xB000)
 
-#define TLMM_BASE_ADDR              0xFD500000
+#define TLMM_BASE_ADDR              0xFD510000
 #define GPIO_CONFIG_ADDR(x)         (TLMM_BASE_ADDR + 0x1000 + (x)*0x10)
 #define GPIO_IN_OUT_ADDR(x)         (TLMM_BASE_ADDR + 0x1004 + (x)*0x10)
 
@@ -93,6 +93,7 @@
 /* GPLL */
 #define GPLL0_STATUS                (CLK_CTL_BASE + 0x001C)
 #define APCS_GPLL_ENA_VOTE          (CLK_CTL_BASE + 0x1480)
+#define APCS_CLOCK_BRANCH_ENA_VOTE  (CLK_CTL_BASE + 0x1484)
 
 /* SDCC */
 #define SDCC1_BCR                   (CLK_CTL_BASE + 0x4C0) /* block reset */
@@ -106,19 +107,13 @@
 #define SDCC1_D                     (CLK_CTL_BASE + 0x4E0) /* d */
 
 /* UART */
-#define BLSP1_UART1_APPS_CBCR       (CLK_CTL_BASE + 0x684)
-#define BLSP1_UART1_APPS_CMD_RCGR   (CLK_CTL_BASE + 0x68C)
-#define BLSP1_UART1_APPS_CFG_RCGR   (CLK_CTL_BASE + 0x690)
-#define BLSP1_UART1_APPS_M          (CLK_CTL_BASE + 0x694)
-#define BLSP1_UART1_APPS_N          (CLK_CTL_BASE + 0x698)
-#define BLSP1_UART1_APPS_D          (CLK_CTL_BASE + 0x69C)
-
-#define BLSP1_UART3_APPS_CBCR       (CLK_CTL_BASE + 0x784)
-#define BLSP1_UART3_APPS_CMD_RCGR   (CLK_CTL_BASE + 0x78C)
-#define BLSP1_UART3_APPS_CFG_RCGR   (CLK_CTL_BASE + 0x790)
-#define BLSP1_UART3_APPS_M          (CLK_CTL_BASE + 0x794)
-#define BLSP1_UART3_APPS_N          (CLK_CTL_BASE + 0x798)
-#define BLSP1_UART3_APPS_D          (CLK_CTL_BASE + 0x79C)
+#define BLSP1_AHB_CBCR              (CLK_CTL_BASE + 0x5C4)
+#define BLSP1_UART2_APPS_CBCR       (CLK_CTL_BASE + 0x704)
+#define BLSP1_UART2_APPS_CMD_RCGR   (CLK_CTL_BASE + 0x70C)
+#define BLSP1_UART2_APPS_CFG_RCGR   (CLK_CTL_BASE + 0x710)
+#define BLSP1_UART2_APPS_M          (CLK_CTL_BASE + 0x714)
+#define BLSP1_UART2_APPS_N          (CLK_CTL_BASE + 0x718)
+#define BLSP1_UART2_APPS_D          (CLK_CTL_BASE + 0x71C)
 
 /* USB */
 #define USB_HS_SYSTEM_CBCR          (CLK_CTL_BASE + 0x484)
diff --git a/platform/msm_shared/clock_lib2.c b/platform/msm_shared/clock_lib2.c
index 0aa405c..645755c 100644
--- a/platform/msm_shared/clock_lib2.c
+++ b/platform/msm_shared/clock_lib2.c
@@ -191,3 +191,39 @@
 
 	clock_lib2_rcg_update_config(rclk);
 }
+
+/*=============== Vote clock ops =============*/
+
+/* Vote clock enable */
+int clock_lib2_vote_clk_enable(struct clk *c)
+{
+	uint32_t vote_regval;
+	uint32_t val;
+	struct vote_clk *vclk = to_local_vote_clk(c);
+
+	vote_regval = readl(vclk->vote_reg);
+	vote_regval |= vclk->en_mask;
+	writel_relaxed(vote_regval, vclk->vote_reg);
+	do {
+		val = readl(vclk->cbcr_reg);
+		val &= BRANCH_CHECK_MASK;
+	}
+	/*  wait until status shows it is enabled */
+	while((val != BRANCH_ON_VAL) && (val != BRANCH_NOC_FSM_ON_VAL));
+
+	return 0;
+}
+
+/* Vote clock disable */
+void clock_lib2_vote_clk_disable(struct clk *c)
+{
+	uint32_t vote_regval;
+	struct vote_clk *vclk = to_local_vote_clk(c);
+
+	vote_regval = readl(vclk->vote_reg);
+	vote_regval &= ~vclk->en_mask;
+    writel_relaxed(vote_regval, vclk->vote_reg);
+
+    /* wait until status shows it is disabled */
+	while(!(readl(vclk->cbcr_reg) & CBCR_BRANCH_OFF_BIT));
+}
diff --git a/platform/msm_shared/include/clock_lib2.h b/platform/msm_shared/include/clock_lib2.h
index 0a82c51..2f6deb7 100644
--- a/platform/msm_shared/include/clock_lib2.h
+++ b/platform/msm_shared/include/clock_lib2.h
@@ -62,6 +62,9 @@
 /* Branch Clock Bits */
 #define CBCR_BRANCH_ENABLE_BIT  BIT(0)
 #define CBCR_BRANCH_OFF_BIT     BIT(31)
+#define BRANCH_CHECK_MASK       BM(31, 28)
+#define BRANCH_ON_VAL           BVAL(31, 28, 0x0)
+#define BRANCH_NOC_FSM_ON_VAL   BVAL(31, 28, 0x2)
 
 /* Root Clock Bits */
 #define CMD_UPDATE_BIT          BIT(0)
@@ -138,6 +141,16 @@
 	struct clk c;
 };
 
+/* Vote Clock */
+struct vote_clk {
+
+	uint32_t *const cbcr_reg;
+	uint32_t *const vote_reg;
+	uint32_t en_mask;
+
+    struct clk c;
+};
+
 static inline struct rcg_clk *to_rcg_clk(struct clk *clk)
 {
 	return container_of(clk, struct rcg_clk, c);
@@ -148,6 +161,11 @@
 	return container_of(clk, struct branch_clk, c);
 }
 
+static inline struct vote_clk *to_local_vote_clk(struct clk *clk)
+{
+	return container_of(clk, struct vote_clk, c);
+}
+
 /* RCG clock functions */
 int  clock_lib2_rcg_enable(struct clk *c);
 int  clock_lib2_rcg_set_rate(struct clk *c, unsigned rate);
@@ -163,4 +181,7 @@
 void clock_lib2_branch_clk_disable(struct clk *clk);
 int  clock_lib2_branch_set_rate(struct clk *c, unsigned rate);
 
+/* Vote clock functions*/
+int clock_lib2_vote_clk_enable(struct clk *c);
+void clock_lib2_vote_clk_disable(struct clk *c);
 #endif
diff --git a/platform/msm_shared/mmc.c b/platform/msm_shared/mmc.c
index 0f70b53..b504c35 100644
--- a/platform/msm_shared/mmc.c
+++ b/platform/msm_shared/mmc.c
@@ -2659,45 +2659,49 @@
 	unsigned int mmc_count = 0;
 	unsigned int write_error = MMC_BOOT_MCI_STAT_DATA_CRC_FAIL |
 	    MMC_BOOT_MCI_STAT_DATA_TIMEOUT | MMC_BOOT_MCI_STAT_TX_UNDRUN;
+	unsigned int count = 0;
+	unsigned int sz = 0;
 
 	/* Write the transfer data to SDCC3 FIFO */
 	do {
-		mmc_ret = MMC_BOOT_E_SUCCESS;
 		mmc_status = readl(MMC_BOOT_MCI_STATUS);
 
-		if (mmc_status & write_error) {
-			mmc_ret = mmc_boot_status_error(mmc_status);
-			break;
-		}
+		/* Bytes left to write */
+		count = data_len - mmc_count;
 
-		/* Write the data in MCI_FIFO register as long as TXFIFO_FULL bit of
-		   MCI_STATUS register is 0. Continue the writes until the whole
-		   transfer data is written. */
-		if (((data_len - mmc_count) >= MMC_BOOT_MCI_FIFO_SIZE / 2) &&
-		    (mmc_status & MMC_BOOT_MCI_STAT_TX_FIFO_HFULL)) {
-			for (int i = 0; i < MMC_BOOT_MCI_HFIFO_COUNT; i++) {
-				/* FIFO contains 16 32-bit data buffer on 16 sequential addresses */
-				writel(*mmc_ptr, MMC_BOOT_MCI_FIFO +
-				       (mmc_count % MMC_BOOT_MCI_FIFO_SIZE));
+		/* Break if whole data is transferred */
+		if (!count)
+			break;
+
+		/* Write half FIFO or less (remaining) words in MCI_FIFO as long as either
+		   TX_FIFO_EMPTY or TX_FIFO_HFULL bits of MCI_STATUS register are set. */
+		if ((mmc_status & MMC_BOOT_MCI_STAT_TX_FIFO_EMPTY) ||
+			(mmc_status & MMC_BOOT_MCI_STAT_TX_FIFO_HFULL)) {
+
+			/* Write minimum of half FIFO and remaining words */
+			sz = ((count >> 2) >  MMC_BOOT_MCI_HFIFO_COUNT) \
+				 ? MMC_BOOT_MCI_HFIFO_COUNT : (count >> 2);
+
+			for (int i = 0; i < sz; i++) {
+				writel(*mmc_ptr, MMC_BOOT_MCI_FIFO);
 				mmc_ptr++;
 				/* increase mmc_count by word size */
 				mmc_count += sizeof(unsigned int);
 			}
-
-		} else if (!(mmc_status & MMC_BOOT_MCI_STAT_TX_FIFO_FULL)
-			   && (mmc_count != data_len)) {
-			/* FIFO contains 16 32-bit data buffer on 16 sequential addresses */
-			writel(*mmc_ptr, MMC_BOOT_MCI_FIFO +
-			       (mmc_count % MMC_BOOT_MCI_FIFO_SIZE));
-			mmc_ptr++;
-			/* increase mmc_count by word size */
-			mmc_count += sizeof(unsigned int);
-		} else if ((mmc_status & MMC_BOOT_MCI_STAT_DATA_END)) {
-			break;	//success
 		}
-
 	}
 	while (1);
+
+	do
+	{
+		mmc_status = readl(MMC_BOOT_MCI_STATUS);
+		if (mmc_status & write_error) {
+			mmc_ret = mmc_boot_status_error(mmc_status);
+			break;
+		}
+	}
+	while (!(mmc_status & MMC_BOOT_MCI_STAT_DATA_END));
+
 	return mmc_ret;
 }
 
diff --git a/project/copper.mk b/project/copper.mk
index 79681f0..35e2c15 100644
--- a/project/copper.mk
+++ b/project/copper.mk
@@ -9,7 +9,7 @@
 DEBUG := 1
 
 #DEFINES += WITH_DEBUG_DCC=1
-#DEFINES += WITH_DEBUG_UART=1
+DEFINES += WITH_DEBUG_UART=1
 #DEFINES += WITH_DEBUG_FBCON=1
 DEFINES += DEVICE_TREE=1
 #DEFINES += MMC_BOOT_BAM=1
diff --git a/target/copper/atags.c b/target/copper/atags.c
deleted file mode 100644
index 174ae77..0000000
--- a/target/copper/atags.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* Copyright (c) 2009-2012, Code Aurora Forum. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Code Aurora nor
- *       the names of its contributors may be used to endorse or promote
- *       products derived from this software without specific prior written
- *       permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#if !DEVICE_TREE /* If not using device tree */
-
-#include <reg.h>
-#include <debug.h>
-#include <smem.h>
-#include <platform/iomap.h>
-#include <stdint.h>
-
-#define SIZE_1M             (1024 * 1024)
-#define SIZE_2M             (2 * SIZE_1M)
-#define SIZE_256M           (256 * SIZE_1M)
-#define SIZE_512M           (512 * SIZE_1M)
-
-#define ATAG_MEM            0x54410002
-
-typedef struct {
-	uint32_t size;
-	uint32_t start_addr;
-}mem_info;
-
-
-mem_info copper_default_first_512M[] = {
-	{	.size = (250 * SIZE_1M),
-		.start_addr = SDRAM_START_ADDR
-	},
-	{	.size = (240 * SIZE_1M),
-		.start_addr = SDRAM_START_ADDR +
-				(16 * SIZE_1M) +
-				(256 * SIZE_1M)
-	}
-};
-
-unsigned *target_mem_atag_create(unsigned *ptr, uint32_t size, uint32_t addr)
-{
-    *ptr++ = 4;
-    *ptr++ = ATAG_MEM;
-    *ptr++ = size;
-    *ptr++ = addr;
-
-    return ptr;
-}
-
-
-unsigned *target_atag_create(unsigned *ptr,
-	mem_info usable_mem_map[], unsigned num_regions)
-{
-	unsigned int i;
-
-	ASSERT(num_regions);
-
-	dprintf(SPEW, "Number of HLOS regions in 1st bank = %u\n", num_regions);
-
-	for (i = 0; i < num_regions; i++)
-	{
-		ptr = target_mem_atag_create(ptr,
-			usable_mem_map[i].size,
-			usable_mem_map[i].start_addr);
-	}
-	return ptr;
-}
-
-unsigned *target_atag_mem(unsigned *ptr)
-{
-    struct smem_ram_ptable ram_ptable;
-    uint8_t i = 0;
-
-	/* Make sure RAM partition table is initialized */
-	ASSERT(smem_ram_ptable_init(&ram_ptable));
-
-	for (i = 0; i < ram_ptable.len; i++)
-	{
-		if (ram_ptable.parts[i].category == SDRAM &&
-			(ram_ptable.parts[i].type == SYS_MEMORY) &&
-			(ram_ptable.parts[i].start == SDRAM_START_ADDR))
-		{
-			ASSERT(ram_ptable.parts[i].size >= SIZE_512M);
-
-			if (ram_ptable.parts[i].start == SDRAM_START_ADDR)
-				ptr = target_atag_create(ptr,
-					copper_default_first_512M,
-					ARRAY_SIZE(copper_default_first_512M));
-
-		}
-
-		/* Pass along all other usable memory regions to Linux */
-		if (ram_ptable.parts[i].category == SDRAM &&
-			(ram_ptable.parts[i].type == SYS_MEMORY) &&
-			(ram_ptable.parts[i].start != SDRAM_START_ADDR))
-		{
-			ptr = target_mem_atag_create(ptr,
-				ram_ptable.parts[i].size,
-				ram_ptable.parts[i].start);
-		}
-	}
-
-    return ptr;
-}
-
-void *target_get_scratch_address(void)
-{
-	return ((void *)SCRATCH_ADDR);
-}
-
-#endif /* DEVICE_TREE */
-
diff --git a/target/copper/init.c b/target/copper/init.c
index b5922c3..56acf93 100644
--- a/target/copper/init.c
+++ b/target/copper/init.c
@@ -54,7 +54,7 @@
 void target_early_init(void)
 {
 #if WITH_DEBUG_UART
-	uart_dm_init(0, 0, BLSP1_UART0_BASE);
+	uart_dm_init(1, 0, BLSP1_UART1_BASE);
 #endif
 }
 
diff --git a/target/copper/rules.mk b/target/copper/rules.mk
index 238dbe9..73eb416 100644
--- a/target/copper/rules.mk
+++ b/target/copper/rules.mk
@@ -32,5 +32,4 @@
 
 OBJS += \
     $(LOCAL_DIR)/init.o \
-    $(LOCAL_DIR)/atags.o \
     $(LOCAL_DIR)/meminfo.o
diff --git a/target/mdm9615/init.c b/target/mdm9615/init.c
index 653986b..daedbc3 100644
--- a/target/mdm9615/init.c
+++ b/target/mdm9615/init.c
@@ -287,6 +287,7 @@
 			ptentry_ptr[ptn_index].name[i] =
 		    tolower(ptentry_ptr[ptn_index].name[i]);
 		}
+        ptentry_ptr[ptn_index].type = TYPE_APPS_PARTITION;
 	}
 }
 
diff --git a/target/msm7630_surf/init.c b/target/msm7630_surf/init.c
index eb0c525..f74b65f 100644
--- a/target/msm7630_surf/init.c
+++ b/target/msm7630_surf/init.c
@@ -41,7 +41,7 @@
 #include <mmc.h>
 #include <platform/iomap.h>
 #include <platform/machtype.h>
-#ifdef TARGET_USES_RSPIN_LOCK
+#if TARGET_USES_RSPIN_LOCK
 #include <platform/remote_spinlock.h>
 #endif
 #include <platform.h>
@@ -192,7 +192,7 @@
 
 	dprintf(INFO, "target_init()\n");
 
-#ifdef TARGET_USES_RSPIN_LOCK
+#if TARGET_USES_RSPIN_LOCK
 	if(remote_spinlock_init(&rlock))
 		dprintf(SPEW,"Failed to Initialize remote spin locks\n");
 #endif
