1
0
mirror of git://projects.qi-hardware.com/xburst-tools.git synced 2025-04-21 12:27:27 +03:00

cleanup output, fix not exit when error

This commit is contained in:
Xiangfu Liu
2009-09-30 23:47:29 -04:00
committed by xiangfu
parent 3e030a84f8
commit 5fd478b936
6 changed files with 80 additions and 80 deletions

View File

@@ -222,12 +222,14 @@ int nand_program_check(struct nand_in *nand_in,
unsigned int *start_page)
{
unsigned int i, page_num, cur_page = -1;
unsigned int start_addr;
unsigned short temp;
int status = -1;
printf(" Writing NAND page %d len %d...\n", nand_in->start, nand_in->length);
if (nand_in->length > (unsigned int)MAX_TRANSFER_SIZE) {
printf(" Buffer size too long!\n");
return -1;
goto err;
}
#ifdef CONFIG_NAND_OUT
@@ -237,15 +239,17 @@ int nand_program_check(struct nand_in *nand_in,
(nand_out->status)[i] = 0; /* set all status to fail */
#endif
if (usb_get_ingenic_cpu(&ingenic_dev) < 3) {
int cpu = usb_get_ingenic_cpu(&ingenic_dev);
if (cpu != BOOT4740 && cpu != BOOT4750) {
printf(" Device unboot! Boot it first!\n");
return -1;
goto err;
}
ingenic_dev.file_buff = nand_in->buf;
ingenic_dev.file_len = nand_in->length;
usb_send_data_to_ingenic(&ingenic_dev);
for (i = 0; i < nand_in->max_chip; i++) {
if ((nand_in->cs_map)[i]==0)
if ((nand_in->cs_map)[i] == 0)
continue;
if (nand_in->option == NO_OOB) {
page_num = nand_in->length / hand.nand_ps;
@@ -259,50 +263,47 @@ int nand_program_check(struct nand_in *nand_in,
}
temp = ((nand_in->option << 12) & 0xf000) +
((i<<4) & 0xff0) + NAND_PROGRAM;
usb_send_data_address_to_ingenic(&ingenic_dev, nand_in->start);
usb_send_data_length_to_ingenic(&ingenic_dev, page_num);
usb_ingenic_nand_ops(&ingenic_dev, temp);
if (usb_send_data_address_to_ingenic(&ingenic_dev, nand_in->start) != 1)
goto err;
if (usb_send_data_length_to_ingenic(&ingenic_dev, page_num) != 1)
goto err;
if (usb_ingenic_nand_ops(&ingenic_dev, temp) != 1)
goto err;
if (usb_read_data_from_ingenic(&ingenic_dev, ret, 8) != 1)
goto err;
usb_read_data_from_ingenic(&ingenic_dev, ret, 8);
printf(" Finish! (len %d start_page %d page_num %d)\n",
nand_in->length, nand_in->start, page_num);
usb_send_data_address_to_ingenic(&ingenic_dev, nand_in->start);
/* Read back to check! */
usb_send_data_address_to_ingenic(&ingenic_dev, nand_in->start);
usb_send_data_length_to_ingenic(&ingenic_dev, page_num);
switch (nand_in->option) {
case OOB_ECC:
temp = ((OOB_ECC << 12) & 0xf000) +
((i << 4) & 0xff0) + NAND_READ;
usb_ingenic_nand_ops(&ingenic_dev, temp);
printf(" Checking %d bytes...", nand_in->length);
usb_read_data_from_ingenic(&ingenic_dev, check_buf,
page_num * (hand.nand_ps + hand.nand_os));
usb_read_data_from_ingenic(&ingenic_dev, ret, 8);
start_addr = page_num * (hand.nand_ps + hand.nand_os);
break;
case OOB_NO_ECC: /* do not support data verify */
temp = ((OOB_NO_ECC << 12) & 0xf000) +
((i << 4) & 0xff0) + NAND_READ;
usb_ingenic_nand_ops(&ingenic_dev, temp);
printf(" Checking %d bytes...", nand_in->length);
usb_read_data_from_ingenic(&ingenic_dev, check_buf,
page_num * (hand.nand_ps + hand.nand_os));
usb_read_data_from_ingenic(&ingenic_dev, ret, 8);
start_addr = page_num * (hand.nand_ps + hand.nand_os);
break;
case NO_OOB:
temp = ((NO_OOB << 12) & 0xf000) +
((i << 4) & 0xff0) + NAND_READ;
usb_ingenic_nand_ops(&ingenic_dev, temp);
printf(" Checking %d bytes...", nand_in->length);
usb_read_data_from_ingenic(&ingenic_dev, check_buf,
page_num * hand.nand_ps);
usb_read_data_from_ingenic(&ingenic_dev, ret, 8);
start_addr = page_num * hand.nand_ps;
break;
default:
;
}
printf(" Checking %d bytes...", nand_in->length);
usb_ingenic_nand_ops(&ingenic_dev, temp);
usb_read_data_from_ingenic(&ingenic_dev, check_buf, start_addr);
usb_read_data_from_ingenic(&ingenic_dev, ret, 8);
cur_page = (ret[3] << 24) | (ret[2] << 16) | (ret[1] << 8) |
(ret[0] << 0);
@@ -329,11 +330,14 @@ int nand_program_check(struct nand_in *nand_in,
nand_markbad(&bad);
}
printf(" End at Page: %d\n",cur_page);
printf(" End at Page: %d\n", cur_page);
}
*start_page = cur_page;
return 0;
status = 1;
err:
return status;
}
int nand_erase(struct nand_in *nand_in)
@@ -551,6 +555,7 @@ int init_nand_in(void)
int nand_prog(void)
{
int status = -1;
char *image_file;
char *help = " Usage: nprog (1) (2) (3) (4) (5)\n"
" (1)\tstart page number\n"
@@ -595,7 +600,9 @@ int nand_prog(void)
printf(" %d", (nand_out.status)[i]);
#endif
return 1;
status = 1;
err:
return status;
}
int nand_query(void)

View File

@@ -166,12 +166,12 @@ int usb_get_ingenic_cpu(struct ingenic_dev *ingenic_dev)
ingenic_dev->cpu_info_buff[8] = '\0';
printf(" CPU data: %s\n", ingenic_dev->cpu_info_buff);
if (!strcmp(ingenic_dev->cpu_info_buff,"JZ4740V1")) return 1;
if (!strcmp(ingenic_dev->cpu_info_buff,"JZ4750V1")) return 2;
if (!strcmp(ingenic_dev->cpu_info_buff,"Boot4740")) return 3;
if (!strcmp(ingenic_dev->cpu_info_buff,"Boot4750")) return 4;
if (!strcmp(ingenic_dev->cpu_info_buff,"JZ4740V1")) return JZ4740V1;
if (!strcmp(ingenic_dev->cpu_info_buff,"JZ4750V1")) return JZ4750V1;
if (!strcmp(ingenic_dev->cpu_info_buff,"Boot4740")) return BOOT4740;
if (!strcmp(ingenic_dev->cpu_info_buff,"Boot4750")) return BOOT4750;
return 0;
return -1;
}
int usb_ingenic_flush_cache(struct ingenic_dev *ingenic_dev)

View File

@@ -37,11 +37,16 @@
#define VR_CONFIGRATION 0x09
#define VR_GET_NUM 0x0a
#define JZ4740V1 1
#define JZ4750V1 2
#define BOOT4740 3
#define BOOT4750 4
#define STAGE_ADDR_MSB(addr) ((addr) >> 16)
#define STAGE_ADDR_LSB(addr) ((addr) & 0xffff)
#define USB_PACKET_SIZE 512
#define USB_TIMEOUT 5000
#define USB_PACKET_SIZE 512
#define USB_TIMEOUT 5000
#define VENDOR_ID 0x601a
#define PRODUCT_ID 0x4740
@@ -73,4 +78,3 @@ int usb_ingenic_nand_ops(struct ingenic_dev *ingenic_dev, int ops);
int usb_read_data_from_ingenic(struct ingenic_dev *ingenic_dev,unsigned char *buff, unsigned int len);
#endif /* __INGENIC_USB_H__ */