Merge git://git.denx.de/u-boot-uniphier

 - Fix unmet direct dependencies warning
 - Remove old sLD3 SoC support
 - Update reset data
 - Add dr_mode DT property to avoid warning
diff --git a/Makefile b/Makefile
index 2fc4616..a0f3bfd 100644
--- a/Makefile
+++ b/Makefile
@@ -1379,7 +1379,7 @@
 	$(call filechk,timestamp.h)
 
 checkbinman: tools
-	@if ! ( echo 'import libfdt' | ( PYTHONPATH=tools python )); then \
+	@if ! ( echo 'import libfdt' | ( PYTHONPATH=tools $(PYTHON) )); then \
 		echo >&2; \
 		echo >&2 '*** binman needs the Python libfdt library.'; \
 		echo >&2 '*** Either install it on your system, or try:'; \
diff --git a/README b/README
index 1a7a788..392b5fd 100644
--- a/README
+++ b/README
@@ -404,12 +404,6 @@
 		supported, core will start to execute uboot when wakes up.
 
 - Generic CPU options:
-		CONFIG_SYS_GENERIC_GLOBAL_DATA
-		Defines global data is initialized in generic board board_init_f().
-		If this macro is defined, global data is created and cleared in
-		generic board board_init_f(). Without this macro, architecture/board
-		should initialize global data before calling board_init_f().
-
 		CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN
 
 		Defines the endianess of the CPU. Implementation of those
diff --git a/board/hisilicon/hikey/hikey.c b/board/hisilicon/hikey/hikey.c
index c513d0a..5357f87 100644
--- a/board/hisilicon/hikey/hikey.c
+++ b/board/hisilicon/hikey/hikey.c
@@ -295,13 +295,47 @@
 		data = readl(&peri_sc->rst0_stat);
 	} while (!(data & PERI_RST0_MMC1));
 
-	/* unreset mmc0 clock domain */
+	/* unreset mmc1 clock domain */
 	writel(PERI_RST0_MMC1, &peri_sc->rst0_dis);
 	do {
 		data = readl(&peri_sc->rst0_stat);
 	} while (data & PERI_RST0_MMC1);
 }
 
+static void mmc0_reset_clk(void)
+{
+	unsigned int data;
+
+	/* disable mmc0 bus clock */
+	hi6220_clk_disable(PERI_CLK0_MMC0, &peri_sc->clk0_dis);
+
+	/* enable mmc0 bus clock */
+	hi6220_clk_enable(PERI_CLK0_MMC0, &peri_sc->clk0_en);
+
+	/* reset mmc0 clock domain */
+	writel(PERI_RST0_MMC0, &peri_sc->rst0_en);
+
+	/* bypass mmc0 clock phase */
+	data = readl(&peri_sc->ctrl2);
+	data |= 3;
+	writel(data, &peri_sc->ctrl2);
+
+	/* disable low power */
+	data = readl(&peri_sc->ctrl13);
+	data |= 1 << 3;
+	writel(data, &peri_sc->ctrl13);
+	do {
+		data = readl(&peri_sc->rst0_stat);
+	} while (!(data & PERI_RST0_MMC0));
+
+	/* unreset mmc0 clock domain */
+	writel(PERI_RST0_MMC0, &peri_sc->rst0_dis);
+	do {
+		data = readl(&peri_sc->rst0_stat);
+	} while (data & PERI_RST0_MMC0);
+}
+
+
 /* PMU SSI is the IP that maps the external PMU hi6553 registers as IO */
 static void hi6220_pmussi_init(void)
 {
@@ -349,7 +383,8 @@
 
 #ifdef CONFIG_MMC_DW
 
-	/* mmc0 clocks are already configured by ATF */
+	/* mmc0 pll is already configured by ATF */
+	mmc0_reset_clk();
 	ret = hi6220_pinmux_config(PERIPH_ID_SDMMC0);
 	if (ret)
 		printf("%s: Error configuring pinmux for eMMC (%d)\n"
diff --git a/cmd/mtdparts.c b/cmd/mtdparts.c
index 615aa74..72bff92 100644
--- a/cmd/mtdparts.c
+++ b/cmd/mtdparts.c
@@ -133,9 +133,9 @@
 #define MTDIDS_MAXLEN		128
 #define MTDPARTS_MAXLEN		512
 #define PARTITION_MAXLEN	16
-static char last_ids[MTDIDS_MAXLEN];
-static char last_parts[MTDPARTS_MAXLEN];
-static char last_partition[PARTITION_MAXLEN];
+static char last_ids[MTDIDS_MAXLEN + 1];
+static char last_parts[MTDPARTS_MAXLEN + 1];
+static char last_partition[PARTITION_MAXLEN + 1];
 
 /* low level jffs2 cache cleaning routine */
 extern void jffs2_free_cache(struct part_info *part);
@@ -240,15 +240,22 @@
 			if (dev == current_mtd_dev) {
 				mtddevnum += current_mtd_partnum;
 				env_set_ulong("mtddevnum", mtddevnum);
+				debug("=> mtddevnum %d,\n", mtddevnum);
 				break;
 			}
 			mtddevnum += dev->num_parts;
 		}
 
 		part = mtd_part_info(current_mtd_dev, current_mtd_partnum);
-		env_set("mtddevname", part->name);
+		if (part) {
+			env_set("mtddevname", part->name);
+
+			debug("=> mtddevname %s\n", part->name);
+		} else {
+			env_set("mtddevname", NULL);
 
-		debug("=> mtddevnum %d,\n=> mtddevname %s\n", mtddevnum, part->name);
+			debug("=> mtddevname NULL\n");
+		}
 	} else {
 		env_set("mtddevnum", NULL);
 		env_set("mtddevname", NULL);
@@ -912,12 +919,6 @@
 		return 1;
 	}
 
-	if (num_parts == 0) {
-		printf("no partitions for device %s%d (%s)\n",
-				MTD_DEV_TYPE(id->type), id->num, id->mtd_id);
-		return 1;
-	}
-
 	debug("\ntotal partitions: %d\n", num_parts);
 
 	/* check for next device presence */
@@ -1593,8 +1594,10 @@
 		list_add_tail(&dev->link, &devices);
 		err = 0;
 	}
-	if (err == 1)
+	if (err == 1) {
+		free(dev);
 		device_delall(&devices);
+	}
 
 	return err;
 }
@@ -1730,9 +1733,9 @@
 	if (!initialized) {
 		INIT_LIST_HEAD(&mtdids);
 		INIT_LIST_HEAD(&devices);
-		memset(last_ids, 0, MTDIDS_MAXLEN);
-		memset(last_parts, 0, MTDPARTS_MAXLEN);
-		memset(last_partition, 0, PARTITION_MAXLEN);
+		memset(last_ids, 0, sizeof(last_ids));
+		memset(last_parts, 0, sizeof(last_parts));
+		memset(last_partition, 0, sizeof(last_partition));
 #if defined(CONFIG_SYS_MTDPARTS_RUNTIME)
 		board_mtdparts_default(&mtdids_default, &mtdparts_default);
 #endif
diff --git a/cmd/read.c b/cmd/read.c
index ecf9254..82c2d9a 100644
--- a/cmd/read.c
+++ b/cmd/read.c
@@ -66,7 +66,7 @@
 		return 1;
 	}
 
-	if (blk_dread(dev_desc, offset + blk, cnt, addr) < 0) {
+	if (blk_dread(dev_desc, offset + blk, cnt, addr) != cnt) {
 		printf("Error reading blocks\n");
 		return 1;
 	}
diff --git a/common/board_f.c b/common/board_f.c
index de5f398..104d144 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -211,14 +211,6 @@
 }
 #endif
 
