embox

Форк
0
/
platform_init.c 
44 строки · 1.3 Кб
1
/**
2
 * @file
3
 * @brief XXX this is not arch code but platfrom at91sam7
4
 *
5
 * @date 21.06.10
6
 * @author Anton Kozlov
7
 */
8

9
#include <drivers/at91sam7s256.h>
10
#include <drivers/watchdog.h>
11
#include <framework/mod/options.h>
12
#include <hal/reg.h>
13

14
#define CONFIG_SYS_CLK_MUL OPTION_GET(NUMBER, sys_clk_mul)
15
#define CONFIG_SYS_CLK_DIV OPTION_GET(NUMBER, sys_clk_div)
16

17
static void initialize_main_clock(void) {
18
	REG_STORE(AT91C_CKGR_MOR,
19
	    AT91C_CKGR_MOSCEN | (AT91C_CKGR_OSCOUNT & (6 << 8)));
20
	while (!(REG_LOAD(AT91C_PMC_SR) & AT91C_PMC_MOSCS)) {}
21

22
	REG_STORE(AT91C_CKGR_PLLR,
23
	    (AT91C_CKGR_MUL & (CONFIG_SYS_CLK_MUL << AT91C_CKGR_MUL_OFFSET))
24
	        | (AT91C_CKGR_DIV & (CONFIG_SYS_CLK_DIV << AT91C_CKGR_DIV_OFFSET))
25
	        | (28 << AT91C_CKGR_PLLCOUNT_OFFSET));
26
	while (!(REG_LOAD(AT91C_PMC_SR) & AT91C_PMC_LOCK)) {}
27

28
	REG_STORE(AT91C_PMC_MCKR, AT91C_PMC_PRES_CLK_2);
29
	while (!(REG_LOAD(AT91C_PMC_SR) & AT91C_PMC_MCKRDY)) {}
30

31
	REG_STORE(AT91C_PMC_MCKR, AT91C_PMC_CSS_PLL_CLK | AT91C_PMC_PRES_CLK_2);
32
	while (!(REG_LOAD(AT91C_PMC_SR) & AT91C_PMC_MCKRDY)) {}
33
}
34

35
static void initialize_memory_controller(void) {
36
	/* is's seems, that without everything are buring with hellfire */
37
	REG_STORE(AT91C_MC_FMR, AT91C_MC_FWS_1FWS | (AT91C_MC_FMCN & (72 < 16)));
38
}
39

40
void platform_init(void) {
41
	watchdog_disable();
42
	initialize_main_clock();
43
	initialize_memory_controller();
44
}
45

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.