diff --git a/arch/arm/cpu/armv7/am33xx/ddr.c b/arch/arm/cpu/armv7/am33xx/ddr.c
index d1e2fd3..3a93db1 100644
--- a/arch/arm/cpu/armv7/am33xx/ddr.c
+++ b/arch/arm/cpu/armv7/am33xx/ddr.c
@@ -21,6 +21,12 @@ http://www.ti.com/
 #include <asm/io.h>
 #include <asm/emif.h>
 
+/* This value might need some tweaking, but it effectively allows the LCDC */
+/* and the ARM to play fairer in memory, so the LCDC does not get starved causing */
+/* the screen to roll */
+/* See Page 439 in spruh73g (AM33xx TRM) for details */
+#define AM33XX_INT_CONFIG_COUNT 0x00303030
+
 /**
  * Base address for EMIF instances
  */
@@ -79,6 +85,10 @@ void set_sdram_timings(const struct emif_regs *regs, int nr)
 	writel(regs->sdram_tim2, &emif_reg[nr]->emif_sdram_tim_2_shdw);
 	writel(regs->sdram_tim3, &emif_reg[nr]->emif_sdram_tim_3);
 	writel(regs->sdram_tim3, &emif_reg[nr]->emif_sdram_tim_3_shdw);
+
+	/* Configure INT_CONFIG value so that LCDC does not get stalled */
+	/* for a long time if ARM is accessing memory */
+	writel(AM33XX_INT_CONFIG_COUNT, &emif_reg[nr]->emif_l3_config);
 }
 
 /**
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
index fdbe26c..9e2035f 100644
--- a/board/ti/am335x/board.c
+++ b/board/ti/am335x/board.c
@@ -50,6 +50,8 @@ static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
 
 static struct am335x_baseboard_id __attribute__((section (".data"))) header;
 
+static int __attribute__((section (".data"))) unknown_board;
+
 static inline int board_is_bone(void)
 {
 	return !strncmp(header.name, "A335BONE", HDR_NAME_LEN);
@@ -81,6 +83,16 @@ int board_is_evm_15_or_later(void)
 		strncmp("1.5", header.version, 3) <= 0);
 }
 
+static inline int board_is_usomiq(void)
+{
+	return !strncmp(header.name, "A335USOM", HDR_NAME_LEN);
+}
+
+static inline int board_is_unknown(void)
+{
+	return unknown_board;
+}
+
 /*
  * Read header information from EEPROM into global structure.
  */
@@ -90,6 +102,7 @@ static int read_eeprom(void)
 	if (i2c_probe(CONFIG_SYS_I2C_EEPROM_ADDR)) {
 		puts("Could not probe the EEPROM; something fundamentally "
 			"wrong on the I2C bus.\n");
+		unknown_board = 1;
 		return -ENODEV;
 	}
 
@@ -98,6 +111,7 @@ static int read_eeprom(void)
 							sizeof(header))) {
 		puts("Could not read the EEPROM; something fundamentally"
 			" wrong on the I2C bus.\n");
+		unknown_board = 1;
 		return -EIO;
 	}
 
@@ -110,12 +124,14 @@ static int read_eeprom(void)
 					(uchar *)&header, sizeof(header))) {
 			puts("Could not read the EEPROM; something "
 				"fundamentally wrong on the I2C bus.\n");
+			unknown_board = 1;
 			return -EIO;
 		}
 
 		if (header.magic != 0xEE3355AA) {
 			printf("Incorrect magic number (0x%x) in EEPROM\n",
 					header.magic);
+			unknown_board = 1;
 			return -EINVAL;
 		}
 	}
@@ -359,7 +375,7 @@ void s_init(void)
 	if (board_is_evm_sk())
 		config_ddr(303, MT41J128MJT125_IOCTRL_VALUE, &ddr3_data,
 			   &ddr3_cmd_ctrl_data, &ddr3_emif_reg_data, 0);
