⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 karef.c

📁 gumstiz u-boot loader in linux
💻 C
📖 第 1 页 / 共 2 页
字号:
		"Serial Number: %d\n", sernum);	printf ("%s\n", KAREF_U_BOOT_REL_STR);	printf ("Built %s %s by %s\n", __DATE__, __TIME__, BUILDUSER);	if (sbcommon_get_master()) {		printf("Slot 0 - Master\nSlave board");		if (sbcommon_secondary_present())			printf(" present\n");		else			printf(" not detected\n");	} else {		printf("Slot 1 - Slave\n\n");	}	printf ("ScanFPGA ID:\t0x%02X\tRev:  0x%02X\n", scan_id, scan_rev);	printf ("Board Rev:\t0x%02X\tID:   0x%02X\n", brd_rev, brd_id);	if(0xF != ofem_brd_id) {		printf("OFemFPGA ID:\t0x%02X\tRev:  0x%02X\n", ofem_id, ofem_rev);		printf("OFEM Board Rev:\t0x%02X\tID:   0x%02X\n", ofem_brd_id, ofem_brd_rev);	}	/* Fix the ack in the bme 32 */	udelay(5000);	out32(CFG_BME32_BASE + 0x0000000C, 0x00000001);	asm("eieio");	return (0);}/************************************************************************* *  misc_init_f * *  Initialize I2C bus one to gain access to the fans ************************************************************************/int misc_init_f (void){	/* Turn on i2c bus 1 */	puts ("I2C1:  ");	i2c1_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);	puts ("ready\n");	/* Turn on fans 3 & 4 */	sbcommon_fans();	return (0);}/************************************************************************* *  misc_init_r * *  Do nothing. ************************************************************************/int misc_init_r (void){	unsigned short sernum;	char envstr[255];	KAREF_FPGA_REGS_ST *karef_ps;	OFEM_FPGA_REGS_ST *ofem_ps;	if(NULL != getenv("secondserial")) {		puts("secondserial is set, switching to second serial port\n");		setenv("stderr", "serial1");		setenv("stdout", "serial1");		setenv("stdin", "serial1");	}	setenv("ubrelver", KAREF_U_BOOT_REL_STR);	memset(envstr, 0, 255);	sprintf (envstr, "Built %s %s by %s", __DATE__, __TIME__, BUILDUSER);	setenv("bldstr", envstr);	saveenv();	if( getenv("autorecover")) {		setenv("autorecover", NULL);		saveenv();		sernum = sbcommon_get_serial_number();		printf("\nSetting up environment for automatic filesystem recovery\n");		/*		 * Setup default bootargs		 */		memset(envstr, 0, 255);		sprintf(envstr, "console=ttyS0,9600 root=/dev/ram0 "			"rw ip=10.100.70.%d:::255.255.0.0:karef%d:eth0:none idebus=33",			sernum, sernum);		setenv("bootargs", envstr);		/*		 * Setup Default boot command		 */		setenv("bootcmd", "fatload ide 0 8000000 uimage.karef;"		       "fatload ide 0 8100000 pramdisk;"		       "bootm 8000000 8100000");		printf("Done.  Please type allow the system to continue to boot\n");	}	if( getenv("fakeled")) {		karef_ps = (KAREF_FPGA_REGS_ST *)CFG_KAREF_FPGA_BASE;		ofem_ps = (OFEM_FPGA_REGS_ST *)CFG_OFEM_FPGA_BASE;		ofem_ps->control_ul &= ~SAND_HAL_KA_SC_SCAN_CNTL_FAULT_LED_MASK;		karef_ps->control_ul &= ~SAND_HAL_KA_OF_OFEM_CNTL_FAULT_LED_MASK;		setenv("bootdelay", "-1");		saveenv();		printf("fakeled is set. use 'setenv fakeled ; setenv bootdelay 5 ; saveenv' to recover\n");	}	return (0);}/************************************************************************* *  ide_set_reset ************************************************************************/#ifdef CONFIG_IDE_RESETvoid ide_set_reset(int on){	KAREF_FPGA_REGS_ST *karef_ps;	/* TODO: ide reset */	karef_ps = (KAREF_FPGA_REGS_ST *)CFG_KAREF_FPGA_BASE;	if (on) {		karef_ps->reset_ul &= ~SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_MASK;	} else {		karef_ps->reset_ul |= SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_MASK;	}}#endif /* CONFIG_IDE_RESET *//************************************************************************* *  fpga_init ************************************************************************/void fpga_init(void){	KAREF_FPGA_REGS_ST *karef_ps;	OFEM_FPGA_REGS_ST *ofem_ps;	unsigned char ofem_id;	unsigned long tmp;	/* Ensure we have power all around */	udelay(500);	karef_ps = (KAREF_FPGA_REGS_ST *)CFG_KAREF_FPGA_BASE;	tmp =		SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_MASK |		SAND_HAL_KA_SC_SCAN_RESET_BME_RESET_N_MASK |		SAND_HAL_KA_SC_SCAN_RESET_KA_RESET_N_MASK |		SAND_HAL_KA_SC_SCAN_RESET_SLAVE_RESET_N_MASK |		SAND_HAL_KA_SC_SCAN_RESET_OFEM_RESET_N_MASK |		SAND_HAL_KA_SC_SCAN_RESET_IFE_A_RESET_N_MASK |		SAND_HAL_KA_SC_SCAN_RESET_I2C_MUX1_RESET_N_MASK |		SAND_HAL_KA_SC_SCAN_RESET_PHY0_RESET_N_MASK |		SAND_HAL_KA_SC_SCAN_RESET_PHY1_RESET_N_MASK;	karef_ps->reset_ul = tmp;	/*	 * Wait a bit to allow the ofem fpga to get its brains	 */	udelay(5000);	/*	 * Check to see if the ofem is there	 */	ofem_id = (unsigned char)((karef_ps->boardinfo_ul & SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_MASK)				  >> SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_SHIFT);	if(0xF != ofem_id) {		tmp =			SAND_HAL_KA_OF_OFEM_RESET_I2C_MUX0_RESET_N_MASK |			SAND_HAL_KA_OF_OFEM_RESET_LOCH0_RESET_N_MASK |			SAND_HAL_KA_OF_OFEM_RESET_MAC0_RESET_N_MASK;		ofem_ps = (OFEM_FPGA_REGS_ST *)CFG_OFEM_FPGA_BASE;		ofem_ps->reset_ul = tmp;		ofem_ps->control_ul |= 1 < SAND_HAL_KA_OF_OFEM_CNTL_FAULT_LED_SHIFT;	}	karef_ps->control_ul |= 1 << SAND_HAL_KA_SC_SCAN_CNTL_FAULT_LED_SHIFT;	asm("eieio");	return;}int karefSetupVars(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]){	unsigned short sernum;	char envstr[255];	sernum = sbcommon_get_serial_number();	memset(envstr, 0, 255);	/*	 * Setup our ip address	 */	sprintf(envstr, "10.100.70.%d", sernum);	setenv("ipaddr", envstr);	/*	 * Setup the host ip address	 */	setenv("serverip", "10.100.17.10");	/*	 * Setup default bootargs	 */	memset(envstr, 0, 255);	sprintf(envstr, "console=ttyS0,9600 root=/dev/nfs "		"rw nfsroot=10.100.17.10:/home/metrobox/mbc70.%d "		"nfsaddrs=10.100.70.%d:10.100.17.10:10.100.1.1:"		"255.255.0.0:karef%d.sandburst.com:eth0:none idebus=33",		sernum, sernum, sernum);	setenv("bootargs_nfs", envstr);	setenv("bootargs", envstr);	/*	 * Setup CF bootargs	 */	memset(envstr, 0, 255);	sprintf(envstr, "console=ttyS0,9600 root=/dev/hda2 "		"rw ip=10.100.70.%d:::255.255.0.0:karef%d:eth0:none idebus=33",		sernum, sernum);	setenv("bootargs_cf", envstr);	/*	 * Setup Default boot command	 */	setenv("bootcmd_tftp", "tftp 8000000 uImage.karef;bootm 8000000");	setenv("bootcmd", "tftp 8000000 uImage.karef;bootm 8000000");	/*	 * Setup compact flash boot command	 */	setenv("bootcmd_cf", "fatload ide 0 8000000 uimage.karef;bootm 8000000");	saveenv();	return(1);}int karefRecover(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]){	unsigned short sernum;	char envstr[255];	sernum = sbcommon_get_serial_number();	printf("\nSetting up environment for filesystem recovery\n");	/*	 * Setup default bootargs	 */	memset(envstr, 0, 255);	sprintf(envstr, "console=ttyS0,9600 root=/dev/ram0 "		"rw ip=10.100.70.%d:::255.255.0.0:karef%d:eth0:none",		sernum, sernum);	setenv("bootargs", envstr);	/*	 * Setup Default boot command	 */	setenv("bootcmd", "fatload ide 0 8000000 uimage.karef;"	       "fatload ide 0 8100000 pramdisk;"	       "bootm 8000000 8100000");	printf("Done.  Please type boot<cr>.\nWhen the kernel has booted"	       " please type fsrecover.sh<cr>\n");	return(1);}U_BOOT_CMD(kasetup, 1, 1, karefSetupVars,	   "kasetup - Set environment to factory defaults\n", NULL);U_BOOT_CMD(karecover, 1, 1, karefRecover,	   "karecover - Set environment to allow for fs recovery\n", NULL);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -