diff --git a/arch/arm/configs/gflt200_defconfig b/arch/arm/configs/gflt200_defconfig
index 9306a95..e4da19f 100644
--- a/arch/arm/configs/gflt200_defconfig
+++ b/arch/arm/configs/gflt200_defconfig
@@ -1127,7 +1127,7 @@
 # CONFIG_PPS is not set
 CONFIG_ARCH_REQUIRE_GPIOLIB=y
 CONFIG_GPIOLIB=y
-# CONFIG_GPIO_SYSFS is not set
+CONFIG_GPIO_SYSFS=y
 
 #
 # Memory mapped GPIO expanders:
diff --git a/arch/arm/mach-feroceon-kw2/board-gflt200.c b/arch/arm/mach-feroceon-kw2/board-gflt200.c
index 02d5131..b1f259d 100644
--- a/arch/arm/mach-feroceon-kw2/board-gflt200.c
+++ b/arch/arm/mach-feroceon-kw2/board-gflt200.c
@@ -16,6 +16,62 @@
 #define GPIO_BOARD_VER_0	13
 #define GPIO_BOARD_VER_1	15
 #define GPIO_BOARD_VER_2	18
+#define GPIO_PON_PWR_EN		37
+#define GPIO_PON_TX_DIS		21
+
+struct board_gpio {
+	unsigned	gpio;
+	const char	*label;
+};
+
+static struct board_gpio board_gpios[] = {
+	{
+		.gpio = GPIO_PON_PWR_EN,
+		.label = "power-enable",
+	},
+	{
+		.gpio = GPIO_PON_TX_DIS,
+		.label = "tx-disable",
+	},
+};
+
+static int board_gpio_export(struct board_gpio *gpio, struct device *dev)
+{
+	int rc;
+
+	rc = gpio_request(gpio->gpio, gpio->label);
+	if (rc) {
+		pr_err(BOARD_NAME ": error %d requesting gpio %u (%s)\n", rc,
+			gpio->gpio, gpio->label);
+		goto exit;
+	}
+
+	/* this is needed to set gpiolib's out flag for the gpio */
+	rc = gpio_direction_output(gpio->gpio, gpio_get_value(gpio->gpio));
+	if (rc) {
+		pr_err(BOARD_NAME ": error %d setting gpio %u (%s) direction\n",
+			rc, gpio->gpio, gpio->label);
+		goto exit;
+	}
+
+	rc = gpio_export(gpio->gpio, false);
+	if (rc) {
+		pr_err(BOARD_NAME ": error %d exporting gpio %u (%s)\n", rc,
+			gpio->gpio, gpio->label);
+		goto exit;
+	}
+
+	rc = gpio_export_link(dev, gpio->label, gpio->gpio);
+	if (rc) {
+		pr_err(BOARD_NAME ": error %d linking gpio %u (%s)\n", rc,
+			gpio->gpio, gpio->label);
+		goto exit;
+	}
+
+	rc = 0;
+exit:
+	return rc;
+}
 
 static int board_hw_ver(void)
 {
@@ -123,6 +179,7 @@
 
 int __init board_init(void)
 {
+	int i;
 	int rc;
 	int hw_ver;
 	struct platform_device *pdev;
@@ -157,6 +214,10 @@
 	if (rc)
 		pr_err(BOARD_NAME ": error %d creating link 'board'\n", rc);
 
+	/* /sys/devices/platform/board/<gpio_name> */
+	for (i = 0; i < ARRAY_SIZE(board_gpios); i++)
+		board_gpio_export(&board_gpios[i], &pdev->dev);
+
 	/* /sys/devices/platform/board/hw_ver */
 	rc = device_create_file(&pdev->dev, &dev_attr_hw_ver);
 	if (rc)
diff --git a/arch/arm/mach-feroceon-kw2/kw2_family/boardEnv/mvBoardEnvSpec.h b/arch/arm/mach-feroceon-kw2/kw2_family/boardEnv/mvBoardEnvSpec.h
index 0dd12fa..63e910b 100755
--- a/arch/arm/mach-feroceon-kw2/kw2_family/boardEnv/mvBoardEnvSpec.h
+++ b/arch/arm/mach-feroceon-kw2/kw2_family/boardEnv/mvBoardEnvSpec.h
@@ -528,10 +528,10 @@
 #define GFLT200_EVT1_GPP_POL_LOW	0x0
 #define GFLT200_EVT1_GPP_POL_MID	0x0
 
-#define GFLT200_EVT2_GPP_OUT_ENA_LOW	(BIT9 | BIT13 | BIT15 | BIT18 | BIT27 | BIT29)
+#define GFLT200_EVT2_GPP_OUT_ENA_LOW	(BIT13 | BIT15 | BIT18 | BIT27 | BIT29)
 #define GFLT200_EVT2_GPP_OUT_ENA_MID	(BIT4)
 
-#define GFLT200_EVT2_GPP_OUT_VAL_LOW	(BIT21 | BIT28)
+#define GFLT200_EVT2_GPP_OUT_VAL_LOW	(BIT9 | BIT21 | BIT28)
 #define GFLT200_EVT2_GPP_OUT_VAL_MID	(BIT5)
 
 #define GFLT200_EVT2_GPP_POL_LOW	0x0
diff --git a/drivers/watchdog/orion_wdt.c b/drivers/watchdog/orion_wdt.c
index 2d9fb96..14bc1d3 100644
--- a/drivers/watchdog/orion_wdt.c
+++ b/drivers/watchdog/orion_wdt.c
@@ -237,6 +237,8 @@
 {
 	struct orion_wdt_platform_data *pdata = pdev->dev.platform_data;
 	int ret;
+	u32 reg;
+	int time;
 
 	if (pdata) {
 		wdt_tclk = pdata->tclk;
@@ -259,6 +261,15 @@
 
 	printk(KERN_INFO "Orion Watchdog Timer: Initial timeout %d sec%s\n",
 				heartbeat, nowayout ? ", nowayout" : "");
+
+	reg = readl(TIMER_CTRL);
+	if (reg & WDT_EN) {
+		orion_wdt_get_timeleft(&time);
+		orion_wdt_ping();
+		pr_info("Orion Watchdog Timer: running at boot (%d sec left)"
+			", resetting", time);
+	}
+
 	return 0;
 }
 
