📄 karef.c
字号:
"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 + -