-__maybe_unused
-static int zero_global_data(void)
-{
-	memset((void *)gd, '\0', sizeof(gd_t));
-
-	return 0;
-}
-
 static int setup_mon_len(void)
 {
 #if defined(__ARM__) || defined(__MICROBLAZE__)
@@ -910,25 +902,6 @@
 
 void board_init_f(ulong boot_flags)
 {
-#ifdef CONFIG_SYS_GENERIC_GLOBAL_DATA
-	/*
-	 * For some architectures, global data is initialized and used before
-	 * calling this function. The data should be preserved. For others,
-	 * CONFIG_SYS_GENERIC_GLOBAL_DATA should be defined and use the stack
-	 * here to host global data until relocation.
-	 */
-	gd_t data;
-
-	gd = &data;
-
-	/*
-	 * Clear global data before it is accessed at debug print
-	 * in initcall_run_list. Otherwise the debug print probably
-	 * get the wrong value of gd->have_console.
-	 */
-	zero_global_data();
-#endif
-
 	gd->flags = boot_flags;
 	gd->have_console = 0;
 
diff --git a/common/hash.c b/common/hash.c
index dcf016d..cf4d70f 100644
--- a/common/hash.c
+++ b/common/hash.c
@@ -30,7 +30,7 @@
 #include <u-boot/sha256.h>
 #include <u-boot/md5.h>
 
-#ifdef CONFIG_SHA1
+#if defined(CONFIG_SHA1) && !defined(CONFIG_SHA_PROG_HW_ACCEL)
 static int hash_init_sha1(struct hash_algo *algo, void **ctxp)
 {
 	sha1_context *ctx = malloc(sizeof(sha1_context));
@@ -58,7 +58,7 @@
 }
 #endif
 
-#ifdef CONFIG_SHA256
+#if defined(CONFIG_SHA256) && !defined(CONFIG_SHA_PROG_HW_ACCEL)
 static int hash_init_sha256(struct hash_algo *algo, void **ctxp)
 {
 	sha256_context *ctx = malloc(sizeof(sha256_context));
@@ -113,68 +113,61 @@
 }
 
 /*
- * These are the hash algorithms we support. Chips which support accelerated
- * crypto could perhaps add named version of these algorithms here. Note that
- * algorithm names must be in lower case.
+ * These are the hash algorithms we support.  If we have hardware acceleration
+ * is enable we will use that, otherwise a software version of the algorithm.
+ * Note that algorithm names must be in lower case.
  */
 static struct hash_algo hash_algo[] = {
-	/*
-	 * CONFIG_SHA_HW_ACCEL is defined if hardware acceleration is
-	 * available.
-	 */
-#ifdef CONFIG_SHA_HW_ACCEL
+#ifdef CONFIG_SHA1
 	{
-		"sha1",
-		SHA1_SUM_LEN,
-		hw_sha1,
-		CHUNKSZ_SHA1,
-#ifdef CONFIG_SHA_PROG_HW_ACCEL
-		hw_sha_init,
-		hw_sha_update,
-		hw_sha_finish,
+		.name 		= "sha1",
+		.digest_size	= SHA1_SUM_LEN,
+		.chunk_size	= CHUNKSZ_SHA1,
+#ifdef CONFIG_SHA_HW_ACCEL
+		.hash_func_ws	= hw_sha1,
+#else
+		.hash_func_ws	= sha1_csum_wd,
 #endif
-	}, {
-		"sha256",
-		SHA256_SUM_LEN,
-		hw_sha256,
-		CHUNKSZ_SHA256,
 #ifdef CONFIG_SHA_PROG_HW_ACCEL
-		hw_sha_init,
-		hw_sha_update,
-		hw_sha_finish,
-#endif
-	},
+		.hash_init	= hw_sha_init,
+		.hash_update	= hw_sha_update,
+		.hash_finish	= hw_sha_finish,
+#else
+		.hash_init	= hash_init_sha1,
+		.hash_update	= hash_update_sha1,
+		.hash_finish	= hash_finish_sha1,
 #endif
-#ifdef CONFIG_SHA1
-	{
-		"sha1",
-		SHA1_SUM_LEN,
-		sha1_csum_wd,
-		CHUNKSZ_SHA1,
-		hash_init_sha1,
-		hash_update_sha1,
-		hash_finish_sha1,
 	},
 #endif
 #ifdef CONFIG_SHA256
 	{
-		"sha256",
-		SHA256_SUM_LEN,
-		sha256_csum_wd,
-		CHUNKSZ_SHA256,
-		hash_init_sha256,
-		hash_update_sha256,
-		hash_finish_sha256,
+		.name		= "sha256",
+		.digest_size	= SHA256_SUM_LEN,
+		.chunk_size	= CHUNKSZ_SHA256,
+#ifdef CONFIG_SHA_HW_ACCEL
+		.hash_func_ws	= hw_sha256,
+#else
+		.hash_func_ws	= sha256_csum_wd,
+#endif
+#ifdef CONFIG_SHA_PROG_HW_ACCEL
+		.hash_init	= hw_sha_init,
+		.hash_update	= hw_sha_update,
+		.hash_finish	= hw_sha_finish,
+#else
+		.hash_init	= hash_init_sha256,
+		.hash_update	= hash_update_sha256,
+		.hash_finish	= hash_finish_sha256,
+#endif
 	},
 #endif
 	{
-		"crc32",
-		4,
-		crc32_wd_buf,
-		CHUNKSZ_CRC32,
-		hash_init_crc32,
-		hash_update_crc32,
-		hash_finish_crc32,
+		.name		= "crc32",
+		.digest_size	= 4,
+		.chunk_size	= CHUNKSZ_CRC32,
+		.hash_func_ws	= crc32_wd_buf,
+		.hash_init	= hash_init_crc32,
+		.hash_update	= hash_update_crc32,
+		.hash_finish	= hash_finish_crc32,
 	},
 };
 
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index d95f94c..b2cccc6 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -200,7 +200,7 @@
 		CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR,
 		CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS,
 		(void *) CONFIG_SYS_SPL_ARGS_ADDR);
-	if (count == 0) {
+	if (count != CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS) {
 #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
 		puts("mmc_load_image_raw_os: mmc block read error\n");
 #endif
diff --git a/configs/taurus_defconfig b/configs/taurus_defconfig
index 6fecaf8..4e5fad7 100644
--- a/configs/taurus_defconfig
+++ b/configs/taurus_defconfig
@@ -3,6 +3,7 @@
 # CONFIG_SPL_USE_ARCH_MEMCPY is not set
 # CONFIG_SPL_USE_ARCH_MEMSET is not set
 CONFIG_ARCH_AT91=y
+CONFIG_SPL_LDSCRIPT="arch/$(ARCH)/cpu/u-boot-spl.lds"
 CONFIG_TARGET_TAURUS=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
diff --git a/env/Kconfig b/env/Kconfig
index 748f534..20321f8 100644
--- a/env/Kconfig
+++ b/env/Kconfig
@@ -3,25 +3,25 @@
 choice
 	prompt "Select the location of the environment"
 	default ENV_IS_IN_MMC if ARCH_SUNXI
-	default ENV_IS_IN_FAT if ARCH_BCM283X
 	default ENV_IS_IN_MMC if ARCH_UNIPHIER
 	default ENV_IS_IN_MMC if ARCH_EXYNOS4
 	default ENV_IS_IN_MMC if MX6SX || MX7D
-	default ENV_IS_IN_FLASH if ARCH_CINTEGRATOR
-	default ENV_IS_IN_SPI_FLASH if ARMADA_XP
 	default ENV_IS_IN_MMC if TEGRA30 || TEGRA124
 	default ENV_IS_IN_MMC if TEGRA_ARMV8_COMMON
+	default ENV_IS_IN_FLASH if ARCH_CINTEGRATOR
 	default ENV_IS_IN_FLASH if ARCH_INTEGRATOR_CP
 	default ENV_IS_IN_FLASH if M548x || M547x || M5282 || MCF547x_8x
 	default ENV_IS_IN_FLASH if MCF532x || MCF52x2
 	default ENV_IS_IN_FLASH if MPC86xx || MPC83xx
 	default ENV_IS_IN_FLASH if ARCH_MPC8572 || ARCH_MPC8548 || ARCH_MPC8641
 	default ENV_IS_IN_FLASH if SH && !CPU_SH4
+	default ENV_IS_IN_SPI_FLASH if ARMADA_XP
 	default ENV_IS_IN_SPI_FLASH if INTEL_BAYTRAIL
 	default ENV_IS_IN_SPI_FLASH if INTEL_BROADWELL
 	default ENV_IS_IN_SPI_FLASH if NORTHBRIDGE_INTEL_IVYBRIDGE
 	default ENV_IS_IN_SPI_FLASH if INTEL_QUARK
 	default ENV_IS_IN_SPI_FLASH if INTEL_QUEENSBAY
+	default ENV_IS_IN_FAT if ARCH_BCM283X
 	default ENV_IS_IN_FAT if MMC_OMAP_HS && TI_COMMON_CMD_OPTIONS
 	default ENV_IS_NOWHERE
 	help
diff --git a/env/common.c b/env/common.c
index 688d5ab..b403bd5 100644
--- a/env/common.c
+++ b/env/common.c
@@ -52,7 +52,7 @@
 
 	/* Pretend that the image is bad. */
 	gd->flags &= ~GD_FLG_ENV_READY;
-	gd->env_valid = 0;
+	gd->env_valid = ENV_INVALID;
 	ret_val = env_get(name);
 	gd->env_valid = really_valid;
 	gd->flags = real_gd_flags;
@@ -210,24 +210,24 @@
 		set_default_env("!bad CRC");
 		return 0;
 	} else if (crc1_ok && !crc2_ok) {
-		gd->env_valid = 1;
+		gd->env_valid = ENV_VALID;
 	} else if (!crc1_ok && crc2_ok) {
-		gd->env_valid = 2;
+		gd->env_valid = ENV_REDUND;
 	} else {
 		/* both ok - check serial */
 		if (tmp_env1->flags == 255 && tmp_env2->flags == 0)
-			gd->env_valid = 2;
+			gd->env_valid = ENV_REDUND;
 		else if (tmp_env2->flags == 255 && tmp_env1->flags == 0)
-			gd->env_valid = 1;
+			gd->env_valid = ENV_VALID;
 		else if (tmp_env1->flags > tmp_env2->flags)
-			gd->env_valid = 1;
+			gd->env_valid = ENV_VALID;
 		else if (tmp_env2->flags > tmp_env1->flags)
-			gd->env_valid = 2;
+			gd->env_valid = ENV_REDUND;
 		else /* flags are equal - almost impossible */
-			gd->env_valid = 1;
+			gd->env_valid = ENV_VALID;
 	}
 
-	if (gd->env_valid == 1)
+	if (gd->env_valid == ENV_VALID)
 		ep = tmp_env1;
 	else
 		ep = tmp_env2;
@@ -271,7 +271,7 @@
 	env_reloc();
 	env_htab.change_ok += gd->reloc_off;
 #endif
-	if (gd->env_valid == 0) {
+	if (gd->env_valid == ENV_INVALID) {
 #if defined(CONFIG_ENV_IS_NOWHERE) || defined(CONFIG_SPL_BUILD)
 		/* Environment not changable */
 		set_default_env(NULL);
diff --git a/env/eeprom.c b/env/eeprom.c
index 08ef630..584379e 100644
--- a/env/eeprom.c
+++ b/env/eeprom.c
@@ -122,7 +122,7 @@
 
 	if (!crc_ok[0] && !crc_ok[1]) {
 		gd->env_addr	= 0;
-		gd->env_valid	= 0;
+		gd->env_valid = ENV_INVALID;
 	} else if (crc_ok[0] && !crc_ok[1]) {
 		gd->env_valid = ENV_VALID;
 	} else if (!crc_ok[0] && crc_ok[1]) {
@@ -166,9 +166,9 @@
 	}
 
 	if (crc == new) {
-		gd->env_valid	= ENV_VALID;
+		gd->env_valid = ENV_VALID;
 	} else {
-		gd->env_valid	= 0;
+		gd->env_valid = ENV_INVALID;
 	}
 #endif /* CONFIG_ENV_OFFSET_REDUND */
 
diff --git a/env/env.c b/env/env.c
index 2b8b961..43290d0 100644
--- a/env/env.c
+++ b/env/env.c
@@ -74,7 +74,7 @@
 	struct env_driver *drv = env_driver_lookup_default();
 	int ret;
 
-	if (!gd->env_valid)
+	if (gd->env_valid == ENV_INVALID)
 		return default_environment[index];
 	if (!drv)
 		return -ENODEV;
@@ -98,7 +98,7 @@
 		return -ENODEV;
 	if (!drv->load)
 		return 0;
-	drv->load();  /* TODO(sjg@chromium.org): Make this return an error */
+	ret = drv->load();
 	if (ret) {
 		debug("%s: Environment failed to load (err=%d)\n", __func__,
 		      ret);
@@ -138,7 +138,7 @@
 		ret = drv->init();
 	if (ret == -ENOENT) {
 		gd->env_addr = (ulong)&default_environment[0];
-		gd->env_valid = 0;
+		gd->env_valid = ENV_VALID;
 
 		return 0;
 	} else if (ret) {
diff --git a/env/flash.c b/env/flash.c
index b60be57..bac10ff 100644
--- a/env/flash.c
+++ b/env/flash.c
@@ -94,7 +94,7 @@
 		gd->env_valid	= ENV_VALID;
 	} else if (!crc1_ok && !crc2_ok) {
 		gd->env_addr	= addr_default;
-		gd->env_valid	= 0;
+		gd->env_valid	= ENV_INVALID;
 	} else if (flag1 == ACTIVE_FLAG && flag2 == OBSOLETE_FLAG) {
 		gd->env_addr	= addr1;
 		gd->env_valid	= ENV_VALID;
@@ -231,7 +231,7 @@
 	}
 
 	gd->env_addr	= (ulong)&default_environment[0];
-	gd->env_valid	= 0;
+	gd->env_valid	= ENV_INVALID;
 	return 0;
 }
 #endif
diff --git a/env/nand.c b/env/nand.c
index dea7b00..8058b55 100644
--- a/env/nand.c
+++ b/env/nand.c
@@ -79,7 +79,7 @@
 
 	if (!crc1_ok && !crc2_ok) {
 		gd->env_addr	= 0;
-		gd->env_valid	= 0;
+		gd->env_valid	= ENV_INVALID;
 
 		return 0;
 	} else if (crc1_ok && !crc2_ok) {
diff --git a/env/nowhere.c b/env/nowhere.c
index d60de49..f654883 100644
--- a/env/nowhere.c
+++ b/env/nowhere.c
@@ -15,7 +15,20 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+/*
+ * Because we only ever have the default environment available we must mark
+ * it as invalid.
+ */
+static int env_nowhere_init(void)
+{
+	gd->env_addr	= (ulong)&default_environment[0];
+	gd->env_valid	= ENV_INVALID;
+
+	return 0;
+}
+
 U_BOOT_ENV_LOCATION(nowhere) = {
 	.location	= ENVL_NOWHERE,
+	.init		= env_nowhere_init,
 	ENV_NAME("nowhere")
 };
diff --git a/env/nvram.c b/env/nvram.c
index 5fb3115..c8b3475 100644
--- a/env/nvram.c
+++ b/env/nvram.c
@@ -106,7 +106,7 @@
 		gd->env_valid = ENV_VALID;
 	} else {
 		gd->env_addr	= (ulong)&default_environment[0];
-		gd->env_valid	= 0;
+		gd->env_valid	= ENV_INVALID;
 	}
 
 	return 0;
diff --git a/fs/fat/fat.c b/fs/fat/fat.c
index 9ad18f9..465a687 100644
--- a/fs/fat/fat.c
+++ b/fs/fat/fat.c
@@ -54,7 +54,7 @@
 
 	ret = blk_dread(cur_dev, cur_part_info.start + block, nr_blocks, buf);
 
-	if (nr_blocks && ret == 0)
+	if (ret != nr_blocks)
 		return -1;
 
 	return ret;
diff --git a/lib/Kconfig b/lib/Kconfig
index 8163617..d73052d 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -185,7 +185,7 @@
 	help
 	  This enables the FDT library (libfdt). It provides functions for
 	  accessing binary device tree images in memory, such as adding and
-	  removing notes and properties, scanning through the tree and finding
+	  removing nodes and properties, scanning through the tree and finding
 	  particular compatible nodes. The library operates on a flattened
 	  version of the device tree.
 
@@ -200,7 +200,7 @@
 	help
 	  This enables the FDT library (libfdt). It provides functions for
 	  accessing binary device tree images in memory, such as adding and
-	  removing notes and properties, scanning through the tree and finding
+	  removing nodes and properties, scanning through the tree and finding
 	  particular compatible nodes. The library operates on a flattened
 	  version of the device tree.
 
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index 3ba0007..dd8065d 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -369,7 +369,7 @@
 endif
 
 checkdtoc: tools
-	@if ! ( echo 'import libfdt' | ( PYTHONPATH=tools python )); then \
+	@if ! ( echo 'import libfdt' | ( PYTHONPATH=tools $(PYTHON) )); then \
 		echo '*** dtoc needs the Python libfdt library. Either '; \
 		echo '*** install it on your system, or try:'; \
 		echo '***'; \
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index b3dac2d..6c628c8 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -3342,7 +3342,6 @@
 CONFIG_SYS_GBL_DATA_OFFSET
 CONFIG_SYS_GBL_DATA_SIZE
 CONFIG_SYS_GENERIC_BOARD
-CONFIG_SYS_GENERIC_GLOBAL_DATA
 CONFIG_SYS_GIC400_ADDR
 CONFIG_SYS_GP1DIR
 CONFIG_SYS_GP1ODR
diff --git a/tools/Makefile b/tools/Makefile
index a1790eb..086c533 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -138,7 +138,7 @@
 		CPPFLAGS="$(_hostc_flags)" OBJDIR=tools \
 		SOURCES="$(LIBFDT_SRCS) tools/libfdt.i" \
 		SWIG_OPTS="-I$(srctree)/lib/libfdt -I$(srctree)/lib" \
-		$(libfdt_tree)/pylibfdt/setup.py --quiet build_ext \
+		$(PYTHON) $(libfdt_tree)/pylibfdt/setup.py build_ext \
 			--build-lib tools
 
 ifneq ($(CONFIG_MX23)$(CONFIG_MX28),)
diff --git a/tools/dtoc/dtb_platdata.py b/tools/dtoc/dtb_platdata.py
index 1f85343..041a331 100644
--- a/tools/dtoc/dtb_platdata.py
+++ b/tools/dtoc/dtb_platdata.py
@@ -197,7 +197,7 @@
         return lines
 
     def scan_dtb(self):
-        """Scan the device tree to obtain a tree of notes and properties
+        """Scan the device tree to obtain a tree of nodes and properties
 
         Once this is done, self._fdt.GetRoot() can be called to obtain the
         device tree root node, and progress from there.