diff --git a/board/ruby/ruby.c b/board/ruby/ruby.c
index 3d6947b..ee014c2 100644
--- a/board/ruby/ruby.c
+++ b/board/ruby/ruby.c
@@ -201,6 +201,39 @@
 #ifdef CONFIG_CMD_HNVRAM
         RUN("hnvram load");
 #endif
+
+#ifdef GFRG240
+	char cmd[320];
+	sprintf(cmd, "if test xx$HNV_ACTIVATED_KERNEL_NAME = xxkernel1; "
+	  "then gfkernel=0x%08x otherkernel=0x%08x; "
+	  "else gfkernel=0x%08x otherkernel=0x%08x; fi; "
+	  "loadaddr=0x%08x; kernelsize=0x%08x; ",
+	  UBOOT_PARTITION_OFFSET_KERNEL1, UBOOT_PARTITION_OFFSET_KERNEL0,
+	  UBOOT_PARTITION_OFFSET_KERNEL0, UBOOT_PARTITION_OFFSET_KERNEL1,
+	  RUBY_KERNEL_LOAD_DRAM_BEGIN,
+	  UBOOT_KERNEL_PARTITION_SIZE);
+	setenv("gfparams", cmd);
+
+	const char *gfboot = "run gfparams; "
+	  "spi_flash read $gfkernel $loadaddr $kernelsize; "
+	  "bootm $loadaddr; ";
+
+	char *env = getenv("gfboot");
+	if (env && strcmp(env, gfboot)) {
+		printf("WARNING: Overriding previously defined 'gfboot'\n");
+	}
+	setenv("gfboot", gfboot);
+
+	env = getenv("bootcmd");
+	if (!env) {
+		setenv("bootcmd", "run gfboot");
+	}
+
+	setenv("otherboot",
+	  "run gfparams; "
+	  "spi_flash read $otherkernel $loadaddr $kernelsize; "
+	  "bootm $loadaddr; ");
+#endif
 	return 0;
 }
 
diff --git a/common/image.c b/common/image.c
index 907a288..3dc883b 100644
--- a/common/image.c
+++ b/common/image.c
@@ -100,7 +100,8 @@
 	{	IH_ARCH_SPARC64,	"sparc64",	"SPARC 64 Bit",	},
 	{	IH_ARCH_BLACKFIN,	"blackfin",	"Blackfin",	},
 	{	IH_ARCH_AVR32,		"avr32",	"AVR32",	},
-	{	IH_ARCH_ARC,		"arc",		"arc",	},
+	{	IH_ARCH_ARC,		"arc",		"arc",		},
+	{	IH_ARCH_ARC_UPSTREAM,	"arc",		"arc",		},
 	{	-1,			"",		"",		},
 };
 
diff --git a/include/configs/ruby.h b/include/configs/ruby.h
index ffda11b..1f049c4 100644
--- a/include/configs/ruby.h
+++ b/include/configs/ruby.h
@@ -59,6 +59,8 @@
 #define __HAVE_ARCH_MEMCPY
 #define __HAVE_ARCH_MEMCMP
 
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
 /* No flash support */
 #define CONFIG_SYS_NO_FLASH
 
diff --git a/include/image.h b/include/image.h
index cbacd86..6d83711 100644
--- a/include/image.h
+++ b/include/image.h
@@ -108,8 +108,9 @@
 #define IH_ARCH_NIOS2		15	/* Nios-II	*/
 #define IH_ARCH_BLACKFIN	16	/* Blackfin	*/
 #define IH_ARCH_AVR32		17	/* AVR32	*/
-#define IH_ARCH_ST200	        18	/* STMicroelectronics ST200  */
-#define IH_ARCH_ARC         19  /* ARC */
+#define IH_ARCH_ST200		18	/* STMicroelectronics ST200  */
+#define IH_ARCH_ARC		19	/* ARC (Value from Quantenna) */
+#define IH_ARCH_ARC_UPSTREAM	23	/* ARC (Value from Uboot) */
 
 /*
  * Image Types
@@ -359,7 +360,7 @@
  */
 static inline ulong image_get_data (image_header_t *hdr)
 {
-	return ((ulong)hdr + image_get_header_size ());
+	return ((ulong)hdr + image_get_header_size (hdr));
 }
 
 static inline uint32_t *image_get_qtn_flags_addr (image_header_t *hdr)
