inline BOOL write_data(u8* data, u32 length, u32 img_total_len) { if(data == 0 ||length==0) { return TRUE; } #if defined(EMMC_TYPE) return write_to_emmc(data, length); #else // Open NAND support printf("write_to_nand OPEN\n"); return write_to_nand(data, length, img_total_len); #endif }
static int do_ezb_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char str_env[CONFIG_SYS_CBSIZE]; int fsize, ssize; if (0 == strcmp("rst", argv[0])) { run_command("reset", 0); } if (0 == strcmp("gk", argv[0])) { run_command("run bootcmd", 0); } else if (0 == strcmp("ufk", argv[0])) { // download and write fsize = download_by_usb(get_ezb_strv(F_IDX_KERNEL)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_KERNEL, ssize); // env, load kernel sprintf(str_env, "nand read 0x%x 0x%x 0x%x", DRAM_KERNEL_BOOTM, NAND_ADDR_KERNEL, ssize); setenv( KEY_LOAD_K, str_env); // save env saveenv_after_download(); } else if (0 == strcmp("ufka", argv[0])) // add:lbb { // download and write fsize = download_by_usb(get_ezb_strv(F_IDX_KERNEL)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_APP_KERNEL, ssize); // env, load kernel sprintf(str_env, "nand read 0x%x 0x%x 0x%x", DRAM_KERNEL_BOOTM, NAND_ADDR_APP_KERNEL, ssize); setenv( KEY_LOAD_K_A, str_env); // save env sprintf(str_env, "%s; %s; bootm 0x%x", getenv( KEY_LOAD_K_A), getenv( KEY_LOAD_R), DRAM_KERNEL_BOOTM); setenv( KEY_APP_BOOTM, str_env); setenv_common(); saveenv(); } else if (0 == strcmp("ufr", argv[0])) { // download and write fsize = download_by_usb(get_ezb_strv(F_IDX_RAMDISK)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_RAMDISK, ssize); // env, load ramdisk sprintf(str_env, "nand read 0x%x 0x%x 0x%x", DRAM_RAMDISK_ADDR, NAND_ADDR_RAMDISK, ssize); setenv( KEY_LOAD_R, str_env); // save env saveenv_after_download(); } else if (0 == strcmp("ufd", argv[0])) { // download and write fsize = download_by_usb(get_ezb_strv(F_IDX_DT)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_DT, ssize); // env, load dt sprintf(str_env, "nand read 0x%x 0x%x 0x%x", DRAM_DTREE_BOOTM, NAND_ADDR_DT, ssize); setenv( KEY_LOAD_DT, str_env); // save env saveenv_after_download(); } else if (0 == strcmp("ufb", argv[0])) { fsize = download_by_usb(get_ezb_strv(F_IDX_UBOOT)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_BOOT, ssize); } else if (0 == strcmp("tfb", argv[0])) { fsize = download_by_tftp(get_ezb_strv(F_IDX_UBOOT)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_BOOT, ssize); } else if (0 == strcmp("tfr", argv[0])) { // download and write fsize = download_by_tftp(get_ezb_strv(F_IDX_RAMDISK)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_RAMDISK, ssize); // env, load ramdisk sprintf(str_env, "nand read 0x%x 0x%x 0x%x", DRAM_RAMDISK_ADDR, NAND_ADDR_RAMDISK, ssize); setenv( KEY_LOAD_R, str_env); // save env saveenv_after_download(); } else if (0 == strcmp("tfk", argv[0])) { // download and write fsize = download_by_tftp(get_ezb_strv(F_IDX_KERNEL)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_KERNEL, ssize); // env, load kernel sprintf(str_env, "nand read 0x%x 0x%x 0x%x", DRAM_KERNEL_BOOTM, NAND_ADDR_KERNEL, ssize); setenv( KEY_LOAD_K, str_env); // save env saveenv_after_download(); } else if (0 == strcmp("rtfr", argv[0])) { // download and write fsize = download_by_tftp(get_ezb_strv(F_IDX_RAMDISK)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_RECOVERY_RAMDISK, ssize); sprintf(str_env, "0x%x", ssize); setenv( KEY_REC_SIZE_R, str_env); saveenv_after_download(); } else if (0 == strcmp("rtfk", argv[0])) { // download and write fsize = download_by_tftp(get_ezb_strv(F_IDX_KERNEL)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_RECOVERY_KERNEL, ssize); sprintf(str_env, "0x%x", ssize); setenv( KEY_REC_SIZE_K, str_env); saveenv_after_download(); } else if (0 == strcmp("rtfa", argv[0])) { // download and write fsize = download_by_tftp(get_ezb_strv(F_IDX_RECOVERY_APP)); ssize = ALIGN_NAND_ERASE_ADDR(fsize); write_to_nand(NAND_ADDR_RECOVERY_APP, ssize); sprintf(str_env, "0x%x", ssize); setenv( KEY_REC_SIZE_A, str_env); saveenv_after_download(); } return 0; }