diff --git a/board/BuR/common/common.c b/board/BuR/common/common.c
index 9df1979..98132b7 100644
--- a/board/BuR/common/common.c
+++ b/board/BuR/common/common.c
@@ -26,42 +26,22 @@
 #include <cpsw.h>
 #include <power/tps65217.h>
 #include <lcd.h>
-#include <fs.h>
-#ifdef CONFIG_USE_FDT
-  #include <fdt_support.h>
-#endif
 #include "bur_common.h"
 #include "../../../drivers/video/am335x-fb.h"
-#include <nand.h>
 #include <fdt_simplefb.h>
 
 static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#ifdef CONFIG_USE_FDT
-  #define FDTPROP(b, c) fdt_getprop_u32_default(gd->fdt_blob, b, c, ~0UL)
-  #define PATHTIM "/panel/display-timings/default"
-  #define PATHINF "/panel/panel-info"
-#endif
 /* --------------------------------------------------------------------------*/
 #if defined(CONFIG_LCD) && defined(CONFIG_AM335X_LCD) && \
 	!defined(CONFIG_SPL_BUILD)
 void lcdbacklight(int on)
 {
-#ifdef CONFIG_USE_FDT
-	if (gd->fdt_blob == NULL) {
-		printf("%s: don't have a valid gd->fdt_blob!\n", __func__);
-		return;
-	}
-	unsigned int driver = FDTPROP(PATHINF, "brightdrv");
-	unsigned int bright = FDTPROP(PATHINF, "brightdef");
-	unsigned int pwmfrq = FDTPROP(PATHINF, "brightfdim");
-#else
 	unsigned int driver = env_get_ulong("ds1_bright_drv", 16, 0UL);
 	unsigned int bright = env_get_ulong("ds1_bright_def", 10, 50);
 	unsigned int pwmfrq = env_get_ulong("ds1_pwmfreq", 10, ~0UL);
-#endif
 	unsigned int tmp;
 	struct gptimer *timerhw;
 
@@ -116,70 +96,7 @@
 int load_lcdtiming(struct am335x_lcdpanel *panel)
 {
 	struct am335x_lcdpanel pnltmp;
-#ifdef CONFIG_USE_FDT
-	u32 dtbprop;
-	char buf[32];
-	const char *nodep = 0;
-	int nodeoff;
-
-	if (gd->fdt_blob == NULL) {
-		printf("%s: don't have a valid gd->fdt_blob!\n", __func__);
-		return -1;
-	}
-	memcpy(&pnltmp, (void *)panel, sizeof(struct am335x_lcdpanel));
-
-	pnltmp.hactive = FDTPROP(PATHTIM, "hactive");
-	pnltmp.vactive = FDTPROP(PATHTIM, "vactive");
-	pnltmp.bpp = FDTPROP(PATHINF, "bpp");
-	pnltmp.hfp = FDTPROP(PATHTIM, "hfront-porch");
-	pnltmp.hbp = FDTPROP(PATHTIM, "hback-porch");
-	pnltmp.hsw = FDTPROP(PATHTIM, "hsync-len");
-	pnltmp.vfp = FDTPROP(PATHTIM, "vfront-porch");
-	pnltmp.vbp = FDTPROP(PATHTIM, "vback-porch");
-	pnltmp.vsw = FDTPROP(PATHTIM, "vsync-len");
-	pnltmp.pup_delay = FDTPROP(PATHTIM, "pupdelay");
-	pnltmp.pon_delay = FDTPROP(PATHTIM, "pondelay");
-	pnltmp.pxl_clk = FDTPROP(PATHTIM, "clock-frequency");
-
-	/* check polarity of control-signals */
-	dtbprop = FDTPROP(PATHTIM, "hsync-active");
-	if (dtbprop == 0)
-		pnltmp.pol |= HSYNC_INVERT;
-	dtbprop = FDTPROP(PATHTIM, "vsync-active");
-	if (dtbprop == 0)
-		pnltmp.pol |= VSYNC_INVERT;
-	dtbprop = FDTPROP(PATHINF, "sync-ctrl");
-	if (dtbprop == 1)
-		pnltmp.pol |= HSVS_CONTROL;
-	dtbprop = FDTPROP(PATHINF, "sync-edge");
-	if (dtbprop == 1)
-		pnltmp.pol |= HSVS_RISEFALL;
-	dtbprop = FDTPROP(PATHTIM, "pixelclk-active");
-	if (dtbprop == 0)
-		pnltmp.pol |= PXCLK_INVERT;
-	dtbprop = FDTPROP(PATHTIM, "de-active");
-	if (dtbprop == 0)
-		pnltmp.pol |= DE_INVERT;
 
-	nodeoff = fdt_path_offset(gd->fdt_blob, "/factory-settings");
-	if (nodeoff >= 0) {
-		nodep = fdt_getprop(gd->fdt_blob, nodeoff, "rotation", NULL);
-		if (nodep != 0) {
-			if (strcmp(nodep, "cw") == 0)
-				panel_info.vl_rot = 1;
-			else if (strcmp(nodep, "ud") == 0)
-				panel_info.vl_rot = 2;
-			else if (strcmp(nodep, "ccw") == 0)
-				panel_info.vl_rot = 3;
-			else
-				panel_info.vl_rot = 0;
-		}
-	} else {
-		puts("no 'factory-settings / rotation' in dtb!\n");
-	}
-	snprintf(buf, sizeof(buf), "fbcon=rotate:%d", panel_info.vl_rot);
-	env_set("optargs_rot", buf);
-#else
 	pnltmp.hactive = env_get_ulong("ds1_hactive", 10, ~0UL);
 	pnltmp.vactive = env_get_ulong("ds1_vactive", 10, ~0UL);
 	pnltmp.bpp = env_get_ulong("ds1_bpp", 10, ~0UL);
@@ -194,7 +111,7 @@
 	pnltmp.pup_delay = env_get_ulong("ds1_pupdelay", 10, ~0UL);
 	pnltmp.pon_delay = env_get_ulong("ds1_tondelay", 10, ~0UL);
 	panel_info.vl_rot = env_get_ulong("ds1_rotation", 10, 0);
-#endif
+
 	if (
 	   ~0UL == (pnltmp.hactive) ||
 	   ~0UL == (pnltmp.vactive) ||
@@ -240,117 +157,6 @@
 	return 0;
 }
 
-#ifdef CONFIG_USE_FDT
-static int load_devicetree(void)
-{
-	int rc;
-	loff_t dtbsize;
-	u32 dtbaddr = env_get_ulong("dtbaddr", 16, 0UL);
-
-	if (dtbaddr == 0) {
-		printf("%s: don't have a valid <dtbaddr> in env!\n", __func__);
-		return -1;
-	}
-#ifdef CONFIG_NAND
-	dtbsize = 0x20000;
-	rc = nand_read_skip_bad(get_nand_dev_by_index(0), 0x40000,
-				(size_t *)&dtbsize,
-				NULL, 0x20000, (u_char *)dtbaddr);
-#else
-	char *dtbname = env_get("dtb");
-	char *dtbdev = env_get("dtbdev");
-	char *dtbpart = env_get("dtbpart");
-	if (!dtbdev || !dtbpart || !dtbname) {
-		printf("%s: <dtbdev>/<dtbpart>/<dtb> missing.\n", __func__);
-		return -1;
-	}
-
-	if (fs_set_blk_dev(dtbdev, dtbpart, FS_TYPE_EXT)) {
-		puts("load_devicetree: set_blk_dev failed.\n");
-		return -1;
-	}
-	rc = fs_read(dtbname, (u32)dtbaddr, 0, 0, &dtbsize);
-#endif
-	if (rc == 0) {
-		gd->fdt_blob = (void *)dtbaddr;
-		gd->fdt_size = dtbsize;
-		debug("loaded %d bytes of dtb onto 0x%08x\n",
-		      (u32)dtbsize, (u32)gd->fdt_blob);
-		return dtbsize;
-	}
-
-	printf("%s: load dtb failed!\n", __func__);
-	return -1;
-}
-
-static const char *dtbmacaddr(u32 ifno)
-{
-	int node, len;
-	char enet[16];
-	const char *mac;
-	const char *path;
-
-	if (gd->fdt_blob == NULL) {
-		printf("%s: don't have a valid gd->fdt_blob!\n", __func__);
-		return NULL;
-	}
-
-	node = fdt_path_offset(gd->fdt_blob, "/aliases");
-	if (node < 0)
-		return NULL;
-
-	sprintf(enet, "ethernet%d", ifno);
-	path = fdt_getprop(gd->fdt_blob, node, enet, NULL);
-	if (!path) {
-		printf("no alias for %s\n", enet);
-		return NULL;
-	}
-
-	node = fdt_path_offset(gd->fdt_blob, path);
-	mac = fdt_getprop(gd->fdt_blob, node, "mac-address", &len);
-	if (mac && is_valid_ethaddr((u8 *)mac))
-		return mac;
-
-	return NULL;
-}
-
-static void br_summaryscreen_printdtb(char *prefix,
-				       char *name,
-				       char *suffix)
-{
-	char buf[32] = { 0 };
-	const char *nodep = buf;
-	char *mac = 0;
-	int nodeoffset;
-	int len;
-
-	if (gd->fdt_blob == NULL) {
-		printf("%s: don't have a valid gd->fdt_blob!\n", __func__);
-		return;
-	}
-
-	if (strcmp(name, "brmac1") == 0) {
-		mac = (char *)dtbmacaddr(0);
-		if (mac)
-			sprintf(buf, "%pM", mac);
-	} else if (strcmp(name, "brmac2") == 0) {
-		mac =  (char *)dtbmacaddr(1);
-		if (mac)
-			sprintf(buf, "%pM", mac);
-	} else {
-		nodeoffset = fdt_path_offset(gd->fdt_blob,
-					     "/factory-settings");
-		if (nodeoffset < 0) {
-			puts("no 'factory-settings' in dtb!\n");
-			return;
-		}
-		nodep = fdt_getprop(gd->fdt_blob, nodeoffset, name, &len);
-	}
-	if (nodep && strlen(nodep) > 1)
-		lcd_printf("%s %s %s", prefix, nodep, suffix);
-	else
-		lcd_printf("\n");
-}
 int ft_board_setup(void *blob, bd_t *bd)
 {
 	int nodeoffset;
@@ -393,7 +199,6 @@
 
 	return 0;
 }
-#else
 
 static void br_summaryscreen_printenv(char *prefix,
 				       char *name, char *altname,
@@ -410,39 +215,23 @@
 		lcd_printf("\n");
 	}
 }
-#endif
+
 void br_summaryscreen(void)
 {
-#ifdef CONFIG_USE_FDT
-	br_summaryscreen_printdtb(" - B&R -", "order-no", "-\n");
-	br_summaryscreen_printdtb(" Serial/Rev :", "serial-no", " /");
-	br_summaryscreen_printdtb(" ", "hw-revision", "\n");
-	br_summaryscreen_printdtb(" MAC (IF1)  :", "brmac1", "\n");
-	br_summaryscreen_printdtb(" MAC (IF2)  :", "brmac2", "\n");
-	lcd_puts(" Bootloader : " PLAIN_VERSION "\n");
-	lcd_puts("\n");
-#else
 	br_summaryscreen_printenv(" - B&R -", "br_orderno", 0, "-\n");
 	br_summaryscreen_printenv(" Serial/Rev :", "br_serial", 0, "\n");
 	br_summaryscreen_printenv(" MAC (IF1)  :", "br_mac1", "ethaddr", "\n");
 	br_summaryscreen_printenv(" MAC (IF2)  :", "br_mac2", 0, "\n");
 	lcd_puts(" Bootloader : " PLAIN_VERSION "\n");
 	lcd_puts("\n");
-#endif
 }
 
 void lcdpower(int on)
 {
 	u32 pin, swval, i;
-#ifdef CONFIG_USE_FDT
-	if (gd->fdt_blob == NULL) {
-		printf("%s: don't have a valid gd->fdt_blob!\n", __func__);
-		return;
-	}
-	pin = FDTPROP(PATHINF, "pwrpin");
-#else
+
 	pin = env_get_ulong("ds1_pwr", 16, ~0UL);
-#endif
+
 	if (pin == ~0UL) {
 		puts("no pwrpin in dtb/env, cannot powerup display!\n");
 		return;
@@ -475,10 +264,7 @@
 void lcd_ctrl_init(void *lcdbase)
 {
 	struct am335x_lcdpanel lcd_panel;
-#ifdef CONFIG_USE_FDT
-	/* TODO: is there a better place to load the dtb ? */
-	load_devicetree();
-#endif
+
 	memset(&lcd_panel, 0, sizeof(struct am335x_lcdpanel));
 	if (load_lcdtiming(&lcd_panel) != 0)
 		return;
@@ -652,10 +438,6 @@
 	mac_addr[5] = (mac_lo & 0xFF00) >> 8;
 
 	if (!env_get("ethaddr")) {
-		#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_USE_FDT)
-		printf("<ethaddr> not set. trying DTB ... ");
-		mac = dtbmacaddr(0);
-		#endif
 		if (!mac) {
 			printf("<ethaddr> not set. validating E-fuse MAC ... ");
 			if (is_valid_ethaddr((const u8 *)mac_addr))
diff --git a/include/configs/brppt1.h b/include/configs/brppt1.h
index eb45331..a6cf9ac 100644
--- a/include/configs/brppt1.h
+++ b/include/configs/brppt1.h
@@ -29,7 +29,6 @@
 #define CONFIG_POWER_TPS65217
 
 /* Support both device trees and ATAGs. */
-#define CONFIG_USE_FDT			/* use fdt within board code */
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_INITRD_TAG
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 2f6c955..8d1b03e 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -4677,7 +4677,6 @@
 CONFIG_USB_XHCI_KEYSTONE
 CONFIG_USB_XHCI_OMAP
 CONFIG_USER_LOWLEVEL_INIT
-CONFIG_USE_FDT
 CONFIG_USE_INTERRUPT
 CONFIG_USE_NAND
 CONFIG_USE_NOR
