Beispiel #1
0
static int check_boot_flag(void)
{
	printf("bootmode = %d\n" ,owl_get_boot_mode());
	if ( owl_get_boot_mode() != BOOT_MODE_PRODUCE ) {		
		if(owl_get_boot_dev() == OWL_BOOTDEV_NAND) {
			setenv("bootcmd", "run nandboot");
			setenv("devif", "nand");
			printf("nand boot\n");
		} else if(owl_get_boot_dev() == OWL_BOOTDEV_SD2){
			setenv("bootcmd", "run emmcboot");
			setenv("devif", "mmc");
			printf("emmc boot\n");
		} else {
			setenv("bootcmd", "run mmcboot");
			setenv("devif", "mmc");	
			printf("sd boot\n");
		}
	} else {
		setenv("bootcmd", "run ramboot");
		setenv("bootdelay", "0");
		printf("produce boot\n");
	}
	
	return 0;
}
Beispiel #2
0
static ssize_t card_proc_storage_type_read (struct file *file, 
									char __user *buffer, size_t count, loff_t * ppos)
{

	int len;
	int ret;
	unsigned int boot_dev = 0;
	char * emmc_buf = "emmc";
	char * tsd_buf = "tsd";
	char * nand_buf = "nand";

	boot_dev=owl_get_boot_dev();

	if(*ppos > 0)      
		return 0;
	
	if(boot_dev == OWL_BOOTDEV_SD2){

		ret = copy_to_user(buffer,emmc_buf,strlen(emmc_buf));
		len = strlen(emmc_buf); 
	}else if(boot_dev == OWL_BOOTDEV_SD0){
		ret = copy_to_user(buffer,tsd_buf,strlen(tsd_buf));
		len = strlen(tsd_buf); 
	}else{
		ret = copy_to_user(buffer,nand_buf,strlen(nand_buf));
		len = strlen(nand_buf);
	}

	if(ret){
		return -EFAULT;
	}

	*ppos += len;

	return len;

}
Beispiel #3
0
void owl_boot_fdt_setup(void *blob)
{
	char buf[64], sn[32];
	char *s;
	int index;
	int boot_dev = owl_get_boot_dev();
	bool is_android_os = true;

	s = getenv("os_type");
	if(s!=NULL && strcmp(s, "android")){
		is_android_os = false;
	} 

	printf("owl_boot_fdt_setup %s\n", s);
	if((gd->flags & GD_FLG_RECOVERY) ||
		owl_get_boot_mode() == (int)BOOT_MODE_PRODUCE){
		is_android_os = true;
		strcpy(buf, "earlyprintk");
		boot_append_remove_args(buf, ENUM_TAIL);
		strcpy(buf, "clk_ignore_unused");
		boot_append_remove_args(buf, ENUM_TAIL);
		strcpy(buf, "selinux=0");
		boot_append_remove_args(buf, ENUM_TAIL);
	}

	if(owl_get_boot_mode() == (int)BOOT_MODE_PRODUCE){
		is_android_os = false;	
		strcpy(buf, "powersave");
		boot_append_remove_args(buf, ENUM_TAIL);
		strcpy(buf, "androidboot.mode=upgrade");
		boot_append_remove_args(buf, ENUM_TAIL);
	}else{
		if(is_android_os) {
			boot_append_remove_args("androidboot.dvfslevel=0x705x", ENUM_TAIL);
			if(gd->flags & GD_FLG_CHARGER) {
				strcpy(buf, "androidboot.mode=charger");
				printf("=======androidboot.mode:charger=========\n");
				boot_append_remove_args(buf, ENUM_TAIL);
			}
		}		
	}
	
	index = owl_afi_get_serial_number();
	sprintf(buf, "console=ttyS%d", index);
	boot_append_remove_args(buf, ENUM_HEADER);

	/*
	strcpy(buf, "board_opt=0,0x1");
	boot_append_remove_args(buf, NULL);
	*/
	
	if(is_android_os){
		if(boot_dev == OWL_BOOTDEV_NAND){
			strcpy(buf, "androidboot.bootdev=nand");
		} else {
			strcpy(buf, "androidboot.bootdev=sd");
		}
		boot_append_remove_args(buf, ENUM_TAIL);
	}
	
    switch(boot_dev){
    	case OWL_BOOTDEV_NAND:
    		sprintf(buf, "boot_dev=%s", "nand");
			break;
		case OWL_BOOTDEV_SD0:
			sprintf(buf, "boot_dev=%s", "sd0");
			break;		
		case OWL_BOOTDEV_SD1:
			sprintf(buf, "boot_dev=%s", "sd1");
			break;
		case OWL_BOOTDEV_SD2:
			sprintf(buf, "boot_dev=%s", "sd2");
			break;			
		case OWL_BOOTDEV_SD02NAND:
			sprintf(buf, "boot_dev=%s", "sd02nand");
			break;				
		case OWL_BOOTDEV_SD02SD2:
			sprintf(buf, "boot_dev=%s", "sd02sd2");
			break;			
		case OWL_BOOTDEV_NOR:
			sprintf(buf, "boot_dev=%s", "nor");
			break;
    }
	boot_append_remove_args(buf, ENUM_TAIL);
	
	if(owl_get_boot_mode() != (int)BOOT_MODE_PRODUCE){
		memset(buf, 0, sizeof(buf));
		memset(sn, 0, sizeof(sn));
		strcpy(buf, "androidboot.serialno=");
		if(read_mi_item("SN", sn, sizeof(sn) - 1) < 0){
			printf("read SN failed\n");
		}else{
			printf("read SN %s\n", sn);
			strcat(buf,sn);
			boot_append_remove_args(buf, ENUM_TAIL);
		}
	}

	printf("cmdline: %s\n", getenv("bootargs"));
    boot_fdt_setprop(blob);
	boot_append_bootargs_add(blob);
}