mirror of
git://projects.qi-hardware.com/xburst-tools.git
synced 2024-11-01 10:22:48 +02:00
usbboot: fix hand.fw_args.cpu_id have wrong value when there is no 'boot' in commands
This commit is contained in:
parent
b8420d20e1
commit
1d7a2f3f56
@ -97,11 +97,44 @@ out:
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int get_ingenic_cpu()
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
|
||||||
|
status = usb_get_ingenic_cpu(&ingenic_dev);
|
||||||
|
|
||||||
|
switch (status) {
|
||||||
|
case JZ4740V1:
|
||||||
|
hand.fw_args.cpu_id = 0x4740;
|
||||||
|
break;
|
||||||
|
case JZ4750V1:
|
||||||
|
hand.fw_args.cpu_id = 0x4750;
|
||||||
|
break;
|
||||||
|
case JZ4760V1:
|
||||||
|
hand.fw_args.cpu_id = 0x4760;
|
||||||
|
break;
|
||||||
|
case BOOT4740:
|
||||||
|
hand.fw_args.cpu_id = 0x4740;
|
||||||
|
break;
|
||||||
|
case BOOT4750:
|
||||||
|
hand.fw_args.cpu_id = 0x4750;
|
||||||
|
break;
|
||||||
|
case BOOT4760:
|
||||||
|
hand.fw_args.cpu_id = 0x4760;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
hand.fw_args.cpu_id = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/* after upload stage2. must init device */
|
/* after upload stage2. must init device */
|
||||||
void init_cfg()
|
void init_cfg()
|
||||||
{
|
{
|
||||||
if (usb_get_ingenic_cpu(&ingenic_dev) < 3) {
|
int cpu = get_ingenic_cpu();
|
||||||
printf(" XBurst CPU not booted yet, boot it first!\n");
|
if (cpu != BOOT4740 && cpu != BOOT4750 && cpu != BOOT4760) {
|
||||||
|
printf(" Device unboot! Boot it first!\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,39 +157,9 @@ xout:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int boot(char *stage1_path, char *stage2_path){
|
int boot(char *stage1_path, char *stage2_path){
|
||||||
int status;
|
int status = get_ingenic_cpu();
|
||||||
|
|
||||||
status = usb_get_ingenic_cpu(&ingenic_dev);
|
if (status == BOOT4740 || status == BOOT4750 || status == BOOT4760) {
|
||||||
switch (status) {
|
|
||||||
case JZ4740V1:
|
|
||||||
status = 0;
|
|
||||||
hand.fw_args.cpu_id = 0x4740;
|
|
||||||
break;
|
|
||||||
case JZ4750V1:
|
|
||||||
status = 0;
|
|
||||||
hand.fw_args.cpu_id = 0x4750;
|
|
||||||
break;
|
|
||||||
case JZ4760V1:
|
|
||||||
status = 0;
|
|
||||||
hand.fw_args.cpu_id = 0x4760;
|
|
||||||
break;
|
|
||||||
case BOOT4740:
|
|
||||||
status = 1;
|
|
||||||
hand.fw_args.cpu_id = 0x4740;
|
|
||||||
break;
|
|
||||||
case BOOT4750:
|
|
||||||
status = 1;
|
|
||||||
hand.fw_args.cpu_id = 0x4750;
|
|
||||||
break;
|
|
||||||
case BOOT4760:
|
|
||||||
status = 1;
|
|
||||||
hand.fw_args.cpu_id = 0x4760;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (status) {
|
|
||||||
printf(" Already booted.\n");
|
printf(" Already booted.\n");
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
@ -181,8 +184,10 @@ int boot(char *stage1_path, char *stage2_path){
|
|||||||
|
|
||||||
printf(" Booted successfully!\n");
|
printf(" Booted successfully!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
usleep(100);
|
usleep(100);
|
||||||
init_cfg();
|
init_cfg();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,7 +219,8 @@ int error_check(unsigned char *org,unsigned char * obj,unsigned int size)
|
|||||||
|
|
||||||
int nand_markbad(struct nand_in *nand_in)
|
int nand_markbad(struct nand_in *nand_in)
|
||||||
{
|
{
|
||||||
if (usb_get_ingenic_cpu(&ingenic_dev) < 3) {
|
int cpu = get_ingenic_cpu();
|
||||||
|
if (cpu != BOOT4740 && cpu != BOOT4750 && cpu != BOOT4760) {
|
||||||
printf(" Device unboot! Boot it first!\n");
|
printf(" Device unboot! Boot it first!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -242,7 +248,7 @@ int nand_program_check(struct nand_in *nand_in, unsigned int *start_page)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cpu = usb_get_ingenic_cpu(&ingenic_dev);
|
int cpu = get_ingenic_cpu();
|
||||||
if (cpu != BOOT4740 && cpu != BOOT4750 && cpu != BOOT4760) {
|
if (cpu != BOOT4740 && cpu != BOOT4750 && cpu != BOOT4760) {
|
||||||
printf(" Device unboot! Boot it first!\n");
|
printf(" Device unboot! Boot it first!\n");
|
||||||
goto err;
|
goto err;
|
||||||
@ -353,7 +359,8 @@ int nand_erase(struct nand_in *nand_in)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usb_get_ingenic_cpu(&ingenic_dev) < 3) {
|
int cpu = get_ingenic_cpu();
|
||||||
|
if (cpu != BOOT4740 && cpu != BOOT4750 && cpu != BOOT4760) {
|
||||||
printf(" Device unboot! Boot it first!\n");
|
printf(" Device unboot! Boot it first!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -590,7 +597,8 @@ int nand_query(void)
|
|||||||
if (i >= nand_in.max_chip)
|
if (i >= nand_in.max_chip)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (usb_get_ingenic_cpu(&ingenic_dev) < 3) {
|
int cpu = get_ingenic_cpu();
|
||||||
|
if (cpu != BOOT4740 && cpu != BOOT4750 && cpu != BOOT4760) {
|
||||||
printf(" Device unboot! Boot it first!\n");
|
printf(" Device unboot! Boot it first!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -651,7 +659,8 @@ int nand_read(int mode)
|
|||||||
printf(" Page number overflow!\n");
|
printf(" Page number overflow!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (usb_get_ingenic_cpu(&ingenic_dev) < 3) {
|
int cpu = get_ingenic_cpu();
|
||||||
|
if (cpu != BOOT4740 && cpu != BOOT4750 && cpu != BOOT4760) {
|
||||||
printf(" Device unboot! Boot it first!\n");
|
printf(" Device unboot! Boot it first!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -711,8 +720,8 @@ int debug_memory(int obj, unsigned int start, unsigned int size)
|
|||||||
{
|
{
|
||||||
unsigned int buffer[8],tmp;
|
unsigned int buffer[8],tmp;
|
||||||
|
|
||||||
tmp = usb_get_ingenic_cpu(&ingenic_dev);
|
tmp = get_ingenic_cpu();
|
||||||
if (tmp > 2) {
|
if (tmp == BOOT4740 || tmp == BOOT4750 || tmp == BOOT4760) {
|
||||||
printf(" This command only run under UNBOOT state!\n");
|
printf(" This command only run under UNBOOT state!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -759,8 +768,8 @@ int debug_gpio(int obj, unsigned char ops, unsigned char pin)
|
|||||||
{
|
{
|
||||||
unsigned int tmp;
|
unsigned int tmp;
|
||||||
|
|
||||||
tmp = usb_get_ingenic_cpu(&ingenic_dev);
|
tmp = get_ingenic_cpu();
|
||||||
if (tmp > 2) {
|
if (tmp == BOOT4740 || tmp == BOOT4750 || tmp == BOOT4760) {
|
||||||
printf(" This command only run under UNBOOT state!\n");
|
printf(" This command only run under UNBOOT state!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -823,7 +832,8 @@ int debug_go(void)
|
|||||||
|
|
||||||
int sdram_load(struct sdram_in *sdram_in)
|
int sdram_load(struct sdram_in *sdram_in)
|
||||||
{
|
{
|
||||||
if (usb_get_ingenic_cpu(&ingenic_dev) < 3) {
|
int cpu = get_ingenic_cpu();
|
||||||
|
if (cpu != BOOT4740 && cpu != BOOT4750 && cpu != BOOT4760) {
|
||||||
printf(" Device unboot! Boot it first!\n");
|
printf(" Device unboot! Boot it first!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -917,7 +927,8 @@ out:
|
|||||||
|
|
||||||
int device_reset(int ops)
|
int device_reset(int ops)
|
||||||
{
|
{
|
||||||
if (usb_get_ingenic_cpu(&ingenic_dev) < 3) {
|
int cpu = get_ingenic_cpu();
|
||||||
|
if (cpu != BOOT4740 && cpu != BOOT4750 && cpu != BOOT4760) {
|
||||||
printf(" Device unboot! Boot it first!\n");
|
printf(" Device unboot! Boot it first!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user