void main(void) { extern struct mem_timings mem_timings; void *entry; int is_resume = (get_wakeup_state() != IS_NOT_WAKEUP); /* Clock must be initialized before console_init, otherwise you may need * to re-initialize serial console drivers again. */ system_clock_init(); console_init(); setup_power(is_resume); setup_memory(&mem_timings, is_resume); primitive_mem_test(); if (is_resume) { wakeup(); } setup_storage(); setup_gpio(); setup_ec(); simple_spi_test(); /* Set SPI (primary CBFS media) clock to 50MHz. */ /* if this is uncommented SPI will not work correctly. */ clock_set_rate(PERIPH_ID_SPI1, 50000000); simple_spi_test(); entry = cbfs_load_stage(CBFS_DEFAULT_MEDIA, "fallback/coreboot_ram"); simple_spi_test(); stage_exit(entry); }
void main(void) { extern struct mem_timings mem_timings; int is_resume = (get_wakeup_state() != IS_NOT_WAKEUP); int power_init_failed; exynos5420_config_smp(); power_init_failed = setup_power(is_resume); timestamp_init(timestamp_get()); timestamp_add_now(TS_START_ROMSTAGE); /* Clock must be initialized before console_init, otherwise you may need * to re-initialize serial console drivers again. */ system_clock_init(); exynos_pinmux_uart3(); console_init(); exception_init(); if (power_init_failed) die("Failed to intialize power.\n"); /* re-initialize PMIC I2C channel after (re-)setting system clocks */ i2c_init(PMIC_I2C_BUS, 1000000, 0x00); /* 1MHz */ timestamp_add_now(TS_BEFORE_INITRAM); setup_memory(&mem_timings, is_resume); timestamp_add_now(TS_AFTER_INITRAM); primitive_mem_test(); trustzone_init(); if (is_resume) { wakeup(); } setup_gpio(); setup_ec(); simple_spi_test(); /* Set SPI (primary CBFS media) clock to 50MHz. */ /* if this is uncommented SPI will not work correctly. */ clock_set_rate(PERIPH_ID_SPI1, 50000000); exynos_pinmux_spi1(); simple_spi_test(); cbmem_initialize_empty(); simple_spi_test(); timestamp_add_now(TS_END_ROMSTAGE); run_ramstage(); }
/** * \brief Initialize system * * This function will call the various initialization functions within the * system namespace. If a given optional system module is not available, the * associated call will effectively be a NOP (No Operation). * * Currently the following initialization functions are supported: * - System clock initialization (via the SYSTEM CLOCK sub-module) * - Board hardware initialization (via the Board module) */ void system_init(void) { /* Configure GCLK and clock sources according to conf_clocks.h */ system_clock_init(); /* Initialize board hardware */ system_board_init(); }
int lowlevel_init_subsystems(void) { // uint32_t reset_status; int actions = 0; // do_barriers(); /* Setup cpu info which is needed to select correct register offsets */ cpu_info_init(); #if 0 reset_status = power_read_reset_status(); switch (reset_status) { case S5P_CHECK_SLEEP: actions = DO_CLOCKS | DO_WAKEUP; break; case S5P_CHECK_DIDLE: case S5P_CHECK_LPA: actions = DO_WAKEUP; default: /* This is a normal boot (not a wake from sleep) */ actions = DO_UART | DO_CLOCKS | DO_POWER; } #endif actions = DO_UART | DO_CLOCKS | DO_POWER; if (actions & DO_POWER) power_init(); if (actions & DO_CLOCKS) system_clock_init(); if (actions & DO_UART) { /* Set up serial UART so we can printf() */ /* FIXME(dhendrix): add a function for mapping CONFIG_CONSOLE_SERIAL_UART_ADDRESS to PERIPH_ID_UARTn */ // exynos_pinmux_config(EXYNOS_UART, PINMUX_FLAG_NONE); exynos_pinmux_config(PERIPH_ID_UART3, PINMUX_FLAG_NONE); console_init(); while (1) { console_tx_byte('C'); } } init_timer(); /* FIXME(dhendrix): was timer_init() */ #if 0 if (actions & DO_CLOCKS) { mem_ctrl_init(); tzpc_init(); } #endif // return actions & DO_WAKEUP; return 0; }
static struct mem_timings *setup_clock(void) { struct mem_timings *mem = get_mem_timings(); struct arm_clk_ratios *arm_ratios = get_arm_clk_ratios(); if (!mem) { die("Unable to auto-detect memory timings\n"); } system_clock_init(mem, arm_ratios); return mem; }
void main(void) { struct mem_timings *mem; struct arm_clk_ratios *arm_ratios; int ret; void *entry; clock_set_rate(PERIPH_ID_SPI1, 50000000); /* set spi clock to 50Mhz */ /* Clock must be initialized before console_init, otherwise you may need * to re-initialize serial console drivers again. */ mem = get_mem_timings(); arm_ratios = get_arm_clk_ratios(); system_clock_init(mem, arm_ratios); console_init(); /* * FIXME: Do necessary I2C init so low-level PMIC code doesn't need to. * Also, we should only call power_init() on cold boot. */ power_init(); if (!mem) { printk(BIOS_CRIT, "Unable to auto-detect memory timings\n"); while(1); } printk(BIOS_SPEW, "man: 0x%x type: 0x%x, div: 0x%x, mhz: 0x%x\n", mem->mem_manuf, mem->mem_type, mem->mpll_mdiv, mem->frequency_mhz); ret = ddr3_mem_ctrl_init(mem, DMC_INTERLEAVE_SIZE); if (ret) { printk(BIOS_ERR, "Memory controller init failed, err: %x\n", ret); while(1); } /* Set up MMU and caches */ mmu_setup_by_mva(CONFIG_SYS_SDRAM_BASE, CONFIG_DRAM_SIZE_MB); initialize_s5p_mshc(); graphics(); entry = cbfs_load_stage(CBFS_DEFAULT_MEDIA, "fallback/coreboot_ram"); printk(BIOS_INFO, "entry is 0x%p, leaving romstage.\n", entry); stage_exit(entry); }
/** * \brief Initialize system * * This function will call the various initialization functions within the * system namespace. If a given optional system module is not available, the * associated call will effectively be a NOP (No Operation). * * Currently the following initialization functions are supported: * - System clock initialization (via the SYSTEM CLOCK sub-module) * - Board hardware initialization (via the Board module) * - Event system driver initialization (via the EVSYS module) * - External Interrupt driver initialization (via the EXTINT module) */ void system_init(void) { /* Configure GCLK and clock sources according to conf_clocks.h */ system_clock_init(); /* Initialize board hardware */ system_board_init(); /* Initialize EVSYS hardware */ _system_events_init(); /* Initialize External hardware */ _system_extint_init(); }
/********************************************************************************************************************* ** Function name: cpu_init ** Descriptions: 初始化处理器 ** Input parameters: ** Output parameters: ** Returned value: **-------------------------------------------------------------------------------------------------------------------- ** Created by: Fengliang ** Created Date: 2010-9-20 16:11:46 ** Test recorde: **-------------------------------------------------------------------------------------------------------------------- ** Modified by: ** Modified date: ** Test recorde: *********************************************************************************************************************/ void cpu_init(void) { /* * 1) 配置系统时钟 */ system_clock_init(); /* * 2) 重定向中断向量表 */ /* * 3) 初始化中断控制器 */ vic_setup(); }
void main(void) //----------------------------------------------------------------------------------------------------- // Purpose: The MCU will come here after reset. // // // Rev: 1.5a TEMPLATE RELEASE // // Notes: None //----------------------------------------------------------------------------------------------------- { //Initialization function calls init_ports(); motors_init(); system_clock_init(); InitDisplay("FHBTEST "); //Start-up splash changed to unity ID InitUART(); ADInit(); ENABLE_SWITCHES; /* LED initialization - macro defined in qsk_bsp.h */ ENABLE_LEDS //Polling for switch presses while(TRUE) { if(S1 == PRESSED) { BNSPrintf(LCD,"\tTEST \n "); project2ADemo(); } else if (S2 == PRESSED) { BNSPrintf(LCD,"\tOff \n "); } else if (S3 == PRESSED) { BNSPrintf(LCD,"\tFigure 8 \n "); DoFigureEight(); } else { BNSPrintf(LCD,"\tTeam 2 \n "); } } }
int lowlevel_init_subsystems(void) { uint32_t reset_status; int actions = 0; do_barriers(); /* Setup cpu info which is needed to select correct register offsets */ cpu_info_init(); reset_status = power_read_reset_status(); switch (reset_status) { case S5P_CHECK_SLEEP: actions = DO_CLOCKS | DO_WAKEUP; break; case S5P_CHECK_DIDLE: case S5P_CHECK_LPA: actions = DO_WAKEUP; break; default: /* This is a normal boot (not a wake from sleep) */ actions = DO_UART | DO_CLOCKS | DO_POWER | DO_MEM_RESET; } if (actions & DO_POWER) power_init(); if (actions & DO_CLOCKS) system_clock_init(); if (actions & DO_UART) { /* Set up serial UART so we can printf() */ exynos_pinmux_config(EXYNOS_UART, PINMUX_FLAG_NONE); serial_init(); timer_init(); } if (actions & DO_CLOCKS) { mem_ctrl_init(actions & DO_MEM_RESET); tzpc_init(); } return actions & DO_WAKEUP; }
/** Initialise clock and disable watchdog timer. */ void system_init (void) { system_clock_init (); system_watchdog_timer_init (); }