
Hi Eran,
Please find some comments below.
On Thursday 21 June 2007, eran liberty wrote:
fpga loadi <dev> <image addr> Signed-off-by: Eran Liberty
Please add a more descriptive commit log. What does "loadi" do?
diff -x .svn -Nuar u-boot.git-5ffa76a032279bc6d3230b703eda32d13305ba13/common/cmd_fpga.c u-boot.exsw6000/common/cmd_fpga.c
u-boot.git-5ffa76a032279bc6d3230b703eda32d13305ba13/common/cmd_fpga.c 2007- 06-18 22:38:46.000000000 +0300 +++ u-boot.exsw6000/common/cmd_fpga.c 2007-06-20 19:25:51.000000000 +0300 @@ -32,6 +32,7 @@ #endif #include <fpga.h> #include <malloc.h> +#include <bzlib.h>
#if 0 #define FPGA_DEBUG @@ -45,6 +46,8 @@
#if defined (CONFIG_FPGA) && ( CONFIG_COMMANDS & CFG_CMD_FPGA )
+extern int gunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp);
Line wrapped.
/* Local functions */ static void fpga_usage (cmd_tbl_t * cmdtp); static int fpga_get_op (char *opstr); @@ -56,6 +59,89 @@ #define FPGA_LOADB 2 #define FPGA_DUMP 3 #define FPGA_LOADMK 4 +#define FPGA_LOADI 5
+/* Load an image */ +int fpga_loadi( int devnum, void *buf)
No space after "(" please.
+{
- ulong addr = (ulong)(buf);
- ulong data, len, checksum;
- image_header_t hdr;
- unsigned int unc_len;
- unsigned int *punc_len = &unc_len;
- int i;
- /* Copy header so we can blank CRC field for re-calculation */
+#ifdef CONFIG_HAS_DATAFLASH
- if (addr_dataflash(addr)){
read_dataflash(addr, sizeof(image_header_t), (char *)&hdr);
- } else
No parentheses for single line statements.
+#endif
memmove (&hdr, (char *)addr, sizeof(image_header_t));
- if (ntohl(hdr.ih_magic) != IH_MAGIC) {
puts ("Bad Magic Number\n");
return 1;
- }
- data = (ulong)&hdr;
- len = sizeof(image_header_t);
- checksum = ntohl(hdr.ih_hcrc);
- hdr.ih_hcrc = 0;
- if (crc32 (0, (uchar *)data, len) != checksum) {
puts ("Bad Header Checksum\n");
return 1;
- }
+#ifdef CONFIG_HAS_DATAFLASH
- if (addr_dataflash(addr)){
len = ntohl(hdr.ih_size) + sizeof(image_header_t);
read_dataflash(addr, len, (char *)CFG_LOAD_ADDR);
addr = CFG_LOAD_ADDR;
- }
+#endif
- print_image_hdr ((image_header_t *)addr);
- data = addr + sizeof(image_header_t);
- len = ntohl(hdr.ih_size);
- puts (" Verifying Checksum ... ");
- if (crc32 (0, (uchar *)data, len) != ntohl(hdr.ih_dcrc)) {
printf ("Bad Data CRC\n");
return 1;
- }
- puts ("OK\n");
- switch (hdr.ih_comp) {
- case IH_COMP_NONE:
memmove ((char *)CFG_LOAD_ADDR,(void *)data,len);
break;
- case IH_COMP_GZIP:
if (gunzip ((char *)CFG_LOAD_ADDR,unc_len,(uchar *)data, &len) != 0) {
puts ("GUNZIP ERROR - FPGA not loaded\n");
return 1;
}
len = unc_len;
break;
+#ifdef CONFIG_BZIP2
- case IH_COMP_BZIP2:
i = BZ2_bzBuffToBuffDecompress ((char *)CFG_LOAD_ADDR,punc_len,
(char *)data, len,
1, 0);
if (i != BZ_OK) {
printf ("BUNZIP2 ERROR %d - FPGA not loaded!\n", i);
return 1;
}
len = unc_len;
break;
+#endif /* CONFIG_BZIP2 */
- default:
printf ("Unimplemented compression type %d\n", hdr.ih_comp);
return 1;
- }
- return fpga_load(devnum,(char *)CFG_LOAD_ADDR,len);
+}
/* Convert bitstream data and load into the fpga */ int fpga_loadbitstream(unsigned long dev, char* fpgadata, size_t size) @@ -248,6 +334,10 @@ rc = fpga_load (dev, fpga_data, data_size); break;
- case FPGA_LOADI:
rc = fpga_loadi (dev, fpga_data);
break;
- case FPGA_LOADB: rc = fpga_loadbitstream(dev, fpga_data, data_size); break;
@@ -298,6 +388,8 @@ op = FPGA_INFO; } else if (!strcmp ("loadb", opstr)) { op = FPGA_LOADB;
- } else if (!strcmp ("loadi", opstr)) {
} else if (!strcmp ("load", opstr)) { op = FPGA_LOAD; } else if (!strcmp ("loadmk", opstr)) {op = FPGA_LOADI;
@@ -317,6 +409,7 @@ "fpga [operation type] [device number] [image address] [image size]\n" "fpga operations:\n" "\tinfo\tlist known device information\n"
"\tloadi\tLoad device from u-boot image\n" "\tload\tLoad device from memory buffer\n" "\tloadb\tLoad device from bitstream buffer (Xilinx devices only)\n" "\tloadmk\tLoad device generated with mkimage\n"
This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users