diff --git a/src/mainboard/google/poppy/variants/nami/gpio.c b/src/mainboard/google/poppy/variants/nami/gpio.c
index 4ee19b6..8df93f2 100644
--- a/src/mainboard/google/poppy/variants/nami/gpio.c
+++ b/src/mainboard/google/poppy/variants/nami/gpio.c
@@ -404,7 +404,7 @@
 	/* B1  : CORE_VID1 ==> FPMCU_INT_L */
 	PAD_CFG_GPI_SCI(GPP_B1, UP_20K, DEEP, EDGE_SINGLE, INVERT),
 	/* B11 : EXT_PWR_GATE# ==> PCH_FP_PWR_EN */
-	PAD_CFG_GPO(GPP_B11, 0, DEEP),
+	PAD_CFG_GPO(GPP_B11, 1, DEEP),
 	/* B19 : GSPI1_CS# ==> PCH_SPI_FP_CS# */
 	PAD_CFG_NF(GPP_B19, NONE, DEEP, NF1),
 	/* B20 : GSPI1_CLK ==> PCH_SPI_FP_CLK */
@@ -416,48 +416,13 @@
 	/* C3  : SML0CLK ==> TOUCHSCREEN_DIS# */
 	PAD_CFG_GPO(GPP_C3, 0, DEEP),
 	/* C9  : UART0_TXD ==> FP_RST_ODL */
-	PAD_CFG_GPO(GPP_C9, 0, DEEP),
+	PAD_CFG_GPO(GPP_C9, 1, DEEP),
 	/* D5  : ISH_I2C0_SDA ==> FPMCU_BOOT0 */
 	PAD_CFG_GPO(GPP_D5, 0, DEEP),
 	/* D17 : DMIC_CLK1 ==> NC */
 	PAD_NC(GPP_D17, NONE),
 };
 
-const struct pad_config *variant_romstage_gpio_table(size_t *num)
-{
-	uint32_t sku_id = variant_board_sku();
-	const struct pad_config *board_gpio_tables;
-
-	switch (sku_id) {
-	case SKU_0_EKKO:
-	case SKU_1_EKKO:
-	case SKU_2_EKKO:
-	case SKU_3_EKKO:
-	case SKU_4_EKKO:
-	case SKU_5_EKKO:
-	case SKU_6_EKKO:
-	case SKU_7_EKKO:
-	case SKU_0_BARD:
-	case SKU_1_BARD:
-	case SKU_2_BARD:
-	case SKU_3_BARD:
-	case SKU_4_BARD:
-	case SKU_5_BARD:
-	case SKU_6_BARD:
-	case SKU_7_BARD:
-		*num = ARRAY_SIZE(fpmcu_gpio_table);
-		board_gpio_tables = fpmcu_gpio_table;
-		break;
-	default:
-		/* Initialized in variant_sku_gpio_table */
-		*num = 0;
-		board_gpio_tables = NULL;
-		break;
-	}
-	return board_gpio_tables;
-}
-
-
 const struct pad_config *variant_sku_gpio_table(size_t *num)
 {
 	uint32_t sku_id = variant_board_sku();
@@ -503,9 +468,8 @@
 	case SKU_5_BARD:
 	case SKU_6_BARD:
 	case SKU_7_BARD:
-		/* Initialized in variant_romstage_gpio_table */
-		*num = 0;
-		board_gpio_tables = NULL;
+		*num = ARRAY_SIZE(fpmcu_gpio_table);
+		board_gpio_tables = fpmcu_gpio_table;
 		break;
 	default:
 		*num = ARRAY_SIZE(nami_default_sku_gpio_table);
diff --git a/src/mainboard/google/poppy/variants/nami/mainboard.c b/src/mainboard/google/poppy/variants/nami/mainboard.c
index a4634fc..b703d40 100644
--- a/src/mainboard/google/poppy/variants/nami/mainboard.c
+++ b/src/mainboard/google/poppy/variants/nami/mainboard.c
@@ -15,8 +15,6 @@
 #include <soc/ramstage.h>
 #include <string.h>
 #include <variant/sku.h>
-#include <gpio.h>
-#include <delay.h>
 
 #define PL2_I7_SKU	44
 #define PL2_DEFAULT	29
@@ -301,36 +299,3 @@
 				sku_overwrite_mapping[oem_index].dc_loadline[i];
 	}
 }
-
-void variant_final(void)
-{
-	uint32_t sku_id = variant_board_sku();
-
-	switch (sku_id) {
-	case SKU_0_BARD:
-	case SKU_1_BARD:
-	case SKU_2_BARD:
-	case SKU_3_BARD:
-	case SKU_4_BARD:
-	case SKU_5_BARD:
-	case SKU_6_BARD:
-	case SKU_7_BARD:
-	case SKU_0_EKKO:
-	case SKU_1_EKKO:
-	case SKU_2_EKKO:
-	case SKU_3_EKKO:
-	case SKU_4_EKKO:
-	case SKU_5_EKKO:
-	case SKU_6_EKKO:
-	case SKU_7_EKKO:
-		/* Enable FPMCU late in the boot process to achieve
-		 * ~150ms of power off time in total.
-		 */
-		gpio_output(GPP_B11, 1);	/* PCH_FP_PWR_EN */
-		mdelay(3);
-		gpio_output(GPP_C9, 1);		/* FP_RST_ODL */
-		break;
-	default:
-		break;
-	}
-}
