diff --git a/board/logicpd/omap3som/README b/board/logicpd/omap3som/README
index b77b3d6..5aaf58f 100644
--- a/board/logicpd/omap3som/README
+++ b/board/logicpd/omap3som/README
@@ -1,21 +1,15 @@
 Summary
 =======
 
-The source for omap3som encompases the DM3730 SOM-LV and DM3730 Torpedo platforms.
+The source for omap3logic.c encompases the OMAP35 and DM3730 SOM-LV and DM3730 Torpedo platforms, but there are device trees custom taylored to each board.
 
-By default, the Torpedo Device Tree is integrated into U-Boot,but the MMC controller, GPIO and I2C controllers are the same, so for the purposes of loading U-Boot, it should be sufficient.  However this will display the Model as "LogicPD Zoom DM3730 Torpedo + Wireless Development Kit" upon boot.
-
-The actual board remains autodetected and the Board will read "DM37xx SOM LV" when used on the DM37 SOM-LV.  The device tree loaded with Linux is also correct.
-
-Integrating the SOM-LV Device Tree into U-Boot
-==============================================
-
-This step is optional, but should you want to change the default to the SOM-LV, locate the configs/omap3_logic_defconfig file and make the following change.
-
-  CONFIG_DEFAULT_DEVICE_TREE="logicpd-som-lv-37xx-devkit"
+omap3_logic_defconfig = DM37 Torpedo / Torpedo + Wireless
+omap35_logic_defconfig = OMAP35 Torpedo
+omap3_logic_somlv_defconfig = DM37 SOM-LV
+omap35_logic_somlv_defconfig = OMAP35 SOM-LV
 
-  make distclean
-  make omap3_logic_defconfig
+The device tree included with each of the defconfig files will also direct the board as to which dtb file to load when loading the kernel, so it is not
+recomended to mix and match the defconfig files.
 
 Falcon Mode: FAT SD cards
 =========================
diff --git a/board/logicpd/omap3som/omap3logic.c b/board/logicpd/omap3som/omap3logic.c
index 48d8869..4507b1e 100644
--- a/board/logicpd/omap3som/omap3logic.c
+++ b/board/logicpd/omap3som/omap3logic.c
@@ -70,40 +70,6 @@
 
 #endif
 
-/*
- * two dimensional array of strucures containining board name and Linux
- * machine IDs; row it selected based on CPU column is slected based
- * on hsusb0_data5 pin having a pulldown resistor
- */
-static struct board_id {
-	char *name;
-	int machine_id;
-	char *fdtfile;
-} boards[2][2] = {
-	{
-		{
-			.name		= "OMAP35xx SOM LV",
-			.machine_id	= MACH_TYPE_OMAP3530_LV_SOM,
-			.fdtfile	= "logicpd-som-lv-35xx-devkit.dtb",
-		},
-		{
-			.name		= "OMAP35xx Torpedo",
-			.machine_id	= MACH_TYPE_OMAP3_TORPEDO,
-			.fdtfile	= "logicpd-torpedo-35xx-devkit.dtb",
-		},
-	},
-	{
-		{
-			.name		= "DM37xx SOM LV",
-			.fdtfile	= "logicpd-som-lv-37xx-devkit.dtb",
-		},
-		{
-			.name		= "DM37xx Torpedo",
-			.fdtfile	= "logicpd-torpedo-37xx-devkit.dtb",
-		},
-	},
-};
-
 #ifdef CONFIG_SPL_OS_BOOT
 int spl_start_uboot(void)
 {
@@ -226,7 +192,6 @@
 
 #endif /* CONFIG_USB_EHCI_HCD */
 
-
 /*
  * Routine: misc_init_r
  * Description: Configure board specific parts
@@ -244,11 +209,6 @@
 }
 
 /*
- * BOARD_ID_GPIO - GPIO of pin with optional pulldown resistor on SOM LV
- */
-#define BOARD_ID_GPIO	189 /* hsusb0_data5 pin */
-
-/*
  * Routine: board_init
  * Description: Early hardware init.
  */
@@ -275,54 +235,6 @@
 
 int board_late_init(void)
 {
-	struct board_id *board;
-	unsigned int val;
-
-	/*
-	 * To identify between a SOM LV and Torpedo module,
-	 * a pulldown resistor is on hsusb0_data5 for the SOM LV module.
-	 * Drive the pin (and let it soak), then read it back.
-	 * If the pin is still high its a Torpedo.  If low its a SOM LV
-	 */
-
-	/* Mux hsusb0_data5 as a GPIO */
-	MUX_VAL(CP(HSUSB0_DATA5),	(IEN  | PTD | DIS | M4));
-
-	if (gpio_request(BOARD_ID_GPIO, "husb0_data5.gpio_189") == 0) {
-
-		/*
-		 * Drive BOARD_ID_GPIO - the pulldown resistor on the SOM LV
-		 * will drain the voltage.
-		 */
-		gpio_direction_output(BOARD_ID_GPIO, 0);
-		gpio_set_value(BOARD_ID_GPIO, 1);
-
-		/* Let it soak for a bit */
-		sdelay(0x100);
-
-		/*
-		 * Read state of BOARD_ID_GPIO as an input and if its set.
-		 * If so the board is a Torpedo
-		 */
-		gpio_direction_input(BOARD_ID_GPIO);
-		val = gpio_get_value(BOARD_ID_GPIO);
-		gpio_free(BOARD_ID_GPIO);
-
-		board = &boards[!!(get_cpu_family() == CPU_OMAP36XX)][!!val];
-		printf("Board: %s\n", board->name);
-
-		/* Set the machine_id passed to Linux */
-		if (board->machine_id)
-			gd->bd->bi_arch_number = board->machine_id;
-
-		/* If the user has not set fdtimage, set the default */
-		if (!env_get("fdtimage"))
-			env_set("fdtimage", board->fdtfile);
-	}
-
-	/* restore hsusb0_data5 pin as hsusb0_data5 */
-	MUX_VAL(CP(HSUSB0_DATA5),	(IEN  | PTD | DIS | M0));
-
 #ifdef CONFIG_CMD_NAND_LOCK_UNLOCK
 	unlock_nand();
 #endif
@@ -356,5 +268,3 @@
 	return smc911x_initialize(0, CONFIG_SMC911X_BASE);
 }
 #endif
-
-
