diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index ce0f95f..831a7fb 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -452,16 +452,9 @@ void show_boot_progress(int val)
  */
 int ehci_hcd_init(void)
 {
-	pr_debug("Initializing OMAP3 ECHI\n");
+	pr_debug("Initializing OMAP3 EHCI\n");
 
-	/* Put the PHY in RESET */
-	omap_request_gpio(GPIO_PHY_RESET);
-	omap_set_gpio_direction(GPIO_PHY_RESET, 0);
-	omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
-
-	/* Hold the PHY in RESET for enough time till DIR is high */
-	/* Refer: ISSUE1 */
-	udelay(10);
+	printf("beagle ehci_hcd_init\n");
 
 	struct prcm *prcm_base = (struct prcm *)PRCM_BASE;
 	/* Enable USBHOST_L3_ICLK (USBHOST_MICLK) */
@@ -476,20 +469,50 @@ int ehci_hcd_init(void)
 	/* Enable USBTTL_FCLK */
 	sr32(&prcm_base->fclken3_core, 2, 1, 1);
 	pr_debug("USB clocks enabled\n");
+	printf("beagle ehci: USB clocks enabled. \n");
+
+	/* Put the PHY in RESET */
+	omap_request_gpio(GPIO_PHY_RESET);
+	omap_set_gpio_direction(GPIO_PHY_RESET, 0);
+	switch (get_board_revision()) {
+		case REVISION_AXBX:
+		case REVISION_CX:
+		case REVISION_C4:
+			omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
+		case REVISION_XM_A:
+		case REVISION_XM_B:
+			omap_set_gpio_dataout(GPIO_PHY_RESET, 1);
+			break;
+		case REVISION_XM_C:
+			omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
+		default:
+			omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
+	}
+
+	printf("beagle ehci: PHY reset delay\n");	
+
+	/* Hold the PHY in RESET for enough time till DIR is high */
+	/* Refer: ISSUE1 */
+	udelay(10);
 
 	/* perform TLL soft reset, and wait until reset is complete */
-	writel(OMAP_USBTLL_SYSCONFIG_SOFTRESET,
+/*	writel(OMAP_USBTLL_SYSCONFIG_SOFTRESET,
 		OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSCONFIG);
+
+	printf("TTL soft reset\n");
+*/
 	/* Wait for TLL reset to complete */
-	while (!(readl(OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSSTATUS)
+/*	while (!(readl(OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSSTATUS)
 			& OMAP_USBTLL_SYSSTATUS_RESETDONE));
 	pr_debug("TLL reset done\n");
+	printf("beagle ehci: TTL reset done\n");
 
 	writel(OMAP_USBTLL_SYSCONFIG_ENAWAKEUP |
 		OMAP_USBTLL_SYSCONFIG_SIDLEMODE |
 		OMAP_USBTLL_SYSCONFIG_CACTIVITY,
 		OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSCONFIG);
-
+	printf("beagle ehci: some writel done\n");
+*/
 	/* Put UHH in NoIdle/NoStandby mode */
 	writel(OMAP_UHH_SYSCONFIG_ENAWAKEUP
 		| OMAP_UHH_SYSCONFIG_SIDLEMODE
@@ -497,11 +520,14 @@ int ehci_hcd_init(void)
 		| OMAP_UHH_SYSCONFIG_MIDLEMODE,
 		OMAP3_UHH_BASE + OMAP_UHH_SYSCONFIG);
 
+	printf("beagle ehci: UHH done\n");
+
 	/* setup burst configurations */
 	writel(OMAP_UHH_HOSTCONFIG_INCR4_BURST_EN
 		| OMAP_UHH_HOSTCONFIG_INCR8_BURST_EN
 		| OMAP_UHH_HOSTCONFIG_INCR16_BURST_EN,
 		OMAP3_UHH_BASE + OMAP_UHH_HOSTCONFIG);
+	printf("beagle ehci: burst config done\n");
 
 	/*
 	 * Refer ISSUE1:
@@ -509,12 +535,27 @@ int ehci_hcd_init(void)
 	 * PHY is settled and ready
 	 */
 	udelay(10);
-	omap_set_gpio_dataout(GPIO_PHY_RESET, 1);
+	printf("beagle before 2nd reset\n");
+	switch (get_board_revision()) {
+        case REVISION_AXBX:
+        case REVISION_CX:
+        case REVISION_C4:
+            omap_set_gpio_dataout(GPIO_PHY_RESET, 1);
+        case REVISION_XM_A:
+        case REVISION_XM_B:
+            omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
+            break;
+        case REVISION_XM_C:
+            omap_set_gpio_dataout(GPIO_PHY_RESET, 1);
+        default:
+            omap_set_gpio_dataout(GPIO_PHY_RESET, 1);
+    }
 
 	hccr = (struct ehci_hccr *)(OMAP3_EHCI_BASE);
 	hcor = (struct ehci_hcor *)(OMAP3_EHCI_BASE + 0x10);
 
 	pr_debug("OMAP3 EHCI init done\n");
+	printf("beagle ehci done\n");
 	return 0;
 }
 
diff --git a/board/ti/beagle/beagle.h b/board/ti/beagle/beagle.h
index 18bfaa8..71136cd 100644
--- a/board/ti/beagle/beagle.h
+++ b/board/ti/beagle/beagle.h
@@ -418,7 +418,8 @@ const omap3_sysinfo sysinfo = {
 	MUX_VAL(CP(SYS_BOOT3),		(IDIS | PTD | DIS | M3)) /*DSS_DATA20*/\
 	MUX_VAL(CP(SYS_BOOT4),		(IDIS | PTD | DIS | M3)) /*DSS_DATA21*/\
 	MUX_VAL(CP(SYS_BOOT5),		(IDIS | PTD | DIS | M3)) /*DSS_DATA22*/\
-	MUX_VAL(CP(SYS_BOOT6),		(IDIS | PTD | DIS | M3)) /*DSS_DATA23*/
+	MUX_VAL(CP(SYS_BOOT6),		(IDIS | PTD | DIS | M3)) /*DSS_DATA23*/\
+	MUX_VAL(CP(UART2_RX),		(IDIS | PTU | EN  | M4)) /*GPIO_147*/
 
 #define MUX_TINCANTOOLS_ZIPPY() \
 	MUX_VAL(CP(MMC2_CLK),       (IEN  | PTU | EN  | M0)) /*MMC2_CLK*/\
