📄 metrobox.c
字号:
} printf ("OptoFPGA ID:\t0x%02X\tRev: 0x%02X\n", opto_id, opto_rev); printf ("Board Rev:\t0x%02X\tID: %s\n", brd_rev, board_id_as[brd_id]); /* 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 */ sbcommon_fans(); return (0);}/************************************************************************* * misc_init_r * * Do nothing. ************************************************************************/int misc_init_r (void){ unsigned short sernum; char envstr[255]; unsigned char opto_rev; OPTO_FPGA_REGS_ST *opto_ps; opto_ps = (OPTO_FPGA_REGS_ST *)CFG_FPGA_BASE; 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", METROBOX_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.60.%d:::255.255.0.0:metrobox%d:eth0:none idebus=33", sernum, sernum); setenv("bootargs", envstr); /* * Setup Default boot command */ setenv("bootcmd", "fatload ide 0 8000000 pimage.metrobox;" "fatload ide 0 8100000 pramdisk;" "bootm 8000000 8100000"); printf("Done. Please type allow the system to continue to boot\n"); } if( getenv("fakeled")) { setenv("bootdelay", "-1"); saveenv(); printf("fakeled is set. use 'setenv fakeled ; setenv bootdelay 5 ; saveenv' to recover\n"); opto_rev = (unsigned char)((opto_ps->revision_ul & SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_MASK) >> SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_SHIFT); if(0x12 <= opto_rev) { opto_ps->control_ul &= ~ SAND_HAL_XC_XCVR_CNTL_CNTL_ERROR_LED_MASK; } } return (0);}/************************************************************************* * ide_set_reset ************************************************************************/#ifdef CONFIG_IDE_RESETvoid ide_set_reset(int on){ OPTO_FPGA_REGS_ST *opto_ps; opto_ps = (OPTO_FPGA_REGS_ST *)CFG_FPGA_BASE; if (on) { /* assert RESET */ opto_ps->reset_ul &= ~SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_MASK; } else { /* release RESET */ opto_ps->reset_ul |= SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_MASK; }}#endif /* CONFIG_IDE_RESET *//************************************************************************* * fpga_init ************************************************************************/void fpga_init(void){ OPTO_FPGA_REGS_ST *opto_ps; unsigned char opto_rev; unsigned long tmp; /* Ensure we have power all around */ udelay(500); /* * Take appropriate hw bits out of reset */ opto_ps = (OPTO_FPGA_REGS_ST *)CFG_FPGA_BASE; tmp = SAND_HAL_XC_XCVR_CNTL_RESET_MAC1_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_MAC0_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_BME_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_ACE_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_QE_A_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_IFE_A_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_EFE_A_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_QE_B_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_IFE_B_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_EFE_B_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_LOCK1_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_LOCK0_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX1_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX0_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_PHY0_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_PHY1_RESET_N_MASK | SAND_HAL_XC_XCVR_CNTL_RESET_SLAVE_RESET_N_MASK; opto_ps->reset_ul = tmp; /* * Turn on the 'Slow Blink' for the System Error Led. * Ensure FPGA rev is up to at least rev 0x12 */ opto_rev = (unsigned char)((opto_ps->revision_ul & SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_MASK) >> SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_SHIFT); if(0x12 <= opto_rev) { opto_ps->control_ul |= 1 << SAND_HAL_XC_XCVR_CNTL_CNTL_ERROR_LED_SHIFT; } asm("eieio"); return;}int metroboxSetupVars(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.60.%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/mbc%d " "nfsaddrs=10.100.60.%d:10.100.17.10:10.100.1.1" ":255.255.0.0:metrobox%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.60.%d:::255.255.0.0:metrobox%d:eth0:none idebus=33", sernum, sernum); setenv("bootargs_cf", envstr); /* * Setup Default boot command */ setenv("bootcmd_tftp", "tftp 8000000 pImage.metrobox;bootm 8000000"); setenv("bootcmd", "tftp 8000000 pImage.metrobox;bootm 8000000"); /* * Setup compact flash boot command */ setenv("bootcmd_cf", "fatload ide 0 8000000 pimage.metrobox;bootm 8000000"); saveenv(); return(1);}int metroboxRecover(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.60.%d:::255.255.0.0:metrobox%d:eth0:none", sernum, sernum); setenv("bootargs", envstr); /* * Setup Default boot command */ setenv("bootcmd", "fatload ide 0 8000000 pimage.metrobox;" "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(mbsetup, 1, 1, metroboxSetupVars, "mbsetup - Set environment to factory defaults\n", NULL);U_BOOT_CMD(mbrecover, 1, 1, metroboxRecover, "mbrecover - Set environment to allow for fs recovery\n", NULL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -