diff --git a/board/ruby/cmd_qtnboard.c b/board/ruby/cmd_qtnboard.c
index 2e5381a..2d2bc8d 100644
--- a/board/ruby/cmd_qtnboard.c
+++ b/board/ruby/cmd_qtnboard.c
@@ -389,7 +389,6 @@
 	const uint8_t * const board_config = qtn_get_file_env_ptr(QTN_HW_BOARD_CFG_BIN, &board_config_size);
 
 	if (board_config == NULL) {
-
 		if (qtn_get_emac_set() < 0) {
 			return FAIL;
 		}
diff --git a/board/ruby/cmd_qtnboot.c b/board/ruby/cmd_qtnboot.c
index 4b63a4c..e9e802c 100644
--- a/board/ruby/cmd_qtnboot.c
+++ b/board/ruby/cmd_qtnboot.c
@@ -10,6 +10,7 @@
 
 #define BUFSIZE 256
 
+#ifndef GFRG240
 static int qtnboot_check(char *buf,
 		unsigned long flash_size, unsigned long sector_size,
 		unsigned long safety_addr, unsigned long safety_size,
@@ -167,20 +168,6 @@
            "${" SAFETY_IMG_SIZE_ARG "} and ${" LIVE_IMG_SIZE_ARG "}\n"
           );
 
-int _run(const char *function_name, const char *fmt, ...)
-{
-	va_list args;
-	char cmdbuf[BUFSIZE];
-
-	va_start(args, fmt);
-	vsprintf(cmdbuf, fmt, args);
-	va_end(args);
-
-	printf("%s: %s\n", function_name, cmdbuf);
-
-	return run_command(cmdbuf, 0);
-}
-
 int do_qtnboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
 	unsigned long safety_addr = 0;
@@ -276,7 +263,21 @@
 		"If env variable 'bootselect' is 1, boot from image at safety address;\n"
 		"Otherwise boot from image at live address\n"
 	  );
+#endif /* ifndef GFRG240 */
 
+int _run(const char *function_name, const char *fmt, ...)
+{
+	va_list args;
+	char cmdbuf[BUFSIZE];
+
+	va_start(args, fmt);
+	vsprintf(cmdbuf, fmt, args);
+	va_end(args);
+
+	printf("%s: %s\n", function_name, cmdbuf);
+
+	return run_command(cmdbuf, 0);
+}
 
 int do_setgpio(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
diff --git a/board/ruby/pcie.c b/board/ruby/pcie.c
index 861ff97..351173f 100755
--- a/board/ruby/pcie.c
+++ b/board/ruby/pcie.c
@@ -341,6 +341,42 @@
 }
 
 #ifndef TOPAZ_EP_MINI_UBOOT
+#ifdef GFRG240
+static void set_tiny_mtdparts(void)
+{
+	char mtdparts[BUFSIZE];
+
+	sprintf(mtdparts, "spi_flash:"
+		"%dk(" MTD_PARTNAME_UBOOT_BIN "),"
+		"%dk(" MTD_PARTNAME_UBOOT_ENV "),"
+		"%dk(" MTD_PARTNAME_RESERVED_A "),"
+		"%dk(" MTD_PARTNAME_VENDOR "),"
+		"%dk(" MTD_PARTNAME_RESERVED_B "),"
+		"%dk(" MTD_PARTNAME_HNVRAM "),"
+		"%dk(" MTD_PARTNAME_KERNEL0 "),"
+		"%dk(" MTD_PARTNAME_KERNEL1 "),"
+		"-(" MTD_PARTNAME_DATA ")",
+
+		UBOOT_TEXT_PARTITION_SIZE / 1024,
+		UBOOT_ENV_PARTITION_SIZE / 1024,
+		UBOOT_RESERVED_A_PARTITION_SIZE / 1024,
+		UBOOT_VENDOR_PARTITION_SIZE / 1024,
+		UBOOT_RESERVED_B_PARTITION_SIZE / 1024,
+		UBOOT_HNVRAM_PARTITION_SIZE / 1024,
+		UBOOT_KERNEL_PARTITION_SIZE / 1024,
+		UBOOT_KERNEL_PARTITION_SIZE / 1024
+		);
+
+	setenv("mtdparts", mtdparts);
+}
+
+static int prepare_tiny_bootargs(void)
+{
+	set_tiny_mtdparts();
+
+	return 0;
+}
+#else	// #ifdef GFRG240
 static void set_tiny_mtdparts(unsigned long linux_safety_size, unsigned long linux_live_size)
 {
 	char mtdparts[BUFSIZE];
@@ -373,6 +409,7 @@
 
 	return 0;
 }
