51 lines
1.2 KiB
C
51 lines
1.2 KiB
C
#include "includes.h"
|
|
#include "timer.h"
|
|
|
|
void clock_early_init()
|
|
{
|
|
if (M2P_LRC24M_MODE) {
|
|
//P11_SYS_CLK_SEL(P11_SYS_CLK_BTOSC_24M);
|
|
//P11_SYS_CLK_SEL(P11_SYS_CLK_LRC24M);
|
|
P11_SYS_CLK_SEL(P11_SYS_CLK_RC16M);
|
|
|
|
#if 0
|
|
//PB0 OUT
|
|
P11_PORT->PB_DIR &= ~BIT(0);
|
|
P11_PORT->PB_SEL |= BIT(0);
|
|
//och0 sysclk
|
|
SFR(P11_PORT->OCH_CON0, 0, 4, 7);
|
|
//crossbar och0
|
|
P11_OMAP->P11_PB0_OUT = P11_FO_GP_OCH0;
|
|
|
|
while (1);
|
|
#endif
|
|
}
|
|
|
|
//std12M 输出
|
|
SFR(P11_CLOCK->CLK_CON1, 15, 2, 1); //MSYS_BT24M --> P11_BT24M
|
|
SFR(P11_CLOCK->CLK_CON1, 17, 3, 1); //STD12M sel P11_BT24M input
|
|
SFR(P11_CLOCK->CLK_CON1, 20, 2, 0); // div0
|
|
SFR(P11_CLOCK->CLK_CON1, 22, 2, 1); // div1
|
|
}
|
|
|
|
static void clock_switch_lrc24m()
|
|
{
|
|
printf("fun: %s\n", __FUNCTION__);
|
|
|
|
P11_SYS_CLK_SEL(P11_SYS_CLK_LRC24M);
|
|
|
|
uart_clk_sel(UART_CLK_SYS_CLK);
|
|
}
|
|
|
|
static void clock_msg_handler(void *priv, u8 *msg, u32 len)
|
|
{
|
|
switch (msg[0]) {
|
|
case MSG_CLOCK_LRC24M_OK:
|
|
clock_switch_lrc24m();
|
|
timer_set_clock_source(GPTIMER_CLK_SRC_LRC_24M);
|
|
break;
|
|
}
|
|
}
|
|
|
|
REGISTER_M2P_MSG_HANDLER(0, MSG_CLOCK, clock_msg_handler);
|