Files
AC707N/SDK/interface/driver/cpu/br35/asm/clock_hal.h
T
2025-12-03 11:12:34 +08:00

125 lines
3.4 KiB
C

#ifndef __CLOCK_HAL_H__
#define __CLOCK_HAL_H__
#include "typedef.h"
enum CLK_OUT_SOURCE0 {
CLK_OUT_SRC0_NULL = 0,
CLK_OUT_SRC0_LRC_CLK,
CLK_OUT_SRC0_STD_12M,
CLK_OUT_SRC0_STD_24M,
CLK_OUT_SRC0_STD_48M,
CLK_OUT_SRC0_BTOSC_24M,
CLK_OUT_SRC0_BTOSC_48M,
CLK_OUT_SRC0_HSB_CLK,
CLK_OUT_SRC0_LSB_CLK,
CLK_OUT_SRC0_PLL_96M,
CLK_OUT_SRC0_RC_250K,
CLK_OUT_SRC0_RC_16M,
CLK_OUT_SRC0_LRC_24M,
CLK_OUT_SRC0_ALNK0_CLK,
CLK_OUT_SRC0_RF_CKO_CLK,
CLK_OUT_SRC0_USB_CLK,
};
enum CLK_OUT_SOURCE1 {
CLK_OUT_SRC2_NULL = 0,
CLK_OUT_SRC2_SYS_PLL_D3P5 = 4,
CLK_OUT_SRC2_SYS_PLL_D2P5,
CLK_OUT_SRC2_SYS_PLL_D2P0,
CLK_OUT_SRC2_SYS_PLL_D1P5,
CLK_OUT_SRC2_SYS_PLL_D1P0,
};
void clk_out0(u8 gpio, enum CLK_OUT_SOURCE0 clk);
void clk_out2(u8 gpio, enum CLK_OUT_SOURCE1 clk, u8 div);
//无 clk_out1
void clk_out0_close(u8 gpio);
void clk_out2_close(u8 gpio);
enum CLK_OUT_SOURCE {
//ch0,ch1. no div
CLK_OUT_NULL = 0x0100,
CLK_OUT_LRC_CLK,
CLK_OUT_STD_12M,
CLK_OUT_STD_24M,
CLK_OUT_STD_48M,
CLK_OUT_BTOSC_24M,
CLK_OUT_BTOSC_48M,
CLK_OUT_HSB_CLK,
CLK_OUT_LSB_CLK,
CLK_OUT_PLL_96M,
CLK_OUT_RC_250K,
CLK_OUT_RC_16M,
CLK_OUT_LRC_24M,
CLK_OUT_ALNK0_CLK,
CLK_OUT_RF_CKO_CLK,
CLK_OUT_USB_CLK,
//ch2. div:0~63(div1~div64)
CLK_OUT_NULL_DIV = 0x0400,
CLK_OUT_SYS_PLL_D3P5_DIV = 0x0404,
CLK_OUT_SYS_PLL_D2P5_DIV,
CLK_OUT_SYS_PLL_D2P0_DIV,
CLK_OUT_SYS_PLL_D1P5_DIV,
CLK_OUT_SYS_PLL_D1P0_DIV,
};
#define CLK_OUT_CH_MASK 0b111
#define CLK_OUT_CH0_SEL(clk) SFR(JL_LSBCLK->STD_CON1,0,5,clk)
#define CLK_OUT_CH0_GET_CLK() ((JL_LSBCLK->STD_CON1>>0)&0x01f)
#define CLK_OUT_CH0_DIV(div) //no div
#define CLK_OUT_CH0_EN(en) //no en
#define CLK_OUT0_FIXED_IO_EN(en) //no en
#define IS_CLK_OUT0_FIXED_IO() (0)//no fix
#define CLK_OUT_CH1_SEL(clk) SFR(JL_LSBCLK->STD_CON1,5,5,clk)
#define CLK_OUT_CH1_GET_CLK() ((JL_LSBCLK->STD_CON1>>5)&0x01f)
#define CLK_OUT_CH1_DIV(div) //no div
#define CLK_OUT_CH1_EN(en) //no en
#define CLK_OUT1_FIXED_IO_EN(en) //no en
#define IS_CLK_OUT1_FIXED_IO() (0)//no fix
#define CLK_OUT_CH2_SEL(clk) SFR(JL_LSBCLK->STD_CON1,10,4,clk)
#define CLK_OUT_CH2_GET_CLK() ((JL_LSBCLK->STD_CON1>>10)&0x0f)
#define CLK_OUT_CH2_DIV(div) SFR(JL_LSBCLK->STD_CON1,14,6,div)
#define CLK_OUT_CH2_EN(en) //no en
#define CLK_OUT2_FIXED_IO_EN(en) //no en
#define IS_CLK_OUT2_FIXED_IO() (0)//no fix
#define CLK_OUT_CH3_SEL(clk) //no ch3
#define CLK_OUT_CH3_GET_CLK() (0)//no ch3
#define CLK_OUT_CH3_DIV(div) //no div
#define CLK_OUT_CH3_EN(en) //no en
#define CLK_OUT3_FIXED_IO_EN(en) //no en
#define IS_CLK_OUT3_FIXED_IO() (0)//no fix
#define CLK_OUT_CH4_SEL(clk) //no ch4
#define CLK_OUT_CH4_GET_CLK() (0)//no ch4
#define CLK_OUT_CH4_DIV(div) //no div
#define CLK_OUT_CH4_EN(en) //no en
#define CLK_OUT4_FIXED_IO_EN(en) //no en
#define IS_CLK_OUT4_FIXED_IO() (0)//no fix
u32 clk_out_fixed_io_check(u32 gpio);
//for bt
void clk_set_osc_cap(u8 sel_l, u8 sel_r);
u32 clk_get_osc_cap();
#define BT_CLOCK_IN(x) //SFR(JL_CLOCK->CLK_CON1, 14, 2, x)
//for MACRO - BT_CLOCK_IN
enum {
BT_CLOCK_IN_PLL48M = 0,
BT_CLOCK_IN_HSB,
BT_CLOCK_IN_LSB,
BT_CLOCK_IN_DISABLE,
};
#endif /*CLOCK_HAL_H*/