Implement PCIe reset for GFRG2x0.

Change-Id: I19f70d8577e372cd55ed55daefc31b34aa06b676
diff --git a/arch/arm/mach-comcerto/board-optimus.c b/arch/arm/mach-comcerto/board-optimus.c
index 682e9b0..d5c49c5 100644
--- a/arch/arm/mach-comcerto/board-optimus.c
+++ b/arch/arm/mach-comcerto/board-optimus.c
@@ -18,6 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <linux/delay.h>
 #include <linux/sched.h>
 #include <linux/device.h>
 #include <linux/serial_8250.h>
@@ -110,6 +111,21 @@
 	__raw_writel(__raw_readl(COMCERTO_GPIO_OUTPUT_REG) | MOCA_RESET_GPIO_PIN, COMCERTO_GPIO_OUTPUT_REG);
 #endif
 
+#ifdef PCIE_ADDITIONAL_RESET_PIN
+	printk(KERN_WARNING "Pulsing GPIO_62 to reset PCIe");
+	writel((0x2 << 4) | (readl(COMCERTO_GPIO_MISC_PIN_SELECT) & ~(0x3 << 4)),
+			COMCERTO_GPIO_MISC_PIN_SELECT);
+	writel(readl(COMCERTO_GPIO_63_32_PIN_OUTPUT_EN) & ~(PCIE_ADDITIONAL_RESET_PIN),
+			COMCERTO_GPIO_63_32_PIN_OUTPUT_EN);
+	c2k_gpio_pin_stat.c2k_gpio_pins_32_63 |= PCIE_ADDITIONAL_RESET_PIN;
+	writel(readl(COMCERTO_GPIO_63_32_PIN_OUTPUT) & ~(PCIE_ADDITIONAL_RESET_PIN),
+			COMCERTO_GPIO_63_32_PIN_OUTPUT);
+	udelay(1000);
+	writel(readl(COMCERTO_GPIO_63_32_PIN_OUTPUT) | (PCIE_ADDITIONAL_RESET_PIN),
+			COMCERTO_GPIO_63_32_PIN_OUTPUT);
+	udelay(1000);
+#endif
+
 	// enable GPIO0 interrupt (for MoCA) as level triggered, active high.
 	__raw_writel(__raw_readl(COMCERTO_GPIO_INT_CFG_REG) | (0x3),
 			COMCERTO_GPIO_INT_CFG_REG);
@@ -478,7 +494,7 @@
 			  1 -> set bit 21 and 20 in COMCERTO_GPIO_IOCTRL_REG
 			  (software control, clock output)
 			  2 -> clear bit 21 in COMCERTO_GPIO_IOCTRL_REG (hardware control) */
-	.tdmmux = 0x1, /* TDM interface Muxing:0x0 - TDM block, 0x1 - ZDS block,
+	.tdmmux = 0x2, /* TDM interface Muxing:0x0 - TDM block, 0x1 - ZDS block,
 		0x2 - GPIO[63:60] signals and 0x3 - MSIF block is selected */
 #if 0
 	/* FIX ME - Need correct values for TDM_DR, TDM_DX, TDM_FS and TDM_CK */
diff --git a/arch/arm/mach-comcerto/include/mach/board-optimus.h b/arch/arm/mach-comcerto/include/mach/board-optimus.h
index 581114c..bf2d6cf 100644
--- a/arch/arm/mach-comcerto/include/mach/board-optimus.h
+++ b/arch/arm/mach-comcerto/include/mach/board-optimus.h
@@ -17,6 +17,7 @@
 
 	#define COMCERTO_EXPCLK		50000000	/* 50MHz */
 	#define MOCA_RESET_GPIO_PIN	GPIO_PIN_11
+	#define PCIE_ADDITIONAL_RESET_PIN	GPIO_PIN_62
 
 	/***********************************
 	 * GPIO