
On Tue, 5 Jul 2011 15:20:39 +0200 Simon Schwarz simonschwarzcor@googlemail.com wrote:
+#ifdef CONFIG_SAVE_BOOT_ARGS +/* This function writes given bootparams to NAND flash
- adr: Start adress of Kernel parameter image (ATAGS, FDT)
- length: length of the image in byte
- borrowd heavily from common/cmd_nand.c
- */
+void boot_params_to_nand(u_char *adr, size_t length) {
Brace on its own line for functions
- /* write */
- if(nand_write_skip_bad(nand, off, &length, adr, 0))
printf("FAILED!\n");
Space after "if"
+#ifdef CONFIG_SAVE_BOOT_ARGS
- struct tag *t;
- size_t size=0;
+#endif
Spaces around =
if ((flag != 0) && (flag != BOOTM_STATE_OS_GO)) return 1;
@@ -150,6 +198,17 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) setup_end_tag(bd); #endif
+#ifdef CONFIG_SAVE_BOOT_ARGS
- printf("write ATAGS to NAND...\n");
- /* get size of atags */
- for_each_tag(t, (struct tag *)(bd->bi_boot_params))
size += t->hdr.size;
- size += 2; /* ATAG_NONE has size 0 */
- size *= 4; /* words -> byte! */
- boot_params_to_nand((u_char *)bd->bi_boot_params, size);
+#endif
announce_and_cleanup();
kernel_entry(0, machid, bd->bi_boot_params);
@@ -208,6 +267,11 @@ static int bootm_linux_fdt(int machid, bootm_headers_t *images)
fdt_initrd(*of_flat_tree, *initrd_start, *initrd_end, 1);
+#ifdef CONFIG_SAVE_BOOT_ARGS
- printf("write FDT to NAND...\n");
- boot_params_to_nand((u_char *)(*of_flat_tree),of_size);
+#endif
Why are you writing to NAND as part of bootm?
If you just want access to the results of the FDT/ATAG preparation that bootm does, consider using the bootm subcommands to prepare them, then normal U-Boot commands to write to NAND.
-Scott