@@ -369,8 +370,12 @@
 
 static inline uint32_t image_get_qtn_flags (image_header_t *hdr)
 {
-	uint32_t *flags_addr = image_get_qtn_flags_addr(hdr);
-	return *flags_addr;
+        /* Image only has qtn flags if it is in their format: ARCH_ID == 19 */
+        if (hdr->ih_arch == IH_ARCH_ARC) {
+          uint32_t *flags_addr = image_get_qtn_flags_addr(hdr);
+          return *flags_addr;
+        }
+        return 0;
 }
 
 static inline void image_set_qtn_flags (image_header_t *hdr, uint32_t val)
@@ -381,7 +386,7 @@
 
 static inline uint32_t image_get_image_size (image_header_t *hdr)
 {
-	return (image_get_size (hdr) + image_get_header_size ());
+	return (image_get_size (hdr) + image_get_header_size (hdr));
 }
 static inline ulong image_get_image_end (image_header_t *hdr)
 {
@@ -435,6 +440,11 @@
 }
 static inline int image_check_arch (image_header_t *hdr, uint8_t arch)
 {
+	if (arch == IH_ARCH_ARC) {
+		/* need to accept both quentenna and upstream format as ARC */
+		return (image_get_arch(hdr) == IH_ARCH_ARC) ||
+			(image_get_arch(hdr) == IH_ARCH_ARC_UPSTREAM);
+	}
 	return (image_get_arch (hdr) == arch);
 }
 static inline int image_check_os (image_header_t *hdr, uint8_t os)
@@ -476,7 +486,7 @@
 #elif defined(__sparc__)
 	if (!image_check_arch (hdr, IH_ARCH_SPARC))
 #elif defined(__arc__)
-    if (!image_check_arch (hdr, IH_ARCH_ARC))
+	if (!image_check_arch (hdr, IH_ARCH_ARC))
 #else
 # error Unknown CPU type
 #endif
diff --git a/quantenna/common/uboot_header.h b/quantenna/common/uboot_header.h
index 478cf06..391a908 100644
--- a/quantenna/common/uboot_header.h
+++ b/quantenna/common/uboot_header.h
@@ -44,11 +44,24 @@
 	uint8_t         ih_name[IH_NMLEN];      /* Image Name           */
 } image_header_t;
 
-static inline uint32_t image_get_header_size(void)
+static inline uint32_t image_get_header_size(image_header_t* hdr)
 {
+	/*
+	 * Header size depends on whether image is from Quantenna or Upstream
+	 * Quantenna pads header with 0 up until 8k boundary
+	 * We can distinguish between upstream and quantenna image based on
+	 * ih_arch value of the image.
+	 * Quantenna: IH_ARCH_ARC == 19
+	 * Upstream:  IH_ARCH_ARC == 23
+	 * Our uboot is from quantenna so IH_ARCH_ARC == 19
+	 */
+	if (hdr->ih_arch == IH_ARCH_ARC) {
 #define MAX_KNOWN_PAGE_SIZE 8192
 #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
-	return ROUND_UP(sizeof(image_header_t), MAX_KNOWN_PAGE_SIZE);
+		return ROUND_UP(sizeof(image_header_t), MAX_KNOWN_PAGE_SIZE);
+	} else {
+		return sizeof(image_header_t);
+	}
 }
 
 struct early_flash_config {
diff --git a/tools/chkimage.c b/tools/chkimage.c
index b68fb7f..6bc9596 100644
--- a/tools/chkimage.c
+++ b/tools/chkimage.c
@@ -161,7 +161,8 @@
 		exit (EXIT_FAILURE);
 	}
 
-	if ((unsigned)sbuf.st_size < image_get_header_size ()) {
+	/* This chkimage is not used: NULL passed just so it compiles */
+	if ((unsigned)sbuf.st_size < image_get_header_size (NULL)) {
 		fprintf (stderr,
 				"%s: Bad size: \"%s\" is no valid image\n",
 				cmdname, imagefile);
diff --git a/tools/mkimage.c b/tools/mkimage.c
index 1a0dd27..cf5e4e5 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -180,7 +180,8 @@
 		ep = addr;
 		/* If XIP, entry point must be after the U-Boot header */
 		if (xflag)
-			ep += image_get_header_size ();
+			/* This mkimage not used: null passed for compiler */
+			ep += image_get_header_size (NULL);
 	}
 
 	/*
@@ -188,11 +189,11 @@
 	 * the size of the U-Boot header.
 	 */
 	if (xflag) {
-		if (ep != addr + image_get_header_size ()) {
+		if (ep != addr + image_get_header_size (NULL)) {
 			fprintf (stderr,
 				"%s: For XIP, the entry point must be the load addr + %lu\n",
 				cmdname,
-				(unsigned long)image_get_header_size ());
+				(unsigned long)image_get_header_size (NULL));
 			exit (EXIT_FAILURE);
 		}
 	}
@@ -224,7 +225,7 @@
 			exit (EXIT_FAILURE);
 		}
 
-		if ((unsigned)sbuf.st_size < image_get_header_size ()) {
+		if ((unsigned)sbuf.st_size < image_get_header_size (NULL)) {
 			fprintf (stderr,
 				"%s: Bad size: \"%s\" is no valid image\n",
 				cmdname, imagefile);
@@ -269,7 +270,7 @@
 			cmdname, imagefile, strerror(errno));
 		exit (EXIT_FAILURE);
 	}
-	for (i = sizeof(*hdr); i < image_get_header_size(); ++i) {
+	for (i = sizeof(*hdr); i < image_get_header_size(NULL); ++i) {
 		char c = 0;
 		if (write(ifd, &c, 1) != 1) {
 			fprintf (stderr, "%s: Write error on %s: %s\n",
@@ -359,14 +360,14 @@
 	hdr = (image_header_t *)ptr;
 
 	checksum = crc32 (0,
-			  (const char *)(ptr + image_get_header_size ()),
-			  sbuf.st_size - image_get_header_size ()
+			  (const char *)(ptr + image_get_header_size (NULL)),
+			  sbuf.st_size - image_get_header_size (NULL)
 			 );
 
 	/* Build new header */
 	image_set_magic (hdr, IH_MAGIC);
 	image_set_time (hdr, sbuf.st_mtime);
-	image_set_size (hdr, sbuf.st_size - image_get_header_size ());
+	image_set_size (hdr, sbuf.st_size - image_get_header_size (NULL));
 	image_set_load (hdr, addr);
 	image_set_ep (hdr, ep);
 	image_set_dcrc (hdr, checksum);
@@ -446,14 +447,14 @@
 		 * reserved for it.
 		 */
 
-		if ((unsigned)sbuf.st_size < image_get_header_size ()) {
+		if ((unsigned)sbuf.st_size < image_get_header_size (NULL)) {
 			fprintf (stderr,
 				"%s: Bad size: \"%s\" is too small for XIP\n",
 				cmdname, datafile);
 			exit (EXIT_FAILURE);
 		}
 
-		for (p = ptr; p < ptr + image_get_header_size (); p++) {
+		for (p = ptr; p < ptr + image_get_header_size (NULL); p++) {
 			if ( *p != 0xff ) {
 				fprintf (stderr,
 					"%s: Bad file: \"%s\" has invalid buffer for XIP\n",
@@ -462,7 +463,7 @@
 			}
 		}
 
-		offset = image_get_header_size ();
+		offset = image_get_header_size (NULL);
 	}
 
 	size = sbuf.st_size - offset;
