void hw_init(void) { /* Disable watchdog */ at91_disable_wdt(); /* * At this stage the main oscillator * is supposed to be enabled PCK = MCK = MOSC */ /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ pmc_cfg_plla(PLLA_SETTINGS); /* Initialize PLLA charge pump */ pmc_init_pll(AT91C_PMC_IPLLA_3); /* Switch PCK/MCK on Main clock output */ pmc_cfg_mck(BOARD_PRESCALER_MAIN_CLOCK); /* Switch PCK/MCK on PLLA output */ pmc_cfg_mck(BOARD_PRESCALER_PLLA); #ifdef CONFIG_USER_HW_INIT /* Set GMAC & EMAC pins to output low */ at91_special_pio_output_low(); #endif /* Init timer */ timer_init(); #ifdef CONFIG_SCLK slowclk_enable_osc32(); #endif /* initialize the dbgu */ initialize_dbgu(); #ifdef CONFIG_DDR2 /* Initialize MPDDR Controller */ ddramc_init(); #endif #ifdef CONFIG_PM_EXTERNAL_DEVICES #ifdef CONFIG_MACB /* Make PHYs to power down mode */ phys_enter_power_down(); #endif /* #ifdef CONFIG_MACB */ #endif /* #ifdef CONFIG_PM_EXTERNAL_DEVICES */ }
void hw_init(void) { /* Disable watchdog */ at91_disable_wdt(); /* At this stage the main oscillator * is supposed to be enabled PCK = MCK = MOSC */ writel(0x00, AT91C_BASE_PMC + PMC_PLLICPR); /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); /* PCK = PLLA/2 = 3 * MCK */ pmc_cfg_mck(BOARD_PRESCALER, PLL_LOCK_TIMEOUT); /* Switch MCK on PLLA output */ pmc_cfg_mck(0x1302, PLL_LOCK_TIMEOUT); /* Enable External Reset */ writel(AT91C_RSTC_KEY_UNLOCK | AT91C_RSTC_URSTEN, AT91C_BASE_RSTC + RSTC_RMR); /* Init timer */ timer_init(); #ifdef CONFIG_SCLK slowclk_enable_osc32(); #endif /* Initialize dbgu */ initialize_dbgu(); #ifdef CONFIG_DDR2 /* Initialize DDRAM Controller */ ddramc_init(); #endif #ifdef CONFIG_USER_HW_INIT hw_init_hook(); #endif #if defined(CONFIG_NANDFLASH_RECOVERY) || defined(CONFIG_DATAFLASH_RECOVERY) /* Init the recovery buttons pins */ recovery_buttons_hw_init(); #endif /* do some special init */ ek_special_hw_init(); }
void hw_init(void) { /* Disable watchdog */ at91_disable_wdt(); /* At this stage the main oscillator is supposed to be enabled PCK = MCK = MOSC */ writel(0x00, AT91C_BASE_PMC + PMC_PLLICPR); /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); /* PCK = PLLA/2 = 3 * MCK */ pmc_cfg_mck(BOARD_PRESCALER_MAIN_CLOCK, PLL_LOCK_TIMEOUT); /* Switch MCK on PLLA output */ pmc_cfg_mck(BOARD_PRESCALER_PLLA, PLL_LOCK_TIMEOUT); /* Enable External Reset */ writel(((0xA5 << 24) | AT91C_RSTC_URSTEN), AT91C_BASE_RSTC + RSTC_RMR); /* Init timer */ timer_init(); #ifdef CONFIG_SCLK slowclk_enable_osc32(); #endif /* initialize the dbgu */ initialize_dbgu(); #ifdef CONFIG_DDR2 /* Initialize MPDDR Controller */ ddramc_init(); #endif /* load one wire information */ one_wire_hw_init(); #ifdef CONFIG_USER_HW_INIT hw_init_hook(); #endif HDMI_Qt1070_workaround(); #if defined(CONFIG_NANDFLASH_RECOVERY) || defined(CONFIG_DATAFLASH_RECOVERY) /* Init the recovery buttons pins */ recovery_buttons_hw_init(); #endif }
void hw_init(void) { /* Disable watchdog */ at91_disable_wdt(); /* * At this stage the main oscillator is * supposed to be enabled PCK = MCK = MOSC */ pmc_init_pll(0); /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ pmc_cfg_plla(PLLA_SETTINGS); /* Switch PCK/MCK on Main clock output */ pmc_cfg_mck(BOARD_PRESCALER_MAIN_CLOCK); /* Switch PCK/MCK on PLLA output */ pmc_cfg_mck(BOARD_PRESCALER_PLLA); /* Enable External Reset */ writel(AT91C_RSTC_KEY_UNLOCK | AT91C_RSTC_URSTEN, AT91C_BASE_RSTC + RSTC_RMR); /* Init timer */ timer_init(); #ifdef CONFIG_SCLK slowclk_enable_osc32(); #endif /* Initialize dbgu */ initialize_dbgu(); #ifdef CONFIG_DDR2 /* Initialize DDRAM Controller */ ddramc_init(); #endif /* one wire pin init */ one_wire_hw_init(); #ifdef CONFIG_USER_HW_INIT hw_init_hook(); #endif }
void hw_init(void) { /* Disable watchdog */ at91_disable_wdt(); /* At this stage the main oscillator is *supposed to be enabled PCK = MCK = MOSC */ writel(0x00, AT91C_BASE_PMC + PMC_PLLICPR); /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); /* PCK = PLLA/2 = 3 * MCK */ pmc_cfg_mck(BOARD_PRESCALER_MAIN_CLOCK, PLL_LOCK_TIMEOUT); /* Switch MCK on PLLA output */ pmc_cfg_mck(BOARD_PRESCALER_PLLA, PLL_LOCK_TIMEOUT); /*Enable External Reset */ writel(((0xA5 << 24) | AT91C_RSTC_URSTEN), AT91C_BASE_RSTC + RSTC_RMR); /* Init timer */ timer_init(); #ifdef CONFIG_SCLK slowclk_enable_osc32(); #endif /* Initialize dbgu */ initialize_dbgu(); #ifdef CONFIG_DDR2 /* Initialize DDRAM Controller */ ddramc_init(); #endif /* one wire pin init */ one_wire_hw_init(); #ifdef CONFIG_USER_HW_INIT hw_init_hook(); #endif }
int main(void) { struct image_info image; char *media_str = NULL; int ret; char filename[FILENAME_BUF_LEN]; char of_filename[FILENAME_BUF_LEN]; memset(&image, 0, sizeof(image)); memset(filename, 0, FILENAME_BUF_LEN); memset(of_filename, 0, FILENAME_BUF_LEN); image.dest = (unsigned char *)JUMP_ADDR; #ifdef CONFIG_OF_LIBFDT image.of = 1; image.of_dest = (unsigned char *)OF_ADDRESS; #endif #ifdef CONFIG_FLASH media_str = "FLASH: "; image.offset = IMG_ADDRESS; #if !defined(CONFIG_LOAD_LINUX) && !defined(CONFIG_LOAD_ANDROID) image.length = IMG_SIZE; #endif #ifdef CONFIG_OF_LIBFDT image.of_offset = OF_OFFSET; #endif #endif #ifdef CONFIG_NANDFLASH media_str = "NAND: "; image.offset = IMG_ADDRESS; #if !defined(CONFIG_LOAD_LINUX) && !defined(CONFIG_LOAD_ANDROID) image.length = IMG_SIZE; #endif #ifdef CONFIG_OF_LIBFDT image.of_offset = OF_OFFSET; #endif #endif #ifdef CONFIG_DATAFLASH media_str = "SF: "; image.offset = IMG_ADDRESS; #if !defined(CONFIG_LOAD_LINUX) && !defined(CONFIG_LOAD_ANDROID) image.length = IMG_SIZE; #endif #ifdef CONFIG_OF_LIBFDT image.of_offset = OF_OFFSET; #endif #endif #ifdef CONFIG_SDCARD media_str = "SD/MMC: "; image.filename = filename; strcpy(image.filename, IMAGE_NAME); #ifdef CONFIG_OF_LIBFDT image.of_filename = of_filename; #endif #endif #ifdef CONFIG_HW_INIT hw_init(); #endif #if defined(CONFIG_SCLK) #if !defined(CONFIG_SAMA5D4) slowclk_enable_osc32(); #endif #endif #ifdef CONFIG_HW_DISPLAY_BANNER display_banner(); #endif #ifdef CONFIG_REDIRECT_ALL_INTS_AIC redirect_interrupts_to_nsaic(); #endif #ifdef CONFIG_LOAD_HW_INFO /* Load board hw informaion */ load_board_hw_info(); #endif #ifdef CONFIG_PM at91_board_pm(); #endif #ifdef CONFIG_DISABLE_ACT8865_I2C act8865_workaround(); #endif init_loadfunction(); #if defined(CONFIG_SECURE) image.dest -= sizeof(at91_secure_header_t); #endif ret = (*load_image)(&image); #if defined(CONFIG_SECURE) if (!ret) ret = secure_check(image.dest); image.dest += sizeof(at91_secure_header_t); #endif if (media_str) usart_puts(media_str); if (ret == 0){ usart_puts("Done to load image\n"); } if (ret == -1) { usart_puts("Failed to load image\n"); while(1); } if (ret == -2) { usart_puts("Success to recovery\n"); while (1); } #ifdef CONFIG_SCLK slowclk_switch_osc32(); #endif #if defined(CONFIG_ENTER_NWD) switch_normal_world(); /* point never reached with TZ support */ #endif return JUMP_ADDR; }
void hw_init(void) { /* Disable watchdog */ at91_disable_wdt(); /* * At this stage the main oscillator * is supposed to be enabled PCK = MCK = MOSC */ /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); /* Initialize PLLA charge pump */ pmc_init_pll(AT91C_PMC_IPLLA_3); /* Switch PCK/MCK on Main clock output */ pmc_cfg_mck(BOARD_PRESCALER_MAIN_CLOCK, PLL_LOCK_TIMEOUT); /* Switch PCK/MCK on PLLA output */ pmc_cfg_mck(BOARD_PRESCALER_PLLA, PLL_LOCK_TIMEOUT); #ifdef CONFIG_USER_HW_INIT /* Set GMAC & EMAC pins to output low */ at91_special_pio_output_low(); #endif /* Disable the software modem clock */ at91_disable_smd_clock(); /* Init timer */ timer_init(); #ifdef CONFIG_SCLK slowclk_enable_osc32(); #endif /* initialize the dbgu */ initialize_dbgu(); #ifdef CONFIG_DDR2 /* Initialize MPDDR Controller */ ddramc_init(); #endif #ifdef CONFIG_TWI twi_init(); #endif #ifdef CONFIG_ACT8865 /* Set ACT8865 REG power saving mode */ act8865_set_power_saving_mode(); /* Set ACT8865 output voltage */ sama5d4ek_act8865_set_reg_voltage(); /* Dsiable ACT8865 I2C interface */ if (act8865_workaround_disable_i2c()) while (1) ; #endif #ifdef CONFIG_PM_EXTERNAL_DEVICES #ifdef CONFIG_MACB /* Make PHYs to power down mode */ phys_enter_power_down(); #endif #endif /* #ifdef CONFIG_PM_EXTERNAL_DEVICES */ }