数据结构设计
25 Nov 2024
Read time: 2 minute(s)
CMU 模块关键结构体定义如下:
CMU 模块关键结构体定义如下:
aic_clk_fixed_parent_cfg
struct aic_clk_fixed_parent_cfg {
struct aic_clk_comm_cfg comm; // 时钟操作的函数集合
u32 offset_reg; // 寄存器偏移地址
s8 bus_gate_bit; // 总线使能位偏移
s8 mod_gate_bit; // 模块使能位偏移
u8 div_bit; // 分频系数位偏移
u8 div_mask; // 分频系数 Mask
u8 id; // 时钟 id
u8 type; // 时钟类型
u8 parent_id; // 父时钟 id
u8 flag;
};
aic_clk_multi_parent_cfg
struct aic_clk_multi_parent_cfg {
struct aic_clk_comm_cfg comm; // 时钟操作的函数集合
u32 offset_reg; // 寄存器偏移地址
s32 gate_bit; // 时钟使能位偏移
u8 mux_bit; // 父时钟源选择位的 bit 偏移
u8 mux_mask; // 父时钟源选择位 Mask
u8 div0_bit; // 分频系数位偏移
u8 div0_mask; // 分频系数 Mask
u8 id; // 时钟 id
u8 num_parents; // 父时钟个数
const u8 *parent_ids; // 父时钟数组
};
aic_clk_pll_cfg
struct aic_clk_pll_cfg {
struct aic_clk_comm_cfg comm; // 时钟操作的函数集合
u32 offset_gen; // 整数分频寄存器的偏移
u32 offset_fra; // 小数分频寄存器的偏移
u32 offset_sdm; // 展频寄存器的偏移
u8 id; // 时钟 id
u8 type; // 时钟类型
u8 parent_id; // 父时钟 id
u8 flag;
};
aic_clk_disp_cfg
struct aic_clk_disp_cfg {
struct aic_clk_comm_cfg comm; // 时钟操作的函数集合
u32 offset_reg; // 寄存器偏移地址
u8 divn_bit; // 分频系数 N 位偏移
u8 divn_mask; // 分频系数 N 位 Mask
u8 divm_bit; // 分频系数 M 位偏移
u8 divm_mask; // 分频系数 M 位 Mask
u8 divl_bit; // 分频系数 L 位偏移
u8 divl_mask; // 分频系数 L 位 Mask
u8 pix_divsel_bit; // pix 分频系数位偏移
u8 pix_divsel_mask; // pix 分频系数位 Mask
u8 id; // 时钟 id
u8 parent_id; // 父时钟 id
};