diff options
author | Marian Balakowicz <m8@semihalf.com> | 2008-02-27 11:02:26 +0100 |
---|---|---|
committer | Marian Balakowicz <m8@semihalf.com> | 2008-02-27 11:02:26 +0100 |
commit | 4efbe9dbb129f857f27856936112c8c02f016be6 (patch) | |
tree | 436ba586908e214d9457c5093369629f7b8cb5f9 /lib_ppc | |
parent | ff0734cff0fb5397ce2f4602f4f3e5ec9c8a36e8 (diff) | |
download | u-boot-4efbe9dbb129f857f27856936112c8c02f016be6.tar.gz u-boot-4efbe9dbb129f857f27856936112c8c02f016be6.tar.xz u-boot-4efbe9dbb129f857f27856936112c8c02f016be6.zip |
[new uImage] Correct raw FDT blob handlig when CONFIG_FIT is disabled
Dual format image code must properly handle all three FDT passing methods:
- raw FDT blob passed
- FDT blob embedded in the legacy uImage
- FDT blob embedded in the new uImage
This patch enables proper raw FDT handling when no FIT imaeg support
is compiled in. This is a bit tricky as we must dected FIT format even
when FIT uImage handling is not enabled as both FIT uImages and raw FDT
blobs use tha same low level format (libfdt).
Signed-off-by: Marian Balakowicz <m8@semihalf.com>
Diffstat (limited to 'lib_ppc')
-rw-r--r-- | lib_ppc/bootm.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c index ad05bc5d8e..d80d69ab2e 100644 --- a/lib_ppc/bootm.c +++ b/lib_ppc/bootm.c @@ -357,11 +357,15 @@ static void get_fdt (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], fdt_blob = (char *)image_get_load (fdt_hdr); break; -#if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: - - /* check FDT blob vs FIT hdr */ - if (fit_uname_config || fit_uname_fdt) { + /* + * This case will catch both: new uImage format + * (libfdt based) and raw FDT blob (also libfdt + * based). + */ +#if defined(CONFIG_FIT) + /* check FDT blob vs FIT blob */ + if (0) { /* FIXME: call FIT format verification */ /* * FIT image */ @@ -369,15 +373,17 @@ static void get_fdt (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], debug ("* fdt: FIT format image\n"); fit_unsupported_reset ("PPC fdt"); do_reset (cmdtp, flag, argc, argv); - } else { + } else +#endif + { /* * FDT blob */ + debug ("* fdt: raw FDT blob\n"); printf ("## Flattened Device Tree blob at %08lx\n", fdt_blob); fdt_blob = (char *)fdt_addr; } break; -#endif default: fdt_error ("Did not find a cmdline Flattened Device Tree"); do_reset (cmdtp, flag, argc, argv); |