diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c
index 34dc50d..b411a53 100644
--- a/board/solidrun/clearfog/clearfog.c
+++ b/board/solidrun/clearfog/clearfog.c
@@ -14,6 +14,7 @@
 #include <asm/io.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/soc.h>
+#include <asm-generic/gpio.h>
 
 #include "../drivers/ddr/marvell/a38x/ddr3_a38x_topology.h"
 #include <../serdes/a38x/high_speed_env_spec.h>
@@ -158,6 +159,26 @@ int board_init(void)
 	setbits_le32(MVEBU_GPIO0_BASE + 0x0, BIT(19));
 	mdelay(10);
 
+#ifdef CONFIG_DM_GPIO
+	struct gpio_desc pcie0_reset,
+		 pcie1_reset;
+	int res;
+
+	/* Toogle PERST# on miniPCIe0 (CON3) */
+	res = dm_gpio_lookup_name("gpio@20_1", &pcie0_reset);
+	if (!res) {
+		res = dm_gpio_request(&pcie0_reset, "pcie0-reset");
+		if (!res)
+			dm_gpio_set_dir_flags(&pcie0_reset,GPIOD_IS_OUT |
+						GPIOD_ACTIVE_LOW);
+	}
+ 
+	dm_gpio_set_value(&pcie0_reset, 1);
+	mdelay(100);
+	dm_gpio_set_value(&pcie0_reset, 0);
+	mdelay(100);
+#endif
+
 #ifdef CONFIG_DM_RTC
         struct udevice *dev;
 	int ret;
