DECLARE_GLOBAL_DATA_PTR;
#if defined(CONFIG_CMD_LOADB)
-static ulong load_serial_ymodem (ulong offset);
+static ulong load_serial_ymodem(ulong offset);
#endif
#if defined(CONFIG_CMD_LOADS)
-static ulong load_serial (long offset);
-static int read_record (char *buf, ulong len);
+static ulong load_serial(long offset);
+static int read_record(char *buf, ulong len);
# if defined(CONFIG_CMD_SAVES)
-static int save_serial (ulong offset, ulong size);
-static int write_record (char *buf);
+static int save_serial(ulong offset, ulong size);
+static int write_record(char *buf);
#endif
static int do_echo = 1;
/* -------------------------------------------------------------------- */
#if defined(CONFIG_CMD_LOADS)
-int do_load_serial (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_load_serial(cmd_tbl_t *cmdtp, int flag, int argc,
+ char * const argv[])
{
long offset = 0;
ulong addr;
load_baudrate = current_baudrate;
}
if (load_baudrate != current_baudrate) {
- printf ("## Switch baudrate to %d bps and press ENTER ...\n",
+ printf("## Switch baudrate to %d bps and press ENTER ...\n",
load_baudrate);
udelay(50000);
gd->baudrate = load_baudrate;
- serial_setbrg ();
+ serial_setbrg();
udelay(50000);
for (;;) {
if (getc() == '\r')
}
#endif /* CONFIG_SYS_LOADS_BAUD_CHANGE */
- printf ("## Ready for S-Record download ...\n");
+ printf("## Ready for S-Record download ...\n");
- addr = load_serial (offset);
+ addr = load_serial(offset);
/*
* Gather any trailing characters (for instance, the ^D which
}
if (addr == ~0) {
- printf ("## S-Record download aborted\n");
+ printf("## S-Record download aborted\n");
rcode = 1;
} else {
- printf ("## Start Addr = 0x%08lX\n", addr);
+ printf("## Start Addr = 0x%08lX\n", addr);
load_addr = addr;
}
#ifdef CONFIG_SYS_LOADS_BAUD_CHANGE
if (load_baudrate != current_baudrate) {
- printf ("## Switch baudrate to %d bps and press ESC ...\n",
+ printf("## Switch baudrate to %d bps and press ESC ...\n",
current_baudrate);
- udelay (50000);
+ udelay(50000);
gd->baudrate = current_baudrate;
- serial_setbrg ();
- udelay (50000);
+ serial_setbrg();
+ udelay(50000);
for (;;) {
if (getc() == 0x1B) /* ESC */
break;
return rcode;
}
-static ulong
-load_serial (long offset)
+static ulong load_serial(long offset)
{
char record[SREC_MAXRECLEN + 1]; /* buffer for one S-Record */
char binbuf[SREC_MAXBINLEN]; /* buffer for binary data */
int line_count = 0;
while (read_record(record, SREC_MAXRECLEN + 1) >= 0) {
- type = srec_decode (record, &binlen, &addr, binbuf);
+ type = srec_decode(record, &binlen, &addr, binbuf);
if (type < 0) {
return (~0); /* Invalid S-Record */
rc = flash_write((char *)binbuf,store_addr,binlen);
if (rc != 0) {
- flash_perror (rc);
+ flash_perror(rc);
return (~0);
}
} else
#endif
{
- memcpy ((char *)(store_addr), binbuf, binlen);
+ memcpy((char *)(store_addr), binbuf, binlen);
}
if ((store_addr) < start_addr)
start_addr = store_addr;
case SREC_END2:
case SREC_END3:
case SREC_END4:
- udelay (10000);
+ udelay(10000);
size = end_addr - start_addr + 1;
- printf ("\n"
+ printf("\n"
"## First Load Addr = 0x%08lX\n"
"## Last Load Addr = 0x%08lX\n"
"## Total Size = 0x%08lX = %ld Bytes\n",
start_addr, end_addr, size, size
);
- flush_cache (start_addr, size);
+ flush_cache(start_addr, size);
sprintf(buf, "%lX", size);
setenv("filesize", buf);
return (addr);
}
if (!do_echo) { /* print a '.' every 100 lines */
if ((++line_count % 100) == 0)
- putc ('.');
+ putc('.');
}
}
return (~0); /* Download aborted */
}
-static int
-read_record (char *buf, ulong len)
+static int read_record(char *buf, ulong len)
{
char *p;
char c;
for (p=buf; p < buf+len; ++p) {
c = getc(); /* read character */
if (do_echo)
- putc (c); /* ... and echo it */
+ putc(c); /* ... and echo it */
switch (c) {
case '\r':
save_baudrate = current_baudrate;
}
if (save_baudrate != current_baudrate) {
- printf ("## Switch baudrate to %d bps and press ENTER ...\n",
+ printf("## Switch baudrate to %d bps and press ENTER ...\n",
save_baudrate);
udelay(50000);
gd->baudrate = save_baudrate;
- serial_setbrg ();
+ serial_setbrg();
udelay(50000);
for (;;) {
if (getc() == '\r')
}
#endif /* CONFIG_SYS_LOADS_BAUD_CHANGE */
- printf ("## Ready for S-Record upload, press ENTER to proceed ...\n");
+ printf("## Ready for S-Record upload, press ENTER to proceed ...\n");
for (;;) {
if (getc() == '\r')
break;
}
- if(save_serial (offset, size)) {
- printf ("## S-Record upload aborted\n");
+ if (save_serial(offset, size)) {
+ printf("## S-Record upload aborted\n");
} else {
- printf ("## S-Record upload complete\n");
+ printf("## S-Record upload complete\n");
}
#ifdef CONFIG_SYS_LOADS_BAUD_CHANGE
if (save_baudrate != current_baudrate) {
- printf ("## Switch baudrate to %d bps and press ESC ...\n",
+ printf("## Switch baudrate to %d bps and press ESC ...\n",
(int)current_baudrate);
- udelay (50000);
+ udelay(50000);
gd->baudrate = current_baudrate;
- serial_setbrg ();
- udelay (50000);
+ serial_setbrg();
+ udelay(50000);
for (;;) {
if (getc() == 0x1B) /* ESC */
break;
#define SREC3_END "S70500000000FA\n"
#define SREC_BYTES_PER_RECORD 16
-static int save_serial (ulong address, ulong count)
+static int save_serial(ulong address, ulong count)
{
int i, c, reclen, checksum, length;
char *hex = "0123456789ABCDEF";
return(0);
}
-static int
-write_record (char *buf)
+static int write_record(char *buf)
{
char c;
static void set_kerm_bin_mode(unsigned long *);
static int k_recv(void);
-static ulong load_serial_bin (ulong offset);
+static ulong load_serial_bin(ulong offset);
-char his_eol; /* character he needs at end of packet */
-int his_pad_count; /* number of pad chars he needs */
-char his_pad_char; /* pad chars he needs */
-char his_quote; /* quote chars he'll use */
+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 */
+static char his_quote; /* quote chars he'll use */
-int do_load_serial_bin (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_load_serial_bin(cmd_tbl_t *cmdtp, int flag, int argc,
+ char * const argv[])
{
ulong offset = 0;
ulong addr;
}
if (load_baudrate != current_baudrate) {
- printf ("## Switch baudrate to %d bps and press ENTER ...\n",
+ printf("## Switch baudrate to %d bps and press ENTER ...\n",
load_baudrate);
udelay(50000);
gd->baudrate = load_baudrate;
- serial_setbrg ();
+ serial_setbrg();
udelay(50000);
for (;;) {
if (getc() == '\r')
}
if (strcmp(argv[0],"loady")==0) {
- printf ("## Ready for binary (ymodem) download "
+ printf("## Ready for binary (ymodem) download "
"to 0x%08lX at %d bps...\n",
offset,
load_baudrate);
- addr = load_serial_ymodem (offset);
+ addr = load_serial_ymodem(offset);
} else {
- printf ("## Ready for binary (kermit) download "
+ printf("## Ready for binary (kermit) download "
"to 0x%08lX at %d bps...\n",
offset,
load_baudrate);
- addr = load_serial_bin (offset);
+ addr = load_serial_bin(offset);
if (addr == ~0) {
load_addr = 0;
- printf ("## Binary (kermit) download aborted\n");
+ printf("## Binary (kermit) download aborted\n");
rcode = 1;
} else {
- printf ("## Start Addr = 0x%08lX\n", addr);
+ printf("## Start Addr = 0x%08lX\n", addr);
load_addr = addr;
}
}
if (load_baudrate != current_baudrate) {
- printf ("## Switch baudrate to %d bps and press ESC ...\n",
+ printf("## Switch baudrate to %d bps and press ESC ...\n",
current_baudrate);
- udelay (50000);
+ udelay(50000);
gd->baudrate = current_baudrate;
- serial_setbrg ();
- udelay (50000);
+ serial_setbrg();
+ udelay(50000);
for (;;) {
if (getc() == 0x1B) /* ESC */
break;
}
-static ulong load_serial_bin (ulong offset)
+static ulong load_serial_bin(ulong offset)
{
int size, i;
char buf[32];
- set_kerm_bin_mode ((ulong *) offset);
- size = k_recv ();
+ set_kerm_bin_mode((ulong *) offset);
+ size = k_recv();
/*
* Gather any trailing characters (for instance, the ^D which
udelay(1000);
}
- flush_cache (offset, size);
+ flush_cache(offset, size);
printf("## Total Size = 0x%08x = %d Bytes\n", size, size);
sprintf(buf, "%X", size);
return offset;
}
-void send_pad (void)
+static void send_pad(void)
{
int count = his_pad_count;
while (count-- > 0)
- putc (his_pad_char);
+ putc(his_pad_char);
}
/* converts escaped kermit char to binary char */
-char ktrans (char in)
+static char ktrans(char in)
{
if ((in & 0x60) == 0x40) {
return (char) (in & ~0x40);
return in;
}
-int chk1 (char *buffer)
+static int chk1(char *buffer)
{
int total = 0;
return (int) ((total + ((total >> 6) & 0x03)) & 0x3f);
}
-void s1_sendpacket (char *packet)
+static void s1_sendpacket(char *packet)
{
- send_pad ();
+ send_pad();
while (*packet) {
- putc (*packet++);
+ putc(*packet++);
}
}
static char a_b[24];
-void send_ack (int n)
+static void send_ack(int n)
{
a_b[0] = START_CHAR;
- a_b[1] = tochar (3);
- a_b[2] = tochar (n);
+ a_b[1] = tochar(3);
+ a_b[2] = tochar(n);
a_b[3] = ACK_TYPE;
a_b[4] = '\0';
- a_b[4] = tochar (chk1 (&a_b[1]));
+ a_b[4] = tochar(chk1(&a_b[1]));
a_b[5] = his_eol;
a_b[6] = '\0';
- s1_sendpacket (a_b);
+ s1_sendpacket(a_b);
}
-void send_nack (int n)
+static void send_nack(int n)
{
a_b[0] = START_CHAR;
- a_b[1] = tochar (3);
- a_b[2] = tochar (n);
+ a_b[1] = tochar(3);
+ a_b[2] = tochar(n);
a_b[3] = NACK_TYPE;
a_b[4] = '\0';
- a_b[4] = tochar (chk1 (&a_b[1]));
+ a_b[4] = tochar(chk1(&a_b[1]));
a_b[5] = his_eol;
a_b[6] = '\0';
- s1_sendpacket (a_b);
+ s1_sendpacket(a_b);
}
-void (*os_data_init) (void);
-void (*os_data_char) (char new_char);
+static void (*os_data_init)(void);
+static void (*os_data_char)(char new_char);
static int os_data_state, os_data_state_saved;
static char *os_data_addr, *os_data_addr_saved;
static char *bin_start_address;
-static void bin_data_init (void)
+static void bin_data_init(void)
{
os_data_state = 0;
os_data_addr = bin_start_address;
}
-static void os_data_save (void)
+static void os_data_save(void)
{
os_data_state_saved = os_data_state;
os_data_addr_saved = os_data_addr;
}
-static void os_data_restore (void)
+static void os_data_restore(void)
{
os_data_state = os_data_state_saved;
os_data_addr = os_data_addr_saved;
}
-static void bin_data_char (char new_char)
+static void bin_data_char(char new_char)
{
switch (os_data_state) {
case 0: /* data */
}
}
-static void set_kerm_bin_mode (unsigned long *addr)
+static void set_kerm_bin_mode(unsigned long *addr)
{
bin_start_address = (char *) addr;
os_data_init = bin_data_init;
/* k_data_* simply handles the kermit escape translations */
static int k_data_escape, k_data_escape_saved;
-void k_data_init (void)
+static void k_data_init(void)
{
k_data_escape = 0;
- os_data_init ();
+ os_data_init();
}
-void k_data_save (void)
+static void k_data_save(void)
{
k_data_escape_saved = k_data_escape;
- os_data_save ();
+ os_data_save();
}
-void k_data_restore (void)
+static void k_data_restore(void)
{
k_data_escape = k_data_escape_saved;
- os_data_restore ();
+ os_data_restore();
}
-void k_data_char (char new_char)
+static void k_data_char(char new_char)
{
if (k_data_escape) {
/* last char was escape - translate this character */
- os_data_char (ktrans (new_char));
+ os_data_char(ktrans(new_char));
k_data_escape = 0;
} else {
if (new_char == his_quote) {
k_data_escape = 1;
} else {
/* otherwise send this char as-is */
- os_data_char (new_char);
+ os_data_char(new_char);
}
}
}
#define SEND_DATA_SIZE 20
-char send_parms[SEND_DATA_SIZE];
-char *send_ptr;
+static char send_parms[SEND_DATA_SIZE];
+static char *send_ptr;
/* handle_send_packet interprits the protocol info and builds and
sends an appropriate ack for what we can do */
-void handle_send_packet (int n)
+static void handle_send_packet(int n)
{
int length = 3;
int bytes;
break;
/* handle MAXL - max length */
/* ignore what he says - most I'll take (here) is 94 */
- a_b[++length] = tochar (94);
+ a_b[++length] = tochar(94);
if (bytes-- <= 0)
break;
/* handle TIME - time you should wait for my packets */
/* ignore what he says - don't wait for my ack longer than 1 second */
- a_b[++length] = tochar (1);
+ a_b[++length] = tochar(1);
if (bytes-- <= 0)
break;
/* handle NPAD - number of pad chars I need */
/* remember what he says - I need none */
- his_pad_count = untochar (send_parms[2]);
- a_b[++length] = tochar (0);
+ his_pad_count = untochar(send_parms[2]);
+ a_b[++length] = tochar(0);
if (bytes-- <= 0)
break;
/* handle PADC - pad chars I need */
/* remember what he says - I need none */
- his_pad_char = ktrans (send_parms[3]);
+ his_pad_char = ktrans(send_parms[3]);
a_b[++length] = 0x40; /* He should ignore this */
if (bytes-- <= 0)
break;
/* handle EOL - end of line he needs */
/* remember what he says - I need CR */
- his_eol = untochar (send_parms[4]);
- a_b[++length] = tochar (END_CHAR);
+ his_eol = untochar(send_parms[4]);
+ a_b[++length] = tochar(END_CHAR);
if (bytes-- <= 0)
break;
/* handle QCTL - quote control char he'll use */
break;
/* handle CAPAS - the capabilities mask */
/* ignore what he says - I only do long packets - I don't do windows */
- a_b[++length] = tochar (2); /* only long packets */
- a_b[++length] = tochar (0); /* no windows */
- a_b[++length] = tochar (94); /* large packet msb */
- a_b[++length] = tochar (94); /* large packet lsb */
+ a_b[++length] = tochar(2); /* only long packets */
+ a_b[++length] = tochar(0); /* no windows */
+ a_b[++length] = tochar(94); /* large packet msb */
+ a_b[++length] = tochar(94); /* large packet lsb */
} while (0);
a_b[0] = START_CHAR;
- a_b[1] = tochar (length);
- a_b[2] = tochar (n);
+ a_b[1] = tochar(length);
+ a_b[2] = tochar(n);
a_b[3] = ACK_TYPE;
a_b[++length] = '\0';
- a_b[length] = tochar (chk1 (&a_b[1]));
+ a_b[length] = tochar(chk1(&a_b[1]));
a_b[++length] = his_eol;
a_b[++length] = '\0';
- s1_sendpacket (a_b);
+ s1_sendpacket(a_b);
}
/* k_recv receives a OS Open image file over kermit line */
-static int k_recv (void)
+static int k_recv(void)
{
char new_char;
char k_state, k_state_saved;
/* initialize the k_recv and k_data state machine */
done = 0;
k_state = 0;
- k_data_init ();
+ k_data_init();
k_state_saved = k_state;
- k_data_save ();
+ k_data_save();
n = 0; /* just to get rid of a warning */
last_n = -1;
START:
/* get length of packet */
sum = 0;
- new_char = getc ();
+ new_char = getc();
if ((new_char & 0xE0) == 0)
goto packet_error;
sum += new_char & 0xff;
- length = untochar (new_char);
+ length = untochar(new_char);
/* get sequence number */
- new_char = getc ();
+ new_char = getc();
if ((new_char & 0xE0) == 0)
goto packet_error;
sum += new_char & 0xff;
- n = untochar (new_char);
+ n = untochar(new_char);
--length;
/* NEW CODE - check sequence numbers for retried packets */
if (n == last_n) {
/* same sequence number, restore the previous state */
k_state = k_state_saved;
- k_data_restore ();
+ k_data_restore();
} else {
/* new sequence number, checkpoint the download */
last_n = n;
k_state_saved = k_state;
- k_data_save ();
+ k_data_save();
}
/* END NEW CODE */
/* get packet type */
- new_char = getc ();
+ new_char = getc();
if ((new_char & 0xE0) == 0)
goto packet_error;
sum += new_char & 0xff;
if (length == -2) {
/* (length byte was 0, decremented twice) */
/* get the two length bytes */
- new_char = getc ();
+ new_char = getc();
if ((new_char & 0xE0) == 0)
goto packet_error;
sum += new_char & 0xff;
- len_hi = untochar (new_char);
- new_char = getc ();
+ len_hi = untochar(new_char);
+ new_char = getc();
if ((new_char & 0xE0) == 0)
goto packet_error;
sum += new_char & 0xff;
- len_lo = untochar (new_char);
+ len_lo = untochar(new_char);
length = len_hi * 95 + len_lo;
/* check header checksum */
- new_char = getc ();
+ new_char = getc();
if ((new_char & 0xE0) == 0)
goto packet_error;
- if (new_char != tochar ((sum + ((sum >> 6) & 0x03)) & 0x3f))
+ if (new_char != tochar((sum + ((sum >> 6) & 0x03)) & 0x3f))
goto packet_error;
sum += new_char & 0xff;
/* --length; */ /* new length includes only data and block check to come */
}
/* bring in rest of packet */
while (length > 1) {
- new_char = getc ();
+ new_char = getc();
if ((new_char & 0xE0) == 0)
goto packet_error;
sum += new_char & 0xff;
}
}
/* get and validate checksum character */
- new_char = getc ();
+ new_char = getc();
if ((new_char & 0xE0) == 0)
goto packet_error;
- if (new_char != tochar ((sum + ((sum >> 6) & 0x03)) & 0x3f))
+ if (new_char != tochar((sum + ((sum >> 6) & 0x03)) & 0x3f))
goto packet_error;
/* get END_CHAR */
- new_char = getc ();
+ new_char = getc();
if (new_char != END_CHAR) {
packet_error:
/* restore state machines */
k_state = k_state_saved;
- k_data_restore ();
+ k_data_restore();
/* send a negative acknowledge packet in */
- send_nack (n);
+ send_nack(n);
} else if (k_state == SEND_TYPE) {
/* crack the protocol parms, build an appropriate ack packet */
- handle_send_packet (n);
+ handle_send_packet(n);
} else {
/* send simple acknowledge packet in */
- send_ack (n);
+ send_ack(n);
/* quit if end of transmission */
if (k_state == BREAK_TYPE)
done = 1;
return (getc());
return -1;
}
-static ulong load_serial_ymodem (ulong offset)
+static ulong load_serial_ymodem(ulong offset)
{
int size;
char buf[32];
size = 0;
info.mode = xyzModem_ymodem;
- res = xyzModem_stream_open (&info, &err);
+ res = xyzModem_stream_open(&info, &err);
if (!res) {
while ((res =
- xyzModem_stream_read (ymodemBuf, 1024, &err)) > 0) {
+ xyzModem_stream_read(ymodemBuf, 1024, &err)) > 0) {
store_addr = addr + offset;
size += res;
addr += res;
#ifndef CONFIG_SYS_NO_FLASH
- if (addr2info (store_addr)) {
+ if (addr2info(store_addr)) {
int rc;
- rc = flash_write ((char *) ymodemBuf,
+ rc = flash_write((char *) ymodemBuf,
store_addr, res);
if (rc != 0) {
flash_perror (rc);
} else
#endif
{
- memcpy ((char *) (store_addr), ymodemBuf,
+ memcpy((char *)(store_addr), ymodemBuf,
res);
}
}
} else {
- printf ("%s\n", xyzModem_error (err));
+ printf("%s\n", xyzModem_error(err));
}
- xyzModem_stream_close (&err);
- xyzModem_stream_terminate (false, &getcxmodem);
+ xyzModem_stream_close(&err);
+ xyzModem_stream_terminate(false, &getcxmodem);
- flush_cache (offset, size);
+ flush_cache(offset, size);
- printf ("## Total Size = 0x%08x = %d Bytes\n", size, size);
- sprintf (buf, "%X", size);
- setenv ("filesize", buf);
+ printf("## Total Size = 0x%08x = %d Bytes\n", size, size);
+ sprintf(buf, "%X", size);
+ setenv("filesize", buf);
return offset;
}
" - save S-Record file over serial line with offset 'off' and size 'size'"
);
#endif /* CONFIG_SYS_LOADS_BAUD_CHANGE */
-#endif
-#endif
+#endif /* CONFIG_CMD_SAVES */
+#endif /* CONFIG_CMD_LOADS */
#if defined(CONFIG_CMD_LOADB)
" with offset 'off' and baudrate 'baud'"
);
-#endif
+#endif /* CONFIG_CMD_LOADB */
/* -------------------------------------------------------------------- */
#if defined(CONFIG_CMD_HWFLOW)
-int do_hwflow (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+int do_hwflow(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
extern int hwflow_onoff(int);
if (strcmp(argv[1], "on") == 0)
hwflow_onoff(1);
else
- cmd_usage(cmdtp);
+ return CMD_RET_USAGE;
}
printf("RTS/CTS hardware flow control: %s\n", hwflow_onoff(0) ? "on" : "off");
return 0;
"[on|off]"
);
-#endif
+#endif /* CONFIG_CMD_HWFLOW */