-	else if (board_is_bone_lt())
+	else if (board_is_bone_lt() || board_is_usomiq() || board_is_unknown())
 		config_ddr(400, MT41K256M16HA125E_IOCTRL_VALUE,
 			   &ddr3_beagleblack_data,
 			   &ddr3_beagleblack_cmd_ctrl_data,
@@ -478,7 +494,8 @@ int board_eth_init(bd_t *bis)
 	}
 
 #ifdef CONFIG_DRIVER_TI_CPSW
-	if (board_is_bone() || board_is_bone_lt() || board_is_idk()) {
+	if (board_is_bone() || board_is_bone_lt() || board_is_idk()
+			|| board_is_usomiq() || board_is_unknown()) {
 		writel(MII_MODE_ENABLE, &cdev->miisel);
 		cpsw_slaves[0].phy_if = cpsw_slaves[1].phy_if =
 				PHY_INTERFACE_MODE_MII;
diff --git a/board/ti/am335x/mux.c b/board/ti/am335x/mux.c
index 0283708..a1e8e6a 100644
--- a/board/ti/am335x/mux.c
+++ b/board/ti/am335x/mux.c
@@ -304,8 +304,18 @@ void enable_board_pin_mux(struct am335x_baseboard_id *header)
 		configure_module_pin_mux(mii1_pin_mux);
 		configure_module_pin_mux(mmc0_pin_mux);
 		configure_module_pin_mux(mmc1_pin_mux);
+	} else if (!strncmp(header->name, "A335USOM", HDR_NAME_LEN)) {
+		/* uSomIQ pinmux */
+		configure_module_pin_mux(i2c1_pin_mux);
+		configure_module_pin_mux(mii1_pin_mux);
+		configure_module_pin_mux(mmc0_pin_mux);
+		configure_module_pin_mux(nand_pin_mux);
 	} else {
-		puts("Unknown board, cannot configure pinmux.");
-		hang();
+		puts("Unknown board, configure pinmux for uSomIQ\n");
+		/* uSomIQ pinmux */
+		configure_module_pin_mux(i2c1_pin_mux);
+		configure_module_pin_mux(mii1_pin_mux);
+		configure_module_pin_mux(mmc0_pin_mux);
+		configure_module_pin_mux(nand_pin_mux);
 	}
 }
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index c5a6d4b..ab64c25 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -59,7 +59,7 @@
 	"fdt_high=0xffffffff\0" \
 	"rdaddr=0x81000000\0" \
 	"bootdir=/boot\0" \
-	"bootfile=uImage\0" \
+	"bootfile=zImage\0" \
 	"fdtfile=undefined\0" \
 	"console=ttyO0,115200n8\0" \
 	"optargs=\0" \
@@ -117,11 +117,14 @@
 	"loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
 	"mmcboot=echo Booting from mmc ...; " \
 		"run mmcargs; " \
-		"bootm ${loadaddr} - ${fdtaddr}\0" \
+		"bootz ${loadaddr} - ${fdtaddr}\0" \
+	"mmc_classic_boot=echo Booting from mmc ...; " \
+		"run mmcargs; " \
+		"bootz ${loadaddr}\0" \
 	"nandboot=echo Booting from nand ...; " \
 		"run nandargs; " \
 		"nand read ${loadaddr} ${nandsrcaddr} ${nandimgsize}; " \
-		"bootm ${loadaddr}\0" \
+		"bootz ${loadaddr}\0" \
 	"spiboot=echo Booting from spi ...; " \
 		"run spiargs; " \
 		"sf probe ${spibusno}:0; " \
@@ -327,7 +330,7 @@
 
 #ifdef CONFIG_SPL_OS_BOOT
 /* fat */
-#define CONFIG_SPL_FAT_LOAD_KERNEL_NAME		"uImage"
+#define CONFIG_SPL_FAT_LOAD_KERNEL_NAME		"zImage"
 #define CONFIG_SPL_FAT_LOAD_ARGS_NAME		"args"
 #define CONFIG_SYS_SPL_ARGS_ADDR		(PHYS_DRAM_1 + 0x100)
 
