void system_init(void) { imx233_reset_block(&HW_ICOLL_CTRL); /* disable all interrupts */ for(int i = 0; i < INT_SRC_NR_SOURCES; i++) { /* priority = 0, disable, disable fiq */ HW_ICOLL_INTERRUPT(i) = 0; } /* setup vbase as isr_table */ HW_ICOLL_VBASE = (uint32_t)&isr_table; /* enable final irq bit */ __REG_SET(HW_ICOLL_CTRL) = HW_ICOLL_CTRL__IRQ_FINAL_ENABLE; imx233_pinctrl_init(); imx233_timrot_init(); imx233_dma_init(); imx233_ssp_init(); imx233_dcp_init(); }
void system_init(void) { /* NOTE: don't use anything here that might require tick task ! * It is initialized by kernel_init *after* system_init(). * The main() will naturally set cpu speed to normal after kernel_init() * so don't bother if the cpu is running at 24MHz here. * Make sure IO clock is running at expected speed */ imx233_clkctrl_init(); imx233_clkctrl_enable(CLK_PLL, true); #if IMX233_SUBTARGET >= 3700 imx233_clkctrl_set_frac_div(CLK_IO, 18); // clk_io@clk_pll #endif imx233_rtc_init(); imx233_icoll_init(); imx233_pinctrl_init(); imx233_timrot_init(); imx233_dma_init(); imx233_ssp_init(); #if IMX233_SUBTARGET >= 3700 imx233_dcp_init(); #endif imx233_pwm_init(); imx233_lradc_init(); imx233_power_init(); imx233_i2c_init(); imx233_powermgmt_init(); /* setup watchdog */ watchdog_init(); /* make sure auto-slow is disable now, we don't know at which frequency we * are running and auto-slow could violate constraints on {xbus,hbus} */ imx233_clkctrl_enable_auto_slow(false); imx233_clkctrl_set_auto_slow_div(BV_CLKCTRL_HBUS_SLOW_DIV__BY8); cpu_frequency = imx233_clkctrl_get_freq(CLK_CPU); #if !defined(BOOTLOADER) && CONFIG_TUNER != 0 fmradio_i2c_init(); #endif }