]> Git Repo - J-u-boot.git/blobdiff - cmd/load.c
Merge patch series "clk: mediatek: add OPs to support OF_UPSTREAM"
[J-u-boot.git] / cmd / load.c
index 5c4f34781d452e83448ed8f35142e860c157f4bc..d773a25d70c59669d9de8efe0841e84c754e9410 100644 (file)
@@ -7,7 +7,6 @@
 /*
  * Serial up- and download support
  */
-#include <common.h>
 #include <command.h>
 #include <console.h>
 #include <cpu_func.h>
@@ -181,13 +180,17 @@ static ulong load_serial(long offset)
                    } else
 #endif
                    {
+                       void *dst;
+
                        ret = lmb_reserve(&lmb, store_addr, binlen);
                        if (ret) {
                                printf("\nCannot overwrite reserved area (%08lx..%08lx)\n",
                                        store_addr, store_addr + binlen);
                                return ret;
                        }
-                       memcpy((char *)(store_addr), binbuf, binlen);
+                       dst = map_sysmem(store_addr, binlen);
+                       memcpy(dst, binbuf, binlen);
+                       unmap_sysmem(dst);
                        lmb_free(&lmb, store_addr, binlen);
                    }
                    if ((store_addr) < start_addr)
@@ -226,7 +229,7 @@ static ulong load_serial(long offset)
 static int read_record(char *buf, ulong len)
 {
        char *p;
-       char c;
+       int c;
 
        --len;  /* always leave room for terminating '\0' byte */
 
@@ -350,15 +353,19 @@ static int save_serial(ulong address, ulong count)
        if(write_record(SREC3_START))                   /* write the header */
                return (-1);
        do {
-               if(count) {                                             /* collect hex data in the buffer  */
-                       c = *(volatile uchar*)(address + reclen);       /* get one byte    */
-                       checksum += c;                                                  /* accumulate checksum */
+               volatile uchar *src;
+
+               src = map_sysmem(address, count);
+               if (count) {                            /* collect hex data in the buffer */
+                       c = src[reclen];                /* get one byte */
+                       checksum += c;                  /* accumulate checksum */
                        data[2*reclen]   = hex[(c>>4)&0x0f];
                        data[2*reclen+1] = hex[c & 0x0f];
                        data[2*reclen+2] = '\0';
                        ++reclen;
                        --count;
                }
+               unmap_sysmem((void *)src);
                if(reclen == SREC_BYTES_PER_RECORD || count == 0) {
                        /* enough data collected for one record: dump it */
                        if(reclen) {    /* build & write a data record: */
@@ -410,7 +417,6 @@ static int write_record(char *buf)
 
 #endif
 
-
 #if defined(CONFIG_CMD_LOADB)
 /*
  * loadb command (load binary) included
@@ -434,7 +440,6 @@ static void set_kerm_bin_mode(unsigned long *);
 static int k_recv(void);
 static ulong load_serial_bin(ulong offset);
 
-
 static char his_eol;        /* character he needs at end of packet */
 static int  his_pad_count;  /* number of pad chars he needs */
 static char his_pad_char;   /* pad chars he needs */
@@ -550,7 +555,6 @@ static int do_load_serial_bin(struct cmd_tbl *cmdtp, int flag, int argc,
        return rcode;
 }
 
-
 static ulong load_serial_bin(ulong offset)
 {
        int size, i;
@@ -645,7 +649,6 @@ static void send_nack(int n)
        s1_sendpacket(a_b);
 }
 
-
 static void (*os_data_init)(void);
 static void (*os_data_char)(char new_char);
 static int os_data_state, os_data_state_saved;
@@ -686,7 +689,6 @@ static void set_kerm_bin_mode(unsigned long *addr)
        os_data_char = bin_data_char;
 }
 
-
 /* k_data_* simply handles the kermit escape translations */
 static int k_data_escape, k_data_escape_saved;
 static void k_data_init(void)
@@ -819,7 +821,7 @@ static void handle_send_packet(int n)
 /* k_recv receives a OS Open image file over kermit line */
 static int k_recv(void)
 {
-       char new_char;
+       int new_char;
        char k_state, k_state_saved;
        int sum;
        int done;
@@ -1059,7 +1061,6 @@ static ulong load_serial_ymodem(ulong offset, int mode)
        xyzModem_stream_terminate(false, &getcxmodem);
        xyzModem_stream_close(&err);
 
-
        flush_cache(offset, ALIGN(size, ARCH_DMA_MINALIGN));
 
        printf("## Total Size      = 0x%08x = %d Bytes\n", size, size);
@@ -1134,7 +1135,6 @@ U_BOOT_CMD(
  * SAVES always requires LOADS support, but not vice versa
  */
 
-
 #if defined(CONFIG_CMD_SAVES)
 #ifdef CONFIG_SYS_LOADS_BAUD_CHANGE
 U_BOOT_CMD(
@@ -1155,7 +1155,6 @@ U_BOOT_CMD(
 #endif /* CONFIG_CMD_SAVES */
 #endif /* CONFIG_CMD_LOADS */
 
-
 #if defined(CONFIG_CMD_LOADB)
 U_BOOT_CMD(
        loadb, 3, 0,    do_load_serial_bin,
This page took 0.030034 seconds and 4 git commands to generate.