zte's code,first commit
Change-Id: I9a04da59e459a9bc0d67f101f700d9d7dc8d681b
diff --git a/boot/common/src/uboot/downloader/cmd_compat_read.c b/boot/common/src/uboot/downloader/cmd_compat_read.c
new file mode 100644
index 0000000..04c59cc
--- /dev/null
+++ b/boot/common/src/uboot/downloader/cmd_compat_read.c
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (C) 2016, ZIXC Corporation.
+ *
+ * File Name:cmd_compat_read.c
+ * File Mark:
+ * Description:
+ * Others:
+ * Version: 1.0
+ * Author: zangxiaofeng
+ * Date: 2013-3-13
+ * History 1:
+ * Date:
+ * Version:
+ * Author:
+ * Modification:
+ * History 2:
+ ********************************************************************************/
+
+
+/****************************************************************************
+* Include files
+****************************************************************************/
+#include <common.h>
+#include <command.h>
+#include <net.h>
+#include <jffs2/load_kernel.h>
+#include "downloader_config.h"
+#include "downloader_nand.h"
+#include "downloader_serial.h"
+#include <boot_mode.h>
+
+#include "errno.h"
+/****************************************************************************
+* Global Function Prototypes
+****************************************************************************/
+
+
+/*******************************************************************************
+ * Function:do_compat_read
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+ int do_compat_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+ partition_entry_t *part = NULL;
+ char *par = NULL;
+ char ack[64]={0};
+ unsigned int offset = 0;
+ unsigned int size = 0;
+ unsigned int ret = 0;
+
+ if(argc<4)
+ {
+ return cmd_usage(cmdtp);
+ }
+
+
+ par = argv[1];
+ offset = (unsigned int)simple_strtoul (argv[2], NULL, 16);
+ size = (unsigned int)simple_strtoul (argv[3], NULL, 16);
+ part = downloader_get_part(par);
+ if(part == NULL)
+ {
+ sprintf(ack,"FAIL INVALID PARTITION TYPE");
+ downloader_serial_write(ack, strlen(ack)+1);
+ return -1;
+ }
+
+ if((read_boot_flashtype() == IF_TYPE_NOR)
+ && (strcmp((const char *)part->part_type,"nand") == 0))
+
+ {
+ ret = do_nor_read(part, par, offset,size);
+ return ret;
+ }
+
+
+ if(strcmp((const char *)part->part_type,"nand") == 0)
+ {
+ ret = do_nand_read(part, par, offset, size);
+ return ret;
+ }
+ else if (strcmp((const char *)part->part_type,"fs") == 0)
+ {
+ ret = do_yaffs_read(part, par, offset, size);
+ return ret;
+ }
+ else if (strcmp((const char *)part->part_type,"ddr") == 0)
+ {
+ ret = do_ram_read(offset, size);
+ return ret;
+ }
+ else if (strcmp((const char *)part->part_type,"raw") == 0)
+ {
+ ret = do_raw_read(offset, size);
+ return ret;
+ }
+ else
+ {
+ sprintf(ack,"FAIL INVALID PARTITION TYPE");
+ downloader_serial_write(ack, strlen(ack)+1);
+ return -1;
+ }
+}
+U_BOOT_CMD(
+ compat_read, CONFIG_SYS_MAXARGS, 0, do_compat_read,
+ "upload: compat_read [partition][offset][size]",
+ ""
+);
+
+
+
+
+
+