1
0
mirror of git://projects.qi-hardware.com/xburst-tools.git synced 2024-11-01 18:22:28 +02:00

add init hand function

add check nand configure
This commit is contained in:
xiangfu 2009-04-30 07:18:44 +00:00
parent 392d2bb3fc
commit dd263b67b9

View File

@ -44,6 +44,34 @@ unsigned int total_size;
unsigned char code_buf[4 * 512 * 1024]; unsigned char code_buf[4 * 512 * 1024];
unsigned char cs[16]; unsigned char cs[16];
void init_hand_def(void)
{
/* nand flash info */
/* hand.nand_start=0;important !!!! */
hand.pt = JZ4740; /* cpu type */
hand.nand_bw=8;
hand.nand_rc=3;
hand.nand_ps=2048;
hand.nand_ppb=64;
hand.nand_eccpos = 6;
hand.nand_bbpage = 0;
hand.nand_bbpos = 0;
hand.nand_force_erase=0;
/* hand.nand_ids=0; */ /* vendor_id & device_id */
hand.fw_args.cpu_id = 0x4740;
hand.fw_args.ext_clk = 12;
hand.fw_args.cpu_speed = 336 / hand.fw_args.ext_clk;
hand.fw_args.phm_div = 4;
hand.fw_args.use_uart = 0;
hand.fw_args.boudrate = 57600;
hand.fw_args.bus_width = 0;
hand.fw_args.bank_num = 1;
hand.fw_args.row_addr = 13;
hand.fw_args.col_addr = 9;
hand.fw_args.is_mobile = 0;
hand.fw_args.is_busshare = 1;
}
static int parse_configure(char * file_path) static int parse_configure(char * file_path)
{ {
cfg_opt_t opts[] = { cfg_opt_t opts[] = {
@ -140,27 +168,23 @@ int check_dump_cfg()
} }
/* check NAND */ /* check NAND */
/* if ( Hand.nand_ps < 2048 && Hand.nand_os > 16 ) if ( hand.nand_ps < 2048 && hand.nand_os > 16 ) {
{
printf("\n PAGESIZE or OOBSIZE setting invalid!"); printf("\n PAGESIZE or OOBSIZE setting invalid!");
return 0; return 0;
} }
if ( Hand.nand_ps < 2048 && Hand.nand_ppb > 32 ) if ( hand.nand_ps < 2048 && hand.nand_ppb > 32 ) {
{
printf("\n PAGESIZE or PAGEPERBLOCK setting invalid!"); printf("\n PAGESIZE or PAGEPERBLOCK setting invalid!");
return 0; return 0;
} }
if ( Hand.nand_ps > 512 && Hand.nand_os <= 16 ) if ( hand.nand_ps > 512 && hand.nand_os <= 16 ) {
{
printf("\n PAGESIZE or OOBSIZE setting invalid!"); printf("\n PAGESIZE or OOBSIZE setting invalid!");
return 0; return 0;
} }
if ( Hand.nand_ps > 512 && Hand.nand_ppb < 64 ) if ( hand.nand_ps > 512 && hand.nand_ppb < 64 ) {
{
printf("\n PAGESIZE or PAGEPERBLOCK setting invalid!"); printf("\n PAGESIZE or PAGEPERBLOCK setting invalid!");
return 0; return 0;
} */ }
printf("\n Current device information:"); printf("\n Current device information:");
printf(" CPU is Jz%x",hand.fw_args.cpu_id); printf(" CPU is Jz%x",hand.fw_args.cpu_id);
@ -173,11 +197,11 @@ int check_dump_cfg()
total_size / 0x100000, 2 * (hand.fw_args.bank_num + 1), 16 * (2 - hand.fw_args.bus_width)); total_size / 0x100000, 2 * (hand.fw_args.bank_num + 1), 16 * (2 - hand.fw_args.bus_width));
/* printf("\n Nand page size %d, ECC offset %d, ", /* printf("\n Nand page size %d, ECC offset %d, ",
Hand.nand_ps,Hand.nand_eccpos); hand.nand_ps,hand.nand_eccpos);
printf("bad block ID %d, ",Hand.nand_bbpage); printf("bad block ID %d, ",hand.nand_bbpage);
printf("use %d plane mode",Hand.nand_plane); */ printf("use %d plane mode",hand.nand_plane); */
printf("\n"); printf("\n");
return 1; return 1;
@ -241,6 +265,7 @@ int boot(char *stage1_path, char *stage2_path, char *config_path ){
memset(&ingenic_dev, 0, sizeof(struct ingenic_dev)); memset(&ingenic_dev, 0, sizeof(struct ingenic_dev));
memset(&hand.fw_args, 0, sizeof(struct fw_args_t)); memset(&hand.fw_args, 0, sizeof(struct fw_args_t));
init_hand_def();
if (parse_configure(config_path) < 1) if (parse_configure(config_path) < 1)
goto out; goto out;
@ -344,7 +369,7 @@ int nprog(void)
else else
printf("%s", help); printf("%s", help);
#if 0 #if 0
if (Hand.nand_plane > 1) if (hand.nand_plane > 1)
/* API_Nand_Program_File_Planes(&nand_in,&nand_out, image_file); */ /* API_Nand_Program_File_Planes(&nand_in,&nand_out, image_file); */
else else
/* API_Nand_Program_File(&nand_in,&nand_out, image_file); */ /* API_Nand_Program_File(&nand_in,&nand_out, image_file); */