On Tue, 5 Jul 2011 15:20:39 +0200 Simon Schwarz <simonschwarz...@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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot