summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--README6
-rw-r--r--board/hisilicon/hikey/hikey.c39
-rw-r--r--cmd/mtdparts.c33
-rw-r--r--cmd/read.c2
-rw-r--r--common/board_f.c27
-rw-r--r--common/hash.c95
-rw-r--r--common/spl/spl_mmc.c2
-rw-r--r--configs/taurus_defconfig1
-rw-r--r--env/Kconfig6
-rw-r--r--env/common.c20
-rw-r--r--env/eeprom.c6
-rw-r--r--env/env.c6
-rw-r--r--env/flash.c4
-rw-r--r--env/nand.c2
-rw-r--r--env/nowhere.c13
-rw-r--r--env/nvram.c2
-rw-r--r--fs/fat/fat.c2
-rw-r--r--lib/Kconfig4
-rw-r--r--scripts/Makefile.spl2
-rw-r--r--scripts/config_whitelist.txt1
-rw-r--r--tools/Makefile2
-rw-r--r--tools/dtoc/dtb_platdata.py2
23 files changed, 145 insertions, 134 deletions
diff --git a/Makefile b/Makefile
index 2fc4616..a0f3bfd 100644
--- a/Makefile
+++ b/Makefile
@@ -1379,7 +1379,7 @@ $(timestamp_h): $(srctree)/Makefile FORCE
$(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 @@ The following options need to be configured:
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 @@ static void mmc1_reset_clk(void)
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 @@ static int init_dwmmc(void)
#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 @@ static const char *mtdparts_default = MTDPARTS_DEFAULT;
#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 @@ static void index_partitions(void)
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 @@ static int device_parse(const char *const mtd_dev, const char **ret, struct mtd_
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 @@ static int parse_mtdparts(const char *const mtdparts)
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 @@ int mtdparts_init(void)
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 @@ int do_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
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 @@ static int init_func_spi(void)
}
#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 @@ static const init_fnc_t init_sequence_f[] = {
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 @@ static int hash_finish_sha1(struct hash_algo *algo, void *ctx, void *dest_buf,
}
#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 @@ static int hash_finish_crc32(struct hash_algo *algo, void *ctx, void *dest_buf,
}
/*
- * 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 @@ static int mmc_load_image_raw_os(struct spl_image_info *spl_image,
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_SYS_THUMB_BUILD=y
# 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 @@ menu "Environment"
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 @@ char *env_get_default(const char *name)
/* 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 @@ int env_import_redund(const char *buf1, const char *buf2)
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 @@ void env_relocate(void)
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 @@ static int env_eeprom_load(void)
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 @@ static int env_eeprom_load(void)
}
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 @@ int env_get_char(int index)
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 @@ int env_load(void)
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 @@ int env_init(void)
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 @@ static int env_flash_init(void)
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 @@ static int env_flash_init(void)
}
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 @@ static int env_nand_init(void)
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 @@ static int env_nvram_init(void)
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 @@ static int disk_read(__u32 block, __u32 nr_blocks, void *buf)
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 @@ config OF_LIBFDT
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 @@ config SPL_OF_LIBFDT
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 @@ ifneq ($(cmd_files),)
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_GBIT_MII_BUSNAME
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 @@ tools/_libfdt.so: $(LIBFDT_SRCS) $(LIBFDT_SWIG)
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 @@ class DtbPlatdata(object):
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.