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

}
Example #2
0
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;
}