+#endif	// #ifdef GFRG240
 
 static void set_tiny_bootargs(void)
 {
diff --git a/board/ruby/ruby.c b/board/ruby/ruby.c
index c1e0c5c..3d6947b 100644
--- a/board/ruby/ruby.c
+++ b/board/ruby/ruby.c
@@ -199,7 +199,7 @@
 		}
 	}
 #ifdef CONFIG_CMD_HNVRAM
-        RUN("hnvram");
+        RUN("hnvram load");
 #endif
 	return 0;
 }
diff --git a/board/ruby/spi_flash.c b/board/ruby/spi_flash.c
index 3434892..66e0fbc 100644
--- a/board/ruby/spi_flash.c
+++ b/board/ruby/spi_flash.c
@@ -30,7 +30,11 @@
 #include <asm/errno.h>
 
 #define SPI_PAGE_SIZE		256
-#define ENV_BASE_SIZE (CONFIG_ENV_BASE_SIZE - ENV_HEADER_SIZE)
+/*
+ * quantenna stores data in the uboot env partition hidden from setenv.
+ * the environment space is artificially shrunk to give them this space.
+ */
+#define ENV_SHRUNK_SIZE		(CONFIG_ENV_SHRUNK_SIZE - ENV_HEADER_SIZE)
 
 #if defined(FLASH_SUPPORT_256KB)
 #define SPI_FLASH_256KB_SIZE           (256 * 1024)
@@ -38,7 +42,7 @@
 
 #define SPI_FLASH_UBOOT_ADDR	0
 
-#define SPI_FLASH_FULL_UBOOT_SIZE	(128*1024)	/* Normal Ruby u-boot partition is just under 128k */
+#define SPI_FLASH_FULL_UBOOT_SIZE	UBOOT_TEXT_PARTITION_SIZE
 #define SPI_FLASH_MINI_UBOOT_SIZE	(20*1024)	/* Ruby mini u-boot is 20k */
 
 #define SPI_FLASH_TEST		1
@@ -1038,7 +1042,7 @@
 {
 	u32 crc, len, ret_len, new, addr;
 	uchar buf[64];
-	u32 env_size[] = {ENV_SIZE, F64K_ENV_PARTITION_SIZE - ENV_HEADER_SIZE, ENV_BASE_SIZE};
+	u32 env_size[] = {ENV_SIZE, ENV_SHRUNK_SIZE};
 	u32 idx = 0;
 
 	len = sizeof(crc);
@@ -1079,11 +1083,14 @@
 int env_init(void)
 {
 	u32 env_addr;
+#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
 	u32 env_addr_backup, env_end;
+#endif
 
 	if (gd->env_valid == 0) {
 		env_addr = spi_flash_env_addr(0);
 
+#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
 		/* No ENV & CAL backup for mini-uboot */
 		if (spi_flash_uboot_size() == SPI_FLASH_FULL_UBOOT_SIZE) {
 #if defined(FLASH_SUPPORT_256KB)
@@ -1097,17 +1104,20 @@
 			env_addr_backup = 0;
 			env_end = spi_flash_env_addr(1);
 		}
+#endif
 
 		if (env_verify(env_addr) == 0) {
 			printf("Valid CRC found in flash restoring env...\n");
 			// gd->env_addr  = offsetof(env_t,data); - malloced later...
 			gd->env_valid = 1;
+#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
 		} else if (env_end <= IMAGES_START_ADDR
 			&& env_end < spi_flash_size()
 			&& env_verify(env_addr_backup) == 0) {
 			printf("Valid CRC found in flash - restoring backup...\n");
 			// gd->env_addr  = offsetof(env_t,data); - malloced later...
 			gd->env_valid = 2;
+#endif
 		} else {
 			printf("Invalid CRC in flash using default env...\n");
 			gd->env_addr  = (ulong) &default_environment[0];
diff --git a/common/cmd_hnvram.c b/common/cmd_hnvram.c
index 52f0ae1..2f4d308 100644
--- a/common/cmd_hnvram.c
+++ b/common/cmd_hnvram.c
@@ -25,6 +25,7 @@
 #include <common.h>
 #include <malloc.h>
 #include <spi_flash.h>
+#include <asm/byteorder.h>
 
 /* local debug macro */
 #undef HNVRAM_DEBUG
@@ -221,7 +222,7 @@
 }
 
 #if defined(CONFIG_CMD_HNVRAM)
-int do_hnvram(void) {
+int do_hnvram_load(void) {
         char command[60];
         sprintf(command, "spi_flash read 0x%x 0x%x 0x%x", HNVRAM_MTD_OFFSET, HNVRAM_DRAM_OFFSET, MAX_HNVRAM_SIZE);
         int ret = run_command(command, 0);
@@ -248,19 +249,97 @@
                 return -1;
         }
 
-        free(buf);
+        return CMD_RET_SUCCESS;
+}
+
+int do_hnvram_init(char *val) {
+        // Erase entire partition
+        char command[60];
+        sprintf(command, "spi_flash erase 0x%x 0x%x", HNVRAM_MTD_OFFSET, MAX_HNVRAM_SIZE);
+        int ret = run_command(command, 0);
+
+        if (ret) {
+          printf("failed to erase hnvram partition\n");
+          return ret;
+        }
+
+        char key[] = "PLATFORM_NAME";
+        int val_len = strlen(val);
+        // size variable should fit in one byte
+        if (val_len < 1 || 255 < val_len) {
+          printf("Intial value for %s has bad size: %d", key, val_len);
+          return CMD_RET_FAILURE;
+        }
+        // +5 to count key length (1) and record length (4) bytes
+        int rec_len = sizeof(key) + val_len + 5;
+
+        // Use 2MB of (hopefully) free DRAM
+        char *buf = HNVRAM_DRAM_OFFSET;
+        memset(buf, 0x00, MAX_HNVRAM_SIZE);
+
+        // Write platform_name to RW section
+        int i = HNVRAM_B1_OFFSET;
+
+        // Record start
+        buf[i++] = 0x01;
+
+        // Record length
+        int nbyte_order = htonl(rec_len); // hnvram expects big endian
+        memcpy(buf + i, &nbyte_order, sizeof(nbyte_order));
+        i += sizeof(nbyte_order);
+
+        // Key length
+        buf[i++] = sizeof(key);
+
+        // Key
+        memcpy(buf + i, &key, sizeof(key));
+        i += sizeof(key);
+
+        // Val length
+        nbyte_order = htonl(val_len);
+        memcpy(buf + i, &nbyte_order, sizeof(nbyte_order));
+        i += sizeof(nbyte_order);
+
+        // Val
+        memcpy(buf + i, val, val_len);
+
+        sprintf(command, "spi_flash write 0x%x 0x%p 0x%x", HNVRAM_MTD_OFFSET, buf, MAX_HNVRAM_SIZE);
+        ret = run_command(command, 0);
+
+        if (ret) {
+          printf("failed to write init to hnvram partition\n");
+          return ret;
+        }
+
+        // Load platform_name into environment variables
+        do_hnvram_load();
+
         return CMD_RET_SUCCESS;
 }
 
 static int do_hnvram_cmd(cmd_tbl_t *cmdtp, int flag, int argc,
                 char * const argv[]) {
-        return do_hnvram();
+        if (argc == 2 && strcmp(argv[1], "load") == 0) {
+          return do_hnvram_load();
+        } else if (argc == 2 && strcmp(argv[1], "init") == 0) {
+          return do_hnvram_init("GFRG240");
+        } else if (argc == 3 && strcmp(argv[1], "init") == 0) {
+          return do_hnvram_init(argv[2]);
+        } else {
+          printf("hnvram - incorrect usage. Please use one of:\n");
+          printf("hnvram load\n");
+          printf("hnvram init <model>\n");
+          return CMD_RET_USAGE;
+        }
 }
 
 U_BOOT_CMD(
-        hnvram, 1, 0, do_hnvram_cmd,
-        "load hnvram from flash",
+        hnvram, 3, 0, do_hnvram_cmd,
+        "HNVRAM key-val storage on flash",
         "\n"
-        "load hnvram from flash into environment vars named HNV_<name>\n"
+        "hnvram load            - reads all variables from flash partition and"
+        "                         places into environment vars as HNV_<name>"
+        "hnvram init [model]    - zeros hnvram and writes PLATFORM_NAME=<model>"
+        "                         Uses GFRG240 by default if no arg given"
         );
 #endif  /* CONFIG_CMD_HNVRAM */
diff --git a/common/env_common.c b/common/env_common.c
index f0ef16a..314ff5d 100644
--- a/common/env_common.c
+++ b/common/env_common.c
@@ -239,10 +239,14 @@
 	env_ptr->flags = 0xFF;
 #endif
 
-#ifndef CONFIG_RUBY_BOARD
+	/*
+	 * Switch the u-boot environment over to the copy we just
+	 * placed into SRAM.  Update the CRC, and mark it as valid
+	 * so that we can write it out to the flash.
+	 */
+	gd->env_addr = env_ptr->data;
 	env_crc_update ();
 	gd->env_valid = 1;
-#endif
 }
 
 void env_relocate (void)
diff --git a/include/environment.h b/include/environment.h
index 5a91b79..32e70c5 100644
--- a/include/environment.h
+++ b/include/environment.h
@@ -109,7 +109,7 @@
 #endif
 
 
-#define ENV_SIZE (CONFIG_ENV_SIZE - ENV_HEADER_SIZE)
+#define ENV_SIZE (CONFIG_ENV_SHRUNK_SIZE - ENV_HEADER_SIZE)
 
 typedef	struct environment_s {
 	uint32_t	crc;		/* CRC32 over data bytes	*/
diff --git a/quantenna/common/current_platform.h b/quantenna/common/current_platform.h
index e8e3e34..e54dda5 100644
--- a/quantenna/common/current_platform.h
+++ b/quantenna/common/current_platform.h
@@ -7,6 +7,8 @@
 #define ARC_HW_REV_NEEDS_TLBMISS_FIX
 #define TOPAZ_SUPPORT_UMM 1
 #define TOPAZ_SUPPORT_256MB_DDR 1
-#define FLASH_SUPPORT_64KB
 #define WPA_TKIP_SUPPORT 0
 #define SIGMA_TESTBED_SUPPORT 0
+#define GFRG240 1
+
+#define PLATFORM_DEFAULT_BOARD_ID QTN_TOPAZ_PROWL
diff --git a/quantenna/common/ruby_board_db.h b/quantenna/common/ruby_board_db.h
index da7883d..b44069f 100644
--- a/quantenna/common/ruby_board_db.h
+++ b/quantenna/common/ruby_board_db.h
@@ -1163,6 +1163,21 @@
 	.bc_emac0       = EMAC_IN_USE | EMAC_PHY_FORCE_1000MB | EMAC_PHY_NOT_IN_USE | EMAC_PHY_RTL8363SB_P0, \
 	.bc_wifi_hw     = QTN_TPZ_SE5003L1, \
 	.bc_rgmii_timing = CONFIG_ARCH_RGMII_NODELAY, \
+	} ,{ /* 1232 */ \
+	.bc_board_id	= QTN_TOPAZ_PROWL, \
+	.bc_name	= "gfrg240", \
+	.bc_ddr_type	= DDR3_16_WINBOND, \
+	.bc_ddr_speed	= DDR3_500MHz, \
+	.bc_ddr_size	= DDR_256MB, \
+	.bc_emac0	= EMAC_IN_USE, \
+	.bc_emac1	= (EMAC_IN_USE | EMAC_PHY_FORCE_1000MB | EMAC_PHY_NOT_IN_USE | EMAC_PHY_AR8327), \
+	.bc_phy0_addr   = 0x4, \
+	.bc_phy1_addr   = EMAC_PHY_ADDR_SCAN, \
+	.bc_spi1	= SPI1_NOT_IN_USE, \
+	.bc_wifi_hw	= QTN_TPZ_SKY85703, \
+	.bc_uart1	= UART1_NOT_IN_USE, \
+	.bc_pcie        = PCIE_ROOTCOMPLEX, \
+	.bc_rgmii_timing = 0x84848484, \
 	} \
 }
 
diff --git a/quantenna/common/ruby_partitions.h b/quantenna/common/ruby_partitions.h
index 1af2bc5..7d688fe 100644
--- a/quantenna/common/ruby_partitions.h
+++ b/quantenna/common/ruby_partitions.h
@@ -28,6 +28,50 @@
 #ifndef __RUBY_PARTITIONS_H
 #define __RUBY_PARTITIONS_H
 
+#ifdef GFRG240
+#define UBOOT_TEXT_PARTITION_SIZE	0x00040000	/* 256K */
+#define UBOOT_ENV_PARTITION_SIZE	0x00010000	/* 64K */
+#define UBOOT_RESERVED_A_PARTITION_SIZE	0x00030000	/* 192K */
+#define UBOOT_VENDOR_PARTITION_SIZE	0x00080000	/* 512K */
+#define UBOOT_RESERVED_B_PARTITION_SIZE	0x00100000	/* 1M */
+#define UBOOT_HNVRAM_PARTITION_SIZE	0x00200000	/* 2M */
+#define UBOOT_KERNEL_PARTITION_SIZE	0x01C00000	/* 28M (x2) */
+#define UBOOT_DATA_PARTITION_SIZE	0x00400000	/* 4M */
+
+#define CONFIG_ENV_OFFSET		0x00040000	/* offset of uboot environment */
+
+#define UBOOT_PARTITION_OFFSET_KERNEL0	(UBOOT_TEXT_PARTITION_SIZE + \
+					 UBOOT_ENV_PARTITION_SIZE + \
+					 UBOOT_RESERVED_A_PARTITION_SIZE + \
+					 UBOOT_VENDOR_PARTITION_SIZE + \
+					 UBOOT_RESERVED_B_PARTITION_SIZE + \
+					 UBOOT_HNVRAM_PARTITION_SIZE)
+#define UBOOT_PARTITION_OFFSET_KERNEL1	(UBOOT_PARTITION_OFFSET_KERNEL0 + \
+					 UBOOT_KERNEL_PARTITION_SIZE)
+
+#define MTD_PARTNAME_UBOOT_BIN		"uboot"
+#define MTD_PARTNAME_UBOOT_ENV		"uboot_env"
+#define MTD_PARTNAME_RESERVED_A		"reserved_a"
+#define MTD_PARTNAME_VENDOR		"vendor"
+#define MTD_PARTNAME_RESERVED_B		"reserved_b"
+#define MTD_PARTNAME_HNVRAM		"hnvram"
+#define MTD_PARTNAME_KERNEL0		"kernel0"
+#define MTD_PARTNAME_KERNEL1		"kernel1"
+#define MTD_PARTNAME_DATA		"data+ubi"
+
+/*
+ * quantenna stores files in the uboot env partition.
+ * limit the size of uboot environment to 24K, and allow
+ * quantenna file storage in the remaining 40K.
+*/
+#define CONFIG_ENV_SHRUNK_SIZE		(24 * 1024)	/* limited uboot environment */
+#define BOOT_CFG_DEF_START		CONFIG_ENV_SHRUNK_SIZE	/* qtn file starts after uboot-env */
+#define BOOT_CFG_SIZE			(UBOOT_ENV_PARTITION_SIZE - CONFIG_ENV_SHRUNK_SIZE)
+#define BOOT_CFG_DATA_SIZE		(UBOOT_ENV_PARTITION_SIZE - sizeof(u32))
+
+
+#else // #ifdef GFRG240
+
 #define F64K_UBOOT_PIGGY_PARTITION_SIZE	0x5000
 
 #if defined(FLASH_SUPPORT_256KB)
@@ -97,6 +141,8 @@
 
 #define IMG_SIZE_LIMIT_PLATFORM	IMG_SIZE_16M_FLASH_2_IMG
 
+#endif // #ifdef GFRG240
+
 #endif // #ifndef __RUBY_PARTITIONS_H
 
 
diff --git a/quantenna/include/qtn/shared_defs_common.h b/quantenna/include/qtn/shared_defs_common.h
index ef55d8c..e106f60 100644
--- a/quantenna/include/qtn/shared_defs_common.h
+++ b/quantenna/include/qtn/shared_defs_common.h
@@ -126,6 +126,7 @@
 #define  QTN_TOPAZ_BB_BOARD				1229
 #define  QTN_TOPAZ_RF_BOARD				1230
 #define  QTN_TOPAZ_QHS840_5S1				1231
+#define  QTN_TOPAZ_PROWL				1232
 
 #define		QTN_RUBY_AUTOCONFIG_ID				32768
 #define		QTN_RUBY_UNIVERSAL_BOARD_ID			65535
